sneeuwballen/zipperposition

Assert error in Literals.ml when calling E with trivial goal

Closed this issue · 3 comments

When calling zipperposition (main branch) with the following options:
./zipperposition.exe --try-e [e-prover binary] --e-call-point 0.0 -t 30
on the following tptp file:
tff(goal, conjecture, ($true)).
It returns an assert error line 283 in Literals.ml

It seems that this is due to the Literals.Conv.to_tst function being called on an empty clause in eprover_interface.ml (line 136).

To the best of my understanding, since we have an empty clause, the assert false could be replaced by a false TypedSTerm:
| [] -> TypedSTerm.app_builtin ~ty Builtin.false_ []
this has fixed the problem for me, but I'm wary of the assert false being there in order to signal a soundness issue.

Sorry for the late reaction. Could you create a pull request? I'd be happy to merge it.

I assume the assert false is there because an empty clause would usually terminate the prover immediately. With --e-call-point 0.0 that does not happen, which is not ideal but acceptable, I think. I don't think you can get this issue with values larger than 0.0, can you?

Yes, I can make a pull request.

That's exactly what happens, if the prover is allowed to run any amount of time, it terminates instantly.

fixed in #100