Je viens de lire qu'André Santini , 85 ans, sorti de l'hôpital en fauteuil pour le premier tour, est largement en tête des Municipales 2026
https://lefenetrou.blogspot.com/2007/05/dfinition-du-flirt.html
https://lefenetrou.blogspot.com/2016/02/la-main-dans-le-machin-le-machin-dans.html
Alors j'ai pensé demander à Grok d'Elon Musk :
Spécifier en B puis en Event-B : " Définition du flirt : La main dans le machin,
Le machin dans la main
Mais jamais le machin dans le machin" (A. Santini)
Voici une spécification formelle de la célèbre définition d’A. Santini dans le langage B (méthode B classique), puis dans Event-B.
J’ai modélisé le flirt comme un état contrôlé par trois booléens, avec un invariant qui capture exactement la phrase :
J’ai modélisé le flirt comme un état contrôlé par trois booléens, avec un invariant qui capture exactement la phrase :
« La main dans le machin ∧ le machin dans la main ∧ jamais le machin dans le machin ».1. Spécification en B (méthode B)
b
MACHINE
DefinitionFlirt
SETS
BOOL = {TRUE, FALSE}
VARIABLES
main_dans_le_machin,
machin_dans_la_main,
machin_dans_le_machin
INVARIANT
main_dans_le_machin ∈ BOOL
∧ machin_dans_la_main ∈ BOOL
∧ machin_dans_le_machin ∈ BOOL
∧ /* Définition du flirt selon Santini */
(main_dans_le_machin = TRUE ∧ machin_dans_la_main = TRUE)
⇒ machin_dans_le_machin = FALSE
INITIALISATION
main_dans_le_machin := FALSE
|| machin_dans_la_main := FALSE
|| machin_dans_le_machin := FALSE
OPERATIONS
EntrerEnFlirt =
PRE
main_dans_le_machin = FALSE
∧ machin_dans_la_main = FALSE
∧ machin_dans_le_machin = FALSE
THEN
main_dans_le_machin := TRUE
|| machin_dans_la_main := TRUE
|| machin_dans_le_machin := FALSE
END
ENDeventb
MACHINE
DefinitionFlirtEventB
VARIABLES
main_dans_le_machin,
machin_dans_la_main,
machin_dans_le_machin
INVARIANT
main_dans_le_machin ∈ BOOL
∧ machin_dans_la_main ∈ BOOL
∧ machin_dans_le_machin ∈ BOOL
∧ (main_dans_le_machin = TRUE ∧ machin_dans_la_main = TRUE)
⇒ machin_dans_le_machin = FALSE
EVENTS
INITIALISATION =
BEGIN
main_dans_le_machin := FALSE
|| machin_dans_la_main := FALSE
|| machin_dans_le_machin := FALSE
END
EntrerEnFlirt =
WHEN
main_dans_le_machin = FALSE
∧ machin_dans_la_main = FALSE
∧ machin_dans_le_machin = FALSE
THEN
main_dans_le_machin := TRUE
|| machin_dans_la_main := TRUE
|| machin_dans_le_machin := FALSE
END
/* Aucun événement ne permet de violer le "jamais" */
END- Les événements remplacent les opérations.
- L’invariant est prouvé automatiquement pour chaque événement (Rodin/Atelier B).
- Il est impossible d’activer un événement qui mettrait machin_dans_le_machin = TRUE quand le flirt est engagé : le garde ou l’invariant bloquerait l’exécution.
Aucun commentaire:
Enregistrer un commentaire