File: valuatedmatroid_properties.rules

package info (click to toggle)
polymake 4.6-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 32,288 kB
  • sloc: cpp: 156,233; perl: 42,962; javascript: 30,726; ansic: 2,907; java: 2,654; python: 641; sh: 244; xml: 117; makefile: 61
file content (73 lines) | stat: -rw-r--r-- 2,536 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#  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 ValuatedMatroid {

  ### PROPERTIES ###


  # @category Valuation
  # Defines a valuation on each basis. Entry number i is a valuation on 
  # the i-th element of [[BASES]]. Must fulfill the tropical Plücker relations.
  property VALUATION_ON_BASES : Vector<TropicalNumber<Addition,Scalar>> {
    sub canonical { &canonicalize_tropical_rays; }
  };
  
  # @category Valuation
  # Defines a valuation on each circuit. Row i is a representative of 
  # the i-th element of [[CIRCUITS]]. Must fulfill the tropical circuit
  # valuation axioms. The representative is normalized such that the first
  # non-tropical-zero entry is 0.
  property VALUATION_ON_CIRCUITS : Matrix<TropicalNumber<Addition,Scalar>> {
    sub canonical { &canonicalize_tropical_rays; }
  };

  # @category Combinatorics 
  # This is the matroid subdivision of [[POLYTOPE]] according to the lifting defined by 
  # [[VALUATION_ON_BASES]] (or minus [[VALUATION_ON_BASES]] in the case of max).
  property SUBDIVISION : Array<Set<Int>> {
      sub equal {
         defined(find_permutation(@_))
      }
  }
 
  ### RULES ###
  
  rule VALUATION_ON_BASES : N_ELEMENTS, BASES, CIRCUITS, VALUATION_ON_CIRCUITS {
    valuated_bases_from_circuits($this);
  }
  
  rule VALUATION_ON_CIRCUITS  : N_ELEMENTS, BASES, CIRCUITS, VALUATION_ON_BASES {
    valuated_circuits_from_bases($this);
  }
  
  rule CIRCUITS, N_ELEMENTS : VALUATION_ON_CIRCUITS {
    circuits_supports($this);
  }
  
  rule SUBDIVISION : POLYTOPE, VALUATION_ON_BASES {
      my $v = Addition->orientation * (new Vector<Scalar>($this->VALUATION_ON_BASES));
      $this->SUBDIVISION = polytope::regular_subdivision($this->POLYTOPE->VERTICES, $v);
  }
  
}

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