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
|
# Copyright (c) 1997-2024
# 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.
#-------------------------------------------------------------------------------
# A rational cone in Q^d.
object Cone<Rational> {
# cdd conversion primal <-> dual
rule cdd.convex_hull.primal, cdd.convex_hull: FACETS, LINEAR_SPAN : RAYS | INPUT_RAYS {
cdd_ch_primal($this, $verbose_cdd);
}
weight 4.10;
precondition : N_RAYS | N_INPUT_RAYS;
incurs FacetPerm;
rule cdd.convex_hull.dual, cdd.convex_hull: RAYS, LINEALITY_SPACE, POINTED, LINEALITY_DIM : FACETS | INEQUALITIES {
cdd_ch_dual($this, $verbose_cdd);
}
weight 4.10;
incurs VertexPerm;
# cdd redundancy checks
rule cdd.convex_hull.canon, cdd.convex_hull: POINTED, RAYS, LINEALITY_SPACE : INPUT_RAYS {
cdd_get_non_redundant_points($this);
}
weight 3.10;
incurs VertexPerm;
rule cdd.convex_hull.lineality, cdd.convex_hull: LINEALITY_SPACE, POINTED : INPUT_RAYS {
cdd_get_lineality_space($this);
}
weight 3.10;
rule cdd.convex_hull.redund, cdd.convex_hull: RAYS, RAY_SEPARATORS, LINEALITY_SPACE : INPUT_RAYS {
cdd_eliminate_redundant_points($this);
}
weight 3.20;
precondition : POINTED;
incurs VertexPerm;
rule cdd.convex_hull.separators: RAY_SEPARATORS : RAYS {
cdd_vertex_normals($this);
}
weight 3.20;
incurs VertexPerm;
rule cdd.convex_hull.canon, cdd.convex_hull : FACETS, LINEAR_SPAN : INEQUALITIES {
cdd_get_non_redundant_inequalities($this);
}
weight 3.20;
incurs FacetPerm;
rule cdd.convex_hull.linear_span, cdd.convex_hull : LINEAR_SPAN : INEQUALITIES {
cdd_get_linear_span($this);
}
weight 3.10;
# FIXME potential new rules for symmetry with dual case
# clients would need bool primal as parameter
#
# rule cdd.convex_hull.redund, cdd.convex_hull: FACETS, FACET_CERTIFICATES : INEQUALITIES { # lookup EQUATIONS
# cdd_eliminate_redundant_points($this);
#}
#weight 3.20;
#precondition : FULL_DIM;
#incurs FacetPerm;
# rule cdd.convex_hull.facet_certificates: FACET_CERTIFICATES : FACETS {
# cdd_vertex_normals($this);
#}
#weight 3.20;
}
INCLUDE
lp_rational.rules
# Local Variables:
# cperl-indent-level:3
# mode: perl
# End:
|