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:
|