If I is an independent set I, and e is an element such that $I \cup \{e\}$ is dependent (in particular e is not in I), then there is a unique circuit contained in $I \cup \{e\}$, called the fundamental circuit of e with respect to I, which moreover contains e. Every circuit is the fundamental circuit of some element with respect to some basis.
i1 : M = matroid({a,b,c,d},{{a,b},{a,c}}) o1 = a matroid of rank 2 on 4 elements o1 : Matroid |
i2 : circuits M o2 = {set {1, 2}, set {3}} o2 : List |
i3 : fundamentalCircuit(M, {a,c}, b) o3 = set {1, 2} o3 : Set |
i4 : fundamentalCircuit(M, set{0,2}, 1) o4 = set {1, 2} o4 : Set |
i5 : fundamentalCircuit(M, set{0,2}, 3) o5 = set {3} o5 : Set |
This method does not perform any checks (e.g. whether $I$ is independent, or if $e$ is not in $I$). If $I \cup \{e\}$ is independent, then (if debugLevel is greater than 0) a warning is printed, and null is returned. In the example below, the elements with indices 2 and 3 are parallel (indeed, both are equal to the column vector (1, 1)). Thus in general it is safer to refer to a subset by its indices, rather than its elements.
i6 : M = matroid matrix{{1,0,1,1},{0,1,1,1}} o6 = a matroid of rank 2 on 4 elements o6 : Matroid |
i7 : circuits M o7 = {set {0, 1, 2}, set {0, 1, 3}, set {2, 3}} o7 : List |
i8 : M_2 o8 = | 1 | | 1 | 2 1 o8 : Matrix ZZ <--- ZZ |
i9 : M_2 == M_3 o9 = true |
i10 : (try fundamentalCircuit (M, M_{1,2}, M_3)) === null o10 = true |
i11 : fundamentalCircuit (M, set{1,2}, 3) o11 = set {2, 3} o11 : Set |
The object fundamentalCircuit is a method function.