TPTP Axioms File: KLE004+0.ax


%------------------------------------------------------------------------------
% File     : KLE004+0 : TPTP v7.5.0. Released v3.6.0.
% Domain   : Kleene Algebra
% Axioms   : Demonic Refinement Algebra
% Version  : [Hoe08] axioms.
% English  :

% Refs     : [Hoe08] Hoefner (2008), Email to G. Sutcliffe
% Source   : [Hoe08]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :   18 (  14 unit)
%            Number of atoms       :   22 (  15 equality)
%            Maximal formula depth :    5 (   3 average)
%            Number of connectives :    4 (   0 ~  ;   0  |;   0  &)
%                                         (   1 <=>;   3 =>;   0 <=)
%                                         (   0 <~>;   0 ~|;   0 ~&)
%            Number of predicates  :    2 (   0 propositional; 2-2 arity)
%            Number of functors    :    6 (   2 constant; 0-2 arity)
%            Number of variables   :   34 (   0 singleton;  34 !;   0 ?)
%            Maximal term depth    :    4 (   2 average)
% SPC      : 

% Comments :
%------------------------------------------------------------------------------
%----Additive idempotent monoid
fof(additive_commutativity,axiom,(
    ! [A,B] : addition(A,B) = addition(B,A) )).

fof(additive_associativity,axiom,(
    ! [C,B,A] : addition(A,addition(B,C)) = addition(addition(A,B),C) )).

fof(additive_identity,axiom,(
    ! [A] : addition(A,zero) = A )).

fof(idempotence,axiom,(
    ! [A] : addition(A,A) = A )).

%----Multiplicative and commutative monoid
fof(multiplicative_associativity,axiom,(
    ! [A,B,C] : multiplication(A,multiplication(B,C)) = multiplication(multiplication(A,B),C) )).

fof(multiplicative_right_identity,axiom,(
    ! [A] : multiplication(A,one) = A )).

fof(multiplicative_left_identity,axiom,(
    ! [A] : multiplication(one,A) = A )).

%----Distributivity laws
fof(distributivity1,axiom,(
    ! [A,B,C] : multiplication(A,addition(B,C)) = addition(multiplication(A,B),multiplication(A,C)) )).

fof(distributivity2,axiom,(
    ! [A,B,C] : multiplication(addition(A,B),C) = addition(multiplication(A,C),multiplication(B,C)) )).

%----Annihilation (right zero law)
fof(left_annihilation,axiom,(
    ! [A] : multiplication(zero,A) = zero )).

%----Kleene star
fof(star_unfold1,axiom,(
    ! [A] : addition(one,multiplication(A,star(A))) = star(A) )).

fof(star_unfold2,axiom,(
    ! [A] : addition(one,multiplication(star(A),A)) = star(A) )).

fof(star_induction1,axiom,(
    ! [A,B,C] :
      ( leq(addition(multiplication(A,C),B),C)
     => leq(multiplication(star(A),B),C) ) )).

fof(star_induction2,axiom,(
    ! [A,B,C] :
      ( leq(addition(multiplication(C,A),B),C)
     => leq(multiplication(B,star(A)),C) ) )).

%----Strong iteration
fof(infty_unfold1,axiom,(
    ! [A] : strong_iteration(A) = addition(multiplication(A,strong_iteration(A)),one) )).

fof(infty_coinduction,axiom,(
    ! [A,B,C] :
      ( leq(C,addition(multiplication(A,C),B))
     => leq(C,multiplication(strong_iteration(A),B)) ) )).

fof(isolation,axiom,(
    ! [A] : strong_iteration(A) = addition(star(A),multiplication(strong_iteration(A),zero)) )).

%----Ordering
fof(order,axiom,(
    ! [A,B] :
      ( leq(A,B)
    <=> addition(A,B) = B ) )).

%------------------------------------------------------------------------------