Isabelle 我可以为一个定理定义多个名称吗?

Isabelle 我可以为一个定理定义多个名称吗?,isabelle,Isabelle,假设我有一个定理: theorem non_ASCII_thm_name: "True" by simp 我想用类似于符号的命令为非ASCII\u thm\u name定义一个ASCII名称。例如,像这样: notation non_ASCII_thm_name ("ASCII_thm_name") Isar命令符号和缩写只能与常量一起使用。有Isar命令允许我这么做吗 最好,我希望我的Isar命令提供的只是一个同义词。例如,如果我使用sledgehammer,最好只存在一个定理,非

假设我有一个定理:

theorem non_ASCII_thm_name:
  "True"
  by simp
我想用类似于
符号
的命令为
非ASCII\u thm\u name
定义一个ASCII名称。例如,像这样:

notation non_ASCII_thm_name ("ASCII_thm_name")
Isar命令
符号
缩写
只能与常量一起使用。有Isar命令允许我这么做吗


最好,我希望我的Isar命令提供的只是一个同义词。例如,如果我使用
sledgehammer
,最好只存在一个定理,
非ASCII thm\u name
,这样
sledgehammer
就不会使用额外的事实
ASCII thm\u name
部分解决方案是使用以下命令:

lemmas ASCII_thm_name = non_ASCII_thm_name
这将定义一个名为
ASCII\u thm\u name
的新定理,它与
非ASCII\u thm\u name
相同

不幸的是,不能保证像
find_theories
这样的工具会使用您的新名称,而是会使用它们自己的启发式方法来确定输出回用户的“最佳”名称


引理
的另一个同义词是
定理
,尽管前者被认为是更标准的方法。

定理ASCII\u thm\u name=non\u ASCII\u thm\u name
将允许您编写ASCII名称(尽管它不会通过
查找定理
等工具输出)。这够了吗?谢谢。这是一个答案,看起来你应该把它变成一个答案。它允许我使用
ASCII\u thm\u name
代替
非ASCII\u thm\u name
。我现在想确定的是它是否是一个简单的同义词。如果它不是一个简单的同义词,那么最好找到一个解决方案,给我一个简单的同义词,正如我在问题的最后一段所解释的。对不起,如果这听起来很迂腐,但是你看到同义词和在新名称下的原定理的副本之间有什么实际区别?性能,特别是用大锤。如果我有一千个定理,每个定理有两个名称,而额外的名称创建了一个重复的定理,而不是同义词,那么潜在地,2000个事实将被输入到Sledgehammer,而不是1000个事实。我不能推翻你的答案,因为我还没有足够的声望点数。这是一个很好的答案,即使它没有提供一个简单的同义词。Sledgehammer似乎在将重复的定理提供给ATP之前删除它们(参见
fun uniquify
,在
Sledgehammer\u fact.ML
中被
fun几乎所有事实
),这意味着使用
定理
定义重复定理的影响最小。您可以通过提供选项(带重复)告诉find_定理为您提供所有名称,即“find_定理(带重复)rest_of_query”在一份文件中添加了一个参考书目条目,将此答案归功于最近在伊莎贝尔邮件列表中活跃的David G。如果这不是期望的,那么@davidg应该抗议。大多数伊莎贝尔分布似乎更喜欢
引理
,而不是
定理
;很像
引理
优于
定理
。不过,它们的语义是一样的。@GBa:那是我,不过我怀疑引用我或这篇文章可能有点过分了。:)@大卫,不,这是我的规矩。如果我在公共论坛上提问并得到答案,那么我会添加一个参考书目条目。它告诉我从哪里得到的答案,以防我需要再看一遍。