Head-Filler Schema and SLASH Feature #
@cite{ginzburg-sag-2000} @cite{pollard-sag-1994} @cite{mueller-2013}
HPSG's third combination schema: the Head-Filler Schema handles long-distance dependencies (extraction, wh-movement). A filler XP combines with a sentence containing a gap (SLASH feature) of matching category.
Together with Head-Complement and Head-Subject (in Basic.lean), this completes HPSG's three immediate dominance schemata.
Key types #
SlashValue— the set of categories expected to fill gapsSynsemSlash— extendsSynsemwith SLASHHeadFillerRule— filler combines withS[SLASH {XP}], discharging the gapHPSGSchema— unifies all three schemataTrackedSign— sign paired with its SLASH valueGapRestriction— island constraints via GAP restrictions
Connection to @cite{mueller-2013} #
Müller §2.3: "the formalization of internal Merge and that of the head-filler schema are very similar" — both handle displacement by pairing a moved element with its extraction site.
SLASH features #
The SLASH value: a set of categories for which gaps exist.
In HPSG, SLASH is a set-valued feature on phrases. A phrase with
SLASH {NP} contains an NP gap somewhere inside it. The Head-Filler
schema discharges one element from this set.
Categories of gaps in this phrase
Instances For
Equations
- HPSG.instReprSlashValue = { reprPrec := HPSG.instReprSlashValue.repr }
Equations
- HPSG.instReprSlashValue.repr x✝ prec✝ = Std.Format.bracket "{ " (Std.Format.nil ++ Std.Format.text "gaps" ++ Std.Format.text " := " ++ (Std.Format.nest 8 (repr x✝.gaps)).group) " }"
Instances For
Equations
Instances For
Empty SLASH value (no gaps).
Instances For
Check if SLASH contains a specific category.
Instances For
Remove a category from SLASH (when a gap is filled).
Instances For
Is this SLASH value empty (no gaps)?
Instances For
Union of two SLASH values.
Instances For
Equations
- HPSG.instBEqSlashValue = { beq := fun (a b : HPSG.SlashValue) => a.gaps == b.gaps }
Nominal Category Compatibility #
In HPSG, all nominals share a single head type (noun). Our UD-based system distinguishes NOUN, PRON, and PROPN. For SLASH matching, these are compatible.
Are two categories compatible for SLASH matching? All nominal categories (NOUN, PRON, PROPN) match each other.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Check if SLASH contains a compatible category (using nominal matching).
Equations
- sv.containsCompatible c = sv.gaps.any (HPSG.categoriesMatch c)
Instances For
Discharge a compatible category from SLASH.
Equations
- sv.dischargeCompatible c = match List.findIdx? (HPSG.categoriesMatch c) sv.gaps with | some idx => { gaps := sv.gaps.eraseIdx idx } | none => sv
Instances For
Extended SYNSEM with SLASH #
Extended SYNSEM value including the SLASH feature.
This extends the basic Synsem from HPSG.Basic with nonlocal features.
- local_ : Synsem
Local syntax-semantics features
- slash : SlashValue
Nonlocal SLASH feature (gap set)
Instances For
Equations
- HPSG.instReprSynsemSlash = { reprPrec := HPSG.instReprSynsemSlash.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Get the category from an extended synsem.
Instances For
Head-Filler Schema #
Head-Filler Schema: filler XP combines with a clause containing a gap.
Schema 3:
S
/ \
XP S[SLASH {XP}]
(filler) (head)
The filler's category must match one of the gaps in the head's SLASH set. The result has that gap discharged from SLASH.
- filler : Sign
The filler phrase (the extracted constituent)
- headPhrase : Sign
The head phrase (sentence with a gap)
- headSlash : SlashValue
The SLASH value on the head phrase before combination
- result : Sign
The result phrase
The filler's category matches a gap in the head
- resultSlash : SlashValue
The result has the gap discharged
Instances For
Unified schema type #
All four HPSG immediate dominance schemata, unified.
This inductive covers the complete set of phrase structure schemata needed for HPSG phrase building. @cite{mueller-2013} argues the first three correspond to three universal combination modes; Head-Modifier handles adjunction (relative clauses, adjective/PP modification).
- headComp : HeadCompRule → HPSGSchema
Head-Complement: head combines with complements (Schema 1)
- headSubj : HeadSubjRule → HPSGSchema
Head-Subject: subject combines with head phrase (Schema 2)
- headFiller : HeadFillerRule → HPSGSchema
Head-Filler: filler combines with gapped clause (Schema 3)
- headMod : HeadModRule → HPSGSchema
Head-Modifier: head combines with a modifier (Schema 4)
Instances For
Get the result sign from any schema application.
Equations
Instances For
Get the head sign from any schema application.
Equations
Instances For
Gap Introduction (Argument Realization Principle) #
Per @cite{sag-wasow-bender-2003} Ch. 6, a gap arises when one of a word's ARG-ST elements is realized as GAP rather than COMPS. The GAP value becomes the word's local SLASH contribution.
ARG-ST = SPR ⊕ COMPS ⊕ GAP
A verb with ARG-ST ⟨NP_subj, NP_obj⟩ can realize as:
- Normal: SPR ⟨NP_subj⟩, COMPS ⟨NP_obj⟩, GAP ⟨⟩
- Gapped: SPR ⟨NP_subj⟩, COMPS ⟨⟩, GAP ⟨NP_obj⟩ → SLASH {NP}
Create a gapped version of a word sign: one complement is removed from COMPS and becomes a SLASH element (via GAP).
Returns the gapped sign and the resulting SLASH value.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A sign paired with its SLASH value.
Tracks the nonlocal SLASH feature alongside a locally-typed sign, avoiding modification of the Sign type itself.
- sign : Sign
- slash : SlashValue
Instances For
Equations
- HPSG.instReprTrackedSign = { reprPrec := HPSG.instReprTrackedSign.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
SLASH Amalgamation (Nonlocal Feature Principle) #
@cite{sag-wasow-bender-2003} Ch. 6: In a headed phrase, the mother's SLASH is the union of its daughters' SLASH values, minus any elements discharged by the Head-Filler Schema.
Amalgamate SLASH through Head-Complement: head's SLASH ∪ comp's SLASH.
Equations
Instances For
Amalgamate SLASH through Head-Subject: subject's SLASH ∪ head's SLASH.
Equations
Instances For
The head's category propagates to the result (Head Feature Principle).
In all three schemata, the category of the result phrase equals the category of the head daughter. This is the HPSG analogue of the Minimalist labeling algorithm.
When constructing a HeadFillerRule with the default resultSlash, the gap matching the filler is discharged.
Islands as GAP restrictions #
@cite{hofmeister-sag-2010} argues that island constraints are construction-specific restrictions on the GAP value, not universal Subjacency. This eliminates the need for a separate island module in the grammar.
- Absolute islands:
[GAP ⟨⟩]on the mother — no F-G dependency can penetrate (topicalization, exclamatives) - Weak islands:
[GAP list(NP)]— only NP gaps pass through (e.g., wh-islands allow NP extraction but not PP) - Unrestricted: any GAP value permeates (no island constraint)
GAP restriction on a construction.
This classifies constructions by what kinds of gaps they permit, deriving island effects from the same feature system used for non-island dependencies.
- unrestricted : GapRestriction
- npOnly : GapRestriction
- noGap : GapRestriction
Instances For
Equations
- HPSG.instReprGapRestriction = { reprPrec := HPSG.instReprGapRestriction.repr }
Equations
- One or more equations did not get rendered due to their size.
- HPSG.instReprGapRestriction.repr HPSG.GapRestriction.npOnly prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "HPSG.GapRestriction.npOnly")).group prec✝
- HPSG.instReprGapRestriction.repr HPSG.GapRestriction.noGap prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "HPSG.GapRestriction.noGap")).group prec✝
Instances For
Equations
Equations
- HPSG.instBEqGapRestriction.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Does this GAP restriction block all extraction?
Equations
Instances For
Does this GAP restriction allow NP extraction?
Equations
Instances For
A SLASH value satisfies a GAP restriction if all its gaps are permitted by the restriction.
Equations
Instances For
Empty SLASH always satisfies any restriction.
Object extraction: "What did John see ___?" #
Derivation sketch:
- "see" has COMPS ⟨NP⟩
- Gap complement: COMPS ⟨⟩, SLASH {NP}
- Head-Subject with "John": S[SLASH {NP}]
- Head-Filler with "what": S[SLASH {}] — gap discharged
Full end-to-end derivation: gap introduction → SLASH amalgamation → Head-Filler discharge → empty SLASH.
Islands block SLASH propagation #
When a construction has a GAP restriction of .noGap, no SLASH values
can percolate through it. This blocks extraction from islands.
Example: "*What did John wonder who saw ___?"
- The embedded question "who saw ___" has SLASH {NP}
- But the embedded question construction has [GAP ⟨⟩] (
.noGap) - SLASH cannot pass through → extraction blocked
Check that a SLASH value can propagate through a construction. Returns the SLASH that survives the restriction.
Equations
- HPSG.propagateSlash sv restriction = if sv.satisfiesRestriction restriction = true then sv else HPSG.SlashValue.empty
Instances For
Extraction from a non-island construction always succeeds.