#  Copyright (c) 1997-2016
#  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.
#-------------------------------------------------------------------------------

object Cone {

    rule RAYS : GROUP.RAYS_ACTION.GENERATORS, GROUP.RAYS_ACTION.ORBIT_REPRESENTATIVES {
        $this->RAYS = group::orbits_in_orbit_order($this->GROUP->RAYS_ACTION, $this->GROUP->RAYS_ACTION->ORBIT_REPRESENTATIVES);
    }

    rule FACETS : GROUP.FACETS_ACTION.GENERATORS, GROUP.FACETS_ACTION.ORBIT_REPRESENTATIVES {
        $this->FACETS = group::orbits_in_orbit_order($this->GROUP->FACETS_ACTION, $this->GROUP->FACETS_ACTION->ORBIT_REPRESENTATIVES);
    }
}

object Polytope {

    property GROUP {

        property SYMMETRIC_FACETS : Matrix<Scalar>;

        property SYMMETRIC_RAYS : Matrix<Scalar>;

    }

    rule GROUP.SYMMETRIC_FACETS : FACETS, LINEAR_SPAN, GROUP.COORDINATE_ACTION {
        $this->GROUP->SYMMETRIC_FACETS = symmetrize_poly_reps($this->FACETS, $this->LINEAR_SPAN, $this->GROUP->COORDINATE_ACTION)->first;
    }

    rule GROUP.SYMMETRIC_RAYS : RAYS, LINEALITY_SPACE, GROUP.COORDINATE_ACTION {
        $this->GROUP->SYMMETRIC_RAYS = symmetrize_poly_reps($this->RAYS, $this->LINEALITY_SPACE, $this->GROUP->COORDINATE_ACTION)->first;
    }
}


# Local Variables:
# mode: perl
# cperl-indent-level: 3
# indent-tabs-mode:nil
# End:
