Answers:
不,您不能严格将句法与语义方法区分开来,但是这种区分最终还是有意义的。
结构化操作语义不是定义的,因为它不是将语义赋予编程语言的一种组合方法。
但是,您可以使用可实现性或逻辑关系方法,根据结构性操作语义来构建指称模型。例如,请参见Robert Harper的“基于操作语义的构造类型系统”。
术语模型是指称的,但语义学家通常对此并不满意。他们通常想要的是一类模型,其中术语模型是初始的,可以用来证明稳健性和完整性。(笛卡尔封闭类别的输入lambda演算的健全性和完整性是范例;请参见Alex Simpson的λ类型的分类完整性结果演算。对于一些细节)
另一方面,如果您具有定义语义,则可能需要弄清楚它的语法是什么。然后,您要去寻找一种语法和抽象机器,其术语模型可以在适当的模型类别中用作初始对象。
例如,游戏语义学从一种纯粹的语义结构开始发展,并最终导致了对操作性游戏语义学的研究-最近的一个例子是Alexis Goyet的《 lambda lambda-bar演算:无约束策略的双重演算》。
总体而言,您可以将结构化操作语义视为指定抽象机器的一种方式,我们希望该机器易于实现。指称语义给出了一种语言的组成模型,我们希望这种模型易于推理。如果两者兼而有之,那么我们既可以实现语言又可以进行语言推理。
归一化定理是一个有趣的模棱两可的情况。通常,为了证明规范化,您需要一个语义模型(通常是逻辑关系)。但是,一旦知道归一化成立,现在就可以通过归纳正规形式来证明许多属性,这纯粹是句法论证。
对于弱逻辑(粗略地达到无归纳的一阶逻辑),可以使用遗传替换技术在语法上证明归一化。在这些逻辑中,子公式属性成立,因此您可以通过归纳类型来证明归一化。有关此方法的解释,请参见Frank Pfenning的论文《结构切割消除》。