done
solves trivial goals (adapted from SSReflect).edone
solves trivial goals witheassumption
ordone
.by tac
is a shorthand fortac; done
.eby tac
is a shorthand fortac; edone
.vauto
tries to solve the goal by up to two nested econstructor calls.basic_solver
solves simple goals containing relational operators.
simpls
is shorthand forsimpl in *; try done
.ins
is shorthand forintros; simpls
.clarify
simplifies the goal by simple injections/rewrites.clarsimp
is similar, but also does a few further rewrites.clarassoc
does further rewrites with associativity lemmas.desc
destructs conjunctions and existentials in hypotheses.des
also destructs disjunctions.desf
also performs case splits on conditionals/matches.des_eqrefl
simplifies weird-looking dependent matches generated byProgram
.
clarify_not
simplifies negated hypotheses.in_simp
simplifiesIn x list
assumptions.rels
simplifies goals with relational operators.relsf
also does case splits.
tertium_non_datur X [as Pattern]
does a case split onX \/ ~X
.forward eapply H [with ...] as Name
generates subgoals for all the premises ofH
; the final subgoal names the conclusion ofH
asName
.exploit H
is similar toforward eapply H
(adapted from CompCert, deprecated).
splits
repeatedly appliessplit
to conjunctions.hahn_frame
/hahn_frame_l
/hahn_frame_r
try to apply the frame rule on goals with relational operators.
hahn_rewrite H
rewrites with a relational inclusion/equivalence lemmaseq_rewrite H
rewrites with an equivalence lemma up to associativity ofseq
sin_rewrite H
rewrites with an inclusion lemma up to associativity ofseq
arewrite EQ
generates a subgoal to proveEQ
and seq/sin-rewrites withEQ
arewrite_false term
is shorthand forarewrite (term ≡ ∅₂)
arewrite_id term
is shorthand forarewrite (term ⊆ ⦗fun _ => True⦘)
case_union x y
case splits on relations of the form_ ⨾ (x ∪ y) ⨾ _