问题标签 [hol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
coq - 证明助手中的认证计算
手动或通过计算机代数系统执行的符号计算可能是错误的,或者仅在某些假设下才成立。一个经典的例子是sqrt(x^2) == x
一般不正确,但如果x
是真实的且非负的,它确实成立。
是否有使用 Coq、Isabelle、HOL、Metamath 或其他证明助手/检查器来证明符号计算正确性的示例?特别是,我对微积分和线性代数示例感兴趣,例如求解定积分或不定积分、微分方程和矩阵方程。
更新: 更具体地说,有兴趣知道是否存在可以正式解决(可能在证明助手的帮助下)的微积分和线性代数本科作业的示例,以便解决方案可以通过自动验证证明检查器。一个非常简单的精益作业示例在这里。
emacs - 为 HOL4 设置 Emacs
我是 HOL4 和 Emacs 的新手。为这个可能很愚蠢的问题道歉。
我希望按照https://hol-theorem-prover.org/HOL-interaction.pdf的说明为 HOL4 设置 Emacs 。我试图在 Emacs 上启动 HOL 进程Alt-h h
并按下Enter
,但 Emacs 返回Symbol’s function definition is void: if-let*
。我.emacs.d/init.el
的定义如下。我应该怎么做才能修复错误?谢谢。
sml - HOL 定理证明器:通过蕴涵证明
我的任务是证明:
如果我们假设 p 并将对 r 的含义串在一起,这很容易证明。
- 假设 p。
- 暗示 p ==> q 为真,因此 q 为真。
- 暗示因为 q 为 True,q ==> r 为 True,因此 r 为 True。
- 完毕。
我试图在 HOL 中这样做:
上面我被第二行难住了,为了在我的单独解释器中进行测试,自从试图将一些东西传递给 MP 和 IMP_TRANS 可以接受的 HOL 以来,我一直被困住。
这是我所知道的:
- MP 需要两个参数,t1 ==> t2 和 t1 来接收 t2。
- IMP_TRANS 需要两个参数,t1 ==> t2 和 t2 ==> t3,我需要 t1 和 t2。
- 输出必须是需要证明的形式,IMP_TRANS 可能不是所需要的。
我在解释器中尝试了以下内容,以查看适用于 MP/IMP_TRANS 的内容:
- IMP_TRANS
p ==> q
q ==> r
; - MP
p ==> q
th1;
我都收到与错误地将参数传递给任一函数的参数的错误类似的错误。任何帮助将不胜感激,因为我正在使用的资源非常缺乏。
我也一直在看 DISCH,书中给出的示例非常缺乏信息,但这似乎提供了一种暗示,并且是我需要的。观察它在解释器中的作用有助于看到我可以写 DISCH p:bool
th1; 输出在哪里p ==> p
;
sml - 用于基于目标的证明的 HOL 中的 PAT_ASSUM 通用量词
我正在尝试将“s”应用于我的通用量词,以将假设列表操作为 P(s) ==> M(s), P(s) 的形式,然后证明 M(s)。
到目前为止,这是我所拥有的:
目标堆栈:
扩展 PAT_ASSUM 时,我收到此错误提示 Alpha 'a.
我知道要解决剩下的问题,另一个 PAT_ASSUM 将用于A ==> B
该模式,我运行 IMP_ELIM,这部分是简单的部分。我只是在努力通过显示 s 是 'a.