Avec le fichier joint en attachement, Coq raconte:
Error while reading ./automata_3_bug.v :
File "./automata_3_bug.v", line 485, characters 37-49
Error:
In environment
A_T : Set
...
...
The term "rf_verify_e1" has type
"forall a a1 : A_T,
Is_true (rf_is_e1 a a1) ->
Is_true (_p_P_is_in_trace (_p_P_trace _p_P_origin _p_P_present_state) a1)"
while it is expected to have type "Prop"
Comment by François Pessaux - Thursday, 28 May 2009, 12:42pm
Ceci n'est pas à proprement parler un bug. En fait, le compilo devrait râler plutôt que de laisser passer ça et que ce soit Coq qui râle. Donc il va falloir trouver un moyen de faire lever une erreur.
L'histoire est la suivante:
property verify_e1 : all a a1 in A,
is_e1(a, a1) ->
P!is_in_trace(P!trace(P!origin, P!present_state), a1) ;
property verify_e2 : all a a2 in A,
is_e2(a, a2) ->
~(P!is_in_trace(P!trace(P!origin, P!present_state), a2)) ;
property verify_nlim : all a a1 a2 a3 in A,
(~(!verify_e1) \/ ~(!verify_e2)) ;
Bon, maintenant, le compilo doit râler sur ce truc qui passe car le type ML d'une property est bool, donc ça passe à la trappe sans faire d'erreur d'unification.