# application: common

This artificial application gathers functionality shared by many "real" applications. While most users can probably do without looking into this you may find some useful functions here.

## Objects

•

### Core::Object

This is the common base class of all big' objects in polymake. It is included in the online help because it provides several useful methods for scripting and interactive use.

#### User Methods of Core::Object

•
apply_rule (pattern)

Executes the specified production rule. If the object does not possess enough initial properties to provide all required rule sources, or any of its preconditions are not satisfied, an exception is raised.

##### Parameters
 String pattern : either a label (see prefer) or a rule header. The rule header must exactly match the definition in the rulefile, up to white spaces around property names. If the given pattern matches headers of several rules, or the given label is associated with several rules, the rule chain with smallest total weight (including the rules supplying the source properties) is chosen.
•
disable_rules (pattern)

Temporarily disable production rules matching given pattern for an object. Rules are re-enabled after the complete execution of the current script or input expression in interactive mode.

Works much like the user function disable_rules but only affecting the given object.

##### Parameters
 String pattern : either a label (see prefer) or a rule header. The rule header must exactly match the definition in the rulefile, up to white spaces around property names. If the given pattern matches headers of several rules, or the given label is associated with several rules, they all will be disabled regardless their precoditions, weights, or other attributes.
•
dont_save ()

Clears the changed' flag in the object, so that it won't be saved in the XML file it stems from. This method is primarily designed for unit tests, but could be also useful in interactive mode if you want to revert all recent changes and reload the object from the data file.

•
get_schedule (request) → Core::RuleChain

