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

如何在Lean中证明指定上三角矩阵幂的恒等式?

Lean中形式化证明上三角矩阵幂等式的正确路径

你要证明的是:
$$\begin{pmatrix}1 & 1 & 1 \ 0 & 1 & 1\ 0 & 0 & 1\end{pmatrix}^n = \begin{pmatrix}1 & n & \frac{n(n+1)}{2} \ 0 & 1 & n\ 0 & 0 & 1\end{pmatrix}$$

核心问题在于你没必要手动定义矩阵的幺半群结构——Lean的data.matrix库已经为环上的矩阵(包括ℚ上的3阶矩阵)提供了现成的幺半群实例,直接使用即可,无需自己证明one_mul或mul_one。

以下是修正后的完整可运行代码,附带每一步的证明思路:

import tactic
import data.matrix.notation
import data.matrix.basic -- 补充矩阵基础操作库

-- 定义基础矩阵,简化后续引用
def A : matrix (fin 3) (fin 3) ℚ := !![1, 1, 1; 0, 1, 1; 0, 0, 1]

def A_pow (n : ℕ) : matrix (fin 3) (fin 3) ℚ := !![1, n, n*(n+1)/2; 0, 1, n; 0, 0, 1]

example (n : ℕ): A ^ n = A_pow n :=
begin
  induction n with n hn,
  { -- 基础情况:n=0,矩阵0次幂为单位矩阵
    rw pow_zero,
    -- 验证单位矩阵与A_pow 0相等
    ext i j,
    fin_cases i; fin_cases j, -- 枚举3x3矩阵的所有位置
    norm_num, -- 自动计算有理数元素,验证相等
  },
  { -- 归纳步骤:假设n成立,证明n+1成立
    rw pow_succ, -- 展开A^(n+1) = A^n * A
    rw hn, -- 代入归纳假设A^n = A_pow n
    -- 证明A_pow n * A = A_pow (n+1)
    ext i j,
    fin_cases i; fin_cases j, -- 枚举所有矩阵位置
    simp [matrix.mul_apply, A, A_pow], -- 展开矩阵乘法的元素定义
    ring, -- 自动处理有理数与自然数的代数运算,完成化简
  },
end

关键细节说明

  • 无需手动定义幺半群:Lean的matrix类型在环(如ℚ)上默认带有monoid实例,pow_zero、pow_succ等定理可直接调用,无需重复实现基础结构。
  • fin_cases的作用:针对固定维度的fin 3矩阵,枚举所有行/列索引,将矩阵相等问题拆解为9个元素相等的子问题。
  • ring战术:自动处理环上的代数等式,包括有理数运算、自然数展开,无需手动计算每一步推导。
  • matrix.mul_apply:展开矩阵乘法的元素级定义,让Lean能解析(M*N) i j的具体计算逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:33:21