Split conjunction goal into subgoals
Consider the following toy exercise: Theorem swap_id: forall (m n : nat), m = n -> (m, n) = (n, m). Proof. intros m n H. At this point I have the following: 1 subgoal m, n : nat H : m = n ______________________________________(1/1) (m, n) = (n, m) I would like to split the goal into two subgoals, m = n and n = m. Is there a tactic which does that?
Solve using the f_equal tactic: Theorem test: forall (m n : nat), m = n -> (m, n) = (n, m). Proof. intros m n H. f_equal. With state: 2 subgoals m, n : nat H : m = n ______________________________________(1/2) m = n ______________________________________(2/2) n = m
Coq eapply generates a goal with a question mark while proving existence of a function
Universe inconsistency (because of strict positivity restriction?)
How do you selectively simplify arguments to each time a function is called, without evaluting the function itself?
Why is it impossible to perform induction on a term that is used in conclusion?
How to destruct a exist in goal for coq
Why do Coq recursion principles pass along both the substructure and the result of the recursive call?
Stronger completeness axiom for real numbers in Coq
Subtyping in Coq
When is the first input to `list_rec` not a constant function?
what does the colon greater than sign mean in coq
Prove that a sequence of steps terminates
How to leverage auto's searching and hint databases in custom tactics?
How to use auto with repeat in custom tactics?
How to use Coq GenericMinMax to prove facts about the reals
Coq modular arithmetic
Break “forall” hypothesis with conjunctions up into components?