-- -- 5. Tactics -- -- Entering Tactic Mode theorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by apply And.intro exact hp exact { left := hq, right := hp } #print test example (hp : p) (hq : q) : p ∧ q ∧ p := by apply And.intro hp exact And.intro hq hp example (hp : p) (hq : q) : p ∧ q ∧ p := by apply And.intro case left => exact hp case right => apply And.intro case left => exact hq case right => exact hp example (hp : p) (hq : q) : p ∧ q ∧ p := by apply And.intro . exact hp . apply And.intro . exact hq . exact hp -- Basic Tactics example (p q r : Prop) : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) := by apply Iff.intro . intro h apply Or.elim (And.right h) . intro hq apply Or.inl apply And.intro . exact And.left h . exact hq . intro hr apply Or.inr apply And.intro . exact And.left h . exact hr . intro h apply Or.elim h . intro hpq apply And.intro . exact And.left hpq . apply Or.inl exact And.right hpq . intro hpr apply And.intro . exact And.left hpr . apply Or.inr exact And.right hpr example (α : Type) (p q : α → Prop) : (∃ x, p x ∧ q x) → ∃ x, q x ∧ p x := by intro ⟨w, hpq⟩ exact ⟨w, hpq.symm⟩ example (α : Type) (p q : α → Prop) : (∃ x, p x ∧ q x) → ∃ x, q x ∧ p x := by intro ⟨w, hp, hq⟩ exact ⟨w, hq, hp⟩ example (α : Type) (p q : α → Prop) : (∃ x, p x ∧ q x) → ∃ x, q x ∧ p x := by intro ⟨w, hp, hq⟩ apply Exists.intro case w => exact w case h => exact ⟨hq, hp⟩