Skip to content

Why are many attribute mutable / can the group in a recognition node change? #356

@fingolfin

Description

@fingolfin

Why are all these attributes mutable (i.e. can be changed later on):

gap/base/recognition.gd:111:DeclareAttribute( "Grp", IsRecogNode, "mutable" );
gap/base/recognition.gd:125:DeclareAttribute( "Homom", IsRecogNode, "mutable" );
gap/base/recognition.gd:150:DeclareAttribute( "NiceGens", IsRecogNode, "mutable" );
gap/base/recognition.gd:166:DeclareAttribute( "ImageRecogNode", IsRecogNode, "mutable" );
gap/base/recognition.gd:186:DeclareAttribute( "KernelRecogNode", IsRecogNode, "mutable" );
gap/base/recognition.gd:200:DeclareAttribute( "ParentRecogNode", IsRecogNode, "mutable" );
gap/base/recognition.gd:212:DeclareAttribute( "StdPresentation", IsRecogNode, "mutable" );    # TODO: implement
gap/base/recognition.gd:231:DeclareAttribute( "pregensfac", IsRecogNode, "mutable" );
gap/base/recognition.gd:256:DeclareAttribute( "calcnicegens", IsRecogNode, "mutable" );
gap/base/recognition.gd:270:DeclareAttribute( "slptonice", IsRecogNode, "mutable" );
gap/base/recognition.gd:284:DeclareAttribute( "fhmethsel", IsRecogNode, "mutable" );      # TODO: rename?
gap/base/recognition.gd:304:DeclareAttribute( "methodsforimage", IsRecogNode, "mutable" ); # rename to MethodsDBForFactor
gap/base/recognition.gd:328:DeclareAttribute( "slpforelement", IsRecogNode, "mutable" );
gap/base/recognition.gd:330:DeclareAttribute( "gensN", IsRecogNode, "mutable" );      # TODO: rename?
gap/base/recognition.gd:333:DeclareAttribute( "findgensNmeth", IsRecogNode, "mutable" );
gap/base/recognition.gd:335:DeclareAttribute( "gensNslp", IsRecogNode, "mutable" );
gap/base/recognition.gd:337:DeclareAttribute( "immediateverification", IsRecogNode, "mutable" );
gap/base/recognition.gd:339:DeclareAttribute( "InitialDataForKernelRecogNode", IsRecogNode, "mutable" );
gap/base/recognition.gd:342:DeclareAttribute( "InitialDataForImageRecogNode", IsRecogNode, "mutable" );
gap/base/recognition.gd:345:DeclareAttribute( "isone", IsRecogNode, "mutable" );
gap/base/recognition.gd:347:DeclareAttribute( "isequal", IsRecogNode, "mutable" );
gap/base/recognition.gd:349:DeclareAttribute( "OrderFunc", IsRecogNode, "mutable" );
gap/base/recognition.gd:351:DeclareAttribute( "docommute", IsRecogNode, "mutable" );

Specifically: can the group (Grp) in a recognition node change later on?
I really hope not, else all kind of things can break.

About the only reason I can think of why a node might need to be changed is that kernels could get additional generators later on. But in that case, shouldn't we create a fresh node, which starts from scratch (OK a few things could probably be transferred, but that should be selective).

But I really hope now...

I'd like to change many (most? all?) of these to be immutable, buuuuut: in GAP, if you try to change an already set attribute, it just ignores your request. That's unfortunate: I'd much prefer if it gave an error, so that I can catch cases that actually modify existing code. Urgh.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions