Floating autosegmental forms #
A form is a two-tier autosegmental representation in position coordinates: an upper tier of
autosegments over a lower tier of slots, each element sponsored by a morpheme, and a finite set
of association lines between positions of the two tiers. Forms concatenate by juxtaposing the
tiers and shifting the right factor's lines, and they form a monoid. A form is a computable
presentation of a graph-theoretic representation, Form.toAR, and its concatenation is the
tensor there, so the No-Crossing Constraint on its lines is Axiom 5 on the graph.
A candidate of a form records the autosegments deleted so far and the current surface lines, the state of a serial optimality-theoretic derivation. GEN acts on candidates and never on the form, so faithfulness constraints compare the surface lines with the form's lines. An autosegment that is neither deleted nor linked on the surface is floating.
Main definitions #
Sponsored α M: a tier element with the morpheme that sponsors it.Form S T M: a representation with slots inS, autosegments inT, and sponsors inM;Form.concatandForm.emptymake the forms a monoid.Form.toAR: the representation a form presents, throughAR.ofWords.Form.IsTautomorphemic: a line whose autosegment and slot share a sponsor.Candidate u: the surface state of a derivation from the formu;Candidate.inputis the faithful candidate, andCandidate.genthe one-step GEN.
Main results #
Form.noCrossing_toAR_iff: the presented representation obeys the NCC iff the lines are non-crossing.Form.toARConcatIso,Form.clsHom: presenting a concatenation gives the tensor, so presentation is a monoid hom into the representations up to isomorphism.Form.isNonCrossing_links_concat: concatenation preserves the No-Crossing Constraint.Candidate.isNonCrossing_links_of_mem_gen: GEN is closed on the No-Crossing Constraint.
Implementation notes #
Positions are elements of Fin over the tier lengths, so a candidate shares its form's
tiers by type and every line is in bounds. Numerals for positions of a concrete form need a
NeZero instance for its tier lengths, which a study supplies by decide. The readings of
the surface are List.finRange filters, which reduce under kernel decide, because
Finset.sort does not unfold structurally. Form.toAR needs the three label types in one
universe, as TwoTier does.
References #
A Sponsored α M is a tier element of type α together with the morpheme of type M
that sponsors it. On the upper tier the element is an autosegment, on the lower tier a
slot.
- value : α
The autosegment or slot.
- morpheme : M
The sponsoring morpheme.
Instances For
Equations
- Autosegmental.instDecidableEqSponsored.decEq { value := a, morpheme := a_1 } { value := b, morpheme := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Autosegmental.instReprSponsored = { reprPrec := Autosegmental.instReprSponsored.repr }
A Form S T M is a two-tier autosegmental representation with slots in S, autosegments
in T, and sponsors in M. Its association lines run from positions of the upper tier to
positions of the lower tier.
- upper : List (Sponsored T M)
The upper tier, of autosegments in tier order.
- lower : List (Sponsored S M)
The lower tier, of slots in tier order.
The association lines, each from an autosegment to a slot.
Instances For
Forms are compared tier by tier and then on their lines, which live over the same positions once the tiers agree.
Equations
- One or more equations did not get rendered due to their size.
Two forms are equal when their tiers agree and their lines correspond across the resulting identification of positions.
Morphemes #
morphemes f is the set of morphemes sponsoring an element of either tier.
Equations
- f.morphemes = (List.map Autosegmental.Sponsored.morpheme f.lower).toFinset ∪ (List.map Autosegmental.Sponsored.morpheme f.upper).toFinset
Instances For
lowerOfMorpheme f m lists the slots sponsored by m in tier order.
Equations
- f.lowerOfMorpheme m = List.filter (fun (i : Fin f.lower.length) => decide (f.lower[i].morpheme = m)) (List.finRange f.lower.length)
Instances For
A line is tautomorphemic when its autosegment and its slot have the same sponsor. Such
lines are the ones *TAUTDOCK penalises.
Equations
- f.IsTautomorphemic l = (f.upper[l.1].morpheme = f.lower[l.2].morpheme)
Instances For
Concatenation #
Concatenation juxtaposes the tiers and shifts the right factor's lines past the left factor's tiers, so the forms are a monoid with the empty form as unit.
The positions of a as the left block of a ++ b.
Equations
- Autosegmental.Form.castAppend a b = { toFun := fun (i : Fin a.length) => ⟨↑i, ⋯⟩, inj' := ⋯ }
Instances For
The positions of b as the right block of a ++ b.
Equations
- Autosegmental.Form.natAddAppend a b = { toFun := fun (i : Fin b.length) => ⟨a.length + ↑i, ⋯⟩, inj' := ⋯ }
Instances For
The empty form has empty tiers and no lines.
Equations
- Autosegmental.Form.empty = { upper := [], lower := [], links := ∅ }
Instances For
A line of a concatenation is a line of the left factor, or a line of the right factor shifted past the left factor's tiers.
Forms are a monoid under concatenation, with the empty form as unit.
Equations
- Autosegmental.Form.instMonoid = { one := Autosegmental.Form.empty, mul := Autosegmental.Form.concat, mul_assoc := ⋯, one_mul := ⋯, mul_one := ⋯, npow_zero := ⋯, npow_succ := ⋯ }
The presented representation #
A form presents the two-tier representation AR.ofWords builds from its tiers and its lines in
ℕ coordinates.
The presented representation obeys the NCC iff the lines are non-crossing.
A concatenation presents the tensor of the presented representations.
Equations
Instances For
Concatenation preserves the No-Crossing Constraint, as concatenation of representations does ([Jar16b] Theorem 4).
The empty form presents the unit.
Instances For
Presentation is a monoid hom from forms to representations up to isomorphism, so the strict monoid of forms models concatenation of representations.
Equations
- Autosegmental.Form.clsHom = { toFun := fun (f : Autosegmental.Form S T M) => Autosegmental.AR.cls f.toAR, map_one' := ⋯, map_mul' := ⋯ }
Instances For
A Candidate u is the surface state of a derivation from the form u, recording the
autosegments deleted so far and the current surface lines. The faithful candidate is
Candidate.input u, and GEN edits candidates while u stays fixed.
- deleted : Finset (Fin u.upper.length)
The autosegments deleted on the surface.
The surface association lines.
Instances For
Equations
- Autosegmental.instDecidableEqCandidate.decEq { deleted := a, links := a_1 } { deleted := b, links := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
input u is the faithful candidate of u, with nothing deleted and the form's lines as
its surface lines.
Equations
- Autosegmental.Candidate.input u = { deleted := ∅, links := u.links }
Instances For
Surface predicates #
Autosegment k is floating when it is not deleted and bears no surface line.
Equations
- c.IsFloating k = (k ∉ c.deleted ∧ ¬c.IsLinked k)
Instances For
insertedLinks c is the set of surface lines absent from the form, which GEN has
inserted and DEP counts.
Equations
- c.insertedLinks = c.links \ u.links
Instances For
deletedLinks c is the set of the form's lines absent from the surface, which GEN has
deleted and MAX counts.
Equations
- c.deletedLinks = u.links \ c.links
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- c.instDecidableIsFloating = { decide := decide (k ∉ c.deleted) && decide ¬c.IsLinked k, reflects_decide := ⋯ }
The faithful candidate has no inserted line.
The faithful candidate has no deleted line.
Reading the surface #
The readings of the surface are lists over List.finRange in tier order, which reduce under
kernel decide.
tierValues c i lists the values of the autosegments linked to slot i on the surface,
in tier order.
Equations
- c.tierValues i = List.map (fun (k : Fin u.upper.length) => u.upper[k].value) (c.linksTo i)
Instances For
The atomic GEN operations #
deleteTierElem c k deletes autosegment k on the surface, together with every surface
line it bears.
Equations
- c.deleteTierElem k = { deleted := insert k c.deleted, links := {x ∈ c.links | x.1 ≠ k} }
Instances For
insertLink c k i inserts the surface line from autosegment k to slot i.
Equations
- c.insertLink k i = { deleted := c.deleted, links := insert (k, i) c.links }
Instances For
deleteLink c k i deletes the surface line from autosegment k to slot i.
Equations
- c.deleteLink k i = { deleted := c.deleted, links := c.links.erase (k, i) }
Instances For
One-step GEN #
gen c is the one-step GEN of harmonic serialism. It contains c itself, the deletion of
each undeleted autosegment, and each line from a floating autosegment to a slot that
crosses no surface line; insert-and-associate and shift are omitted.
Equations
- One or more equations did not get rendered due to their size.
Instances For
GEN is closed on the No-Crossing Constraint, since deletion shrinks the surface lines and each inserted line passed the crossing filter.