Skip to content

Conversation

@james-d-mitchell
Copy link
Contributor

This pull request contains a variety of minor changes to the semigroups functionality in GAP (these changes were made by Wilf Wilson, Michael Torpey and me, rebased for clarity). The changes are (in order of the commits):

  1. Making it so that a submagma defined by no generators has IsEmpty not IsTrivial. According to the manual IsTrivial implies that the magma being created has exactly one element, but if it has 0 generators, then it has size 0. This was highlighted by the changes to ViewString for a semigroup in (9) below.

  2. We removed the setting of GeneratingPairsOfMagmaCongruence for left or right (but not two-sided) congruences. This is nonsense and should never have been done, it's like setting GeneratorsOfGroup for a semigroup which is not a group.

  3. Introducing the c functions EqPermTrans22 and EqPermTrans44 for checking equality of two permutations, or two transformations, as discussed in PR Improve performance of EqPerm22 and EqPerm44 #280

  4. We declared the attribute NilpotencyDegree, which was previously declared in Smallsemi. This is done to avoid warnings when loading Smallsemi/Semigroups.

  5. Fixed some inconsistencies, namely in the meaning of the categories/properties IsSomethingAsSemigroup. IsMonoidAsSemigroup used to mean a semigroup that happens to be a group mathematically, but did not belong to the category IsMonoid (for whatever reason). On the other hand, IsGroupAsSemigroup was true for semigroups in the category IsGroup, and this was inconsistent with IsMonoidAsSemigroup.

Also we renamed IsSemilatticeAsSemigroup to IsSemilattice again for reasons of consistency with the other IsSomethingAsSemigroup properties. The issue in this case is that there is no category IsSemilattice. This will cause problems in loading the current release versions of the Semigroups and Smallsemi package. I doubt these are used in other packages, but I might be wrong!

  1. We removed duplicate code and otherwise cleaned up IsomorphismReesMatrixSemigroup, and introduced IsomorphismReesZeroMatrixSemigroup to avoid the previous situation where the range of the value returned by IsomorphismReesMatrixSemigroup was not a Rees matrix semigroup.

  2. Updated the function ReesZeroMatrixSemigroup so that Rees 0-matrix semigroups know that they are finite if the underlying semigroup is finite.

  3. Added proper print methods for Rees 0-matrix semigroup elements, that print valid GAP input, previously they did not.

  4. Introducing a function for producing ViewString for semigroups and monoids (in particular, transformation and partial perm semigroups), and another function for groups of the same.

This changes the ViewObj of transformation and partial perm slightly to remove "pts" and replace it with degree/rank for better readability, the previous methods are consolidated into a single function, the old code is removed, the tests and documentation are updated, and a new method for RankOfPartialPermSemigroup for a partial perm semigroup with generators of a group (this is used by the new ViewString method).

  1. The immediate method for GeneratorsOfSemigroup for inverse semigroups is improved to not include obviously duplicate generators.

  2. Semigroup/Monoid/InverseSemigroup/InverseMonoid are fixed to prevent inappropriate removal of the One (if present, and the only generator specified), and tests for this.

Previously, if the One of a collection coll of generators was present in coll, and we tried to make a semigroup/monoid/inverse semigroup or inverse monoid generated by coll, then the One was removed. In the case that the One was the only generator, or that the One of coll was not the same as the One of coll with One removed (possible for partial perms), this meant that the value of GeneratorsOfMonoid could not be used to recreate the object. For example, Semigroup(IdentityTransformation) formerly resulted in a monoid with 0 generators, but Monoid([]) (rightly) returns an error (it is not possible to create monoids with 0 generators). This change fixes this, and adds some tests for this.

@olexandr-konovalov
Copy link
Member

Thanks - this contains 22 commits and cumulative diff also shows many changes which are only removing traling whitespace characters. Could you perhaps point out to individual commits among those 22 to help reviewing this?

Will this break any packages that you maintain? Should this be merged simultaneously with their coming updates? Is this important to do prior to GAP 4.8 beta as it may break tests in other packages, to avoid the necessity of the 2nd beta?

@ChrisJefferson
Copy link
Contributor

