Stojković (2026): Same Form, Different Grammars: The Slavic [ov]~[u] Alternation #
This file formalizes Stojković's account of the Slavic verbalizer, the suffix of verbs derived from nouns and adjectives. The suffix is [u] before the theme /-je-/ and a vowel followed by [v] before the theme /-a-/, where the languages fall into three groups: [ov] throughout, [ov] alternating with [ev] after a palatal, and [uv] throughout.
Stojković gives the suffix one underlying form in every language, a defective diphthong whose
first base node has no features and whose second is high and back but neither vowel nor
consonant. A candidate leaves that form as it is, deletes the empty node and makes the second a
vowel, or fills the empty node and makes the second [v]. A candidate here is its string of
segments with its correspondence to the input, and every constraint is computed from the two.
One ranking per group then gives [u] before /-je-/ and the group's vowel before /-a-/
(optimal_eq), and for every variety of the paper's Tables 1 and 2 exactly one of the three
rankings generates all of its forms (existsUnique_generates), the Bulgarian and Macedonian
present in [uv] included, since its theme is /-a-/.
Main results #
optimal_eq: the winner of each group's ranking in each context.image_pattern: the factorial typology of the variable constraints, the paper's (31).existsUnique_generates: each variety's forms single out its group.uv_bounds_ov: over the paper's own constraints [uv] harmonically bounds [ov].
Implementation notes #
The paper states MAX and DEP over the morphemic and phonetic structures of Containment Theory. They are rendered as the correspondence constraints that count input nodes without a correspondent and corresponding pairs whose output has a feature value its input lacks. The candidates are the paper's; a deleted node with [v], which it sets aside, is not among them. A front vowel shares the [−back] of a palatal and so is a candidate only after one.
TODO #
The paper's tableaux never penalize the epenthesis of [+high], so that over its constraints
[uv] does at least as well as [ov] everywhere and better on DEP[−high] (uv_bounds_ov), and
its typology (31) cannot be derived from them (image_pattern_of_paperFamilies). The paper
attributes the [o] of the first two groups to the markedness of [+high]; that preference is
made a constraint here, DEP[+high], ranked where each group needs it. The paper's tableau (28)
also marks [iv] for DEP[+back], which its representation of [iv] with a shared [−back] does not
support and which changes no outcome.
References #
Segments #
The first base node of the verbalizer, which has no features.
Equations
Instances For
The second base node of the verbalizer, high and back but neither vowel nor consonant.
Equations
- Stojkovic2026.glide₀ = Phonology.Segment.ofSpecs [(Phonology.Feature.high, true), (Phonology.Feature.back, true)]
Instances For
The consonant [v], the second node as a consonant.
Equations
- Stojkovic2026.v = Phonology.Segment.ofSpecs [(Phonology.Feature.syllabic, false), (Phonology.Feature.consonantal, true), (Phonology.Feature.high, true), (Phonology.Feature.back, true)]
Instances For
vowel back high is the vowel with the given backness and height, one of [o], [u], [e]
and [i].
Equations
- One or more equations did not get rendered due to their size.
Instances For
Contexts and candidates #
The stem-final consonant before the verbalizer is plain or palatal.
Instances For
Equations
- Stojkovic2026.instDecidableEqStemFinal 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
- Stojkovic2026.instReprStemFinal = { reprPrec := Stojkovic2026.instReprStemFinal.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
The theme after the verbalizer is /-a-/ or /-je-/.
Instances For
Equations
- Stojkovic2026.instDecidableEqTheme x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Stojkovic2026.instFintypeTheme = { elems := { val := ↑Stojkovic2026.Theme.enumList, nodup := Stojkovic2026.Theme.enumList_nodup }, complete := Stojkovic2026.instFintypeTheme._proof_1 }
Equations
- Stojkovic2026.instReprTheme = { reprPrec := Stojkovic2026.instReprTheme.repr }
Equations
- Stojkovic2026.instReprTheme.repr Stojkovic2026.Theme.a prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Stojkovic2026.Theme.a")).group prec✝
- Stojkovic2026.instReprTheme.repr Stojkovic2026.Theme.je prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Stojkovic2026.Theme.je")).group prec✝
Instances For
A plain consonant has no backness, and a palatal is [−back].
Equations
- One or more equations did not get rendered due to their size.
- Stojkovic2026.StemFinal.plain.segment = Phonology.Segment.ofSpecs [(Phonology.Feature.syllabic, false), (Phonology.Feature.consonantal, true), (Phonology.Feature.high, false)]
Instances For
The first segment of a theme, the vowel [a] or the glide [j].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A context is the stem-final consonant before the verbalizer and the theme after it.
Instances For
Equations
- Stojkovic2026.instDecidableEqContext.decEq { stemFinal := a, theme := a_1 } { stemFinal := b, theme := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
Equations
- Stojkovic2026.instFintypeContext = Fintype.ofEquiv ((_ : Stojkovic2026.StemFinal) × Stojkovic2026.Theme) Stojkovic2026.Context.proxyTypeEquiv
Equations
- Stojkovic2026.instReprContext = { reprPrec := Stojkovic2026.instReprContext.repr }
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.
- Stojkovic2026.instDecidableEqCandidate.decEq Stojkovic2026.Candidate.faithful Stojkovic2026.Candidate.faithful = isTrue ⋯
- Stojkovic2026.instDecidableEqCandidate.decEq Stojkovic2026.Candidate.faithful Stojkovic2026.Candidate.delete = isFalse Stojkovic2026.instDecidableEqCandidate.decEq._proof_3
- Stojkovic2026.instDecidableEqCandidate.decEq Stojkovic2026.Candidate.faithful (Stojkovic2026.Candidate.fill back high) = isFalse ⋯
- Stojkovic2026.instDecidableEqCandidate.decEq Stojkovic2026.Candidate.delete Stojkovic2026.Candidate.faithful = isFalse Stojkovic2026.instDecidableEqCandidate.decEq._proof_5
- Stojkovic2026.instDecidableEqCandidate.decEq Stojkovic2026.Candidate.delete Stojkovic2026.Candidate.delete = isTrue ⋯
- Stojkovic2026.instDecidableEqCandidate.decEq Stojkovic2026.Candidate.delete (Stojkovic2026.Candidate.fill back high) = isFalse ⋯
- Stojkovic2026.instDecidableEqCandidate.decEq (Stojkovic2026.Candidate.fill back high) Stojkovic2026.Candidate.faithful = isFalse ⋯
- Stojkovic2026.instDecidableEqCandidate.decEq (Stojkovic2026.Candidate.fill back high) Stojkovic2026.Candidate.delete = isFalse ⋯
Instances For
Equations
- Stojkovic2026.instFintypeCandidate = Fintype.ofEquiv (Unit ⊕ Unit ⊕ (_ : Bool) × Bool) Stojkovic2026.Candidate.proxyTypeEquiv
Equations
- Stojkovic2026.instReprCandidate = { reprPrec := Stojkovic2026.instReprCandidate.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
The input is the stem-final consonant, the two nodes of the verbalizer, and the theme.
Equations
Instances For
output c k is the string of segments of the candidate k.
Equations
- Stojkovic2026.output c Stojkovic2026.Candidate.faithful = Stojkovic2026.input c
- Stojkovic2026.output c Stojkovic2026.Candidate.delete = [c.stemFinal.segment, Stojkovic2026.vowel true true, c.theme.segment]
- Stojkovic2026.output c (Stojkovic2026.Candidate.fill a a_1) = [c.stemFinal.segment, Stojkovic2026.vowel a a_1, Stojkovic2026.v, c.theme.segment]
Instances For
corr c k is the correspondence of the candidate k to the input, a deletion of the empty
node for delete and position by position for the others.
Equations
Instances For
The candidates of a context. A front vowel is a candidate only after a palatal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constraints #
NOHIATUS counts the adjacent vowels of the output.
Equations
Instances For
SPECIFY counts the output nodes that have no features.
Equations
- Stojkovic2026.specify c k = List.count Stojkovic2026.node₀ (Stojkovic2026.output c k)
Instances For
MAX counts the input nodes that have no correspondent in the output.
Equations
Instances For
dep f val counts the corresponding pairs whose output has the value val of the feature
f and whose input lacks it, the epenthesis of that value.
Equations
- One or more equations did not get rendered due to their size.
Instances For
DEP[+back].
Equations
Instances For
DEP[−high].
Equations
Instances For
DEP[+high].
Equations
Instances For
A ranking of constraints that vary across the groups, completed by the undominated NOHIATUS and SPECIFY above them and MAX below.
Equations
- One or more equations did not get rendered due to their size.
Instances For
optimal c vs is the set of winners in the context c under the ranking vs.
Equations
Instances For
The three groups #
Equations
- Stojkovic2026.instDecidableEqGroup x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Stojkovic2026.instFintypeGroup = { elems := { val := ↑Stojkovic2026.Group.enumList, nodup := Stojkovic2026.Group.enumList_nodup }, complete := Stojkovic2026.instFintypeGroup._proof_1 }
Equations
- Stojkovic2026.instReprGroup = { reprPrec := Stojkovic2026.instReprGroup.repr }
Equations
- Stojkovic2026.instReprGroup.repr Stojkovic2026.Group.ov prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Stojkovic2026.Group.ov")).group prec✝
- Stojkovic2026.instReprGroup.repr Stojkovic2026.Group.ovEv prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Stojkovic2026.Group.ovEv")).group prec✝
- Stojkovic2026.instReprGroup.repr Stojkovic2026.Group.uv prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Stojkovic2026.Group.uv")).group prec✝
Instances For
The rankings of the paper's (17), (21) and (29), with DEP[+high] added.
Equations
- Stojkovic2026.Group.ov.ranking = [Stojkovic2026.noShare, Stojkovic2026.depHigh, Stojkovic2026.depBack, Stojkovic2026.depNonhigh]
- Stojkovic2026.Group.ovEv.ranking = [Stojkovic2026.depBack, Stojkovic2026.depHigh, Stojkovic2026.noShare, Stojkovic2026.depNonhigh]
- Stojkovic2026.Group.uv.ranking = [Stojkovic2026.depNonhigh, Stojkovic2026.noShare, Stojkovic2026.depBack, Stojkovic2026.depHigh]
Instances For
g.form c is the verbalizer of the group g in the context c. It is [u] before /-je-/,
and before /-a-/ the group's vowel with [v], the vowel of the middle group being front after a
palatal.
Equations
- One or more equations did not get rendered due to their size.
- g.form { stemFinal := stemFinal, theme := Stojkovic2026.Theme.je } = Stojkovic2026.Candidate.delete
Instances For
The paper's constraints #
The paper's constraints, without DEP[+high].
Equations
Instances For
Over the paper's constraints [uv] does at least as well as [ov] on every constraint and better on DEP[−high], before /-a-/.
No ranking of the paper's constraints gives [ov], since [uv] harmonically bounds it.
Factorial typology #
pattern vs is the pair of winners before /-a-/ under the ranking vs, after a plain
consonant and after a palatal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The rankings of the four variable constraints derive exactly the four patterns of the paper's (31): [ov] throughout, [ov] with [ev], [uv] throughout, and [uv] with [iv], which no Slavic language is known to show.
The rankings of the paper's three variable constraints derive only the two patterns with [uv].
The forms of Tables 1 and 2 #
The letter that writes a vowel of the verbalizer or its [v].
Equations
- One or more equations did not get rendered due to their size.
Instances For
spelling c k writes the segments of the verbalizer in the candidate k.
Equations
- Stojkovic2026.spelling c k = String.ofList (List.filterMap Stojkovic2026.letter? (List.drop 1 (Stojkovic2026.output c k)).dropLast)
Instances For
The verbalizer a form is written with. Belarusian writes the reduced vowel of [ov] as a, and the paper takes it to be /o/.
Equations
- Stojkovic2026.verbalizer? f = Option.map (fun (s : String) => if f.lexeme.variety = "Belarusian" ∧ s = "av" then "ov" else s) f.morphs[1]?
Instances For
A group generates a form when the form is written with the group's verbalizer for its context.
Equations
- Stojkovic2026.Generates g a = ∃ c ∈ Stojkovic2026.context? a, Stojkovic2026.verbalizer? a.form = some (Stojkovic2026.spelling c (g.form c))
Instances For
Equations
The varieties of the two tables.
Equations
- Stojkovic2026.varieties = (List.map (fun (x : Data.Forms.Lexeme) => x.variety) Stojkovic2026.Forms.lexemes).dedup
Instances For
The analysed forms of a variety.
Equations
- Stojkovic2026.formsOf variety = List.filter (fun (x : Stojkovic2026.Forms.Analysis) => decide (x.form.lexeme.variety = variety)) Stojkovic2026.Forms.analyses
Instances For
For every variety exactly one group generates all of its forms, the infinitive-stem forms after a plain and after a palatal root and the present forms alike. The Bulgarian and Macedonian present in [uv] needs no separate statement, since its theme is /-a-/.