是否可以为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
。显然,名称在实践中更长,因此变得更加难以理解。
我尝试过的其他方法:
('a, 'b, 'c, 'd, 'e) X
和assumes
。
这是很多样板,因为我需要写下通常为数据类型定义自动生成的所有属性。