Iterated left-nested products #
The graph products that build expanders and Reingold's transformation pair a vertex of the
previous graph with a vertex of a fixed base graph at every step, so the vertices of the ℓ-th
graph form the left-nested product (⋯ (V × B) × ⋯) × B with ℓ factors B
(Cslib.IteratedProd V B ℓ, with IteratedProd V B (ℓ + 1) = IteratedProd V B ℓ × B so that
zig-zag and RotationMap products stay definitional). The zig-zag tower is the case V = B
(Cslib.RotationMap.ZigzagTowerVertex), and Reingold's transformation
(Cslib.RotationMap.reingold) the case of an arbitrary graph on V and a base graph on B
Reingold, Definition 3.1. A vertex lies over its first coordinate, its root, and
is presented by its root and its other coordinates, the outermost first
(Cslib.IteratedProd.toList). Given explicit numberings of V and B,
Cslib.IteratedProd.equivFin numbers the ℓ-th iterated product by Fin (v * b ^ ℓ).
Main definitions #
Cslib.IteratedProd: the left-nested iterated products.Cslib.IteratedProd.equivFin: recursive numbering from numbered root and step types.Cslib.IteratedProd.root,Cslib.IteratedProd.mk,Cslib.IteratedProd.setRoot,Cslib.IteratedProd.map: the root, the vertex with given root and constant coordinates, replacing and mapping the root.Cslib.IteratedProd.toList: the root and the other coordinates.
Main results #
Cslib.IteratedProd.card: there are|V| |B| ^ ℓvertices.
References #
The left-nested iterated product (⋯ (V × B) × ⋯) × B with ℓ factors B: the vertices of
the ℓ-th graph of an iterated product of a graph on V with graphs on B, as each step pairs a
vertex of the previous graph with a vertex on B.
Instances For
The iterated products of finite types are finite.
Equality in the iterated products is decidable when it is in the factors.
The ℓ-th iterated product has |V| |B| ^ ℓ elements.
Number an element of the ℓ-th iterated product by recursively pairing the root and step
indices via finProdFinEquiv.
Instances For
At level ℓ + 1, equivFin combines the previous index and the new coordinate via
finProdFinEquiv.
The root of an element of the ℓ-th iterated product: its innermost coordinate, in V.
Instances For
The root of an element of the (ℓ + 1)-st iterated product is the root of its first
component.
The element (⋯ (v, b) ⋯, b) of the ℓ-th iterated product, with root v.
Instances For
Replace the root of an element of the ℓ-th iterated product, keeping its other
coordinates.
Instances For
Replacing the root by w gives an element with root w.
Replacing the root by itself does nothing.
Apply a map of V to the root.
Instances For
Mapping the root of a vertex with replaced root.
The root of a mapped element is the image of its root.
The root and the other coordinates of an element of the m-th iterated product, the
outermost coordinate first.
Instances For
The first component of toList is the root.
An element of the m-th iterated product has m coordinates besides its root.