lean4-htt/tests/lean/unify2.lean
2016-04-05 16:03:10 -07:00

27 lines
651 B
Text

structure S1 [class] (A : Type) :=
(a : A)
structure S2 [class] (A : Type) extends S1 A :=
(b : A)
structure S3 [class] (A : Type) extends S1 A :=
(c : A)
structure S4 [class] (A : Type) extends S2 A, S3 A :=
(d : A)
constant s : S4 nat
attribute s [instance]
set_option pp.all true
-- set_option pp.purify_metavars false
-- set_option trace.type_context.is_def_eq true
-- set_option trace.type_context.is_def_eq_detail true
-- set_option trace.class_instances true
definition f (A : Type) (s : S2 A) : S1 A :=
@S2.to_S1 A s
#unify @S3.to_S1 _ (@S4.to_S3 _ s), (f nat _ : S1 nat)
#unify @S3.to_S1 _ (@S4.to_S3 _ s), (@S2.to_S1 nat _ : S1 nat)