lean4-htt/old_tests/tests/lean/unification_hints2.lean
2018-04-10 12:56:55 -07:00

28 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.

open nat
constant F : nat → Type
constant F.suc (n : nat) (f : F n) : F (succ n)
constant F.raise (n m : nat) (f : F m) : F (m + n)
example (m n : nat) (i : F m) : F.raise (succ n) m i = F.suc _ (F.raise n _ i) :=
begin
trace_state, -- the result should not contain recursor applications because the stdlib contains the unification hint add_succ_defeq_succ_add_hint
admit
end
@[unify] def {u} cons_append_hint (α : Type u) (a b : α) (l₁ l₂ l₃: list α) : unification_hint :=
{ pattern := (a :: l₁) ++ l₂ =?= b :: l₃,
constraints := [l₃ =?= l₁ ++ l₂, a =?= b] }
constant {u} G (α : Type u) : list α → Type
constant {u} G.cons (α : Type u) (a : α) (l : list α) (g : G α l) : G α (a :: l)
constant {u} G.raise (α : Type u) (l₁ l₂ : list α) (g : G α l₂) : G α (l₁ ++ l₂)
universe u
example (α : Type u) (a b : α) (l₁ l₂ : list α) (i : G α l₂) : G.raise α (a::l₁) l₂ i = G.cons α a _ (G.raise α _ _ i) :=
begin
trace_state, -- the result should not contain recursor applications because we declared cons_append_hint above
admit
end