Pumping Lemma Proofs #
Key results:
- {aⁿbⁿcⁿdⁿ} is not context-free (
anbncndn_not_pumpable) - {aⁿbⁿcⁿ} is not context-free (
anbnc_not_pumpable)
These are used by:
Theories.Syntax.CCG.Formal.GenerativeCapacity— proving CCG > CFGPhenomena.WordOrder.Studies.Shieber1985— proving Swiss German ∉ CFL
Alphabet for cross-serial dependency patterns.
- a : FourSymbol
- b : FourSymbol
- c : FourSymbol
- d : FourSymbol
Instances For
Equations
- instReprFourSymbol.repr FourSymbol.a prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "FourSymbol.a")).group prec✝
- instReprFourSymbol.repr FourSymbol.b prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "FourSymbol.b")).group prec✝
- instReprFourSymbol.repr FourSymbol.c prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "FourSymbol.c")).group prec✝
- instReprFourSymbol.repr FourSymbol.d prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "FourSymbol.d")).group prec✝
Instances For
Equations
- instReprFourSymbol = { reprPrec := instReprFourSymbol.repr }
Equations
- instBEqFourSymbol = { beq := instBEqFourSymbol.beq }
Equations
- instBEqFourSymbol.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Instances For
The language {aⁿbⁿcⁿdⁿ | n ≥ 0}, modeling Dutch cross-serial dependencies.
Equations
- One or more equations did not get rendered due to their size.
- isInLanguage_anbncndn [] = true
Instances For
Generate aⁿbⁿcⁿdⁿ.
Equations
Instances For
The CFL pumping property for languages over FourSymbol. Every context-free language has this property (pumping lemma). Showing a language lacks it proves it's not context-free.
Equations
- One or more equations did not get rendered due to their size.
Instances For
makeString_anbncndn n is always in the language {aⁿbⁿcⁿdⁿ}.
Pumping breaks membership in {aⁿbⁿcⁿdⁿ}: for any decomposition of aᵖbᵖcᵖdᵖ into uvxyz with |vxy| ≤ p and |vy| ≥ 1, pumping at i=0 breaks membership.
Key insight: |vxy| ≤ p means vxy can't contain both.a and.d (they're separated by 2p positions). Pumping down (i=0) preserves one count at p while reducing the total, making counts unequal.
{aⁿbⁿcⁿdⁿ} does NOT have the CFL pumping property, hence is not context-free.
Proof: for any pumping constant p, the word aᵖbᵖcᵖdᵖ ∈ L witnesses failure.
By pump_breaks_anbncndn, every valid decomposition can be pumped down (i=0)
to break membership, contradicting the pumping property's ∀ i guarantee.
Equations
- instReprThreeSymbol = { reprPrec := instReprThreeSymbol.repr }
Equations
- instReprThreeSymbol.repr ThreeSymbol.a prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ThreeSymbol.a")).group prec✝
- instReprThreeSymbol.repr ThreeSymbol.b prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ThreeSymbol.b")).group prec✝
- instReprThreeSymbol.repr ThreeSymbol.c prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ThreeSymbol.c")).group prec✝
Instances For
Equations
- instBEqThreeSymbol = { beq := instBEqThreeSymbol.beq }
Equations
- instBEqThreeSymbol.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
The language {aⁿbⁿcⁿ | n ≥ 0}.
Equations
- One or more equations did not get rendered due to their size.
- isInLanguage_anbnc [] = true
Instances For
Generate aⁿbⁿcⁿ.
Equations
Instances For
The CFL pumping property for languages over ThreeSymbol.
Equations
- One or more equations did not get rendered due to their size.
Instances For
{aⁿbⁿcⁿ} does NOT have the CFL pumping property, hence is not context-free. Same structure as the four-symbol case: contiguity forces either.a or.c absent from vxy, preserving one count at p while the total decreases.