Pour le prototype :
- dune >= 2.7
- menhir >= 2.1
Pour le rapport :
- LaTeX
makecompile le prototype et le rapport.make buildcompile uniquement le prototypemake rapportcompile uniquement le rapport.make cleanpour effacer les fichiers de compilation.
Il faut ensuite lancer prototype/main.exe et passer via l'entrée standard son programme.
Par exemple : ./prototype/main.exe < test/until
On obtient ensuite un fichier buchi.dot qu'on peut convertir en pdf avec make topdf.
Plusieurs opérateurs sont disponibles, avec ( et ).
De plus, on peut introduire des variables propositionelles dans les formules.
!pour la négationXpour nextFpour futureGpour globally
=>pour l'implication<=>pour l'équivalenceUpour untilWpour weak untilRpour release&&pour le et||pour le ou
Il y a deux constantes possibles :
1pour true0pour false
Les variables doivent avoir un nom composé uniquement de caractères minuscules.
Plus précisément, les noms vérifient [ 'a'-'z' ]+
Les opérateur unaires ont la priorité sur les opérateurs binaires.
C'est à dire que X!a || b s'interprète comme X(!(a)) || b.
Les opérateurs binaires sont donnés par ordre de priorité dans la liste précédente. Par exemple :
a => b <=> cest interprété comme(a => b) <=> ca => b U ccomme(a => b) U ca U b && a => b || Xb && a R bcomme((a U b) && (a => b)) || (Xb && (a R b))
Voici des exemples de formule :
a || b(a U b) && (F (a => b))- ...
D'autres exemples sont aussi présents dans le dossier
test/.
Seuls les opérateurs et constantes 1, 0, &&, ||, U, X, ! sont bien définis sémantiquement.
Les autres opérateurs sont définis en tant que macro (du sucre syntaxique) :
a => b(implication) est un raccourci pour!a || ba <=> b(équivalence) pour(a => b) && (b => a)Fa(future) pour1 U aGa(globally) pour!(F!a)a W b(weak until) pour(a U b) || Gaa R b(release) pour!(!a U !b)