If you go to https://github.com/gap-system/gap/pull/317/files?w=1 , you can see this without the whitespace changes.

I see at the bottom a couple of '#FIXME' comments. Should they get fixed? :)

@james-d-mitchell
Copy link
Contributor Author

I updated the comments in the pull request to say what we did. Please let me know if I should do anything else!

@james-d-mitchell
Copy link
Contributor Author

We have the necessary changes to Semigroups and Smallsemi in the development versions and will make a release probably after the release of the 4.8 beta.

@olexandr-konovalov
Copy link
Member

@james-d-mitchell thanks - but are current Semigroups and Smallsemi compatible with these changes? There are packages that may rely on them.

@james-d-mitchell
Copy link
Contributor Author

No the current versions of Semigroups and Smallsemi are broken by these changes. It is easy to resolve these problems though, so I could release new versions of both packages essentially immediately. Would this be the best thing to do?

@olexandr-konovalov
Copy link
Member

@james-d-mitchell I suggest to get this PR reviewed first, and if approved, merge it and then immediately release Semigroups and Smallsemi. Just in case there may be some adjustments needed after review.

@fingolfin
Copy link
Member

This PR contains a ton of pointless merge commits in this branch, which complicate reviewing. It would hence be really nice if you could at the very least rebase this on the latest master, and drop the pointless merges. This is super easy to do (I just tried it with this PR on my local machine):

$ cd path-to-gap-clone
$ git checkout master && git pull # make sure master is current
$ git checkout semigroups
$ git rebase master

This leaves me with 10 commits. You may also want to pass --ignore-date to git rebase, this way the commits get fresh timestamps (instead of preserving the old ones).

Once you did that, you can use git push --force to push the changes to github. No need to open a new PR, it will automatically update the existing PR. If you have any doubts about this process, feel free to contact me directly (we can also skype).

@fingolfin
Copy link
Member

Some immediate remarks:

  1. Can you please elaborate why exactly the declaration of NilpotencyDegree was added here? Naively, it would sound as if this should be declared in the semigroups package, and then smallsemi depends on that. But perhaps that is not how things work right now? In any case, please think of people who have to read that code in a few years (or months), and don't have your knowledge; they will wonder why the name NilpotencyDegree occurs exactly once in the library, with no comments whatsoever. So, if this is to be kept, pleae add a comment to the declaration of NilpotencyDegree explaining its purpose I.e. that there are no implementations in the library, but that packages X and Y need it there.
  2. I am concerned about renaming IsSemilatticeAsSemigroup to IsSemilattice. First off, as you mention yourself, this breaks loading the existing Semigroups and smallsemi packages. Worse, it does the reverse to. So one has to update GAP and those packages in lock-step. That is usually leading to lots of pain for various people, and I would strongly advice to avoid this situation whenever possible. In addition, you should not just be concerned about breaking packages, but also about breaking unpublished user code.
    In this situation, the right solution probably is to make the change, but at the same time add a suitable DeclareSynonymAttr invocation, perhaps to obsolete.gd.
    Then, also edit doc/ref/obsolete.xml and add this obsolete name to the list there.
  3. I can't really comment on the IsGroupAsSemigroup, though making behavior uniform always sounds like a good idea. But this change might also break user's code in a silent, subtle way. So perhaps this is the rigth thing to do, I'll trust your judgement on that -- BUT: Then we should very explicitly document this change of behavior. Perhaps the 4.8 releaes notes are the ideal place for that; the best way to ensure it will be mentioned there then is to add a file to dev/Updates/ explaining the change.

@fingolfin
Copy link
Member

And lest I sound too negative: Thank you for your work on this, it seems overall like a good thing to me, and I appreciate it!

@james-d-mitchell
Copy link
Contributor Author

Thanks for your comments @fingolfin, I'll get rid of the merges in the PR as you suggest, and add IsSemigroupAsSemilattice to obsolete.*, as you suggest. Probably won't find time today, but you never know.

I completely agree that it would make more sense to have Smallsemi depend on Semigroups, and to have all of the declarations in Semigroups, and not in the library. Unfortunately, my co-author for Smallsemi didn't want to make Semigroups a dependency, and so my hands were tied. For a variety of reasons, I'd really like to make Smallsemi depend on Semigroups, I'll try to convince my co-author again.

