## TPTP Axioms File: SWV010^0.ax

```%------------------------------------------------------------------------------
% File     : SWV010^0 : TPTP v7.5.0. Released v3.7.0.
% Domain   : Software Verification (Security)
% Axioms   : Translation from Binder Logic (BL) to CS4
% Version  : [Gar08] axioms.
% English  :

% Refs     : [AM+01] Alechina et al. (2001), Categorical and Kripke Semanti
%          : [Gar08] Garg (2008), Principal-Centric Reasoning in Constructi
%          : [Gar09] Garg (2009), Email to Geoff Sutcliffe
% Source   : [Gar09]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :   23 (   1 unit;  12 type;  10 defn)
%            Number of atoms       :  121 (  10 equality;  12 variable)
%            Maximal formula depth :    9 (   4 average)
%            Number of connectives :   20 (   0   ~;   0   |;   0   &;  20   @)
%                                         (   0 <=>;   0  =>;   0  <=;   0 <~>)
%                                         (   0  ~|;   0  ~&;   0  !!;   0  ??)
%            Number of type conns  :   46 (  46   >;   0   *;   0   +)
%            Number of symbols     :   25 (  12   :;   0  :=)
%            Number of variables   :   12 (   0 sgn;   0   !;   0   ?;  12   ^)
%                                         (  12   :;   0  :=;   0  !>;   0  ?*)
% SPC      :

% Comments : Requires LCL008^0.ax LCL009^0.ax
%          : This translation is not perfectly correct, because BL does not
%            admit the Barcan formula, but its translation to BM4 does. That
%            will not make a difference to the policies, however.
%          : THF0 syntax
%------------------------------------------------------------------------------
%----We now introduce one predicate for each connective of BL, and define the
%----predicates.
%----An injection from principals to formulas. Has no definition, it's symbolic.
thf(princ_inj,type,(
princ_inj: individuals > \$i > \$o )).

thf(bl_atom_decl,type,(
bl_atom: ( \$i > \$o ) > \$i > \$o )).

thf(bl_princ_decl,type,(
bl_princ: ( \$i > \$o ) > \$i > \$o )).

thf(bl_and_decl,type,(
bl_and: ( \$i > \$o ) > ( \$i > \$o ) > \$i > \$o )).

thf(bl_or_decl,type,(
bl_or: ( \$i > \$o ) > ( \$i > \$o ) > \$i > \$o )).

thf(bl_impl_decl,type,(
bl_impl: ( \$i > \$o ) > ( \$i > \$o ) > \$i > \$o )).

thf(bl_all_decl,type,(
bl_all: ( individuals > \$i > \$o ) > \$i > \$o )).

thf(bl_true_decl,type,(
bl_true: \$i > \$o )).

thf(bl_false_decl,type,(
bl_false: \$i > \$o )).

thf(bl_says_decl,type,(
bl_says: individuals > ( \$i > \$o ) > \$i > \$o )).

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

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

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

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

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

thf(bl_all,definition,
( bl_all
= ( ^ [A: individuals > \$i > \$o] :
( cs4_all @ A ) ) )).

thf(bl_true,definition,(
bl_true = cs4_true )).

thf(bl_false,definition,(
bl_false = cs4_false )).

thf(bl_says,definition,
( bl_says
= ( ^ [K: individuals,A: \$i > \$o] :
( cs4_box @ ( cs4_impl @ ( bl_princ @ ( princ_inj @ K ) ) @ A ) ) ) )).

%----Validity in BL
thf(bl_valid_decl,type,(
bl_valid: ( \$i > \$o ) > \$o )).

thf(bl_valid_def,definition,(
bl_valid = mvalid )).

%----Local authority (loca) - the strongest principal.
thf(loca_decl,type,(
loca: individuals )).

%----Every principal must entail loca, this makes loca the strongest principal.
%----This is done by adding the CS4 axiom: forall K. [] (K => loca).
thf(loca_strength,axiom,
( cs4_valid
@ ( cs4_all
@ ^ [K: individuals] :
( cs4_impl @ ( princ_inj @ K ) @ ( princ_inj @ loca ) ) ) )).

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