28 lines
598 B
Text
28 lines
598 B
Text
class HOp (α β γ) where hOp : α → β → γ
|
||
|
||
class LOp (α β) where lOp : α → β → β
|
||
|
||
class Op (α) where op : α → α → α
|
||
|
||
@[default_instance]
|
||
instance inst1 [LOp α β] : HOp α β β := ⟨LOp.lOp⟩
|
||
|
||
instance inst2 [Op α] : LOp α α := ⟨Op.op⟩
|
||
|
||
infix:75 " ⋆ " => HOp.hOp
|
||
|
||
section Test
|
||
variable (α) [LOp Nat α]
|
||
variable (x y z : α) (m n : Nat)
|
||
|
||
example : n ⋆ x = z := sorry -- TC works
|
||
|
||
example : 1 ⋆ x = z := sorry -- TC works
|
||
|
||
attribute [default_instance] inst2
|
||
|
||
example : n ⋆ x = z := sorry -- TC works
|
||
|
||
example : 1 ⋆ x = z := sorry -- TC fails
|
||
|
||
end Test
|