Just to mention that there are quite some things in the library (for Green's *-relations, and property testing) that are only declared (no methods installed in the library) so that they can be used in both Semigroups and Smallsemi without making Smallsemi dependent on Semigroups, not only NilpotencyDegree.

@fingolfin
Copy link
Member

@james-d-mitchell OK, I see. Regarding other things in the library that are only for use in Semigroups and Smallsemi: Of course I'd then also prefer if those were moved to Semigroups :). But this not urgent. And we have more of these kind, e.g. if you grep for Bravais in the GAP library, that's all for the carat package, I think; and we even have a whole .c file which basically contains code for the polycyclic package. But of course we should try to be better than our sins of the past... ;-).

@james-d-mitchell
Copy link
Contributor Author

I think I've now made the changes requested by @fingolfin: rebased, added a synonym to obsolete.gd for IsSemilatticeAsSemigroup, added some doc for this in obsolete.xml, and added something in dev/Updates. Please let me know if I missed something.

I think this need some further changes to ViewString methods, which I'm going to do now. Should I close the pull request in the mean time, or what?

@olexandr-konovalov
Copy link
Member

@james-d-mitchell You may keep it open. Maybe add (WIP, do not merge) in the title of the pull request. The PR will be updated automatically as soon as you will update the branch from which is was made.

@fingolfin
Copy link
Member

As @alex-konovalov says :). It also seems some of those merge commits are back, so perhaps rebase it once more onto master (once you are done, that is).

@james-d-mitchell james-d-mitchell force-pushed the semigroups branch 9 times, most recently from 1ae31d1 to bdea4ce Compare November 10, 2015 11:36
@james-d-mitchell james-d-mitchell added this to the GAP 4.8.0 milestone Nov 10, 2015
@james-d-mitchell
Copy link
Contributor Author

@fingolfin @alex-konovalov @ChrisJefferson I think this is ready to go, I've rebased the commits so that (hopefully) the changes are clear, I've added tests where appropriate, and I've update the documentation. I have versions of Semigroups and Smallsemi which are compatible with the changes in this PR. Please let me know if there's anything further I should do.

Rebasing as suggested by @fingolfin doesn't seem to remove the merges from master into the semigroups branch, maybe I shouldn't have done that, not sure if this should be cleaned up or not?

@fingolfin
Copy link
Member

@james-d-mitchell That's odd, I just once again did a "rebase", and it reliably gets rid of the merges. That said, your branch is not based on latest master -- perhaps you did a git rebase master without making sure that master actually refers to the current master branch? Depending on your setup, you may need to do this:

git fetch --all
git rebase origin/master   # asuming that "origin" is the name of the gap-system remote

@fingolfin
Copy link
Member

Another nitpick: Your commit messages are non-standard. Please take a look at http://chris.beams.io/posts/git-commit/#seven-rules -- the main issue I have is that the first lines are far too long, and that the rest of the message also has lines that are far too long.

You can fix this easily (well, at least from my perspective :) using git rebase -i BRANCH (where BRANCH is either master or origin/master or ... well, whatever works for the first "complaint" I mentioned ;-).

@james-d-mitchell
Copy link
Contributor Author

I've now made the changes to the ViewString methods, turns out the rank increments of 8 were unnecessary.

@fingolfin
Copy link
Member

@james-d-mitchell I commented on the individual commits. Since you rebased and force pushed, those commits are now of course gone resp. have new ideas, so GitHub does not show my comments for them anymore. You can still view them if you know the old commit ids, though -- or open one of those notification emails you may have received for each of my comments, the links therein should still allow you to view those comments.

@james-d-mitchell
Copy link
Contributor Author

Thanks @fingolfin just want to check that this was the correct thing to do. I believe I've addressed all of your comments, please let me know if I should do something further.

@fingolfin
Copy link
Member

@james-d-mitchell Thanks for your patience and your work. I think this patch series looks very good now. Well-done! I don't have any objections to it. Assuming that other people working on semigroups like @markuspf are fine with it (which I assume), I see no reason not to merge it.

