-
Notifications
You must be signed in to change notification settings - Fork 160
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Forbid installing new implications to representations using InstallTrueMethod
#3006
Forbid installing new implications to representations using InstallTrueMethod
#3006
Conversation
Very nice, thank you! This fails in
As such, we'll have to wait till all packages are updated before merging this. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have added this PR to the list of PR blocked by packages (#2984) and added a "Do not merge label" until we will have package updates in place. At the moment, with this PR it is not even possible to load all packages because of an errors (a link to the Jenkins test available only from St Andrews is https://gap-ci.cs.st-andrews.ac.uk/view/Pull%20requests/job/GAP-pull-request-quicktest/48/).
... to correctly model their meaning, instead of (ab)using InstallTrueMethod to do so. Motivated by gap-system/gap#3006
2bce2a7
to
1693496
Compare
@zickgraf Sorry. I am just not sure how we should proceed. If we regard your idea as useful that attribute storing for certain objects can be forced via an implication of filters that define these objects then the current pull request makes no sense in the current form. At the moment it is not clear to me what exactly we want to achieve. |
Some thoughts: Maybe it makes sense to distinguish between "definitional implications" (i.e. what we currently do in CAP) and "acquired implications" (i.e. additional implications triggered via |
@ThomasBreuer and me discussed this on Gather. I support the idea of using the logic that an implication "A => B" where B implies a rep is OK when the same rep is already part of "A". He'll work on implementing something in this vein. |
ef5ea4d
to
d870125
Compare
Filters of type representation are intended to describe the internal data of an object. Thus a logical implication to such a filter makes sense only if the implying filters are also representations. As had be noticed by @fingolfin, there was a now forbidden hidden implication in the library, from `IsHandledByNiceBasis` to `IsAttributeStoringRep`. Logically, one wants this rather the other way round, that is, the mechanism relies on stored data and thus should be *restricted* to situations where `IsAttributeStoringRep` is present. I have now changed this setup accordingly, that is, `IsAttributeStoringRep` is no longer implied by `IsHandledByNiceBasis`. As a consequence, one `Objectify` call in the library had to be changed such that `IsAttributeStoringRep` gets explicitly set. (The same might happen also in packages.)
allow implications to representations that are already implied
2fb42e3
to
45a91e4
Compare
@zickgraf I have updated the pull request according to our discussion. Could you check whether CAP does no longer have problems with it? |
@ThomasBreuer The tests of CAP, LinearAlgebraForCAP etc. now pass with the latest commit, thanks! One question out of curiosity: This PR (both the original and the updated version) allows installing implications of formerly unrelated representations:
The documentation says
Thus, I cannot see a setting where
and the only immediate issue I found was the call to |
@zickgraf You are right. Implications between representations should be handled in the declarations of the representations, not via |
Implications between representations should be handled in the declarations of the representations, not via `InstallTrueMethod`.
Just checked it out and it seems to work perfectly :-)
I think the title is misleading anyway after all the changes made. I suggest something like the following: Forbid installing new implications to representations using |
InstallTrueMethod
@zickgraf Thanks for the confirmation. I have changed the title. Now the only problem is one CI test failure concerning a problem with |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, looks good to me!
Since pull request gap-system#3006 go merged, the statement about the implication installed by `InstallHandlingByNiceBasis` was not correct. This change addresses issue gap-system#5322.
- Let the filters created by `DeclareHandlingByNiceBasis` imply `IsFreeLeftModule`. This was the case before the changes from gap-system#3006, and this change fixes the problem described in gap-system#5322, as I had sketched in the discussion of gap-system#5325. - Document this change (following gap-system#5325). - Increase the rank of `IsHandledByNiceBasis` by 2. Then we get back to the rank before the changes from gap-system#3006. This way, the `\in` method with second argument in `IsFreeLeftModule and IsHandledByNiceBasis` is again ranked higher than the one with second argument `IsFreeLeftModule and IsFiniteDimensional`. The bug described in issue gap-system#5334 which has been found because of the reordering of these two methods (due to gap-system#3006) gets fixed via pull request gap-system#5335, now we can return to the better method ordering. (I do not like uprankings, but I have no better idea to solve this problem.)
- Let the filters created by `DeclareHandlingByNiceBasis` imply `IsFreeLeftModule`. This was the case before the changes from #3006, and this change fixes the problem described in #5322, as I had sketched in the discussion of #5325. - Document this change (following #5325). - Increase the rank of `IsHandledByNiceBasis` by 2. Then we get back to the rank before the changes from #3006. This way, the `\in` method with second argument in `IsFreeLeftModule and IsHandledByNiceBasis` is again ranked higher than the one with second argument `IsFreeLeftModule and IsFiniteDimensional`. The bug described in issue #5334 which has been found because of the reordering of these two methods (due to #3006) gets fixed via pull request #5335, now we can return to the better method ordering. (I do not like uprankings, but I have no better idea to solve this problem.)
(This pull request addresses a comment in issue #2818.)
Filters of type representation are intended to describe
the internal data of an object.
Thus a logical implication to such a filter makes sense only
if the implying filters are also representations.
As had be noticed by @fingolfin,
there was a now forbidden hidden implication in the library,
from
IsHandledByNiceBasis
toIsAttributeStoringRep
.Logically, one wants this rather the other way round,
that is, the mechanism relies on stored data and thus should be restricted
to situations where
IsAttributeStoringRep
is present.I have now changed this setup accordingly, that is,
IsAttributeStoringRep
is no longer implied byIsHandledByNiceBasis
.As a consequence, one
Objectify
call in the library had to be changedsuch that
IsAttributeStoringRep
gets explicitly set.(The same might happen also in packages.)