OCP-merging collapse of autosegmental representations #
A merging tone realization ([jardine-2019]; the melody-merging naming function of
[jardine-heinz-2015], Mende example) is OCP-merging: a tonal melody Hⁿ realizes as a
single H node multiply associated to the n morae, not n separate H nodes. The
project's Autosegmental.AR.realize (Realization.lean) instead uses the bridge-only
concat (the categorical coproduct), which keeps the n H nodes apart. This file
supplies the missing merge as a post-processing retraction on the upper tier:
collapseGraph/collapseAR— fuse each maximal run of identical adjacent upper-tier labels into one node, carrying the association lines along: a link(k, j)is repointed to(ρ k, j), whereρ(runIdx) sends an upper position to the index of its run in the collapsed tier. The lower tier is untouched, so a merged node keeps all the morae its run was associated with (multiple association).AR.realizeMerged := collapseAR ∘ AR.realize— the OCP-merging realization.
The upper-tier collapse is exactly OCP.collapse (= List.destutter (· ≠ ·)); the
link pushforward is the SimpleGraph.map/Quiver.Push idiom
(Finset.image (Prod.map ρ id)); planarity survives because ρ is monotone
(IsNonCrossing.image_monotone, NonCrossing.lean).
The AR-level OCP quotient monoid #
collapseAR is the AR-level lift of FreeMonoid.destutterHom: a retraction onto the OCP-clean
ARs that descends to a quotient of the concat monoid AR α β. The key congruence is
collapseAR_concat — the AR shadow of OCP.collapse_append, whose links half reduces to
runIdx commuting with the collapse-collapse seam (runIdx_append_collapse_left/right,
in turn the boundary-length lemma List.destutter_append_length_clean). It bundles as
collapseARHom : AR α β →* {A // IsCleanAR A}, whose mathlib quotient
(ocpARQuotientEquiv) is the concrete OCP-clean model.
Main results #
collapseGraph_concat/collapseAR_concat— the collapse congruence (in-bounds free at AR level), the AR lift ofOCP.collapse_append.collapseAR_id_on_clean—collapseARretracts onto its OCP-clean fixed points.instMonoidCleanAR/collapseARHom/ocpARQuotientEquiv— the AR-level OCP quotient monoid, its bundled hom, and the first-isomorphism equivalence.upperHom/upperHomClean_comp_collapseARHom— the upper-tier projection and the decategorification square: the AR-level OCP quotient maps onto the tier-level one.autosegment_mul_self/ocpPresentation— the tier-level OCP-clean monoid is presented by idempotent autosegments⟨α | a · a = a⟩; the OCP is a monoidal quotient, the counterpart to the No-Crossing Constraint's monoidal subcategory (ncc_isMonoidal).collapse_not_reflective— that quotient does not categorify:collapseis not a reflector (a morphism can split a geminate), so the OCP quotient lives on the object monoid, not the category — the precise sense in which OCP and NCC differ.
The collapse in coordinates #
The OCP merge on the graph foundation: destutter melody tier m's word and
repoint its links through runIdx. Like normalize the result is a
AR on a sigma-Fin carrier, but the merge is not a pullback —
runIdx is monotone, not bijective — so the structural axioms are proved
directly on the merged carrier.
Tier words after collapsing melody tier m: destuttered at m, untouched
elsewhere.
Equations
- Autosegmental.AR.collapsedWord X m = Function.update (fun (i : ι) => Autosegmental.AR.tierWord i) m (OCP.collapse (Autosegmental.AR.tierWord m))
Instances For
Position repointing: runIdx on the melody tier, identity elsewhere.
Equations
- Autosegmental.AR.collapseIdx X m i p = if i = m then OCP.runIdx (Autosegmental.AR.tierWord m) p else p
Instances For
The OCP-merging collapse: melody tier m destuttered, links repointed
through runIdx, other tiers untouched.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The collapsed fiber at i is enumerated by its position range.
Equations
- Autosegmental.AR.collapseFiberEnum X m i = StrictMono.orderIsoOfSurjective (fun (p : Fin (Autosegmental.AR.collapsedWord X m i).length) => ⟨⟨i, p⟩, ⋯⟩) ⋯ ⋯
Instances For
The collapse does what it says: its tier words are the collapsed
words — destuttered at m (Function.update_self), untouched elsewhere.
The word half of the OCP congruence: collapsing a tensor computes the same
tier words as collapsing the tensor of the collapsed factors —
OCP.collapse_append lifted through the readers.
The collapse's links are the image of the original links under the
repointing — edges_normalize's analogue for the merge.
Left-block positions commute with the collapse-collapse seam.
Right-block positions commute with the collapse-collapse seam.
The OCP congruence: collapsing a concatenation is isomorphic to collapsing the concatenation of the collapses — [jardine-heinz-2015]'s melody-merge law, by the classification theorem.
Equations
Instances For
OCP-cleanliness at melody tier m: the tier word has no adjacent
repeats.
Equations
Instances For
The OCP-merging realization at melody tier m — [jardine-2019]'s merging
g_T: AR.realize, then merge the melody runs.
Equations
- Autosegmental.realizeMerged m g₀ w = Autosegmental.AR.collapse (Autosegmental.AR.realize g₀ w) m
Instances For
The merged realization of word primitives #
Two-tier case, melody over true: the merged realization of a string of word primitives
has the readers of one representation of words — the melody destuttered, the lines
repointed through the run index.
The lines of an OCP-merged realization: a line of the realization with its melody position repointed through the run index of the melody.
Equations
- Autosegmental.mergedLinks melody Lk r s = ∃ p < melody.length, Lk p s ∧ OCP.runIdx melody p = r
Instances For
Equations
- Autosegmental.instDecidableRelNatMergedLinks melody Lk x✝¹ x✝ = id inferInstance
Melody-to-timing lines of a two-tier collapse at the melody tier.
The tier words of the merged realization are those of its representation of words.
The lines of the merged realization are those of its representation of words.
Embedding into the merged realization of word primitives computes on the words.
On a normal form, one position covers another in the arc order iff it is its immediate successor.
The OCP bridge: tier-word cleanliness is Axiom 6 on the normal form — the coordinate OCP and [jardine-2016b]'s §4.2 axiom agree.