Я изучаю HoTT с начала формы Agda. Я следовал инструкциям в https://www.cs.bham.ac.uk/~mhe/HoTT-UF-in-Agda-Lecture-Notes/
Когда я начал вводить декларацию индукции типа зависимой суммы, точно так же, как в инструкциях,
record Σ {? ?} {X : ? ̇ } (Y : X → ? ̇ ) : ? ⊔ ? ̇ where
constructor _,_
field
x : X
y : Y x
pr₁ : {X : ? ̇ } {Y : X → ? ̇ } → Σ Y → X
pr₁ (x , y) = x
pr₂ : {X : ? ̇ } {Y : X → ? ̇ } → (z : Σ Y) → Y (pr₁ z)
pr₂ (x , y) = y
Σ-induction : {X : ? ̇ } {Y : X → ? ̇ } {A : Σ Y → ? ̇ }
→ ((x : X) (y : Y x) → A (x , y))
→ ((x , y) : Σ Y) → A (x , y)
Σ-induction g (x , y) = g x y
Моя агда сказала, что есть ошибка с кодом → ((x , y) : Σ Y)
:
expected sequence of possibly hidden bound identifiers
И когда я меняю объявление типа, например:
Σ-induction : {X : ? ̇ } {Y : X → ? ̇ } {A : Σ Y → ? ̇ }
→ ((x : X) (y : Y x) → A (x , y))
→ (z : Σ Y) → A (pr₁ z , pr₂ z)
Σ-induction g (x , y) = g x y
Эта версия в порядке.
Так что я интересно, если проблема в том, что agda не поддерживает сопоставление с образцом внутри объявлений типов.
ps Я использую Agda 2.6.0.1