You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Agda中自定义数据类型可判定相等性(Decidable equality)证明求助

可行性判断

该需求可以实现,你的代码整体思路已经正确,只差最后一步矛盾推导。

解决思路

你的Test类型只有一个单参数构造子test,包装的String类型本身已实现可判定相等,你已经调用了String._≟_做了分支判断,只需要在否定分支完成反证即可:

  • 我们要证明的目标是¬ test x ≡ test x₁,即假设存在test x ≡ test x₁的等式时能推出矛盾
  • 单构造子的等式可以直接推出参数相等:通过命题相等的同余性cong,对test x ≡ test x₁做构造子消除就能得到x ≡ x₁
  • 这一结论和当前分支的前提¬a : ¬ x ≡ x₁直接矛盾,即可完成证明。

孔洞填充代码

你可以直接在孔洞位置填入下面的代码:

λ eq → ¬a (cong (λ (test s) → s) eq)

如果你开启了--pattern-lambda扩展,也可以用更简洁的模式匹配lambda写法:

λ where refl → ¬a refl

注:你贴出的孔洞上下文里将x、x₁标注为ℕ类型属于上下文显示误差,实际代码中两者是String类型,上述证明逻辑对两种场景都通用。

内容的提问来源于stack exchange,提问作者Qurben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:45:02