@@ -2593,6 +2593,154 @@ AddDerivationToCAP( IsomorphismFromDirectSumToCoproduct,
25932593
25942594end : Description := " IsomorphismFromDirectSumToCoproduct as the inverse of IsomorphismFromCoproductToDirectSum" );
25952595
2596+ # # B -β→ C ←α- A, ℓ•β = α ⇔ ν(ℓ)•H(A,β) = ν(α)
2597+ # #
2598+ AddDerivationToCAP( Lift,
2599+ [ [ IdentityMorphism, 1 ] ,
2600+ [ InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure, 1 ] ,
2601+ [ HomomorphismStructureOnMorphisms, 1 ] ,
2602+ [ InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism, 1 ] ,
2603+ [ Lift, 1 , RangeCategoryOfHomomorphismStructure ] ] ,
2604+
2605+ function ( cat, alpha, beta )
2606+ local range_cat, a, b;
2607+
2608+ range_cat := RangeCategoryOfHomomorphismStructure( cat );
2609+
2610+ a := InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure( cat, alpha );
2611+
2612+ b := HomomorphismStructureOnMorphisms( cat, IdentityMorphism( Source( alpha ) ), beta );
2613+
2614+ return InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism( cat, Source( alpha ), Source( beta ), Lift( range_cat, a, b ) );
2615+
2616+ end : CategoryGetters := rec ( range_cat := RangeCategoryOfHomomorphismStructure ),
2617+ Description := " Derive Lift using the homomorphism structure and Lift in the range of the homomorphism structure" );
2618+
2619+ # #
2620+ AddDerivationToCAP( LiftOrFail,
2621+ [ [ IdentityMorphism, 1 ] ,
2622+ [ InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure, 1 ] ,
2623+ [ HomomorphismStructureOnMorphisms, 1 ] ,
2624+ [ InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism, 1 ] ,
2625+ [ LiftOrFail, 1 , RangeCategoryOfHomomorphismStructure ] ] ,
2626+
2627+ function ( cat, alpha, beta )
2628+ local range_cat, a, b, l;
2629+
2630+ range_cat := RangeCategoryOfHomomorphismStructure( cat );
2631+
2632+ a := InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure( cat, alpha );
2633+
2634+ b := HomomorphismStructureOnMorphisms( cat, IdentityMorphism( Source( alpha ) ), beta );
2635+
2636+ l := LiftOrFail( range_cat, a, b );
2637+
2638+ if l = fail then
2639+
2640+ return fail ;
2641+
2642+ fi ;
2643+
2644+ return InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism( cat, Source( alpha ), Source( beta ), l );
2645+
2646+ end : CategoryGetters := rec ( range_cat := RangeCategoryOfHomomorphismStructure ),
2647+ Description := " Derive LiftOrFail using the homomorphism structure and LiftOrFail in the range of the homomorphism structure" );
2648+
2649+ # #
2650+ AddDerivationToCAP( IsLiftable,
2651+ [ [ IdentityMorphism, 1 ] ,
2652+ [ InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure, 1 ] ,
2653+ [ HomomorphismStructureOnMorphisms, 1 ] ,
2654+ [ IsLiftable, 1 , RangeCategoryOfHomomorphismStructure ] ] ,
2655+
2656+ function ( cat, alpha, beta )
2657+ local range_cat, a, b;
2658+
2659+ range_cat := RangeCategoryOfHomomorphismStructure( cat );
2660+
2661+ a := InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure( cat, alpha );
2662+
2663+ b := HomomorphismStructureOnMorphisms( cat, IdentityMorphism( Source( alpha ) ), beta );
2664+
2665+ return IsLiftable( range_cat, a, b );
2666+
2667+ end : CategoryGetters := rec ( range_cat := RangeCategoryOfHomomorphismStructure ),
2668+ Description := " Derive IsLiftable using the homomorphism structure and Liftable in the range of the homomorphism structure" );
2669+
2670+ # # B ←β- C -α→ A, α•ℓ = β ⇔ ν(ℓ)•H(α,B) = ν(β)
2671+ # #
2672+ AddDerivationToCAP( Colift,
2673+ [ [ IdentityMorphism, 1 ] ,
2674+ [ InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure, 1 ] ,
2675+ [ HomomorphismStructureOnMorphisms, 1 ] ,
2676+ [ InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism, 1 ] ,
2677+ [ Lift, 1 , RangeCategoryOfHomomorphismStructure ] ] ,
2678+
2679+ function ( cat, alpha, beta )
2680+ local range_cat, b, a;
2681+
2682+ range_cat := RangeCategoryOfHomomorphismStructure( cat );
2683+
2684+ b := InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure( cat, beta );
2685+
2686+ a := HomomorphismStructureOnMorphisms( cat, alpha, IdentityMorphism( Range( beta ) ) );
2687+
2688+ return InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism( cat, Range( alpha ), Range( beta ), Lift( range_cat, b, a ) );
2689+
2690+ end : CategoryGetters := rec ( range_cat := RangeCategoryOfHomomorphismStructure ),
2691+ Description := " Derive Colift using the homomorphism structure and Lift in the range of the homomorphism structure" );
2692+
2693+ # #
2694+ AddDerivationToCAP( ColiftOrFail,
2695+ [ [ IdentityMorphism, 1 ] ,
2696+ [ InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure, 1 ] ,
2697+ [ HomomorphismStructureOnMorphisms, 1 ] ,
2698+ [ InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism, 1 ] ,
2699+ [ LiftOrFail, 1 , RangeCategoryOfHomomorphismStructure ] ] ,
2700+
2701+ function ( cat, alpha, beta )
2702+ local range_cat, b, a, l;
2703+
2704+ range_cat := RangeCategoryOfHomomorphismStructure( cat );
2705+
2706+ b := InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure( cat, beta );
2707+
2708+ a := HomomorphismStructureOnMorphisms( cat, alpha, IdentityMorphism( Range( beta ) ) );
2709+
2710+ l := LiftOrFail( range_cat, b, a );
2711+
2712+ if l = fail then
2713+
2714+ return fail ;
2715+
2716+ fi ;
2717+
2718+ return InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism( cat, Range( alpha ), Range( beta ), l );
2719+
2720+ end : CategoryGetters := rec ( range_cat := RangeCategoryOfHomomorphismStructure ),
2721+ Description := " Derive ColiftOrFail using the homomorphism structure and LiftOrFail in the range of the homomorphism structure" );
2722+
2723+ # #
2724+ AddDerivationToCAP( IsColiftable,
2725+ [ [ IdentityMorphism, 1 ] ,
2726+ [ InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure, 1 ] ,
2727+ [ HomomorphismStructureOnMorphisms, 1 ] ,
2728+ [ IsLiftable, 1 , RangeCategoryOfHomomorphismStructure ] ] ,
2729+
2730+ function ( cat, alpha, beta )
2731+ local range_cat, b, a;
2732+
2733+ range_cat := RangeCategoryOfHomomorphismStructure( cat );
2734+
2735+ b := InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure( cat, beta );
2736+
2737+ a := HomomorphismStructureOnMorphisms( cat, alpha, IdentityMorphism( Range( beta ) ) );
2738+
2739+ return IsLiftable( range_cat, b, a );
2740+
2741+ end : CategoryGetters := rec ( range_cat := RangeCategoryOfHomomorphismStructure ),
2742+ Description := " Derive IsColiftable using the homomorphism structure and IsLiftable in the range of the homomorphism structure" );
2743+
25962744# #
25972745AddDerivationToCAP( Lift,
25982746 [ [ IdentityMorphism, 1 ] ,
0 commit comments