Обращаю ваше внимание, что первое утверждение пытается доказать уникальность ⊥ → A
. Обычно это верно вплоть до изоморфизма.
Полное соответствие было бы между ∀ {A : Set} (f : ⊤ → A) → f ≡ λ _ → f tt
и ∀ {A : Set} (f : ⊥ → A) → f ≡ λ _ → f ()
- выражение для ⊤
создает значение tt
, поэтому вы должны построить значение для ⊥
.
У Agda нет средств для создания значения ⊥
, поэтому ()
не является допустимым конструктором, это только заполнитель для того, что вы хотите.
Хотя на самом деле это не сопоставление с образцом, вероятно, не вредно видеть использование ()
в качестве сопоставления с образцом для пустого типа - оно допускается только в позициях сопоставления с образцом.
Это сделано для того, чтобы показать, что сходство является поверхностным, поэтому следует изменить свою интуицию в отношении выражений.
Разве f ≡ λ ()
не должно быть какой-либо формой закона эта?
Не ясно, что вы получите от этого. Многие вещи могут быть доказаны только с точностью до изоморфизма. Так, например, доказательство уникальности ⊥ → A
может соответствовать доказательству уникальности A → ⊤
(а не эта-равенство f
и λ _ → f tt
). И то и другое выполнимо.