lean4-htt/tests/lean/run/smt_destruct.lean

56 lines
1.6 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

open smt_tactic
lemma ex1 (p q : Prop) : p q → p ¬q → ¬p q → ¬p ¬q → false :=
by using_smt $ do
intros,
trace_state,
a_1 ← tactic.get_local `a_1,
destruct a_1,
repeat close
lemma ex2 (p q : Prop) : p q → p ¬q → ¬p q → ¬p ¬q → false :=
begin [smt]
intros,
assert h : p q,
destruct h
end
lemma ex3 (p q : Prop) : p q → p ¬q → ¬p q → ¬p ¬q → false :=
begin [smt]
intros,
destruct a_1 -- bad style, it relies on automatically generated names
end
lemma ex4 (p q : Prop) : p q → p ¬q → ¬p q → ¬p ¬q → false :=
begin [smt] -- the default configuration is classical
intros,
by_cases p
end
lemma ex5 (p q : Prop) [decidable p] : p q → p ¬q → ¬p q → ¬p ¬q → false :=
begin [smt] with {smt_config .}^.set_classical ff,
intros,
by_cases p -- will fail if p is not decidable
end
lemma ex6 (p q : Prop) : p q → p ¬q → ¬p q → p ∧ q :=
begin [smt] -- the default configuration is classical
intros,
by_contradiction,
trace_state,
by_cases p,
end
lemma ex7 (p q : Prop) [decidable p] : p q → p ¬q → ¬p q → p ∧ q :=
begin [smt] with {smt_config .}^.set_classical ff,
intros,
by_cases p -- will fail if p is not decidable
end
lemma ex8 (p q : Prop) [decidable p] [decidable q] : p q → p ¬q → ¬p q → p ∧ q :=
begin [smt] with {smt_config .}^.set_classical ff,
intros,
by_contradiction, -- will fail if p or q is not decidable
trace_state,
by_cases p -- will fail if p is not decidable
end