## TPTP Axioms File: SWV008^0.ax

```%------------------------------------------------------------------------------
% File     : SWV008^0 : TPTP v7.5.0. Released v3.6.0.
% Domain   : Software Verification (Security)
% Axioms   : ICL logic based upon modal logic based upon simple type theory
% Version  : [Ben08] axioms.
% English  :

% Refs     : [GA08]  Garg & Abadi (2008), A Modal Deconstruction of Access
%          : [Ben08] Benzmueller (2008), Automating Access Control Logics i
%          : [BP09]  Benzmueller & Paulson (2009), Exploring Properties of
% Source   : [Ben08]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :   19 (   0 unit;  10 type;   9 defn)
%            Number of atoms       :  106 (   9 equality;  11 variable)
%            Maximal formula depth :    7 (   4 average)
%            Number of connectives :   15 (   0   ~;   0   |;   0   &;  15   @)
%                                         (   0 <=>;   0  =>;   0  <=;   0 <~>)
%                                         (   0  ~|;   0  ~&;   0  !!;   0  ??)
%            Number of type conns  :   43 (  43   >;   0   *;   0   +)
%            Number of symbols     :   19 (  10   :;   0  :=)
%            Number of variables   :   11 (   0 sgn;   0   !;   0   ?;  11   ^)
%                                         (  11   :;   0  :=;   0  !>;   0  ?*)
% SPC      :

%          : THF0 syntax
%------------------------------------------------------------------------------
%----The encoding of ICL logic employs only one accessibility relation which
%----introduce here as a constant 'rel'; we don't need multimodal logic.
thf(rel_type,type,(
rel: \$i > \$i > \$o )).

%----ICL logic distiguishes between atoms and principals; for this we introduce
%----a predicate 'icl_atom' ...
thf(icl_atom_type,type,(
icl_atom: ( \$i > \$o ) > \$i > \$o )).

thf(icl_atom,definition,
( icl_atom
= ( ^ [P: \$i > \$o] :
( mbox @ rel @ P ) ) )).

%---- ... and also a predicate 'icl_princ'
thf(icl_princ_type,type,(
icl_princ: ( \$i > \$o ) > \$i > \$o )).

thf(icl_princ,definition,
( icl_princ
= ( ^ [P: \$i > \$o] : P ) )).

%----ICL and connective
thf(icl_and_type,type,(
icl_and: ( \$i > \$o ) > ( \$i > \$o ) > \$i > \$o )).

thf(icl_and,definition,
( icl_and
= ( ^ [A: \$i > \$o,B: \$i > \$o] :
( mand @ A @ B ) ) )).

%----ICL or connective
thf(icl_or_type,type,(
icl_or: ( \$i > \$o ) > ( \$i > \$o ) > \$i > \$o )).

thf(icl_or,definition,
( icl_or
= ( ^ [A: \$i > \$o,B: \$i > \$o] :
( mor @ A @ B ) ) )).

%----ICL implication connective
thf(icl_impl_type,type,(
icl_impl: ( \$i > \$o ) > ( \$i > \$o ) > \$i > \$o )).

thf(icl_impl,definition,
( icl_impl
= ( ^ [A: \$i > \$o,B: \$i > \$o] :
( mbox @ rel @ ( mimpl @ A @ B ) ) ) )).

%----ICL true connective
thf(icl_true_type,type,(
icl_true: \$i > \$o )).

thf(icl_true,definition,(
icl_true = mtrue )).

%----ICL false connective
thf(icl_false_type,type,(
icl_false: \$i > \$o )).

thf(icl_false,definition,(
icl_false = mfalse )).

%----ICL says connective
thf(icl_says_type,type,(
icl_says: ( \$i > \$o ) > ( \$i > \$o ) > \$i > \$o )).

thf(icl_says,definition,
( icl_says
= ( ^ [A: \$i > \$o,S: \$i > \$o] :
( mbox @ rel @ ( mor @ A @ S ) ) ) )).

%----An ICL formula is K-valid if its translation into modal logic is valid
thf(iclval_decl_type,type,(
iclval: ( \$i > \$o ) > \$o )).

thf(icl_s4_valid,definition,
( iclval
= ( ^ [X: \$i > \$o] :
( mvalid @ X ) ) )).

%------------------------------------------------------------------------------
```