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