如何从HOL.Bit_Operations正确导入bit_nat定义?
正确从HOL.Bit_Operations导入bit_nat的方法
你遇到的问题是因为HOL.Bit_Operations中的bit_nat定义没有自动进入当前理论的作用域,直接调用会被当作未定义符号,导致求值无法正常解析。
以下两种方法可以解决这个问题:
显式导入指定符号
修改代码,在理论开始部分明确导入bit_nat:theory Scratch imports Main HOL.Bit_Operations begin from HOL.Bit_Operations import bit_nat value "bit_nat 5 0" (* "True" :: "bool" *) end使用全称引用符号
无需额外导入,直接用理论全称限定bit_nat:theory Scratch imports Main HOL.Bit_Operations begin value "HOL.Bit_Operations.bit_nat 5 0" (* "True" :: "bool" *) end
原因说明:Isabelle/HOL导入理论时,默认不会将所有定义都暴露到当前作用域,这是为了避免命名冲突。HOL.Bit_Operations里的bit_nat属于该理论的局部定义,必须通过显式导入或全称路径访问才能正常使用。
内容的提问来源于stack exchange,提问作者TFuto
相关产品推荐
相关产品推荐

