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 (Def 9.11) #
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
Def 9.11: 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
Def 9.11: K_Q, the set of companions.
Equations
- q.companions = (List.filterMap q.companion? q.repeatLeaves).dedup
Instances For
Def 9.11: cycs(x), 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.
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.
Lemma 9.12 #
Lemma 9.12 (b): the root has no cycles below it, cycs(r_Q) = ∅.
Lemma 9.12 (c) does not hold as stated in the paper: from x <_Q y 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. (For counterexamples, and for a precise account of
when (c) does hold, see the file Pdl.ClusterCorrection.)
What does hold — and what the proofs in the paper actually use — is the following version,
where we additionally demand y ≤_Q z.
Lemma 9.12 (d) does not hold as stated in the paper either: when x has several
children then the inclusion cycs(y) ⊆ cycs(x) may be strict. (For counterexamples, and
for a precise account of when equality does hold — namely whenever x has at most one
child, hence at all nodes of a quasi-tableau of a cluster that are not of type 3 — see the
file Pdl.ClusterCorrection.)
Here is the inclusion that does hold in general, and it is the direction that the proofs in
the paper actually use.