Matroid loops and coloops #
Loops #
A 'loop' of a matroid M is an element e satisfying one of the following equivalent conditions:
e ∈ M.closure ∅;{e}is dependent inM;{e}is a circuit ofM;- no base of
Mcontainse.
In many mathematical contexts, loops can be thought of as 'trivial' or 'zero' elements;
For linearly representable matroids, they correspond to the zero vector,
and for graphic matroids, they correspond to edges incident with just one vertex (aka 'loops').
As trivial as they are, loops can be created from matroids with no loops by taking minors or duals,
so in many contexts it is unreasonable to simply forbid loops from appearing.
For M : Matroid α, this file defines a set Matroid.loops M : Set α,
as well as predicates Matroid.IsLoop M : α → Prop and Matroid.IsNonloop M : α → Prop,
and provides API for interacting with them.
Coloops #
The dual notion of a loop is a 'coloop'. Geometrically, these can be thought of elements that are
skew to the remainder of the matroid. Coloops in graphic matroids are 'bridge' edges of the graph,
and coloops in linearly representable matroids are vectors not spanned by the other vectors
in the matroid.
Coloops also have many equivalent definitions in abstract matroid language;
a coloop is an element of M.E if any of the following equivalent conditions holds :
eis a loop ofM✶;{e}is a cocircuit ofM;eis in no circuit ofM;eis in every base ofM;- for all
X ⊆ M.E,e ∈ X ↔ e ∈ M.closure X, M.E \ {e}is nonspanning.
Main Declarations #
For M : Matroid α:
M.loopsis the setM.closure ∅.M.IsLoop emeans thate : αis a loop ofM, defined as the statemente ∈ M.loops.M.isLoop_tfaegives a number of properties that are equivalent toIsLoop.M.IsNonloop emeans thate ∈ M.E, buteis not a loop ofM.M.IsColoop emeans thateis a loop ofM✶.M.coloopsis the set of coloops ofM✶.M.isColoop_tfaegives a number of properties that are equivalent toIsColoop.M.Looplessis a typeclass meaningMhas no loops.M.removeLoopsis the matroid obtained fromMby restricting to its set of nonloop elements.
Matroid.loops M is the closure of the empty set.
Instances For
Alias of the reverse direction of Matroid.singleton_dep.
Alias of the reverse direction of Matroid.singleton_isCircuit.
Alias of Matroid.IsLoop.notMem_of_indep.
Alias of the reverse direction of Matroid.indep_singleton.
Alias of the forward direction of Matroid.indep_singleton.
Alias of Matroid.isNonloop_of_notMem_closure.
Alias of Matroid.isNonloop_iff_notMem_loops.
A coloop is a loop of the dual matroid.
See Matroid.isColoop_tfae for a number of equivalent definitions.
Instances For
Alias of Matroid.isColoop_iff_mem_coloops.
Alias of Matroid.IsColoop.notMem_isCircuit.
Alias of Matroid.IsBase.isColoop_iff_forall_notMem_fundCircuit.
If two matroids agree on loops and coloops, and have the same independent sets after loops/coloops are removed, they are equal.