Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  DummyImplementations.gi   Sprache: Shell

 

# SPDX-License-Identifier: GPL-2.0-or-later
# CAP: Categories, Algorithms, Programming
#
# Implementations
#

## dummy rings

BindGlobal( "TheFamilyOfDummyRings",
        NewFamily( "TheFamilyOfDummyRings" ) );

CAP_INTERNAL_DUMMY_RING_COUNTER := 1;

InstallGlobalFunction( DummyRing, function( )
  local ring_filter, ring_element_filter, name, ring;
    
    ring_filter := NewFilter( "DummyRingFilter", IsDummyRing );
    ring_element_filter := NewFilter( "DummyRingElementFilter", IsDummyRingElement );
    
    name := Concatenation( "Dummy ring ", String( CAP_INTERNAL_DUMMY_RING_COUNTER ) );
    CAP_INTERNAL_DUMMY_RING_COUNTER := CAP_INTERNAL_DUMMY_RING_COUNTER + 1;
    
    ring := CreateGapObjectWithAttributes( NewType( TheFamilyOfDummyRings, IsAttributeStoringRep and ring_filter ),
        Name, name,
        String, name,
        RingFilter, ring_filter,
        RingElementFilter, ring_element_filter
    );
    
    CapJitAddTypeSignature( "+", [ ring_element_filter, ring_element_filter ], ring_element_filter );
    CapJitAddTypeSignature( "ZeroImmutable", [ ring_filter ], ring_element_filter );
    CapJitAddTypeSignature( "AdditiveInverseSameMutability", [ ring_element_filter ], ring_element_filter );
    CapJitAddTypeSignature( "*", [ ring_element_filter, ring_element_filter ], ring_element_filter );
    CapJitAddTypeSignature( "OneImmutable", [ ring_filter ], ring_element_filter );
    
    return ring;
    
end );

## dummy commutative rings

BindGlobal( "TheFamilyOfDummyCommutativeRings",
        NewFamily( "TheFamilyOfDummyCommutativeRings" ) );

CAP_INTERNAL_DUMMY_COMMUTATIVE_RING_COUNTER := 1;

InstallGlobalFunction( DummyCommutativeRing, function( )
  local ring_filter, ring_element_filter, name, ring;
    
    ring_filter := NewFilter( "DummyCommutativeRingFilter", IsDummyCommutativeRing );
    ring_element_filter := NewFilter( "DummyCommutativeRingElementFilter", IsDummyCommutativeRingElement );
    
    name := Concatenation( "Dummy commutative ring ", String( CAP_INTERNAL_DUMMY_COMMUTATIVE_RING_COUNTER ) );
    CAP_INTERNAL_DUMMY_COMMUTATIVE_RING_COUNTER := CAP_INTERNAL_DUMMY_COMMUTATIVE_RING_COUNTER + 1;
    
    ring := CreateGapObjectWithAttributes( NewType( TheFamilyOfDummyCommutativeRings, IsAttributeStoringRep and ring_filter ),
        Name, name,
        String, name,
        RingFilter, ring_filter,
        RingElementFilter, ring_element_filter,
        IsCommutative, true
    );
    
    CapJitAddTypeSignature( "+", [ ring_element_filter, ring_element_filter ], ring_element_filter );
    CapJitAddTypeSignature( "ZeroImmutable", [ ring_filter ], ring_element_filter );
    CapJitAddTypeSignature( "AdditiveInverseSameMutability", [ ring_element_filter ], ring_element_filter );
    CapJitAddTypeSignature( "*", [ ring_element_filter, ring_element_filter ], ring_element_filter );
    CapJitAddTypeSignature( "OneImmutable", [ ring_filter ], ring_element_filter );
    
    return ring;
    
end );

## dummy fields

BindGlobal( "TheFamilyOfDummyFields",
        NewFamily( "TheFamilyOfDummyFields" ) );

CAP_INTERNAL_DUMMY_FIELD_COUNTER := 1;

