//---------- VARIABLES DECLARATION --------- decl track_0_Doctor; decl track_0_Receptionist; decl track_0_target; decl track_0_SUPER_ROLE; decl track_1_Doctor; decl track_1_Receptionist; decl track_1_target; decl track_1_SUPER_ROLE; decl b_0; decl b_1; //---------- BEGIN MAIN PROGRAM --------- void main() begin //---------- INITIALIZE VARIABLES --------- b_0 := 0; b_1 := 0; track_0_Doctor := 0; track_0_Receptionist := 0; track_0_target := 0; track_0_SUPER_ROLE := 0; track_1_Doctor := 0; track_1_Receptionist := 0; track_1_target := 0; track_1_SUPER_ROLE := 0; //---------- CONFIGURATION_USERS --------- //Configuration of user0 if (*) then if (!b_0) then b_0 := 1; elsif (!b_1) then b_1 := 1; fi fi //Configuration of user1 if (*) then if (!b_0) then b_0 := 1; track_0_Doctor := 1; elsif (!b_1) then b_1 := 1; track_1_Doctor := 1; fi fi //Configuration of user2 if (*) then if (!b_0) then b_0 := 1; track_0_Doctor := 1; elsif (!b_1) then b_1 := 1; track_1_Doctor := 1; fi fi //Configuration of SUPER_USER if (*) then if (!b_0) then b_0 := 1; track_0_SUPER_ROLE := 1; elsif (!b_1) then b_1 := 1; track_1_SUPER_ROLE := 1; fi fi //Configuration of user131 if (*) then if (!b_0) then b_0 := 1; elsif (!b_1) then b_1 := 1; fi fi //Configuration of user1031 if (*) then if (!b_0) then b_0 := 1; track_0_Receptionist := 1; elsif (!b_1) then b_1 := 1; track_1_Receptionist := 1; fi fi //Configuration of user1032 if (*) then if (!b_0) then b_0 := 1; track_0_Receptionist := 1; elsif (!b_1) then b_1 := 1; track_1_Receptionist := 1; fi fi //---------- SIMULATION OF RULES --------- while ( 1 ) do //------------------ CAN_ASSIGN RULE NUMBER 0 ----------------- // //------------------------------------------------------------------ if (track_0_SUPER_ROLE | track_1_SUPER_ROLE) then if (*) then if (b_0 & track_0_Receptionist & track_0_Doctor) then track_0_target := 1; fi fi if (*) then if (b_1 & track_1_Receptionist & track_1_Doctor) then track_1_target := 1; fi fi fi //------------------ CAN_ASSIGN RULE NUMBER 1 ----------------- // //------------------------------------------------------------------ if (track_0_SUPER_ROLE | track_1_SUPER_ROLE) then if (*) then if (b_0 & !track_0_Doctor) then track_0_Receptionist := 1; fi fi if (*) then if (b_1 & !track_1_Doctor) then track_1_Receptionist := 1; fi fi fi //------------------ CAN_ASSIGN RULE NUMBER 2 ----------------- // //------------------------------------------------------------------ if (track_0_SUPER_ROLE | track_1_SUPER_ROLE) then if (*) then if (b_0 & !track_0_Receptionist) then track_0_Doctor := 1; fi fi if (*) then if (b_1 & !track_1_Receptionist) then track_1_Doctor := 1; fi fi fi //------------------- CAN_REVOKE RULE NUMBER 0 --------------------- // //------------------------------------------------------------------ if (track_0_SUPER_ROLE | track_1_SUPER_ROLE) then if (*) then track_0_Receptionist := 0; fi if (*) then track_1_Receptionist := 0; fi fi //------------------- CAN_REVOKE RULE NUMBER 1 --------------------- // //------------------------------------------------------------------ if (track_0_SUPER_ROLE | track_1_SUPER_ROLE) then if (*) then track_0_Doctor := 0; fi if (*) then track_1_Doctor := 0; fi fi //---------------Error------------ if (track_0_target | track_1_target) then SLIC_ERROR: skip; fi od end