We had to change subtype to use Sort since the axiom strong_indefinite_description uses it. see #1341
20 lines
712 B
Text
20 lines
712 B
Text
import tools.super.cdcl
|
||
|
||
example {a} : a → ¬a → false := by cdcl
|
||
example {a} : a ∨ ¬a := by cdcl
|
||
example {a b} : a → (a → b) → b := by cdcl
|
||
example {a b c} : (a → b) → (¬a → b) → (b → c) → b ∧ c := by cdcl
|
||
|
||
open tactic monad
|
||
|
||
private meta def lit_unification : tactic unit :=
|
||
do ls ← local_context, first $ do l ← ls, [do apply l, assumption]
|
||
|
||
example {p : ℕ → Prop} : p 2 ∨ p 4 → (p (2*2) → p (2+0)) → p (1+1) :=
|
||
by cdcl_t lit_unification
|
||
|
||
example {p : ℕ → Prop} :
|
||
list.foldl (λf v, f ∧ (v ∨ ¬v)) true (map p (list.range 5)) :=
|
||
begin (target >>= whnf >>= change), cdcl end
|
||
|
||
example {a b c : Prop} : (a → b) → (b → c) → (a → c) := by cdcl
|