#  Copyright (c) 1997-2015
#  Ewgenij Gawrilow, Michael Joswig (Technische Universitaet Berlin, Germany)
#  http://www.polymake.org
#
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by the
#  Free Software Foundation; either version 2, or (at your option) any
#  later version: http://www.gnu.org/licenses/gpl.txt.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#-------------------------------------------------------------------------------

# @topic application
# The application group provides basic functionality for working with permutation
# groups. An object of type [[Group]] is defined by a list of [[Group::GENERATORS|GENERATORS]] describing the 
# permutation of some indices. 
# The object [[GroupOfCone]] encapsulates symmetry information of a [[polytope::Cone|Cone]].
# It can act on the indices of rays ([[GroupOfCone::DOMAIN|DOMAIN]]=>1), of facets ([[GroupOfCone::DOMAIN|DOMAIN]]=>2), or on coordinates ([[GroupOfCone::DOMAIN|DOMAIN]]=>3).

IMPORT
  common

file_suffix grp

HELP
	help.rules

# A finite permutation group.
# 
declare object Group;

# A template parameter used by [[action]] and [[orbit]] specifying that
# the permutation acts on the given container. It will permute the order of
# the elements
declare property_type on_container : c++ (special => 'on_container', include => "polymake/group/orbit.h");

# A template parameter used by [[action]] and [[orbit]] specifying that
# the permutation acts on the deepest elements inside a given container,
# which should be of type [[Int]].
declare property_type on_elements: c++ (special => 'on_elements', include => "polymake/group/orbit.h");

# A template parameter used by [[action]] and [[orbit]] specifying that
# the permutation acts on the rows of a matrix.
declare property_type on_rows: c++ (special => 'on_rows', include => "polymake/group/orbit.h");

# A template parameter used by [[action]] and [[orbit]] specifying that
# the permutation acts on the columns of a matrix.
declare property_type on_cols: c++ (special => 'on_cols', include => "polymake/group/orbit.h");

INCLUDE
  group_properties.rules
  group_of_cone.rules
  group_of_polytope.rules
  group.rules
  representations.rules

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