Lionnet (2025): Tonal languages without tone #
This file formalizes [Lio25]'s analysis of the word prosody of Drubea and Numèè
(Oceanic, New Caledonia) as register features alone: an underlying downstep l on the
mora, a postlexical epenthetic upstep h, and boundary features, with no tone feature.
The stems of the two fragments carry only downsteps (stems_register_only), at most one
per stem (stems_culminative, Rivierre's culminativity) though not per compound
(compounds_not_culminative), and their tiers are exactly the three stem patterns ∅, l,
∅l associated by the syllabic alignment of Table 4 (stems_patterned), the loanwords of
(54) being the one exception (loans_unpatterned). The alignment predicts that a
syllable-internal downstep occurs only in monosyllables (associate_syllable_initial);
the CVꜜV monosyllables are what makes the mora, not the syllable, the register-bearing
unit (mora_is_rbu).
The postlexical derivation is downstep displacement (§4.6), the boundary features h% of
Drubea and l% of Numèè (§4.8), and pre-downstep h-epenthesis (§4.4), realized by terracing
from the baseline with the utterance-initial downstep unrealized (§4.5). Each is a
Subregular.Docking process over the tier with its syllable boundaries written in, and
each but the spreading variant of h-epenthesis has a quantifier-free guard
([CJ19]): displacement is spreading then delinking, both one step across a
boundary; raising reads the next mora and, the syllables being at most bimoraic, one mora
back within its own; the boundary features read the last two syllables. The realization
reproduces Rivierre's pitch levels where he transcribes whole steps ((11), (19), (20),
(24), (26), (30), (38), (53)) and, for every transcribed utterance, the direction of each
step between syllables (rows_signs); the double downstep of (25), (52) and (53b) is a
second l on one mora. Lionnet's rephrasing of [Leb18b]'s definitional properties of
downstep and his placement of Drubea in [Hym06]'s typology — tonal by definition (3)
but without stress accent, culminative in register while neither obligatory nor
syllable-dependent (drubea_tonal, drubea_not_stressAccent) — close the file.
Implementation notes #
- Shifts are unit steps, so the realization is ordinal: the source's half steps and the larger drops it transcribes after a raised syllable ((13b), (32), (62)), Rivierre's observation that raising rarely compensates the lowering, are not derived. The joins with the rows compare the sign of each step between syllables, a syllable's level being that of its last mora, over the tokens the source levels.
- Displacement and h-epenthesis are optional in the source; each derivation applies the steps its surface transcription shows. H-epenthesis targets a registerless mora before a downstep unless the mora's own syllable is downstepped before it, which is what keeps /ꜜgoo/ at the baseline in (33) and /ꜜɳii/ unraised in (12). Spreading h-epenthesis ((16)) and the lh contour on a downstepped mora ((18), (63)) are stated on their own.
- The quantifier-free processes are relabelling transductions over the register alphabet
(
Transduction.apply_relabel) and depend boundedly on both sides (raising_boundedDependence); spreading h-epenthesis has no quantifier-free guard (spreading_not_qf). - The comparison with a tonal alternative (§5) is prose and is not represented.
References #
The weight a syllable contributes: its mora count.
Equations
Instances For
Stem patterns (§4.2, Tables 2–4) #
The three stem-level register patterns: no l, an l on the first syllable, an l
after a registerless syllable.
- empty : StemPattern
- l : StemPattern
- emptyL : StemPattern
Instances For
Equations
- Lionnet2025.instDecidableEqStemPattern 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.
A tier of registerless morae.
Equations
- Lionnet2025.registerless shape = List.flatMap (fun (n : ℕ) => List.replicate n []) shape
Instances For
The tier a pattern associates to a stem shape (Table 4): l on the leftmost mora of the
first syllable, or of the second syllable, or — in a monosyllable, for lack of a second
syllable — on its second mora; nothing when the shape has no mora for it.
Equations
- Lionnet2025.StemPattern.empty.associate x✝ = some (Lionnet2025.registerless x✝)
- Lionnet2025.StemPattern.l.associate [] = none
- Lionnet2025.StemPattern.l.associate (n :: rest) = some ([Tone.TRN.downstep] :: Lionnet2025.registerless ((n - 1) :: rest))
- Lionnet2025.StemPattern.emptyL.associate [] = none
- Lionnet2025.StemPattern.emptyL.associate [n] = if 2 ≤ n then some ([] :: [Tone.TRN.downstep] :: Lionnet2025.registerless [n - 2]) else none
- Lionnet2025.StemPattern.emptyL.associate (n :: m :: rest) = some (Lionnet2025.registerless [n] ++ [Tone.TRN.downstep] :: Lionnet2025.registerless ((m - 1) :: rest))
Instances For
Every native stem of Drubea bears one of the three patterns.
So does every stem of Numèè.
The loanwords of (54), CVꜜV.CV(V), bear none: Table 3's mapping (b), attested in recent loans only.
The prediction of §4.2: on a stem of two or more syllables, every pattern puts its l on
a syllable-initial mora, a boundary of the syllabification. Syllable-internal downstep is
confined to monosyllables.
Culminativity, register-only inventories, and the register-bearing unit #
Register culminativity (§3.8, §3.10): at most one downstep per stem.
Equations
- Lionnet2025.IsCulminative r = ((Tone.RegisterTier.bearing Tone.TRN.downstep r.tier).length ≤ 1)
Instances For
Equations
- Lionnet2025.instDecidableIsCulminative r = { decide := (Tone.RegisterTier.bearing Tone.TRN.downstep r.tier).length.ble 1, reflects_decide := ⋯ }
/koꜜo·ꜜmwa/ 'mound' ((55a)), field·house.
Equations
Instances For
/ꜜʊʊ·ũ·pooꜜka/ 'blanket' ((55b)), mat·hair·animal.
Equations
Instances For
/ꜜko·ꜜvuu-ɽe/ 'voice, language' ((55c)), manner·speak-ACT.
Equations
Instances For
Culminativity holds of the stem, not of the morphological word: each compound of (55) carries the downsteps of its members.
No stem specifies [upper]: the first attested register-only word-prosodic system
(§6.2).
The two morae of the one syllable of /beꜜe/ differ in register, so the register-bearing unit is the mora, not the syllable (§3.7, §4.2).
Hyman's typology (§6.2) #
The native stems of Drubea.
Equations
- Lionnet2025.Stem = { s : Tone.Registered Prosody.Syllable // s ∈ Drubea.stems }
Instances For
The downstep as a marking of morae: on each stem, the morae bearing l, assigned by
mora.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The downstep is culminative: at most one per stem.
It is not obligatory: /kuɽe/ 'forest' has none.
Neither of Hyman's inviolable criteria of stress accent holds: the register-bearing unit is the mora and the downstep is not obligatory.
The indication of pitch a stem carries: its tier, when a downstep is in it.
Equations
- Lionnet2025.pitch s = if Tone.RegisterTier.bearing Tone.TRN.downstep (↑s).tier = [] then none else some (↑s).tier
Instances For
Tonal by Hyman's definition (3): pitch enters the lexical realization of /ꜜkuɽe/ 'end'.
The postlexical derivation #
The processes act on the tier with its syllabification written in: a boundary before each syllable's morae.
A slot of the marked tier: a mora's nodes, or a syllable boundary.
Equations
- Lionnet2025.Slot = Option (List Tone.TRN)
Instances For
The tier of a word with a boundary before each syllable.
Equations
- Lionnet2025.marked r = List.flatMap (fun (ms : List (List Tone.TRN)) => none :: List.map some ms) (Tone.Registered.syllableNodes Lionnet2025.μ r)
Instances For
Unmarking undoes marking on an aligned word.
The register alphabet of the derivations: a boundary, a registerless mora, a downstep,
a double downstep, an upstep, and the lh contour.
Equations
- Lionnet2025.alphabet = [none, some [], some [Tone.TRN.downstep], some [Tone.TRN.downstep, Tone.TRN.downstep], some [Tone.TRN.upstep], some [Tone.TRN.downstep, Tone.TRN.upstep]]
Instances For
The position variable.
Equations
Instances For
t reads a syllable boundary.
Equations
- Lionnet2025.bar t = Subregular.WindowFormula.label none t
Instances For
t reads a registerless mora.
Equations
- Lionnet2025.empty t = Subregular.WindowFormula.label (some []) t
Instances For
t reads a mora bearing a downstep, single or double.
Equations
- Lionnet2025.bearsL t = (Subregular.WindowFormula.label (some [Tone.TRN.downstep]) t).disj (Subregular.WindowFormula.label (some [Tone.TRN.downstep, Tone.TRN.downstep]) t)
Instances For
The next mora, across a boundary if there is one, bears a downstep.
Equations
Instances For
A node appended to a mora.
Equations
- Lionnet2025.append t = Option.map fun (x : List Tone.TRN) => x ++ [t]
Instances For
Pre-downstep h-epenthesis (§4.4): a registerless mora before a downstepped one takes h,
unless its own syllable is downstepped before it — one mora back, the syllables being at
most bimoraic.
Equations
Instances For
Pre-downstep h-epenthesis as a process.
Equations
Instances For
Spreading h-epenthesis ((16)): every registerless mora of the stretch before a downstep
takes h. The look-ahead is unbounded, so the guard is not quantifier-free.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Utterance-initial neutralisation (§3.5, §4.5): the first mora's downstep is left unrealized, there being no preceding register to contrast with; the feature is not deleted, so it still blocks h-epenthesis on its syllable.
Equations
Instances For
Utterance-initial neutralisation as a process.
Equations
- Lionnet2025.neutralization = Subregular.Docking.ofQF Lionnet2025.neutralizationGuard (Option.map fun (x : List Tone.TRN) => List.filter (fun (x : Tone.TRN) => decide (x ≠ Tone.TRN.downstep)) x)
Instances For
Downstep displacement, first half (§4.6): the downstep on the last mora of a bimoraic syllable spreads to the next syllable's first mora, stacking on a downstep there.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The spreading half of displacement as a process.
Equations
Instances For
Downstep displacement, second half: the spread downstep delinks from its host.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The delinking half of displacement as a process.
Equations
- Lionnet2025.delinkL = Subregular.Docking.ofQF Lionnet2025.delinkLGuard (Option.map fun (x : List Tone.TRN) => x.erase Tone.TRN.downstep)
Instances For
The final syllable bears no node.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Drubea's final raising (§3.3, §4.8): h% docks on an utterance-final registerless syllable.
Equations
Instances For
Numèè's final lowering (§3.4, §4.8): l% docks on a light final syllable after a registerless syllable, whether the final is registerless or downstepped.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Numèè's final lowering as a process.
Equations
Instances For
The surface form of a morpheme sequence under the processes its transcription shows, in order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The baseline: level 4 of the 1-to-5 scale (§3.5).
Equations
Instances For
The level each mora reaches, the utterance-initial downstep unrealized.
Equations
Instances For
The level of each syllable: that of its last mora.
Equations
- Lionnet2025.syllableLevels r levels = List.map (fun (e : ℕ) => levels.getD (e - 1) 0) (List.scanl (fun (x1 x2 : ℕ) => x1 + x2) 0 (Tone.Registered.shape Lionnet2025.μ r)).tail
Instances For
Locality #
Every process but spreading is Docking.ofQF, so on words over the register alphabet it
is computed by a one-copy relabelling transduction, the quantifier-free logical transductions
of [CJ19].
The marked tier of every stem is over the register alphabet.
Raising on a stem's marked tier is the relabelling transduction's output.
The windows the guards read: raising one mora back and two slots forward, neutralisation two back, spreading three back, delinking one back and two forward, the boundary features two and four back.
Raising depends boundedly on both sides: the process is strictly local.
Spreading h-epenthesis has no quantifier-free guard: whatever window a guard reads, a downstep just beyond it switches the raising on.
Drubea utterances #
(11) /ꜜɳi ꜜmwa ꜜɳii ꜜme/ 'They said that…': four downsteps terrace, the first unrealized — [ɳi4 mwa3 ɳii2 me1].
(19) /ꜜtaa dɪɪ bee/ 'one small fish': the initial downstep unrealized and no final raising, everything at the baseline — [taa4 dɪɪ4 bee4].
(20) /ꜜtaa bee pwi + ꜛ%/ 'one cooked fish': h% raises the final registerless syllable — [taa4 bee4 pwi5].
(30) /ko te tɪɪ-ɽe kuɽe/ 'I look at the bush.': registerless throughout, the baseline throughout — [ko4 te4 tɪɪ4 -ɽe4 kuɽe4].
(32) vs (33), /goo ꜜmie/ 'wet Hibbertia' vs /ꜜgoo ꜜmie/ 'wet tree' (§3.5, §4.5): before
a downstep, an initial registerless syllable is raised above the baseline while a
downstepped one is not, its unrealized l blocking h-epenthesis; the following
downstepped syllable is lower than the initial in both.
(32) and (33) differ in h-epenthesis alone: the surface tiers of (64) and (65).
(53) /koꜜo kwɛ-ɽe/ 'place of dancing' vs /koꜜo ꜜkwe-ɽe/ 'place of eating' (§3.7, §4.6): the CVꜜV downstep displaces onto the next syllable, a single downstep on registerless /kwɛ/, a double one on downstepped /ꜜkwe/ — [koo5 kwɛ4] vs [koo5 kwe3].
(46) /ɲi beꜜe ŋa-ɽe/ 'he doesn't work': undisplaced, /beꜜe/ raises its own first mora and lowers its second, the register of what follows — [ɲi ꜛbeꜜe ŋa-ɽe].
Register copying (§3.9, §4.7): a verbal classifier prefix takes the nodes of the verb's first mora.
Equations
Instances For
(56): /ʈa-uɽu/ 'cut by hand' stays registerless, /ʈa-ꜜtie/ 'tear by hand' becomes /ꜜʈa-ꜜtie/.
(57) /ko te ʈa-ꜜtie-ɽe/ 'I tear by hand.': the copied downstep raises the preceding marker and still drops before the verb — [ko4 te4.5 ʈa4 ti3 e3 -ɽe3], the model's raised step a whole one.
(16): spreading h-epenthesis raises the whole registerless stretch before /maꜜa/'s downstep, the two morae of /ŋe-ɽe/ and the first of /maꜜa/, across the syllable boundary.
Numèè utterances #
(24) /jaa ɲĩ + ꜜ%/ 'coconut juice': l% docks on the light registerless final and raises the syllable before — [ɟaa5 ɲĩ4].
(25) /jaa ꜜɲĩ + ꜜ%/ 'breast milk': on a downstepped final, l% stacks a second downstep, realized below the registerless final of (24) — [ɟaa5 ɲĩ3.5].
(26) /dɛɳʊ a mii + ꜜ%/ 'lower jaw': a heavy final blocks l% — [dɛ4 ɳʊ4 a4 mii4].
(28) and (29): a downstepped syllable before the final blocks l%.
(38) /ꜜcĩĩbu ꜜmwã ꜜku mwoɽo + ꜜ%/ 'The rat escaped safe and sound.': l% on the final, h-epenthesis before each downstep — [cĩĩ4 bu5 mwã4 ku3 mwo4 ɽo3].
(52) /yaꜜa ꜜmẽ geꜜe ꜜmẽ ɲaꜜi/ 'We will not arrive.' (§4.6): both CVꜜV downsteps displace onto downstepped /ꜜmẽ/, a double downstep each time, while the disyllable /ɲa.ꜜi/ keeps its own.
(18) /ꜜɳe ꜜmwa ꜜve/ 'They go.' ((63)): h-epenthesis on a downstepped mora makes an lh
contour, the rise after the drop, which lifts the register the next downstep lowers.
Leben's properties of downstep (§6.1) #
[Leb18b]'s definitional properties, as the paper rephrases them for a system without
tones, are theorems above: the drop changes the register for what follows and affects the
whole following domain (ex11_levels, ex46_undisplaced), it is cumulative without limit
(ex11_levels, terrace_append), it is neutralised utterance-initially (ex19_levels,
ex32_ex33_contrast), and it functions contrastively, lexically (stems_patterned on the
minimal triplets).
The rows #
The space-separated tokens of a character string.
Equations
- Lionnet2025.tokens [] = [[]]
- Lionnet2025.tokens (' ' :: cs) = [] :: Lionnet2025.tokens cs
- Lionnet2025.tokens (c :: cs) = match Lionnet2025.tokens cs with | t :: ts => (c :: t) :: ts | [] => [[c]]
Instances For
A pitch level in half steps, from the source's whole or half numeral.
Equations
- Lionnet2025.halfSteps? cs = Lionnet2025.halfSteps?.go cs []
Instances For
The digits read so far, reversed.
Equations
- Lionnet2025.halfSteps?.go [] a✝ = Option.map (fun (x : ℕ) => 2 * x) (Datum.digits? a✝.reverse)
- Lionnet2025.halfSteps?.go ['.', '5'] a✝ = Option.map (fun (x : ℕ) => 2 * x + 1) (Datum.digits? a✝.reverse)
- Lionnet2025.halfSteps?.go ('.' :: tail) a✝ = none
- Lionnet2025.halfSteps?.go (c :: cs) a✝ = Lionnet2025.halfSteps?.go cs (c :: a✝)
Instances For
The levels a row transcribes, in half steps.
Equations
- Lionnet2025.levels? e = (e.feature? "levels").bind fun (s : String) => List.mapM Lionnet2025.halfSteps? (Lionnet2025.tokens s.toList)
Instances For
The direction of each step.
Equations
- Lionnet2025.signs xs = List.map (fun (p : ℤ × ℤ) => (p.2 - p.1).sign) (xs.zip xs.tail)
Instances For
The derivation of each levelled row's utterance from the fragments, under the steps its surface transcription shows. The two transcriptions of (13) are left out: their drop within /ꜜbeɽu/ is a half step of declination on a registerless syllable, not a register shift.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every derivation rises and falls between syllables exactly where the source's levels do, over the tokens it levels.