isabelle - 在伊莎贝尔中用缩写缩短命题
问题描述
想象以下定理:
assumes d: "distinct (map fst zs_ws)"
assumes e: "(p :: complex poly) = lagrange_interpolation_poly zs_ws"
shows "degree p ≤ (length zs_ws)-1 ∧
(∀ x y. (x,y) ∈ set zs_ws ⟶ poly p x = y)"
我想消除第二个假设,而不必在每次出现时都替换 p 的值。我使用 let 命令在校样中做到了这一点:
let ?p = lagrange_interpolation_poly zs_ws
但它在定理陈述中不起作用。想法?
解决方案
您可以像这样在引理语句中进行局部定义:
lemma l:
fixes zs_ws
defines "p == lagrange_interpolation_poly zs_ws"
assumes d: "distinct (map fst zs_ws)"
shows "degree p ≤ (length zs_ws)-1 ∧ (∀(x,y) ∈ set zs_ws. poly p x = y)"
证明完成后,定义就会展开。因此,当您稍后查看时thm l
,所有出现的p
都已被右侧替换。在证明中,p_def
指的是p
(你所说的e
)的定义方程。defines
当您想控制 Isabelle 的证明工具何时看到p
以及何时看到扩展的右侧时,该子句最有用。
推荐阅读
- c++ - 构造函数不分配
- spring - Spring Boot 应用程序容器化连接到两个 mysql 容器
- jquery-ui - 动态添加 jquery 可排序元素后,拖动并调整元素大小并获取 jquery 中的位置
- signalr - JQuery 信号器正在工作,但轮询每 2 秒循环一次
- java - 运行带有或不带有 .java 文件扩展名的 java 文件有什么区别
- tsql - T-SQL - 将多个值解析为多行
- r - R中两个变量相关的计算
- asp.net-core - 切换到开发环境会显示更详细的信息
- excel - 使用 openpyxl 从多个工作表中创建一个主重复的名称列表
- c# - 如何在 C# 中读取多个 zip 文件