Though perhaps another dev/Updates entry summarizing the changes would be helpful for the next release? @alex-konovalov may have a thought on that -- but regardless of that, this should not delay merging this, it could be added later on (or not at all -- we can describe the changes directly in the changes manual I guess...?)

Anyway, short version: Good to go. I'll run the full test suite on this now, and assumign I find no error, will merge it (unless somebody else beats me to it :)

@olexandr-konovalov
Copy link
Member

@fingolfin dev/Updates is a proper way of doing things but for those who thinks that this is too tedious, the minimal effort could be to edit Wiki, at the moment here: https://github.com/gap-system/gap/wiki/Changes-between-GAP-4.7-and-GAP-4.8. This requires plain text, no GAPDoc markup and should not take much of your time.

Milestones are useful, but they don't address the need completely - it's hard to judge the scope of each issue and PR listed there just from their titles sometimes not descriptive enough. That's why a high-level overview of changes is needed.

@markuspf
Copy link
Member

This all looks good to me, and I will merge it now. Thanks for your patience @james-d-mitchell.

markuspf added a commit that referenced this pull request Nov 24, 2015
@markuspf markuspf merged commit cf7c8d9 into gap-system:master Nov 24, 2015
@olexandr-konovalov
Copy link
Member

@james-d-mitchell please now publish Semigroups (2.7) and Smallsemi (0.6.9).

@olexandr-konovalov
Copy link
Member

Just to inform you that this PR requires updating of a dozen of manual examples. I will do this as soon as other tests will stabilise.

============================================================
########> Diff in [ "./../../lib/object.gd", 708, 739 ]
# Input is:
KnownPropertiesOfObject(g);
# Expected output:
[ "IsFinite", "CanEasilyCompareElements", "CanEasilySortElements", 
 "IsDuplicateFree", "IsGeneratorsOfMagmaWithInverses", 
 "IsAssociative", "IsGeneratorsOfSemigroup", "IsSimpleSemigroup", 
 "IsRegularSemigroup", "IsCompletelyRegularSemigroup", 
 "IsCompletelySimpleSemigroup", "IsFinitelyGeneratedGroup", 
 "IsSubsetLocallyFiniteGroup", "KnowsHowToDecompose", 
 "IsNilpotentByFinite" ]
# But found:
[ "IsFinite", "CanEasilyCompareElements", "CanEasilySortElements", 
  "IsDuplicateFree", "IsGeneratorsOfMagmaWithInverses", 
  "IsAssociative", "IsGeneratorsOfSemigroup", "IsSimpleSemigroup", 
  "IsRegularSemigroup", "IsInverseSemigroup", 
  "IsCompletelyRegularSemigroup", "IsCompletelySimpleSemigroup", 
  "IsGroupAsSemigroup", "IsMonoidAsSemigroup", "IsOrthodoxSemigroup", 
  "IsFinitelyGeneratedGroup", "IsSubsetLocallyFiniteGroup", 
  "KnowsHowToDecompose", "IsNilpotentByFinite" ]
########
########> Diff in [ "./../../lib/object.gd", 708, 739 ]
# Input is:
KnownPropertiesOfObject(g);
# Expected output:
[ "IsEmpty", "IsTrivial", "IsNonTrivial", "IsFinite", 
 "CanEasilyCompareElements", "CanEasilySortElements", 
 "IsDuplicateFree", "IsGeneratorsOfMagmaWithInverses", 
 "IsAssociative", "IsGeneratorsOfSemigroup", "IsSimpleSemigroup", 
 "IsRegularSemigroup", "IsCompletelyRegularSemigroup", 
 "IsCompletelySimpleSemigroup", "IsFinitelyGeneratedGroup", 
 "IsSubsetLocallyFiniteGroup", "KnowsHowToDecompose", 
 "IsPerfectGroup", "IsSolvableGroup", "IsPolycyclicGroup", 
 "IsNilpotentByFinite", "IsTorsionFree", "IsFreeAbelian" ]
