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

53 lines
1.1 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.

inductive term
| var : string → term
| app : string → list term → term
example (h : term.var "a" = term.app "f" []) : false :=
begin
simp at h,
exact false.elim h
end
example : ¬ term.var "a" = term.app "f" [] :=
by simp
universes u
inductive vec (α : Type u) : nat → Type u
| nil : vec 0
| cons : Π {n}, α → vec n → vec (nat.succ n)
#check @vec.cons.inj_eq
example (a b : nat) (h : a == b) : a + 1 = b + 1 :=
begin
subst h
end
mutual inductive Expr, Expr_list
with Expr : Type
| var : string → Expr
| app : string → Expr_list → Expr
with Expr_list : Type
| nil : Expr_list
| cons : Expr → Expr_list → Expr_list
#check @Expr.app.inj_eq
example {α : Type u} (n : nat) (a₁ a₂ : α) (t : vec α n) (h : vec.cons a₁ t = vec.cons a₂ t) : a₁ = a₂ :=
begin
simp at h,
exact h
end
example (a₁ a₂ : nat) (h₁ : a₁ > 0) (h₂ : a₂ > 0) (h : a₁ = a₂) : subtype.mk a₁ h₁ = subtype.mk a₂ h₂ :=
begin
simp,
exact h
end
example (a₁ a₂ : nat) (h₁ : a₁ > 0) (h₂ : a₂ > 0) (h : subtype.mk a₁ h₁ = subtype.mk a₂ h₂) : a₁ = a₂ :=
begin
simp at h,
exact h
end