A tactic is a step that can be invoked by name during a proof.
There is a default tactic called tactic vcgen that works by generating a verification condition (VC) to be checked by Z3. This is a formula whose validity implies that the property is true in the current context. Ivy checks that this formula is within the logical fragment FAU that Z3 can decide, then passes the formula to Z3. If Z3 finds that the formula is valid, the property is admitted.
If the default tactic generates a VC that is not within FAU, Ivy will describe the problem and user intervention will be required, invoking other tactics to arrive at a goal state that is within FAU.
Possible tactics include:
applyapplies a named compound judgment, followed by an optional alpha renaming and awithclause listing explicit premise instancesinstance, orinstantiateapplies a named primitive judgment, followed by an optional alpha renaming and awithclause listing explicit substitutions for quantified variablesletperforms explicit quantifier instantiation on existing goalsshowgoals: prints the current list of proof goalsdefergoal: defers the current proof goal, moving it to the back of the list of proof goalsassumeadds an assumptionunfoldunfolds a definitionforget: removes a declaration from the set of premisesspoil: undocumentedproperty,axiom, etc. allow declaring (and proving) a local sub-judgmenttacticinvokes extended, non-keyword tactics:
tactic skolemizeperforms Skolemizationtactic vcgenis the default VC-generating tactictactic l2stranslates aneventuallytemporal property about liveness to a safety propertytactic invarianceproves agloballysafety temporal property by conversion to an invariant