Что представляет собой действительный тип в Lean?

Я сделал первые 3 главы бережливого урока, и я уже сделал несколько доказательств в логике высказываний.

Сейчас я пытаюсь немного вернуться и задать себе глупые вопросы.

Мое понимание таково:

  1. Термины могут иметь типы: constant A : Type, A это термин, Type это тип A,
  2. Термины могут стать типами: constant a : A,
  3. Тип термина может зависеть от типа другого термина: constant B : A -> Type, который является сахаром для constant B' : Π (a : A), Type

Но это понимание явно неверно, поскольку этот код не проверяет тип:

constant A : Type

constant a : A

constant B : A -> Type

constant B' : Π (a : A), Type

constant C : Π (b : B), Type

constant C' : Π (B : A), (Π (b : B), Type)

constant C'' : B -> Type

Все строки начинаются constant Cто есть строки 9, 11 и 13 выдают ошибку error: type expected at B

Зачем? Я подозреваю, что не все термины могут стать типами. Я подозреваю, что термины, типы которых зависят от других типов, не могут стать типами. Зачем?

1 ответ

Решение

Ошибка первого типа

Проблема с ошибкой первого типа в

constant C : Π (b : B), Type

что ты не можешь сказать b : B, так как B является функцией (без определения) типа A -> Typeт.е. B это значение, а не тип. Не имеет смысла предъявлять претензии как b : 1 или же b : "xyz" или же b : (λ a : A, Type),

Например, следующее будет работать, так как B a : Type:

constant C : Π (b : B a), Type

Ошибка второго типа

Ошибка второго типа в

constant C' : Π (B : A), (Π (b : B), Type)

проистекает из того факта, что неизвестно, что B это тип, все, что мы знаем о B является то, что это какая-то ценность (житель) типа A, Чтобы иметь возможность использовать B Таким образом, вам нужно что-то вроде этого:

constant C' : Π (B : Type), (Π (b : B), Type)

то есть мы прямо говорим B это тип.

Ошибка третьего типа

constant C'' : B -> Type

Причина, по которой это не удается проверить, та же, что и в первом случае. B это значение функции, в то время как нам нужен тип здесь - вот почему constant B : A -> Type работает.

Другие вопросы по тегам