File: ideal_properties.rules

package info (click to toggle)
polymake 3.0r2-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 19,752 kB
  • ctags: 30,928
  • sloc: cpp: 151,785; perl: 32,510; ansic: 3,597; java: 2,654; python: 278; makefile: 181; xml: 103; sh: 79
file content (131 lines) | stat: -rw-r--r-- 4,521 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#  Copyright (c) 1997-2015
#  Ewgenij Gawrilow, Michael Joswig (Technische Universitaet Berlin, Germany)
#  http://www.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.
#-------------------------------------------------------------------------------


# Note:
# So far we assume all ideals living in a polynomial ring with a global
# monomial ordering. If you need something else please contact the authors. 
object Ideal {

   # @category Commutative algebra
   # The depth of the ideal.
   # @depends singular
   property DEPTH : Int;

   # @category Commutative algebra
   # The dimension of the ideal, i.e. the Krull dimension of [[RING]]/Ideal.
   # @depends singular
   property DIM : Int;

   # @category Input properties
   # A set of generators usually given by the user and not unique.
   property GENERATORS : Array<Polynomial> {
      sub equal {
         defined(eval { find_permutation(@_) })
      }
   }

   # @category Commutative algebra
   # Subobject containing properties that depend on the monomial ordering of the ring.
   # @depends singular
   property GROEBNER : Groebner : multiple;

   # @category Commutative algebra
   # The Hilbert polynomial of the ideal. For toric ideals this is linked with
   # the Ehrhart polynomial.
   property HILBERT_POLYNOMIAL : Polynomial;

   # @category Commutative algebra
   # True if the ideal can be generated by homogeneous polynomials.
   property HOMOGENEOUS : Bool;

   # @category Commutative algebra
   # True if the ideal can be generated by monomials.
   property MONOMIAL : Bool;

   # @category Commutative algebra
   # True if the is ideal a prime ideal.
   property PRIME : Bool;

   # @category Commutative algebra
   # True if the ideal is a primary ideal. I.e. its [[RADICAL]] is [[PRIME]] and 
   # in the quotient ring by the ideal every zero divisor is nilpotent.
   property PRIMARY : Bool;
   
   # @category Commutative algebra
   # An array containing the primary decomposition of the given ideal, i.e. the
   # contained ideals are [[PRIMARY]] and their intersection is the given ideal.
   # @depends singular
   property PRIMARY_DECOMPOSITION : Array<Ideal>;

   # @category Commutative algebra
   # The radical of the ideal.
   # @depends singular
   property RADICAL : Ideal;

   # @category Commutative algebra
   # The ambient (polynomial) ring containing the ideal.
   property RING : Ring;

   # @category Commutative algebra
   # True if the ideal is the zero ideal.
   property ZERO : Bool;
}

# This object contains all properties of an ideal that depend on the monomial ordering.
object Groebner {

   # @category Commutative algebra
   # The elements of the Groebner basis corresponding to the given order. This
   # may vary for different algorithms, even if the order stays the same.
   # @depends singular
   property BASIS : Array<Polynomial>;

   # @category Commutative algebra
   # The initial order corresponding to the given order. This is always a
   # [[ideal::Ideal::MONOMIAL|MONOMIAL]] ideal, even if only a weight vector is provided. Internally this
   # weight vector will be concatenated with a total order.
   # @depends singular
   property INITIAL_IDEAL : Ideal;

   # @category Input properties
   # The matrix defining the monomial ordering.
   #
   # Note that only one of [[ORDER_MATRIX]], [[ORDER_VECTOR]], [[ORDER_NAME]]
   # should be given.
   property ORDER_MATRIX : Matrix<Int>;
   
   # @category Input properties
   # A weight vector for the monomial ordering.
   #
   # Note that only one of [[ORDER_MATRIX]], [[ORDER_VECTOR]], [[ORDER_NAME]]
   # should be given.
   property ORDER_VECTOR : Vector<Int>;
   
   # @category Input properties
   # A string containing the name of the monomial ordering. Currently we follow
   # the singular conventions, i.e. dp, lex, ds, etc.
   #
   # Note that only one of [[ORDER_MATRIX]], [[ORDER_VECTOR]], [[ORDER_NAME]]
   # should be given.
   property ORDER_NAME : String;

}

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