#  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 PURPSE.  See the
#  GNU General Public License for more details.
#-------------------------------------------------------------------------------

# @topic application
# 
# Matroids encode the concept of "(in)dependence" in an abstract way.  You
# can define matroids via vector configurations or graphs, do basic
# conversions between different descriptions and perform basic operations such
# as deletions and contractions.

IMPORT
  graph

USE
  polytope

file_suffix mat


# A matroid on the set //{0,...,n-1}//.  Here //n// is the same as [[N_ELEMENTS]].
# 
declare object Matroid;

# A valuated matroid. It is given by a matroid and some form of valuation, either on bases
# or circuits. It has two template parameters:
# @tparam Addition Either [[Min]] or [[Max]], has no default on purpose.
# @tparam Scalar An ordered group in which the valuation lives, [[Rational]] by default.
declare object ValuatedMatroid<Addition,Scalar=Rational> : Matroid;

INCLUDE
  help.rules
  matroid_properties.rules
  matroid.rules
  dual.rules
  valuatedmatroid_properties.rules
  matroid_examples.rules
  automorphisms.rules
  _4ti2.rules




# Local Variables:
# mode: perl
# cperl-indent-level: 3
# indent-tabs-mode:nil
# End:
