27 lines
651 B
Text
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)
|