# But found:
[ "IsEmpty", "IsTrivial", "IsNonTrivial", "IsFinite", 
  "CanEasilyCompareElements", "CanEasilySortElements", 
  "IsDuplicateFree", "IsGeneratorsOfMagmaWithInverses", 
  "IsAssociative", "IsGeneratorsOfSemigroup", "IsSimpleSemigroup", 
  "IsRegularSemigroup", "IsInverseSemigroup", 
  "IsCompletelyRegularSemigroup", "IsCompletelySimpleSemigroup", 
  "IsGroupAsSemigroup", "IsMonoidAsSemigroup", "IsOrthodoxSemigroup", 
  "IsFinitelyGeneratedGroup", "IsSubsetLocallyFiniteGroup", 
  "KnowsHowToDecompose", "IsPerfectGroup", "IsSolvableGroup", 
  "IsPolycyclicGroup", "IsNilpotentByFinite", "IsTorsionFree", 
  "IsFreeAbelian" ]
########
########> Diff in [ "./../../lib/object.gd", 708, 739 ]
# Input is:
KnownTruePropertiesOfObject(g);
# Expected output:
[ "IsNonTrivial", "IsFinite", "CanEasilyCompareElements", 
 "CanEasilySortElements", "IsDuplicateFree", 
 "IsGeneratorsOfMagmaWithInverses", "IsAssociative", 
 "IsGeneratorsOfSemigroup", "IsSimpleSemigroup", 
 "IsRegularSemigroup", "IsCompletelyRegularSemigroup", 
 "IsCompletelySimpleSemigroup", "IsFinitelyGeneratedGroup", 
 "IsSubsetLocallyFiniteGroup", "KnowsHowToDecompose", 
 "IsSolvableGroup", "IsPolycyclicGroup", "IsNilpotentByFinite" ]
# But found:
[ "IsNonTrivial", "IsFinite", "CanEasilyCompareElements", 
  "CanEasilySortElements", "IsDuplicateFree", 
  "IsGeneratorsOfMagmaWithInverses", "IsAssociative", 
  "IsGeneratorsOfSemigroup", "IsSimpleSemigroup", 
  "IsRegularSemigroup", "IsInverseSemigroup", 
  "IsCompletelyRegularSemigroup", "IsCompletelySimpleSemigroup", 
  "IsGroupAsSemigroup", "IsMonoidAsSemigroup", "IsOrthodoxSemigroup", 
  "IsFinitelyGeneratedGroup", "IsSubsetLocallyFiniteGroup", 
  "KnowsHowToDecompose", "IsSolvableGroup", "IsPolycyclicGroup", 
  "IsNilpotentByFinite" ]
########
########> Diff in [ "./../../lib/mgmadj.gd", 21, 32 ]
# Input is:
M:=MagmaWithZeroAdjoined(S);
# Expected output:
<<commutative transformation semigroup on 3 pts with 1 generator>
with 0 adjoined>
# But found:
<<commutative transformation semigroup of degree 3 with 1 generator>
  with 0 adjoined>
########
########> Diff in [ "./mgmadj.xml", 9, 17 ]
# Input is:
M:=MagmaWithZeroAdjoined(S);
# Expected output:
<<transformation semigroup on 3 pts with 2 generators>
  with 0 adjoined>
# But found:
<<transformation semigroup of degree 3 with 2 generators>
  with 0 adjoined>
########
########> Diff in [ "./mgmadj.xml", 39, 52 ]
# Input is:
T:=MagmaWithZeroAdjoined(S);
# Expected output:
<<transformation monoid on 7 pts with 2 generators> with 0 adjoined>
# But found:
<<transformation monoid of degree 7 with 2 generators>
  with 0 adjoined>
########
########> Diff in [ "./mgmadj.xml", 62, 73 ]
# Input is:
T:=MagmaWithZeroAdjoined(S);
# Expected output:
<<transformation monoid on 8 pts with 2 generators> with 0 adjoined>
# But found:
<<transformation monoid of degree 8 with 2 generators>
  with 0 adjoined>
########
########> Diff in [ "./mgmadj.xml", 62, 73 ]
# Input is:
UnderlyingInjectionZeroMagma(T);
# Expected output:
MappingByFunction( <transformation monoid on 8 pts with 2 generators>
 , <<transformation monoid on 8 pts with 2 generators>
  with 0 adjoined>, function( elt ) ... end, function( x ) ... end )
