TPTP Axioms File: LCL012^0.ax


%------------------------------------------------------------------------------
% File     : LCL012^0 : TPTP v7.5.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 (   0 unit;  20 type;  19 defn)
%            Number of atoms       :  264 (  19 equality;  48 variable)
%            Maximal formula depth :    8 (   5 average)
%            Number of connectives :   53 (   3   ~;   1   |;   2   &;  45   @)
%                                         (   0 <=>;   2  =>;   0  <=;   0 <~>)
%                                         (   0  ~|;   0  ~&;   0  !!;   0  ??)
%            Number of type conns  :   95 (  95   >;   0   *;   0   +)
%            Number of symbols     :   23 (  20   :;   0  :=)
%            Number of variables   :   40 (   1 sgn;   7   !;   2   ?;  31   ^)
%                                         (  40   :;   0  :=;   0  !>;   0  ?*)
% 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 ) ) )).

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