Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/homalg/gap/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 10.0.2024 mit Größe 3 kB image not shown  

Quelle  Morphisms.gi   Sprache: unbekannt

 
# SPDX-License-Identifier: GPL-2.0-or-later
# homalg: A homological algebra meta-package for computable Abelian categories
#
# Implementations
#

##  Implementations of homalg procedures for morphisms of abelian categories.

####################################
#
# methods for operations:
#
####################################

##
InstallMethod( Resolution, ### defines: Resolution (ResolutionOfSeq for a single map)
        "for homalg static morphisms",
        [ IsInt, IsStaticMorphismOfFinitelyGeneratedObjectsRep ],
        
  function( _q, phi  )
    local q, S, T, d_S, d_T, index_pair, j, d_S_j, d_T_j, phi_j, cm;
    
    q := _q;
    
    S := Source( phi );
    T := Range( phi );
    
    d_S := Resolution( q, S );
    d_T := Resolution( q, T );
    
    if q < 0 then
        q := Maximum( List( [ S, T ], LengthOfResolution ) );
        d_S := Resolution( q, S );
        d_T := Resolution( q, T );
    fi;
    
    index_pair := PairOfPositionsOfTheDefaultPresentations( phi );
    
    if not IsBound( phi!.resolutions ) then
        phi!.resolutions := rec( );
    fi;
    
    if IsBound( phi!.resolutions.(String( index_pair )) ) then
        cm := phi!.resolutions.(String( index_pair ));
        j := HighestDegree( cm );
        phi_j := HighestDegreeMorphism( cm );
    else
        j := 0;
        
        d_S_j := CoveringEpi( S );
        d_T_j := CoveringEpi( T );
        
        phi_j := CompleteImageSquare( d_S_j, phi, d_T_j );
        
        cm := HomalgChainMorphism( phi_j, d_S, d_T );
        
        phi!.resolutions.(String( index_pair )) := cm;
    fi;
    
    #=====# begin of the core procedure #=====#
    
    while j < q do
        
        j := j + 1;
        
        d_S_j := CertainMorphism( d_S, j );
        d_T_j := CertainMorphism( d_T, j );
        
        phi_j := CompleteImageSquare( d_S_j, phi_j, d_T_j );
        
        Add( cm, phi_j );
        
    od;
    
    SetIsMorphism( cm, true );
    
    return cm;
    
end );

InstallMethod( Resolution,
        "for homalg static morphisms",
        [ IsStaticMorphismOfFinitelyGeneratedObjectsRep ],
        
  function( phi )
    
    return Resolution( -1, phi );
    
end );

## [HS. Prop. II.9.6]
InstallMethod( CokernelSequence,
        "for homalg static morphisms",
        [ IsStaticMorphismOfFinitelyGeneratedObjectsRep ],
        
  function( phi )
    local nu, epsilon, C;
    
    nu := ImageObjectEmb( phi );
    
    epsilon := CokernelEpi( phi );
    
    C := HomalgComplex( epsilon );
    
    Add( C, nu );
    
    return C;
    
end );

## [HS. Prop. II.9.6]
InstallMethod( CokernelCosequence,
        "for homalg static morphisms",
        [ IsStaticMorphismOfFinitelyGeneratedObjectsRep ],
        
  function( phi )
    local nu, epsilon, C;
    
    nu := ImageObjectEmb( phi );
    
    epsilon := CokernelEpi( phi );
    
    C := HomalgCocomplex( nu );
    
    Add( C, epsilon );
    
    return C;
    
end );

## [HS. Prop. II.9.6]
InstallMethod( KernelSequence,
        "for homalg static morphisms",
        [ IsStaticMorphismOfFinitelyGeneratedObjectsRep ],
        
  function( phi )
    local mu, eta, C;
    
    mu := KernelEmb( phi );
    
    eta := ImageObjectEpi( phi );
    
    C := HomalgComplex( eta );
    
    Add( C, mu );
    
    return C;
    
end );

## [HS. Prop. II.9.6]
InstallMethod( KernelCosequence,
        "for homalg static morphisms",
        [ IsStaticMorphismOfFinitelyGeneratedObjectsRep ],
        
  function( phi )
    local mu, eta, C;
    
    mu := KernelEmb( phi );
    
    eta := ImageObjectEpi( phi );
    
    C := HomalgCocomplex( mu );
    
    Add( C, eta );
    
    return C;
    
end );


[ Dauer der Verarbeitung: 0.29 Sekunden  (vorverarbeitet)  ]