#############################################################################
##
## Cone.gd ConvexForHomalg package Sebastian Gutsche
##
## Copyright 2011 Lehrstuhl B für Mathematik, RWTH Aachen
##
## Cones for ConvexForHomalg.
##
#############################################################################
## <#GAPDoc Label="IsCone">
##
##
## true or false
##
## The &GAP; category of a cone.
##
##
## <#/GAPDoc>
##
DeclareCategory( "IsCone",
IsFan );
################################
##
## Basic Properties
##
################################
DeclareProperty( "IsRegularCone",
IsCone );
## <#GAPDoc Label="IsRay">
##
##
## true or false
##
## Checks if the cone cone is a ray, i.e. if it has only one ray generator.
##
##
## <#/GAPDoc>
##
DeclareProperty( "IsRay",
IsCone );
################################
##
## Attributes
##
################################
## <#GAPDoc Label="DualCone">
##
##
## a cone
##
## Returns the dual cone of the cone cone.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "DualCone",
IsCone );
## <#GAPDoc Label="HilbertBasis">
##
##
## a list
##
## Returns a Hilbert Basis of the cone cone.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "HilbertBasis",
IsCone );
## <#GAPDoc Label="RaysInFacets">
##
##
## a list
##
## Returns an incidence matrix for the rays in the facets of the cone cone. The ith entry
## of the result corresponds to the ith facet, the jth entry of this is 1 if the jth ray is
## in th ith facet, 0 otherwise.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "RaysInFacets",
IsCone );
## <#GAPDoc Label="Facets">
##
##
## a list
##
## Returns a list of the facets of the cone cone as homalg cones.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "Facets",
IsCone );
## <#GAPDoc Label="GridGeneratedByCone">
##
##
## a homalg module
##
## Returns the grid generated by the lattice points of the cone cone as a homalg module.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "GridGeneratedByCone",
IsCone );
## <#GAPDoc Label="FactorGrid">
##
##
## a homalg module
##
## Returns the factor of the containing grid of the cone cone and the grid generated by cone.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "FactorGrid",
IsCone );
## <#GAPDoc Label="GridGeneratedByOrthogonalCone">
##
##
## a homalg module
##
## Returns the grid generated by the lattice points of the orthogonal cone of the cone cone.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "GridGeneratedByOrthogonalCone",
IsCone );
## <#GAPDoc Label="DefiningInequalities">
##
##
## a list
##
## Returns a list of the defining inequalities of the cone cone.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "DefiningInequalities",
IsCone );
## <#GAPDoc Label="IsContainedInFan">
##
##
## a fan
##
## If the cone cone is constructed as part of a fan, this method returns the fan.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "IsContainedInFan",
IsCone );
## <#GAPDoc Label="FactorGridMorphism">
##
##
## a morphism
##
## Returns the morphism to the factor grid of the cone cone.
##
##
## <#/GAPDoc>
##
DeclareAttribute( "FactorGridMorphism",
IsCone );
DeclareAttribute( "LinearSubspaceGenerators",
IsCone );
DeclareAttribute( "APointedFactor",
IsCone );
DeclareAttribute( "FactorConeEmbedding",
IsCone );
DeclareAttribute( "EqualitiesOfCone",
IsCone );
DeclareAttribute( "RelativeInteriorRayGenerator",
IsCone );
DeclareAttribute( "HilbertBasisOfDualCone",
IsCone );
################################
##
## Methods
##
################################
## <#GAPDoc Label="IntersectionOfCones">
##
##
## a cone
##
## If the cones cone1 and cone2 share a face, the method returns their intersection,
##
##
## <#/GAPDoc>
##
DeclareOperation( "IntersectionOfCones",
[ IsCone, IsCone ] );
DeclareOperation( "Intersect2",
[ IsCone, IsCone ] );
## <#GAPDoc Label="Contains">
##
##
## true or false
##
## Returns true if the cone cone1 contains the cone cone2, false otherwise.
##
##
## <#/GAPDoc>
##
DeclareOperation( "Contains",
[ IsCone, IsCone ] );
## <#GAPDoc Label="RayGeneratorContainedInCone">
##
##
## true or false
##
## Returns true if the ray generator raygen is contained the cone cone, false otherwise.
##
##
## <#/GAPDoc>
##
DeclareOperation( "RayGeneratorContainedInCone",
[ IsList, IsCone ] );
DeclareOperation( "RayGeneratorContainedInRelativeInterior",
[ IsList, IsCone ] );
## <#GAPDoc Label="StarFan">
##
##
## a fan
##
## Returns the star fan of the cone cone, as described in cox, 3.2.7
##
##
## <#/GAPDoc>
##
DeclareOperation( "StarFan",
[ IsCone ] );
## <#GAPDoc Label="StarFan2">
##
##
## a fan
##
## Returns the star fan of the fan fan along the cone cone, as described in cox, 3.2.7
##
##
## <#/GAPDoc>
##
DeclareOperation( "StarFan",
[ IsCone, IsFan ] );
## <#GAPDoc Label="StarSubdivisionOfIthMaximalCone">
##
##
## a fan
##
## Returns the star subdivision of the fan fan on the numbth maximal cone as in cox, 3.3.13.
##
##
## <#/GAPDoc>
##
DeclareOperation( "StarSubdivisionOfIthMaximalCone",
[ IsFan, IsInt ] );
DeclareOperation( "StellarSubdivision",
[ IsCone, IsFan ] );
DeclareOperation( "\*",
[ IsHomalgMatrix, IsCone ] );
# DeclareOperation( "\=",
# [ IsCone, IsCone ] );
DeclareOperation( "IntersectionOfConelist",
[ IsList ] );
DeclareOperation( "NonReducedInequalities",
[ IsCone ] );
################################
##
## Constructors
##
################################
DeclareOperation( "Cone",
[ IsCone ] );
## <#GAPDoc Label="Cone">
##
##
## a cone
##
## Returns a cone generated by the rays in cone.
##
##
## <#/GAPDoc>
##
DeclareOperation( "Cone",
[ IsList ] );
DeclareOperation( "PolymakeCone",
[ IsList ] );
DeclareOperation( "InternalCone",
[ IsList ] );
DeclareOperation( "ConeByInequalities",
[ IsList ] );
DeclareOperation( "ConeByEqualitiesAndInequalities",
[ IsList, IsList ] );
DeclareOperation( "Cone",
[ IsExternalObject ] );