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
M
containse
.
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 elements of 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 :
e
is a loop ofM✶
;{e}
is a cocircuit ofM
;e
is in no circuit ofM
;e
is 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.loops
is the setM.closure ∅
.M.IsLoop e
means thate : α
is a loop ofM
, defined as the statemente ∈ M.loops
.M.isLoop_tfae
gives a number of properties that are equivalent toIsLoop
.M.IsNonloop e
means thate ∈ M.E
, bute
is not a loop ofM
.M.IsColoop e
means thate
is a loop ofM✶
.M.coloops
is the set of coloops ofM✶
.M.isColoop_tfae
gives a number of properties that are equivalent toIsColoop
.
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 the reverse direction of Matroid.indep_singleton
.
Alias of the forward direction of Matroid.indep_singleton
.
A coloop is a loop of the dual matroid.
See Matroid.isColoop_tfae
for a number of equivalent definitions.
Instances For
If two matroids agree on loops and coloops, and have the same independent sets after loops/coloops are removed, they are equal.