I am just starting with Isabelle / HOL and trying to prove a simple HOL instruction "P (t) ⟶ (∃x. P (x))" with natural deduction rules. I started with a theory file containing only a theorem:
theory simple imports Main begin lemma T: shows "P(t) ⟶ (∃x . P(x))" proof (* x *) qed end
In the position marked x in the comment, the current target is already “P (t) ⟹ (∃x. P (x))”, i.e. logical implication is already simplified to meta-logical implication.
Through a trial version and an error, I came to the following proof:
proof assume "P(t)" then have "∃ x . P(x)" by (rule exI) then have "P(t) ⟶ (∃x . P(x))" by (rule impI) then show "P(t) ⟹ (∃x . P(x))" by (rule impE) qed
which looks kind of weird: I introduced the implication, just to eliminate it in the next step.
Now my questions are:
- Where does the rewriting of my goal come from and where can I find more about it?
- How to simplify the proof (without going around ND with a car)?
source share