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

Lean 4.12中《Lean函数式编程》非空列表示例报错:未解决目标

Lean 4.12中数组非空证明simp失败的解决办法

你遇到的问题是Lean 4版本迭代中simp策略默认规则的调整导致的:在Lean 4.1中,simp会自动展开数组(Array)的length定义并计算具体值,但到了4.12版本,默认的简化规则不再包含这一步,所以无法自动完成证明。

以下是几种可行的解决方式:

1. 使用rfl策略

rfl可以直接证明由计算得出的等式或不等式,因为xs.length是可计算的具体值,rfl能直接确认[1].length = 1,进而证明1 > 0:

def xs := [1]
theorem xs_not_empty : xs.length > 0 := by rfl

2. 使用decide策略

decide会自动判定可计算命题的真假,适合这类简单的数值不等式证明:

def xs := [1]
theorem xs_not_empty : xs.length > 0 := by decide

3. 显式指定simp展开Array.length

如果坚持想用simp,可以显式把Array.length加入简化规则,让simp展开长度定义并计算:

def xs := [1]
theorem xs_not_empty : xs.length > 0 := by simp [Array.length]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:35:53