融合证明,可实现简单的重写系统


14

假设我们有一种简单的语言,其中包含以下术语:

  • true
  • false
  • 如果t1,t2,t3是项,则ift1thent2elset3

现在假设以下逻辑评估规则:

iftruethent2elset3t2[E-IfTrue]iffalsethent2elset3t3[E-IfFalse]t1t1ift1thent2elset3ift1thent2elset3[E-If]

假设我们还添加了以下时髦规则:

t2t2ift1thent2elset3ift1thent2elset3[E-IfFunny]

对于具有给定评估规则的这种简单语言,我希望证明以下几点:

定理:如果r t,则存在一些项u,使得s ut ursrtusutu

我通过归纳的结构来证明这一点。到目前为止,这是我的证明,一切都很好,但是我被最后一个问题所困扰。似乎对r的结构的归纳还不够,有人可以帮我吗?rr

证明。通过对归纳,我们将分离出r可以采用的所有形式:rr

  1. 是一个常数,没有任何证据可证明,因为范式不能计算任何东西。r
  2. 如果为true,则 r 2否则为 r 3。(a)两种推导均使用E-IfTrue规则进行。在这种情况下, s = t,因此没有任何证据可证明。(b)一种推导是使用E-IfTrue规则进行的,另一种推导是使用E-Funny规则进行的。假设 r s是用E-IfTrue完成的,另一种情况也得到了等效证明。现在我们知道 s = r 2。我们也知道,牛逼=如果真,那么 [R ' 2别的 [R 3,并且存在一些deriviation [R 2r=r2r3s=trss=r2t=r2r3(前提)。如果我们现在选择 ü = [R ' 2,我们的结论的情况下。r2r2u=r2
  3. 如果为假,则为 r 2,否则为 r 3。等效证明如上。r=r2r3
  4. 如果 r 1 r 2,否则 r 3,其中 r 1 true或false。(a)两种推导均采用E-If规则进行。我们现在知道,小号=如果 [R ' 1 [R 2别的 [R 3牛逼=如果 [R 1 [R 2别的 [R 3。我们也知道,存在deriviations [R 1[R ' 1r=r1r2r3r1s=r1r2r3t=r1r2r3r1r1(处所)。我们现在可以使用感应hypothese说,存在一些术语[R ''' 1 使得[R ' 1个[R ''' 1[R 1个[R ''' 1 现在,我们通过说u =如果r 1,然后r 2 else r 3并注意到 s ut ur1r1r1r1r1r1r1u=r1r2r3sutu根据E-If规则。(b)一种推导是通过E-If规则进行的,而另一推导是通过E-Funny规则进行的。

在后一种情况下,我想念的情况是E-If进行了一次推导,而E-Funny进行了一次推导……我似乎无法使用这些假设。

帮助将不胜感激。


@Gilles在编辑方面做得非常好。我不知道SE的TeX引擎能够满足所有这些要求... :-)
codd 2012年

我是错误的还是本练习取自Pierce的“类型和编程语言”?
Fabio F.

@FabioF。它确实来自Pierce的Types and Programming Languages。由于他执行归纳的方式,他提供了一个我不清楚的证据。这就是为什么我试图通过对结构的归纳来证明自己。我当时想提一下这是本书中的内容,但我认为那是无关紧要的。很好,但是!
codd 2012年

Answers:


7

好吧,让我们考虑 s是通过应用E-If规则得出的,而 t是通过应用E-Funny规则得出的:所以 s = i fr=ift1thent2elset3st其中1' 1= ˚Fs=ift1thent2elset3t1t1其中2' 2t=ift1thent2elset3t2t2

我们要找的是ü = ˚Fus u遵循规则E-Funny,而 t u遵循规则E-If。u=ift1thent2elset3sutu


击败我。不错的工作。
Patrick87

天哪,我实在太遥远了……谢谢!
codd 2012年

但是,您将它们混合在一起,所以来自E-Funny。还是我看到问题了?su
codd 2012年

@杰罗恩你说得对-我把它们混在一起了。立即修复。
sepp2k 2012年

8

如果您想查找一下,一些术语可能会有所帮助:这些规则是重写规则,与类型系统无关。¹ 您要证明的财产称为合流;更具体地说,这是一个很强的融合点:如果一个步骤可以一步一步地以不同的方式进行简化,那么它们可以在下一步重新收敛。通常,合流可以有任意多个步骤,而不仅仅是一个步骤:如果r t,则存在u使得s ut ursrtusutu —如果可以用不同的方式简化术语,则无论它们之间的分歧程度如何,它们最终都可以收敛。

证明这种归纳定义的重写规则的性质的最佳方法是通过归纳化归约的结构,而不是归约项的结构。由于规则遵循左手术语的结构,因此这两种方法都可行,但是根据规则进行推理则更为简单。不用深入研究该术语,而是采用所有规则对,然后看看哪一个术语可能是这两个规则的左侧。在此示例中,最终将得到相同的案例,但是速度更快。

在给您带来麻烦的情况下,一侧减小“ if”部分,另一侧减小“ then”部分。有两个部分之间不存在重叠的是改变(在[E-如果],2在[E-IfFunny]),而且也对没有约束2在[E-如果]或上1中[E- IfFunny]。所以,当你有其中两个规则的一个术语-它必须是形式的˚Ft1t2t2t1,您可以选择按以下任一顺序应用规则:ifr1thenr2elser3

ifr1thenr2elser3[E-If][E-IfFunny]ifr1thenr2elser3ifr1thenr2elser3[E-IfFunny][E-If]ifr1thenr2elser3

¹ 有时您会看到类型和重写在一起,但是从本质上讲它们是正交的概念。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.