如何在 ASCII 中编写 isabelle 迭代含义

How to write isabelle iterated implications in ASCII

在学习 Isabelle (2020) 时,我试图将其文档 (PDF) 中的一个示例复制到一个 .thy 文件中,该文件包含一个迭代蕴涵。由于文档是 PDF 格式,我不知道正确的 ASCII 应该是什么。我能得到的最接近的是:

lemma "[[ xs @ ys = ys @ xs ; length xs = length ys]]   ==> xs = ys"

但是 Isabelle 抱怨“内部语法错误”。我尝试使用“[...;...]”,但 Isabelle 似乎将其视为列表,并抱怨列表和 bool 之间存在冲突。

如何用 ASCII 键入公式?

一般来说,如何从PDF文档中找到用于表示法的ASCII码?有没有什么地方可以查询 table?

这些符号的名称是\<lbrakk>\<rbrakk>。对应的Unicode字符为。如果您在 Isabelle/jEdit 中键入 [||],它将自动转换为这些。

从 PDF 中复制代码几乎行不通; PDF 是一种非常糟糕的格式。

查找符号的一个好地方是 Isabelle/jEdit 中的“符号”选项卡。你可以例如在“标点符号”部分找到这些括号。还有 ~~/etc/symbols 文件,但我认为这对这种情况没有太大帮助,因为它只显示 Unicode 代码点,而不是字符本身。