#  Copyright (c) 1997-2021
#  Ewgenij Gawrilow, Michael Joswig, and the polymake team
#  Technische Universität Berlin, Germany
#  https://polymake.org
#
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by the
#  Free Software Foundation; either version 2, or (at your option) any
#  later version: http://www.gnu.org/licenses/gpl.txt.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#-------------------------------------------------------------------------------

object VectorConfiguration {

file_suffix vc

# @category Input property
# The Vectors of the configuration
property VECTORS : Matrix<Scalar> {

   method canonical {
      my ($this,$M)=@_;
      if ($this->isa("PointConfiguration")) {
         canonicalize_point_configuration($M);
      }
   }

}


# @category Geometry
# Dimension of the space in which the vector configuration lives.
# Similar to [[Cone::CONE_AMBIENT_DIM]].
property VECTOR_AMBIENT_DIM : Int;


# @category Geometry
# Dimension of the linear hull of the vector configuration.
# Similar to [[Cone::CONE_DIM]].
property VECTOR_DIM : Int;


# @category Geometry
# [[VECTOR_AMBIENT_DIM]] and [[VECTOR_DIM]] coincide.
property FULL_DIM : Bool;


# @category Geometry
# Number of [[VECTORS]].
property N_VECTORS : Int;


# @category Geometry
# Dual basis of the linear hull of the vector configuration
property LINEAR_SPAN : Matrix<Scalar>;

# @category Geometry
# True if all [[VECTORS]] have non-negative coordinates,
# that is, if they all lie entirely in the positive orthant.
property POSITIVE : Bool;


# @category Visualization
# Unique names assigned to the [[VECTORS]].
# If specified, they are shown by visualization tools instead of point indices.
property LABELS : Array<String> : mutable;

# @topic category properties/Matroid properties
# Properties which belong to the corresponding (oriented) matroid

# @category Matroid properties
# Chirotope corresponding to [[VECTORS]]
# @depends topcom
property CHIROTOPE : Text;

# @category Matroid properties
# Oriented circuits of [[VECTORS]], oriented matroid version of [[matroid::Matroid::CIRCUITS]].
property CIRCUITS : Set<Pair<Set<Int>,Set<Int>>>;

# @category Matroid properties
# Oriented cocircuits of [[VECTORS]], oriented matroid version of [[matroid::Matroid::COCIRCUITS]].
property COCIRCUITS : Set<Pair<Set<Int>,Set<Int>>>;

# @category Geometry
# Tells if there exists multiple vectors.
property MULTIPLE_VECTORS : Bool;

}

# Local Variables:
# mode: perl
# c-basic-offset:4
# End:
