标签: isabelle

伊莎贝尔为什么不简化我的"if _ then _ else"结构的主体?

我有以下Isabelle目标:

lemma "? if foo then a ? a else b ? b ? ? False"
Run Code Online (Sandbox Code Playgroud)

没有战术simp,fast,clarsimp,blast,fastforce,等作出目标任何进展,尽管它是非常简单的.

为什么伊莎贝尔只是简化了if构造的主体,以便"a≠a"和"b≠b"成为False,从而解决了目标?

isabelle

8
推荐指数
2
解决办法
1597
查看次数

什么是Isabelle/HOL亚型?Isar命令产生什么子类型?

我想知道Isabelle/HOL亚型.我解释一下为什么在我对上一个SO问题的部分回答中对我来说很重要:

试图像处理集和子集一样处理类型类和子类型

基本上,我只有一种类型,所以如果我可以通过子类型利用HOL类型的力量,它可能对我有用.

我已经在Isabelle文档,Web和Isabelle邮件列表中进行了搜索.使用"子类型"这个词虽然不多,但它似乎并不是伊莎贝尔词汇中非常重要的一部分.

部分地,我只想知道如何正确使用"子类型"这个词.我不想在Isabelle中调用一个不属于子类型的子类型.

根据Wiki,子类型是特定于语言的:

https://en.wikipedia.org/wiki/Subtyping

重要的最后部分; 命令请

有人能给我一个创建Isar子类型的Isar命令列表吗?我正在调查typedef,正如上面提到的问题所解释的那样.我倾向于称之为子类型,但isar-ref.pdf在解释命令时不使用"子类型".

如果有其他方法可以创建Isabelle/HOL亚型,我想知道.

types type-theory subtype isabelle isar

8
推荐指数
1
解决办法
699
查看次数

Isabelle/HOL序列:类型o,seq'的含义,非终结符seq,seqobj,seqcont的含义

我想了解https://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/Sequents/Sequents/Sequents.htmlhttps://www.cl.cam.ac.uk /research/hvg/Isabelle/dist/library/Sequents/Sequents/ILL.html我对理解基本项目的含义有疑问,即:

类型o,seq'

nonterminals seq,seqobj,seqcont?

