You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Basically, we need to check that inv is not used (directly or not) in the definition of invariant.
Note that, for this reason, Why3 refuses recursive types with invariants:
use option.Option
type t = {
x : option t
}
invariant { not (x = None) }
is refused by Why3.
Also, Why3 rejects the following:
use option.Option
type t 'a = {
x : option 'a
}
invariant { not (x = None) }
type u = { y : t u }
By telling that u is not used in a strictly positive fashion in its definition (i.e., a type with an invariant has no strictly positive type parameters).
Depending on the solution we find for this bug, we may need to take into account those problems in Creusot too.
The text was updated successfully, but these errors were encountered:
This leads to an absurd axiom.
Basically, we need to check that inv is not used (directly or not) in the definition of
invariant
.Note that, for this reason, Why3 refuses recursive types with invariants:
is refused by Why3.
Also, Why3 rejects the following:
By telling that u is not used in a strictly positive fashion in its definition (i.e., a type with an invariant has no strictly positive type parameters).
Depending on the solution we find for this bug, we may need to take into account those problems in Creusot too.
The text was updated successfully, but these errors were encountered: