使用语言/翻译与语言环境

时间:2016-07-11 08:35:05

标签: isabelle

是否有任何已知的hack允许使用语法/转换机制在给定语言环境中定义自定义语法?我对“明显”解决方案的所有尝试都产生了类型错误,我认为这是由于语法/翻译尚未被“区域设置感知”引起的。

1 个答案:

答案 0 :(得分:1)

使用syntaxtranslations的原始AST转换不能在Isabelle2016中的区域设置内使用。对于常量和类型,有一种解决方法,其声明不依赖于语言环境参数。您只需要在语言环境之外发出语法声明,以获取背景理论中的相应常量。以下是概念证明:

locale test = fixes a :: nat begin
definition foo :: "nat ⇒ nat" where "foo x = x"
end

syntax "_foo" :: "nat ⇒ bool" ("FOO")
translations "FOO" ↽ "CONST test.foo"

context test begin
term foo

此解决方法不适用于依赖于语言环境参数的常量,因为后台理论中的常量将这些参数作为附加参数,并且语言环境安装缩写,在自定义语法转换触发之前折叠。

相关问题