InstallGlobalFunction( DummyField, function( )
  local ring_filter, ring_element_filter, name, ring;
    
    ring_filter := NewFilter( "DummyFieldFilter", IsDummyField );
    ring_element_filter := NewFilter( "DummyFieldElementFilter", IsDummyFieldElement );
    
    name := Concatenation( "Dummy field ", String( CAP_INTERNAL_DUMMY_FIELD_COUNTER ) );
    CAP_INTERNAL_DUMMY_FIELD_COUNTER := CAP_INTERNAL_DUMMY_FIELD_COUNTER + 1;
    
    ring := CreateGapObjectWithAttributes( NewType( TheFamilyOfDummyFields, IsAttributeStoringRep and ring_filter ),
        Name, name,
        String, name,
        RingFilter, ring_filter,
        RingElementFilter, ring_element_filter,
        IsField, true
    );
    
    CapJitAddTypeSignature( "+", [ ring_element_filter, ring_element_filter ], ring_element_filter );
    CapJitAddTypeSignature( "ZeroImmutable", [ ring_filter ], ring_element_filter );
    CapJitAddTypeSignature( "AdditiveInverseSameMutability", [ ring_element_filter ], ring_element_filter );
    CapJitAddTypeSignature( "*", [ ring_element_filter, ring_element_filter ], ring_element_filter );
    CapJitAddTypeSignature( "OneImmutable", [ ring_filter ], ring_element_filter );
    
    return ring;
    
end );

## dummy categories

##
InstallMethod( DummyCategory,
        "for a record of options",
        [ IsRecord ],
        
  FunctionWithNamedArguments(
  [
    [ "FinalizeCategory", true ],
  ],
  function( CAP_NAMED_ARGUMENTS, options )
    local category_constructor_options, dummy_function, C, operation_name;
    
    category_constructor_options := ShallowCopy( options );
    category_constructor_options.category_filter := IsDummyCategory;
    category_constructor_options.category_object_filter := IsDummyCategoryObject;
    category_constructor_options.category_morphism_filter := IsDummyCategoryMorphism;
    category_constructor_options.is_computable := "IsCongruentForMorphisms" in options.list_of_operations_to_install;
    category_constructor_options.supports_empty_limits := true;
    
    if "ObjectConstructor" in options.list_of_operations_to_install then
        
        category_constructor_options.object_constructor := function ( cat, object_datum )
            
            Error( "this is a dummy category without actual implementation" );
            
        end;
        
    fi;
    
    if "MorphismConstructor" in options.list_of_operations_to_install then
        
        category_constructor_options.morphism_constructor := function ( cat, source, morphism_datum, range )
            
            Error( "this is a dummy category without actual implementation" );
            
        end;
        
    fi;
    
    if "ObjectDatum" in options.list_of_operations_to_install then
        
        category_constructor_options.object_datum := function ( cat, object )
            
            Error( "this is a dummy category without actual implementation" );
            
        end;
        
    fi;
    
    if "MorphismDatum" in options.list_of_operations_to_install then
        
        category_constructor_options.morphism_datum := function ( cat, morphism )
            
            Error( "this is a dummy category without actual implementation" );
            
        end;
        
    fi;
    
    dummy_function := { operation_name, dummy } -> Pair( """
        function ( input_arguments... )
            
            Error( "this is a dummy category without actual implementation" );
            
        end
    """, 1 );
    
    category_constructor_options.create_func_bool := dummy_function;
    category_constructor_options.create_func_object := dummy_function;
    category_constructor_options.create_func_morphism := dummy_function;
    category_constructor_options.create_func_list_of_objects := dummy_function;
    
    C := CategoryConstructor( category_constructor_options );
    
    if CAP_NAMED_ARGUMENTS.FinalizeCategory then
        
        Finalize( C );
        
    fi;
    
    for operation_name in options.list_of_operations_to_install do
        
        if not CanCompute( C, operation_name ) then
            
            Print( "WARNING: The dummy category cannot compute ", operation_name, ", probably because the operation is not supported by CategoryConstructor yet.\n" );
            
        fi;
        
    od;
    
    return C;
    
end ) );

Messung V0.5 in Prozent
C=83 H=96 G=89

¤ Dauer der Verarbeitung: 0.171 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=210737
#Domains=69152