通过衍生步骤数证明

时间:2014-11-09 15:56:22

标签: theory proof automata formal-languages induction

鉴于 G = {a,b,c,d},{S,X,Y},S,{S-> XY,X-> aXb,X-> ab,Y-> cYd,Y-> ; cY,Y-> cd}}

证明| w | c- | w | d + | w |a≥| w | b

| w | a是字符串中有多少'a'。这是有意义的,因为没有制作d而没有制作c的制作规则会有更多(或相同数量)的's',而'c'可以在没有使用Y-> cY的情况下制作。我需要在推导步骤的数量上使用归纳来正式证明这一点并且一整天都在尝试。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我们将使用此语法

S -> XY
X -> aXb
X -> ab
Y -> cYd
Y -> cY
Y -> cd

并显示语法的语言|w|c - |w|d + |w|a ≥ |w|b。证据是通过归纳产品X -> aXbY -> cYdY -> cY的应用数量。

基本情况:只有一个字符串派生而不调用这些产品,即abcd,它从|w|c - |w|d + |w|a >= |w|b开始就满足1 - 1 + 1 >= 1

归纳假设:假设声明适用于使用上述三种产品之一的k应用程序得出的所有字符串。

归纳步骤:我们证明声明适用于由k+1制作的应用程序派生的字符串。由于我们的每个产品在LHS和RHS中具有相同类型和数量的非终端,并且由于RHS在所有情况下也包含终端,因此在该语言中存在较短的字符串,并且至少少一个这些产品的应用。根据假设,较短的字符串有|w|c - |w|d + |w|a >= |w|b。对于我们的字符串,有三种情况:

  1. X -> aXb是应用的k+1生产广告。这会将|w|a|w|b提高1,我们已经确定了|w|c - |w|d + |w|a + 1 >= |w|b + 1 iff |w|c - |w|d + |w|a >= |w|b
  2. Y -> cYd是应用的k+1生产广告。这会将|w|c|w|d提高1,我们|w|c + 1 - (|w|d + 1) + |w|a >= |w|b会保留iff |w|c - |w|d + |w|a >= |w|b,我们已经确定了这一点。
  3. Y -> cY是应用的k+1生产广告。这会将|w|c提高1,从|w|c + 1 - |w|d + |w|a >= |w|b开始,|w|c + 1 - |w|d + |w|a > |w|c - |w|d + |w|a >= |w|b为真。
  4. k+1生产选择的三种可能情况中的每一种情况下,k+1生产中派生的字符串都维护着该属性。通过归纳,该属性适用于这些作品的所有n个应用程序。