Forests on a finite vertex set #
Combinatorial foundation for the BKAR forest interpolation formula (see
BKAR.Formula). Defines Edge V, the off-diagonal unordered pairs of a
finite vertex type V (edges of the complete graph on V); simple paths
along an edge set; the acyclicity predicate IsAcyclicEdgeSet; the
acyclicity API AcyclicEdgeSetData (component relation, canonical simple
paths, path uniqueness); the index type ForestIndex V of acyclic edge
sets, over which the final forest sum ranges; and the working type
Forest V, an acyclic edge set packaged with its path API and the one-edge
extension characterization.
Equations
A graph-level simple path: an edge walk with no repeated edges.
Equations
- BKAR.EdgePath.IsSimplePath S γ i j = (BKAR.EdgePath.IsPath S γ i j ∧ γ.Nodup)
Instances For
Data carried by an acyclic edge set.
The primitive representation is intentionally thin: later files consume the component relation, the canonical simple path, and path uniqueness, so these are the API exposed by the acyclicity certificate.
- inSameComponent : V → V → Prop
The relation of belonging to the same connected component.
The predicate that an edge list is a simple path between the given vertices.
- pathIn (i j : V) : self.inSameComponent i j → List (Edge V)
The canonical simple path between vertices in the same component.
- pathIn_isSimple {i j : V} (h : self.inSameComponent i j) : self.isSimplePath (self.pathIn i j h) i j
- isSimplePath_iff {i j : V} {γ : List (Edge V)} : self.isSimplePath γ i j ↔ EdgePath.IsSimplePath S γ i j
- sameComponent_of_simplePath {i j : V} {γ : List (Edge V)} : self.isSimplePath γ i j → self.inSameComponent i j
- path_unique {i j : V} {γ₁ γ₂ : List (Edge V)} : self.isSimplePath γ₁ i j → self.isSimplePath γ₂ i j → γ₁ = γ₂
Instances For
A custom acyclicity predicate for finite edge sets.
Equations
Instances For
Acyclicity is inherited by finite edge subsets.
Adding an absent edge whose endpoints are already connected cannot preserve acyclicity: the old component path and the new singleton edge would be two distinct simple paths.
The finite edge-set index over which the final BKAR forest sum ranges.
The finite acyclic edge set indexing a forest summand.
- acyclic : IsAcyclicEdgeSet self.edges
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
A forest is a finite edge set with the path API needed for BKAR interpolation.
The finite edge set of the forest.
- acyclic : AcyclicEdgeSetData self.edges
The component and unique-path data witnessing acyclicity of the edge set.
Instances For
Acyclicity data for the empty edge set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Acyclicity data for a singleton edge set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The empty forest, with equality as its component relation.
Equations
- BKAR.Forest.empty V = { edges := ∅, acyclic := BKAR.Forest.emptyAcyclicEdgeSetData, acyclic_insert_iff' := ⋯ }
Instances For
Forget the path data of a Forest representative, retaining only its finite edge-set index.
Instances For
The component relation of a forest.
Equations
- F.inSameComponent i j = F.acyclic.inSameComponent i j
Instances For
Equations
- F.instDecidableInSameComponent i j = Classical.propDecidable (F.inSameComponent i j)
The canonical path between vertices known to be in the same component.
Instances For
Simple paths in a forest, as exposed by its acyclicity certificate.
Equations
- BKAR.IsSimplePath F γ i j = F.acyclic.isSimplePath γ i j
Instances For
Lemma A1: the simple path in a forest is unique.
Simple paths are invariant under replacing the Forest representative data by another
forest with the same underlying edge set.
The component relation is invariant under changing only the auxiliary path data.
Canonical paths are invariant under changing only the Forest representative data, once
the underlying edge set is fixed.
Lemma A2: adding an absent edge preserves acyclicity exactly across components.
Certificate that F' is obtained from F by adding one edge and that the canonical
paths behave as expected under this extension.
- new_not_mem : e₀ ∉ F.edges
- old_component {i j : V} : F.inSameComponent i j → F'.inSameComponent i j
- new_path_uses {i j : V} : ¬F.inSameComponent i j → ∀ (hF' : F'.inSameComponent i j), e₀ ∈ F'.pathInF i j hF'
Instances For
The finite forest index consisting of one edge.