这些类型和非终结者是否有一些"现实世界"的对应物?Sequent由函数[o,seq'] => seq'表示,所以,o和seq'可能没有任何真实的对应物?

我正在阅读"Isabelle的逻辑"(特别是第4章),LNCS 828,Isabelle/Isar参考手册(特别是8.2和8.5关于mixfix符号和语法定义),但我无法理解这些符号的含义因此我无法移动向前.任何指导都会非常有帮助!

我试图在Isabelle/HOL中实现单形逻辑http://www.sciencedirect.com/science/article/pii/S1570868314000573作为对象逻辑,但是所有东西都与"现实世界"如此脱节(数学是如何形成的)在纸上完成).

math logic isabelle

8
推荐指数
0
解决办法
92
查看次数

搜索 Isabelle 的一般定义、定理、函数等的最佳方法是什么?

我试图通过 Isabelle(定理证明者)的 Isar 章节,第一个陈述是:

lemma "¬ surj(f :: 'a ? 'a set)"
Run Code Online (Sandbox Code Playgroud)

我想了解常数surj是什么。我知道查找定理很容易:

thm notI
Run Code Online (Sandbox Code Playgroud)

显示:

(?P ? False) ? ¬ ?P
Run Code Online (Sandbox Code Playgroud)

我试过谷歌搜索,surj但没有任何有用的东西出现。

我去了文档(https://isabelle.in.tum.de/documentation.html),但我找不到一种简单的方法来搜索它(例如使用搜索栏)。

人们在做证明时如何搜索定义或一般内容?你如何以有效的方式为伊莎贝尔查找东西,而不必求助于 SO 等琐碎的东西(我应该能够自己查找)?像man命令或-help标志等?


我意识到底部有一个查询框,所以我试了一下。但它向我展示了 38 个定理。这是一个很好的进步,但我觉得这是因为当我说我的引理时,伊莎贝尔确切地知道它在使用哪个。有没有办法强制 Isabelle 透露它使用的定义(因为它显然必须知道它使用的是什么)。


我刚刚注意到:

thm surj_def
Run Code Online (Sandbox Code Playgroud)

显示:

surj ?f = (?y. ?x. y = ?f x)
Run Code Online (Sandbox Code Playgroud)

确实显示了一些东西...这个问题是值得的,因为我发现了查询框,但无论如何人们在 Isabelle 中的发展方式仍然很棒。


编辑:

如果它与解释他们做了什么或类似的事情的战术文档相关联,那也会很好......

theorem-proving isabelle

8
推荐指数
1
解决办法
115
查看次数

Isabelle/HOL中验证者的核心

Isabelle/HOL验证器的核心算法是什么?

我正在寻找一个计划水平评估员的水平.

澄清

我只对Verifier感兴趣,而不是自动定理证明的策略.

上下文

我想从头开始实现一个简单的验证验证器(纯粹出于教育原因,而不是用于生产用途.)

我想了解Isabelle/HOL 的核心Verifier算法.我不关心用于自动定理证明的策略/代码.

我怀疑核心Verifier算法非常简单(而且优雅).但是,我找不到它.

谢谢!

proof isabelle

7
推荐指数
2
解决办法
503
查看次数

在伊莎贝尔一起召集Nitpick和Sledgehammer

当我在伊莎贝尔中说出一个引理时,我经常打字nitpick,如果这不能给我一个反例.然后我键入sledgehammer以尝试自动查找证明.

我想知道:是否可以调用NitpickSledgehammer以便它们同时运行?由于Sledgehammer已经将我的引理发送给了许多自动证明器,这些证明器中的其中一个实际上不是像Nitpick那样的反例调查器吗?

theorem-proving isabelle

7
推荐指数
1
解决办法
273
查看次数

什么规则"适用(规则)"或"证明"使用?

当我apply (rule)在apply-script中使用时,通常会选择适当的规则.这同样适用于proof结构化证明.我在哪里可以学习/查找所用规则的名称?

isabelle

7
推荐指数
1
解决办法
414
查看次数

嵌套析取的证明(规则disjE)

在Isar风格的Isabelle证明中,这很好用:

from `a ? b` have foo
proof
  assume a
  show foo sorry
next
  assume b
  show foo sorry
qed
Run Code Online (Sandbox Code Playgroud)

proof这里调用的隐式规则是rule conjE。但是我应该在那里放置它,以使其不止一种分离:

from `a ? b ? c` have foo
proof(?)
  assume a
  show foo sorry
next
  assume b
  show foo sorry
next
  assume c
  show foo sorry
qed
Run Code Online (Sandbox Code Playgroud)

isabelle isar

7
推荐指数
2
解决办法
421
查看次数

Isabelle中矛盾的惯用语证明?

到目前为止,我在Isabelle的以下风格中使用矛盾来编写证据(使用Jeremy Siek的模式):

lemma "<expression>"
proof -
  {
    assume "¬ <expression>"
    then have False sorry
  }
  then show ?thesis by blast
qed
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在没有嵌套的原始校样块的情况下工作{ ... }

proof isabelle isar

7
推荐指数
1
解决办法
1102
查看次数

嵌套递归和`程序Fixpoint`或`Function`

我想使用Program FixpointFunction在Coq中定义以下函数:

Require Import Coq.Lists.List.
Import ListNotations.
Require Import Coq.Program.Wf.
Require Import Recdef.

Inductive Tree := Node : nat -> list Tree -> Tree.

Fixpoint height (t : Tree) : nat :=
  match t with
   | Node x ts => S (fold_right Nat.max 0 (map height ts))
  end.

Program Fixpoint mapTree (f : nat -> nat) (t : Tree)  {measure (height t)} : Tree :=
  match t with 
    Node x ts => Node (f x) (map …
Run Code Online (Sandbox Code Playgroud)

recursion termination coq isabelle

7
推荐指数
3
解决办法
926
查看次数