[Imprint][Data Privacy Statement][E-Mail]

Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Specification gen-RMATrans
enrich gen-execute , 
       gen-value , 
       gen-names , 
       gen-command-list
 with
   functions 
      contents : systemstate × name → value;
      comment: Rushby Def. 5;
       
      observe : secdomain → names;
      comment: Rushby Def. 5;
       
      alter : secdomain → names;
      comment: Rushby Def. 5;
       
      run : systemstate × commandlist → systemstate;
      execl : commandlist → systemstate;
      step : systemstate × command → systemstate;
      test : commandlist × command → output;
      purge : systemstate × commandlist × secdomain → commandlist;
   predicates 
       . ⇒ . : secdomain × secdomain;
      comment: security policy, interference relation;
       
      eqd : systemstate × secdomain × systemstate;
      comment: Rushby Reference Monitor Assumption.;
       
   
   axioms 
      eqd-def :  ⊦ eqd(sys, d, sys0) ↔ (∀ nam. nam ∈ observe(d) → contents(sys, nam) = contents(sys0, nam));
      RMA-1 :  ⊦ eqd(sys, cdom(co), sys0) → exec(sys, co) .2 = exec(sys0, co) .2;
      RMA-2
      : ⊦ 
          eqd(sys, cdom(co), sys0) ∧ (contents(exec(sys, co) .1, nam) ≠ contents(sys, nam) ∨ contents(exec(sys0, co) .1, nam) ≠ contents(sys0, nam))
        → contents(exec(sys, co) .1, nam) = contents(exec(sys0, co) .1, nam);
      RMA-2-weaker
      : ⊦ 
          eqd(sys, cdom(co), sys0) ∧ contents(sys, nam) = contents(sys0, nam) ∧ nam ∈ alter(cdom(co))
        → contents(exec(sys, co) .1, nam) = contents(exec(sys0, co) .1, nam);
      RMA-3 :  ⊦ contents(exec(sys, co) .1, nam) ≠ contents(sys, nam) → nam ∈ alter(cdom(co));
      policy-respects-observe :  ⊦ d ⇒ d0 → observe(d) ⊆ observe(d0);
      alter-observe-respects-policy :  ⊦ nam ∈ alter(d) ∧ nam ∈ observe(d0) → d ⇒ d0;
      test :  ⊦ test(cl, co) = exec(execl(cl), co) .2;
      step :  ⊦ step(sys, co) = exec(sys, co) .1;
      run-base :  ⊦ run(sys, []) = sys;
      used for : s, ls;
       
      run-rec :  ⊦ run(sys, co ' + cl) = run(exec(sys, co) .1, cl);
      used for : s, ls;
       
      execl :  ⊦ execl(cl) = run(initialstate, cl);
      purge-base :  ⊦ purge(sys, [], d) = [];
      used for : s, ls;
       
      purge-rec :  ⊦ purge(sys, co ' + cl, d) = ((cdom(co) ⇒ d ⊃ co + purge(exec(sys, co) .1, cl, d); purge(sys, cl, d)));
end enrich