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