Не могу заставить классы типа работать в Lean

У меня возникли проблемы с пониманием, как вызвать использование классов типов Лин. Вот попытка на небольшом примере:

section the_section
structure toto [class] (A : Type) := (rel : A → A → Prop) (Hall : ∀ a, rel a a)

definition P A := exists (a : A), forall x, x = a
parameter A : Type
variable HA : P A

lemma T [instance] {B : Type} [HPB : P B] : toto B := toto.mk (λ x y, x = y) (λ x, rfl)

include HA
example : toto A := _
-- this gives the error: don't know how to infer placeholder toto A

end the_section

Дело в том, что я хотел бы, чтобы Лин понял, что он может использовать HA для вывода toto A из леммы T. Что я пропускаю?

1 ответ

Еще раз, мне пришлось опубликовать вопрос, чтобы найти ответ. Надеюсь, что это помогает другим людям.

P должен быть классом, поэтому нам нужно изменить

definition P A := exists (a : A), forall x, x = a

в

definition P [class] A := exists (a : A), forall x, x = a
Другие вопросы по тегам