1#############################################################################
2##
3#W  good-ideals.gd          Manuel Delgado <mdelgado@fc.up.pt>
4#W                          Pedro A. Garcia-Sanchez <pedro@ugr.es>
5##
6#Y  Copyright 2016-- Centro de Matemática da Universidade do Porto, Portugal and IEMath-GR, Universidad de Granada, Spain
7#############################################################################
8
9#############################################################################
10##
11#R  IsGoodIdealRep
12##
13##  The representation of an ideal of a good semigroup.
14##
15#############################################################################
16DeclareRepresentation( "IsGoodIdealRep", IsAttributeStoringRep,
17        [] );
18
19
20#############################################################################
21##
22#C  IsGoodIdeal
23##
24##  The category of good ideals of good semigroups.
25##
26#############################################################################
27DeclareCategory( "IsGoodIdeal", IsAdditiveMagma and IsGoodIdealRep);
28
29
30# Elements of ideals of good semigroups are pairs of integers, so ideals of
31# good semigroups are collections pairs of integers.
32BindGlobal( "GoodIdealType",
33        NewType( CollectionsFamily(CollectionsFamily(CyclotomicsFamily)),
34                 IsGoodIdeal));
35
36
37#############################################################################
38##
39#F Ideal(l,S)
40##
41## l is a list of integers and S a good semigroup
42##
43## returns the ideal of S generated by l.
44##
45#############################################################################
46DeclareGlobalFunction("GoodIdeal");
47#A
48DeclareAttribute( "AmbientGS", IsGoodIdeal);
49
50
51#############################################################################
52##
53#F  GoodGeneratingSystemOfGoodIdeal(I)
54##
55##  Returns a set of generators of the ideal I.
56##  If a minimal generating system has already been computed, this
57##  is the set returned.
58############################################################################
59DeclareGlobalFunction("GoodGeneratingSystemOfGoodIdeal");
60#A
61DeclareAttribute( "GoodGeneratorsIdealGS", IsGoodIdeal);
62
63
64#############################################################################
65##
66#F AmbientGoodSemigroupOfIdeal(I)
67##
68##  Returns the ambient semigroup of the ideal I.
69############################################################################
70DeclareGlobalFunction("AmbientGoodSemigroupOfGoodIdeal");
71
72#############################################################################
73##
74#F  IsIntegralIdeal(i)
75##
76##  Detects if the ideal i is contained in its ambient semigroup
77##
78#############################################################################
79#DeclareGlobalFunction("IsIntegralIdeal");
80
81
82#############################################################################
83##
84#F  BelongsToGoodIdeal(n,I)
85##
86##  Tests if the integer n belongs to the ideal I.
87##
88#############################################################################
89DeclareOperation("BelongsToGoodIdeal",[IsHomogeneousList,IsGoodIdeal]);
90
91#############################################################################
92##
93#F DifferenceOfdeals(I,J)
94##
95## returns the set difference I\J (J must be contained in I)
96#############################################################################
97#DeclareGlobalFunction("DifferenceOfGoodIdeals");
98
99
100#############################################################################
101##
102#F MinimalGoodGeneratingSystemOfGoodIdeal(I)
103##
104## The argument I is an ideal of a good semigroup
105## returns the minimal generating system of I.
106##
107#############################################################################
108DeclareGlobalFunction("MinimalGoodGeneratingSystemOfGoodIdeal");
109DeclareAttribute("MinimalGoodGeneratorsIdealGS", IsGoodIdeal);
110
111
112#############################################################################
113##
114#A SmallElementsOfGoodIdeal
115##
116##  Returns the list of elements in the ideal I
117##
118#############################################################################
119DeclareAttribute( "SmallElements", IsGoodIdeal);
120DeclareSynonymAttr( "SmallElementsOfGoodIdeal", SmallElements);
121#############################################################################
122##
123#A  ConductorOfGoodIdeal(I)
124##
125##  Returns the conductor of I, the largest element in SmallElements(I)
126##
127#############################################################################
128DeclareAttribute("Conductor", IsGoodIdeal);
129DeclareSynonymAttr("ConductorOfGoodIdeal", Conductor);
130
131#############################################################################
132##
133#A  MinIGS(I)
134##
135##  Every good ideal has a minimum
136##
137#############################################################################
138DeclareAttribute("MinIGS", IsGoodIdeal);
139
140#############################################################################
141##
142#F  CanonicalIdealOfGoodSemigroup(s)
143##
144##  Computes a canonical ideal of <s>
145##
146#############################################################################
147DeclareGlobalFunction("CanonicalIdealOfGoodSemigroup");
148