-- TODO(Leo): use better strategy set_option blast.strategy "constructor" example (a b c : Prop) : b → c → b ∧ c := by blast example (a b c : Prop) : b → c → c ∧ b := by blast example (a b : Prop) : a → a ∨ b := by blast example (a b : Prop) : b → a ∨ b := by blast example (a b : Prop) : b → a ∨ a ∨ b := by blast example (a b c : Prop) : b → c → a ∨ a ∨ (b ∧ c) := by blast example (p q : nat → Prop) (a b : nat) : p a → q b → ∃ x, p x := by blast example {A : Type} (p q : A → Prop) (a b : A) : q a → p b → ∃ x, p x := by blast lemma foo₁ {A : Type} (p q : A → Prop) (a b : A) : q a → p b → ∃ x, (p x ∧ x = b) ∨ q x := by blast lemma foo₂ {A : Type} (p q : A → Prop) (a b : A) : p b → ∃ x, q x ∨ (p x ∧ x = b) := by blast reveal foo₁ foo₂ print foo₁ print foo₂