#  Copyright (c) 1997-2006
#  Ewgenij Gawrilow, Michael Joswig (Technische Universitaet Berlin, Germany)
#  http://www.math.tu-berlin.de/polymake,  mailto:polymake@math.tu-berlin.de
#
#  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.
#-----------------------------------------------------------------------------
#  $Project: polymake $$Id: surface_properties.rules 6983 2006-02-15 11:40:39Z thilosch $

object Surface;

# category: Combinatorics
# The vertices of the facets of the surface.

property FACETS
$type="incidence_matrix";

# category: Basic properties
# Labels of the vertices.

property VERTEX_LABELS
$type="array<label>";


# category: Basic properties
# Number of vertices.

property N_VERTICES
$type="cardinal";


# category: Basic properties
# Number of @see FACETS.

property N_FACETS
$type="cardinal";


# category: Combinatorics
# `f_k` is the number of `k`-faces.

property F_VECTOR
$type="vector<cardinal>";

# category: Combinatorics
# `f_ik` is the number of incident pairs of `i`-faces and `k`-faces; the main diagonal contains the @see F_VECTOR.

property F2_VECTOR
$type="matrix<cardinal>";

# category: Combinatorics
# The Euler characteristic of the surface

property EULER_CHARACTERISTIC
$type="scalar";

# category: Combinatorics
# The genus of the surface

property GENUS
$type="scalar";

# category: Visualization
# Coordinates for the vertices of the  surface, such that surface is embedded in some `R^d`
property GEOMETRIC_REALIZATION
$type="matrix";

# category: Combinatorics
# Lists for each occurring size (= number of incident vertices or edges) of a 2-face how many there are.
property POLYGON_SIZES
$type="array< tuple<cardinal,cardinal> >";

# category: Combinatorics
# Lists for each occurring @see VERTEX_DEGREES how many there are.

property VERTEX_SIZES
$type="array< tuple<cardinal,cardinal> >";

# category: Combinatorics
# This is an ordered version of @see GRAPH. The neighbors are ordered cyclically as they occur in 
# the link of each vertex.
property ROTATION_SCHEME
$type="array< list< cardinal > >";

# category: Combinatorics
# The face lattice of the surface organized as a directed graph.
# Each node corresponds to some proper face of the surface.
# The nodes corresponding to the vertices and facets appear in the same order
# as the elements of @see GEOMETRIC_REALIZATION and @see FACETS properties.
#
# Two special nodes represent the whole surface and the empty face.

property HASSE_DIAGRAM
$type="face_lattice";

# category: Combinatorics
# The vertex-edge graph of the surface.
property GRAPH
$type="graph";

# category: Combinatorics
# Degrees of vertices in the @see GRAPH.

property VERTEX_DEGREES
$type="array<cardinal>";

# category: Combinatorics
# The facet-edge graph of the surface.
property DUAL_GRAPH
$type="graph";


# category: Visualization
# Reordered @see FACETS such that they are in the order of appearance around an n-gon
property FACETS_CYCLIC
$type="array< list<cardinal> >";

# category: Visualization
# Reordered @see DUAL_GRAPH for surfaces.
# The neighbor facets are listed in the order corresponding to @see FACETS_CYCLIC,
# so that the first two vertices in FACETS_CYCLIC make up the ridge to the first neighbor
# facet and so on.

property NEIGHBOR_FACETS_CYCLIC
$type="array< list<cardinal> >";
$temporary=1;


# category: Visualization
# Reordered transposed @see FACETS. Dual to @see FACETS_CYCLIC.

property FTV_CYCLIC
$type="array< list<cardinal> >";
$temporary=1;

1;


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