Closed pglvdm closed 10 years ago
We,ll coming to think about this I guess that it really should be:
(forall a, n:nat @ (pre_Op(a) => post_Op(a,n)))
And if the frame would have been "wr" instead it should be
(forall a, n:nat @ (pre_Op(a) => post_Op(a,n,n~)))
with the state component argument in a standardised order (same as in the translation of the definition. Thus, maybe one should use the latter in all cases?
I think it's actually more complicated than that. I was under the impression that quoting of pre and post conditions of operations is not allowed in CML. Am I incorrect?
No you are right that quoting of pre and post conditions are only properly defined for functions as far as I am aware.
So instead of post_Op(...) we would print out the entire body of the pre/post yes?
Yes
Fixed. The reported spec now produces: (forall a:nat, n:nat & ((a > 42) => (exists n1:nat & (n1 = a))))
For an example such as:
one gets a PO:
which should be: