LeanPool.Polylean.Complexes.GraphPaths #
A graph with directed edges, distinguished null edge, and edge reversal.
- null : E
The distinguished null edge.
- init : E → V
The initial vertex of an edge.
- bar : E → E
The reverse of an edge.
Instances For
The terminal vertex of an edge, defined as the initial vertex of its reverse.
Equations
- LeanPool.Polylean.term graph e = graph.init (graph.bar e)
Instances For
The number of edges in an edge path.
Equations
- (LeanPool.Polylean.EdgePath.single y).length = 0
- (LeanPool.Polylean.EdgePath.cons e a a_1 path).length = path.length + 1
Instances For
concatenates two edgepaths
Equations
- LeanPool.Polylean.multiply (LeanPool.Polylean.EdgePath.single y) q = q
- LeanPool.Polylean.multiply (LeanPool.Polylean.EdgePath.cons ex h1 h2 exy) q = LeanPool.Polylean.EdgePath.cons ex h1 h2 (LeanPool.Polylean.multiply exy q)
Instances For
proves that "single x" is an identity element for multiplication
reverses an edgepath
Equations
- One or more equations did not get rendered due to their size.
- LeanPool.Polylean.inverse (LeanPool.Polylean.EdgePath.single y) = LeanPool.Polylean.EdgePath.single y
Instances For
defines an edgepath with a single edge
Equations
- LeanPool.Polylean.basicpath x ex h₁ h₂ = LeanPool.Polylean.EdgePath.cons ex h₁ h₂ (LeanPool.Polylean.EdgePath.single y)
Instances For
helper function for reducePath, that reduces the first two edges of the path
Equations
- One or more equations did not get rendered due to their size.
Instances For
reduces given path such that no two consecutive edges are inverses of each other
Equations
- One or more equations did not get rendered due to their size.
- LeanPool.Polylean.reducePath (LeanPool.Polylean.EdgePath.single y) = ⟨LeanPool.Polylean.EdgePath.single y, ⋯⟩
Instances For
defines moves allowing homotopy of edgepaths
- consht {V E : Type} {G : Graph V E} (x : V) : basicht (EdgePath.single x) (EdgePath.single x)
- cancel {V E : Type} {G : Graph V E} (ex ex' : E) {x w y : V} (p : EdgePath G x y) (h : G.init ex = x) (h' : term G ex = w) (t : G.bar ex = ex') : basicht p (EdgePath.cons ex h h' (EdgePath.cons ex' ⋯ ⋯ p))
- mult {V E : Type} {G : Graph V E} {x y z : V} {p q : EdgePath G y z} : basicht p q → ∀ (ex : E) (h' : G.init ex = x) (h : term G ex = y), basicht (EdgePath.cons ex h' h p) (EdgePath.cons ex h' h q)
Instances For
The homotopy class of an edge path.
Equations
Instances For
Homotopy of edge paths as equality of their quotient classes.
Equations
Instances For
proves that homotopy is preserved by multiplying an edge to the left
proves that path is homotopic to itself after appending cancelling pair of edges at its end
defines multiplication of homotopy class with a path to its left
Equations
- LeanPool.Polylean.homotopyLeftMultiplication p₁ = Quot.lift (fun (p : LeanPool.Polylean.EdgePath G y z) => LeanPool.Polylean.htclass (LeanPool.Polylean.multiply p₁ p)) ⋯
Instances For
proves that the multiplication defined above equals homotopy class of multiplied paths
defines multiplication of homotopy
Equations
- p₁ # p₂ = Quot.lift (fun (x_1 : LeanPool.Polylean.EdgePath G x y) => (fun (p : LeanPool.Polylean.EdgePath G x y) => LeanPool.Polylean.homotopyLeftMultiplication p p₂) x_1) ⋯ p₁
Instances For
Multiplication of homotopy classes of composable edge paths.
Equations
- LeanPool.Polylean.«term_#_» = Lean.ParserDescr.trailingNode `LeanPool.Polylean.«term_#_» 65 65 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " # ") (Lean.ParserDescr.cat `term 66))
Instances For
proves that reducePathAux preserves the homotopy class
proves that reducePath preserves the homotopy class
Equations
- LeanPool.Polylean.htMul = { mul := fun (a b : LeanPool.Polylean.ht G x x) => a # b }
Equations
Equations
- LeanPool.Polylean.htSemigroup = { toMul := LeanPool.Polylean.htMul, mul_assoc := ⋯ }