gpt4 book ai didi

Agda 的类型检查器爆炸了

转载 作者:行者123 更新时间:2023-12-04 17:40:38 24 4
gpt4 key购买 nike

以下代码旨在描述类似 C/C++ 的枚举,它可以占用 4 个字节,尽管它们应该包含的只是几个不同的替代方案。

open import Prelude.Bool
open import Prelude.Nat
open import Agda.Builtin.Nat
open import Agda.Builtin.Equality
open import Numeric.Nat.Pow renaming (_^′_ to _^_)

data Enum : Set where
makeEnum : (size : Nat) → (variants : Nat) →
.{{ _ : (variants < size) ≡ true }} → Enum

five : Enum
five = makeEnum (2 ^ 32) 5

data Expr : (t : Enum) → Set where
constant : (x : Nat) → Expr five

到目前为止一切顺利。一切类型检查都很好。但是添加以下行

func : ∀ {t} → Expr t → Bool
func (constant x) = false

这似乎没有做任何事情,导致类型检查器未终止并耗尽所有系统资源。

除了实例参数之外,我没有看到任何可能导致这种情况的东西,但这似乎与 Agda 能够解决和类型检查以下内容的事实不符

5<2³² : (5 < 2 ^ 32) ≡ true
5<2³² = refl

很快。那么这是怎么回事?

最佳答案

问题是 answered杰斯珀·考克斯 (Jesper Cockx) 着。事实证明这是一个编译器错误,将在下一版本的 Agda 中修复。

更新:该bug已经在master分支修复。

关于Agda 的类型检查器爆炸了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54624650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com