[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 CSPAWN+Preds
enrich
   RGI-Conds
with
   

   
   
   
   predicates  CRely : nat × (nat → bool) × cstate × (nat → bool) × cstate;
               CGuar : nat × (nat → bool) × cstate × (nat → bool) × cstate;
               CInit : nat × (nat → bool) × cstate;
               CRelyto : nat × (nat → bool) × cstate × (nat → bool) × cstate;
               CGuarto : nat × (nat → bool) × cstate × (nat → bool) × cstate;
               CInitto : nat × (nat → bool) × cstate;
               CInv : nat × (nat → bool) × cstate;
   procedures CSPAWN nat : (nat → bool) × (nat → input) × cstate × (nat → output) nonfunctional nondeterministic;
              CSEQ nat : (nat → bool) × (nat → input) × cstate × (nat → output) nonfunctional nondeterministic;
   variables  Act : nat → bool flexible;
              act : nat → bool;
              act0 : nat → bool;
              act1 : nat → bool;
              act2 : nat → bool;
              act3 : nat → bool;
              cs0 : cstate;
              cs1 : cstate;
              cs2 : cstate;
              Rfun : (nat → bool) × cstate × (nat → bool) × cstate → bool;
              Invfun : (nat → bool) × cstate → bool;
   
   

   

   axioms CGuar-def
          : ⊦   CGuar(m, act, cs, act0, cs0)
              ↔   Guar(m, cs, cs0) ∧ ((¬ act(m) → Idle(m, cs)) → ¬ act0(m) → Idle(m, cs0))
                ∧ (∀ m0. m0 ≠ m → (act0(m0) ↔ act(m0)) ∧ (Idle(m0, cs) ↔ Idle(m0, cs0)));
          CRely-def :  ⊦ CRely(m, act1, cs1, act2, cs2) ↔ Rely(m, cs1, cs2) ∧ (Idle(m, cs1) ↔ Idle(m, cs2)) ∧ (act2(m) ↔ act1(m));
          CInit-def :  ⊦ CInit(m, act1, cs1) ↔ Idle(m, cs1) ∧ ¬ act1(m);
          CInv-def :  ⊦ CInv(m, act, cs) ↔ Inv(cs) ∧ (∀ m0. m < m0 → Idle(m0, cs) ∧ ¬ act(m0));
          CInitto-def :  ⊦ CInitto(m, act1, cs1) ↔ (∀ m0. m0 ≤ m → CInit(m0, act1, cs1));
          CRrelyto-def :  ⊦ CRelyto(m, act, cs, act0, cs0) ↔ (∀ m0. m0 ≤ m → CRely(m0, act, cs, act0, cs0));
          CGuarto-def :  ⊦ CGuarto(m, act, cs, act0, cs0) ↔ (∃ m0. m0 ≤ m ∧ CGuar(m0, act, cs, act0, cs0));

   

   declaration CSEQ-def : CSEQ(m; Act, Inp, CS, Outp){{skip or {Act(m) := true; COP(m, Inp; CS, Outp); Act(m) := false}} star};
               CSPAWN-def
               : CSPAWN(n; Act, Inp, CS, Outp)
                 {if* n = 0 then CSEQ(n; Act, Inp, CS, Outp) else CSEQ(n; Act, Inp, CS, Outp) ∥ CSPAWN(n - 1; Act, Inp, CS, Outp)}
               ;
end enrich