TPTP Axioms File: HAL001+0.ax
%--------------------------------------------------------------------------
% File : HAL001+0 : TPTP v9.0.0. Released v2.6.0.
% Domain : Homological Algebra
% Axioms : Standard homological algebra axioms
% Version : [TPTP] axioms.
% English :
% Refs : [Wei94] Weibel (1994), An Introduction to Homological Algebra
% Source : [TPTP]
% Names :
% Status : Satisfiable
% Syntax : Number of formulae : 13 ( 0 unt; 0 def)
% Number of atoms : 66 ( 16 equ)
% Maximal formula atoms : 7 ( 5 avg)
% Number of connectives : 53 ( 0 ~; 0 |; 30 &)
% ( 2 <=>; 21 =>; 0 <=; 0 <~>)
% Maximal formula depth : 16 ( 10 avg)
% Maximal term depth : 3 ( 1 avg)
% Number of predicates : 7 ( 6 usr; 0 prp; 1-4 aty)
% Number of functors : 3 ( 3 usr; 0 con; 1-3 aty)
% Number of variables : 69 ( 65 !; 4 ?)
% SPC :
% Comments :
%--------------------------------------------------------------------------
fof(morphism,axiom,
! [Morphism,Dom,Cod] :
( morphism(Morphism,Dom,Cod)
=> ( ! [El] :
( element(El,Dom)
=> element(apply(Morphism,El),Cod) )
& apply(Morphism,zero(Dom)) = zero(Cod) ) ) ).
fof(injection_properties,axiom,
! [Morphism,Dom,Cod] :
( ( injection(Morphism)
& morphism(Morphism,Dom,Cod) )
=> ! [El1,El2] :
( ( element(El1,Dom)
& element(El2,Dom)
& apply(Morphism,El1) = apply(Morphism,El2) )
=> El1 = El2 ) ) ).
fof(properties_for_injection,axiom,
! [Morphism,Dom,Cod] :
( ( morphism(Morphism,Dom,Cod)
& ! [El1,El2] :
( ( element(El1,Dom)
& element(El2,Dom)
& apply(Morphism,El1) = apply(Morphism,El2) )
=> El1 = El2 ) )
=> injection(Morphism) ) ).
%----Sasha's weird injection axioms
% input_formula(injection_properties,axiom, (
% ! [Morphism,Dom,Cod] :
% ( ( injection(Morphism)
% & morphism(Morphism,Dom,Cod) )
% => ! [El] :
% ( ( element(El,Dom)
% & equal(apply(Morphism,El),zero(Cod)) )
% => equal(El,zero(Dom)) ) ) )).
%
% input_formula(properties_for_injection,axiom, (
% ! [Morphism,Dom,Cod] :
% ( ( morphism(Morphism,Dom,Cod)
% & ! [El] :
% ( ( element(El,Dom)
% & equal(apply(Morphism,El),zero(Cod)) )
% => equal(El,zero(Dom)) ) )
% => injection(Morphism) ) )).
fof(surjection_properties,axiom,
! [Morphism,Dom,Cod] :
( ( surjection(Morphism)
& morphism(Morphism,Dom,Cod) )
=> ! [ElCod] :
( element(ElCod,Cod)
=> ? [ElDom] :
( element(ElDom,Dom)
& apply(Morphism,ElDom) = ElCod ) ) ) ).
fof(properties_for_surjection,axiom,
! [Morphism,Dom,Cod] :
( ( morphism(Morphism,Dom,Cod)
& ! [ElCod] :
( element(ElCod,Cod)
=> ? [ElDom] :
( element(ElDom,Dom)
& apply(Morphism,ElDom) = ElCod ) ) )
=> surjection(Morphism) ) ).
fof(exact_properties,axiom,
! [Morphism1,Morphism2,Dom,CodDom,Cod] :
( ( exact(Morphism1,Morphism2)
& morphism(Morphism1,Dom,CodDom)
& morphism(Morphism2,CodDom,Cod) )
=> ! [ElCodDom] :
( ( element(ElCodDom,CodDom)
& apply(Morphism2,ElCodDom) = zero(Cod) )
<=> ? [ElDom] :
( element(ElDom,Dom)
& apply(Morphism1,ElDom) = ElCodDom ) ) ) ).
fof(properties_for_exact,axiom,
! [Morphism1,Morphism2,Dom,CodDom,Cod] :
( ( morphism(Morphism1,Dom,CodDom)
& morphism(Morphism2,CodDom,Cod)
& ! [ElCodDom] :
( ( element(ElCodDom,CodDom)
& apply(Morphism2,ElCodDom) = zero(Cod) )
<=> ? [ElDom] :
( element(ElDom,Dom)
& apply(Morphism1,ElDom) = ElCodDom ) ) )
=> exact(Morphism1,Morphism2) ) ).
fof(commute_properties,axiom,
! [M1,M2,M3,M4,Dom,DomCod1,DomCod2,Cod] :
( ( commute(M1,M2,M3,M4)
& morphism(M1,Dom,DomCod1)
& morphism(M2,DomCod1,Cod)
& morphism(M3,Dom,DomCod2)
& morphism(M4,DomCod2,Cod) )
=> ! [ElDom] :
( element(ElDom,Dom)
=> apply(M2,apply(M1,ElDom)) = apply(M4,apply(M3,ElDom)) ) ) ).
fof(properties_for_commute,axiom,
! [M1,M2,M3,M4,Dom,DomCod1,DomCod2,Cod] :
( ( morphism(M1,Dom,DomCod1)
& morphism(M2,DomCod1,Cod)
& morphism(M3,Dom,DomCod2)
& morphism(M4,DomCod2,Cod)
& ! [ElDom] :
( element(ElDom,Dom)
=> apply(M2,apply(M1,ElDom)) = apply(M4,apply(M3,ElDom)) ) )
=> commute(M1,M2,M3,M4) ) ).
fof(subtract_in_domain,axiom,
! [Dom,El1,El2] :
( ( element(El1,Dom)
& element(El2,Dom) )
=> element(subtract(Dom,El1,El2),Dom) ) ).
fof(subtract_to_0,axiom,
! [Dom,El] :
( element(El,Dom)
=> subtract(Dom,El,El) = zero(Dom) ) ).
fof(subtract_cancellation,axiom,
! [Dom,El1,El2] :
( ( element(El1,Dom)
& element(El2,Dom) )
=> subtract(Dom,El1,subtract(Dom,El1,El2)) = El2 ) ).
fof(subtract_distribution,axiom,
! [Morphism,Dom,Cod] :
( morphism(Morphism,Dom,Cod)
=> ! [El1,El2] :
( ( element(El1,Dom)
& element(El2,Dom) )
=> apply(Morphism,subtract(Dom,El1,El2)) = subtract(Cod,apply(Morphism,El1),apply(Morphism,El2)) ) ) ).
%--------------------------------------------------------------------------