Compose an optimal chain of production rules providing all requested properties. The returned RuleChain object can be applied to the original object as well as to any other object with the same initial set of properties. If no feasible rule chain exists, `undef' is returned.

To watch the rule scheduler at work, e.g. to see announcements about tried preconditions, you may temporarily increase the verbosity levels $Verbose::rules and$Verbose::scheduler.

##### Parameters
 String request : name of a property with optional alternatives or a property path in dotted notation. Several requests may be listed.
##### Returns
 Core::RuleChain
•
list_properties ()

List all known properties.

•
remove($) (prop) Remove the property prop from the object (if this operation is feasible, i.e., if prop is can be recomputed from the remaining properties). ##### Parameters  String prop • ### Core::RuleChain A rule chain to compute properties of an object. #### User Methods of Core::RuleChain • apply($) (o)

Apply the rule chain to an object.

##### Parameters
 Core::Object o
•
list ()

List the properties computed by the rule chain.

## User Functions

•
property_viewer ()

UNDOCUMENTED

•

### Algebraic Types

UNDOCUMENTED
•
project_to_orthogonal_complement (points, subspace)

Projects points into the orthogonal_complement of a given subspace. The given points will be overwitten.

##### Parameters
 Matrix points will be changed to orthogonal ones Matrix subspace
•

### Arithmetic

These are function that perform arithmetic computations.

•
ceil (a) → Rational

The ceiling function. Returns the smallest integral number not smaller than a.

##### Parameters
 Rational a
##### Returns
 Rational
•
denominator (a) → Int

Returns the denominator of a in a reduced representation.

##### Parameters
 Rational a
##### Returns
 Int
•
denominator (f, f) → Polynomial

Returns the denominator of a RationalFunction f.

##### Parameters
 RationalFunction f RationalFunction f
##### Returns
 Polynomial
•
div (a, b) → Div

Compute the quotient and remainder of a and b in one operation.

##### Parameters
 Int a Int b
##### Returns
 Div
•
div_exact (a, b) → Int

Computes the ratio of two given integral numbers under the assumption that the dividend is a multiple of the divisor.

##### Parameters
 Int a Int b a divisor of a
##### Returns
 Int
•
ext_gcd (a, b) → ExtGCD

Compute the greatest common divisor of two numbers (a,b) and accompanying co-factors.

##### Parameters
 Int a Int b
##### Returns
 ExtGCD
•
fac (n) → Integer

Computes the factorial n! = n·(n-1)·(n-2)·...·2·1.

##### Parameters
 Int n >=0
##### Returns
 Integer n!
•
floor (a) → Rational

The floor function. Returns the smallest integral number not larger than a.

##### Parameters
 Rational a
##### Returns
 Rational
•
gcd (a, b) → Int

Computes the greatest common divisor of two integers.

##### Parameters
 Int a Int b
##### Returns
 Int
•
gcd (v) → Element

Compute the greatest common divisor of the elements of the given vector.

##### Parameters
 Vector v
##### Returns
 Element
•
gcd (p, q) → UniPolynomial

Returns the greatest common divisor of two univariate polynomials.

##### Parameters
 UniPolynomial p UniPolynomial q
##### Returns
 UniPolynomial
•
isfinite (a) → Bool

Check whether the given number has a finite value.

##### Parameters
 Integer a
##### Returns
 Bool
•
isinf (a) → Bool

Check whether the given number has an infinite value. Return -1/+1 for infinity and 0 for all finite values.

##### Parameters
 Integer a
##### Returns
 Bool
•
is_one (s) → Bool

Compare with the one (1) value of the corresponding data type.

##### Parameters
 Scalar s
##### Returns
 Bool
•
is_zero (s) → Bool

Compare with the zero (0) value of the corresponding data type.

##### Parameters
 Scalar s
##### Returns
 Bool
•
lcm (a, b) → Int

Computes the least common multiple of two integers.

##### Parameters
 Int a Int b
##### Returns
 Int
•
lcm (v) → Element

Compute the least common multiple of the elements of the given vector.

##### Parameters
 Vector v
##### Returns
 Element
•
numerator (a) → Int

Returns the numerator of a in a reduced representation.

##### Parameters
 Rational a
##### Returns
 Int
•
numerator (f) → Polynomial

Returns the numerator of a RationalFunction f.

##### Parameters
 RationalFunction f
##### Returns
 Polynomial
•
sum_of_square_roots_naive (a) → Map<Rational, Rational>

Make a naive attempy to sum the square roots of the entries of the input array.

##### Parameters
 Array a list of rational numbers (other coefficents are not implemented).
##### Returns
 Map coefficient_of_sqrt a map collecting the coefficients of various roots encountered in the sum. For example, {(3 1/2),(5 7)} represents sqrt{3}/2 + 7 sqrt{5}. If the output is not satisfactory, please use a symbolic algebra package.
•

### Combinatorics

This category contains combinatorial functions.

•
all_permutations ()

Returns a list of all permutations as a perl-array

•
binomial (n, k) → Int

Computes the binomial coefficient n choose k. Negative values of n (and k) are supported.

##### Parameters
 Int n Int k
##### Returns
 Int n choose k
•
find_permutation (a, b) → Array<Int>

Returns the permutation that maps a to b.

##### Parameters
 Array a Array b
##### Returns
 Array
•
permutation_cycles () → Array<List<Int>>

UNDOCUMENTED
##### Returns
 Array>
•
permutation_matrix ()

UNDOCUMENTED
•
permutation_sign () → Int

Returns the sign of the permutation given by p.

##### Returns
 Int +1 or -1
•

### Data Conversion

UNDOCUMENTED
•
cast <Target> (object) → Object

Change the type of the polymake object: only downcast (to a derived type) and upcast (to an ancestor type) are allowed.

##### Type Parameters
 Target the desired new type
##### Parameters
 Object object to be modified
##### Returns
 Object the same object, but with modified type
•
cols ()

UNDOCUMENTED

•
cols (A) → ARRAY<Vector>

Returns an array containing the columns of A.

##### Parameters
 Matrix A
##### Returns
 ARRAY
•
concat_rows (A) → Vector

Concatenates the rows of A.

##### Parameters
 Matrix A
##### Returns
 Vector
•
convert_to <Target> (s) → Target

Explicit conversion to different scalar type.

##### Type Parameters
 Target
##### Parameters
 Scalar s
##### Returns
 Target
•
convert_to <Target> (v) → Vector<Target>

Explicit conversion to a different element type.

##### Type Parameters
 Target
##### Parameters
 Vector v
##### Returns
 Vector
•
convert_to <Target> (m) → Matrix<Target>

Explicit conversion to a different element type.

##### Type Parameters
 Target
##### Parameters
 Matrix m
##### Returns
 Matrix
•
dense (v) → Vector

Return the input vector (which is already in dense form).

##### Parameters
 Vector v
##### Returns
 Vector
•
dense (m) → Matrix

Return the input matrix (which is already in dense form).

##### Parameters
 Matrix m
##### Returns
 Matrix
•
dense <Element> (v) → Vector<Element>

Convert to an equivalent dense vector of the same element type.

##### Type Parameters
 Element
##### Parameters
 SparseVector v
##### Returns
 Vector
•
dense <Element> (m) → Matrix<Element>

Convert to an equivalent dense matrix of the same element type.

##### Type Parameters
 Element
##### Parameters
 SparseMatrix m
##### Returns
 Matrix
•
dense (m) → Matrix<Int>

Convert to a dense 0/1 matrix.

##### Parameters
 IncidenceMatrix m
##### Returns
 Matrix
•
dense (s, dim) → Vector<Int>

Convert to a dense 0/1 vector of a given dimension.

##### Parameters
 Set s Int dim
##### Returns
 Vector
•
index_matrix (m) → IncidenceMatrix

Get the positions of non-zero entries of a sparse matrix.

##### Parameters
 SparseMatrix m
##### Returns
 IncidenceMatrix
•
indices (v) → Set<Int>

Get the positions of non-zero entries of a sparse vector.

##### Parameters
 SparseVector v
##### Returns
 Set
•
repeat_row (v, i)

UNDOCUMENTED
##### Parameters
 Vector v Int i
•
rows ()

UNDOCUMENTED

•
rows (A) → ARRAY<Vector>

Returns an array containing the rows of A.

##### Parameters
 Matrix A
##### Returns
 ARRAY
•
toMatrix <Scalar> (A)

UNDOCUMENTED
##### Type Parameters
 Scalar
##### Parameters
 IncidenceMatrix A
•
toPolynomial (s, vars)

Read a Polynomial from a String.

##### Parameters
 String s ARRAY vars
•
toVector <Scalar> (S)

UNDOCUMENTED
##### Type Parameters
 Scalar
##### Parameters
 Set S
•
vector2col (v) → Matrix

Convert a Vector to a Matrix with a single column.

##### Parameters
 Vector v
##### Returns
 Matrix
•
vector2row (v) → Matrix

Convert a Vector to a Matrix with a single row.

##### Parameters
 Vector v
##### Returns
 Matrix
•

### Formatting

UNDOCUMENTED
•
labeled (data, elem_labels) → String

Prepares a vector for printing, prepends each element with a label and a colon.

##### Parameters
 Vector data to be printed Array elem_labels optional labels for elements; if data is a Set, or similar, each element will be replaced by its label.
##### Returns
 String
•
latex (data, elem_labels) → String

LaTeX output of a matrix.

##### Parameters
 Matrix data to be printed Array elem_labels optional labels for elements; if data is an IncidenceMatrix, Array, or similar, each element will be replaced by its label.
##### Returns
 String to be used with \usepackage{amsmath}
•
numbered (data) → String

Equivalent to labeled with omitted elem_labels argument.

##### Parameters
 Vector data to be printed
##### Returns
 String
•
print_constraints (M, are_eqs)

Write the rows of a matrix M as inequalities (are_eqs=0) or equations (are_eqs=1) in a readable way. It is possible to specify labels for the coordinates via an optional array coord_labels.

##### Parameters
 Matrix M the matrix whose rows are to be written Int are_eqs optional; needs to be set to 1 if the rows represent equations instead of inequalities
##### Options
 Array coord_labels changes the labels of the coordinates from 'x1,...,xn' to the specified names
•
rows_labeled (data, row_labels, elem_labels) → Array<String>

Prepares a matrix for printing, prepends each row with a label and a colon.

##### Parameters
 Matrix data to be printed Array row_labels labels for the rows Array elem_labels optional labels for elements; if data is an IncidenceMatrix, Array, or similar, each element will be replaced by its label.
##### Returns
 Array each string ending with end-of-line
•
rows_labeled (graph, elem_labels) → Array<String>

Like above, but specialized for Graphs (defined for convenience: a PTL Graph is not a container)

##### Parameters
 Graph graph to be printed Array elem_labels labels for the elements
##### Returns
 Array each string ending with end-of-line
•
rows_numbered (data) → Array<String>

Equivalent to rows_labeled with omitted row_labels argument. Formerly called "numbered".

##### Parameters
 Matrix data to be printed
##### Returns
 Array each string ending with end-of-line
•

### Graph Operations

UNDOCUMENTED
•

Returns the adjacency matrix of graph nodes. For a normal graph, it will be a kind of IncidenceMatrix, for multigraph, it will be a SparseMatrix<Int>, with entries encoding the number of parallel edges between two nodes.

##### Parameters
 Graph graph
##### Returns
 IncidenceMatrix both rows and columns correspond to the nodes
•
edges (graph) → EdgeList

Returns the sequence of all edges of a graph. The edges will appear in ascending order of their tail and head nodes. In the Undirected case, the edges will appear once, ordered by the larger index of their incident nodes.

##### Parameters
 Graph graph
##### Returns
 EdgeList
•
induced_subgraph (graph, set) → Graph

Creates an induced subgraph for the given subset of nodes.

##### Parameters
 Graph graph Set set indices of selected nodes
##### Returns
 Graph
•
nodes (graph) → NodeSet

Returns the sequence of all valid nodes of a graph.

##### Parameters
 Graph graph
##### Returns
 NodeSet
•
node_edge_incidences <Coord> (graph) → SparseMatrix<Coord>

Returns the node-edge incidence matrix of a graph.

##### Type Parameters
 Coord coordinate type for the resulting matrix, default: Int
##### Parameters
 Graph graph
##### Returns
 SparseMatrix
•

### Lattice Tools

UNDOCUMENTED
•
eliminate_denominators (v) → Vector<Integer>

Scale a vector with the least common multiple of the denominators of its coordinates.

##### Parameters
 Vector v
##### Returns
 Vector
•
eliminate_denominators_entire (v) → Matrix<Integer>

Scales entire matrix with the least common multiple of the denominators of its coordinates.

##### Parameters
 Matrix v
##### Returns
 Matrix
•
eliminate_denominators_entire_affine (v) → Matrix<Integer>

Scales entire matrix with the least common multiple of the denominators of its coordinates (ignore first column).

##### Parameters
 Matrix v
##### Returns
 Matrix
•
eliminate_denominators_in_rows (v) → Matrix<Integer>

Scale a matrix rowwise with the least common multiple of the denominators of its coordinates.

##### Parameters
 Matrix v
##### Returns
 Matrix
•
is_integral (v) → Bool

Checks whether all coordinates of a rational vector are integral.

##### Parameters
 Vector v
##### Returns
 Bool
•
is_integral (m) → Bool

Checks whether all coordinates of a rational matrix are integral.

##### Parameters
 Matrix m
##### Returns
 Bool
•
primitive (v) → Vector<Integer>

Scales the vector to a primitive integral vector.

##### Parameters
 Vector v
##### Returns
 Vector
•
primitive (M) → Matrix<Integer>

Scales each row of the matrix to a primitive integral vector.

##### Parameters
 Matrix M
##### Returns
 Matrix
•
primitive_affine (v) → Vector<Integer>

Scales the affine part of a vector to a primitive integral vector.

##### Parameters
 Vector v
##### Returns
 Vector
•
primitive_affine (M) → Matrix<Integer>

Scales the affine part of each row of the matrix to a primitive integral vector.

##### Parameters
 Matrix M
##### Returns
 Matrix
•

### Linear Algebra

UNDOCUMENTED
•
anti_diag (d) → SparseMatrix

Produces a SparseMatrix from its anti-diagonal.

##### Parameters
 Vector d the anti-diagonal entries
##### Returns
 SparseMatrix
•
anti_diag (m1, m2) → SparseMatrix

Returns a block anti-diagonal matrix with blocks m1 and m2.

##### Parameters
 Matrix m1 Matrix m2
##### Returns
 SparseMatrix
•
basis (A) → Pair<Set<Int>, Set<Int>>

Computes subsets of the rows and columns of A that form a basis for the linear space spanned by A.

##### Parameters
 Matrix A
##### Returns
 Pair, Set> The first set corresponds to the rows, the second to the columns.
•
basis_affine (A) → Pair<Set<Int>, Set<Int>>

Does the same as basis ignoring the first column of the matrix.

##### Parameters
 Matrix A
##### Returns
 Pair, Set> The first set corresponds to the rows, the second to the columns.
•
basis_cols (A) → Set<Int>

Computes a subset of the columns of A that form a basis for the linear space spanned by A.

##### Parameters
 Matrix A
##### Returns
 Set
•
basis_rows (A) → Set<Int>

Computes a subset of the rows of A that form a basis for the linear space spanned by A.

##### Parameters
 Matrix A
##### Returns
 Set
•
det (A) → Int

Computes the determinant of a matrix using Gauss elimination.

##### Parameters
 Matrix A
##### Returns
 Int det(A)
•
diag (d) → SparseMatrix

Produces a SparseMatrix from its diagonal.

##### Parameters
 Vector d the diagonal entries
##### Returns
 SparseMatrix
•
diag (m1, m2) → SparseMatrix

Returns a block diagonal matrix with blocks m1 and m2.

##### Parameters
 Matrix m1 Matrix m2
##### Returns
 SparseMatrix
•
equal_bases (A1, A2) → Bool

Check whether both matrices are bases of the same linear subspace.

##### Parameters
 Matrix A1 Matrix A2
##### Returns
 Bool
•
inv (A) → Matrix

Computes the inverse A-1 of an invertible matrix A using Gauss elimination.

##### Parameters
 Matrix A
##### Returns
 Matrix
•
lineality_space (A) → Matrix

Compute the lineality space of a matrix A.

##### Parameters
 Matrix A
##### Returns
 Matrix
•
lin_solve (A, b) → Vector

Computes the solution of the system Ax = b

##### Parameters
 Matrix A must be invertible Vector b
##### Returns
 Vector
•
normalized (A) → Matrix<Float>

Normalize a matrix by dividing each row by its length (l2-norm).

##### Parameters
 Matrix A
##### Returns
 Matrix
•
null_space (A) → Matrix

Compute the null space of a matrix A.

##### Parameters
 Matrix A
##### Returns
 Matrix
•
null_space (b) → Matrix

Compute the null space of a vector b.

##### Parameters
 Vector b
##### Returns
 Matrix
•
ones_vector <Element> (d) → Vector<Element>

Creates a vector with all elements equal to 1.

##### Type Parameters
 Element default: Rational.
##### Parameters
 Int d vector dimension. If omitted, a vector of dimension 0 is created, which can adjust itself when involved in a block matrix operation.
##### Returns
 Vector
•
rank (A) → Int

Computes the rank of a matrix.

##### Parameters
 Matrix A
##### Returns
 Int
•
reduce (A, b) → Vector

Reduce a vector with a given matrix using Gauss elimination.

##### Parameters
 Matrix A Vector b
##### Returns
 Vector
•
smith_normal_form (M, inv)

Compute the Smith normal form of a given matrix M.

##### Parameters
 Matrix M must be of integer type Bool inv optional, if true, compute the inverse of the companion matrices
•
totally_unimodular (A) → Bool

The matrix A is totally unimodular if the determinant of each square submatrix equals 0, 1, or -1. This is the naive test (exponential in the size of the matrix).

##### Parameters
 Matrix A
##### Returns
 Bool
•
transpose (A) → IncidenceMatrix

Computes the transpose AT of an incidence matrix A, i.e., (aT)ij = aji.

##### Parameters
 IncidenceMatrix A
##### Returns
 IncidenceMatrix
•
transpose (A) → Matrix

Computes the transpose AT of a matrix A, i.e., (aT)ij = aji.

##### Parameters
 Matrix A
##### Returns
 Matrix
•
unit_matrix <Element> (d) → SparseMatrix<Element>

Creates a unit matrix of given dimension

##### Type Parameters
 Element default: Rational
##### Parameters
 Int d dimension of the matrix
##### Returns
 SparseMatrix
•
unit_vector <Element> (d, pos) → SparseVector<Element>

Creates a SparseVector of given length d with a one entry at position pos and zeroes elsewhere.

##### Type Parameters
 Element default: Rational
##### Parameters
 Int d the dimension of the vector Int pos the position of the 1
##### Returns
 SparseVector
•
zero_matrix <Element> (i, j) → SparseMatrix<Element>

Creates a zero matrix of given dimensions

##### Type Parameters
 Element default: Rational
##### Parameters
 Int i number of rows Int j number of columns
##### Returns
 SparseMatrix
•
zero_vector <Element> (d) → Vector<Element>

Creates a vector with all elements equal to zero.

##### Type Parameters
 Element default: Rational
##### Parameters
 Int d vector dimension. If omitted, a vector of dimension 0 is created, which can adjust itself when involved in a block matrix operation.
##### Returns
 Vector
•

### Other

UNDOCUMENTED
•
pluecker (V) → Vector

Compute vector of maximal minors of a matrix. WARNING: interpretation different in tropical::lifted_pluecker

##### Parameters
 Matrix V
##### Returns
 Vector
•

### Set Operations

This category contains functions performing operations on Sets.

•
incl (s1, s2) → Int

Analyze the inclusion relation of two sets.

##### Parameters
 Set s1 Set s2
##### Returns
 Int 0 if s1 = s2, -1 if s1 ⊂ s2, 1 if s1 ⊃ s2, 2 otherwise.
•
range (a, b) → Set<Int>

Creates the Set {a, a+1, ..., b-1, b} for ab-1. (The result will be empty if a = b-1.)

##### Parameters
 Int a Int b
##### Returns
 Set
•
scalar2set (s) → Set<Scalar>

Returns the singleton set {s}.

##### Parameters
 Scalar s
##### Returns
 Set
•
select_subset (s, indices) → Set

Returns the subset of s given by the indices.

##### Parameters
 Set s Set indices
##### Returns
 Set
•
sequence (a, c) → Set<Int>

Creates the Set {a, a+1, ..., a+c-1}.

##### Parameters
 Int a the smallest element Int c the cardinality
##### Returns
 Set
•

### Utilities

UNDOCUMENTED
•
average (array)

Returns the average value of the array elements.

##### Parameters
 Array array
•
bounding_box (m) → Matrix

Compute a column-wise bounding box for the give matrix

##### Parameters
 Matrix m
##### Returns
 Matrix : row(0) contains lower bounds, row(1) contains upper bounds
•
fibonacci (m) → ARRAY

Returns the first m Fibonacci numbers.

##### Parameters
 Int m
##### Returns
 ARRAY
•
histogram (data) → Map<Element, Int>

Produce a histogram of a container: each different element value is mapped on the number of its occurences.

##### Parameters
 Container data
##### Returns
 Map
•
maximum (array)

Returns the maximal element of an array.

##### Parameters
 Array array
•
minimum (array)

Returns the minimal element of an array.

##### Parameters
 Array array
•
perturb_matrix (M, eps, not_hom) → Matrix

Perturb a given matrix M by adding a random matrix. The random matrix consists of vectors that are uniformly distributed on the unit sphere. Optionally, the random matrix can be scaled by a factor eps.

##### Parameters
 Matrix M Float eps the factor by which the random matrix is multiplied default value: 1 Bool not_hom if set to 1, the first column will also be perturbed; otherwise the first columns of the input matrix M and the perturbed one coincide (useful for working with homogenized coordinates); default value: 0 (homogen. coords)
##### Options
 Int seed controls the outcome of the random number generator; fixing a seed number guarantees the same outcome.
##### Returns
 Matrix
•
rand_perm (n) → Matrix

gives a random permutation matrix

##### Parameters
 Int n
##### Returns
 Matrix : random n times n permutation matrix
•

### Visualization

UNDOCUMENTED
•
compose (vis_obj ...) → Visual::Container

Create a composite drawing of several objects.

##### Parameters
 Visual::Object vis_obj ... objects to be drawn together
##### Options
 String Title name of the whole drawing; per default the name of the first Object is taken. any decorations to be applied to all components as default values.
##### Returns
 Visual::Container if called in void context, immediately starts the preferred rendering program.
•
compose (vis_container, vis_obj ...) → Visual::Container

Add new objects to a composite drawing.

##### Parameters
 Visual::Container vis_container drawing produced by some visualization function Visual::Object vis_obj ... objects to be added
##### Options
 String Title new name for the drawing any decorations to be applied to all components as default values.
##### Returns
 Visual::Container if called in void context, immediately starts the preferred rendering program.
•
geomview (vis_obj ...)

Run geomview to display given visual objects.

##### Parameters
 Visual::Object vis_obj ... objects to display
##### Options
 String File "filename" or "AUTO" Store the objects in a gcl (geomview control language) file instead of starting the interactive GUI. The geometric data in OFF format is embedded in the Lisp-style commands, but can be easily extracted using any text editor, if needed. The .gcl suffix is automatically added to the file name. Specify AUTO if you want the filename be automatically derived from the drawing title. You can also use any expression allowed for the open function, including "-" for terminal output, "&HANDLE" for an already opened file handle, or "| program" for a pipe.
•
javaview (vis_obj ...)

Run JavaView with the given visual objects.

Contained in extension bundled:javaview.
##### Parameters
 Visual::Object vis_obj ... objects to display
##### Options
 String File "filename" or "AUTO" Store the object description in a JVX file without starting the interactive GUI. The .jvx suffix is automatically added to the file name. Specify AUTO if you want the filename be automatically derived from the drawing title. You can also use any expression allowed for the open function, including "-" for terminal output, "&HANDLE" for an already opened file handle, or "| program" for a pipe.
•
jreality (vis_obj ...)

Run jReality to display given visual objects.

Contained in extension bundled:jreality.
##### Parameters
 Visual::Object vis_obj ... objects to display
##### Options
 String File "filename" or "AUTO" Store the object description in a bean shell source file without starting the interactive GUI. The .bsh suffix is automatically added to the file name. Specify AUTO if you want the filename be automatically derived from the drawing title. You can also use any expression allowed for the open function, including "-" for terminal output, "&HANDLE" for an already opened file handle, or "| program" for a pipe.
•
postscript (vis_obj ...)

Create a Postscript (tm) drawing with the given visual objects.

##### Parameters
 Visual::Object vis_obj ... objects to draw
##### Options
 String File "filename" or "AUTO" Store the drawing in a file without starting the viewer. The .ps suffix is automatically added to the file name. Specify AUTO if you want the filename be automatically derived from the drawing title. You can also use any expression allowed for the open function, including "-" for terminal output, "&HANDLE" for an already opened file handle, or "| program" for a pipe.
•
povray (vis_obj ...)

Run POVRAY to display given visual objects.

##### Parameters
 Visual::Object vis_obj ... objects to display
##### Options
 String File "filename" or "AUTO" Store the object description in a POVRAY source file without actual rendering. The .pov suffix is automatically added to the file name. Specify AUTO if you want the filename be automatically derived from the drawing title. You can also use any expression allowed for the open function, including "-" for terminal output, "&HANDLE" for an already opened file handle, or "| program" for a pipe.
•
sketch (vis_obj ...)

Produce a Sketch input file with given visual objects.

##### Parameters
 Visual::Object vis_obj ... objects to display
##### Options
 String File "filename" or "AUTO" For the file name you can use any expression allowed for the open function, including "-" for terminal output, "&HANDLE" for an already opened file handle, or "| program" for a pipe. Real file names are automatically completed with the .sk suffix if needed. An automatically generated file name is displayed in the verbose mode.
•
static (vis_obj) → Visual::Object

Suppress creation of dynamic (interactive) scenes.

##### Parameters
 Visual::Object vis_obj drawing, e.g. created by VISUAL_GRAPH or SCHLEGEL.
##### Returns
 Visual::Object if called in void context, immediately starts the preferred rendering program.
•
tikz (vis_obj)

Produce a TikZ file with given visual objects.

##### Parameters
 Visual::Object vis_obj object to display
##### Options
 String File "filename" or "AUTO" For the file name you can use any expression allowed for the open function, including "-" for terminal output, "&HANDLE" for an already opened file handle, or "| program" for a pipe. Real file names are automatically completed with the .tikz suffix if needed. An automatically generated file name is displayed in the verbose mode.

## Property Types

•
boost_dynamic_bitset

UNDOCUMENTED

Contained in extension bundled:group.
derived from: Set<Int>

#### User Methods of boost_dynamic_bitset

•
size ()

UNDOCUMENTED

•

### Algebraic Types

This category contains all "algebraic" types, such as matrices, vectors, polynomials, rings, ...

•
all_rows_or_cols

Use the keyword "All" for all rows or columns, e.g. when constructing a minor.

•
Matrix <Element, Sym>
UNDOCUMENTED
##### Type Parameters
 Element default: Rational Sym default: NonSymmetric

#### User Methods of Matrix

•
anti_diagonal (i) → Vector<Element>

Returns the anti-diagonal of the matrix.

##### Parameters
 Int i i=0: the main anti_diagonal (optional) i>0: the i-th anti_diagonal below the main anti_diagonal i<0: the i-th anti_diagonal above the main anti_diagonal
##### Returns
 Vector
•
col (i) → Vector<Element>

Returns the i-th column.

##### Parameters
 Int i
##### Returns
 Vector
•
cols () → Int

Returns the number of columns.

##### Returns
 Int
•
diagonal (i) → Vector<Element>

Returns the diagonal of the matrix.

##### Parameters
 Int i i=0: the main diagonal (optional) i>0: the i-th diagonal below the main diagonal i<0: the i-th diagonal above the main diagonal
##### Returns
 Vector
•
div_exact (a) → Matrix

Divides every entry by a (assuming that every entry is divisible by a).

##### Parameters
 Int a
##### Returns
 Matrix
•
minor (r, c) → Matrix

Returns a minor of the matrix containing the rows in r and the columns in c. You can pass All if you want all rows or columns and ~ for the complement of a set. E.g.

$A->minor(All, ~[0]); will give you the minor of a matrix containing all rows and all but the 0-th column. ##### Parameters  Set r the rows Set c the columns ##### Returns  Matrix • row (i) → Vector<Element> Returns the i-th row. ##### Parameters  Int i ##### Returns  Vector • rows () → Int Returns the number of rows. ##### Returns  Int • Monomial <Coefficient, Exponent> UNDOCUMENTED ##### Type Parameters  Coefficient default: Rational Exponent default: Int • Plucker <Scalar> UNDOCUMENTED ##### Type Parameters  Scalar default: Rational #### User Methods of Plucker • Polynomial <Coefficient, Exponent> UNDOCUMENTED ##### Type Parameters  Coefficient default: Rational Exponent default: Int #### User Methods of Polynomial • RationalFunction <Coefficient, Exponent> UNDOCUMENTED ##### Type Parameters  Coefficient default: Rational Exponent default: Int • Ring <Coefficient, Exponent> UNDOCUMENTED ##### Type Parameters  Coefficient default: Rational Exponent default: Int #### User Methods of Ring • SparseIterator UNDOCUMENTED • SparseMatrix <Element, Sym> A SparseMatrix is a two-dimensional associative array with row and column indices as keys; elements equal to the default value (ElementType(), which is 0 for most numerical types) are not stored, but implicitly encoded by the gaps in the key set. Each row and column is organized as an AVL-tree. Use dense to convert this into its dense form. You can create a new SparseMatrix by entering its entries row by row, as a list of SparseVectors e.g.:$A = new SparseMatrix<Int>(<< '.');
(5) (1 1)
(5) (4 2)
(5)
(5) (0 3) (1 -1)
.
##### Type Parameters
 Element Sym one of Symmetric or NonSymmetric, default: NonSymmetric]

#### User Methods of SparseMatrix

•
squeeze ()

Removes empty rows and columns. The remaining rows and columns are renumbered without gaps.

•
squeeze_cols ()

Removes empty columns. The remaining columns are renumbered without gaps.

•
squeeze_rows ()

Removes empty rows. The remaining rows are renumbered without gaps.

•
SparseVector <Element>

A SparseVector is an associative container with element indices (coordinates) as keys; elements equal to the default value (ElementType(), which is 0 for most numerical types) are not stored, but implicitly encoded by the gaps in the key set. It is based on an AVL tree.

A SparseVector is encoded as a sequence (l) (p1 v1) ... (pk vk), where l is the length of the vector and each pair (pi vi) denotes an entry with value vi at position pi. All other entries are zero.

Use dense to convert this into its dense form.

You can create a new SparseVector by entering its encoding as described above, e.g.:

or

#### User Methods of Rational

•
inf ()

Produce an infinitely large positive value.

•
minus_inf ()

Produce an infinitely large negative value.

•
SCALAR

Corresponds to the perl scalar.

•
Serialized <X>
UNDOCUMENTED
##### Type Parameters
 X
•
String

Corresponds to the C++ type std::string.

•
Text
UNDOCUMENTED
•
Tuple
UNDOCUMENTED
•

### Graph Types

This contains all property types that are related to graphs.

•
Directed

Labels a Graph as directed.

•
DirectedMulti

Type tag for directed multigraphs.

•
EdgeHashMap <Dir, Element>
UNDOCUMENTED
##### Type Parameters
 Dir Element
•
EdgeIterator
UNDOCUMENTED
•
EdgeList
UNDOCUMENTED
•
EdgeMap <Dir, Element>
UNDOCUMENTED
##### Type Parameters
 Dir Element
•
Graph <Dir>
UNDOCUMENTED
##### Type Parameters
 Dir one of Undirected, Directed, UndirectedMulti or DirectedMulti, default: Undirected

#### User Methods of Graph

•

In a multigraph, creates a new edge connecting two given nodes. In a normal graph, creates a new edge only if the nodes were not connected yet. Returns the index of the (new) edge.

##### Returns
 Int
•

Adds a new node without incident edes, returns its index.

##### Returns
 Int
•

Returns the set of indices of nodes adjacent to node.

##### Parameters
 Int node
##### Returns
 Set
•

Returns an iterator visiting all (parallel) edges connecting two given nodes.

##### Returns
 Iterator
•
contract_edge (node1, node2)

Contract the edge(s) between node1 and node2. Reconnects all edges from node2 to node1, deleting the edge(s) between them and, finally, deleting node2.

##### Parameters
 Int node1 Int node2
•
degree (node) → Int

Returns the number of edges incident to node.

##### Parameters
 Int node
##### Returns
 Int
•

Deletes all edges in a multigraph connecting two given nodes.

##### Parameters
•

Deletes the edge connecting two given nodes, if there was one. In a multigraph, deletes one arbitrary edge from the parallel bundle.

##### Parameters
•
delete_edge (iterator)

Delete the edge in a multigraph pointed to by the given iterator

##### Parameters
 Iterator iterator as returned by all_edges.
•
delete_node (node)

Deletes all edges incident to the given node and marks it as invalid. The numeration of other nodes stays unchanged.

##### Parameters
 Int node
•
dim () → Int

Returns the maximal node index + 1. If the graph does not have gaps caused by node deletion, the result is equivalent to nodes().

##### Returns
 Int
•

Returns the index of the edge connecting two given nodes. The edge is created if was not there. In a multigraph, an arbitrary edge from the parallel bundle will be picked.

##### Returns
 Int
•
edges () → Int

Returns the total number of edges.

##### Returns
 Int
•

Checks whether two given nodes are connected by (at least) one edge.

##### Returns
 Bool
•
has_gaps () → Bool

Returns true if some nodes have been deleted since the last squeeze operation.

##### Returns
 Bool
•
invalid_node (node) → Bool

Returns true if the given node index is either out of valid range or points to a formerly deleted node.

##### Parameters
 Int node
##### Returns
 Bool
•

Returns the set of indices of the nodes that have an edge heading to node.

##### Parameters
 Int node
##### Returns
 Set
•
in_degree (node) → Int

Returns the number of edges heading to node.

##### Parameters
 Int node
##### Returns
 Int
•
in_edges (node) → EdgeList

Returns a sequence of edges heading to (in Directed case) or incident to (in Undirected case) node.

##### Parameters
 Int node
##### Returns
 EdgeList
•
nodes () → Int

Returns the total number of nodes.

##### Returns
 Int
•
node_exists (node) → Bool

Checks whether the node with given index exists.

##### Parameters
 Int node
##### Returns
 Bool
•
node_out_of_range (node) → Bool

Returns true if the given node index is out of valid range.

##### Parameters
 Int node
##### Returns
 Bool
•

Returns the set of indices of the nodes with an edge arriving from node.

##### Parameters
 Int node
##### Returns
 Set
•
out_degree (node) → Int

Returns the number of edges leaving node.

##### Parameters
 Int node
##### Returns
 Int
•
out_edges (node) → EdgeList

Returns a sequence of edges leaving (in Directed case) or incident to (in Undirected case) node.

##### Parameters
 Int node
##### Returns
 EdgeList
•
squeeze ()

Renumbers the valid nodes as to eliminate all gaps left after deleting.

•
squeeze_isolated ()

Deletes all nodes of degree 0, then renumbers the remaining nodes without gaps.

•
NodeHashMap <Dir, Element>
UNDOCUMENTED
##### Type Parameters
 Dir Element
•
NodeIterator
UNDOCUMENTED
•
NodeMap <Dir, Element>
UNDOCUMENTED
##### Type Parameters
 Dir Element
•
NodeSet
UNDOCUMENTED
•
Undirected

Labels a Graph as undirected.

•
UndirectedMulti

Type tag for undirected multigraphs.

•

### Linear Algebra

UNDOCUMENTED
•
SmithNormalForm

Complete result of the Smith normal form computation. Contains the following fields:

SparseMatrix<Scalar> form: the Smith normal form S of the given matrix M
List<Pair<Scalar, Int>> torsion: absolute values of the entries greater than 1 of the diagonal together with their multiplicity
Int rank: rank of M
SparseMatrix<Scalar> left_companion, right_companion: unimodular matrices L and R such that

M = LSR in normal case, or S = LMR in inverted case (as specified in the call to smith_normal_form function).

•

### Set Types

In this category you find all property types related to sets, such as Set, Map, HashMap, IncidenceMatrix, ...

•
FacetList

A FacetList is a collection of sets of integral numbers from a closed contiguous range [0..n-1]. The contained sets usually encode facets and the set elements vertices of a simplicial complex.

#### User Methods of FacetList

•
insertMax (facet) → Bool

Add a new facet if and only if there are no facets including it. If this holds, remove also all facets that are included in the new one. Return true if the new facet was really included.

##### Parameters
 Set facet
##### Returns
 Bool
•
insertMin (facet) → Bool

The opposite of insertMax: add a new facet if and only if there are no facets included in it, remove all facets including the new facet.

##### Parameters
 Set facet
##### Returns
 Bool
•
size () → Int

The number of facets in the list.

##### Returns
 Int
•
HashMap <Key, Value>

Similar to Map. HashMaps are associative containers that contain unique key/value pairs.

The values are stored in a hash table. Accessing and interserting a value by its key works in constant time O(1).

You can create a new HashMap mapping Ints to Strings by

$myhashmap = new HashMap<Int, String>([1, "Monday"], [2, "Tuesday"]); On the perl side HashMaps are treated like hashrefs. You can work with a HashMap like you work with a Map (keeping in mind differences in performance and memory demand). ##### Type Parameters  Key type of the key values Value type of the mapped value • HashSet <Element> Similar to Set. (But keep in mind differences in performance and memory demand.) ##### Type Parameters  Element • IncidenceMatrix <Sym> A 0/1 incidence matrix. ##### Type Parameters  Sym one of Symmetric or NonSymmetric, default: NonSymmetric #### User Methods of IncidenceMatrix • col (i) → SparseVector<Int> Returns the i-th column. ##### Parameters  Int i ##### Returns  SparseVector • cols () → Int Returns the number of columns. ##### Returns  Int • minor (r, c) → IncidenceMatrix Returns a minor of the matrix containing the rows in r and the columns in c. You can pass All if you want all rows or columns and ~ for the complement of a set. E.g.$A->minor(All, ~[0]);

will give you the minor of a matrix containing all rows and all but the 0-th column.

##### Parameters
 Set r the rows Set c the columns
##### Returns
 IncidenceMatrix
•
row (i) → SparseVector<Int>

Returns the i-th row.

##### Parameters
 Int i
##### Returns
 SparseVector
•
rows () → Int

Returns the number of rows.

##### Returns
 Int
•
squeeze ()

Removes empty rows and columns. The remaining rows and columns are renumbered without gaps.

•
squeeze_cols ()

Removes empty columns. The remaining columns are renumbered without gaps.

•
squeeze_rows ()

Removes empty rows. The remaining rows are renumbered without gaps.

•
Map <Key, Value>

Maps are sorted associative containers that contain unique key/value pairs. Maps are sorted by their keys.

Accessing or inserting a value needs logarithmic time O(log n), where n is the size of the map.

You can create a new Map mapping Ints to Strings by

$mymap = new Map<Int, String>([1, "Monday"], [2, "Tuesday"]); On the perl side Maps are treated like hashrefs. You can add a new key/value pair by$mymap->{3} = "Wednesday";

(If the key is already contained in the Map, the corresponding value is replaced by the new one.) or ask for the value of a key by

print $mymap->{1}; ##### Type Parameters  Key type of the key values Value type of the mapped value • NonSymmetric Labels an IncidenceMatrix as non-symmetric. • PowerSet <Element> A Set whose elements are of type Set<Element>. ##### Type Parameters  Element default: Int • Set <Element> A type for sets containing elements of type Element. You can for example create a new Set by:$s = new Set(2, 3, 5, 7);

You can perform set theoretic operations:

$s1 +$s2 union
$s1 *$s2 intersection
$s1 -$s2 difference
$s1 ^$s2 symmetric difference
##### Type Parameters
 Element default: Int

#### User Methods of Set

•
size () → Int

The cardinality of the set.

##### Returns
 Int
•
Symmetric

Labels an IncidenceMatrix as symmetric.

•

### Visualization

UNDOCUMENTED
•
Flexible

This is a pseudo-type for documentation purposes only. Many options of visualization functions modifying the appearance of some set of graphical elements like points, edges, facets, etc. accept a wide range of possible values, allowing for different grades of flexibility (and complexity):

SCALAR the same attribute value is applied to all elements ARRAY each element gets its individual attribute value HASH elements found in the hash get their individual attribute values, for the rest the appropriate default applies SUB a piece of code computing the attribute value for the given element

Unless specified explicitly in the detailed option description, the indices, keys, or subroutine arguments used for retrieval of the attribute values are just the zero-based ordinal numbers of the elements.

•
HSV

A color described as a Hue-Saturation-Value triple. Is convertible to and from an RGB representation.

•
RGB

A color described as a Red-Green-Blue triple. Can be constructed from a list of three integral values from the range 0..255, or a list of three floating-point values from the range 0..1, or one of symbolic names listed in the system-wide file rgb.txt.

## Common Option Lists

•

### Visualization

UNDOCUMENTED
•
Visual::PointSet::decorations

Common attributes modifying the appearance of PointSets and all visual objects derived thereof. Please be aware that no one visualization program interfaced to polymake supports all of them. Unsupported options are normally ignored.

##### Options
 String Title the name of the drawing String Name the name of this visual object in the drawing Bool Hidden if set to true, the visual object is not rendered (useful for interactive visualization programs allowing for switching details on and off) String if set to "hidden", no point labels are displayed enum PointLabels ("hidden"), String alias for PointLabels enum VertexLabels ("hidden"), Flexible PointColor color of the spheres or rectangles representing the points Flexible VertexColor alias for PointColor Flexible PointThickness scaling factor for the size of the spheres or rectangles representing the points Flexible VertexThickness alias for PointThickness Flexible PointBorderColor color of the border line of rectangles representing the points Flexible VertexBorderColor alias for PointBorderColor Flexible PointBorderThickness scaling factor for the thickness of the border line of rectangles representing the points Flexible VertexBorderThickness alias for PointBorderThickness Flexible PointStyle if set to "hidden", neither point nor its label is rendered Flexible VertexStyle alias for PointStyle Vector ViewPoint ViewPoint for Sketch visualization Vector ViewDirection ViewDirection for Sketch visualization Vector ViewUp ViewUp for Sketch visualization Float Scale scale for Sketch visualization
•
Visual::Polygon::decorations

Attributes modifying the appearance of filled polygons.

imports from: Visual::PointSet::decorations

##### Options
 RGB FacetColor filling color of the polygon Float FacetTransparency transparency factor of the polygon between 0 (opaque) and 1 (completely translucent) String FacetStyle if set to "hidden", the inner area of the polygon is not rendered RGB EdgeColor color of the boundary lines Float EdgeThickness scaling factor for the thickness of the boundary lines String EdgeStyle if set to "hidden", the boundary lines are not rendered
•
Visual::Polygons::decorations

Attributes modifying the appearance of a set of polygons (like a polygonal surface).

imports from: Visual::PointSet::decorations

##### Options
 Flexible FacetColor filling color of the polygons Flexible FacetTransparency transparency factor of the polygons between 0 (opaque) and 1 (completely translucent) Flexible FacetStyle if set to "hidden", the inner area of the polygons are not rendered at all String FacetLabels if set to "hidden", the facet labels are not displayed (in the most cases this is the default behavior) RGB EdgeColor color of the boundary lines Float EdgeThickness scaling factor for the thickness of the boundary lines String EdgeStyle if set to "hidden", the boundary lines are not rendered
•
Visual::Wire::decorations

Attributes modifying the appearance of "wire frameworks". Unlike the rest, the flexible edge attributes are retrieved using the edge iterator as an index/key/argument.

imports from: Visual::PointSet::decorations

##### Options
 Flexible EdgeColor color of the lines representing the edges Flexible EdgeThickness scaling factor for the thickness of the lines representing the edges EdgeMap EdgeLabels textual labels to be placed along the edges Flexible EdgeStyle if set to "hidden", neither the edge nor its label is rendered