作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
之前使用过 Coq,我习惯了它的“聚焦”和“不聚焦”目标系统,因此您可以一次只处理一个目标。
伊莎贝尔是否存在类似的系统?
作为示例,此代码:
theory Scratch
imports Main
begin
theorem add_0: "n+0 = (n::nat)"
apply(induction n)
生成具有 2 个子目标的证明状态:
proof (prove)
goal (2 subgoals):
1. 0 + 0 = 0
2. ⋀n. n + 0 = n ⟹
Suc n + 0 = Suc n
如果我使用apply(auto)
,两个问题都解决了。然而,假设我只想致力于目标 1,是否可以“专注”它?如果不是,我如何才能将 auto
仅应用于一个(或部分)子目标?
最佳答案
如果您不想使用 Isar(这可能更有利于可读性),您可以使用 subgoal
来专注于目标:
theorem add_0: "n+0 = (n::nat)"
apply(induction n)
subgoal by auto
subgoal by auto
或括号:
apply auto[]
仅将auto
聚焦于第一个目标。
主要区别在于subgoal
使得无法实例化原理图变量。
关于isabelle - 专注于子目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66943961/
我是一名优秀的程序员,十分优秀!