类型声明中的 Agda 模式匹配
Agda pattern matching inside type declarations
我正在学习以 Agda 形式开始的 HoTT。
我遵循了 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
我的 agda 说代码有错误 → ((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 不支持类型声明中的模式匹配。
p.s。我正在使用 Agda 2.6.0.1
pattern-match 在望远镜中记录的能力将在(即将)即将推出的 Agda 2.6.1 版本中提供。
我正在学习以 Agda 形式开始的 HoTT。 我遵循了 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
我的 agda 说代码有错误 → ((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 不支持类型声明中的模式匹配。
p.s。我正在使用 Agda 2.6.0.1
pattern-match 在望远镜中记录的能力将在(即将)即将推出的 Agda 2.6.1 版本中提供。