Faust (2026): Intrusion as template satisfaction and the QaTaT–QaTa problem in Semitic #
Faust's *Misalignment principle bars a nonfinal root element from the template-final slot. A root whose final radical cannot take a [+consonantal] C-slot then satisfies the template in one of two ways: it leaves the slot vacant, as in Hebrew [kala], or the consonant of the feminine suffix fills it, as in Hebrew [tadmit] and Amharic [fäʤt-o]. The derivations run McCarthy's association conventions with slot specifications that bar glides and vowels from [+c] slots, and the feminine morph, inherent inflection on n, merges only with a nominal base. That gives the distribution of the intruding [t] across the Amharic paradigms, which Broselow's default consonant left unexplained, and the No-Crossing Constraint keeps it out of the hollow verbs.
Main statements #
klj_spread_misaligned: spreading the final consonant of √klj would misalign the root, so the final slot stays vacant.isNonCrossing_melodyLinks_intrude: the intruder's line crosses no root line.rows_surface: the derivations reproduce the squib's paradigms.intruder_distribution: the intruder occurs exactly in the nominal cells of the roots whose final radical is barred.
Implementation notes #
- The derivations run over the squib's transcription.
fragment_rootsshows that its roots, read as segments, are the Hebrew and Amharic fragments' roots, the alternating stops of √kl and √skt realized as stops by Arad's rule. segClasslets a plain C-slot host a glide but no vowel and a [+c] slot only consonants, andmergestates the squib's mergers d + j to ʤ, ä + a to a and ä + i to e.- The medial geminate of the Amharic PFV is prespecified ({C C} in (7)). The suffix consonant
associates to the rightmost vacant C-slot only inside its
Autosegmental.window, and the morph's vowel does not surface, so the affix carries only t. - The squib labels (13c) [mähid] where (12e) and its merger give [mähed], and the rows follow (12e). The IPFV and JUSS, whose templates the squib does not draw, and the PFV of √sma are not derived.
References #
*Misalignment #
Misaligned m holds when some nonfinal root element is associated to the template-final slot,
which *Misalignment (2), (6b) bans.
Equations
- Faust2026.Misaligned m = ∃ a ∈ m.associations, a.source = Morphology.AssocSource.root ∧ m.root.IsNonfinal a.melodyIndex ∧ m.template.isFinalSlot a.slotIndex
Instances For
Lines from the affix tier never misalign the root, since the intruder "is not a radical" ((8), (10)).
Segments, patterns, and association #
Equations
- Faust2026.instDecidableEqSegClass 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.
- Faust2026.instReprSegClass.repr Faust2026.SegClass.glide prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.SegClass.glide")).group prec✝
- Faust2026.instReprSegClass.repr Faust2026.SegClass.vowel prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.SegClass.vowel")).group prec✝
Instances For
Equations
- Faust2026.instReprSegClass = { reprPrec := Faust2026.instReprSegClass.repr }
The glide j and the nonconsonantal radicals a, i of the Amharic hollow roots (12c–e) are barred from [+c] slots; every other segment is a consonant.
Equations
Instances For
merge states the mergers of two elements sharing a slot that the squib names. A glide joined
to the preceding consonant palatalizes it ((7), [fäʤʤ-ä]), and a nonconsonantal radical merges with
the vocalization, /a,ä/ yielding [a] and /i,ä/ yielding [e] (13).
Equations
- Faust2026.merge "d" "j" = "ʤ"
- Faust2026.merge "ä" "a" = "a"
- Faust2026.merge "ä" "i" = "e"
- Faust2026.merge x✝¹ x✝ = x✝¹
Instances For
Equations
- Faust2026.instDecidableEqCategory 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.
- Faust2026.instReprCategory.repr Faust2026.Category.noun prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Category.noun")).group prec✝
- Faust2026.instReprCategory.repr Faust2026.Category.verb prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Category.verb")).group prec✝
Instances For
Equations
- Faust2026.instReprCategory = { reprPrec := Faust2026.instReprCategory.repr }
A pattern is a template with its lexical shape, namely its skeleton, category, vocalization and lines, segmental material outside the skeleton, and the parameters of the squib's derivations.
- template : Morphology.CVTemplate
The skeleton.
- category : Category
The category of the base.
- vocalism : List String
The vocalization and its association lines.
- vocLines : List Morphology.Association
- pre : List String
Segmental material preceding and following the skeleton.
- post : List String
- geminate : Option ℕ
A slot prespecified as geminate ({C C} in (7)).
- joinsGlide : Bool
A barred glide joins the consonant on its left (Amharic (7)) rather than floating (Hebrew (4)).
- truncates : Bool
An unsatisfied final syllable is deleted (7a).
Instances For
The root associated with the C-slots by the conventions, one to one from left to right with the final radical spreading onto leftover slots, plus the pattern's vocalization lines.
Equations
- Faust2026.lines p r = ({ root := r, vocalism := p.vocalism, template := p.template, associations := [] }.associate Morphology.AssocSource.root).link p.vocLines
Instances For
m.Admits a says that the slot's specification admits the segment. A [+c] slot hosts consonants
only ((4), (7), (13)), and a plain C-slot anything but a vowel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The V-slots flanking slot i.
Equations
- Faust2026.flankingV m i = List.filter (fun (s : ℕ) => decide (m.template.slotAt s = some Morphology.CVSlot.V)) [i - 1, i + 1]
Instances For
The vocalization line at slot s.
Equations
- Faust2026.vocAt m s = List.find? (fun (a : Morphology.Association) => a.source == Morphology.AssocSource.vocalism && a.slotIndex == s) m.associations
Instances For
join places a barred root element. A glide joins the slot of the consonant on its left where
the pattern's language does that, Amharic and not Hebrew (7). A nonconsonantal radical merges with
the vocalization on the V-slots flanking its slot, the vocalization element spreading to a flanking
V-slot it did not occupy, so that the merger "occupies the two vocalic positions around the C
position" (13b–c).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Association under the slot specifications removes the rejected lines and joins or merges their elements as the pattern's language allows.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Intrusion #
The consonantal melody of a base merged with a suffix, root elements then the suffix's, in
the coordinates of Autosegmental.IsNonCrossing.
Equations
- Faust2026.melodyLinks m = m.links Morphology.AssocSource.root ∪ Finset.image (fun (p : ℕ × ℕ) => (p.1 + m.root.arity, p.2)) (m.links Morphology.AssocSource.affix)
Instances For
The feminine morph √(a)t merged with the base, its consonant associated to slot s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Intrusion (10b–c) associates the morph's consonant from right to left to the rightmost vacant C-slot, provided that slot lies in its window, so that its line crosses none of the root's; otherwise the consonant floats (13b–c).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Intrusion is template satisfaction without misalignment, since the intruder never misaligns the root ((8), (10)).
The intruder's line never crosses a root line, so intrusion keeps the merged melody non-crossing.
The derivation of a root in a pattern is association under the slot specifications followed, for a nominal base whose template is unsatisfied, by merger of the feminine morph ((10b), (11)).
Equations
- Faust2026.derive p r = if p.category = Faust2026.Category.noun ∧ ¬(Faust2026.associate p r).allCSlotsFilled then Faust2026.intrude (Faust2026.associate p r) else Faust2026.associate p r
Instances For
Only a nominal base merges with the feminine morph (11), so a verbal or adjectival base is realized as associated.
Realization #
hosted m s lists the segments slot s hosts, vocalization first, then root, then affix lines.
Equations
- One or more equations did not get rendered due to their size.
Instances For
realizeSlot m s merges the segments slot s hosts onto the first.
Equations
- Faust2026.realizeSlot m s = match Faust2026.hosted m s with | [] => none | x :: xs => some (List.foldl Faust2026.merge x xs)
Instances For
collapses x l says that the V-slot realized x is followed by a vacant C-slot and a V-slot
realized the same.
Equations
- Faust2026.collapses x ((c, none) :: (Morphology.CVSlot.V, some y) :: tail) = (decide c.IsC && x == y)
- Faust2026.collapses x x✝ = false
Instances For
collapse lists the realized slots in order, V-slots around a vacant C-slot with the same
realization surfacing once, since "the phonological length of these vowels is not translated to
phonetic length" (13). The flag records that the vowel has already been realized.
Equations
- Faust2026.collapse x✝ [] = []
- Faust2026.collapse x✝ ((fst, none) :: tl) = Faust2026.collapse x✝ tl
- Faust2026.collapse true ((Morphology.CVSlot.V, some val) :: tl) = Faust2026.collapse false tl
- Faust2026.collapse x✝ ((s, some x_3) :: tl) = x_3 :: Faust2026.collapse (s == Morphology.CVSlot.V && Faust2026.collapses x_3 tl) tl
Instances For
Truncation (7a) deletes the final syllable, the final C-slot and the V-slot before it, when the pattern truncates and that slot is vacant.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The surface segments of a match in a pattern are the realized slots, a filled prespecified geminate slot counting twice ({C C} in (7)), between the pattern's outer material.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The surface segments of a root in a pattern.
Equations
- Faust2026.surface p r = Faust2026.realize p (Faust2026.derive p r)
Instances For
The surface form as characters, for comparison with a transcription.
Equations
- Faust2026.surfaceChars p r = List.flatMap String.toList (Faust2026.surface p r)
Instances For
The roots, in the squib's transcription #
The root √klt of kalat 'received'.
Equations
- Faust2026.klt = { segments := ["k", "l", "t"] }
Instances For
The root the biradical √kl of kalal 'included'.
Equations
- Faust2026.kl = { segments := ["k", "l"] }
Instances For
The root √klj of kala 'roasted'.
Equations
- Faust2026.klj = { segments := ["k", "l", "j"] }
Instances For
The root the t-final √skt of taskit.
Equations
- Faust2026.skt = { segments := ["s", "k", "t"] }
Instances For
The root Amharic √fdj 'scorch'.
Equations
- Faust2026.fdj = { segments := ["f", "d", "j"] }
Instances For
Modern Hebrew: the QaTaT–QaTa problem (3)–(4) and taQTiL (9)–(10) #
The PST.3MSG template CaCaC[+c] ((3)–(4)), vocalization a,a.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The action-noun template QTiLa (3).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The passive-participle template QaTuL (3).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The resultative nominal template taQTiL[+c] ((9)–(10)) has its fixed ta before the skeleton.
Equations
- One or more equations did not get rendered due to their size.
Instances For
√klt fills CaCaC[+c] radical by radical, and the biradical √kl satisfies it by spreading its final l, QaTaT and never QaQaT, with no misalignment ((3a–b), (1)).
For √klj the [+c] final slot stays vacant; template satisfaction by spreading would yield [kalal] with the nonfinal l template-final, which *Misalignment rules out ((4), (6)).
The final slots of QTiLa and QaTuL are unspecified, so j associates and surfaces (3c).
√dmj leaves the [+c] final slot of taQTiL vacant and spreading would misalign; merged with the feminine morph, whose t associates from the right, the template is satisfied without misalignment (10).
Amharic: (5), (7)–(8), (12)–(13) #
The type A PFV.3MSG stem CäCCäC[+c] ((5), (7)) has its medial C prespecified geminate, its final slot [+c] and the person suffix -ä outside; a barred glide joins the consonant on its left, and an unsatisfied final syllable is truncated (7a).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The GRND stem CäCC[+c] with the subject suffix -o ((5), (8)).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The INF has the prefix mä- and, in Strict CV terms (13), the skeleton CVC[+c]VC[+c] with ä on the second V-slot.
Equations
- One or more equations did not get rendered due to their size.
Instances For
In the PFV the barred j of √fdj joins d at the geminate slot and the final slot stays vacant, with no misalignment; spreading d there would misalign (7).
The biradical √wd satisfies the PFV template by spreading its final d without misalignment and is OCP-clean, while [Bro84]'s √wdd is not (5b).
In the GRND the intruder fills the vacant final slot, satisfying the template without misalignment (8).
All three INF derivations leave a C-slot vacant, but the intruder associates only in (13a), where the vacancy is final; in (13b–c) its line to the medial vacancy would cross the final radical's, so it floats, and no representation is misaligned.
The paradigms (3), (5), (12) and the nouns (9) #
The languages of the rows.
Instances For
Equations
- Faust2026.instDecidableEqLang x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Faust2026.instReprLang = { reprPrec := Faust2026.instReprLang.repr }
Equations
- Faust2026.instReprLang.repr Faust2026.Lang.hebrew prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Lang.hebrew")).group prec✝
- Faust2026.instReprLang.repr Faust2026.Lang.amharic prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Lang.amharic")).group prec✝
Instances For
Equations
- Faust2026.instDecidableEqCell x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Faust2026.instReprCell.repr Faust2026.Cell.pst3msg prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Cell.pst3msg")).group prec✝
- Faust2026.instReprCell.repr Faust2026.Cell.actionNoun prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Cell.actionNoun")).group prec✝
- Faust2026.instReprCell.repr Faust2026.Cell.passPrtc prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Cell.passPrtc")).group prec✝
- Faust2026.instReprCell.repr Faust2026.Cell.pfv prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Cell.pfv")).group prec✝
- Faust2026.instReprCell.repr Faust2026.Cell.ipfv prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Cell.ipfv")).group prec✝
- Faust2026.instReprCell.repr Faust2026.Cell.juss prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Cell.juss")).group prec✝
- Faust2026.instReprCell.repr Faust2026.Cell.grnd prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Cell.grnd")).group prec✝
- Faust2026.instReprCell.repr Faust2026.Cell.inf prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Faust2026.Cell.inf")).group prec✝
Instances For
Equations
- Faust2026.instReprCell = { reprPrec := Faust2026.instReprCell.repr }
The pattern of a cell, for the cells the squib draws.
Equations
- Faust2026.Cell.pst3msg.pattern? = some Faust2026.hebrewPst
- Faust2026.Cell.actionNoun.pattern? = some Faust2026.hebrewQtila
- Faust2026.Cell.passPrtc.pattern? = some Faust2026.hebrewQatul
- Faust2026.Cell.pfv.pattern? = some Faust2026.amharicPfv
- Faust2026.Cell.grnd.pattern? = some Faust2026.amharicGrnd
- Faust2026.Cell.inf.pattern? = some Faust2026.amharicInf
- Faust2026.Cell.ipfv.pattern? = none
- Faust2026.Cell.juss.pattern? = none
Instances For
The cells with a nominal base are the Amharic GRND and INF, whose subjects are marked as possessors (§4.2), and the Hebrew action noun.
Equations
- c.IsNominal = (Option.map Faust2026.Pattern.category c.pattern? = some Faust2026.Category.noun)
Instances For
A paradigm cell of a root.
- lang : Lang
- root : Morphology.ConsonantalRoot String
- cell : Cell
- form : String
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Faust2026.instReprRow = { reprPrec := Faust2026.instReprRow.repr }
A taQTiL noun (9), with its root where the squib identifies it.
- form : String
- gender : Gender
- root : Option (Morphology.ConsonantalRoot String)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Faust2026.instReprNounRow = { reprPrec := Faust2026.instReprNounRow.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Faust2026.langTable = [("hebr1245", Faust2026.Lang.hebrew), ("amha1245", Faust2026.Lang.amharic)]
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
segment l x reads a letter of the squib's transcription of a root of language l as a
segment of that language's fragment.
Equations
- Faust2026.segment Faust2026.Lang.hebrew "k" = Hebrew.Phonology.k
- Faust2026.segment Faust2026.Lang.hebrew "l" = Hebrew.Phonology.l
- Faust2026.segment Faust2026.Lang.hebrew "t" = Hebrew.Phonology.t
- Faust2026.segment Faust2026.Lang.hebrew "j" = Hebrew.Phonology.j
- Faust2026.segment Faust2026.Lang.hebrew "d" = Hebrew.Phonology.d
- Faust2026.segment Faust2026.Lang.hebrew "m" = Hebrew.Phonology.m
- Faust2026.segment Faust2026.Lang.hebrew "g" = Hebrew.Phonology.«ɡ»
- Faust2026.segment Faust2026.Lang.hebrew "r" = Hebrew.Phonology.«ʁ»
- Faust2026.segment Faust2026.Lang.hebrew "s" = Hebrew.Phonology.s
- Faust2026.segment Faust2026.Lang.amharic "s" = Amharic.Phonology.s
- Faust2026.segment Faust2026.Lang.amharic "b" = Amharic.Phonology.b
- Faust2026.segment Faust2026.Lang.amharic "r" = Amharic.Phonology.«ɾ»
- Faust2026.segment Faust2026.Lang.amharic "w" = Amharic.Phonology.w
- Faust2026.segment Faust2026.Lang.amharic "d" = Amharic.Phonology.d
- Faust2026.segment Faust2026.Lang.amharic "f" = Amharic.Phonology.f
- Faust2026.segment Faust2026.Lang.amharic "j" = Amharic.Phonology.j
- Faust2026.segment Faust2026.Lang.amharic "m" = Amharic.Phonology.m
- Faust2026.segment Faust2026.Lang.amharic "a" = Amharic.Phonology.a
- Faust2026.segment Faust2026.Lang.amharic "h" = Amharic.Phonology.h
- Faust2026.segment Faust2026.Lang.amharic "i" = Amharic.Phonology.i
- Faust2026.segment x✝¹ x✝ = ⊥
Instances For
The squib's roots, read as segments, are the fragments' roots, the Hebrew alternating stops of √kl and √skt realized as the stops the squib writes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Faust2026.genderTable = [("masculine", Gender.masculine), ("feminine", Gender.feminine)]
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Faust2026.NounRow.ofDatum ex = do let gender ← ex.parse? "gender" Faust2026.genderTable pure { form := ex.primaryText, gender := gender, root := ex.parse? "root" Faust2026.rootTable }
Instances For
Equations
- Faust2026.rows = List.filterMap Faust2026.Row.ofDatum Faust2026.Examples.all
Instances For
Equations
- Faust2026.nounRows = List.filterMap Faust2026.NounRow.ofDatum Faust2026.Examples.all
Instances For
The surface form the pipeline derives for a row, where its cell has a pattern.
Equations
- r.surface? = Option.map (fun (x : Faust2026.Pattern) => Faust2026.surfaceChars x r.root) r.cell.pattern?
Instances For
The pipeline reproduces every cell of (3), (5), (12) that has a pattern, except the PFV of √sma, where the final radical merges with the suffix vowel.
The final j of √klj surfaces in the action noun and the passive participle and not in the PST.3MSG (3).
A root's final radical is barred from a [+c] slot when it is a glide, as in √klj and √fdj, or a vowel, as in √sma.
Equations
- Faust2026.BarredFinal r = match r.finalSegment with | some x => Faust2026.segClass x ≠ Faust2026.SegClass.consonant | none => False
Instances For
Equations
- One or more equations did not get rendered due to their size.
Across the Amharic paradigms (5) and (12), a nonradical [t] occurs exactly in the nominal cells of the roots whose final radical is barred — the distribution [Bro84]'s default consonant leaves unexplained (§2.2) and the suffix analysis derives (§4.2).
A taQTiL noun whose last consonant is not [t] is masculine (9).
The taQTiL derivation of a noun's root reproduces the noun, and the noun is feminine iff the derivation merged the feminine morph, so [taskit] from t-final √skt is masculine and the nouns from j-final roots feminine (9b).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.