File: rational.rules

package info (click to toggle)
polymake 4.15-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 35,892 kB
  • sloc: cpp: 168,945; perl: 43,410; javascript: 31,575; ansic: 3,007; java: 2,654; python: 632; sh: 268; xml: 117; makefile: 61
file content (94 lines) | stat: -rw-r--r-- 2,715 bytes parent folder | download | duplicates (3)
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: