abella-prover / abella

An interactive theorem prover based on lambda-tree syntax
https://abella-prover.org/
GNU General Public License v3.0
89 stars 18 forks source link

Trivial assertions do not unwind state #113

Closed chaudhuri closed 5 years ago

chaudhuri commented 5 years ago

When search is attempted in assert, on success the assertion is added in the same state as the search success. This was not an issue in the past because search would never instantiate variables. However, since Abella version 2.0.4 we do some left-asynchrony in search (with recursive_metaterm_case), so this invariant no longer holds. This causes the following invalid proof to be accepted.

Kind i type.
Type a i.
Theorem foo : forall A, A = a.
intros.
assert A = a -> true.
search.

This issue was flagged by Jinxu Zhao on the Abella mailing list.