diff --git a/gap/semigroups/semigraph.gd b/gap/semigroups/semigraph.gd index 2cb8b5ab6..69de98a70 100644 --- a/gap/semigroups/semigraph.gd +++ b/gap/semigroups/semigraph.gd @@ -10,7 +10,8 @@ DeclareOperation("GraphInverseSemigroup", [IsDigraph]); -DeclareCategory("IsGraphInverseSemigroupElement", IsAssociativeElement); +DeclareCategory("IsGraphInverseSemigroupElement", + IsAssociativeElement and IsPositionalObjectRep); DeclareCategoryCollections("IsGraphInverseSemigroupElement"); DeclareSynonymAttr("IsGraphInverseSubsemigroup", @@ -38,3 +39,5 @@ DeclareOperation("IndexOfVertexOfGraphInverseSemigroup", [IsGraphInverseSemigroupElement]); DeclareAttribute("VerticesOfGraphInverseSemigroup", IsGraphInverseSemigroup); +DeclareAttribute("EdgesOfGraphInverseSemigroup", + IsGraphInverseSemigroup); diff --git a/gap/semigroups/semigraph.gi b/gap/semigroups/semigraph.gi index 1f7d0c3b5..69e2b0f79 100644 --- a/gap/semigroups/semigraph.gi +++ b/gap/semigroups/semigraph.gi @@ -282,6 +282,12 @@ function(S) return result; end); +InstallMethod(EdgesOfGraphInverseSemigroup, +"for a graph inverse semigroup", +[IsGraphInverseSemigroup], +S -> Difference(GeneratorsOfInverseSemigroup(S), +VerticesOfGraphInverseSemigroup(S))); + InstallMethod(IndexOfVertexOfGraphInverseSemigroup, "for a graph inverse semigroup element", [IsGraphInverseSemigroupElement], @@ -291,3 +297,8 @@ function(x) fi; return x![1][1] - DigraphNrEdges(x![2]); end); + +InstallMethod(IsWholeFamily, +"for a subsemigroup of a graph inverse semigroup", +[IsGraphInverseSubsemigroup], +S -> Size(ElementsFamily(FamilyObj(S))!.semigroup) = Size(S));