//-------- DECLARE VARIBLES ----------// var b_Dean : int , b_DeptChair : int , b_Grad : int , b_President : int , b_Professor : int , b_Provost : int , b_Undergrad : int , b_target : int , b_SUPER_ROLE : int , d_Dean : int , d_DeptChair : int , d_Grad : int , d_President : int , d_Professor : int , d_Provost : int , d_Undergrad : int , d_target : int , d_SUPER_ROLE : int , n_Undergrad_Grad : int , n_SUPER_ROLE : int , n_President : int , n_0Grad : int , n_0Undergrad : int , n_Professor_0Dean_0President_0Provost : int , n_Dean : int , n_Professor_0Dean_0DeptChair_0President : int , n_Professor_0DeptChair_0President_0Provost : int , n_Provost : int , n_target : int ; //-------------- BEGIN Program --------------------// begin //-------------- Init VARS ------------------------// b_Dean = 0; b_DeptChair = 0; b_Grad = 0; b_President = 0; b_Professor = 0; b_Provost = 0; b_Undergrad = 0; b_target = 0; b_SUPER_ROLE = 0; d_Dean = 0; d_DeptChair = 0; d_Grad = 0; d_President = 0; d_Professor = 0; d_Provost = 0; d_Undergrad = 0; d_target = 0; d_SUPER_ROLE = 0; n_Undergrad_Grad = 0; n_SUPER_ROLE = 0; n_President = 0; n_0Grad = 0; n_0Undergrad = 0; n_Professor_0Dean_0President_0Provost = 0; n_Dean = 0; n_Professor_0Dean_0DeptChair_0President = 0; n_Professor_0DeptChair_0President_0Provost = 0; n_Provost = 0; n_target = 0; // Initialize track variables in the system n_SUPER_ROLE = n_SUPER_ROLE + 1; n_0Grad = n_0Grad + 18; n_0Undergrad = n_0Undergrad + 18; n_Professor_0Dean_0President_0Provost = n_Professor_0Dean_0President_0Provost + 6; n_Dean = n_Dean + 1; n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President + 6; n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost + 6; n_Provost = n_Provost + 1; while ( true ) do //----- Non-deterministic assignment ------// b_Dean = random; assume b_Dean >= 0 and b_Dean <= 1; b_DeptChair = random; assume b_DeptChair >= 0 and b_DeptChair <= 1; b_Grad = random; assume b_Grad >= 0 and b_Grad <= 1; b_President = random; assume b_President >= 0 and b_President <= 1; b_Professor = random; assume b_Professor >= 0 and b_Professor <= 1; b_Provost = random; assume b_Provost >= 0 and b_Provost <= 1; b_Undergrad = random; assume b_Undergrad >= 0 and b_Undergrad <= 1; b_target = random; assume b_target >= 0 and b_target <= 1; b_SUPER_ROLE = random; assume b_SUPER_ROLE >= 0 and b_SUPER_ROLE <= 1; d_Dean = random; assume d_Dean >= 0 and d_Dean <= 1; d_DeptChair = random; assume d_DeptChair >= 0 and d_DeptChair <= 1; d_Grad = random; assume d_Grad >= 0 and d_Grad <= 1; d_President = random; assume d_President >= 0 and d_President <= 1; d_Professor = random; assume d_Professor >= 0 and d_Professor <= 1; d_Provost = random; assume d_Provost >= 0 and d_Provost <= 1; d_Undergrad = random; assume d_Undergrad >= 0 and d_Undergrad <= 1; d_target = random; assume d_target >= 0 and d_target <= 1; d_SUPER_ROLE = random; assume d_SUPER_ROLE >= 0 and d_SUPER_ROLE <= 1; //-------------- Simulation -------------------// //------------------ CAN_ASSIGN RULE NUMBER 0 ----------------- // //------------------------------------------------------------------ if(brandom and d_SUPER_ROLE==1 and n_SUPER_ROLE>0 and b_Undergrad==1 and b_Grad==1 and n_Undergrad_Grad>0) then if(true) then n_target = n_target+1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 1 ----------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0) then if(b_Dean==0 and b_President==0 and b_Provost==0) then n_Professor_0Dean_0President_0Provost = n_Professor_0Dean_0President_0Provost+1; endif; if(b_Dean==0 and b_DeptChair==0 and b_President==0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President+1; endif; if(b_DeptChair==0 and b_President==0 and b_Provost==0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost+1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 2 ----------------- // //------------------------------------------------------------------ if(brandom and d_SUPER_ROLE==1 and n_SUPER_ROLE>0 and b_Grad==0 and n_0Grad>0) then if(b_Grad==1) then n_Undergrad_Grad = n_Undergrad_Grad+1; endif; if(b_Undergrad==0 and n_0Undergrad>0) then n_0Undergrad = n_0Undergrad-1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 3 ----------------- // //------------------------------------------------------------------ if(brandom and d_SUPER_ROLE==1 and n_SUPER_ROLE>0 and b_Undergrad==0 and n_0Undergrad>0) then if(b_Undergrad==1) then n_Undergrad_Grad = n_Undergrad_Grad+1; endif; if(b_Grad==0 and n_0Grad>0) then n_0Grad = n_0Grad-1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 4 ----------------- // //------------------------------------------------------------------ if(brandom and d_Dean==1 and n_Dean>0 and b_Professor==1 and b_Dean==0 and b_President==0 and b_Provost==0 and n_Professor_0Dean_0President_0Provost>0) then if(b_Professor==1 and b_Dean==0 and b_DeptChair==0 and b_President==0 and n_Professor_0Dean_0DeptChair_0President>0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President-1; endif; if(b_Professor==1 and b_DeptChair==0 and b_President==0 and b_Provost==0 and n_Professor_0DeptChair_0President_0Provost>0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost-1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 5 ----------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_Professor==1 and b_Dean==0 and b_DeptChair==0 and b_President==0 and n_Professor_0Dean_0DeptChair_0President>0) then if(b_Professor==1 and b_Dean==0 and b_President==0 and b_Provost==0 and n_Professor_0Dean_0President_0Provost>0) then n_Professor_0Dean_0President_0Provost = n_Professor_0Dean_0President_0Provost-1; endif; if(b_Professor==1 and b_DeptChair==0 and b_President==0 and b_Provost==0 and n_Professor_0DeptChair_0President_0Provost>0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost-1; endif; if(true) then n_Provost = n_Provost+1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 6 ----------------- // //------------------------------------------------------------------ if(brandom and d_Provost==1 and n_Provost>0 and b_Professor==1 and b_DeptChair==0 and b_President==0 and b_Provost==0 and n_Professor_0DeptChair_0President_0Provost>0) then if(b_Professor==1 and b_Dean==0 and b_President==0 and b_Provost==0 and n_Professor_0Dean_0President_0Provost>0) then n_Professor_0Dean_0President_0Provost = n_Professor_0Dean_0President_0Provost-1; endif; if(true) then n_Dean = n_Dean+1; endif; if(b_Professor==1 and b_Dean==0 and b_DeptChair==0 and b_President==0 and n_Professor_0Dean_0DeptChair_0President>0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President-1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 7 ----------------- // //------------------------------------------------------------------ if(brandom and d_Provost==1 and n_Provost>0 and b_Grad==0 and n_0Grad>0) then if(b_Grad==1) then n_Undergrad_Grad = n_Undergrad_Grad+1; endif; if(b_Undergrad==0 and n_0Undergrad>0) then n_0Undergrad = n_0Undergrad-1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 8 ----------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_Grad==0 and n_0Grad>0) then if(b_Grad==1) then n_Undergrad_Grad = n_Undergrad_Grad+1; endif; if(b_Undergrad==0 and n_0Undergrad>0) then n_0Undergrad = n_0Undergrad-1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 9 ----------------- // //------------------------------------------------------------------ if(brandom and d_Provost==1 and n_Provost>0 and b_Professor==1 and b_Dean==0 and b_President==0 and b_Provost==0 and n_Professor_0Dean_0President_0Provost>0) then if(b_Professor==1 and b_Dean==0 and b_DeptChair==0 and b_President==0 and n_Professor_0Dean_0DeptChair_0President>0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President-1; endif; if(b_Professor==1 and b_DeptChair==0 and b_President==0 and b_Provost==0 and n_Professor_0DeptChair_0President_0Provost>0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost-1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 10 ----------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_Professor==1 and b_Dean==0 and b_President==0 and b_Provost==0 and n_Professor_0Dean_0President_0Provost>0) then if(b_Professor==1 and b_Dean==0 and b_DeptChair==0 and b_President==0 and n_Professor_0Dean_0DeptChair_0President>0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President-1; endif; if(b_Professor==1 and b_DeptChair==0 and b_President==0 and b_Provost==0 and n_Professor_0DeptChair_0President_0Provost>0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost-1; endif; endif; //------------------ CAN_ASSIGN RULE NUMBER 11 ----------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_Professor==1 and b_DeptChair==0 and b_President==0 and b_Provost==0 and n_Professor_0DeptChair_0President_0Provost>0) then if(b_Professor==1 and b_Dean==0 and b_President==0 and b_Provost==0 and n_Professor_0Dean_0President_0Provost>0) then n_Professor_0Dean_0President_0Provost = n_Professor_0Dean_0President_0Provost-1; endif; if(true) then n_Dean = n_Dean+1; endif; if(b_Professor==1 and b_Dean==0 and b_DeptChair==0 and b_President==0 and n_Professor_0Dean_0DeptChair_0President>0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President-1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 0 --------------------- // //------------------------------------------------------------------ if(brandom and d_Dean==1 and n_Dean>0 and b_Undergrad==1) then if(b_Undergrad==1 and b_Grad==1 and n_Undergrad_Grad>0) then n_Undergrad_Grad = n_Undergrad_Grad-1; endif; if(true) then n_0Undergrad = n_0Undergrad+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 1 --------------------- // //------------------------------------------------------------------ if(brandom and d_Dean==1 and n_Dean>0 and b_Grad==1) then if(b_Undergrad==1 and b_Grad==1 and n_Undergrad_Grad>0) then n_Undergrad_Grad = n_Undergrad_Grad-1; endif; if(true) then n_0Grad = n_0Grad+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 2 --------------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_Professor==1) then if(b_Professor==1 and b_Dean==0 and b_President==0 and b_Provost==0 and n_Professor_0Dean_0President_0Provost>0) then n_Professor_0Dean_0President_0Provost = n_Professor_0Dean_0President_0Provost-1; endif; if(b_Professor==1 and b_Dean==0 and b_DeptChair==0 and b_President==0 and n_Professor_0Dean_0DeptChair_0President>0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President-1; endif; if(b_Professor==1 and b_DeptChair==0 and b_President==0 and b_Provost==0 and n_Professor_0DeptChair_0President_0Provost>0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost-1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 3 --------------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_Provost==1) then if(b_Professor==1 and b_Dean==0 and b_President==0) then n_Professor_0Dean_0President_0Provost = n_Professor_0Dean_0President_0Provost+1; endif; if(b_Professor==1 and b_DeptChair==0 and b_President==0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost+1; endif; if(b_Provost==1 and n_Provost>0) then n_Provost = n_Provost-1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 4 --------------------- // //------------------------------------------------------------------ if(brandom and d_Provost==1 and n_Provost>0 and b_Dean==1) then if(b_Professor==1 and b_President==0 and b_Provost==0) then n_Professor_0Dean_0President_0Provost = n_Professor_0Dean_0President_0Provost+1; endif; if(b_Dean==1 and n_Dean>0) then n_Dean = n_Dean-1; endif; if(b_Professor==1 and b_DeptChair==0 and b_President==0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 5 --------------------- // //------------------------------------------------------------------ if(brandom and d_Dean==1 and n_Dean>0 and b_DeptChair==1) then if(b_Professor==1 and b_Dean==0 and b_President==0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President+1; endif; if(b_Professor==1 and b_President==0 and b_Provost==0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 6 --------------------- // //------------------------------------------------------------------ if(brandom and d_Provost==1 and n_Provost>0 and b_Undergrad==1) then if(b_Undergrad==1 and b_Grad==1 and n_Undergrad_Grad>0) then n_Undergrad_Grad = n_Undergrad_Grad-1; endif; if(true) then n_0Undergrad = n_0Undergrad+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 7 --------------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_Undergrad==1) then if(b_Undergrad==1 and b_Grad==1 and n_Undergrad_Grad>0) then n_Undergrad_Grad = n_Undergrad_Grad-1; endif; if(true) then n_0Undergrad = n_0Undergrad+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 8 --------------------- // //------------------------------------------------------------------ if(brandom and d_Provost==1 and n_Provost>0 and b_Grad==1) then if(b_Undergrad==1 and b_Grad==1 and n_Undergrad_Grad>0) then n_Undergrad_Grad = n_Undergrad_Grad-1; endif; if(true) then n_0Grad = n_0Grad+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 9 --------------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_Grad==1) then if(b_Undergrad==1 and b_Grad==1 and n_Undergrad_Grad>0) then n_Undergrad_Grad = n_Undergrad_Grad-1; endif; if(true) then n_0Grad = n_0Grad+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 10 --------------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_Dean==1) then if(b_Professor==1 and b_President==0 and b_Provost==0) then n_Professor_0Dean_0President_0Provost = n_Professor_0Dean_0President_0Provost+1; endif; if(b_Dean==1 and n_Dean>0) then n_Dean = n_Dean-1; endif; if(b_Professor==1 and b_DeptChair==0 and b_President==0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 11 --------------------- // //------------------------------------------------------------------ if(brandom and d_Provost==1 and n_Provost>0 and b_DeptChair==1) then if(b_Professor==1 and b_Dean==0 and b_President==0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President+1; endif; if(b_Professor==1 and b_President==0 and b_Provost==0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost+1; endif; endif; //------------------- CAN_REVOKE RULE NUMBER 12 --------------------- // //------------------------------------------------------------------ if(brandom and d_President==1 and n_President>0 and b_DeptChair==1) then if(b_Professor==1 and b_Dean==0 and b_President==0) then n_Professor_0Dean_0DeptChair_0President = n_Professor_0Dean_0DeptChair_0President+1; endif; if(b_Professor==1 and b_President==0 and b_Provost==0) then n_Professor_0DeptChair_0President_0Provost = n_Professor_0DeptChair_0President_0Provost+1; endif; endif; //------------ ERROR Query ---------------// if (n_target>0) then skip; endif; done; //End while loop end //End main