<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../../../unit.xsl"?>
<KIVSPEC name="divblkDT"><SPECBODY>generic specification 
   comment: Definition of process data types that may do something or may diverge or may block.;
   parameter <a href="../../../../../../../Refinement/Web/CSPRef/DataRef/specs/index/export/unit.xml">index</a>
   using <a href="../../../specs/divblkOP/export/unit.xml">divblkOP</a> 
         <a href="../../../../../../../Refinement/Web/CSPRef/DataRef/specs/compose-domran/export/unit.xml">compose-domran</a> 
         <a href="../../../specs/restrictdomran/export/unit.xml">restrictdomran</a> 
         <a href="../../../../../../../Refinement/Web/CSPRef/DataRef/specs/indexlist/export/unit.xml">indexlist</a>
    target 
         functions 
            Op : index → divblkop;
            gd : divblkop → state → bool;
            pre : divblkop → state → bool;
             . ∪ . : (state → bool) × (state → bool) → state → bool;
         predicates 
            Inits : state;
            Fin : state × globalstate;
         variables 
            st' : state; 
            p1, p2 : state → bool; 
         
         axioms 
            union-def :  ⊦ (p1 ∪ p2)(st) ↔ ¬ ¬ (p1(st) ∨ p2(st)); used for : s, ls;
            pre-def :  ⊦ pre(dbop) = dom(eff(dbop)); used for : s, ls;
            gd-def :  ⊦ gd(dbop) = dom(eff(dbop)) ∪ div(dbop); used for : s, ls;
            disjoint-pre-div :  ⊦ ¬ (pre(Op(i))(st) ∧ div(Op(i))(st));
            disjoint-pre-blk :  ⊦ ¬ (pre(Op(i))(st) ∧ blk(Op(i))(st));
            disjoint-blk-div :  ⊦ ¬ (blk(Op(i))(st) ∧ div(Op(i))(st));
            oneof-pre-blk-div :  ⊦ pre(Op(i))(st) ∨ blk(Op(i))(st) ∨ div(Op(i))(st);
   
end generic specification</SPECBODY></KIVSPEC>