# But found:
MappingByFunction( <transformation monoid of degree 8 with 2 
 generators>, <<transformation monoid of degree 8 with 2 generators>
  with 0 adjoined>, function( elt ) ... end, function( x ) ... end )
########
########> Diff in [ "./../../lib/mgmadj.gd", 82, 92 ]
# Input is:
S:=Semigroup( Transformation( [ 1, 1, 1 ] ), 
Transformation( [ 2, 3, 1 ] ) );
# Expected output:
<transformation semigroup on 3 pts with 2 generators>
# But found:
<transformation semigroup of degree 3 with 2 generators>
########
########> Diff in [ "./../../lib/mgmadj.gd", 82, 92 ]
# Input is:
S:=Semigroup( Transformation( [ 1, 1, 1 ] ), 
Transformation( [ 1, 3, 2 ] ) );
# Expected output:
<transformation semigroup on 3 pts with 2 generators>
# But found:
<transformation semigroup of degree 3 with 2 generators>
########
########> Diff in [ "./../../lib/semigrp.gd", 61, 68 ]
# Input is:
s:= Semigroup(a, b);
# Expected output:
<transformation semigroup on 4 pts with 2 generators>
# But found:
<transformation semigroup of degree 4 with 2 generators>
########
########> Diff in [ "./../../lib/semigrp.gd", 90, 95 ]
# Input is:
t:=Subsemigroup(s,[a]);
# Expected output:
<commutative transformation semigroup on 4 pts with 1 generator>
# But found:
<commutative transformation semigroup of degree 4 with 1 generator>
########
########> Diff in [ "./../../lib/grptbl.gd", 153, 158 ]
# Input is:
SemigroupByMultiplicationTable([[1,2,3],[2,3,1],[3,1,2]]);
# Expected output:
<semigroup with 3 generators>
# But found:
<semigroup of size 3, with 3 generators>
########
########> Diff in [ "./../../lib/grptbl.gd", 179, 184 ]
# Input is:
MonoidByMultiplicationTable([[1,2,3],[2,3,1],[3,1,2]]);
# Expected output:
<monoid with 3 generators>
# But found:
<monoid of size 3, with 3 generators>
########
########> Diff in [ "./../../lib/fpsemi.gd", 281, 294 ]
# Input is:
t := Semigroup( [ GeneratorsOfSemigroup( s )[ 1 ] ]);
# Expected output:
<semigroup with 1 generator>
# But found:
<commutative semigroup with 1 generator>
########
########> Diff in [ "./intrfc.xml", 749, 773 ]
# Input is:
s:=Semigroup(a,b);
# Expected output:
<semigroup with 2 generators>
# But found:
<commutative semigroup with 2 generators>
########

fingolfin added a commit that referenced this pull request Nov 24, 2015
@fingolfin
Copy link
Member

My request to change DeclareObsoleteSynonym to DeclareSynonymAttr was not heeded -- I really do not understand why? I explained carefully that this breaks code, and mentioned that it is a bad idea to make such changes...

There was no proper explanantion as to why this trivial change was refused, hence I now made it myself in cc799f0

