Shieber (1985): Evidence Against the Context-Freeness of Natural Language #
This file proves Shieber's theorem that a language meeting his four claims about Swiss German
subordinate clauses is not context-free. The homomorphism f sends the words of the clauses to
letters, and the image of the language intersected with the regular language
r = w a* b* x c* d* y is w aᵐ bⁿ x cᵐ dⁿ y. Erasing w, x and y leaves aᵐ bⁿ cᵐ dⁿ,
which is not context-free, and the context-free languages are closed under homomorphisms and
under intersection with regular languages.
Main definitions #
Letter: the letters of the image offcaseSorted: the regular languagerClaims f L: the four claims about a languageLwhose wordsfsends to letters
Main results #
Claims.map_inf_caseSorted: the image of the language intersected withrClaims.not_isContextFree: a language meeting the claims is not context-freenot_isContextFree_of_count_le: the same with optional objects, under a one-sided Claim 3acceptable_iff_perm: Claim 3 against the paper's clauses (1)–(22)
Implementation notes #
The letters put the accusative d'chind and laa before the dative em Hans and hälfe, as the
schema of Claim 2 and f do; the prose of Claim 2 puts the datives first. In the data, a verb
requires the case of its entry in German.Zurich.Verbs, and a noun phrase bears the case its
gloss marks.
TODO #
Note 4 restricts Claim 3 to clauses with as many noun phrases as verbs, which does not suffice:
the image, with the frame erased, can then be {aᵖ bᵠ cʳ dᵘ | p + q ≠ r + u} ∪ {aᵐ bⁿ cᵐ dⁿ},
the union of the context-free {aᵖ bᵠ cʳ dᵘ | p + q ≠ r + u} and {aᵏ bʲ cᵏ dˡ}. Stating the
counterexample needs the closure of the context-free languages under union.
References #
The letters and the regular language r #
Letter is the alphabet of the image of f, its letters declared in the order of
r = w a* b* x c* d* y.
- w : Letter
wis the image of Jan säit das mer 'Jan says that we'. - a : Letter
ais the image of the accusative d'chind 'the children'. - b : Letter
bis the image of the dative em Hans 'Hans'. - x : Letter
xis the image of es huus haend wele 'the house have wanted'. - c : Letter
cis the image of laa 'let', which requires an accusative. - d : Letter
dis the image of hälfe 'help', which requires a dative. - y : Letter
yis the image of aastriiche 'paint'. - z : Letter
zis the image of any other word.
Instances For
Equations
- Shieber1985.instDecidableEqLetter x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Shieber1985.instFintypeLetter = { elems := { val := ↑Shieber1985.Letter.enumList, nodup := Shieber1985.Letter.enumList_nodup }, complete := Shieber1985.instFintypeLetter._proof_1 }
Equations
- Shieber1985.instReprLetter.repr Shieber1985.Letter.w prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Shieber1985.Letter.w")).group prec✝
- Shieber1985.instReprLetter.repr Shieber1985.Letter.a prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Shieber1985.Letter.a")).group prec✝
- Shieber1985.instReprLetter.repr Shieber1985.Letter.b prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Shieber1985.Letter.b")).group prec✝
- Shieber1985.instReprLetter.repr Shieber1985.Letter.x prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Shieber1985.Letter.x")).group prec✝
- Shieber1985.instReprLetter.repr Shieber1985.Letter.c prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Shieber1985.Letter.c")).group prec✝
- Shieber1985.instReprLetter.repr Shieber1985.Letter.d prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Shieber1985.Letter.d")).group prec✝
- Shieber1985.instReprLetter.repr Shieber1985.Letter.y prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Shieber1985.Letter.y")).group prec✝
- Shieber1985.instReprLetter.repr Shieber1985.Letter.z prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Shieber1985.Letter.z")).group prec✝
Instances For
Equations
- Shieber1985.instReprLetter = { reprPrec := Shieber1985.instReprLetter.repr }
Equations
caseSorted is the regular language r = w a* b* x c* d* y, the images of the clauses of
the schema of Claim 2.
Equations
- Shieber1985.caseSorted = {l : List Shieber1985.Letter | ∃ (p : ℕ) (q : ℕ) (r : ℕ) (u : ℕ), l = Shieber1985.clause p q r u}
Instances For
crossSerial is the language w aᵐ bⁿ x cᵐ dⁿ y.
Equations
- Shieber1985.crossSerial = {l : List Shieber1985.Letter | ∃ (m : ℕ) (n : ℕ), l = Shieber1985.clause m n m n}
Instances For
A word is in r iff it is sorted with one w, one x, one y and no z, since a sorted
word is determined by its letter counts.
The image of note 5 #
eraseFrame is the homomorphism of note 5, which erases w, x and y; it also erases z,
which does not occur in r.
Equations
- Shieber1985.eraseFrame Shieber1985.Letter.a = [Shieber1985.Letter.a]
- Shieber1985.eraseFrame Shieber1985.Letter.b = [Shieber1985.Letter.b]
- Shieber1985.eraseFrame Shieber1985.Letter.c = [Shieber1985.Letter.c]
- Shieber1985.eraseFrame Shieber1985.Letter.d = [Shieber1985.Letter.d]
- Shieber1985.eraseFrame x✝ = []
Instances For
The claims and the argument #
Claims f L states the four claims of §3 about a language L over a vocabulary W whose
words f sends to letters.
- exists_mem (m n : ℕ) : ∃ s ∈ L, List.map f s = clause m n m n
Instances For
The image of a language meeting the claims, intersected with r, is w aᵐ bⁿ x cᵐ dⁿ y.
A language meeting the four claims is not context-free.
A language is not context-free if every clause w aⁿ bⁿ x cⁿ dⁿ y is grammatical and every
object noun phrase of a clause of the schema has a verb requiring its case, objects being
optional.
The claims are consistent and not idle #
countMatched is the language of the words that meet Claim 3 if they are in the schema.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The claims are consistent, since countMatched meets them.
Claim 3 excludes the full language, which is context-free.
The paper's clauses (1)–(22) #
npCase? np is the case the article of the noun phrase np marks: a word article followed
by its noun, or a clitic article, written with a final apostrophe, attached to it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
objectCases e lists the cases the articles of the clause e mark on its noun phrases.
Equations
- Shieber1985.objectCases e = List.filterMap (fun (x : String × String) => Shieber1985.npCase? x.1) e.glossedTokens
Instances For
requiredCases e lists the cases the verbs of the clause e require of their objects.
Equations
- One or more equations did not get rendered due to their size.
Instances For
As note 4 observes, every clause of the paper has as many objects as its verbs require.
Among clauses (1)–(22), cross-serial or not, the acceptable ones are exactly those whose objects bear the cases their verbs require, as many of each.