simplify_trivial_quantification kills some goals
On the following program, after using split_vc twice (once on the function and once on the assertion), the subgoal not true
is generated by simplify_trivial_quantification. My understanding is that the goal not z = y
is used to replace z
with y
when attempting to eliminate the quantified variable z
, but I hope I am wrong.
let f (l: list int) (y:int)
= assert { match l with Cons z _ -> not z = y | Nil -> false end }
I'm marking this as high priority because split_vc
is intended as a default strategy for most users.