Quasi-Tableaux (Def 9.8) #
The type k(x) of the root of a quasi-tableau.
Equations
- (QuasiTab.QNode k Δ next).typ = k
Instances For
The label Δₓ of the root of a quasi-tableau.
Equations
- (QuasiTab.QNode k Δ next).label = Δ
Instances For
The children ⋖Q of the root of a quasi-tableau.
Equations
- (QuasiTab.QNode k Δ next).children = next
Instances For
All nodes of a quasi-tableau, each given by the subtree rooted at it.
Equations
- (QuasiTab.QNode k Δ next).subtrees = QuasiTab.QNode k Δ next :: List.flatMap QuasiTab.subtrees next
Instances For
Termination of the construction of Q #
The construction of Q terminates because along a branch of Q the label of a node of
type 1 is either a repeat or a new element of the finite list Λ₂[C], and in the latter
case it is added to the history. Hence the number of elements of Λ₂[C] that are not yet
in the history decreases.
Def 9.8: the quasi-tableau, given the list inC of labels Λ₂[C] and the function
step that maps a label to the labels of the children obtained by applying the right rule.
Both are provided by LoadedCluster.lambdaTwo and LoadedCluster.stepOf in
LoadedCluster.Q below.
Following the paper we make the case distinction at the node of type 1: it is a leaf iff
it is a repeat (i.e. Δ ∈ Hist) or Δ ∉ Λ₂[C], and in the latter case Δ ∈ Λ₂[C⁺] \ Λ₂[C]
by the invariant. Otherwise it has a unique child of type 2, which has a unique child of
type 3, whose children are given by step and are again of type 1.
Note that only nodes of type 1 add their label to the history — this is the "identify
repeats at the first opportunity" from Definition 9.11.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Remark 9.9: all leaves of the quasi-tableau have type 1. Here we need that a node of
type 3 does have children, which by Lemma 9.7 (d), (e) and (f) holds for all Δ ∈ Λ₂[C].
Invariant of Def 9.8: if all labels produced by step are in lam, then all nodes of
the quasi-tableau built from a label in lam are again labelled with elements of lam.
Def 9.8: the quasi-tableau associated with the cluster C. Its root has type 1 and is
labelled with the right component Λ₂(r) of the root r of the cluster.
Instances For
All nodes of Q are labelled with elements of Λ₂[C⁺].
Remark 9.9 for Q: all leaves of the quasi-tableau have type 1. Here h97d is
Lemma 9.7 (d), which we state as a hypothesis: for every label in Λ₂[C] there is a node
of the cluster with that right component where a right rule is applied.
Def 9.10: the region Rₓ ⊆ C⁺ represented by a node x of the quasi-tableau.
For type 1 and 2 these are all nodes of C⁺ with right component Δₓ, and for type 3
those nodes of C with right component Δₓ where a right rule is applied.
Equations
- C.region Typ.one x✝ = C.plusNodesWithFine x✝
- C.region Typ.two x✝ = C.plusNodesWithFine x✝
- C.region Typ.three x✝ = (C.nodesWithFineRight x✝).toFinset
Instances For
Def 9.10, applied to a node of the quasi-tableau.
Instances For
Addresses: the nodes of a quasi-tableau #
QuasiTab is an inductive tree, so its nodes are not determined by their type and label:
several nodes of Q may carry the same type and the same label. To speak about the nodes
of Q, and in particular about the tree order <_Q needed for repeats and companions, we
identify a node with its address, i.e. with the list of child indices that leads to it
from the root. Hence r_Q is the empty address, x ≤_Q y becomes "x is a prefix of y"
and x <_Q y becomes "x is a proper prefix of y".
The label Δₓ of the node at address x.
Equations
- q.labelAt x = Option.map QuasiTab.label (q.at? x)
Instances For
The type k(x) of the node at address x.
Equations
- q.typAt x = Option.map QuasiTab.typ (q.at? x)
Instances For
x ≤_Q y, the reflexive-transitive closure of ⋖Q, which on addresses is the prefix
order.
Equations
- QuasiTab.qle x y = (x <+: y)
Instances For
x <_Q y, the transitive closure of ⋖Q, which on addresses is the proper prefix
order.
Equations
- QuasiTab.qlt x y = (x <+: y ∧ x ≠ y)
Instances For
The companion c(x) of a repeat leaf x, that is, the node z <_Q x of
type 1 with the same label as x. Because repeats are identified at the first opportunity
there is at most one such node in a quasi-tableau; here we simply take the one closest to
the root.
Equations
Instances For
K_Q, the set of companions.
Equations
- q.companions = (List.filterMap q.companion? q.repeatLeaves).dedup
Instances For
q.cycs x written L_<x in the paper is the set of repeat leaves z with c(z) <_Q x ≤_Q z,
i.e. the repeat leaves below x whose companion is a proper ancestor of x in q.
Part of Definition 9.11.
Equations
- q.cycs x = List.filter (fun (z : List ℕ) => match q.companion? z with | none => false | some c => c.isPrefixOf x && !c == x && x.isPrefixOf z) q.repeatLeaves
Instances For
Basic facts about addresses #
These general facts about at?, addresses, subtrees and childrenAt are used both
here and in the files building on this one.
Auxiliary facts for Lemma 9.12 #
The companion of a node is a proper ancestor of it.
The addresses are listed in (strictly increasing) lexicographic order.
A node that is not a leaf and has a unique child x ++ [0] lies above every
node strictly below it only via that child.
Lemma 9.12 #
Lemma 9.12 (b) first part: the root has no cycles below it, cycs(r_Q) = ∅.
Helper for Lemma 9.12 (d).
Note that from x <_Q y alone we cannot conclude cycs(x) ⊆ cycs(y), because a repeat
leaf z ∈ cycs(x) may lie below a different child of x than y does.
Hence here we additionally demand y ≤_Q z.
Helper for Lemma 9.12 (d) cycs_of_noRep_noComp.
Note that when x has several children then the inclusion cycs(y) ⊆ cycs(x) may be strict.
Still the inclusion holds in general, and it is the direction that we actually use.
Lemma 9.12 (c) main part, without the companion assumption:
if x has unique child y, then cycs(y) consists (up to permutation) of
cycs(x) together with the repeat leaves whose companion is x.
Lemma 9.12 (c), disjointness: no element of cycs(x) has x as its companion
Lemma 9.12 (d): If x is neither a repeat leaf nor a companion,
then cycs x consists of cycs y for all children y of x.