我知道一个Dafny源文件可以包含在另一个中,导致在验证之前对文件进行文本连接。但是我没有明确的包含,导入和哪些文件在何时验证之间关系的心理模型。也许专家可以详细说明。感谢。
答案 0 :(得分:0)
至少部分记录在Dafny Reference Manual的各个部分中。
第2.0节讨论了include
:
包含的文件也遵守Dafny语法。 Dafny解析并处理原始源文件和所有包含文件的传递闭包,但不会在这些文件上调用验证器,除非它们已在命令行中明确列出。
(强调我的)
3.1节讨论了import
,这是Dafny模块系统的一个特性。您只能在模块内部使用import
,以便在另一个模块中提供定义。请注意,与其他语言不同,Dafny模块系统与文件存储在磁盘上的方式无关。因此,如果要导入的模块在另一个文件中定义,则可能必须包含该文件(如果尚未包含该文件)。
import
对导入的模块是否经过验证没有直接影响。除非在命令行中列出其文件,否则不会验证其他文件中的模块。始终验证当前文件中的模块(无论是否由任何人导入)。