Quivers #
This module defines quivers. A quiver on a type V of vertices assigns to every
pair a b : V of vertices a type a ⟶ b of arrows from a to b. This
is a generalization of Digraph V, which can be thought of as "a proposition a ⟶ b of arrows".
A quiver G on a type V of vertices assigns to every pair a b : V of vertices
a type a ⟶ b of arrows from a to b. This is hence a form of directed multigraphs.
For graphs with no repeated edges, one can either use Quiver.IsThin to demand
that the hom sets are subsingletons, or Digraph V (where the hom sets
are Prop-valued).
Because Category will later extend this class, we call the field Hom.
Except when constructing instances, you should rarely see this, and use the ⟶ notation instead.
- Hom : V → V → Type v
The type of edges/arrows/morphisms between a given source and target.
Instances
Notation for the type of edges/arrows/morphisms between a given source and target in a quiver or category.
Equations
- «term_⟶_» = Lean.ParserDescr.trailingNode `«term_⟶_» 10 11 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⟶ ") (Lean.ParserDescr.cat `term 10))
Instances For
Vᵒᵖ reverses the direction of all arrows of V.
Equations
- Quiver.opposite = { Hom := fun (a b : Vᵒᵖ) => (Opposite.unop b ⟶ Opposite.unop a)ᵒᵖ }
Given an arrow in Vᵒᵖ, we can take the "unopposite" back in V.
Equations
- f.unop = Opposite.unop f
Instances For
The bijection (X ⟶ Y) ≃ (op Y ⟶ op X).
Equations
- Quiver.Hom.opEquiv = { toFun := Opposite.op, invFun := Opposite.unop, left_inv := ⋯, right_inv := ⋯ }
Instances For
Equations
- Quiver.emptyQuiver V = { Hom := fun (x x_1 : Quiver.Empty V) => PEmpty.{?u.9 + 1} }
A quiver is thin if it has no parallel arrows.
Equations
- Quiver.IsThin V = ∀ (a b : V), Subsingleton (a ⟶ b)
Instances For
isThin' is equivalent to IsThin.
It is used by @[to_dual] to be able to translate IsThin.
Equations
- Quiver.IsThin' V = ∀ (a b : V), Subsingleton (b ⟶ a)