Open Vtec234 opened 2 years ago
Your proposal looks reasonable to me. However, at its current state, the tactic will most likely crash on any reasonable proof context 😅. Properly handling all of those crashes is not a priority for us right now. So, let's keep the current behavior for now and come back to this issue when we have a more robust tactic.
@abdoo8080 and I discussed recently when terms should be encoded with their definition, and when just declared. Here is a proposal for how the tactic could behave. It is almost what it does now, except that I suggest we do encode all assumptions in default mode and move the current behavior to
smt only
.smt
, we encode every assumption anddeclare-fun
/declare-const
every constant appearing in the assumptions and goal.smt [thm1, def1]
, we proceed as above but also encodethm1
, and instead of just declaring occurrences ofdef1
we define them.smt only [h1, thm1, def1]
, we proceed as the tactic currently does by only declaring the minimal set of terms and skipping assumptions other thanh1
.What are your thoughts?