【发布时间】:2021-12-25 16:23:22
【问题描述】:
我已经开始玩 Cubical Agda。我尝试做的最后一件事是以类似于经典数学中的方式(参见the construction of integers on wikipedia)的方式构建整数类型(假设已经定义了自然数的类型)。这是
data dInt : Set where
_⊝_ : ℕ → ℕ → dInt
canc : ∀ a b c d → a + d ≡ b + c → a ⊝ b ≡ c ⊝ d
trunc : isSet (dInt)
做完之后,我想定义加法
_++_ : dInt → dInt → dInt
(x ⊝ z) ++ (u ⊝ v) = (x + u) ⊝ (z + v)
(x ⊝ z) ++ canc a b c d u i = canc (x + a) (z + b) (x + c) (z + d) {! !} i
...
我现在卡在两个牙套之间的部分。询问类型为x + a + (z + d) ≡ z + b + (x + c) 的术语。不想手动证明这一点,我想使用ring solver made in Cubical Agda。但我永远无法让它工作,甚至尝试将其设置为简单的环等式,例如x + x + x ≡ 3 * x。
我怎样才能让它工作?有没有一个最小的例子使它适用于自然?库中有一个文件 NatExamples.agda,但它使您必须以复杂的方式重写您的等式。
【问题讨论】:
-
对于那些对 Proof Assistants 感兴趣的人,有一个新的提议 SE 站点 ProofAssistants
标签: solver agda homotopy-type-theory cubical-type-theory