CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346

Structure of a generalized Add method.

Common structure at the moment:

InstallMethod( AddF, [ IsCAPCategory, IsFunction ] -> [ IsCAPCategory, IsList ], wobei das zweite Argument eine Liste von Bitupeln ist, welche aus [ func, addtional_filter ] besteht.

function( category, func_list ) Set*F*Function -> Deprecated, wird nur noch bei Initial, Terminal und ZeroObject benötigt, da diese Funktionen nicht direkt installiert werden. SetCanCompute*F* -> Beibehalten, um damit Funktionalität zu anderen Kategorien zu propagieren und die Anzeigemethode benutzen zu können. func := function( func, filters ) InstallMethod( <install_name>, Optional: ## Weiterleitung Weiterleitungsfunktion, falls Erfolgreich, gebe [ true, <result> ] zurück, [ false ] sonst. Optional: ## Pre-Function abhängig vom Namen. Funktion, welche als Argumente die Eingabe der installierten Funktion erhält, und [ true ] oder [ false, <Fehlermeldung> ] zurückgibt. Falls [ false, <Fehlermeldung> ], Error( <Fehlermeldung> ). ## Function call -> result ## Füge result zur Kategorie hinzu Optional (falls WithGiven existiert): Source/Range, Diagrammnamen *ObjectFunction*Diagram, WasCreatedAs*ObjectFunction*. ## Setze evtl. Quelle/Senke der zugehörigen Methode (Derivierbar aus WithGiven...) und Range/Source Info ## Setze Filter für Objekt. (Vereinheitliche Filter oder setze Namen des Filters ins Record ## Setze Diagramm end; for i in func_list do filter_cosmetics, func( i[ 1 ], i[ 2 ] ); od;

end;

Differences between general Add-Method and the former implementation:

  • KernelEmbedding/ KernelEmbeddingWithGivenKernel: SetIsMonomorphism( kernel_emb, true );

  • CokernelProjection/ CokernelProjectionWithGivenCokernel SetIsEpimorphism( cokernel_proj, true );

  • InjectionOfCofactorOfCoproduct/ InjectionOfCofactorOfCoproductWithGivenCoproduct

    FIXME: it suffices that the category knows that it has a zero object

    if HasCanComputeZeroObject( category ) and CanComputeZeroObject( category ) then

    SetIsSplitMonomorphism( injection_of_cofactor, true );

    fi;

  • ProjectionInFactorOfDirectProduct/ ProjectionInFactorOfDirectProductWithGivenDirectProduct

    FIXME: it suffices that the category knows that it has a zero object

    if HasCanComputeZeroObject( category ) and CanComputeZeroObject( category ) then

    SetIsSplitEpimorphism( projection_in_factor, true );

    fi;

  • ImageEmbedding ##Implication (by definition of an image) SetIsMonomorphism( image_embedding, true );

  • IdentityMorphism SetIsOne( ret_val, true ); SetInverse( ret_val, ret_val );

  • ZeroMorphism SetIsZero( return_value, true );