有关翻译正确性验证的重点疑难问题及其设计实现方案
在L2C可信编译器的设计与实现中, 对于实线所对应的翻译过程 (CompCert编译器除外) 均借助于Coq证明了正确性 (语义保持性), 然后得出LustreSGen所产生的LustreS代码到Clight代码整个翻译过程的正确性.从LustreS到Clight的任意两个中间语言***S***和***T***(设***S***在前) 之间的语义保持性可描述为
| ∀P.sound§⇒sound(τ§)∧SS§≈ST(τ§),∀P.sound§⇒sound(τ§)∧SS§≈ST(τ§), |
其中, τ是翻译函数, 可将S中间语言的程序P翻译至T中间语言的程序τ(P); SS是S中间语言的语义函数, ST是T中间语言的语义函数; sound(P) 和sound(τ(P)) 分别刻画翻译前后的程序应满足的一些Well-formedness性质 (比如第5.4节所述的左右值不相交的性质.另外, 各层中间表示的性质会有所不同), 用以将各阶段翻译过程的证明串连起来得到整个翻译过程的语义保持性, 同时保证在每一阶段可以正常得到SS(P) 和ST(τ(P)); ≈是单向模拟等价关系:SS(P)≈ST(τ(P)) 意味着:P的所有环境变量在τ(P) 都有匹配对象, 且SS(P) 对环境的改变可以由ST(τ