Isabelle / HOL中的类型的语法缩写?

时间:2019-11-05 16:57:33

标签: isabelle

是否可以为Isabelle / HOL中的类型定义语法替换?

我想做这样的事情:

syntax my_short_list :: "type" ("my-list")
translations "my_short_list" ⇌ (type) "'a list"  ― ‹Could not find syntax to express this ...›

locale foo =
  fixes blub :: "my-list ⇒ my-list"

并希望这样解释:

locale foo =
  fixes blub :: "'a list ⇒ 'a list"

(所有出现的my-list被替换为文本'a list

以上内容会产生以下错误:

Error in syntax translation rule: rhs contains extra variables
"my_short_list" ↝ ("\<^type>List.list" 'a)

因此,我正在寻找一种纯粹的语法替代形式,而无需进行任何宏观卫生检查。

一些了解潜在问题的背景:

我有一个具有5个类型参数的语言环境和一个接受所有5个类型参数的数据类型X,因此对于每次使用,我都必须编写('a, 'b, 'c, 'd, 'e) X。显然,名称在实践中更长,因此变得更加难以理解。

我尝试过的其他方法:

  1. 在我的语言环境中定义类型或type_synonym。 不允许这样做(请参见https://stackoverflow.com/a/19281758/303637)。
  2. 只需使用另一个类型参数来表示数据类型的所有必需属性的('a, 'b, 'c, 'd, 'e) Xassumes。 这是很多样板,因为我需要写下通常为数据类型定义自动生成的所有属性。

0 个答案:

没有答案