TPTP Axioms File: LCL012^0.ax


%------------------------------------------------------------------------------
% File     : LCL012^0 : TPTP v9.0.0. Released v4.0.0.
% Domain   : Logic Calculi
% Axioms   : Propositional intuitionistic logic in HOL
% Version  : [MT48] axioms.
% English  : An embedding of propositional intuitionisitc logic in HOL based
%            on the McKinsey/Tarski translation of propositional intuitionistic
%            logic to modal logic S4.

% Refs     : [MT48]  McKinsey & Tarski (1948), Some Theorems about the Sent
%          : [Gol06] Goldblatt (2006), Mathematical Modal Logic: A View of
%          : [Ben09] Benzmueller (2009), Email to Geoff Sutcliffe
%          : [BP10]  Benzmueller & Paulson (2009), Exploring Properties of
% Source   : [Ben09]
% Names    : IL2HOL_3 [Ben09]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   41 (  20 unt;  20 typ;  19 def)
%            Number of atoms       :   61 (  19 equ;   0 cnn)
%            Maximal formula atoms :    3 (   1 avg)
%            Number of connectives :   53 (   3   ~;   1   |;   2   &;  45   @)
%                                         (   0 <=>;   2  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    8 (   1 avg;  45 nst)
%            Number of types       :    2 (   0 usr)
%            Number of type conns  :   95 (  95   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   22 (  20 usr;   1 con; 0-3 aty)
%            Number of variables   :   40 (  31   ^   7   !;   2   ?;  40   :)
% SPC      : 

% Comments :
%------------------------------------------------------------------------------
%----Modal Logic S4 in HOL
%----We define an accessibility relation irel
thf(irel_type,type,
    irel: $i > $i > $o ).

%----We require reflexivity and transitivity for irel
thf(refl_axiom,axiom,
    ! [X: $i] : ( irel @ X @ X ) ).

thf(trans_axiom,axiom,
    ! [X: $i,Y: $i,Z: $i] :
      ( ( ( irel @ X @ Y )
        & ( irel @ Y @ Z ) )
     => ( irel @ X @ Z ) ) ).

%----We define S4 connective mnot (as set complement)
thf(mnot_decl_type,type,
    mnot: ( $i > $o ) > $i > $o ).

thf(mnot,definition,
    ( mnot
    = ( ^ [X: $i > $o,U: $i] :
          ~ ( X @ U ) ) ) ).

%----We define S4 connective mor (as set union) 
thf(mor_decl_type,type,
    mor: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(mor,definition,
    ( mor
    = ( ^ [X: $i > $o,Y: $i > $o,U: $i] :
          ( ( X @ U )
          | ( Y @ U ) ) ) ) ).

%----We define S4 connective mand (as set intersection) 
thf(mand_decl_type,type,
    mand: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(mand,definition,
    ( mand
    = ( ^ [X: $i > $o,Y: $i > $o,U: $i] :
          ( ( X @ U )
          & ( Y @ U ) ) ) ) ).

%----We define S4 connective mimpl 
thf(mimplies_decl_type,type,
    mimplies: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(mimplies,definition,
    ( mimplies
    = ( ^ [U: $i > $o,V: $i > $o] : ( mor @ ( mnot @ U ) @ V ) ) ) ).

%----Definition of mbox_s4; since irel is reflexive and transitive, 
%----it is easy to show that the K and the T axiom hold for mbox_s4
thf(mbox_s4_decl_type,type,
    mbox_s4: ( $i > $o ) > $i > $o ).

thf(mbox_s4,definition,
    ( mbox_s4
    = ( ^ [P: $i > $o,X: $i] :
        ! [Y: $i] :
          ( ( irel @ X @ Y )
         => ( P @ Y ) ) ) ) ).

%----Intuitionistic Logic in Modal Logic S4
%----Definition of iatom: iatom P = (mbox_s4 P)
thf(iatom_type,type,
    iatom: ( $i > $o ) > $i > $o ).

thf(iatom,definition,
    ( iatom
    = ( ^ [P: $i > $o] : ( mbox_s4 @ P ) ) ) ).

%----Definition of inot: inot P = (mbox_s4 (mnot P))
thf(inot_type,type,
    inot: ( $i > $o ) > $i > $o ).

thf(inot,definition,
    ( inot
    = ( ^ [P: $i > $o] : ( mbox_s4 @ ( mnot @ P ) ) ) ) ).

%----Definition of true and false
thf(itrue_type,type,
    itrue: $i > $o ).

thf(itrue,definition,
    ( itrue
    = ( ^ [W: $i] : $true ) ) ).

thf(ifalse_type,type,
    ifalse: $i > $o ).

thf(ifalse,definition,
    ( ifalse
    = ( inot @ itrue ) ) ).

%----Definition of iand: iand P Q = (mand P Q)
thf(iand_type,type,
    iand: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(iand,definition,
    ( iand
    = ( ^ [P: $i > $o,Q: $i > $o] : ( mand @ P @ Q ) ) ) ).

%----Definition of ior: ior P Q = (mor P Q)
thf(ior_type,type,
    ior: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(ior,definition,
    ( ior
    = ( ^ [P: $i > $o,Q: $i > $o] : ( mor @ P @ Q ) ) ) ).

%----Definition of iimplies: iimplies P Q = 
%---- (mbox_s4 (mimiplies P Q)
thf(iimplies_type,type,
    iimplies: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(iimplies,definition,
    ( iimplies
    = ( ^ [P: $i > $o,Q: $i > $o] : ( mbox_s4 @ ( mimplies @ P @ Q ) ) ) ) ).

%----Definition of iimplied: iimplied P Q = (iimplies Q P)
thf(iimplied_type,type,
    iimplied: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(iimplied,definition,
    ( iimplied
    = ( ^ [P: $i > $o,Q: $i > $o] : ( iimplies @ Q @ P ) ) ) ).

%----Definition of iequiv: iequiv P Q = 
%---- (iand (iimplies P Q) (iimplies Q P))
thf(iequiv_type,type,
    iequiv: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(iequiv,definition,
    ( iequiv
    = ( ^ [P: $i > $o,Q: $i > $o] : ( iand @ ( iimplies @ P @ Q ) @ ( iimplies @ Q @ P ) ) ) ) ).

%----Definition of ixor: ixor P Q = (mnot (iequiv P Q))
thf(ixor_type,type,
    ixor: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(ixor,definition,
    ( ixor
    = ( ^ [P: $i > $o,Q: $i > $o] : ( mnot @ ( iequiv @ P @ Q ) ) ) ) ).

%----Definition of validity
thf(ivalid_type,type,
    ivalid: ( $i > $o ) > $o ).

thf(ivalid,definition,
    ( ivalid
    = ( ^ [Phi: $i > $o] :
        ! [W: $i] : ( Phi @ W ) ) ) ).

%----Definition of satisfiability
thf(isatisfiable_type,type,
    isatisfiable: ( $i > $o ) > $o ).

thf(isatisfiable,definition,
    ( isatisfiable
    = ( ^ [Phi: $i > $o] :
        ? [W: $i] : ( Phi @ W ) ) ) ).

%----Definition of countersatisfiability
thf(icountersatisfiable_type,type,
    icountersatisfiable: ( $i > $o ) > $o ).

thf(icountersatisfiable,definition,
    ( icountersatisfiable
    = ( ^ [Phi: $i > $o] :
        ? [W: $i] :
          ~ ( Phi @ W ) ) ) ).

%----Definition of invalidity
thf(iinvalid_type,type,
    iinvalid: ( $i > $o ) > $o ).

thf(iinvalid,definition,
    ( iinvalid
    = ( ^ [Phi: $i > $o] :
        ! [W: $i] :
          ~ ( Phi @ W ) ) ) ).

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