open smt_tactic tactic lemma ex1 (a b c : nat) : a = c → a = b → b = c := by using_smt intros set_option pp.all true lemma ex2 (a b c : nat) : a > nat.zero → a = c → a = b → b = c := by using_smt intros lemma ex3 (p q r : Prop) : p → q → ¬p → r := by using_smt intros lemma ex4 (a b c : nat) : a > nat.zero → 0 < a := by using_smt intros lemma ex5 (a b c d : nat) : a ≠ d → a = b ∧ b = c → a = c := by using_smt intros set_option pp.all false lemma ex6 (f : nat → nat) (a b c : nat) : f a = 0 → f b = 1 → f a = f b ∨ f a = c → c = 0 := by using_smt intros lemma ex7 (f : nat → nat) (a b c d e: nat) : f a = 0 → f a = d → f b = e → f b = 1 → d = e ∨ f a = c → c = 0 := by using_smt intros lemma ex8 (f : bool → bool) (a b c : bool) : f a = ff → f b = tt → f a = f b ∨ f a = c → c = ff := by using_smt intros lemma ex9 (f : list nat → list nat) (a b c : list nat) : f a = [] → f b = [0, 1] → f a = f b ∨ f a = c → c = [] := by using_smt intros lemma ex10 (a b c d e : int) : a = b → b ≠ c → (a = c ∨ d = e) → d = e := by using_smt intros