【发布时间】:2023-04-09 00:35:01
【问题描述】:
考虑以下提取的代码片段,用于证明 Agda 中变量的“键入唯一性”:
unicity : ∀ {Γ₁ Γ₂ e τ₁ τ₂} → (Γ₁ ⊢ e ∷ τ₁) → (Γ₂ ⊢ e ∷ τ₂) → (Γ₁ ≈ Γ₂) → (τ₁ ∼ τ₂)
unicity (VarT here) (VarT here) (_ , ( τ∼ , _ )) = τ∼
unicity (VarT here) (VarT (ski`p {α = α} lk2)) (s≡s' , ( _ , _ )) = ⊥-elim (toWitnessFalse α (toWitness` s≡s'))
unicity (VarT (skip {α = α} lk1)) (VarT here) (s'≡s , ( _ , _ )) = ⊥-elim (toWitnessFalse α (toWitness s'≡s))
unicity (VarT (skip lk1)) (VarT (skip lk2)) (_ ,( _ , Γ≈ )) = unicity (VarT lk1) (VarT lk2) Γ≈
我需要解释⊥-elim、toWitnessFalse 和toWitness 的工作原理。另外,⊤ 和 ⊥ 的表达是什么意思/代表什么?
【问题讨论】:
-
你能提供一个独立的文件吗?至于⊥ and ⊥-elim、⊤和toWitness and toWitnessFalse可以看一下标准库的文档。
-
@gallais 你能详细说明这些吗?比如它们是如何工作的?
标签: functional-programming agda bottom-type