Oriented matroids are abstractions of real hyperplane arrangements. The following describes functions to handle oriented matroids and compute associated cell complexes and invariants. See [BLVS+99].
‣ OrientedMatroid( R, or, A, or[, CCs, c], or[, n, r, ChiroCoreList] ) | ( operation ) |
Returns: An oriented matroid OM.
Constructs am oriented matroid from
a list R of vectors representing defining linear forms of real hyperplanes,
a real hyperplane arrangement A,
a list of lists CVs of signed covectors and a string c="cv",
intergers n,r giving the size of the groundset and the rank and a list ChiroCoreList \(\subseteq \{0,1,-1\}^m (m = \binom{n}{r})\) presenting the chirotope
of the oriented matroid.
gap> A:=AGpql(2,2,3); OM:=OrientedMatroid(Roots(A)); <OrientedMatroid: 6 elements, rank 3> gap> A:=AGpql(2,2,3); OM:=OrientedMatroid(A); <OrientedMatroid: 6 elements, rank 3> gap> OrientedMatroid([[[1,1],[-1,1],[1,-1],[-1,-1]],[[0,1],[0,-1],[1,0],[-1,0]],[[0,0]]],"cv"); <OrientedMatroid: 2 elements, rank 2> gap> OrientedMatroid(2,3,[1,1,1]); <OrientedMatroid: 3 elements, rank 2>
‣ OMRank( OM ) | ( attribute ) |
Returns: An integer
Returns the rank of the oriented matroid OM.
gap> A := AGpql(2,2,3); OM := OrientedMatroid(A); <OrientedMatroid: 6 elements, rank 3> gap> OMRank(OM); 3
‣ OMGroundSet( OM ) | ( attribute ) |
Returns: A list
Returns the ground set of the oriented matroid OM.
gap> A := AGpql(2,2,3); OM := OrientedMatroid(A); <OrientedMatroid: 6 elements, rank 3> gap> OMGroundSet(OM); [ 1, 2, 3, 4, 5, 6 ]
‣ OMLForms( OM ) | ( attribute ) |
Returns: A list of linear forms or fail
Returns the list of linear forms associated with the oriented matroid OM. If the internal component OM!.lforms is not bound, fail is returned.
gap> A := AGpql(2,2,3); OM := OrientedMatroid(A); <OrientedMatroid: 6 elements, rank 3> gap> OMLForms(O); [ [ 1, 1, 0 ], [ 1, -1, 0 ], [ 1, 0, 1 ], [ 1, 0, -1 ], [ 0, 1, 1 ], [ 0, 1, -1 ] ]
‣ OMGeomLattice( OM ) | ( attribute ) |
Returns: An object of type IsGeomLattice or fail
Constructs the geometric lattice associated with the oriented matroid OM. If OM is linear (as determined by OMIsLinear(OM)), the lattice is computed as the intersection lattice of the hyperplane arrangement given by OMLForms(OM), stored in the internal component OM!.lattice, and returned.
gap> O := OrientedMatroid([[1,0,0],[0,1,0],[0,0,1],[1,1,1]]); <OrientedMatroid: 4 elements, rank 3> gap> L:=OMGeomLattice(O); LGroundSet(L); <Geometric lattice: 4 atoms, rank 3> [ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ] ], [ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ], [ 1, 4 ], [ 2, 4 ], [ 3, 4 ] ], [ [ 1, 2, 3, 4 ] ] ] gap> O := OrientedMatroid(3,4,[1,1,1,1]); <OrientedMatroid: 4 elements, rank 3> gap> L:=OMGeomLattice(O); LGroundSet(L); <Geometric lattice: 4 atoms, rank 3> [ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ] ], [ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ], [ 1, 4 ], [ 2, 4 ], [ 3, 4 ] ], [ [ 1, 2, 3, 4 ] ] ]
‣ OMCocircuits( OM ) | ( attribute ) |
Returns: A list
Computes the (signed) cocircuits of the oriented matroid OM.
The result is a list of sign vectors.
gap> O:=OrientedMatroid([[1,0],[0,1],[1,1]]); OMCocircuits(O); <OrientedMatroid: 3 elements, rank 2> [ [ 0, 1, 1 ], [ 0, -1, -1 ], [ 1, 0, 1 ], [ -1, 0, -1 ], [ -1, 1, 0 ], [ 1, -1, 0 ] ]
‣ TopeGraph( OM ) | ( attribute ) |
Returns: A graph
Constructs the tope graph of the oriented matroid OM. The topes are obtained as the maximal covectors from OMCovectors(OM). Two topes are connected by an edge if their separating set consists of one element.
gap> O := OrientedMatroid([[1,0],[0,1],[1,1]]); <OrientedMatroid: 3 elements, rank 2> gap> G := ShallowCopy(TopeGraph(O)); gap> Vertices(G); [ 1 .. 6 ] gap> IsSimpleGraph(G); true gap> UndirectedEdges(G); [ [ 1, 3 ], [ 1, 5 ], [ 2, 4 ], [ 2, 6 ], [ 3, 6 ], [ 4, 5 ] ]
‣ OMCovectors( OM ) | ( attribute ) |
Returns: A list of lists
Computes all covectors of the oriented matroid OM. The result is returned as a list of lists, where the \(k\)-th inner list is a list of covectors corresponding to faces of dimension \(k-1\).
gap> O := OrientedMatroid([[1,0],[0,1],[1,1]]); <OrientedMatroid: 3 elements, rank 2> gap> OMCovectors(O); [ [ [ -1, 1, -1 ], [ 1, -1, 1 ], [ -1, -1, -1 ], [ 1, 1, 1 ], [ -1, 1, 1 ], [ 1, -1, -1 ] ], [ [ 0, 1, 1 ], [ 0, -1, -1 ], [ 1, 0, 1 ], [ -1, 0, -1 ], [ -1, 1, 0 ], [ 1, -1, 0 ] ], [ [ 0, 0, 0 ] ] ]
‣ SalvettiComplex( OM, or, A ) | ( attribute ) |
Returns: A FacePoset
Constructs the Salvetti complex [Sal87] associated with the oriented matroid OM or the real hyperplane arrangement A.
gap> O := OrientedMatroid([[1,0],[0,1],[1,1]]); <OrientedMatroid: 3 elements, rank 2> gap> SalvettiComplex(O); <FacePoset of dimension 2 with f-vector [ 6, 12, 6 ]> gap> A:=HyperplaneArrangement([[1,0],[0,1],[1,1]]); <HyperplaneArrangement: 3 hyperplanes in 2-space> gap> SalvettiComplex(A); <FacePoset of dimension 2 with f-vector [ 6, 12, 6 ]>
‣ SalvettiComplex( A ) | ( attribute ) |
See SalvettiComplex (4.2-8).
‣ FPGroundSet( FP ) | ( attribute ) |
Returns: A list
Returns the ground set of the face poset FP.
gap> S := SalvettiComplex(O); <FacePoset of dimension 2 with f-vector [ 6, 12, 6 ]> gap> FPGroundSet(S); [ [ [ [ -1, 1, -1 ], [ -1, 1, -1 ] ], [ [ 1, -1, 1 ], [ 1, -1, 1 ] ], [ [ -1, -1, -1 ], [ -1, -1, -1 ] ], [ [ 1, 1, 1 ], [ 1, 1, 1 ] ], [ [ -1, 1, 1 ], [ -1, 1, 1 ] ], [ [ 1, -1, -1 ], [ 1, -1, -1 ] ] ], [ [ [ -1, 0, -1 ], [ -1, 1, -1 ] ], [ [ -1, 1, 0 ], [ -1, 1, -1 ] ], [ [ 1, 0, 1 ], [ 1, -1, 1 ] ], [ [ 1, -1, 0 ], [ 1, -1, 1 ] ], [ [ 0, -1, -1 ], [ -1, -1, -1 ] ], [ [ -1, 0, -1 ], [ -1, -1, -1 ] ], [ [ 0, 1, 1 ], [ 1, 1, 1 ] ], [ [ 1, 0, 1 ], [ 1, 1, 1 ] ], [ [ 0, 1, 1 ], [ -1, 1, 1 ] ], [ [ -1, 1, 0 ], [ -1, 1, 1 ] ], [ [ 0, -1, -1 ], [ 1, -1, -1 ] ], [ [ 1, -1, 0 ], [ 1, -1, -1 ] ] ], [ [ [ 0, 0, 0 ], [ -1, 1, -1 ] ], [ [ 0, 0, 0 ], [ 1, -1, 1 ] ], [ [ 0, 0, 0 ], [ -1, -1, -1 ] ], [ [ 0, 0, 0 ], [ 1, 1, 1 ] ], [ [ 0, 0, 0 ], [ -1, 1, 1 ] ], [ [ 0, 0, 0 ], [ 1, -1, -1 ] ] ] ]
‣ FPOrder( FP ) | ( attribute ) |
Returns: A function
Returns the order function of the face poset FP.
‣ OMChirotope( OM ) | ( attribute ) |
Returns: A function
Returns the chirotope given as a function from \(\binom{E}{r} \to \{0,\pm 1\}\), where \(E\) is the groundset of \(OM\) and \(r\) is the rank of OM.
gap> O:=OrientedMatroid(2,3,[1,1,1]); c:=OMChirotope(O); <OrientedMatroid: 3 elements, rank 2> function( S ) ... end gap> List(Combinations([1..3],2),x->c(x)); [ 1, 1, 1 ]
‣ OMRankFunction( OM ) | ( attribute ) |
Returns: A function
Returns the rank function of the oriented matroid OM
‣ OMIsLinear( OM ) | ( property ) |
Returns: true or false
Determines whether the oriented matroid OM is linear. This is the case if the internal component OM!.lforms is bound.
gap> A := AGpql(2,2,3); OM := OrientedMatroid(A); <OrientedMatroid: 6 elements, rank 3> gap> OMIsLinear(OM); true gap> O := OrientedMatroid(3,4,[1,1,1,1]); <OrientedMatroid: 4 elements, rank 3> gap> OMIsLinear(O); false
‣ HasSimpleSimplex( OM ) | ( property ) |
Returns: true or false
Returns whether the oriented matroid OM has a simple simplex, i.e. a simplicial Tope \(T\) such that the localizations at its vertices are boolean and there is another rank 1 covector not adjacent to \(T\). If Rank(OM) \(\geq 3\) and this is true then its Salvetti complex can not be \(K(\pi,1)\).
gap> O:=OrientedMatroid([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1],[1,1,1,1]]); <OrientedMatroid: 5 elements, rank 4> gap> HasSimpleSimplex(O); - tope: [ -1, -1, -1, -1, -1 ] - vertices: [ [ 0, 0, 0, -1, -1 ], [ 0, 0, -1, 0, -1 ], [ 0, -1, 0, 0, -1 ], [ -1, 0, 0, 0, -1 ] ] true
‣ HasSimpleTriangle( OM ) | ( property ) |
Returns: true or false.
Checks all rank \(3\) localizations for a simple simplex, i.e. a simple triangle.
‣ IsLEquiv( OM1, OM2 ) | ( operation ) |
Returns: true or false
Determines if the oriented matroids OM1 and OM2 have isomorphic geometric lattices.
gap> O1:=OrientedMatroid(3,4,[1,1,1,1]); <OrientedMatroid: 4 elements, rank 3> gap> O2:=OrientedMatroid([[1,0,0],[0,1,0],[0,0,1],[1,1,1]]); <OrientedMatroid: 4 elements, rank 3> gap> IsLEquiv(O1,O2); true gap> O2:=OrientedMatroid([[1,0,0],[0,1,0],[0,0,1],[1,1,0]]); <OrientedMatroid: 4 elements, rank 3> gap> IsLEquiv(O1,O2); false
‣ HasSimpleSimplexRk( OM, k ) | ( operation ) |
Returns: true or false
Returns whether the oriented matroid OM has a localiazion of rank k with a simple Simplex. If this is true for \(k \geq 3\) then its Salvetti complex can not be \(K(\pi,1)\).
gap> O:=OrientedMatroid([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1],[1,1,1,0]]); <OrientedMatroid: 5 elements, rank 4> gap> HasSimpleSimplex(O); false gap> HasSimpleSimplexRk(O,3); true
‣ OMLocalizationRk( OM, F, k ) | ( operation ) |
Returns: An oriented matroid
Returns the rank k localization of OM at the flat F.
gap> O:=OrientedMatroid([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1],[1,1,1,0]]); <OrientedMatroid: 5 elements, rank 4> gap> L:=OMGeomLattice(O); <Geometric lattice: 5 atoms, rank 4> gap> LkFlats(L)(3); [ [ 1, 2, 3, 5 ], [ 1, 2, 4 ], [ 1, 3, 4 ], [ 2, 3, 4 ], [ 1, 4, 5 ], [ 2, 4, 5 ], [ 3, 4, 5 ] ] gap> OMLocalizationRk(O,[1,2,3,5],3); <OrientedMatroid: 4 elements, rank 3>
‣ OMOperation( sv1, sv2 ) | ( function ) |
Returns: A list
Performs the oriented matroid operation on two signed vectors sv1 and sv2. For each position i, if sv1[i] is nonzero, it is used; otherwise sv2[i] is used. Returns a new signed vector representing the result of the operation.
gap> CVs:=OMCovectors(O)[2]; [ [ 0, 1, 1 ], [ 0, -1, -1 ], [ 1, 0, 1 ], [ -1, 0, -1 ], [ -1, 1, 0 ], [ 1, -1, 0 ] ] gap> sv1 := CVs[3]; sv2 := CVs[5]; [ 1, 0, 1 ] [ -1, 1, 0 ] gap> OMOperation(sv1, sv2); [ 1, 1, 1 ] gap> OMOperation(sv2, sv1); [ -1, 1, 1 ]
‣ OrderCovec( arg ) | ( function ) |
Order function for sign vectors.
‣ IsOMEquiv( OM1, OM2 ) | ( function ) |
Returns: true or false
Determines, if the oriented matroids OM1 and OM2 are isomorphic.
‣ SeparatingSet( arg ) | ( function ) |
The separating set of two sign vectors.
generated by GAPDoc2HTML