Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

4 Oriented Matroids
 4.1 Construction of oriented matroids
 4.2 Attributes
 4.3 Properties
 4.4 Operations
 4.5 Global methods

4 Oriented Matroids

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].

4.1 Construction of oriented matroids

4.1-1 OrientedMatroid
‣ OrientedMatroid( R, or, A, or[, CCs, c], or[, n, r, ChiroCoreList] )( operation )

Returns: An oriented matroid OM.

Constructs am oriented matroid from

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>

4.2 Attributes

4.2-1 OMRank
‣ 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

4.2-2 OMGroundSet
‣ 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 ]

4.2-3 OMLForms
‣ 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 ] ]

4.2-4 OMGeomLattice
‣ 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 ] ] ]

4.2-5 OMCocircuits
‣ 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 ] ]

4.2-6 TopeGraph
‣ 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 ] ]

4.2-7 OMCovectors
‣ 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 ] ] ]

4.2-8 SalvettiComplex
‣ 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 ]>

4.2-9 SalvettiComplex
‣ SalvettiComplex( A )( attribute )

See SalvettiComplex (4.2-8).

4.2-10 FPGroundSet
‣ 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 ] ]
  ]
]

4.2-11 FPOrder
‣ FPOrder( FP )( attribute )

Returns: A function

Returns the order function of the face poset FP.

4.2-12 OMChirotope
‣ 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 ]

4.2-13 OMRankFunction
‣ OMRankFunction( OM )( attribute )

Returns: A function

Returns the rank function of the oriented matroid OM

4.3 Properties

4.3-1 OMIsLinear
‣ 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

4.3-2 HasSimpleSimplex
‣ 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

4.3-3 HasSimpleTriangle
‣ HasSimpleTriangle( OM )( property )

Returns: true or false.

Checks all rank \(3\) localizations for a simple simplex, i.e. a simple triangle.


4.4 Operations

4.4-1 IsLEquiv
‣ 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

4.4-2 HasSimpleSimplexRk
‣ 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

4.4-3 OMLocalizationRk
‣ 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>

4.5 Global methods

4.5-1 OMOperation
‣ 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 ]

4.5-2 OrderCovec
‣ OrderCovec( arg )( function )

Order function for sign vectors.

4.5-3 IsOMEquiv
‣ IsOMEquiv( OM1, OM2 )( function )

Returns: true or false

Determines, if the oriented matroids OM1 and OM2 are isomorphic.

4.5-4 SeparatingSet
‣ SeparatingSet( arg )( function )

The separating set of two sign vectors.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 Bib Ind

generated by GAPDoc2HTML