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

Lean4中数组初始化表达式化简问题及相关报错咨询

Lean4数组下标访问的证明问题

我尝试证明如下命题:

example (n:Nat): #[n][0] = n := 
by
  sorry

虽然列表的等价命题很容易证明,但我了解到Lean4中数组化简存在难点。不过我仍希望完成该证明,因此尝试了多种方法,例如:

example (n:Nat)(arr: Array Nat)(p:arr=#[n]): #[n][0] = n := 
by
  rw [<-p]

从逻辑上看这是可行的,但却出现报错:

tactic 'rewrite' failed, motive is not type correct

这是我从未见过的错误!于是我尝试了更繁琐的写法:

example (n:Nat)(arr: Array Nat)(p:arr.data = [n])(i:Fin arr.size): arr[i] = n := 
by
  have p: arr.data.length = 1 := by simp [*];
  have q: i.val = 0 := (by linarith [i.isLt]);
  unfold Array.get

现在又出现报错:failed to unfold 'Array.get',我无法理解为何展开操作会失败?

综上,我得出应避免使用数组的结论,想请教各位的看法?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:09:53