Verb–complementizer selection #
The selection relation between the Verb and Complementizer entry
APIs: which clause-typers a predicate takes. A complement position and a
clause-typer each record a bundle of partial axis values
(ArgumentFrame.Position.Axes) in the flat order, and a position takes a
typer when the two bundles are consistent (Compat) and overlap
(Overlap): some axis both record. One relation, lifted twice: a frame or
verb takes a typer when some complement or frame does. All decidable. A
typer records only the [Noo07] coding and the sentence types it
types, so the relation lives on those two axes (takes_iff_coding_types):
matching needs positive evidence on one of them, a non-clausal position
takes nothing, and the subject-requirement axis is position-side and never
matched.
Main definitions #
Complementizer.axes— the typer's bundleArgumentFrame.Position.typedBy,ArgumentFrame.typedBy— the clausal position and the frame a typer types, given the subject requirement the predicate addsArgumentFrame.Position.Takes,ArgumentFrame.Takes,Verb.Takes— the relation and its liftsVerb.typers— the typers of a verb within an inventory
Main results #
ArgumentFrame.Position.takes_iff— the relation axis by axisArgumentFrame.Position.takes_iff_coding_types— the relation on the two axes a typer recordsComplementizer.compat_axes_iff,Complementizer.overlap_axes_iff— a bundle meets a typer's on the coding and types axes aloneArgumentFrame.Position.typedBy_takes_iff,ArgumentFrame.typedBy_takes_iff— the position or frame one typer types takes another exactly when the two bundles are consistent and overlap;typedBy_takes_self_ifffor the typer itselfArgumentFrame.Position.not_takes_of_blank_left,ArgumentFrame.Position.not_takes_of_blank_right,ArgumentFrame.Position.not_takes_of_not_isClausal— matching needs positive evidence on both sidesArgumentFrame.Position.exists_takes_iff,Verb.not_takes_of_blank— a typer some position takes records a coding or a sentence type, and no verb takes one that records neitherArgumentFrame.Position.takes_of_le— the positive witness in generalArgumentFrame.Position.Takes.mono_of_compat,ArgumentFrame.Position.Takes.of_le_of_overlap— guarded monotonicity under refinement, in both directionsArgumentFrame.Position.Takes.isClausal,ArgumentFrame.Takes.hasClausal,Verb.Takes.takesClausal— taking a typer entails the clausal shape predicatesArgumentFrame.not_takes_smallClause— small clauses take no typerArgumentFrame.finiteClause_takes— the positive witnessArgumentFrame.Takes.mono— monotone under complement extensionVerb.mem_typers— membership in the typer list
Consistency checks against Fragment data live in Studies
(e.g. Bondarenko2022.hanaxa_typers).
References #
Two bundles overlap when some axis is recorded on both.
Equations
- ArgumentFrame.Position.Overlap f g = ∃ (a : ArgumentFrame.Position.Axis), f a ≠ ⊥ ∧ g a ≠ ⊥
Instances For
Equations
- ArgumentFrame.Position.instDecidableOverlap f g = { decide := decide (∃ a ∈ Finset.univ, (fun (_a : ArgumentFrame.Position.Axis) => f _a ≠ ⊥ ∧ g _a ≠ ⊥) a), reflects_decide := ⋯ }
A bundle overlaps itself exactly when it records something.
The axes a clause-typer records: its coding and the sentence types it types; the other axes are a complement position's alone.
Equations
Instances For
A bundle is consistent with a typer's exactly on the coding and types axes.
A bundle overlaps a typer's exactly on the coding and types axes.
The clausal position z types carries z's coding and sentence types, with the
subject requirement s the selecting predicate adds.
Equations
Instances For
The position takes clause-typer z: the two bundles are consistent and
overlap, some axis recorded on both sides. Matching needs positive
evidence, so a typer or position recording nothing — in particular any
non-clausal position — takes nothing.
Instances For
Equations
- ArgumentFrame.Position.instDecidableTakes = { decide := decide (Compat p.axes z.axes) && decide (ArgumentFrame.Position.Overlap p.axes z.axes), reflects_decide := ⋯ }
On the two axes a typer records, coding and types are consistent and one of them is recorded on both sides.
The position z types takes z' exactly when the two typers' bundles are
consistent and overlap; the subject requirement plays no part.
The position z types takes z itself exactly when z records something;
the ← direction is takes_of_le.
A position recording neither shared axis takes nothing.
A typer recording neither axis takes nothing.
A non-clausal position takes nothing: it records no axis a typer does.
A position taking a typer is clausal.
Some position takes a typer exactly when the typer records a coding or a sentence type.
A typer whose bundle lies below the position's, and records something, is taken: the positive witness in general.
Refining a position keeps a typer it takes, as long as the refinement stays consistent with the typer.
Coarsening a position keeps a typer it takes, as long as the coarsening still overlaps the typer.
The frame takes z when some complement does.
Equations
- fr.Takes z = ∃ p ∈ fr.complements, p.Takes z
Instances For
Taking is monotone under complement extension.
A frame taking a typer has a clausal complement.
No frame takes a typer recording neither axis.
Small clauses take no clause-typer.
An indicative typer typing declaratives or nothing recorded takes the finite-clause frame.
The frame a typer types #
The frame whose one complement is the clause z types, with the subject
requirement s: the frame a fragment derives from its complementizer
entry rather than retyping the typer's axes.
Equations
- ArgumentFrame.typedBy z s = { complements := [ArgumentFrame.Position.typedBy z s] }
Instances For
The frame z types takes z' exactly when the two typers' bundles are
consistent and overlap.
The frame z types takes z exactly when z records something.
The verb takes z when some frame does.
Instances For
A verb taking a typer takes a clausal complement.
No verb takes a typer recording neither axis, as a converb suffix records none.
The typers of v within a language's complementizer inventory.
Equations
- v.typers inv = List.filter (fun (x : Complementizer) => decide (v.Takes x)) inv