http://www.math.tu-berlin.de/polymake
Polymake is a (more and more versatile) tool for the algorithmic
treatment of convex polyhedra and finite simplicial complexes.
As one of its many new features polymake now also deals with
tight spans: This is the bounded subcomplex of a certain
unbounded polyhedron associated to a finite metric space.
The system offers access to a wide variety of algorithms and
packages within a common framework. polymake is flexible and
continuously expanding. The software supplies C++ and perl
interfaces which make it highly adaptable to individual needs.
This is a trivial wrapper for the wonderful polymake package.
Note that this is rather a proof of concept, so if you think
you've got a better design idea, go ahead and comment below.
So far, only little of the polymake functionality is covered,
but it's mostly very easy to extend.
Usage
You can find some simple examples in SandBox polymake. There, you can also try it out online!
Design
I've decided to communicate with polymake for a start via file I/O, but would be easy to change this if necessary. Every polymake object created is stored with a "canonical" name: For example, if you ask for a cube of dimension 4, axiom will issue the shell command cube cube4.poly 4
. Then, when you ask for a property of this cube, for example, the hvector, then the shell command polymake cube4.poly H_VECTOR > tmp.poly
is issued. Finally axiom reads the contents of tmp.poly
and converts it to the appropriate type. Thus, the only thing that really has to be programmed is a conversion routine for every polymake type. Some of these are trivial, like the Boolean, vector or matrix types, some others need more thought.
Currently there are only two domains: Polytope
and SimplicialComplex
. If you want a particular polymake property or construction supported, or want to have a new domain like Graph
, go ahead and change the contents of this file. If you need help, you can always ask me.
fricas
(1) -> )lib STRCNV READFILE
StringConversions is now explicitly exposed in frame initial
StringConversions will be automatically loaded when needed from
/var/aw/var/LatexWiki/STRCNV.NRLIB/STRCNV
ReadFile is now explicitly exposed in frame initial
ReadFile will be automatically loaded when needed from
/var/aw/var/LatexWiki/READFILE.NRLIB/READFILE
spad
)abbrev domain POLYTOPE Polytope
Polytope(): Exports == Implementation where
Cardinal ==> NonNegativeInteger
Scalar ==> Fraction Integer
Exports == with
coerce: % -> OutputForm
-------------------------------------------------------------------------------
-- polytope constructions --
-------------------------------------------------------------------------------
cube: Integer -> %
cross: Integer -> %
rand01: (Integer, Integer) -> %
randSphere: (Integer, Integer) -> %
-------------------------------------------------------------------------------
-- polytope properties --
-------------------------------------------------------------------------------
points: % -> Matrix Scalar
++ Points such that the polyhedron is their convex hull. Redundancies are
++ allowed. Vector (x0 x1 .. xd) represents a point in (d+1)-space
++ (homogeneous coordinates.) Affine points are identified by x0 >
++ 0. Points with x0 = 0 can be interpreted as rays. polymake
++ automatically normalizes each coordinate vector, dividing them by the
++ first non-zero element. The clients and rule subroutines can always
++ assume that x0 is either 0 or 1. Dual to INEQUALITIES. Input section
++ only. Ask for VERTICES if you want to compute a V-representation from
++ an H-representation.
vertices: % -> Matrix Scalar
++ Vertices of the polyhedron. No redundancies are allowed. The
++ coordinates are normalized the same way as POINTS. Dual to FACETS.
inequalities: % -> Matrix Scalar
++ Inequalities that describe half-spaces such that the polyhedron is
++ their intersection. Redundancies are allowed. Dual to POINTS. A
++ vector (A0 A1 .. Ad) defines the (closed affine) half-space of points
++ (1,x1,..,xd) such that A0 + A1 x1 + .. + Ad xd >= 0. Input section
++ only. Ask for FACETS and AFFINE_HULL if you want to compute an
++ H-representation from a V-representation.
facets: % -> Matrix Scalar
++ Facets of the polyhedron, encoded as INEQUALITIES. Dual to VERTICES.
equations: % -> Matrix Scalar
++ Equations that hold for all points of the polyhedron. A vector (A0 A1
++ .. Ad) describes the hyperplane of all points (1,x1,..,xd) such that
++ A0 + A1 x1 + .. + Ad xd = 0. Input section only. Ask for AFFINE_HULL
++ if you want to see an irredundant description of the affine span.
affineHull: % -> Matrix Scalar
++ Dual basis of the affine hull of the polyhedron.
vertexNormals: % -> Matrix Scalar
++ The i-th row is the normal vector of a hyperplane separating the i-th
++ vertex from the rest ones. This property is a by-product of redundant
++ point elimination algorithm.
validPoint: % -> Vector Scalar
++ Some point belonging to the polyhedron.
dim: % -> Cardinal
++ Dimension of the affine hull of the polyhedron = dimension of the
++ polyhedron. If the polytope is given purely combinatorically, it's the
++ dimension of a minimal embedding space deduced from the combinatorial
++ structure.
ambientDim: % -> Cardinal
++ Dimension of the space where the polyhedron lives in.
feasible: % -> Boolean
++ True if the polyhedron is not empty.
pointed: % -> Boolean
++ True if the polyhedron does not contain an affine line.
farFace: % -> Set Cardinal
++ Indices of vertices that are rays.
unboundedFacets: % -> Set Cardinal
++ Indices of facets that are unbounded.
bounded: % -> Boolean
++ True if the polyhedron is a bounded polytope.
-- boundedGraph: % -> Graph
-- ++ Graph of the bounded subcomplex.
centered: % -> Boolean
++ True if (1,0,0,..) is a relative interior point. Polar to BOUNDED.
positive: % -> Boolean
++ True if all vertices of the polyhedron have non-negative coordinates,
++ that is, it lies entirely in the positive orthant.
nPoints: % -> Cardinal
++ Number of points.
nInequalities: % -> Cardinal
++ Number of inequalities.
vertexBarycenter: % -> Vector Scalar
++ The center of gravity of the vertices of a bounded polytope.
minimalVertexAngle: % -> Scalar
++ The minimum angle between any two vertices (seen from the
++ VERTEXBARYCENTER).
zonotopeInputVectors: % -> Matrix Scalar
++ Contains the vector configuration for which a zonotope can be built.
reverseTransformation: % -> Matrix Scalar
++ Some invertible linear transformation that can be used to get back a
++ previous coordinate repersentation of the polytope. It operates from
++ the right on point row vectors (e.g. in properties like POINTS,
++ VERTICES, REL_INT_POINT); its inverse operates from the left on
++ hyperplane column vectors.
-- vertexLabels: % -> array<label>
-- ++ Unique names assigned to the VERTICES. If specified, they are shown by
-- ++ visualization tools instead of vertex indices. For a polytope build
-- ++ from scratch, you should create this property by yourself, either
-- ++ manually in a text editor, or with a client program. If you build a
-- ++ polytope with a construction client taking some other input
-- ++ polytope(s), you can create the labels automatically if you call the
-- ++ client with a -relabel option. The exact format of the labels is
-- ++ dependent on the construction, and is described by the corresponding
-- ++ client.
-- facetLabels: % -> array<label>
-- ++ Unique names assigned to the FACETS, analogous to VERTEX_LABELS.
galeTransform: % -> Matrix Scalar
++ Coordinates of the Gale transform.
steinerPoints: % -> Matrix Scalar
++ A weighted inner point depending on the outer angle called Steiner
++ point for all faces of dimensions 2 to d.
-- Combinatorics
nVertices: % -> Cardinal
++ Number of vertices.
nBoundedVertices: % -> Cardinal
++ Number of bounded vertices (non-rays).
nFacets: % -> Cardinal
++ Number of facets.
nVertexFacetInc: % -> Cardinal
++ Number of pairs of incident vertices and facets.
-- verticesInFacets: % -> incidence_matrix
-- ++ Vertex-facet incidence matrix, with rows corresponding to facets and
-- ++ columns to vertices. Vertices and facets are numbered from 0 to
-- ++ N_VERTICES-1 rsp. N_FACETS-1, according to their order in VERTICES
-- ++ rsp. FACETS.
-- facetsThruVertices: % -> incidence_matrix
-- ++ transposed VERTICES_IN_FACETS
-- hasseDiagram: % -> face_lattice
-- ++ The face lattice of the polytope organized as a directed graph. Each
-- ++ node corresponds to some proper face of the polytope. The nodes
-- ++ corresponding to the vertices and facets appear in the same order as
-- ++ the elements of VERTICES and FACETS properties. Two special nodes
-- ++ represent the whole polytope and the empty face.
-- vertexSizes: % -> array<Cardinal>
-- ++ Number of incident facets for each vertex.
-- facetSizes: % -> array<Cardinal>
-- ++ Number of incident vertices for each facet.
--
-- graph: % -> graph
-- ++ Vertex-edge graph.
--
-- dualGraph: % -> graph
-- ++ Facet-ridge graph. Dual to GRAPH.
nEdges: % -> Cardinal
++ Number of edges.
nRidges: % -> Cardinal
++ Number of ridges.
-- vertexDegrees: % -> array<Cardinal>
-- ++ Degrees of vertices in the GRAPH.
-- facetDegrees: % -> array<Cardinal>
-- ++ Degrees of facets in the DUAL_GRAPH.
diameter: % -> Cardinal
++ Graph theoretical diameter of GRAPH.
dualDiameter: % -> Cardinal
++ Graph theoretical diameter of DUAL_GRAPH.
triangleFree: % -> Boolean
++ True if GRAPH does not contain a triangle.
dualTriangleFree: % -> Boolean
++ True if DUAL_GRAPH does not contain a triangle.
altshulerDet: % -> Cardinal
++ Let M be the vertex-facet incidence matrix, then the Altshulter
++ determinant is defined as max{det(M?MT), det(MT?M)}.
fVector: % -> Vector Cardinal
++ fk is the number of k-faces.
f2Vector: % -> Matrix Cardinal
++ fik is the number of incident pairs of i-faces and k-faces; the main
++ diagonal contains the F_VECTOR.
flagVector: % -> Vector Cardinal
++ Condensed form of the flag vector. Use Dehn-Sommerville equations, via
++ user function N_FLAGS, to extend.
cdIndexCoefficients: % -> Vector Cardinal
++ Coefficients of the cd-index.
hVector: % -> Vector Cardinal
++ Simplicial h-vector. Defined for simplicial polytopes and also for
++ their duals.
cubicalHVector: % -> Vector Cardinal
++ undocumented
essentiallyGeneric: % -> Boolean
++ all intermediate polytopes (with respect to the given insertion order)
++ in the beneath-and-beyond algorithm are simplicial. We have the ++
++ implication : VERTICES in general position => ESSENTIALLY_GENERIC =>
++ SIMPLICIAL
simplicial: % -> Boolean
++ True if the polytope is simplicial.
simple: % -> Boolean
++ True if the polytope is simple. Dual to SIMPLICIAL.
even: % -> Boolean
++ True if the GRAPH of the polytope is bipartite.
dualEven: % -> Boolean
++ True if the DUAL_GRAPH of the polytope is bipartite. Dual to EVEN.
connectivity: % -> Cardinal
++ Node connectivity of the GRAPH of the polytope, that is, the minimal
++ number of nodes to be removed from the graph such that the result is
++ disconnected.
dualConnectivity: % -> Cardinal
++ Node connectivity of the DUAL_GRAPH of the polytope. Dual to
++ CONNECTIVITY.
simpliciality: % -> Cardinal
++ Maximal dimension in which all faces are simplices.
simplicity: % -> Cardinal
++ Maximal dimension in which all dual faces are simplices.
faceSimplicity: % -> Cardinal
++ Maximal dimension in which all faces are simple polytopes.
cubical: % -> Boolean
++ True if all facets are cubes.
cubicality: % -> Cardinal
++ Maximal dimension in which all facets are cubes.
cocubical: % -> Boolean
++ Dual to CUBICAL.
cocubicality: % -> Cardinal
++ Dual to CUBICALITY.
neighborly: % -> Boolean
++ True if the polytope is neighborly.
neighborliness: % -> Cardinal
++ Maximal dimension in which all facets are neighborly.
balanced: % -> Boolean
++ Dual to NEIGHBORLY.
balance: % -> Cardinal
++ Maximal dimension in which all facets are balanced.
fatness: % -> Scalar
++ Parameter describing the shape of the face-lattice of a 4-polytope.
complexity: % -> Scalar
Implementation == add
polydir: String := "/tmp/"
polytmp: String := polydir "tmp.poly"
polylib: String := "/usr/local/polymake/bin"
polytmpfile:FileName := polytmp::FileName
Rep := String
coerce p == coerce(p)$Rep
polycons: (String, String, String) -> %
polycons(rep, cmd, prm) ==
systemCommand("system " cmd " " polydir rep ".poly " prm)_
$MoreSystemCommands
rep::Rep
polyprop: (%, String) -> Void
polyprop(rep, cmd) ==
systemCommand("system polymake " polydir (rep::Rep) ".poly "_
cmd " > " polytmp)$MoreSystemCommands
-------------------------------------------------------------------------------
-- polytope constructions --
-------------------------------------------------------------------------------
cube n ==
polycons("cube" string(n), "cube", string(n))
cross n ==
polycons("cross" string(n), "cross", string(n))
rand01(d, n) ==
polycons("rand01" string(d) string(n), "rand01", _
string(d) " " string(n))
randSphere(d, n) ==
polycons("randsphere" string(d) string(n), "rand__sphere", _
string(d) " " string(n))
-------------------------------------------------------------------------------
-- polytope properties --
-------------------------------------------------------------------------------
points s ==
polyprop(s, "POINTS")
getMatrixFraction(polytmpfile)$ReadFile
vertices s ==
polyprop(s, "VERTICES")
getMatrixFraction(polytmpfile)$ReadFile
inequalities s ==
polyprop(s, "INEQUALITIES")
getMatrixFraction(polytmpfile)$ReadFile
facets s ==
polyprop(s, "FACETS")
getMatrixFraction(polytmpfile)$ReadFile
equations s ==
polyprop(s, "EQUATIONS")
getMatrixFraction(polytmpfile)$ReadFile
affineHull s ==
polyprop(s, "AFFINE__HULL")
getMatrixFraction(polytmpfile)$ReadFile
vertexNormals s ==
polyprop(s, "VERTEX__NORMALS")
getMatrixFraction(polytmpfile)$ReadFile
validPoint s ==
polyprop(s, "VALID__POINT")
getVectorFraction(polytmpfile)$ReadFile
dim s ==
polyprop(s, "DIM")
getInteger(polytmpfile)$ReadFile :: Cardinal
ambientDim s ==
polyprop(s, "AMBIENT__DIM")
getInteger(polytmpfile)$ReadFile :: Cardinal
feasible s ==
polyprop(s, "FEASIBLE")
getBoolean(polytmpfile)$ReadFile
pointed s ==
polyprop(s, "POINTED")
getBoolean(polytmpfile)$ReadFile
farFace s ==
polyprop(s, "FAR__FACE")
getSetInteger(polytmpfile)$ReadFile pretend Set Cardinal
unboundedFacets s ==
polyprop(s, "UNBOUNDED__FACETS")
getSetInteger(polytmpfile)$ReadFile pretend Set Cardinal
bounded s ==
polyprop(s, "BOUNDED")
getBoolean(polytmpfile)$ReadFile
centered s ==
polyprop(s, "CENTERED")
getBoolean(polytmpfile)$ReadFile
positive s ==
polyprop(s, "POSITIVE")
getBoolean(polytmpfile)$ReadFile
nPoints s ==
polyprop(s, "N__POINTS")
getInteger(polytmpfile)$ReadFile :: Cardinal
nInequalities s ==
polyprop(s, "N__INEQUALITIES")
getInteger(polytmpfile)$ReadFile :: Cardinal
vertexBarycenter s ==
polyprop(s, "VERTEX__BARYCENTER")
getVectorFraction(polytmpfile)$ReadFile
minimalVertexAngle s ==
polyprop(s, "MINIMAL__VERTEX__ANGLE")
getFraction(polytmpfile)$ReadFile
zonotopeInputVectors s ==
polyprop(s, "ZONOTOPE__INPUT__VECTORS")
getMatrixFraction(polytmpfile)$ReadFile
reverseTransformation s ==
polyprop(s, "REVERSE__TRANSFORMATION")
getMatrixFraction(polytmpfile)$ReadFile
-- vertexLabels: % -> array<label>
-- facetLabels: % -> array<label>
galeTransform s ==
polyprop(s, "GALE__TRANSFORM")
getMatrixFraction(polytmpfile)$ReadFile
steinerPoints s ==
polyprop(s, "STEINER__POINTS")
getMatrixFraction(polytmpfile)$ReadFile
-- Combinatorics
nVertices s ==
polyprop(s, "N__VERTICES")
getInteger(polytmpfile)$ReadFile :: Cardinal
nBoundedVertices s ==
polyprop(s, "N__BOUNDED__VERTICES")
getInteger(polytmpfile)$ReadFile :: Cardinal
nFacets s ==
polyprop(s, "N__FACETS")
getInteger(polytmpfile)$ReadFile :: Cardinal
nVertexFacetInc s ==
polyprop(s, "N__VERTEX__FACET__INC")
getInteger(polytmpfile)$ReadFile :: Cardinal
-- verticesInFacets: % -> incidence_matrix
-- ++ Vertex-facet incidence matrix, with rows corresponding to facets and
-- ++ columns to vertices. Vertices and facets are numbered from 0 to
-- ++ N_VERTICES-1 rsp. N_FACETS-1, according to their order in VERTICES
-- ++ rsp. FACETS.
-- facetsThruVertices: % -> incidence_matrix
-- ++ transposed VERTICES_IN_FACETS
-- hasseDiagram: % -> face_lattice
-- ++ The face lattice of the polytope organized as a directed graph. Each
-- ++ node corresponds to some proper face of the polytope. The nodes
-- ++ corresponding to the vertices and facets appear in the same order as
-- ++ the elements of VERTICES and FACETS properties. Two special nodes
-- ++ represent the whole polytope and the empty face.
-- vertexSizes: % -> array<Cardinal>
-- ++ Number of incident facets for each vertex.
-- facetSizes: % -> array<Cardinal>
-- ++ Number of incident vertices for each facet.
--
-- graph: % -> graph
-- ++ Vertex-edge graph.
--
-- dualGraph: % -> graph
-- ++ Facet-ridge graph. Dual to GRAPH.
nEdges s ==
polyprop(s, "N__EDGES")
getInteger(polytmpfile)$ReadFile :: Cardinal
nRidges s ==
polyprop(s, "N__RIDGES")
getInteger(polytmpfile)$ReadFile :: Cardinal
-- vertexDegrees: % -> array<Cardinal>
-- ++ Degrees of vertices in the GRAPH.
-- facetDegrees: % -> array<Cardinal>
-- ++ Degrees of facets in the DUAL_GRAPH.
diameter s ==
polyprop(s, "DIAMETER")
getInteger(polytmpfile)$ReadFile :: Cardinal
dualDiameter s ==
polyprop(s, "DUAL__DIAMETER")
getInteger(polytmpfile)$ReadFile :: Cardinal
triangleFree s ==
polyprop(s, "TRIANGLE__FREE")
getBoolean(polytmpfile)$ReadFile
dualTriangleFree s ==
polyprop(s, "DUAL__TRIANGLE__FREE")
getBoolean(polytmpfile)$ReadFile
altshulerDet s ==
polyprop(s, "ALTSHULER__DET")
getInteger(polytmpfile)$ReadFile :: Cardinal
fVector s ==
polyprop(s, "F__VECTOR")
getVectorInteger(polytmpfile)$ReadFile pretend Vector Cardinal
f2Vector s ==
polyprop(s, "F2__VECTOR")
getMatrixInteger(polytmpfile)$ReadFile pretend Matrix Cardinal
flagVector s ==
polyprop(s, "FLAG__VECTOR")
getVectorInteger(polytmpfile)$ReadFile pretend Vector Cardinal
cdIndexCoefficients s ==
polyprop(s, "CD__INDEX__COEFFICIENTS")
getVectorInteger(polytmpfile)$ReadFile pretend Vector Cardinal
hVector s ==
polyprop(s, "H__VECTOR")
getVectorInteger(polytmpfile)$ReadFile pretend Vector Cardinal
cubicalHVector s ==
polyprop(s, "CUBICAL__H__VECTOR")
getVectorInteger(polytmpfile)$ReadFile pretend Vector Cardinal
essentiallyGeneric s ==
polyprop(s, "ESSENTIALLY__GENERIC")
getBoolean(polytmpfile)$ReadFile
simplicial s ==
polyprop(s, "SIMPLICIAL")
getBoolean(polytmpfile)$ReadFile
simple s ==
polyprop(s, "SIMPLE")
getBoolean(polytmpfile)$ReadFile
even s ==
polyprop(s, "EVEN")
getBoolean(polytmpfile)$ReadFile
dualEven s ==
polyprop(s, "DUAL__EVEN")
getBoolean(polytmpfile)$ReadFile
connectivity s ==
polyprop(s, "CONNECTIVITY")
getInteger(polytmpfile)$ReadFile :: Cardinal
dualConnectivity s ==
polyprop(s, "DUAL__CONNECTIVITY")
getInteger(polytmpfile)$ReadFile :: Cardinal
simpliciality s ==
polyprop(s, "SIMPLICIALITY")
getInteger(polytmpfile)$ReadFile :: Cardinal
simplicity s ==
polyprop(s, "SIMPLICITY")
getInteger(polytmpfile)$ReadFile :: Cardinal
faceSimplicity s ==
polyprop(s, "FACE__SIMPLICITY")
getInteger(polytmpfile)$ReadFile :: Cardinal
cubical s ==
polyprop(s, "CUBICAL")
getBoolean(polytmpfile)$ReadFile
cubicality s ==
polyprop(s, "CUBICALITY")
getInteger(polytmpfile)$ReadFile :: Cardinal
cocubical s ==
polyprop(s, "COCUBICAL")
getBoolean(polytmpfile)$ReadFile
cocubicality s ==
polyprop(s, "COCUBICALITY")
getInteger(polytmpfile)$ReadFile :: Cardinal
neighborly s ==
polyprop(s, "NEIGHBORLY")
getBoolean(polytmpfile)$ReadFile
neighborliness s ==
polyprop(s, "NEIGHBORLINESS")
getInteger(polytmpfile)$ReadFile :: Cardinal
balanced s ==
polyprop(s, "BALANCED")
getBoolean(polytmpfile)$ReadFile
balance s ==
polyprop(s, "BALANCE")
getInteger(polytmpfile)$ReadFile :: Cardinal
fatness s ==
polyprop(s, "FATNESS")
getFraction(polytmpfile)$ReadFile
complexity s ==
polyprop(s, "FATNESS")
getFraction(polytmpfile)$ReadFile
)abbrev domain TOPAZ SimplicialComplex
SimplicialComplex(): Exports == Implementation where
Exports == with
coerce: % -> OutputForm
-------------------------------------------------------------------------------
-- topaz constructions --
-------------------------------------------------------------------------------
boundaryComplex: Polytope -> %
-------------------------------------------------------------------------------
-- topaz properties --
-------------------------------------------------------------------------------
facets: % -> List Set Integer
Implementation == add
polydir: String := "/tmp/"
polytmp: String := polydir "tmp.poly"
polylib: String := "/usr/local/polymake/bin"
polytmpfile:FileName := polytmp::FileName
Rep := String
coerce p == coerce(p)$Rep
topazcons: (String, String, String) -> %
topazcons(rep, cmd, prm) ==
systemCommand("system " cmd " " polydir rep ".top " prm)_
$MoreSystemCommands
rep::Rep
topazprop: (%, String) -> Void
topazprop(rep, cmd) ==
systemCommand("system polymake -A topaz " polydir (rep::Rep) ".top "_
cmd " > " polytmp)$MoreSystemCommands
facets s ==
topazprop(s, "FACETS")
getListSetInteger(polytmpfile)$ReadFile
boundaryComplex s ==
topazcons(s pretend String, "boundary__complex", _
(s pretend String) ".poly")
s pretend String :: Rep
spad
Compiling FriCAS source code from file
/var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/5224222550985933765-25px002.spad
using old system compiler.
POLYTOPE abbreviates domain Polytope
------------------------------------------------------------------------
initializing NRLIB POLYTOPE for Polytope
compiling into NRLIB POLYTOPE
compiling exported coerce : % -> OutputForm
Time: 0 SEC.
compiling local polycons : (String,String,String) -> %
Time: 0 SEC.
compiling local polyprop : (%,String) -> Void
Time: 0 SEC.
compiling exported cube : Integer -> %
Time: 0 SEC.
compiling exported cross : Integer -> %
Time: 0 SEC.
compiling exported rand01 : (Integer,Integer) -> %
Time: 0 SEC.
compiling exported randSphere : (Integer,Integer) -> %
Time: 0 SEC.
compiling exported points : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported vertices : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported inequalities : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported facets : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported equations : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported affineHull : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported vertexNormals : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported validPoint : % -> Vector Fraction Integer
Time: 0 SEC.
compiling exported dim : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported ambientDim : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported feasible : % -> Boolean
Time: 0 SEC.
compiling exported pointed : % -> Boolean
Time: 0 SEC.
compiling exported farFace : % -> Set NonNegativeInteger
Time: 0 SEC.
compiling exported unboundedFacets : % -> Set NonNegativeInteger
Time: 0 SEC.
compiling exported bounded : % -> Boolean
Time: 0 SEC.
compiling exported centered : % -> Boolean
Time: 0 SEC.
compiling exported positive : % -> Boolean
Time: 0 SEC.
compiling exported nPoints : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported nInequalities : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported vertexBarycenter : % -> Vector Fraction Integer
Time: 0 SEC.
compiling exported minimalVertexAngle : % -> Fraction Integer
Time: 0 SEC.
compiling exported zonotopeInputVectors : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported reverseTransformation : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported galeTransform : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported steinerPoints : % -> Matrix Fraction Integer
Time: 0 SEC.
compiling exported nVertices : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported nBoundedVertices : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported nFacets : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported nVertexFacetInc : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported nEdges : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported nRidges : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported diameter : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported dualDiameter : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported triangleFree : % -> Boolean
Time: 0 SEC.
compiling exported dualTriangleFree : % -> Boolean
Time: 0 SEC.
compiling exported altshulerDet : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported fVector : % -> Vector NonNegativeInteger
Time: 0 SEC.
compiling exported f2Vector : % -> Matrix NonNegativeInteger
Time: 0 SEC.
compiling exported flagVector : % -> Vector NonNegativeInteger
Time: 0 SEC.
compiling exported cdIndexCoefficients : % -> Vector NonNegativeInteger
Time: 0 SEC.
compiling exported hVector : % -> Vector NonNegativeInteger
Time: 0 SEC.
compiling exported cubicalHVector : % -> Vector NonNegativeInteger
Time: 0 SEC.
compiling exported essentiallyGeneric : % -> Boolean
Time: 0 SEC.
compiling exported simplicial : % -> Boolean
Time: 0 SEC.
compiling exported simple : % -> Boolean
Time: 0 SEC.
compiling exported even : % -> Boolean
Time: 0 SEC.
compiling exported dualEven : % -> Boolean
Time: 0 SEC.
compiling exported connectivity : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported dualConnectivity : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported simpliciality : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported simplicity : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported faceSimplicity : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported cubical : % -> Boolean
Time: 0 SEC.
compiling exported cubicality : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported cocubical : % -> Boolean
Time: 0 SEC.
compiling exported cocubicality : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported neighborly : % -> Boolean
Time: 0 SEC.
compiling exported neighborliness : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported balanced : % -> Boolean
Time: 0 SEC.
compiling exported balance : % -> NonNegativeInteger
Time: 0 SEC.
compiling exported fatness : % -> Fraction Integer
Time: 0 SEC.
compiling exported complexity : % -> Fraction Integer
Time: 0 SEC.
(time taken in buildFunctor: 0)
;;; *** |Polytope| REDEFINED
;;; *** |Polytope| REDEFINED
Time: 0 SEC.
Cumulative Statistics for Constructor Polytope
Time: 0.07 seconds
finalizing NRLIB POLYTOPE
Processing Polytope for Browser database:
--->-->Polytope(constructor): Not documented!!!!
--->-->Polytope((coerce ((OutputForm) %))): Not documented!!!!
--->-->Polytope((cube (% (Integer)))): Not documented!!!!
--->-->Polytope((cross (% (Integer)))): Not documented!!!!
--->-->Polytope((rand01 (% (Integer) (Integer)))): Not documented!!!!
--->-->Polytope((randSphere (% (Integer) (Integer)))): Not documented!!!!
--------(points ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((points ((Matrix (Fraction (Integer))) %))): Improper first word in comments: Points
"Points such that the polyhedron is their convex hull. Redundancies are allowed. Vector (\\spad{x0} \\spad{x1} .. \\spad{xd}) represents a point in (\\spad{d+1})-space (homogeneous coordinates.) Affine points are identified by \\spad{x0} > 0. Points with \\spad{x0} = 0 can be interpreted as rays. polymake automatically normalizes each coordinate vector,{} dividing them by the first non-zero element. The clients and rule subroutines can always assume that \\spad{x0} is either 0 or 1. Dual to INEQUALITIES. Input section only. Ask for VERTICES if you want to compute a \\spad{V}-representation from an \\spad{H}-representation."
--------(vertices ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((vertices ((Matrix (Fraction (Integer))) %))): Improper first word in comments: Vertices
"Vertices of the polyhedron. No redundancies are allowed. The coordinates are normalized the same way as POINTS. Dual to FACETS."
--------(inequalities ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((inequalities ((Matrix (Fraction (Integer))) %))): Improper first word in comments: Inequalities
"Inequalities that describe half-spaces such that the polyhedron is their intersection. Redundancies are allowed. Dual to POINTS. A vector (\\spad{A0} \\spad{A1} .. Ad) defines the (closed affine) half-space of points (1,{}\\spad{x1},{}..,{}\\spad{xd}) such that \\spad{A0} + \\spad{A1} \\spad{x1} + .. + Ad \\spad{xd} \\spad{>=} 0. Input section only. Ask for FACETS and AFFINE_HULL if you want to compute an \\spad{H}-representation from a \\spad{V}-representation."
--------(facets ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((facets ((Matrix (Fraction (Integer))) %))): Improper first word in comments: Facets
"Facets of the polyhedron,{} encoded as INEQUALITIES. Dual to VERTICES."
--------(equations ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((equations ((Matrix (Fraction (Integer))) %))): Improper first word in comments: Equations
"Equations that hold for all points of the polyhedron. A vector (\\spad{A0} \\spad{A1} .. Ad) describes the hyperplane of all points (1,{}\\spad{x1},{}..,{}\\spad{xd}) such that \\spad{A0} + \\spad{A1} \\spad{x1} + .. + Ad \\spad{xd} = 0. Input section only. Ask for AFFINE_HULL if you want to see an irredundant description of the affine span."
--------(affineHull ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((affineHull ((Matrix (Fraction (Integer))) %))): Improper first word in comments: Dual
"Dual basis of the affine hull of the polyhedron."
--------(vertexNormals ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((vertexNormals ((Matrix (Fraction (Integer))) %))): Improper first word in comments: The
"The \\spad{i}-th row is the normal vector of a hyperplane separating the \\spad{i}-th vertex from the rest ones. This property is a by-product of redundant point elimination algorithm."
--------(validPoint ((Vector (Fraction (Integer))) %))---------
--->-->Polytope((validPoint ((Vector (Fraction (Integer))) %))): Improper first word in comments: Some
"Some point belonging to the polyhedron."
--------(dim ((NonNegativeInteger) %))---------
--->-->Polytope((dim ((NonNegativeInteger) %))): Improper first word in comments: Dimension
"Dimension of the affine hull of the polyhedron = dimension of the polyhedron. If the polytope is given purely combinatorically,{} it\\spad{'s} the dimension of a minimal embedding space deduced from the combinatorial structure."
--------(ambientDim ((NonNegativeInteger) %))---------
--->-->Polytope((ambientDim ((NonNegativeInteger) %))): Improper first word in comments: Dimension
"Dimension of the space where the polyhedron lives in."
--------(feasible ((Boolean) %))---------
--->-->Polytope((feasible ((Boolean) %))): Improper first word in comments: True
"True if the polyhedron is not empty."
--------(pointed ((Boolean) %))---------
--->-->Polytope((pointed ((Boolean) %))): Improper first word in comments: True
"True if the polyhedron does not contain an affine line."
--------(farFace ((Set (NonNegativeInteger)) %))---------
--->-->Polytope((farFace ((Set (NonNegativeInteger)) %))): Improper first word in comments: Indices
"Indices of vertices that are rays."
--------(unboundedFacets ((Set (NonNegativeInteger)) %))---------
--->-->Polytope((unboundedFacets ((Set (NonNegativeInteger)) %))): Improper first word in comments: Indices
"Indices of facets that are unbounded."
--------(bounded ((Boolean) %))---------
--->-->Polytope((bounded ((Boolean) %))): Improper first word in comments: True
"True if the polyhedron is a bounded polytope."
--------(centered ((Boolean) %))---------
--->-->Polytope((centered ((Boolean) %))): Improper first word in comments: True
"True if (1,{}0,{}0,{}..) is a relative interior point. Polar to BOUNDED."
--------(positive ((Boolean) %))---------
--->-->Polytope((positive ((Boolean) %))): Improper first word in comments: True
"True if all vertices of the polyhedron have non-negative coordinates,{} that is,{} it lies entirely in the positive orthant."
--------(nPoints ((NonNegativeInteger) %))---------
--->-->Polytope((nPoints ((NonNegativeInteger) %))): Improper first word in comments: Number
"Number of points."
--------(nInequalities ((NonNegativeInteger) %))---------
--->-->Polytope((nInequalities ((NonNegativeInteger) %))): Improper first word in comments: Number
"Number of inequalities."
--------(vertexBarycenter ((Vector (Fraction (Integer))) %))---------
--->-->Polytope((vertexBarycenter ((Vector (Fraction (Integer))) %))): Improper first word in comments: The
"The center of gravity of the vertices of a bounded polytope."
--------(minimalVertexAngle ((Fraction (Integer)) %))---------
--->-->Polytope((minimalVertexAngle ((Fraction (Integer)) %))): Improper first word in comments: The
"The minimum angle between any two vertices (seen from the VERTEXBARYCENTER)."
--------(zonotopeInputVectors ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((zonotopeInputVectors ((Matrix (Fraction (Integer))) %))): Improper first word in comments: Contains
"Contains the vector configuration for which a zonotope can be built."
--------(reverseTransformation ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((reverseTransformation ((Matrix (Fraction (Integer))) %))): Improper first word in comments: Some
"Some invertible linear transformation that can be used to get back a previous coordinate repersentation of the polytope. It operates from the right on point row vectors (\\spadignore{e.g.} in properties like POINTS,{} VERTICES,{} REL_INT_POINT); its inverse operates from the left on hyperplane column vectors."
--------(galeTransform ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((galeTransform ((Matrix (Fraction (Integer))) %))): Improper first word in comments: Coordinates
"Coordinates of the Gale transform."
--------(steinerPoints ((Matrix (Fraction (Integer))) %))---------
--->-->Polytope((steinerPoints ((Matrix (Fraction (Integer))) %))): Improper first word in comments: A
"A weighted inner point depending on the outer angle called Steiner point for all faces of dimensions 2 to \\spad{d}."
--------(nVertices ((NonNegativeInteger) %))---------
--->-->Polytope((nVertices ((NonNegativeInteger) %))): Improper first word in comments: Number
"Number of vertices."
--------(nBoundedVertices ((NonNegativeInteger) %))---------
--->-->Polytope((nBoundedVertices ((NonNegativeInteger) %))): Improper first word in comments: Number
"Number of bounded vertices (non-rays)."
--------(nFacets ((NonNegativeInteger) %))---------
--->-->Polytope((nFacets ((NonNegativeInteger) %))): Improper first word in comments: Number
"Number of facets."
--------(nVertexFacetInc ((NonNegativeInteger) %))---------
--->-->Polytope((nVertexFacetInc ((NonNegativeInteger) %))): Improper first word in comments: Number
"Number of pairs of incident vertices and facets."
--------(nEdges ((NonNegativeInteger) %))---------
--->-->Polytope((nEdges ((NonNegativeInteger) %))): Improper first word in comments: Number
"Number of edges."
--------(nRidges ((NonNegativeInteger) %))---------
--->-->Polytope((nRidges ((NonNegativeInteger) %))): Improper first word in comments: Number
"Number of ridges."
--------(diameter ((NonNegativeInteger) %))---------
--->-->Polytope((diameter ((NonNegativeInteger) %))): Improper first word in comments: Graph
"Graph theoretical diameter of GRAPH."
--------(dualDiameter ((NonNegativeInteger) %))---------
--->-->Polytope((dualDiameter ((NonNegativeInteger) %))): Improper first word in comments: Graph
"Graph theoretical diameter of DUAL_GRAPH."
--------(triangleFree ((Boolean) %))---------
--->-->Polytope((triangleFree ((Boolean) %))): Improper first word in comments: True
"True if GRAPH does not contain a triangle."
--------(dualTriangleFree ((Boolean) %))---------
--->-->Polytope((dualTriangleFree ((Boolean) %))): Improper first word in comments: True
"True if DUAL_GRAPH does not contain a triangle."
--------(altshulerDet ((NonNegativeInteger) %))---------
--->-->Polytope((altshulerDet ((NonNegativeInteger) %))): Improper first word in comments: Let
"Let \\spad{M} be the vertex-facet incidence matrix,{} then the Altshulter determinant is defined as max{det(M?MT),{} det(MT?M)}."
--------(fVector ((Vector (NonNegativeInteger)) %))---------
--->-->Polytope((fVector ((Vector (NonNegativeInteger)) %))): Improper initial operator in comments: is
"\\spad{fk} is the number of \\spad{k}-faces."
--------(f2Vector ((Matrix (NonNegativeInteger)) %))---------
--->-->Polytope((f2Vector ((Matrix (NonNegativeInteger)) %))): Improper initial operator in comments: is
"fik is the number of incident pairs of \\spad{i}-faces and \\spad{k}-faces; the main diagonal contains the F_VECTOR."
--------(flagVector ((Vector (NonNegativeInteger)) %))---------
--->-->Polytope((flagVector ((Vector (NonNegativeInteger)) %))): Improper first word in comments: Condensed
"Condensed form of the flag vector. Use Dehn-Sommerville equations,{} via user function N_FLAGS,{} to extend."
--------(cdIndexCoefficients ((Vector (NonNegativeInteger)) %))---------
--->-->Polytope((cdIndexCoefficients ((Vector (NonNegativeInteger)) %))): Improper first word in comments: Coefficients
"Coefficients of the \\spad{cd}-index."
--------(hVector ((Vector (NonNegativeInteger)) %))---------
--->-->Polytope((hVector ((Vector (NonNegativeInteger)) %))): Improper first word in comments: Simplicial
"Simplicial \\spad{h}-vector. Defined for simplicial polytopes and also for their duals."
--------(cubicalHVector ((Vector (NonNegativeInteger)) %))---------
--------(essentiallyGeneric ((Boolean) %))---------
--->-->Polytope((essentiallyGeneric ((Boolean) %))): Improper first word in comments: all
"all intermediate polytopes (with respect to the given insertion order) in the beneath-and-beyond algorithm are simplicial. We have the \\spad{++} implication : VERTICES in general position \\spad{=>} ESSENTIALLY_GENERIC \\spad{=>} SIMPLICIAL"
--------(simplicial ((Boolean) %))---------
--->-->Polytope((simplicial ((Boolean) %))): Improper first word in comments: True
"True if the polytope is simplicial."
--------(simple ((Boolean) %))---------
--->-->Polytope((simple ((Boolean) %))): Improper first word in comments: True
"True if the polytope is simple. Dual to SIMPLICIAL."
--------(even ((Boolean) %))---------
--->-->Polytope((even ((Boolean) %))): Improper first word in comments: True
"True if the GRAPH of the polytope is bipartite."
--------(dualEven ((Boolean) %))---------
--->-->Polytope((dualEven ((Boolean) %))): Improper first word in comments: True
"True if the DUAL_GRAPH of the polytope is bipartite. Dual to EVEN."
--------(connectivity ((NonNegativeInteger) %))---------
--->-->Polytope((connectivity ((NonNegativeInteger) %))): Improper first word in comments: Node
"Node connectivity of the GRAPH of the polytope,{} that is,{} the minimal number of nodes to be removed from the graph such that the result is disconnected."
--------(dualConnectivity ((NonNegativeInteger) %))---------
--->-->Polytope((dualConnectivity ((NonNegativeInteger) %))): Improper first word in comments: Node
"Node connectivity of the DUAL_GRAPH of the polytope. Dual to CONNECTIVITY."
--------(simpliciality ((NonNegativeInteger) %))---------
--->-->Polytope((simpliciality ((NonNegativeInteger) %))): Improper first word in comments: Maximal
"Maximal dimension in which all faces are simplices."
--------(simplicity ((NonNegativeInteger) %))---------
--->-->Polytope((simplicity ((NonNegativeInteger) %))): Improper first word in comments: Maximal
"Maximal dimension in which all dual faces are simplices."
--------(faceSimplicity ((NonNegativeInteger) %))---------
--->-->Polytope((faceSimplicity ((NonNegativeInteger) %))): Improper first word in comments: Maximal
"Maximal dimension in which all faces are simple polytopes."
--------(cubical ((Boolean) %))---------
--->-->Polytope((cubical ((Boolean) %))): Improper first word in comments: True
"True if all facets are cubes."
--------(cubicality ((NonNegativeInteger) %))---------
--->-->Polytope((cubicality ((NonNegativeInteger) %))): Improper first word in comments: Maximal
"Maximal dimension in which all facets are cubes."
--------(cocubical ((Boolean) %))---------
--->-->Polytope((cocubical ((Boolean) %))): Improper first word in comments: Dual
"Dual to CUBICAL."
--------(cocubicality ((NonNegativeInteger) %))---------
--->-->Polytope((cocubicality ((NonNegativeInteger) %))): Improper first word in comments: Dual
"Dual to CUBICALITY."
--------(neighborly ((Boolean) %))---------
--->-->Polytope((neighborly ((Boolean) %))): Improper first word in comments: True
"True if the polytope is neighborly."
--------(neighborliness ((NonNegativeInteger) %))---------
--->-->Polytope((neighborliness ((NonNegativeInteger) %))): Improper first word in comments: Maximal
"Maximal dimension in which all facets are neighborly."
--------(balanced ((Boolean) %))---------
--->-->Polytope((balanced ((Boolean) %))): Improper first word in comments: Dual
"Dual to NEIGHBORLY."
--------(balance ((NonNegativeInteger) %))---------
--->-->Polytope((balance ((NonNegativeInteger) %))): Improper first word in comments: Maximal
"Maximal dimension in which all facets are balanced."
--------(fatness ((Fraction (Integer)) %))---------
--->-->Polytope((fatness ((Fraction (Integer)) %))): Improper first word in comments: Parameter
"Parameter describing the shape of the face-lattice of a 4-polytope."
--->-->Polytope((complexity ((Fraction (Integer)) %))): Not documented!!!!
--->-->Polytope(): Missing Description
; compiling file "/var/aw/var/LatexWiki/POLYTOPE.NRLIB/POLYTOPE.lsp" (written 04 OCT 2024 02:33:43 PM):
; wrote /var/aw/var/LatexWiki/POLYTOPE.NRLIB/POLYTOPE.fasl
; compilation finished in 0:00:00.088
------------------------------------------------------------------------
Polytope is now explicitly exposed in frame initial
Polytope will be automatically loaded when needed from
/var/aw/var/LatexWiki/POLYTOPE.NRLIB/POLYTOPE
TOPAZ abbreviates domain SimplicialComplex
------------------------------------------------------------------------
initializing NRLIB TOPAZ for SimplicialComplex
compiling into NRLIB TOPAZ
compiling exported coerce : % -> OutputForm
Time: 0 SEC.
compiling local topazcons : (String,String,String) -> %
Time: 0 SEC.
compiling local topazprop : (%,String) -> Void
Time: 0 SEC.
compiling exported facets : % -> List Set Integer
Time: 0 SEC.
compiling exported boundaryComplex : Polytope -> %
Time: 0 SEC.
(time taken in buildFunctor: 0)
;;; *** |SimplicialComplex| REDEFINED
;;; *** |SimplicialComplex| REDEFINED
Time: 0 SEC.
Cumulative Statistics for Constructor SimplicialComplex
Time: 0 seconds
finalizing NRLIB TOPAZ
Processing SimplicialComplex for Browser database:
--->-->SimplicialComplex(constructor): Not documented!!!!
--->-->SimplicialComplex((coerce ((OutputForm) %))): Not documented!!!!
--->-->SimplicialComplex((boundaryComplex (% (Polytope)))): Not documented!!!!
--->-->SimplicialComplex((facets ((List (Set (Integer))) %))): Not documented!!!!
--->-->SimplicialComplex(): Missing Description
; compiling file "/var/aw/var/LatexWiki/TOPAZ.NRLIB/TOPAZ.lsp" (written 04 OCT 2024 02:33:43 PM):
; wrote /var/aw/var/LatexWiki/TOPAZ.NRLIB/TOPAZ.fasl
; compilation finished in 0:00:00.008
------------------------------------------------------------------------
SimplicialComplex is now explicitly exposed in frame initial
SimplicialComplex will be automatically loaded when needed from
/var/aw/var/LatexWiki/TOPAZ.NRLIB/TOPAZ
Let's try it out:
fricas
c := cube 4
Type: Polytope
fricas
systemCommand("system cat /tmp/cube4.poly")$MoreSystemCommands
Type: Void