Let me explain in more detail why I think this is important: First off, generally speaking, It is always a bad idea to make a change that requires one to update to things simultaneously to make it work. For example, it complicates git bisect a lot, possibly making it useless -- in this case, if one has to debug any semigroups related bug, one now needs to have two versions of semigroups around, and has to switch between them constantly, depending on which GAP revision git bisect is testing. That's a major PITA. Moreover, all developers who now do a "git pull" may now have to update semigroups. Even if they don't use semigroups, because the change causesmake testinstall` to fail (in the second half, which tries to load all packages).

Of course, sometimes, there is no choice, and one is forced to do this unfortunate kind of "lock-step" change.

But in this case, there is a trivial change that avoids this issue, requiring a single line change. Nobody identified any reason why this change should not be made, hence I now made it myself.

@markuspf
Copy link
Member

On Tue, Nov 24, 2015 at 08:04:58AM -0800, Max Horn wrote:

My request to change DeclareObsoleteSynonym to DeclareSynonymAttr was not
heeded -- I really do not understand why? I explained carefully that this
breaks code, and mentioned that it is a bad idea to make such changes...

There was no proper explanantion as to why this trivial change was refused,
hence I now made it myself in cc799f0

This was me being stupid and not remembering why this PR was not merged yet.
Sorry about that. I do absolutely understand why you think this change is
useful.

@james-d-mitchell
Copy link
Contributor Author

@fingolfin @markuspf I also completely agree with the rationale behind the change from DeclareObsoleteSynonym to DeclareSynonymAttr, I'm sorry I didn't do this before. The main reason is that I was at a workshop last week and travelling to Australia for the past two days, and simply didn't have time.

@fingolfin thanks for all of your help with this pull request, it is very much appreciated.

@alex-konovalov Sorry for the broken manual examples, I thought I had caught all of these. Please let me know if I should do anything further!

@james-d-mitchell james-d-mitchell deleted the semigroups branch November 24, 2015 19:42
@olexandr-konovalov
Copy link
Member

@james-d-mitchell of course, now there are 37 diffs in testinstall.g but only when all packages are loaded. I think I only have to wait until your two new packages will be picked up, and they will hopefully gone...

@olexandr-konovalov
Copy link
Member

@james-d-mitchell the dev/Updates/is-group-as-semigroup file does not pass make testupdates test. Without packages, it reports

########> Diff in TESTDEVUPDATE, line 7:
# Input is:
IsMonoidAsSemigroup(S);
# Expected output:
true
# But found:
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `IsMonoidAsSemigroup' on 1 arguments
########
########> Diff in TESTDEVUPDATE, line 23:
# Input is:
IsGroupAsSemigroup(S);
# Expected output:
true
# But found:
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `IsGroupAsSemigroup' on 1 arguments
########

and with all packages (including Semigroups and Smallsemi picked up this morning)

########> Diff in TESTDEVUPDATE, line 15:
# Input is:
S := Semigroup(IdentityTransformation);
# Expected output:
<trivial transformation group of degree 0 with 1 generator>
# But found:
<trivial transformation group>
########

@olexandr-konovalov
Copy link
Member

@james-d-mitchell please ignore the last diff with all packages - that is still with the stable version of semigroups (https://github.com/gap-system/gap-distribution/blob/master/DistributionUpdate/PackageUpdate/Makefile). I will recheck this will the latest now. But the 1st two diffs are clearly genuine.

olexandr-konovalov pushed a commit to olexandr-konovalov/gap that referenced this pull request Nov 30, 2015
Also discovered some Example and Log elements not using CDATA and fixed them.
olexandr-konovalov pushed a commit to olexandr-konovalov/gap that referenced this pull request Nov 30, 2015
Also discovered some Example and Log elements not using CDATA and fixed them.
olexandr-konovalov pushed a commit to olexandr-konovalov/gap that referenced this pull request Nov 30, 2015
Also discovered some Example and Log elements not using CDATA and fixed them.
@olexandr-konovalov
Copy link
Member

@james-d-mitchell just to give you the latest account:

markuspf added a commit that referenced this pull request Nov 30, 2015
Updated manual examples changed after PR #317
@olexandr-konovalov
Copy link
Member

@james-d-mitchell just to remind that in make testupdates the test from dev/Updates/is-group-as-semigroup fails if no packages are loaded:

Checking /home/hudson/hudson/workspace/GAP-pkg-update-master-quicktest/GAPCOPT\
S/64build/GAPGMP/gmp/GAPTARGET/updates/label/graupius/GAP-pkg-update-master-sn\
apshot/dev/Updates/is-group-as-semigroup
########> Diff in TESTDEVUPDATE, line 7:
# Input is:
IsMonoidAsSemigroup(S);
# Expected output:
true
# But found:
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `IsMonoidAsSemigroup' on 1 arguments
########
########> Diff in TESTDEVUPDATE, line 23:
# Input is:
IsGroupAsSemigroup(S);
# Expected output:
true
# But found:
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `IsGroupAsSemigroup' on 1 arguments
########
false

@olexandr-konovalov
Copy link
Member

@james-d-mitchell Never mind, I've figured out that dev/Updates/is-group-as-semigroup says that Semigroups package is required to reproduce the test. In this case, the test should load that package. I've added this in 465f4e3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants