Operations on cotree representations #
Complementation exchanges union and join. A partition with no cross edges allows two cotree representations to be assembled into a representation of the whole graph, using Mathlib's sum of graph isomorphisms.
Complementation transports graph isomorphisms.
Equations
- f.complement = { toEquiv := f.toEquiv, map_rel_iff' := ⋯ }
Instances For
Exchange union and join at every internal node.
Equations
Instances For
Exchanging union and join twice returns the original cotree.
The complement cotree represents the complement graph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A cotree representation can be complemented without reconstructing the graph.
Equations
- R.compl = { cotree := R.cotree.complement, iso := RelIso.trans R.cotree.complementIso R.iso.complement }
Instances For
Relabel a cotree representation along a graph isomorphism.
Instances For
Build a disjoint-union representation directly from the supplied cotrees.
Instances For
Build a join representation directly from the supplied cotrees.
Equations
- L.graphJoin R = { cotree := L.cotree.join R.cotree, iso := (L.iso.complement.sumCongr R.iso.complement).complement }
Instances For
Joining preserves adjacency within the left child.
Joining preserves adjacency within the right child.
Every left vertex is adjacent to every right vertex in a join.
Every right vertex is adjacent to every left vertex in a join.
The union constructor retains its two supplied cotrees.
The join constructor retains its two supplied cotrees.
An empty vertex type has the empty cotree representation.
Equations
- SimpleGraph.CotreeRepresentation.ofIsEmpty G = { cotree := SimpleGraph.Cotree.empty, iso := id { toEquiv := Equiv.equivOfIsEmpty PEmpty.{1} V, map_rel_iff' := ⋯ } }
Instances For
A one-vertex graph has a one-leaf cotree representation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A vertex partition with no cross edges gives an isomorphism from the disjoint union of its induced pieces to the original graph.
Equations
- SimpleGraph.isoSumInduce s hcross = { toEquiv := Equiv.Set.sumCompl s, map_rel_iff' := ⋯ }
Instances For
Assemble representations of two separated induced pieces.
Equations
- SimpleGraph.CotreeRepresentation.unionInduce s hcross L R = { cotree := L.cotree.union R.cotree, iso := RelIso.trans (L.iso.sumCongr R.iso) (SimpleGraph.isoSumInduce s hcross) }