Jardine (2016): intervocalic voicing as a local string relation #
This file formalizes chapter 7 of [jardine-2016b], which presents a phonological process as a
relation between input and output strings: a set of correspondence graphs, carved out of GEN by
banned-subgraph constraints. Section 7.2 runs the idea on intervocalic voicing, (7.1), whose
relation over a, b and p is Rvoice, (7.5). The primitives Γ of (7.14), an input symbol
over its output, generate GEN by concatenation, (7.15) (g), and five banned subgraphs cut the
voicing relation out of it: φ_apa, (7.19), forbids a surface apa, and the four of (7.21) forbid
a p surfacing as b word-initially, word-finally, after a p and before a p. The grammar is
φ_apba, (7.22), and the relation it presents is R(CG(φ_apba)), Definition 25 (voicing): a
pair is in it iff the Γ-string spelling it, which is unique, is free of the grammar
(voicing_iff_spell), so membership decides, and on the pairs of (7.5) and (7.17) the relation
agrees with Rvoice (rows_agree). The identity R(CG(φ_apba)) = Rvoice that the text leaves
to the reader fails: no subgraph of (7.22) mentions a b beside the target, so the grammar admits
bpa ↦ bba, which the rule (7.1) does not (voicing_ne_voiceRule).
Implementation notes #
- Correspondence graphs are
Autosegmental.Correspondence.Rep; the word boundaries ⋊ and ⋉ that (7.21) reads are symbols of the alphabet, and a Γ-string's graph is wrapped in them. Rvoiceis written as the rule (7.1) applied pointwise,voiceRule, apbetween twoas surfacing asb.
References #
- [jardine-2016b]
Equations
- Jardine2016b.instDecidableEqSeg x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Jardine2016b.instReprSeg.repr Jardine2016b.Seg.a prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Seg.a")).group prec✝
- Jardine2016b.instReprSeg.repr Jardine2016b.Seg.b prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Seg.b")).group prec✝
- Jardine2016b.instReprSeg.repr Jardine2016b.Seg.p prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Seg.p")).group prec✝
- Jardine2016b.instReprSeg.repr Jardine2016b.Seg.lb prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Seg.lb")).group prec✝
- Jardine2016b.instReprSeg.repr Jardine2016b.Seg.rb prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Seg.rb")).group prec✝
Instances For
Equations
- Jardine2016b.instReprSeg = { reprPrec := Jardine2016b.instReprSeg.repr }
Equations
- Jardine2016b.instDecidableEqPair x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Jardine2016b.instReprPair.repr Jardine2016b.Pair.aa prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Pair.aa")).group prec✝
- Jardine2016b.instReprPair.repr Jardine2016b.Pair.pb prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Pair.pb")).group prec✝
- Jardine2016b.instReprPair.repr Jardine2016b.Pair.pp prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Pair.pp")).group prec✝
- Jardine2016b.instReprPair.repr Jardine2016b.Pair.bb prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Pair.bb")).group prec✝
- Jardine2016b.instReprPair.repr Jardine2016b.Pair.lb prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Pair.lb")).group prec✝
- Jardine2016b.instReprPair.repr Jardine2016b.Pair.rb prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Jardine2016b.Pair.rb")).group prec✝
Instances For
Equations
- Jardine2016b.instReprPair = { reprPrec := Jardine2016b.instReprPair.repr }
The input symbol of a primitive.
Equations
Instances For
The output symbol of a primitive.
Equations
Instances For
The primitive spelling an input symbol over an output symbol, if any.
Equations
- Jardine2016b.Pair.ofSegs Jardine2016b.Seg.a Jardine2016b.Seg.a = some Jardine2016b.Pair.aa
- Jardine2016b.Pair.ofSegs Jardine2016b.Seg.p Jardine2016b.Seg.b = some Jardine2016b.Pair.pb
- Jardine2016b.Pair.ofSegs Jardine2016b.Seg.p Jardine2016b.Seg.p = some Jardine2016b.Pair.pp
- Jardine2016b.Pair.ofSegs Jardine2016b.Seg.b Jardine2016b.Seg.b = some Jardine2016b.Pair.bb
- Jardine2016b.Pair.ofSegs Jardine2016b.Seg.lb Jardine2016b.Seg.lb = some Jardine2016b.Pair.lb
- Jardine2016b.Pair.ofSegs Jardine2016b.Seg.rb Jardine2016b.Seg.rb = some Jardine2016b.Pair.rb
- Jardine2016b.Pair.ofSegs x✝¹ x✝ = none
Instances For
The Γ-string spelling an input and an output string, if any.
Equations
- Jardine2016b.spell [] [] = some []
- Jardine2016b.spell (i :: w) (o :: v) = match Jardine2016b.Pair.ofSegs i o, Jardine2016b.spell w v with | some γ, some γs => some (γ :: γs) | x, x_1 => none
- Jardine2016b.spell x✝¹ x✝ = none
Instances For
A pair is spelled by a Γ-string exactly when it is the string's input and output.
Jardine's g on Γ-strings ((7.15)): the correspondence graph spelling the input and
output symbols position by position.
Equations
- Jardine2016b.g γs = Autosegmental.Correspondence.Rep.ofWords (List.map Jardine2016b.Pair.input γs) (List.map Jardine2016b.Pair.output γs) fun (x1 x2 : ℕ) => x1 = x2
Instances For
A Γ-string's graph between the boundaries ⋊ and ⋉.
Equations
- Jardine2016b.gen γs = Jardine2016b.g (Jardine2016b.Pair.lb :: γs ++ [Jardine2016b.Pair.rb])
Instances For
The grammar φ_apba #
φ_apa (7.19): a surface apa — output-only, the markedness constraint *VTV.
Equations
- Jardine2016b.banApa = Autosegmental.Correspondence.Rep.ofWords [] [Jardine2016b.Seg.a, Jardine2016b.Seg.p, Jardine2016b.Seg.a] fun (x x_1 : ℕ) => False
Instances For
φ_⋊pb (7.21): a p surfacing as b word-initially.
Equations
- Jardine2016b.banInitialPb = Autosegmental.Correspondence.Rep.ofWords [Jardine2016b.Seg.p] [Jardine2016b.Seg.lb, Jardine2016b.Seg.b] fun (i o : ℕ) => i = 0 ∧ o = 1
Instances For
φ_pb⋉ (7.21): a p surfacing as b word-finally.
Equations
- Jardine2016b.banFinalPb = Autosegmental.Correspondence.Rep.ofWords [Jardine2016b.Seg.p] [Jardine2016b.Seg.b, Jardine2016b.Seg.rb] fun (i o : ℕ) => i = 0 ∧ o = 0
Instances For
φ_ppb (7.21): a p surfacing as b after a surface p.
Equations
- Jardine2016b.banPbAfterP = Autosegmental.Correspondence.Rep.ofWords [Jardine2016b.Seg.p] [Jardine2016b.Seg.p, Jardine2016b.Seg.b] fun (i o : ℕ) => i = 0 ∧ o = 1
Instances For
φ_pbp (7.21): a p surfacing as b before a surface p.
Equations
- Jardine2016b.banPbBeforeP = Autosegmental.Correspondence.Rep.ofWords [Jardine2016b.Seg.p] [Jardine2016b.Seg.b, Jardine2016b.Seg.p] fun (i o : ℕ) => i = 0 ∧ o = 0
Instances For
φ_apba (7.22).
Equations
Instances For
On GEN the grammar decides.
Equations
- One or more equations did not get rendered due to their size.
The relation R(CG(φ_apba)) #
CG(φ_apba): the graphs of GEN = CG(Γ) free of the grammar.
Equations
- Jardine2016b.CG G = ((∃ (γs : List Jardine2016b.Pair), G = Jardine2016b.gen γs) ∧ Autosegmental.Correspondence.specifiedByRep Jardine2016b.voicingGrammar G)
Instances For
R(CG(φ_apba)) (Def. 25), on boundary-augmented strings.
Equations
Instances For
Def. 25 unwound: (w, v) is in the relation iff some Γ-string spells both and its
graph is free of the grammar.
Definition 25 by spelling: the Γ-string spelling the pair is unique, so (w, v) is in the
relation iff that string exists and its graph is free of the grammar.
Equations
- One or more equations did not get rendered due to their size.
The data of (7.5) and (7.17) #
A segment from its spelling.
Equations
Instances For
A row: an input and an output string, and whether the pair is in Rvoice.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
A row from the paper's features.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The pairs of Rvoice, (7.5), and the pairs of GEN outside it, (7.17).
Equations
- Jardine2016b.rows = List.filterMap Jardine2016b.Row.ofExample Jardine2016b.Examples.all
Instances For
So the identity R(CG(φ_apba)) = Rvoice that the text leaves to the reader fails: the
rule (7.1) leaves bpa unchanged.