Argument frames #
A predicate's argument frame is its external argument, if any, and its complement positions in order. A position is nominal, adpositional, clausal, implicit or expletive, and carries the axes the predicate selects for: the type of case, in Blake's sense, and the adposition of an adpositional position, Noonan's coding, the sentence types and the subject requirement of a clausal one, and the interpretation of an implicit one. Positions and frames are partially ordered by refinement, so a schematic frame lies below every frame instantiating it.
Main definitions #
ImplicitInterp— the interpretation of an unexpressed argumentArgumentFrame.Position— one argument position, with its selectional axesArgumentFrame.Position.Kind,Position.kind,IsNominal,IsAdpositional,IsClausal,IsExpressed— the category of a positionArgumentFrame.Position.Axis,Axes,Position.axes— the axes a position records, as a bundle of partial values in the flat orderArgumentFrame— external argument and complements, with the refinement orderArgumentFrame.Slot,ArgumentFrame.get?,ArgumentFrame.slots,ArgumentFrame.coreSlots,ArgumentFrame.valency,ArgumentFrame.IsTransitive,ArgumentFrame.argumentRole— the argument slots of a frame and their comparative S/A/P/R/T classificationArgumentFrame.IsIntransitive,ArgumentFrame.HasNominal,ArgumentFrame.HasAdpositional,ArgumentFrame.HasClausal,ArgumentFrame.HasFinite,ArgumentFrame.HasImplicit— shape predicatesArgumentFrame.leaveImplicit— a frame with one complement left unexpressedArgumentFrame.intransitive,ArgumentFrame.np,ArgumentFrame.finiteClause, … — smart constructors
Main results #
ArgumentFrame.Position.le_def,ArgumentFrame.le_def— the refinement orders
Implementation notes #
A position refines another within its kind: p ≤ q when the two are of
one kind and every axis p records, q records with the same value. A
frame's order fixes the external argument and refines the complements
pointwise (List.Forall₂). A frame is the surface clause, its external argument the subject
position, none for a predicate that selects no subject, as an impersonal passive and a raising
predicate; an unaccusative verb's sole argument is its subject, unaccusativity being read off the
verb's diatheses (Verb.IsUnaccusative). The comparative role labels S, A, P, R and T are read
off the frame's coding (ArgumentFrame.argumentRole), never stored. The interpretations of an
implicit argument are Fillmore's and Bruening's, with Levin's understood-object alternations.
Complement-taking is cross-categorial, Noonan's complement-taking predicates including
adjectives and nouns, so ArgumentFrame is not under Verb. Frame-conditioned readings
(attitude, opacity, control) live on Verb.Reading (Syntax/Category/Verb/Defs.lean); the
selection relation between frames and clause-typers (Verb.Takes) in
Syntax/Category/Verb/ArgumentFrame/Takes.lean. Deal's CP-external shell inventory lives
with its consumer in Studies/Deal2026.lean.
References #
The interpretation of an unexpressed argument.
- indef : ImplicitInterp
An existentially bound argument, an unspecified someone or something.
- def : ImplicitInterp
A pragmatically recoverable definite.
- reflexive : ImplicitInterp
Understood as the subject itself (Mary dressed).
- reciprocal : ImplicitInterp
Understood as the subject's members, each of the other (Anne and Cathy met).
- bodyPart : ImplicitInterp
Understood as a body part of the subject (Mary waved).
Instances For
Equations
- instDecidableEqImplicitInterp x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- instFintypeImplicitInterp = { elems := { val := ↑ImplicitInterp.enumList, nodup := ImplicitInterp.enumList_nodup }, complete := instFintypeImplicitInterp._proof_1 }
Equations
- instReprImplicitInterp.repr ImplicitInterp.indef prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ImplicitInterp.indef")).group prec✝
- instReprImplicitInterp.repr ImplicitInterp.def prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ImplicitInterp.def")).group prec✝
- instReprImplicitInterp.repr ImplicitInterp.reflexive prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ImplicitInterp.reflexive")).group prec✝
- instReprImplicitInterp.repr ImplicitInterp.reciprocal prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ImplicitInterp.reciprocal")).group prec✝
- instReprImplicitInterp.repr ImplicitInterp.bodyPart prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ImplicitInterp.bodyPart")).group prec✝
Instances For
Equations
- instReprImplicitInterp = { reprPrec := instReprImplicitInterp.repr }
An argument position of a frame is nominal; adpositional, recording the
type of case marked and the adposition selected; clausal, recording the
coding, the sentence types and the subject requirement
selected; implicit, an unexpressed argument with its interpretation;
or expletive. Every axis is optional, and none or ⊥ is unselective.
- nominal : Position
- adpositional (relation : Option Case.Kind := none) (adposition : Option Adposition := none) : Position
- clausal (coding : Option Complement.Coding := none) (types : Clause.Selection := ⊥) (embeddedSubject : Option Clause.EmbeddedSubject := none) : Position
- implicit (interp : Option ImplicitInterp := none) : Position
- expletive : Position
Instances For
Equations
- One or more equations did not get rendered due to their size.
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.nominal ArgumentFrame.Position.nominal = isTrue ⋯
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.nominal (ArgumentFrame.Position.adpositional relation adposition) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.nominal (ArgumentFrame.Position.clausal coding types embeddedSubject) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.nominal (ArgumentFrame.Position.implicit interp) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.nominal ArgumentFrame.Position.expletive = isFalse ArgumentFrame.instDecidableEqPosition.decEq._proof_6
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.adpositional relation adposition) ArgumentFrame.Position.nominal = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.adpositional relation adposition) (ArgumentFrame.Position.clausal coding types embeddedSubject) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.adpositional relation adposition) (ArgumentFrame.Position.implicit interp) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.adpositional relation adposition) ArgumentFrame.Position.expletive = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.clausal coding types embeddedSubject) ArgumentFrame.Position.nominal = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.clausal coding types embeddedSubject) (ArgumentFrame.Position.adpositional relation adposition) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.clausal coding types embeddedSubject) (ArgumentFrame.Position.implicit interp) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.clausal coding types embeddedSubject) ArgumentFrame.Position.expletive = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.implicit interp) ArgumentFrame.Position.nominal = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.implicit interp) (ArgumentFrame.Position.adpositional relation adposition) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.implicit interp) (ArgumentFrame.Position.clausal coding types embeddedSubject) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.implicit a) (ArgumentFrame.Position.implicit b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq (ArgumentFrame.Position.implicit interp) ArgumentFrame.Position.expletive = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.expletive ArgumentFrame.Position.nominal = isFalse ArgumentFrame.instDecidableEqPosition.decEq._proof_25
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.expletive (ArgumentFrame.Position.adpositional relation adposition) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.expletive (ArgumentFrame.Position.clausal coding types embeddedSubject) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.expletive (ArgumentFrame.Position.implicit interp) = isFalse ⋯
- ArgumentFrame.instDecidableEqPosition.decEq ArgumentFrame.Position.expletive ArgumentFrame.Position.expletive = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ArgumentFrame.instReprPosition = { reprPrec := ArgumentFrame.instReprPosition.repr }
The adpositional position selecting p, with the type of case p marks when it marks
one type.
Equations
Instances For
The position's recorded coding, if clausal.
Equations
- (ArgumentFrame.Position.clausal c types embeddedSubject).coding? = c
- x✝.coding? = none
Instances For
The sentence types the position selects, if clausal; nothing otherwise.
Equations
- (ArgumentFrame.Position.clausal c types embeddedSubject).types = types
- x✝.types = ⊥
Instances For
The position's recorded subject requirement, if clausal.
Equations
- (ArgumentFrame.Position.clausal c types embeddedSubject).embeddedSubject? = embeddedSubject
- x✝.embeddedSubject? = none
Instances For
The position's recorded relation, if adpositional.
Equations
- (ArgumentFrame.Position.adpositional r adposition).relation? = r
- x✝.relation? = none
Instances For
The position's recorded adposition, if adpositional.
Equations
- (ArgumentFrame.Position.adpositional r adposition).adposition? = adposition
- x✝.adposition? = none
Instances For
The position's recorded interpretation, if implicit.
Equations
- (ArgumentFrame.Position.implicit i).interp? = i
- x✝.interp? = none
Instances For
Kind #
Equations
- ArgumentFrame.Position.instDecidableEqKind x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ArgumentFrame.Position.instReprKind = { reprPrec := ArgumentFrame.Position.instReprKind.repr }
The category of the position.
Equations
- ArgumentFrame.Position.nominal.kind = ArgumentFrame.Position.Kind.nominal
- (ArgumentFrame.Position.adpositional relation adposition).kind = ArgumentFrame.Position.Kind.adpositional
- (ArgumentFrame.Position.clausal coding types embeddedSubject).kind = ArgumentFrame.Position.Kind.clausal
- (ArgumentFrame.Position.implicit interp).kind = ArgumentFrame.Position.Kind.implicit
- ArgumentFrame.Position.expletive.kind = ArgumentFrame.Position.Kind.expletive
Instances For
The position is nominal, the core case.
Equations
- p.IsNominal = (p.kind = ArgumentFrame.Position.Kind.nominal)
Instances For
The position is adpositional.
Equations
Instances For
The position is clausal.
Equations
- p.IsClausal = (p.kind = ArgumentFrame.Position.Kind.clausal)
Instances For
The position is expressed when it is nominal, adpositional or clausal.
Equations
- p.IsExpressed = (p.IsNominal ∨ p.IsAdpositional ∨ p.IsClausal)
Instances For
Axes and the refinement order #
Equations
- ArgumentFrame.Position.instDecidableEqAxis x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ArgumentFrame.Position.instReprAxis = { reprPrec := ArgumentFrame.Position.instReprAxis.repr }
The carrier of an axis is a flat slot over the values of an enumerated axis, and a
selection of sentence types for the types axis.
Equations
- ArgumentFrame.Position.Axis.coding.Carrier = Flat Complement.Coding
- ArgumentFrame.Position.Axis.types.Carrier = Clause.Selection
- ArgumentFrame.Position.Axis.embeddedSubject.Carrier = Flat Clause.EmbeddedSubject
- ArgumentFrame.Position.Axis.relation.Carrier = Flat Case.Kind
- ArgumentFrame.Position.Axis.adposition.Carrier = Flat Adposition
- ArgumentFrame.Position.Axis.interp.Carrier = Flat ImplicitInterp
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ArgumentFrame.Position.instDecidableEqCarrier ArgumentFrame.Position.Axis.coding = ArgumentFrame.Position.instDecidableEqCarrier._aux_1
- ArgumentFrame.Position.instDecidableEqCarrier ArgumentFrame.Position.Axis.types = ArgumentFrame.Position.instDecidableEqCarrier._aux_3
- ArgumentFrame.Position.instDecidableEqCarrier ArgumentFrame.Position.Axis.embeddedSubject = ArgumentFrame.Position.instDecidableEqCarrier._aux_5
- ArgumentFrame.Position.instDecidableEqCarrier ArgumentFrame.Position.Axis.relation = ArgumentFrame.Position.instDecidableEqCarrier._aux_7
- ArgumentFrame.Position.instDecidableEqCarrier ArgumentFrame.Position.Axis.adposition = ArgumentFrame.Position.instDecidableEqCarrier._aux_9
- ArgumentFrame.Position.instDecidableEqCarrier ArgumentFrame.Position.Axis.interp = ArgumentFrame.Position.instDecidableEqCarrier._aux_11
Equations
- ArgumentFrame.Position.instDecidableLECarrier ArgumentFrame.Position.Axis.coding = ArgumentFrame.Position.instDecidableLECarrier._aux_1
- ArgumentFrame.Position.instDecidableLECarrier ArgumentFrame.Position.Axis.types = ArgumentFrame.Position.instDecidableLECarrier._aux_3
- ArgumentFrame.Position.instDecidableLECarrier ArgumentFrame.Position.Axis.embeddedSubject = ArgumentFrame.Position.instDecidableLECarrier._aux_5
- ArgumentFrame.Position.instDecidableLECarrier ArgumentFrame.Position.Axis.relation = ArgumentFrame.Position.instDecidableLECarrier._aux_7
- ArgumentFrame.Position.instDecidableLECarrier ArgumentFrame.Position.Axis.adposition = ArgumentFrame.Position.instDecidableLECarrier._aux_9
- ArgumentFrame.Position.instDecidableLECarrier ArgumentFrame.Position.Axis.interp = ArgumentFrame.Position.instDecidableLECarrier._aux_11
A bundle of partial axis values, ordered pointwise by extension, so that unification is
PartialUnify.unify and consistency is Compat.
Equations
- ArgumentFrame.Position.Axes = ((a : ArgumentFrame.Position.Axis) → a.Carrier)
Instances For
The axes the position records.
Equations
- p.axes ArgumentFrame.Position.Axis.coding = p.coding?
- p.axes ArgumentFrame.Position.Axis.types = p.types
- p.axes ArgumentFrame.Position.Axis.embeddedSubject = p.embeddedSubject?
- p.axes ArgumentFrame.Position.Axis.relation = p.relation?
- p.axes ArgumentFrame.Position.Axis.adposition = p.adposition?
- p.axes ArgumentFrame.Position.Axis.interp = p.interp?
Instances For
A position refines another, p ≤ q, when the two are of one kind and every axis p
records, q records with the same value.
Equations
- One or more equations did not get rendered due to their size.
Equations
- p.instDecidableLE q = { decide := decide (p.kind = q.kind) && decide (∀ (a : ArgumentFrame.Position.Axis), p.axes a ≤ q.axes a), reflects_decide := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instReprArgumentFrame = { reprPrec := instReprArgumentFrame.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
A frame refines another when it has the same external argument and complements refined pointwise.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Slots #
An argument slot of a frame is the external argument or the i-th complement.
Instances For
Equations
- ArgumentFrame.instDecidableEqSlot.decEq ArgumentFrame.Slot.external ArgumentFrame.Slot.external = isTrue ⋯
- ArgumentFrame.instDecidableEqSlot.decEq ArgumentFrame.Slot.external (ArgumentFrame.Slot.complement i) = isFalse ⋯
- ArgumentFrame.instDecidableEqSlot.decEq (ArgumentFrame.Slot.complement i) ArgumentFrame.Slot.external = isFalse ⋯
- ArgumentFrame.instDecidableEqSlot.decEq (ArgumentFrame.Slot.complement a) (ArgumentFrame.Slot.complement b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ArgumentFrame.instReprSlot = { reprPrec := ArgumentFrame.instReprSlot.repr }
The position at a slot.
Equations
- fr.get? ArgumentFrame.Slot.external = fr.external
- fr.get? (ArgumentFrame.Slot.complement i) = fr.complements[i]?
Instances For
The filled slots, external first.
Equations
- fr.slots = (Option.map (fun (x : ArgumentFrame.Position) => ArgumentFrame.Slot.external) fr.external).toList ++ List.map ArgumentFrame.Slot.complement (List.range fr.complements.length)
Instances For
The core argument slots are those realized as nominals.
Equations
- fr.coreSlots = List.filter (fun (s : ArgumentFrame.Slot) => Option.any (fun (p : ArgumentFrame.Position) => decide p.IsNominal) (fr.get? s)) fr.slots
Instances For
The number of core arguments.
Instances For
A frame is transitive when it has two or more core arguments.
Equations
- fr.IsTransitive = (2 ≤ fr.valency)
Instances For
Equations
- fr.instDecidableIsTransitive = { decide := Nat.ble 2 fr.valency, reflects_decide := ⋯ }
The core objects are the core complements.
Equations
- fr.coreObjects = List.filter (fun (x : ArgumentFrame.Slot) => x != ArgumentFrame.Slot.external) fr.coreSlots
Instances For
The comparative argument role of a core slot is read off its coding. A nominal subject is S without a core object and A with one, a sole core object is P, and of two core objects the first is R and the second T.
Equations
- One or more equations did not get rendered due to their size.
- fr.argumentRole ArgumentFrame.Slot.external = if ArgumentFrame.Slot.external ∈ fr.coreSlots then some (if fr.coreObjects = [] then ArgumentRole.S else ArgumentRole.A) else none
Instances For
The slot object entailments sit on is the last core object, the sole object of a monotransitive and the second object of a double-object frame.
Equations
- fr.objectSlot? = fr.coreObjects.getLast?
Instances For
Shape predicates #
Some complement of the frame is nominal.
Equations
- fr.HasNominal = ∃ p ∈ fr.complements, p.IsNominal
Instances For
Equations
Some complement of the frame is adpositional.
Equations
- fr.HasAdpositional = ∃ p ∈ fr.complements, p.IsAdpositional
Instances For
Some complement of the frame is clausal.
Equations
- fr.HasClausal = ∃ p ∈ fr.complements, p.IsClausal
Instances For
Equations
Some complement of the frame is a finite clause.
Equations
- fr.HasFinite = ∃ p ∈ fr.complements, p.IsFinite
Instances For
Equations
Some complement of the frame is implicit, an argument left unexpressed.
Equations
- fr.HasImplicit = ∃ p ∈ fr.complements, p.kind = ArgumentFrame.Position.Kind.implicit
Instances For
Equations
The frame with its i-th complement left unexpressed, interpreted as a.
Equations
- fr.leaveImplicit i a = { external := fr.external, complements := fr.complements.set i (ArgumentFrame.Position.implicit a) }
Instances For
The [Noo07] codings recorded across the frame's complements.
Equations
- fr.codings = List.filterMap (fun (x : ArgumentFrame.Position) => x.coding?) fr.complements
Instances For
Some complement of the frame selects the sentence type t.
Equations
- fr.hasType t = ∃ p ∈ fr.complements, t ∈ p.types
Instances For
Equations
Smart constructors #
The intransitive frame has an external argument and no complement.
Equations
- ArgumentFrame.intransitive = { complements := [] }
Instances For
The impersonal frame has an expletive subject and no complement.
Equations
- ArgumentFrame.impersonal = { external := some ArgumentFrame.Position.expletive, complements := [] }
Instances For
The transitive frame has one nominal complement.
Equations
- ArgumentFrame.np = { complements := [ArgumentFrame.Position.nominal] }
Instances For
The object-drop frame is the transitive frame with its object left unexpressed, with
interpretation a.
Equations
Instances For
The double-object frame has two nominal complements.
Equations
- ArgumentFrame.np_np = { complements := [ArgumentFrame.Position.nominal, ArgumentFrame.Position.nominal] }
Instances For
The PP frame has one adpositional complement, selecting p when given, with the type of
case p marks when it marks one type.
Equations
- ArgumentFrame.pp p = { complements := [ArgumentFrame.Position.adpositional (p.bind Adposition.kind?) p] }
Instances For
The spatial PP frame has one spatial adpositional complement, whatever its adposition, as the locative or directional phrase a verb of motion selects.
Equations
- ArgumentFrame.spatialPP = { complements := [ArgumentFrame.Position.adpositional (some Case.Kind.spatial)] }
Instances For
The NP + PP frame has a nominal plus an adpositional complement, selecting p
when given, with the type of case p marks when it marks one type.
Equations
- ArgumentFrame.np_pp p = { complements := [ArgumentFrame.Position.nominal, ArgumentFrame.Position.adpositional (p.bind Adposition.kind?) p] }
Instances For
Finite declarative clause.
Equations
Instances For
Finite declarative clause in the subjunctive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Infinitival clause. The embedded-subject requirement varies by verb (equi-deletion, raising, or adposition-marked overt subjects, [Noo07] §1.3.4), so it lives on the verb's reading, not here.
Equations
- ArgumentFrame.infinitival = { complements := [ArgumentFrame.Position.clausal (some Complement.Coding.infinitive)] }
Instances For
The raising frame has an infinitival clause and no external argument.
Equations
- ArgumentFrame.raising = { external := none, complements := [ArgumentFrame.Position.clausal (some Complement.Coding.infinitive)] }
Instances For
Gerund / nominalized clause.
Equations
- ArgumentFrame.gerund = { complements := [ArgumentFrame.Position.clausal (some Complement.Coding.nominalized)] }
Instances For
Small clause (consider X happy; causative make X leave). Outside [Noo07]'s coding inventory, which classifies complements by the part of speech of their predicate, so the position records nothing.
Equations
- ArgumentFrame.smallClause = { complements := [ArgumentFrame.Position.clausal] }
Instances For
The frame of an embedded question. The sentence type is orthogonal to the
[Noo07] coding, so coding stays none.
Equations
- ArgumentFrame.question = { complements := [ArgumentFrame.Position.clausal none Clause.Selection.interrogatives] }