Complement frames — typed slots #
A verb's complement frame as a list of typed Slots, factoring the flat
ComplementType enum cells into their axes: syntactic category, case
marking, CP-external shell ([Dea26]), clause form, [Noo07]
coding, and embedded-subject requirement (genitive subjects of
nominalized clauses, [Bon22]). The legacy enum survives as a
round-trip view (ComplementType.toFrame / Frame.toComplementType).
Main declarations #
Slot.Shell,Slot.ShellInventory(+isAttested,hasNominalShell, the named cells) — CP-external wrapping shells ([Dea26] Table 79)Slot,Slot.WellFormed— one complement position: category plus optional clausal axesFrame+Frame.np,Frame.finiteClause, … — a frame is a list of slots; the legacy enum cells as smart constructors
Implementation notes #
Frame-conditioned readings (attitude, opacity, control) are not slot
data — they live on Verb.Reading (Semantics/Verb/Defs.lean), keyed
to the verb's frames. The [Noo07] selection relation between verb
frames and clause-typers (Verb.realizes) lives in
Syntax/Clause/Complementation.lean. This file never imports
Semantics/.
CP-external wrapping shells #
ComplementSize and ClauseSpine (Syntax/Minimalist/) record internal
clause height; Slot.Shell records what wraps the CP externally.
[Dea26] Table 79 cross-classifies the two axes.
Equations
- Slot.instDecidableEqShell x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Slot.instReprShell = { reprPrec := Slot.instReprShell.repr }
Equations
- Slot.instReprShell.repr Slot.Shell.c prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Slot.Shell.c")).group prec✝
- Slot.instReprShell.repr Slot.Shell.d prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Slot.Shell.d")).group prec✝
- Slot.instReprShell.repr Slot.Shell.n prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Slot.Shell.n")).group prec✝
- Slot.instReprShell.repr Slot.Shell.p prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Slot.Shell.p")).group prec✝
Instances For
An ordered shell list, innermost first: [.c, .d] = D wraps CP,
[.c, .n, .d] = D wraps N wraps CP.
Equations
- Slot.ShellInventory = List Slot.Shell
Instances For
The shell inventory is a [Dea26] Table 79 cell.
Equations
- Slot.ShellInventory.isAttested [Slot.Shell.c] = true
- Slot.ShellInventory.isAttested [Slot.Shell.c, Slot.Shell.d] = true
- Slot.ShellInventory.isAttested [Slot.Shell.c, Slot.Shell.n, Slot.Shell.d] = true
- Slot.ShellInventory.isAttested [Slot.Shell.c, Slot.Shell.d, Slot.Shell.p] = true
- x✝.isAttested = false
Instances For
The bare-CP cell (Nez Perce; English think).
Equations
Instances For
The four named witnesses are all attested.
V P CP (P with no D shell) is not a Table 79 cell.
V N CP (N with no D shell) is not a Table 79 cell.
The clause complex is wrapped in a nominal projection: its shell
contains D (Washo dCP, Adyghe dnCP, Bulgarian/Ndebele pdCP;
bareCP is not). On [Dea26]'s attested cells this coincides
with ≠ bareCP (pCP/nCP are unattested); D-membership is the
definitional content, not the complement of a special case.
Equations
- inv.hasNominalShell = (Slot.Shell.d ∈ inv)
Instances For
Complement-frame axes #
Equations
- Slot.instDecidableEqCat x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Slot.instReprCat.repr Slot.Cat.nominal prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Slot.Cat.nominal")).group prec✝
- Slot.instReprCat.repr Slot.Cat.adpositional prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Slot.Cat.adpositional")).group prec✝
- Slot.instReprCat.repr Slot.Cat.clausal prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Slot.Cat.clausal")).group prec✝
Instances For
Equations
- Slot.instReprCat = { reprPrec := Slot.instReprCat.repr }
Embedded-subject requirement of a clausal slot: obligatorily null (control/raising infinitives) or overt, optionally with a fixed case (genitive subjects of nominalized clauses, [Bon22]).
- obligatorilyNull : EmbeddedSubject
- overt (subjCase : Option Case) : EmbeddedSubject
Instances For
Equations
- Slot.instDecidableEqEmbeddedSubject.decEq Slot.EmbeddedSubject.obligatorilyNull Slot.EmbeddedSubject.obligatorilyNull = isTrue ⋯
- Slot.instDecidableEqEmbeddedSubject.decEq Slot.EmbeddedSubject.obligatorilyNull (Slot.EmbeddedSubject.overt subjCase) = isFalse ⋯
- Slot.instDecidableEqEmbeddedSubject.decEq (Slot.EmbeddedSubject.overt subjCase) Slot.EmbeddedSubject.obligatorilyNull = isFalse ⋯
- Slot.instDecidableEqEmbeddedSubject.decEq (Slot.EmbeddedSubject.overt a) (Slot.EmbeddedSubject.overt b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- Slot.instReprEmbeddedSubject = { reprPrec := Slot.instReprEmbeddedSubject.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
The frame object #
One complement position of a verb's frame: its category plus, for
clausal slots, the recorded clausal axes. On non-clausal slots the
clausal axes are none (Slot.WellFormed); on clausal slots none
means unrecorded. Frame-conditioned readings and control are not
slot data — they live on Verb.Reading.
- cat : Cat
- marking : Option Case
Case marking on the slot (case-marked nominalized clauses, NPs).
- shell : Option ShellInventory
CP-external wrapping shell ([Dea26] Table 79).
- clauseForm : Option Features.ClauseForm
Clause form (declarative vs embedded question).
- coding : Option NoonanCompType
[Noo07] coding of the complement clause.
- embeddedSubject : Option EmbeddedSubject
Embedded-subject requirement.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instReprSlot = { reprPrec := instReprSlot.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Clausal axes are reserved for clausal slots.
Equations
- s.WellFormed = (s.cat = Slot.Cat.clausal ∨ s.shell = none ∧ s.clauseForm = none ∧ s.coding = none ∧ s.embeddedSubject = none)
Instances For
Equations
- instDecidablePredSlotWellFormed s = id inferInstance
The [Noo07] codings recorded across the frame's slots.
Instances For
Some slot of the frame records clause form cf.
Equations
- fr.hasClauseForm cf = ∃ s ∈ fr, s.clauseForm = some cf
Instances For
Equations
- fr.instDecidableHasClauseForm cf = id inferInstance
Some slot of the frame records [Noo07] coding t.
Instances For
Equations
- fr.instDecidableHasCoding t = id inferInstance
Smart constructors — the legacy ComplementType cells #
Double object: two nominal slots.
Equations
- Frame.np_np = [{ cat := Slot.Cat.nominal }, { cat := Slot.Cat.nominal }]
Instances For
NP + PP: a nominal plus an adpositional slot.
Equations
- Frame.np_pp = [{ cat := Slot.Cat.nominal }, { cat := Slot.Cat.adpositional }]
Instances For
Finite declarative clause.
Equations
- Frame.finiteClause = [{ cat := Slot.Cat.clausal, clauseForm := some Features.ClauseForm.declarative, coding := some NoonanCompType.indicative }]
Instances For
Infinitival clause: obligatorily null embedded subject.
Equations
- Frame.infinitival = [{ cat := Slot.Cat.clausal, coding := some NoonanCompType.infinitive, embeddedSubject := some Slot.EmbeddedSubject.obligatorilyNull }]
Instances For
Gerund / nominalized clause.
Equations
- Frame.gerund = [{ cat := Slot.Cat.clausal, coding := some NoonanCompType.nominalized }]
Instances For
Small clause (paratactic coding).
Equations
- Frame.smallClause = [{ cat := Slot.Cat.clausal, coding := some NoonanCompType.paratactic }]
Instances For
Embedded question.
Equations
- Frame.question = [{ cat := Slot.Cat.clausal, clauseForm := some Features.ClauseForm.embeddedQuestion }]
Instances For
The legacy enum view #
The Frame cell of a legacy ComplementType (.none ↦ []).
Equations
- ComplementType.none.toFrame = []
- ComplementType.np.toFrame = Frame.np
- ComplementType.np_np.toFrame = Frame.np_np
- ComplementType.np_pp.toFrame = Frame.np_pp
- ComplementType.finiteClause.toFrame = Frame.finiteClause
- ComplementType.infinitival.toFrame = Frame.infinitival
- ComplementType.gerund.toFrame = Frame.gerund
- ComplementType.smallClause.toFrame = Frame.smallClause
- ComplementType.question.toFrame = Frame.question
Instances For
Partial inverse of ComplementType.toFrame: the legacy enum cell a
frame instantiates, none on frames richer than any cell.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The enum view round-trips over the smart-constructor cells.