Multi-tier autosegmental graphs #
MultiGraph τ is the autosegmental representation at general tier arity:
n heterogeneously-typed ordered tiers (tiers i : LabeledTuple (τ i), with
τ : Fin n → Type u) plus, for every ordered tier-pair (i, j), a Finset (ℕ × ℕ)
of association links (links i j; empty ⇒ the pair does not associate). This is
[Jar17]'s autosegmental phonological graph at arbitrary arity, and the home
of [Lio22a]'s register-tier tone geometry (subtonal-feature tiers + a mora
tier around a Tonal Root Node hub).
The classical bipartite Graph α β (Graph.lean) is the n = 2 case. It is a
separate first-class structure (so it keeps extends/.toGraph/anonymous-
constructor ergonomics and independent universes); the two are related by the
monoidal inclusion functor rather than a defeq view — see Inclusion.lean.
Design (three-reviewer mathlib panel, 2026-06-24) #
- Heterogeneous tiers
τ : Fin n → Type u— per-tier static typing, fiberwise. - Links per ordered tier-pair
(i j) → Finset (ℕ × ℕ)— keepsconcat's shift fiberwise; the associating topology is{(i,j) | links i j ≠ ∅}. - Planarity stays binary, per pair (
IsPlanar := ∀ i j, IsNonCrossing (links i j)): the existingMonovaryOn-based NCC reused pointwise — no N-ary planarity theory.
A multi-tier autosegmental graph: n heterogeneously-typed ordered tiers
plus a Finset (ℕ × ℕ) of association links on each ordered tier-pair.
- tiers (i : Fin n) : LabeledTuple (τ i)
The
nheterogeneously-typed ordered tiers. - links (i j : Fin n) : Finset (ℕ × ℕ)
Association links per ordered tier-pair; empty ⇒ the pair does not associate.
Instances For
Equations
- x✝¹.instDecidableEq x✝ = decidable_of_iff (x✝¹.tiers = x✝.tiers ∧ x✝¹.links = x✝.links) ⋯
Well-formedness predicates #
Planarity: every tier-pair's link set is non-crossing — the binary
MonovaryOn NCC applied pointwise per pair (no N-ary generalization).
Equations
- G.IsPlanar = ∀ (i j : Fin n), Autosegmental.IsNonCrossing (G.links i j)
Instances For
The empty graph #
The empty multigraph: every tier empty, no links.
Equations
- Autosegmental.MultiGraph.empty = { tiers := fun (x : Fin n) => LabeledTuple.empty, links := fun (x x_1 : Fin n) => ∅ }
Instances For
Concatenation: tier-wise LabeledTuple.concat, and per-pair link union with
B's links shifted past A's tier lengths on each coordinate.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Monoid laws #
Equations
- One or more equations did not get rendered due to their size.
Predicate preservation #
Concatenation preserves planarity, given A.InBounds.
Concatenation preserves in-bounds.