File: edge_orientable.rules

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

object Polytope {

# @category Combinatorics
# True if there exists an edge-orientation (see [[EDGE_ORIENTATION]] for a definition).
# The polytope is required to be 2-cubical.
# @example The following checks a 3-dimensional cube for edge orientability:
# > $p = cube(3);
# > print $p->EDGE_ORIENTABLE;
# | true
# @example A 3-dimensinal cube with one stacked facet is still 2-cubical. Therefore we can check for edge orientability:
# > $p = stack(cube(3),5);
# > print $p->EDGE_ORIENTABLE;
# | true

property EDGE_ORIENTABLE : Bool;


# @category Combinatorics
# List of all edges with orientation, such that for each 2-face the opposite edges point in the same direction.
# Each line is of the form (u v), which indicates that the edge {u,v} is oriented from u to v.
# The polytope is required to be 2-cubical.
# @example The following prints a list of oriented edges of a 2-dimensional cube such that opposing edges have the same orientation:
# > $p = cube(2);
# > print $p->EDGE_ORIENTATION;
# | 0 2
# | 1 3
# | 0 1
# | 2 3

property EDGE_ORIENTATION : Matrix<Int>;


# @category Combinatorics
# Ordered list of edges of a Moebius strip with parallel interior edges. 
# Consists of k lines of the form (v<sub>i</sub> w<sub>i</sub>), for i=1, ..., k. 
#
# The Moebius strip in question is given by the quadrangles 
# (v<sub>i</sub>, w<sub>i</sub>, w<sub>i+1</sub>,v<sub>i+1</sub>), for i=1, ..., k-1, and the quadrangle (v<sub>1</sub>, w<sub>1</sub>, v<sub>k</sub>, w<sub>k</sub>).
#
# Validity can be verified with the client [[validate_moebius_strip]].
# The polytope is required to be 2-cubical.

property MOEBIUS_STRIP_EDGES : Matrix<Int>;


# @category Combinatorics
# Unordered list of quads which forms a Moebius strip with parallel interior edges.
# Each line lists the vertices of a quadrangle in cyclic order.
#
# Validity can be verified with the client [[validate_moebius_strip_quads]].
# The polytope is required to be 2-cubical.

property MOEBIUS_STRIP_QUADS : Matrix<Int>;


rule EDGE_ORIENTABLE, EDGE_ORIENTATION, MOEBIUS_STRIP_EDGES : \
     CUBICALITY, HASSE_DIAGRAM.ADJACENCY, HASSE_DIAGRAM.DECORATION, HASSE_DIAGRAM.INVERSE_RANK_MAP, HASSE_DIAGRAM.TOP_NODE, HASSE_DIAGRAM.BOTTOM_NODE {
   edge_orientable($this);
}

rule MOEBIUS_STRIP_EDGES : MOEBIUS_STRIP_QUADS, \
     HASSE_DIAGRAM.ADJACENCY, HASSE_DIAGRAM.DECORATION, HASSE_DIAGRAM.INVERSE_RANK_MAP, HASSE_DIAGRAM.TOP_NODE, HASSE_DIAGRAM.BOTTOM_NODE {
  $this->MOEBIUS_STRIP_EDGES=validate_moebius_strip_quads($this);
}

}
# Local Variables:
# mode: perl
# c-basic-offset:3
# End: