From 8cb1fdc0c8694ecb80fbfc2287a62e7ec6d05c9e Mon Sep 17 00:00:00 2001 From: Michael Collins <mdcolli@evoforge.org> Date: Mon, 17 Jan 2022 14:51:18 -0500 Subject: [PATCH] created BASH test scripts and directories to allow automated testing for changes to the rigal c compiler and the rigal code files. Just checks whether the .json output of each of the legacy preloaded files changes. --- Code/test_rc_on_preloaded_examples.sh | 48 + ...> Example14_microwave_oven.mp.scope1_only} | 0 ...xample33_Component_Diagram.mp.scope1_only} | 0 .../Example01_simple_message_flow.cpp | 363 +++ .../Example01_simple_message_flow.mp | 24 + .../Example01_simple_message_flow.temp.txt | 5 + .../Example01_simple_message_flow.temp2.txt | 5 + .../Example01_simple_message_flow.tree | Bin 0 -> 4096 bytes .../Example01_simple_message_flow.txt | 12 + .../Example01a_unreliable_message_flow.cpp | 379 +++ .../Example01a_unreliable_message_flow.mp | 16 + ...xample01a_unreliable_message_flow.temp.txt | 5 + ...ample01a_unreliable_message_flow.temp2.txt | 5 + .../Example01a_unreliable_message_flow.tree | Bin 0 -> 4096 bytes .../Example01a_unreliable_message_flow.txt | 12 + .../Example02_Data_flow.cpp | 484 ++++ .../Example02_Data_flow.mp | 39 + .../Example02_Data_flow.temp.txt | 5 + .../Example02_Data_flow.temp2.txt | 5 + .../Example02_Data_flow.tree | Bin 0 -> 5632 bytes .../Example02_Data_flow.txt | 15 + .../Example03_ATM_withdrawal.cpp | 1032 ++++++++ .../Example03_ATM_withdrawal.mp | 83 + .../Example03_ATM_withdrawal.temp.txt | 5 + .../Example03_ATM_withdrawal.temp2.txt | 5 + .../Example03_ATM_withdrawal.tree | Bin 0 -> 13312 bytes .../Example03_ATM_withdrawal.txt | 15 + .../Example04_Stack_behavior.cpp | 562 ++++ .../Example04_Stack_behavior.mp | 53 + .../Example04_Stack_behavior.temp.txt | 5 + .../Example04_Stack_behavior.temp2.txt | 5 + .../Example04_Stack_behavior.tree | Bin 0 -> 7168 bytes .../Example04_Stack_behavior.txt | 9 + .../Example04a_Queue_behavior.cpp | 560 ++++ .../Example04a_Queue_behavior.mp | 45 + .../Example04a_Queue_behavior.temp.txt | 5 + .../Example04a_Queue_behavior.temp2.txt | 5 + .../Example04a_Queue_behavior.tree | Bin 0 -> 7168 bytes .../Example04a_Queue_behavior.txt | 9 + .../Example05_Car_Race.cpp | 1130 ++++++++ .../Example05_Car_Race.mp | 64 + .../Example05_Car_Race.temp.txt | 5 + .../Example05_Car_Race.temp2.txt | 5 + .../Example05_Car_Race.tree | Bin 0 -> 15360 bytes .../Example05_Car_Race.txt | 15 + .../Example06_Assertion_Checking.cpp | 690 +++++ .../Example06_Assertion_Checking.mp | 57 + .../Example06_Assertion_Checking.temp.txt | 5 + .../Example06_Assertion_Checking.temp2.txt | 5 + .../Example06_Assertion_Checking.tree | Bin 0 -> 7168 bytes .../Example06_Assertion_Checking.txt | 15 + .../Example07_Unconstrained_Stack.cpp | 544 ++++ .../Example07_Unconstrained_Stack.mp | 50 + .../Example07_Unconstrained_Stack.temp.txt | 5 + .../Example07_Unconstrained_Stack.temp2.txt | 5 + .../Example07_Unconstrained_Stack.tree | Bin 0 -> 7168 bytes .../Example07_Unconstrained_Stack.txt | 9 + .../Example08_Operational_Process.cpp | 1439 ++++++++++ .../Example08_Operational_Process.mp | 123 + .../Example08_Operational_Process.temp.txt | 5 + .../Example08_Operational_Process.temp2.txt | 5 + .../Example08_Operational_Process.tree | Bin 0 -> 18944 bytes .../Example08_Operational_Process.txt | 15 + .../Example09_Employee_Employer.cpp | 541 ++++ .../Example09_Employee_Employer.mp | 50 + .../Example09_Employee_Employer.temp.txt | 5 + .../Example09_Employee_Employer.temp2.txt | 5 + .../Example09_Employee_Employer.tree | Bin 0 -> 5632 bytes .../Example09_Employee_Employer.txt | 9 + .../Example10_Pipe_Filter.cpp | 1176 +++++++++ .../Example10_Pipe_Filter.mp | 55 + .../Example10_Pipe_Filter.temp.txt | 5 + .../Example10_Pipe_Filter.temp2.txt | 5 + .../Example10_Pipe_Filter.tree | Bin 0 -> 14848 bytes .../Example10_Pipe_Filter.txt | 18 + .../Example11_Publish_Subscribe.cpp | 1213 +++++++++ .../Example11_Publish_Subscribe.mp | 89 + .../Example11_Publish_Subscribe.temp.txt | 5 + .../Example11_Publish_Subscribe.temp2.txt | 5 + .../Example11_Publish_Subscribe.tree | Bin 0 -> 14848 bytes .../Example11_Publish_Subscribe.txt | 14 + .../Example12_network_topology_ring.cpp | 627 +++++ .../Example12_network_topology_ring.mp | 75 + .../Example12_network_topology_ring.temp.txt | 5 + .../Example12_network_topology_ring.temp2.txt | 5 + .../Example12_network_topology_ring.tree | Bin 0 -> 8192 bytes .../Example12_network_topology_ring.txt | 10 + .../Example13_FiniteStateDiagram.cpp | 959 +++++++ .../Example13_FiniteStateDiagram.mp | 80 + .../Example13_FiniteStateDiagram.temp.txt | 5 + .../Example13_FiniteStateDiagram.temp2.txt | 5 + .../Example13_FiniteStateDiagram.tree | Bin 0 -> 13824 bytes .../Example13_FiniteStateDiagram.txt | 31 + .../Example15_Petri_net.cpp | 1996 ++++++++++++++ .../Example15_Petri_net.mp | 111 + .../Example15_Petri_net.temp.txt | 5 + .../Example15_Petri_net.temp2.txt | 5 + .../Example15_Petri_net.tree | Bin 0 -> 32256 bytes .../Example15_Petri_net.txt | 46 + .../Example16_software_spiral_process.cpp | 1058 ++++++++ .../Example16_software_spiral_process.mp | 82 + ...Example16_software_spiral_process.temp.txt | 5 + ...xample16_software_spiral_process.temp2.txt | 5 + .../Example16_software_spiral_process.tree | Bin 0 -> 11264 bytes .../Example16_software_spiral_process.txt | 26 + .../Example17_Dining_Philosophers.cpp | 881 +++++++ .../Example17_Dining_Philosophers.mp | 90 + .../Example17_Dining_Philosophers.temp.txt | 5 + .../Example17_Dining_Philosophers.temp2.txt | 5 + .../Example17_Dining_Philosophers.tree | Bin 0 -> 12800 bytes .../Example17_Dining_Philosophers.txt | 18 + .../Example18_Workflow_pattern.cpp | 458 ++++ .../Example18_Workflow_pattern.mp | 30 + .../Example18_Workflow_pattern.temp.txt | 5 + .../Example18_Workflow_pattern.temp2.txt | 5 + .../Example18_Workflow_pattern.tree | Bin 0 -> 5632 bytes .../Example18_Workflow_pattern.txt | 11 + .../Example19_Consumers_Suppliers.cpp | 1433 ++++++++++ .../Example19_Consumers_Suppliers.mp | 101 + .../Example19_Consumers_Suppliers.temp.txt | 5 + .../Example19_Consumers_Suppliers.temp2.txt | 5 + .../Example19_Consumers_Suppliers.tree | Bin 0 -> 18944 bytes .../Example19_Consumers_Suppliers.txt | 20 + .../Example20_MP_model__reuse.cpp | 1105 ++++++++ .../Example20_MP_model__reuse.mp | 89 + .../Example20_MP_model__reuse.temp.txt | 5 + .../Example20_MP_model__reuse.temp2.txt | 5 + .../Example20_MP_model__reuse.tree | Bin 0 -> 15872 bytes .../Example20_MP_model__reuse.txt | 20 + .../Example21_compiler1.cpp | 1536 +++++++++++ .../Example21_compiler1.mp | 86 + .../Example21_compiler1.temp.txt | 5 + .../Example21_compiler1.temp2.txt | 5 + .../Example21_compiler1.tree | Bin 0 -> 19968 bytes .../Example21_compiler1.txt | 35 + .../Example22_compiler2.cpp | 1109 ++++++++ .../Example22_compiler2.mp | 80 + .../Example22_compiler2.temp.txt | 5 + .../Example22_compiler2.temp2.txt | 5 + .../Example22_compiler2.tree | Bin 0 -> 15872 bytes .../Example22_compiler2.txt | 30 + .../Example23_number_attributes.cpp | 823 ++++++ .../Example23_number_attributes.mp | 38 + .../Example23_number_attributes.temp.txt | 5 + .../Example23_number_attributes.temp2.txt | 5 + .../Example23_number_attributes.tree | Bin 0 -> 10752 bytes .../Example23_number_attributes.txt | 15 + .../Example24_Bayesian_probability.cpp | 690 +++++ .../Example24_Bayesian_probability.mp | 56 + .../Example24_Bayesian_probability.temp.txt | 5 + .../Example24_Bayesian_probability.temp2.txt | 5 + .../Example24_Bayesian_probability.tree | Bin 0 -> 10240 bytes .../Example24_Bayesian_probability.txt | 9 + .../Example25_interval_attributes.cpp | 530 ++++ .../Example25_interval_attributes.mp | 28 + .../Example25_interval_attributes.temp.txt | 5 + .../Example25_interval_attributes.temp2.txt | 5 + .../Example25_interval_attributes.tree | Bin 0 -> 7680 bytes .../Example25_interval_attributes.txt | 13 + .../Example26_timing_attributes.cpp | 542 ++++ .../Example26_timing_attributes.mp | 42 + .../Example26_timing_attributes.temp.txt | 5 + .../Example26_timing_attributes.temp2.txt | 5 + .../Example26_timing_attributes.tree | Bin 0 -> 7680 bytes .../Example26_timing_attributes.txt | 15 + .../Example27_Railroad_Crossing.cpp | 960 +++++++ .../Example27_Railroad_Crossing.mp | 71 + .../Example27_Railroad_Crossing.temp.txt | 5 + .../Example27_Railroad_Crossing.temp2.txt | 5 + .../Example27_Railroad_Crossing.tree | Bin 0 -> 13312 bytes .../Example27_Railroad_Crossing.txt | 15 + .../Example28_MP_model_of_MP_architecture | Bin 0 -> 222672 bytes .../Example28_MP_model_of_MP_architecture.cpp | 1681 ++++++++++++ ...Example28_MP_model_of_MP_architecture.json | 0 .../Example28_MP_model_of_MP_architecture.mp | 148 ++ ...ple28_MP_model_of_MP_architecture.temp.txt | 5 + ...le28_MP_model_of_MP_architecture.temp2.txt | 5 + ...Example28_MP_model_of_MP_architecture.tree | Bin 0 -> 24576 bytes .../Example28_MP_model_of_MP_architecture.txt | 19 + .../Example29_stack1_Bayesian_probability.cpp | 587 +++++ .../Example29_stack1_Bayesian_probability.mp | 95 + ...ple29_stack1_Bayesian_probability.temp.txt | 5 + ...le29_stack1_Bayesian_probability.temp2.txt | 5 + ...Example29_stack1_Bayesian_probability.tree | Bin 0 -> 8704 bytes .../Example29_stack1_Bayesian_probability.txt | 9 + .../Example30_Local_Report.cpp | 587 +++++ .../Example30_Local_Report.mp | 29 + .../Example30_Local_Report.temp.txt | 5 + .../Example30_Local_Report.temp2.txt | 5 + .../Example30_Local_Report.tree | Bin 0 -> 8192 bytes .../Example30_Local_Report.txt | 15 + .../Example31_Global_report.cpp | 542 ++++ .../Example31_Global_report.mp | 31 + .../Example31_Global_report.temp.txt | 5 + .../Example31_Global_report.temp2.txt | 5 + .../Example31_Global_report.tree | Bin 0 -> 7680 bytes .../Example31_Global_report.txt | 12 + .../Example32_Local_graph.cpp | 1065 ++++++++ .../Example32_Local_graph.mp | 67 + .../Example32_Local_graph.temp.txt | 5 + .../Example32_Local_graph.temp2.txt | 5 + .../Example32_Local_graph.tree | Bin 0 -> 16896 bytes .../Example32_Local_graph.txt | 15 + .../Example34_Graph_as_data_structure.cpp | 434 +++ .../Example34_Graph_as_data_structure.mp | 50 + ...Example34_Graph_as_data_structure.temp.txt | 5 + ...xample34_Graph_as_data_structure.temp2.txt | 5 + .../Example34_Graph_as_data_structure.tree | Bin 0 -> 8704 bytes .../Example34_Graph_as_data_structure.txt | 11 + .../Example35_Finite_State_Diagram.cpp | 1150 ++++++++ .../Example35_Finite_State_Diagram.mp | 97 + .../Example35_Finite_State_Diagram.temp.txt | 5 + .../Example35_Finite_State_Diagram.temp2.txt | 5 + .../Example35_Finite_State_Diagram.tree | Bin 0 -> 18944 bytes .../Example35_Finite_State_Diagram.txt | 35 + .../Example36_Statechart.cpp | 1168 ++++++++ .../Example36_Statechart.mp | 83 + .../Example36_Statechart.temp.txt | 5 + .../Example36_Statechart.temp2.txt | 5 + .../Example36_Statechart.tree | Bin 0 -> 16384 bytes .../Example36_Statechart.txt | 15 + .../Example37_GLOBAL_query.cpp | 523 ++++ .../Example37_GLOBAL_query.mp | 61 + .../Example37_GLOBAL_query.temp.txt | 5 + .../Example37_GLOBAL_query.temp2.txt | 5 + .../Example37_GLOBAL_query.tree | Bin 0 -> 9728 bytes .../Example37_GLOBAL_query.txt | 11 + .../Example38_knapsack.cpp | 881 +++++++ .../Example38_knapsack.mp | 81 + .../Example38_knapsack.temp.txt | 5 + .../Example38_knapsack.temp2.txt | 5 + .../Example38_knapsack.tree | Bin 0 -> 17408 bytes .../Example38_knapsack.txt | 15 + .../Example39_turtles.cpp | 2346 +++++++++++++++++ .../Example39_turtles.mp | 132 + .../Example39_turtles.temp.txt | 5 + .../Example39_turtles.temp2.txt | 5 + .../Example39_turtles.tree | Bin 0 -> 36864 bytes .../Example39_turtles.txt | 18 + .../Example40_web_browsers.cpp | 1295 +++++++++ .../Example40_web_browsers.mp | 107 + .../Example40_web_browsers.temp.txt | 5 + .../Example40_web_browsers.temp2.txt | 5 + .../Example40_web_browsers.tree | Bin 0 -> 19968 bytes .../Example40_web_browsers.txt | 17 + .../Example41_Replay_Attack.cpp | 971 +++++++ .../Example41_Replay_Attack.mp | 63 + .../Example41_Replay_Attack.temp.txt | 5 + .../Example41_Replay_Attack.temp2.txt | 5 + .../Example41_Replay_Attack.tree | Bin 0 -> 12288 bytes .../Example41_Replay_Attack.txt | 17 + .../Example42_Bar_Chart.cpp | 409 +++ .../Example42_Bar_Chart.mp | 53 + .../Example42_Bar_Chart.temp.txt | 5 + .../Example42_Bar_Chart.temp2.txt | 5 + .../Example42_Bar_Chart.tree | Bin 0 -> 6656 bytes .../Example42_Bar_Chart.txt | 7 + .../Example43_Histogram.cpp | 373 +++ .../Example43_Histogram.mp | 48 + .../Example43_Histogram.temp.txt | 5 + .../Example43_Histogram.temp2.txt | 5 + .../Example43_Histogram.tree | Bin 0 -> 8704 bytes .../Example43_Histogram.txt | 9 + .../Example44_Gantt_Chart.cpp | 558 ++++ .../Example44_Gantt_Chart.mp | 39 + .../Example44_Gantt_Chart.temp.txt | 5 + .../Example44_Gantt_Chart.temp2.txt | 5 + .../Example44_Gantt_Chart.tree | Bin 0 -> 7680 bytes .../Example44_Gantt_Chart.txt | 9 + .../Example45_Martian_Lander.cpp | 1433 ++++++++++ .../Example45_Martian_Lander.mp | 163 ++ .../Example45_Martian_Lander.temp.txt | 5 + .../Example45_Martian_Lander.temp2.txt | 5 + .../Example45_Martian_Lander.tree | Bin 0 -> 24576 bytes .../Example45_Martian_Lander.txt | 17 + .../Example01_simple_message_flow.json | 19 + .../Example01a_unreliable_message_flow.json | 27 + .../Example02_Data_flow.json | 27 + .../Example03_ATM_withdrawal.json | 35 + .../Example04_Stack_behavior.json | 19 + .../Example04a_Queue_behavior.json | 19 + .../Example05_Car_Race.json | 35 + .../Example06_Assertion_Checking.json | 35 + .../Example07_Unconstrained_Stack.json | 27 + .../Example08_Operational_Process.json | 11 + .../Example09_Employee_Employer.json | 11 + .../Example10_Pipe_Filter.json | 35 + .../Example11_Publish_Subscribe.json | 11 + .../Example12_network_topology_ring.json | 13 + .../Example13_FiniteStateDiagram.json | 35 + .../Example15_Petri_net.json | 23 + .../Example16_software_spiral_process.json | 27 + .../Example17_Dining_Philosophers.json | 0 .../Example18_Workflow_pattern.json | 19 + .../Example19_Consumers_Suppliers.json | 22 + .../Example20_MP_model__reuse.json | 27 + .../Example21_compiler1.json | 19 + .../Example22_compiler2.json | 19 + .../Example23_number_attributes.json | 75 + .../Example24_Bayesian_probability.json | 59 + .../Example25_interval_attributes.json | 19 + .../Example26_timing_attributes.json | 19 + .../Example27_Railroad_Crossing.json | 11 + ...Example28_MP_model_of_MP_architecture.json | 135 + ...Example29_stack1_Bayesian_probability.json | 19 + .../Example30_Local_Report.json | 33 + .../Example31_Global_report.json | 29 + .../Example32_Local_graph.json | 51 + .../Example34_Graph_as_data_structure.json | 33 + .../Example35_Finite_State_Diagram.json | 55 + .../Example36_Statechart.json | 39 + .../Example37_GLOBAL_query.json | 21 + .../Example38_knapsack.json | 37 + .../Example39_turtles.json | 107 + .../Example40_web_browsers.json | 33 + .../Example41_Replay_Attack.json | 19 + .../Example42_Bar_Chart.json | 19 + .../Example43_Histogram.json | 39 + .../Example44_Gantt_Chart.json | 15 + .../Example45_Martian_Lander.json | 54 + .../Example01_simple_message_flow.json | 27 + .../Example01a_unreliable_message_flow.json | 59 + .../Example02_Data_flow.json | 227 ++ .../Example03_ATM_withdrawal.json | 107 + .../Example04_Stack_behavior.json | 36 + .../Example04a_Queue_behavior.json | 36 + .../Example05_Car_Race.json | 243 ++ .../Example06_Assertion_Checking.json | 107 + .../Example07_Unconstrained_Stack.json | 59 + .../Example08_Operational_Process.json | 11 + .../Example09_Employee_Employer.json | 11 + .../Example10_Pipe_Filter.json | 155 ++ .../Example11_Publish_Subscribe.json | 411 +++ .../Example12_network_topology_ring.json | 323 +++ .../Example13_FiniteStateDiagram.json | 243 ++ .../Example15_Petri_net.json | 39 + .../Example16_software_spiral_process.json | 59 + .../Example17_Dining_Philosophers.json | 19 + .../Example18_Workflow_pattern.json | 19 + .../Example19_Consumers_Suppliers.json | 1083 ++++++++ .../Example20_MP_model__reuse.json | 51 + .../Example21_compiler1.json | 1179 +++++++++ .../Example22_compiler2.json | 891 +++++++ .../Example23_number_attributes.json | 395 +++ .../Example24_Bayesian_probability.json | 59 + .../Example25_interval_attributes.json | 43 + .../Example26_timing_attributes.json | 99 + .../Example27_Railroad_Crossing.json | 19 + ...Example28_MP_model_of_MP_architecture.json | 2183 +++++++++++++++ ...Example29_stack1_Bayesian_probability.json | 35 + .../Example30_Local_Report.json | 283 ++ .../Example31_Global_report.json | 61 + .../Example32_Local_graph.json | 363 +++ .../Example34_Graph_as_data_structure.json | 121 + .../Example35_Finite_State_Diagram.json | 367 +++ .../Example36_Statechart.json | 111 + .../Example37_GLOBAL_query.json | 53 + .../Example38_knapsack.json | 37 + .../Example39_turtles.json | 107 + .../Example40_web_browsers.json | 73 + .../Example41_Replay_Attack.json | 51 + .../Example42_Bar_Chart.json | 19 + .../Example43_Histogram.json | 47 + .../Example44_Gantt_Chart.json | 15 + .../Example45_Martian_Lander.json | 275 ++ .../test_mp_given_rc_changes.sh | 13 + RIGAL/rigsc.446/TEST_MP_PRELOADS/welcome.sh | 196 ++ 367 files changed, 57063 insertions(+) create mode 100755 Code/test_rc_on_preloaded_examples.sh rename Firebird_Pre_loaded_examples/{Example14_microwave_oven.mp => Example14_microwave_oven.mp.scope1_only} (100%) rename Firebird_Pre_loaded_examples/{Example33_Component_Diagram.mp => Example33_Component_Diagram.mp.scope1_only} (100%) create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.cpp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.mp create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.temp.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.temp2.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.tree create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.txt create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example01_simple_message_flow.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example01a_unreliable_message_flow.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example02_Data_flow.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example03_ATM_withdrawal.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example04_Stack_behavior.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example04a_Queue_behavior.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example05_Car_Race.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example06_Assertion_Checking.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example07_Unconstrained_Stack.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example08_Operational_Process.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example09_Employee_Employer.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example10_Pipe_Filter.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example11_Publish_Subscribe.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example12_network_topology_ring.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example13_FiniteStateDiagram.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example15_Petri_net.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example16_software_spiral_process.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example17_Dining_Philosophers.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example18_Workflow_pattern.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example19_Consumers_Suppliers.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example20_MP_model__reuse.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example21_compiler1.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example22_compiler2.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example23_number_attributes.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example24_Bayesian_probability.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example25_interval_attributes.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example26_timing_attributes.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example27_Railroad_Crossing.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example28_MP_model_of_MP_architecture.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example29_stack1_Bayesian_probability.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example30_Local_Report.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example31_Global_report.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example32_Local_graph.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example34_Graph_as_data_structure.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example35_Finite_State_Diagram.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example36_Statechart.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example37_GLOBAL_query.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example38_knapsack.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example39_turtles.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example40_web_browsers.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example41_Replay_Attack.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example42_Bar_Chart.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example43_Histogram.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example44_Gantt_Chart.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example45_Martian_Lander.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example01_simple_message_flow.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example01a_unreliable_message_flow.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example02_Data_flow.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example03_ATM_withdrawal.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example04_Stack_behavior.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example04a_Queue_behavior.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example05_Car_Race.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example06_Assertion_Checking.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example07_Unconstrained_Stack.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example08_Operational_Process.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example09_Employee_Employer.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example10_Pipe_Filter.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example11_Publish_Subscribe.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example12_network_topology_ring.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example13_FiniteStateDiagram.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example15_Petri_net.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example16_software_spiral_process.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example17_Dining_Philosophers.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example18_Workflow_pattern.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example19_Consumers_Suppliers.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example20_MP_model__reuse.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example21_compiler1.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example22_compiler2.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example23_number_attributes.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example24_Bayesian_probability.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example25_interval_attributes.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example26_timing_attributes.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example27_Railroad_Crossing.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example28_MP_model_of_MP_architecture.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example29_stack1_Bayesian_probability.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example30_Local_Report.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example31_Global_report.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example32_Local_graph.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example34_Graph_as_data_structure.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example35_Finite_State_Diagram.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example36_Statechart.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example37_GLOBAL_query.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example38_knapsack.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example39_turtles.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example40_web_browsers.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example41_Replay_Attack.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example42_Bar_Chart.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example43_Histogram.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example44_Gantt_Chart.json create mode 100644 RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example45_Martian_Lander.json create mode 100755 RIGAL/rigsc.446/TEST_MP_PRELOADS/test_mp_given_rc_changes.sh create mode 100755 RIGAL/rigsc.446/TEST_MP_PRELOADS/welcome.sh diff --git a/Code/test_rc_on_preloaded_examples.sh b/Code/test_rc_on_preloaded_examples.sh new file mode 100755 index 0000000..364247b --- /dev/null +++ b/Code/test_rc_on_preloaded_examples.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Show the help text +if [[ "$1" == "-h" ]] || [[ -z "$*" ]]; then + echo "Usage: `basename $0 $1` [mp_filepath] [scope]" + exit 0 +fi + +# Setup the /build folder +if [ ! -d "build" ]; then + mkdir build +fi +if [ ! -d "output" ]; then + mkdir output +fi +if [ ! -f build/Include.h ]; then + cp Code/*.rig build/ + cp Code/*.h build/ +fi + +# Copy the mp file into the build folder +cp $1 build/ + +# Switch to build folder and run build scripts +cd build +mp_filename=$(basename $1) +mp_basename="${mp_filename%.*}" +rig='../RIGAL/rigsc.446/bin' + +# 1. Compile parser +$rig/rc MP2-parser +# 2. Run parser to create tree +$rig/ic MP2-parser $mp_basename tree $2 > temp.txt +# 3. Compile generator +$rig/rc MP2-generator +# 4. Run generator to create C++ code +$rig/ic MP2-generator tree > temp2.txt +rm tree *.rsc +echo "C++ compiler: g++ $mp_basename.cpp -o $mp_basename -fast" +#time /Developer/usr/bin/g++ "$mp_basename.cpp" -o $mp_basename -fast +# 5. Compile the C++ code +time g++ "${mp_basename}.cpp" -o $mp_basename -Ofast +echo "$mp_basename run: $mp_basename>$mp_basename.txt" +# 6. Run the compiled C++ program +time ./$mp_basename>"${mp_basename}.txt" +echo "Completed $mp_basename for scope $2" +mv $mp_basename.json ../output/ +rm $mp_basename xd RIGCOMP.TMP diff --git a/Firebird_Pre_loaded_examples/Example14_microwave_oven.mp b/Firebird_Pre_loaded_examples/Example14_microwave_oven.mp.scope1_only similarity index 100% rename from Firebird_Pre_loaded_examples/Example14_microwave_oven.mp rename to Firebird_Pre_loaded_examples/Example14_microwave_oven.mp.scope1_only diff --git a/Firebird_Pre_loaded_examples/Example33_Component_Diagram.mp b/Firebird_Pre_loaded_examples/Example33_Component_Diagram.mp.scope1_only similarity index 100% rename from Firebird_Pre_loaded_examples/Example33_Component_Diagram.mp rename to Firebird_Pre_loaded_examples/Example33_Component_Diagram.mp.scope1_only diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.cpp new file mode 100644 index 0000000..6e04a19 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.cpp @@ -0,0 +1,363 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA simple_message_flow trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_send + , Event_receive + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_15_16 + // ADD operations + // ROOT events + , Event_Sender + , Event_Receiver + // main schema event + , Event_simple_message_flow }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "send" + , "receive" + , "SIMPLE_LIST_15_16" + , "Sender" + , "Receiver" + , "simple_message_flow" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_15_16_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_15_16_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Sender_source = Root_table[Event_Sender]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int Receiver_source = Root_table[Event_Receiver]; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Sender_source ]){ + if( ( (Stack[i]->name == Event_send)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + Receiver_source ]){ + if( ( (Stack[i]->name == Event_receive)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(y_variable,x_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_15_16_ob class + +//---- 2 ---- +class Itr_1_2 : public OR_node_producer_container { +public: // constructor + Itr_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_send); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_1_2 + +//---- 3 ---- +class Itr_5_6 : public OR_node_producer_container { +public: // constructor + Itr_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_receive); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_5_6 + +//---- 4 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Sender){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_1_2 ; + } +};// end class Comp_3_4 + +//---- 5 ---- +class Comp_7_8 : public Composite_producer { +public: // constructor + Comp_7_8 (): Composite_producer(Event_Receiver){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_5_6 ; + } +};// end class Comp_7_8 + +//---- 6 ---- +class SCHEMA_simple_message_flow: public Composite_producer { +public: // constructor + SCHEMA_simple_message_flow(): Composite_producer(Event_simple_message_flow){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_Sender); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Receiver); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_15_16_ob(Event_SIMPLE_LIST_15_16); + } +};// end class SCHEMA_simple_message_flow + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example01_simple_message_flow.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_7; temp_7.harvest(); + Comp_7_8 temp_8; temp_8.harvest(); + // harvesting traces for main schema + SCHEMA_simple_message_flow temp_9; temp_9.harvest(); + temp_9.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"simple_message_flow"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.mp new file mode 100644 index 0000000..0ea964f --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.mp @@ -0,0 +1,24 @@ +/* +Example1_simple_message_flow.mp + +Event grammar rules for each root define derivations for event traces, +in this case a simple sequence of zero or more events for each root. + +The COORDINATE composition takes two root traces and produces +a modified event trace, merging behaviors of Sender and Receiver +and adding the PRECEDES relation for the selected send/receive pairs. +The coordination operation behaves as a "cross-cutting" derivation rule. + +Run for scopes 1 and up. The "Sequence" or "Swim Lanes" layouts are +the most appropriate for browsing traces here. + +*/ + +SCHEMA simple_message_flow + +ROOT Sender: (* send *); +ROOT Receiver: (* receive *); + +COORDINATE $x: send FROM Sender, + $y: receive FROM Receiver + DO ADD $x PRECEDES $y; OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.temp.txt new file mode 100644 index 0000000..083c801 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example01_simple_message_flow tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.tree new file mode 100644 index 0000000000000000000000000000000000000000..b57d54d66da4179d63f01a8b2fb99bd044cb2634 GIT binary patch literal 4096 zcmeHKPi)&%9DYd?CvDl<ZZJw=Fvj>lx@O(Fa)PbNL{Vw0wufpUJvqtCYT?+%cG`6s z91ubr08Q0|xWEB8AcQy$E=Y*u#1U~sJt9sBO%npi=KDR{jbEKkh|>=HS<d(J-uHh0 z{hZVpV|};=fFuF#5MP2E@E%|ucnJ3>V;Wm627QcSsSh9}Jc_mBxToR?0PQ0w;|7-% za0La-zX*Lr;5ncMtO85GdEBeyM^5swg)J>Ctb}zMWhKLFW;ry|$MU!$3E)iFVr;{9 zUnfipTw*~##Ro*}%DzGDTf;nJ3f=TBmFEeo8D0TzA9%pD6reHKkNLN-J_LLZI1JoM zv&jCfVgP#@JFk&F>CXt+p(~Q$0QOzO{)51efK;cCqqRMGpT)c{BA&+9##S)Q#Q6<) z6z6vlFZoR8JAgmokI9OP8so19_mbad-k|zP|L>DMkfS~z34e+({h9bL`RFxpyZm3$ z%xE0OaqJmyl9%m>zb7xr%kMpS_ruql-F`6*&kt{Pd4*`m{7pxM@YvGZBFyJl-EMA% zg&Yg_=VaA-@<wCc7<k8I&v)Y;Pcju70EFAoSjo$D4_+LH#y<F*`d#6l>%ouX(b(JH z2BUGmJ)ri5jBhTEZ(h|=fQ4WT{w=EWUC*PDtm}if(R)GNzoYjxb$+*As;iRU)~-6N zA-`^qIwZWL4p+c?SLFp%|Esy^yx2mV58?YY@IK9<zb|YBhbdou8a?;QbM!EHUxNP# z@Q~`U#+EfYA2R%}_Tpci2#&})=96<Q{2D%>ztR#SP7;~7M`8E6x}N6J7^_`<KR_S) zFfAeSL9(OohPs~S(pY1EoCuD_{qxwa_>RG!pAp~Vz+Y88q+dQSzp3-P^_STv*J&=n z^m!!v^UvP<G24yvCgQ}MmLyOAOW!T%!=08e&QrQCgC`L8Ux@!n;NQTffQ3BHhrDt= zNZx2Z;*9}`cMQDoJk_gvK1?T_(6t=K`P0~qqruZmzRQDWx+tGN)Irg6u7@7@N0QD* z!)`laHOnQQ?2l*R=lS02#37OPQGdn$OW8dk;wH)1e>uw~-hZ{Pod4-_eJ;=BxjrB1 zM<2`QS!4fb(R=vKYH*zVpDxjJtFc;X=e_*gu6S0nK8CU0jQu+5JC3|H^U?WYCHBAf z&Q_~xo}3<fv5!RN^#tXMu1JCj=)Da672rF-lfVxnembw~x{LEItDCfBcw4=B8hgJK zOvZkozmht~uIxZEf4BbleMS9u2i5-+s-$_1HPP0~!t^;k4@IwGJK~^cv>j9Mw(vat zqTnsl-WV_}r{nXMVTwV!<0s>yYumoJPxtM%(cofTSiW~4-mW)%!?vW}BehF9shp_r z9=gZd&f(h<v}L?&g<D<{4PmScx8z2H{g&9^<N^2fx+z9f!?xoMUNr5xZXyEx;>hys zD~oeAJ~z9(!YikFWvbupAWC|V^wXaMPQT=eE#34)c?O3cpX8^a!5Kc?kG!}#1ynYC z8rg1X)^~Y@pB#!NC{~$1Ie(f@4SIIRZHOqbj;R~gAQCBDUbj0|bFkw;V?5SP=(M1I zT?{)eT&^3Y;cv>V12YQ?OV!!=vn#dX8QXT728e=JCVA!5z$K2y*`VMDHg|^QWNyS0 zriiNG=suayBA<$)?f9Gcp-8g*!jQLVHP&3)GA_#yOI6X*JEpIutimfN_qoE96zN(S mXBK~+S0;)r!}WX|p$*$=mJ?2Saj7;_tJaqNyY;{G>i;j)tRIp9 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.txt new file mode 100644 index 0000000..740b652 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.txt @@ -0,0 +1,12 @@ +generating traces for scope 1 +completed Sender: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed Receiver: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed simple_message_flow: 2 traces (0 MARKed) 8 events + average 4 ev/trace min 3 max 5 + +Elapsed time 0.000214 sec, Speed: 65420.6 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.cpp new file mode 100644 index 0000000..04910f6 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.cpp @@ -0,0 +1,379 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA unreliable_message_flow trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_send + , Event_receive + , Event_does_not_receive + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_17_18 + // ADD operations + // ROOT events + , Event_Sender + , Event_Receiver + // main schema event + , Event_unreliable_message_flow }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "send" + , "receive" + , "does_not_receive" + , "SIMPLE_LIST_17_18" + , "Sender" + , "Receiver" + , "unreliable_message_flow" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_17_18_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_17_18_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Sender_source = Root_table[Event_Sender]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int Receiver_source = Root_table[Event_Receiver]; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Sender_source ]){ + if( ( (Stack[i]->name == Event_send)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + Receiver_source ]){ + if( ( (Stack[i]->name == Event_receive)|| (Stack[i]->name == Event_does_not_receive) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(y_variable,x_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_17_18_ob class + +//---- 2 ---- +class Itr_1_2 : public OR_node_producer_container { +public: // constructor + Itr_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_send); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_1_2 + +//---- 3 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_receive); + element[ 1 ]= new Atomic_producer(Event_does_not_receive); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_5_6 + +//---- 4 ---- +class Itr_7_8 : public OR_node_producer_container { +public: // constructor + Itr_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_5_6 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_7_8 + +//---- 5 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Sender){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_1_2 ; + } +};// end class Comp_3_4 + +//---- 6 ---- +class Comp_9_10 : public Composite_producer { +public: // constructor + Comp_9_10 (): Composite_producer(Event_Receiver){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_7_8 ; + } +};// end class Comp_9_10 + +//---- 7 ---- +class SCHEMA_unreliable_message_flow: public Composite_producer { +public: // constructor + SCHEMA_unreliable_message_flow(): Composite_producer(Event_unreliable_message_flow){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_Sender); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Receiver); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_17_18_ob(Event_SIMPLE_LIST_17_18); + } +};// end class SCHEMA_unreliable_message_flow + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example01a_unreliable_message_flow.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_8; temp_8.harvest(); + Comp_9_10 temp_9; temp_9.harvest(); + // harvesting traces for main schema + SCHEMA_unreliable_message_flow temp_10; temp_10.harvest(); + temp_10.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"unreliable_message_flow"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.mp new file mode 100644 index 0000000..d714bd0 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.mp @@ -0,0 +1,16 @@ +/* Example 1a +Unreliable message flow. + +We may want to specify behaviors when some messages get lost in the transition. +It can be done using ‘virtual’ events. + +run for scopes 1 and up. + +*/ +SCHEMA unreliable_message_flow +ROOT Sender: (* send *); +ROOT Receiver: (* (receive | does_not_receive) *); + +COORDINATE $x: send FROM Sender, + $y: (receive | does_not_receive) FROM Receiver + DO ADD $x PRECEDES $y; OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.temp.txt new file mode 100644 index 0000000..f5600be --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example01a_unreliable_message_flow tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.tree new file mode 100644 index 0000000000000000000000000000000000000000..286891f655094aa3574852e869b3fa7a9ed370af GIT binary patch literal 4096 zcmeHKPiz!b7=Qbx(`{>^MFm9sR{>EGx}}urMWNe66KtEd2ZO|y>F!%Padu{znQf^- z4w@J)CWIJc3>t%m5Dy-V@lT?J=s`m~5)K|nkA`^gKs?U)``*0So!8xh@!-jCGW)%G z^LyW)-}k+lS(h=E!_f;(65@<-5oVz8gU&*4#krj^gYC_QImU1+2PGvM!o7Vs$J7KA zts^Pm1eWD-gn7)r1bbc3N1+Yq5_C88G|pEjj*P@(37ealS%?;C)GlqfN;`&Tax9A@ zmJq>2RmN6a?{(5?K}am@q5PncySA<m>y|K&oFXs1ig0wq;tQt|odK>NIMSP9O?UG^ zg`07G7V`tp=b#6nFQ~;z8EhpN!k@u@&XGSE&lcTJct6&?hxHFYzYk4y`XDxtjz_~? zQn=4zoWYiMEMVA{=NG_Hp5Ll~luGj*BA)0+{eE&~F#c-zAjN(76xC10kKRFu8R`R) z=+{`Mf0Otne%m_y%``F|M=FmE^G$eJi}4%c5?*e1z@guxJFR}PEkB6<YT@$nkOixC z5g|jztcfU_VT*2MHOgmLv?(LIqa$v+!tDTVm+bi#Kl>A=lmn<}Egow;j(5PRJPh{k zr_}En{%8lh%Ew@DeG@*U`fZ2a7c#$ND!*ynMjjr*hY{bbKHrKw9?81yjQd#Q<G8YW zLh<n$_*lwdzbL!j-R)9cHG5~))!{7co$FAC1ees|0&o{~TuAl5oQa<oR}jx5xc(ft zuQKTG;}^n5iLbYFwC}Zj^cZkgfqxu&tImYM?pzL^P&^OG`ed^T5?zDs>w3Ns_#lyd zJPCU@^!sXQQ?<o$Yoj>M4^tel*7Cmw|LEJaMBtC4>HoHVKaHiaX73K{g*rY0&m>KI zg(Q19-S%U!KM#bv6kogbz6|$(k1bgiJ_Wr~w?p>jKHQ_vuXj*jAAL=8Y2LJcAJ*4z zh#S#y8V{pc7U4`wQpcA6)_YI-AJg&4TFve_?BYyIr0SD?Uf<1L+x}U<A76lvQdY0) zH0E%oB~o=v+Y9%iF0-i5)6jF!&p@BR+G<vNE=pWo;XH*q1Kc~(Z|k{uUiV4<BUN96 z-OSN@*I;Wodhg;D&cbKu`ub3~uXU~Qcdf&IL%t-<{=CP2Yx#jc^ds!I;{C8gyx@T( zU7xaBt49~xv4oRxJcm3#?tGsxB=Y%+eW2y{2{^o@uZzGhNt^%Abesg?=b!r5-mmHR z=H)Dt@69W*eS@9K)AJJVn|%D8^JXdBPw{`3kL&kSp6X|?-}24xp9AZ7{jxpQNZD_T z<9qbeF!;Ngji2McBys%UA1RgedR^~e7wbqQzeVDWj#$DG*u4S!2cd64k3#<*<J0^u zn;wg9x7#KwZMZ)=;|$i{6&_M?pwE(et5BNP|EB(9Fk<-SB~ddA!VWmqtIIFDb+N7C zc*3^KMO*Ni@O|^7;8ojQ>9w4CBj8ob7JY6bNXA{B>jr+m8Mrm8%*C>B0)LBd)#_Mo zmIKRmr0w04r%jq0E}DD;2m5RFp?jl@d32KS3Ui_?tYzVKd+}hP;tHQTZot*VCP%Dr z3XTVq%b*^UTlf1;+U}xhBRTWr;QZ9fv&Sa+v8nk5UOdc;<2_yj8PH?2hyFWo`q1mD znzk<r6WF`_ARq0KgXej1xCgv>CM8?20vfqq_f+8VA|KftPY@51UO9i5kN5d*!z+uJ z__}RcP9I1X9$$1DPNlC=heb6uZP;{Repz%ML9Gt)v4OgW*cUC^3Rb0w-ieu+xzg11 zk%h^D3D@;178VFzJj9D*y{9?aQC75fwK*&#bA!IHMO>-68IUU@jt!rZBx^5riCR5a z-R!SA<t5K`tT$w;-6c^q8+M>`caRrH`_VuWB17xJp5w(LFOGCoEzb`OUzA;^Qb<6B S*}2Jy$<pNf|Mmax>i;*3mMSm+ literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.txt new file mode 100644 index 0000000..9d013b6 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.txt @@ -0,0 +1,12 @@ +generating traces for scope 1 +completed Sender: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed Receiver: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed unreliable_message_flow: 3 traces (0 MARKed) 13 events + average 4.33333 ev/trace min 3 max 5 + +Elapsed time 0.000279 sec, Speed: 75268.8 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.cpp new file mode 100644 index 0000000..6c74935 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.cpp @@ -0,0 +1,484 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Data_flow trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_working + , Event_writing + , Event_reading + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_17_18 + , Event_SIMPLE_LIST_27_28 + // ADD operations + // ROOT events + , Event_Writer + , Event_File + , Event_Reader + // main schema event + , Event_Data_flow }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "working" + , "writing" + , "reading" + , "SIMPLE_LIST_17_18" + , "SIMPLE_LIST_27_28" + , "Writer" + , "File" + , "Reader" + , "Data_flow" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_17_18_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_17_18_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Writer_source = Root_table[Event_Writer]; + // lists of shared events for Writer + vector<int> Writer_writing_list; + + int File_source = Root_table[Event_File]; + // lists of shared events for File + vector<int> File_writing_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Writer_source ]){ + if( Stack[i]->name == Event_writing ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Writer_writing_list.begin(); + s != Writer_writing_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Writer_writing_list.push_back(i); + } + }; + if(in_matrix[i * len + File_source ]){ + if( Stack[i]->name == Event_writing ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = File_writing_list.begin(); + s != File_writing_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) File_writing_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = File_writing_list.size(); + if(Writer_writing_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = File_writing_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Writer_writing_list[i], File_writing_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_17_18_ob class + +//---- 2 ---- +class SIMPLE_LIST_27_28_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_27_28_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Reader_source = Root_table[Event_Reader]; + // lists of shared events for Reader + vector<int> Reader_reading_list; + + int File_source = Root_table[Event_File]; + // lists of shared events for File + vector<int> File_reading_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Reader_source ]){ + if( Stack[i]->name == Event_reading ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Reader_reading_list.begin(); + s != Reader_reading_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Reader_reading_list.push_back(i); + } + }; + if(in_matrix[i * len + File_source ]){ + if( Stack[i]->name == Event_reading ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = File_reading_list.begin(); + s != File_reading_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) File_reading_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = File_reading_list.size(); + if(Reader_reading_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = File_reading_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Reader_reading_list[i], File_reading_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_27_28_ob class + +//---- 3 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_working); + element[ 1 ]= new Atomic_producer(Event_writing); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 4 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_3_4 + +//---- 5 ---- +class Itr_9_10 : public OR_node_producer_container { +public: // constructor + Itr_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_reading); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_9_10 + +//---- 6 ---- +class Sq_11_12 : public AND_node_producer_container { +public: // constructor + Sq_11_12 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_writing); + element[ 1 ]= new Itr_9_10 ; + } +};// end class Sq_11_12 + +//---- 7 ---- +class Alt_19_20 : public OR_node_producer_container { +public: // constructor + Alt_19_20 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_reading); + element[ 1 ]= new Atomic_producer(Event_working); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_19_20 + +//---- 8 ---- +class Itr_21_22 : public OR_node_producer_container { +public: // constructor + Itr_21_22 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_19_20 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_21_22 + +//---- 9 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_Writer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_3_4 ; + } +};// end class Comp_5_6 + +//---- 10 ---- +class Comp_13_14 : public Composite_producer { +public: // constructor + Comp_13_14 (): Composite_producer(Event_File){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_11_12 ; + } +};// end class Comp_13_14 + +//---- 11 ---- +class Comp_23_24 : public Composite_producer { +public: // constructor + Comp_23_24 (): Composite_producer(Event_Reader){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_21_22 ; + } +};// end class Comp_23_24 + +//---- 12 ---- +class SCHEMA_Data_flow: public Composite_producer { +public: // constructor + SCHEMA_Data_flow(): Composite_producer(Event_Data_flow){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 5 ]; + element[0]= new Composite_secondary_producer(Event_Writer); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_File); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_17_18_ob(Event_SIMPLE_LIST_17_18); + element[3]= new Composite_secondary_producer(Event_Reader); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_27_28_ob(Event_SIMPLE_LIST_27_28); + } +};// end class SCHEMA_Data_flow + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example02_Data_flow.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_5_6 temp_13; temp_13.harvest(); + Comp_13_14 temp_14; temp_14.harvest(); + Comp_23_24 temp_15; temp_15.harvest(); + // harvesting traces for main schema + SCHEMA_Data_flow temp_16; temp_16.harvest(); + temp_16.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Data_flow"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.mp new file mode 100644 index 0000000..811e1de --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.mp @@ -0,0 +1,39 @@ +/* Example2_DataAsEvents.mp + data items as behaviors + +MP employs the Abstract Data Type (ADT) principle introduced by +Barbara Liskov to represent data items as operations +being performed on those items. + +In this model all writing in the File should be accomplished before reading. +File should not be empty. These constraints on behavior are +captured by File root event grammar rule. + +On the other hand, Writer’s behavior allows scenarios that skip writing at all. +Such behaviors are not compatible with File behavior patterns. + +The SHARE ALL composition ensures that the schema admits +only event traces where corresponding event sharing is implemented. + +Event traces specified by the schema represent system’s emergent behavior, +where behaviors of subsystems are influenced by the coordination. +This is a toy example of System_of_Systems emerging behavior modeling. + +Run for scopes 1 and up. The "Sequence" or "Swim Lanes" layouts are +the most appropriate for browsing traces here. + +*/ + +SCHEMA Data_flow + +ROOT Writer: (* ( working | writing ) *); + +/* writing events should precede reading */ +ROOT File: (+ writing +) (* reading *); + +Writer, File SHARE ALL writing; + + +ROOT Reader: (* ( reading | working ) *); + +Reader, File SHARE ALL reading; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.temp.txt new file mode 100644 index 0000000..68e1a4e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example02_Data_flow tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.tree new file mode 100644 index 0000000000000000000000000000000000000000..38de7fa37d08844eb156918cdbc42e20a7498485 GIT binary patch literal 5632 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.txt new file mode 100644 index 0000000..1f43944 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.txt @@ -0,0 +1,15 @@ +generating traces for scope 1 +completed Writer: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed File: 2 traces (0 MARKed) 5 events + average 2.5 ev/trace min 2 max 3 + +completed Reader: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed Data_flow: 3 traces (0 MARKed) 21 events + average 7 ev/trace min 6 max 8 + +Elapsed time 0.000411 sec, Speed: 87591.2 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.cpp new file mode 100644 index 0000000..c804b6b --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.cpp @@ -0,0 +1,1032 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA ATM_withdrawal trace generator for scope 3 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_insert_card + , Event_identification_succeeds + , Event_request_withdrawal + , Event_get_money + , Event_not_sufficient_funds + , Event_identification_fails + , Event_read_card + , Event_validate_id + , Event_id_successful + , Event_check_balance + , Event_sufficient_balance + , Event_dispense_money + , Event_unsufficient_balance + , Event_id_failed + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_73_74 + // ADD operations + // ROOT events + , Event_Customer + , Event_ATM_system + , Event_Data_Base + // main schema event + , Event_ATM_withdrawal }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "insert_card" + , "identification_succeeds" + , "request_withdrawal" + , "get_money" + , "not_sufficient_funds" + , "identification_fails" + , "read_card" + , "validate_id" + , "id_successful" + , "check_balance" + , "sufficient_balance" + , "dispense_money" + , "unsufficient_balance" + , "id_failed" + , "SIMPLE_LIST_73_74" + , "Customer" + , "ATM_system" + , "Data_Base" + , "ATM_withdrawal" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_73_74_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_73_74_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Data_Base_source = Root_table[Event_Data_Base]; + // lists of shared events for Data_Base + vector<int> Data_Base_validate_id_list; + vector<int> Data_Base_check_balance_list; + + int ATM_system_source = Root_table[Event_ATM_system]; + // lists of shared events for ATM_system + vector<int> ATM_system_validate_id_list; + vector<int> ATM_system_check_balance_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Data_Base_source ]){ + if( Stack[i]->name == Event_validate_id ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Data_Base_validate_id_list.begin(); + s != Data_Base_validate_id_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Data_Base_validate_id_list.push_back(i); + } + if( Stack[i]->name == Event_check_balance ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Data_Base_check_balance_list.begin(); + s != Data_Base_check_balance_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Data_Base_check_balance_list.push_back(i); + } + }; + if(in_matrix[i * len + ATM_system_source ]){ + if( Stack[i]->name == Event_validate_id ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = ATM_system_validate_id_list.begin(); + s != ATM_system_validate_id_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) ATM_system_validate_id_list.push_back(i); + } + if( Stack[i]->name == Event_check_balance ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = ATM_system_check_balance_list.begin(); + s != ATM_system_check_balance_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) ATM_system_check_balance_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = ATM_system_validate_id_list.size(); + if(Data_Base_validate_id_list.size() != len_to_compare) throw failed ; + len_to_compare = ATM_system_check_balance_list.size(); + if(Data_Base_check_balance_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = ATM_system_validate_id_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Data_Base_validate_id_list[i], ATM_system_validate_id_list[i]); + } + len_to_compare = ATM_system_check_balance_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Data_Base_check_balance_list[i], ATM_system_check_balance_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_insert_card)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_read_card)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(y_variable,x_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_request_withdrawal)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_check_balance)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(y_variable,x_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_identification_succeeds)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_id_successful)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(x_variable,y_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_get_money)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_dispense_money)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(x_variable,y_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_not_sufficient_funds)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_unsufficient_balance)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(x_variable,y_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_identification_fails)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_id_failed)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(x_variable,y_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_73_74_ob class + +//---- 2 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_get_money); + element[ 1 ]= new Atomic_producer(Event_not_sufficient_funds); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 3 ---- +class Sq_3_4 : public AND_node_producer_container { +public: // constructor + Sq_3_4 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_identification_succeeds); + element[ 1 ]= new Atomic_producer(Event_request_withdrawal); + element[ 2 ]= new Alt_1_2 ; + } +};// end class Sq_3_4 + +//---- 4 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_3_4 ; + element[ 1 ]= new Atomic_producer(Event_identification_fails); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_5_6 + +//---- 5 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_insert_card); + element[ 1 ]= new Alt_5_6 ; + } +};// end class Sq_7_8 + +//---- 6 ---- +class Ct_75_76 : public AND_node_producer_container { +public: // constructor + Ct_75_76 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_7_8 ; + element[ 1 ]= new Sq_7_8 ; + } +};// end class Ct_75_76 + +//---- 7 ---- +class Ct_77_78 : public AND_node_producer_container { +public: // constructor + Ct_77_78 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_7_8 ; + element[ 1 ]= new Sq_7_8 ; + element[ 2 ]= new Sq_7_8 ; + } +};// end class Ct_77_78 + +//---- 8 ---- +class Itr_9_10 : public OR_node_producer_container { +public: // constructor + Itr_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_7_8 ; + element[ 2 ]= new Ct_75_76 ; + element[ 3 ]= new Ct_77_78 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_9_10 + +//---- 9 ---- +class Sq_13_14 : public AND_node_producer_container { +public: // constructor + Sq_13_14 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_sufficient_balance); + element[ 1 ]= new Atomic_producer(Event_dispense_money); + } +};// end class Sq_13_14 + +//---- 10 ---- +class Alt_15_16 : public OR_node_producer_container { +public: // constructor + Alt_15_16 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_13_14 ; + element[ 1 ]= new Atomic_producer(Event_unsufficient_balance); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_15_16 + +//---- 11 ---- +class Sq_17_18 : public AND_node_producer_container { +public: // constructor + Sq_17_18 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_id_successful); + element[ 1 ]= new Atomic_producer(Event_check_balance); + element[ 2 ]= new Alt_15_16 ; + } +};// end class Sq_17_18 + +//---- 12 ---- +class Alt_19_20 : public OR_node_producer_container { +public: // constructor + Alt_19_20 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_17_18 ; + element[ 1 ]= new Atomic_producer(Event_id_failed); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_19_20 + +//---- 13 ---- +class Sq_21_22 : public AND_node_producer_container { +public: // constructor + Sq_21_22 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_read_card); + element[ 1 ]= new Atomic_producer(Event_validate_id); + element[ 2 ]= new Alt_19_20 ; + } +};// end class Sq_21_22 + +//---- 14 ---- +class Ct_79_80 : public AND_node_producer_container { +public: // constructor + Ct_79_80 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_21_22 ; + element[ 1 ]= new Sq_21_22 ; + } +};// end class Ct_79_80 + +//---- 15 ---- +class Ct_81_82 : public AND_node_producer_container { +public: // constructor + Ct_81_82 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_21_22 ; + element[ 1 ]= new Sq_21_22 ; + element[ 2 ]= new Sq_21_22 ; + } +};// end class Ct_81_82 + +//---- 16 ---- +class Itr_23_24 : public OR_node_producer_container { +public: // constructor + Itr_23_24 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_21_22 ; + element[ 2 ]= new Ct_79_80 ; + element[ 3 ]= new Ct_81_82 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_23_24 + +//---- 17 ---- +class Opt_27_28 : public OR_node_producer_container { +public: // constructor + Opt_27_28 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_check_balance); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_27_28 + +//---- 18 ---- +class Sq_29_30 : public AND_node_producer_container { +public: // constructor + Sq_29_30 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_validate_id); + element[ 1 ]= new Opt_27_28 ; + } +};// end class Sq_29_30 + +//---- 19 ---- +class Ct_83_84 : public AND_node_producer_container { +public: // constructor + Ct_83_84 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_29_30 ; + element[ 1 ]= new Sq_29_30 ; + } +};// end class Ct_83_84 + +//---- 20 ---- +class Ct_85_86 : public AND_node_producer_container { +public: // constructor + Ct_85_86 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_29_30 ; + element[ 1 ]= new Sq_29_30 ; + element[ 2 ]= new Sq_29_30 ; + } +};// end class Ct_85_86 + +//---- 21 ---- +class Itr_31_32 : public OR_node_producer_container { +public: // constructor + Itr_31_32 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_29_30 ; + element[ 2 ]= new Ct_83_84 ; + element[ 3 ]= new Ct_85_86 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_31_32 + +//---- 22 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_Customer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_9_10 ; + } +};// end class Comp_11_12 + +//---- 23 ---- +class Comp_25_26 : public Composite_producer { +public: // constructor + Comp_25_26 (): Composite_producer(Event_ATM_system){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_23_24 ; + } +};// end class Comp_25_26 + +//---- 24 ---- +class Comp_33_34 : public Composite_producer { +public: // constructor + Comp_33_34 (): Composite_producer(Event_Data_Base){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_31_32 ; + } +};// end class Comp_33_34 + +//---- 25 ---- +class SCHEMA_ATM_withdrawal: public Composite_producer { +public: // constructor + SCHEMA_ATM_withdrawal(): Composite_producer(Event_ATM_withdrawal){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 4 ]; + element[0]= new Composite_secondary_producer(Event_Customer); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_ATM_system); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new Composite_secondary_producer(Event_Data_Base); + // for Root_table update in Composite_secondary_producer::traverse() + element[2] -> type = ROOT_node; + element[3]= new SIMPLE_LIST_73_74_ob(Event_SIMPLE_LIST_73_74); + } +};// end class SCHEMA_ATM_withdrawal + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example03_ATM_withdrawal.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 3 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_11_12 temp_26; temp_26.harvest(); + Comp_25_26 temp_27; temp_27.harvest(); + Comp_33_34 temp_28; temp_28.harvest(); + // harvesting traces for main schema + SCHEMA_ATM_withdrawal temp_29; temp_29.harvest(); + temp_29.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"ATM_withdrawal"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.mp new file mode 100644 index 0000000..0c33381 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.mp @@ -0,0 +1,83 @@ +/* Example3_ATM_withdrawal.mp + Integrated system and environment behaviors + +MP separates models of component behaviors and component interactions +to permit elaboration on behaviors of multiple interacting actors. + +"Withdraw money from ATM" is a popular example in software architecture literature. +This example demonstrates how behavior of both the system and its environment can be +integrated into a single MP model. + +Separate behavior models account for alternative behaviors of not only the ATM System +under design, but also those of external components Customer and Database. +A separate specification of interactions captures the sharing and precedence dependencies +among events in different components. + +The event traces produced from a model partitioned using this separation of concerns +include all combinations of event selections allowed by the model. + +Run for scopes 1 and up. + +The "Sequence" or "Swim Lanes" layouts are the most appropriate for browsing traces here. +The "Sequence" mode yields views very similar to the UML or SysML Sequence Diagrams. + +By selecting a representative enough trace (containing all events and interactions of interest, +like traces 2 or 3 for scope 1), and then collapsing root event, it becomes possible +to view a traditional "box-and-arrow" architecture diagram, i.e. to visualize an architecture view. + +*/ + +SCHEMA ATM_withdrawal + +ROOT Customer: (* insert_card + ( identification_succeeds + request_withdrawal + (get_money | not_sufficient_funds) | + + identification_fails ) + *); + +ROOT ATM_system: (* read_card + validate_id + ( id_successful + check_balance + ( sufficient_balance + dispense_money | + + unsufficient_balance ) | + + id_failed ) + *); + +/* behavior of the Data_Base follows interaction pattern with it in ATM_system, + this makes it easier to coordinate these behaviors with SHARE ALL */ +ROOT Data_Base: (* validate_id [ check_balance ] *); + +/* interactions */ +Data_Base, ATM_system SHARE ALL validate_id, check_balance; + +COORDINATE $x: insert_card FROM Customer, + $y: read_card FROM ATM_system + DO ADD $x PRECEDES $y; OD; + +COORDINATE $x: request_withdrawal FROM Customer, + $y: check_balance FROM ATM_system + DO ADD $x PRECEDES $y; OD; + +COORDINATE $x: identification_succeeds FROM Customer, + $y: id_successful FROM ATM_system + DO ADD $y PRECEDES $x; OD; + +COORDINATE $x: get_money FROM Customer, + $y: dispense_money FROM ATM_system + DO ADD $y PRECEDES $x; OD; + +COORDINATE $x: not_sufficient_funds FROM Customer, + $y: unsufficient_balance FROM ATM_system + DO ADD $y PRECEDES $x; OD; + +COORDINATE $x: identification_fails FROM Customer, + $y: id_failed FROM ATM_system + DO ADD $y PRECEDES $x; OD; + + \ No newline at end of file diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.temp.txt new file mode 100644 index 0000000..deeedff --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example03_ATM_withdrawal tree 3 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.tree new file mode 100644 index 0000000000000000000000000000000000000000..d48bc94fcf9ef4e7e515cfbbc295e017b29e8f58 GIT binary patch literal 13312 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.txt new file mode 100644 index 0000000..09b6437 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.txt @@ -0,0 +1,15 @@ +generating traces for scope 3 +completed Customer: 40 traces (0 MARKed) 380 events + average 9.5 ev/trace min 1 max 13 + +completed ATM_system: 40 traces (0 MARKed) 516 events + average 12.9 ev/trace min 1 max 19 + +completed Data_Base: 15 traces (0 MARKed) 66 events + average 4.4 ev/trace min 1 max 7 + +completed ATM_withdrawal: 40 traces (0 MARKed) 1146 events + average 28.65 ev/trace min 4 max 40 + +Elapsed time 10.8311 sec, Speed: 194.625 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.cpp new file mode 100644 index 0000000..28c74d4 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.cpp @@ -0,0 +1,562 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Stack_behavior trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals + pair_list Paired_with_UDR_set; +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + Paired_with_UDR_set.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!Paired_with_UDR_set.empty()) + UDRs.insert(pair<string, pair_list>("Paired_with",Paired_with_UDR_set)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + + if(p1->first == "Paired_with"){ + for(p = (p1->second).begin(); p != (p1->second).end(); p++) + Paired_with_UDR_set.insert(pair<int, int>(p->first + base, p->second + base));} + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Paired_with_UDR_set + temp_list.clear(); + for(p = Paired_with_UDR_set.begin(); p != Paired_with_UDR_set.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Paired_with_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // merging from Paired_with_UDR_set + // doing all adjustments to both a and b + temp_list.clear(); + for(p = Paired_with_UDR_set.begin(); p != Paired_with_UDR_set.end(); p++) { + if(p->second == b) + temp_list.insert(pair<int, int>(p->first, a)); + if(p->first == b) + temp_list.insert(pair<int, int>(a, p->second)); + if(p->second == a) + temp_list.insert(pair<int, int>(p->first, b)); + if(p->first == a) + temp_list.insert(pair<int, int>(b, p->second)); + }; + Paired_with_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_push + , Event_pop + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_37_38 + // ADD operations + // ROOT events + , Event_Stack + // main schema event + , Event_Stack_behavior }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "push" + , "pop" + , "SIMPLE_LIST_37_38" + , "Stack" + , "Stack_behavior" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Event_comparison_expr_13_14 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 BEFORE temp2 + return (bool)( (current_host ->follows_matrix)[temp2 * len + temp1]); + } + +//---- 2 ---- +int special_function_5(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_pop){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_6(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_push){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +bool Quantified_expr_7_8(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int x_variable; + int pivot_x_variable = Root_table[Event_Stack]; + + // loop 1 for x_variable + for( x_variable = 0; x_variable < len; x_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ x_variable * len + pivot_x_variable +]) && + ( + (Stack[x_variable]-> name == Event_pop) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_5(current_host, x_variable ) < special_function_6(current_host, +x_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 5 ---- +bool Quantified_expr_19_20(Coordinate * current_host, int get_variable, int put_variable, int g_variable +){ + //===================================== + // quantifier EXISTS with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int p_variable; + int pivot_p_variable = 0; + + // loop 1 for p_variable + for( p_variable = 0; p_variable < len; p_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ p_variable * len + pivot_p_variable +]) && + ( + (Stack[p_variable]-> name == Event_push) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for EXISTS + if( + find_pair_in_table( p_variable , get_variable , Paired_with_UDR_set)) + {result = true; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 6 ---- +bool Quantified_expr_21_22(Coordinate * current_host, int get_variable, int put_variable +){ + //===================================== + // quantifier EXISTS with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int g_variable; + int pivot_g_variable = 0; + + // loop 1 for g_variable + for( g_variable = 0; g_variable < len; g_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ g_variable * len + pivot_g_variable +]) && + ( + (Stack[g_variable]-> name == Event_pop) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for EXISTS + if( ( + find_pair_in_table( put_variable , g_variable , Paired_with_UDR_set)|| Quantified_expr_19_20(current_host, get_variable, put_variable, g_variable +) )) + {result = true; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 7 ---- +class SIMPLE_LIST_37_38_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_37_38_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_7_8(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + { // COORDINATE operation + int thread_length = -1; + int get_variable; // thread variable + vector<int> get_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for get_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + get_variable = i; + if( get_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_pop)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = get_variable_list.begin(); s != get_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) get_variable_list.push_back(i); + } + } }; + // no processing needed for the default source get_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = get_variable_list.size(); + if(thread_length != get_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + get_variable= get_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int put_variable; // thread variable + vector<int> put_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for put_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + put_variable = i; + if( put_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_push)) && Event_comparison_expr_13_14 +(current_host, put_variable , get_variable ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = put_variable_list.begin(); s != put_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) put_variable_list.push_back(i); + } + } }; + + // do the REVERSE reshuffling + reverse(put_variable_list.begin(), put_variable_list.end()); + // finally check the thread length + if(thread_length < 0) thread_length = put_variable_list.size(); + if(thread_length != put_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + put_variable= put_variable_list[i]; + if( ! Quantified_expr_21_22(current_host, get_variable, put_variable) ){ + // ADD operation + Paired_with_UDR_set.insert(pair<int, int>(put_variable,get_variable)); + }// end THEN + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_37_38_ob class + +//---- 8 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_push); + element[ 1 ]= new Atomic_producer(Event_pop); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 9 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_3_4 + +//---- 10 ---- +class Comp_39_40 : public Composite_producer { +public: // constructor + Comp_39_40 (): Composite_producer(Event_Stack){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_3_4 ; + element[ 1 ]= new SIMPLE_LIST_37_38_ob(Event_SIMPLE_LIST_37_38); + } +};// end class Comp_39_40 + +//---- 11 ---- +class SCHEMA_Stack_behavior: public Composite_producer { +public: // constructor + SCHEMA_Stack_behavior(): Composite_producer(Event_Stack_behavior){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 1 ]; + element[0]= new Composite_secondary_producer(Event_Stack); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + } +};// end class SCHEMA_Stack_behavior + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example04_Stack_behavior.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_39_40 temp_12; temp_12.harvest(); + // harvesting traces for main schema + SCHEMA_Stack_behavior temp_13; temp_13.harvest(); + temp_13.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Stack_behavior"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.mp new file mode 100644 index 0000000..0c66007 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.mp @@ -0,0 +1,53 @@ +/* Example4_Stack_behavior.mp + +The event trace is a set of events and the Boolean expression constructs in MP +can support the traditional first order predicate calculus notation. + +A set of behaviors (event traces) may be defined by the event +grammar rules, composition operations, and some additional constraints – +ENSURE conditions. + +run for scopes 1, 2, 3, and up. +*/ + +/* This rule specifies the behavior of a stack in terms of stack operations +push and pop. It is assumed that initially Stack is empty. +The BUILD block associated with a root or composite event +contains composition operations performed when event trace segment +representing the behavior of that root or composite is generated. + +The ENSURE Boolean expression provides a condition that each valid trace +should satisfy. The domain of the universal quantifier is the set of all +pop events inside Stack trace. The FROM Stack part is optional, by default it is +assumed to be FROM THIS. + +The function #pop BEFORE $x yields the number of pop events preceding $x. +The set of valid event traces specified by this schema contains only traces +that satisfy the constraint. This example presents a filtering operation +as yet another kind of behavior composition, and demonstrates an +example of combining imperative (event grammar) and declarative +(Boolean expressions) constructs for behavior specification. +*/ + +SCHEMA Stack_behavior + +ROOT Stack: (* ( push | pop ) *) + BUILD { + /* if an element is retrieved, it should have been stored before */ + ENSURE FOREACH $x: pop FROM Stack + ( #pop BEFORE $x < #push BEFORE $x ); + + /* The following composition operation establishes push/pop pairs + in the Stack behavior. For each 'pop' the closest in time + preceding 'push' is selected, unless it has been already + consumed by another 'pop' */ + + COORDINATE $get: pop + DO COORDINATE <REVERSE> $put: push + SUCH THAT $put BEFORE $get + DO IF NOT ( EXISTS $g: pop $put Paired_with $g OR + EXISTS $p: push $p Paired_with $get ) + THEN ADD $put Paired_with $get; FI; + OD; + OD; + };/* end BUILD for Stack */ diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.temp.txt new file mode 100644 index 0000000..1d207ad --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example04_Stack_behavior tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.tree new file mode 100644 index 0000000000000000000000000000000000000000..69bbe27c546b73efb76a34f7bd3b1746d6bc3559 GIT binary patch literal 7168 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.txt new file mode 100644 index 0000000..c862069 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.txt @@ -0,0 +1,9 @@ +generating traces for scope 1 +completed Stack: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed Stack_behavior: 2 traces (0 MARKed) 5 events + average 2.5 ev/trace min 2 max 3 + +Elapsed time 0.00019 sec, Speed: 42105.3 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.cpp new file mode 100644 index 0000000..26ba498 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.cpp @@ -0,0 +1,560 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Queue_behavior trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals + pair_list Paired_with_UDR_set; +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + Paired_with_UDR_set.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!Paired_with_UDR_set.empty()) + UDRs.insert(pair<string, pair_list>("Paired_with",Paired_with_UDR_set)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + + if(p1->first == "Paired_with"){ + for(p = (p1->second).begin(); p != (p1->second).end(); p++) + Paired_with_UDR_set.insert(pair<int, int>(p->first + base, p->second + base));} + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Paired_with_UDR_set + temp_list.clear(); + for(p = Paired_with_UDR_set.begin(); p != Paired_with_UDR_set.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Paired_with_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // merging from Paired_with_UDR_set + // doing all adjustments to both a and b + temp_list.clear(); + for(p = Paired_with_UDR_set.begin(); p != Paired_with_UDR_set.end(); p++) { + if(p->second == b) + temp_list.insert(pair<int, int>(p->first, a)); + if(p->first == b) + temp_list.insert(pair<int, int>(a, p->second)); + if(p->second == a) + temp_list.insert(pair<int, int>(p->first, b)); + if(p->first == a) + temp_list.insert(pair<int, int>(b, p->second)); + }; + Paired_with_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_enqueue + , Event_dequeue + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_37_38 + // ADD operations + // ROOT events + , Event_Queue + // main schema event + , Event_Queue_behavior }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "enqueue" + , "dequeue" + , "SIMPLE_LIST_37_38" + , "Queue" + , "Queue_behavior" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Event_comparison_expr_13_14 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 BEFORE temp2 + return (bool)( (current_host ->follows_matrix)[temp2 * len + temp1]); + } + +//---- 2 ---- +int special_function_5(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_dequeue){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_6(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_enqueue){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +bool Quantified_expr_7_8(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int x_variable; + int pivot_x_variable = 0; + + // loop 1 for x_variable + for( x_variable = 0; x_variable < len; x_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ x_variable * len + pivot_x_variable +]) && + ( + (Stack[x_variable]-> name == Event_dequeue) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_5(current_host, x_variable ) < special_function_6(current_host, +x_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 5 ---- +bool Quantified_expr_19_20(Coordinate * current_host, int get_variable, int put_variable, int g_variable +){ + //===================================== + // quantifier EXISTS with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int p_variable; + int pivot_p_variable = 0; + + // loop 1 for p_variable + for( p_variable = 0; p_variable < len; p_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ p_variable * len + pivot_p_variable +]) && + ( + (Stack[p_variable]-> name == Event_enqueue) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for EXISTS + if( + find_pair_in_table( p_variable , get_variable , Paired_with_UDR_set)) + {result = true; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 6 ---- +bool Quantified_expr_21_22(Coordinate * current_host, int get_variable, int put_variable +){ + //===================================== + // quantifier EXISTS with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int g_variable; + int pivot_g_variable = 0; + + // loop 1 for g_variable + for( g_variable = 0; g_variable < len; g_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ g_variable * len + pivot_g_variable +]) && + ( + (Stack[g_variable]-> name == Event_dequeue) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for EXISTS + if( ( + find_pair_in_table( put_variable , g_variable , Paired_with_UDR_set)|| Quantified_expr_19_20(current_host, get_variable, put_variable, g_variable +) )) + {result = true; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 7 ---- +class SIMPLE_LIST_37_38_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_37_38_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_7_8(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + { // COORDINATE operation + int thread_length = -1; + int get_variable; // thread variable + vector<int> get_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for get_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + get_variable = i; + if( get_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_dequeue)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = get_variable_list.begin(); s != get_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) get_variable_list.push_back(i); + } + } }; + // no processing needed for the default source get_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = get_variable_list.size(); + if(thread_length != get_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + get_variable= get_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int put_variable; // thread variable + vector<int> put_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for put_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + put_variable = i; + if( put_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_enqueue)) && Event_comparison_expr_13_14 +(current_host, put_variable , get_variable ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = put_variable_list.begin(); s != put_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) put_variable_list.push_back(i); + } + } }; + // no processing needed for the default source put_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = put_variable_list.size(); + if(thread_length != put_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + put_variable= put_variable_list[i]; + if( ! Quantified_expr_21_22(current_host, get_variable, put_variable) ){ + // ADD operation + Paired_with_UDR_set.insert(pair<int, int>(put_variable,get_variable)); + }// end THEN + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_37_38_ob class + +//---- 8 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_enqueue); + element[ 1 ]= new Atomic_producer(Event_dequeue); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 9 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_3_4 + +//---- 10 ---- +class Comp_39_40 : public Composite_producer { +public: // constructor + Comp_39_40 (): Composite_producer(Event_Queue){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_3_4 ; + element[ 1 ]= new SIMPLE_LIST_37_38_ob(Event_SIMPLE_LIST_37_38); + } +};// end class Comp_39_40 + +//---- 11 ---- +class SCHEMA_Queue_behavior: public Composite_producer { +public: // constructor + SCHEMA_Queue_behavior(): Composite_producer(Event_Queue_behavior){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 1 ]; + element[0]= new Composite_secondary_producer(Event_Queue); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + } +};// end class SCHEMA_Queue_behavior + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example04a_Queue_behavior.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_39_40 temp_12; temp_12.harvest(); + // harvesting traces for main schema + SCHEMA_Queue_behavior temp_13; temp_13.harvest(); + temp_13.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Queue_behavior"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.mp new file mode 100644 index 0000000..3aed579 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.mp @@ -0,0 +1,45 @@ +/* Example4a_Queue_behavior.mp + +run for scopes 1, 2, 3, and up. +*/ + +/* This rule specifies the behavior of a queue in terms of queue operations +enqueue and dequeue. It is assumed that initially Queue is empty. +The BUILD block associated with a root or composite event +contains composition operations performed when event trace segment +representing the behavior of that root or composite is generated. + +The ENSURE Boolean expression provides a condition that each valid trace +should satisfy. The domain of the universal quantifier is the set of all +dequeue events inside Queue trace. + +The function #dequeue BEFORE $x yields the number of dequeue events preceding $x. +The set of valid event traces specified by this schema contains only traces +that satisfy the constraint. This example presents a filtering operation +as yet another kind of behavior composition, and demonstrates an +example of combining imperative (event grammar) and declarative +(Boolean expressions) constructs for behavior specification. */ + +SCHEMA Queue_behavior + +ROOT Queue: (* ( enqueue | dequeue ) *) + BUILD { + /* if an element is retrieved, it should have been stored before, + this constraint is identical to Stack behavior constraint. */ + ENSURE FOREACH $x: dequeue + ( #dequeue BEFORE $x < #enqueue BEFORE $x ); + + /* The following composition operation establishes enqueue/dequeue pairs + in the Queue behavior. For each 'dequeue' the earliest in time + preceding 'enqueue' is selected, unless it has been already + consumed by another 'dequeue' */ + + COORDINATE $get: dequeue + DO COORDINATE $put: enqueue + SUCH THAT $put BEFORE $get + DO IF NOT ( EXISTS $g: dequeue $put Paired_with $g OR + EXISTS $p: enqueue $p Paired_with $get ) + THEN ADD $put Paired_with $get; FI; + OD; + OD; + };/* end BUILD for Queue */ diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.temp.txt new file mode 100644 index 0000000..fd2ce4c --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example04a_Queue_behavior tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.tree new file mode 100644 index 0000000000000000000000000000000000000000..7ca24eacdd07b39d9c8ce4ad58e31069ddb6105f GIT binary patch literal 7168 zcmeHMU2GKB6~4Rn&U$yvkAV<EXc{P`lv3i|HMU991piS?9Sp{yh|*5R_Sie^dS{uP zH9sO1jnXJWElN=op@zJqh_+G{<tar``%o11p+YFhLqw~nif9$(0aYl9D2mWbzjN=M z-MKsCBz?<6uQhvS@BQv~e(pK<&aB^NjJ4r!DI_%ym!E}9Kz2eVAy?yC!<feU(_R~6 z7)s#c&EFtzLW1T|>%c|0cKmtm;MfYj6y!EY4YC_D4f!yxVX`B^@icd0e0<X1OLx%* z3g&?v6wJ%0^E}w@?~Bf%o;H@mpJ-kVxWkwaTS<l+w|5Epk6;{u@n<2IK~^D`L!QL- z4C#M2P5LN)2n%ms7sk#4w*vBcNQ&b*F{ZK7+DY7o{p9vu5aX?%3T`EMF0~@Wcg3$& zz`X{&_dvd(;uSk-P2U9WUdU^ZSYQ9Tz_-If?>>CLf&R6SHzDtbysh$StnVnT6JLjQ ze65o~eEmDXCxa{z^MW`icErW2Q_NFvUjpCi1UqIsKlaxoSlOz%{@NyvY@lXijr@%X z<~;zp3G&O3n-k36lHjWpi|diNUf}u#j&h8e_aNpEO1;AgHf7J8@OJ^XPvzsd!xDEy z;(iERDF)|AoGWn)z?~*sGylEy(0fLWA2$de3J&$>zYvepnErk5D<VHpe!RISs;2*9 zf>n%p(?2iu{|fpqlKxPAYy>aj9K>5r=K|WA>-;L_wyv{WKaKt3*B*FyejtC9d6zNo zifVVTo+-BRZI~_QA)hr?&3Ip>eFS;A33gpguvy2R_uox0?$7%w57&qM*Vxb0c{k*| zn~TkRFynnq>P3A}{snR4d38I%3}-G+^#xg=`tt82fJq8F5EXAT`r3mk2uF>0uXlQ1 zm;9(Z;t%qS^Dj*b{xw_{{0&L$nMv+9_cP${g`O?Yvs2Zhv0pa%QO^<k_elOR$&b4C z56196Dfxe-@<;4-CEtSNI}Ll!B;n_+GVOC3d-@OFH>AJV`@{Bde_lw6JbW=J>gqh^ zze4t)9={3Oey{3RqZz~Zy5tM;`ZD;gBo)0L?ITx{BCoH(&u#erCa$+)aDSJ$_keo{ zn16up!zAT#^ZffLY9r+*wQ!v-7!LD4j$#R?u|L1#b@TdY^4^YOedI5-2=ARJmT)O{ zGV=%|#goVTlXx6qscGz|lT)@`R{XmgofG7D*bXm`_-Mf?DENZUFpkHe<8$J&@wi64 zb+(ChTpEv4{8%2v_`Sk6%FAHXE5MJn*k_868zFljw~0}Wt;wD`CGt+G+x|9Dw}V_3 z{INFF7401|?oS5nK}1xk*eP{|5kBgXnzBE)*crxa>_{i=myx(n#oH0V&BWs(ai5LH zY3$=m-ga5{y)FBG39)h1c|Pi%8n634#QT&w9`=pyl{oYR|18#N2PF3FaMRfH-DC&i zi=9(6|2gPCr}F#QC#W^_Ur@)z%;u-YUi!`GF6rOHa^AO~|I%m8yY-NVg5>AZx7GCt z@~)|+c}I5f=Z@Dti@%hi=ULAGD9NWX^qkxL{(~abx03IV!R|NYx%x-Qo%sG2p+{r? z?({au`2$iS?=<$eO~k`_2g#36{Se<<lJ6bK_nzP*RB)bpg!@3^K9snRur_xETTovd zr{Vo!6Yw37WZ#N*=C7ltffl`+ByO|B6@<2Me)E0mk-&;(jOi|n<NMU3pA)w;9v7*X z!FZg;a=Au4vG4G>@;Kx9bG@4Hd><cf7w6_Kl`mWu3U0TGQ|e(4Vu>r<g8J)VFTdUz z7tTAT;)A*2_2szM^L;OL9inUw)#DWUaD|&M>kqi*c{rnD2p`m&f~&;fWZeXHpx}?k z;86$E!uc?5&sY7EQ7qv&??B7>eJYCeQ4iGqCtl=%V((94cu_yGyr-jB!ts4>2=RM5 zew>rxgZqViRP;X+okMj=E#lXr`tdw94E=b&@jk^4t{>;GqW{?#{iyd?{fn;G@0$Bs zP;bz~^^K4`e9qfN@<v+hpEuLAui{modEcS_zi#k$bGw@7O5C}Ie5ckpS5Ap_;+-)c z0e`rT`Sa>??czD-jOx3x|ApU=f8H+MkIxFc#<t3H;mFwJ?$HAp`)8-{>tarv7h6|~ z{-=h$QS$FUIWc~rQ;fg-TW=5b!~gF}Io7f+=T+OtJzwe%?+e_Y;JNx0?9=pIeGz-W ztL=jSaW#*E=dhS?@woDH@p4pm7_a2dl_=Ji^B0ZhRT<A~K|B$My)FJ<kKvX0i2pa_ zdj1Rk)BDE<@c$P1|I*pUbHzBtf&N6}?}wkX({m>OordqPcZE)#U;DsAKeByFOEGul zdW>uA-c^z3{EpznZ4v~0VLSNxt(LzFtVoGGTP5c5{Mg?Tmj_~aB|gHtImNsQ_^~A= z^1UbE{ZnmVcv#&BdSiGoj~ch*fEqs!FQooX@IL{$2l61~q`-&wEq?AFjB*oi1a~MN zr?KLa#&c7!zhEDy#^d(|TL16CCapGIGUtsBv+U~hyIQI?ZCA~u`|D=i)Thjnv0&Lw z)~ZzNu0Cs(&756#gZq?Y+iq=%;o9@ov~Dh#6}Pr-<hU_kEt}mvhOUxqo3Gxt=wOOt z(`Mx;DNfIrTrRDc$8=JnyT(-6?5bHrtsB#>Wmj~&TI;G+&1uUh>$CL=@2sslS~n`L zHEWqOx_P|naHld(9n+|6GW464PCtNk9T<Il-`I#gHhN%EFZSuh{uQlc`u1p7@5=ox z3i|Z^ds_SQJM=<#q_>dQ3x%~K6epdYDGbM|!H<TS9Zw8TaC>ueWqXReDjRdzAt3eQ z4!x&4gOza%@?CSxTD|OMD_EX6-ji+k?c5))Az#$<J-K~`<sdZ2EVq=JHOe(}g&I`K z0c~((*Z9OpSIsP&BGgsGbxo&|rtX2E-5sbDZm2eL2;n=>Wge$tSR4#=Sm;1vIO$Q> z(TjS|GSNZn#xpE4ZC7S2@+DWZ>&~<(_$u}JDbwk2%ral3&N<U1PK%bmlkzV3lAUYZ z=8Q7e?ph0GdH{KhFfXq<h~Sh}w%ijUq-Fb<>F85-y)u)lR}n~YzkDdL1J>`*^W7N} zLE%%fL*wHU!=rl#CP#p>of)fQxTap*t`~c=#~bP?7~DQhIFhY4h8A0iK0V*RtahR@ zU2^P-b&@Y&rdFRW>2Aqz7n`+R&-bRPWy7k_KUdJ+e=KFrSKSloVRP0%I%pFkdq##P zJB85mc|BiH)4Zq`dlX;tdQpWGcId_Ku5eHaeR`ok<Ce?{kBUNA*sd3PmteKH3w%6- g-C8dc^+Hc-)^d<cHItT_mXw43zy5mu3$p(I1xhq!?f?J) literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.txt new file mode 100644 index 0000000..489ea96 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.txt @@ -0,0 +1,9 @@ +generating traces for scope 1 +completed Queue: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed Queue_behavior: 2 traces (0 MARKed) 5 events + average 2.5 ev/trace min 2 max 3 + +Elapsed time 0.000189 sec, Speed: 42328 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.cpp new file mode 100644 index 0000000..e1af221 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.cpp @@ -0,0 +1,1130 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Example5_Car_Race trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Start + , Event_drive_lap + , Event_finish + , Event_winner + , Event_break + , Event_provide_start_signal + , Event_watch + // composite events + , Event_Car + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_40_41 + , Event_SIMPLE_LIST_91_92 + // ADD operations + // ROOT events + , Event_Cars + , Event_Judge + // main schema event + , Event_Example5_Car_Race }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Start" + , "drive_lap" + , "finish" + , "winner" + , "break" + , "provide_start_signal" + , "watch" + , "Car" + , "SIMPLE_LIST_40_41" + , "SIMPLE_LIST_91_92" + , "Cars" + , "Judge" + , "Example5_Car_Race" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_15(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_16(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_17(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_drive_lap){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_18(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_drive_lap){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_19(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 6 ---- +int special_function_20(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_break){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 7 ---- +int special_function_21(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_drive_lap){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 8 ---- +int special_function_22(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_drive_lap){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 9 ---- +int special_function_29(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_winner){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 10 ---- +int special_function_34(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 11 ---- +int special_function_35(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_winner){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 12 ---- +int special_function_62(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 13 ---- +int special_function_71(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 14 ---- +int special_function_72(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Car){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 15 ---- +int special_function_79(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 16 ---- +int special_function_80(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Car){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 17 ---- +int special_function_83(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 18 ---- +int special_function_84(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Car){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 19 ---- +bool Quantified_expr_23_24(Coordinate * current_host){ + //===================================== + // quantifier FOREACH DISJ with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int c1_variable; + int pivot_c1_variable = 0; + int c2_variable; + int pivot_c2_variable = 0; + + // loop 1 for c1_variable + for( c1_variable = 0; c1_variable < len; c1_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ c1_variable * len + pivot_c1_variable +]) && + ( + (Stack[c1_variable]-> name == Event_Car) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for c2_variable + for( c2_variable = 0; c2_variable < len; c2_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ c2_variable * len + pivot_c2_variable +]) && + ( + (Stack[c2_variable]-> name == Event_Car) ) + // checking DISJ + && c2_variable != c1_variable + && !(current_host-> eq_matrix[ c2_variable * len + c1_variable ]) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for FOREACH + if( ( (! ( ( special_function_15(current_host, c1_variable ) == 1 )&& ( special_function_16(current_host, +c2_variable ) == 1 ))|| ( special_function_17(current_host, c1_variable ) == special_function_18(current_host, +c2_variable ) ))&& (! ( ( special_function_19(current_host, c1_variable ) == 1 ) +&& ( special_function_20(current_host, c2_variable ) == 1 ))|| ( special_function_21(current_host, +c1_variable ) >= special_function_22(current_host, c2_variable ) )))) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 20 ---- +class SIMPLE_LIST_40_41_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_40_41_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_23_24(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( ( special_function_29(current_host, Root_table[Event_Cars])<= 1 )){} + else{ + throw failed; // REJECT + }// end IF + if( (! ( special_function_34(current_host, Root_table[Event_Cars])> 0 )|| ( special_function_35(current_host, Root_table[Event_Cars]) +> 0 ))){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_40_41_ob class + +//---- 21 ---- +class SIMPLE_LIST_91_92_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_91_92_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Judge_source = Root_table[Event_Judge]; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Judge_source ]){ + if( ( (Stack[i]->name == Event_provide_start_signal)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int Cars_source = Root_table[Event_Cars]; // source of coordination + + // create lists of coordinated events + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Cars_source ]){ + if( ( (Stack[i]->name == Event_Start)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + + { // SHARE ALL operation + create_matrices(); + + int Cars_source = Root_table[Event_Cars]; + // lists of shared events for Cars + vector<int> Cars_finish_list; + + int Judge_source = Root_table[Event_Judge]; + // lists of shared events for Judge + vector<int> Judge_finish_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Cars_source ]){ + if( Stack[i]->name == Event_finish ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Cars_finish_list.begin(); + s != Cars_finish_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Cars_finish_list.push_back(i); + } + }; + if(in_matrix[i * len + Judge_source ]){ + if( Stack[i]->name == Event_finish ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Judge_finish_list.begin(); + s != Judge_finish_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Judge_finish_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Judge_finish_list.size(); + if(Cars_finish_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Judge_finish_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Cars_finish_list[i], Judge_finish_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int w_variable; // thread variable + vector<int> w_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for w_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + w_variable = i; + if( w_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_winner)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = w_variable_list.begin(); s != w_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) w_variable_list.push_back(i); + } + } }; + // no processing needed for the default source w_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = w_variable_list.size(); + if(thread_length != w_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + w_variable= w_variable_list[i]; + if( ( special_function_62(current_host, w_variable ) == 1 )){} + else{ + throw failed; // REJECT + }// end IF + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + if( ( special_function_71(current_host, Root_table[Event_Example5_Car_Race]) +== special_function_72(current_host, Root_table[Event_Example5_Car_Race]))){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"All cars have finished"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + else{ + { // SAY_event generation + string message; + ostringstream convert; + convert << special_function_83(current_host, Root_table[Event_Example5_Car_Race]) +; + convert <<" cars from "; + convert << special_function_84(current_host, Root_table[Event_Example5_Car_Race]) +; + convert <<" have finished"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_91_92_ob class + +//---- 22 ---- +class Itr_1_2 : public OR_node_producer_container { +public: // constructor + Itr_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_drive_lap); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_1_2 + +//---- 23 ---- +class Opt_3_4 : public OR_node_producer_container { +public: // constructor + Opt_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_winner); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_3_4 + +//---- 24 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_finish); + element[ 1 ]= new Opt_3_4 ; + } +};// end class Sq_5_6 + +//---- 25 ---- +class Alt_7_8 : public OR_node_producer_container { +public: // constructor + Alt_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_5_6 ; + element[ 1 ]= new Atomic_producer(Event_break); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_7_8 + +//---- 26 ---- +class Sq_9_10 : public AND_node_producer_container { +public: // constructor + Sq_9_10 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Start); + element[ 1 ]= new Itr_1_2 ; + element[ 2 ]= new Alt_7_8 ; + } +};// end class Sq_9_10 + +//---- 27 ---- +class Itr_44_45 : public OR_node_producer_container { +public: // constructor + Itr_44_45 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_finish); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_44_45 + +//---- 28 ---- +class Sq_46_47 : public AND_node_producer_container { +public: // constructor + Sq_46_47 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_provide_start_signal); + element[ 1 ]= new Atomic_producer(Event_watch); + element[ 2 ]= new Itr_44_45 ; + } +};// end class Sq_46_47 + +//---- 29 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_Car){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_9_10 ; + } +};// end class Comp_11_12 + +//---- 30 ---- +class Comp_42_43 : public Composite_producer { +public: // constructor + Comp_42_43 (): Composite_producer(Event_Cars){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Car); + element[ 1 ]= new SIMPLE_LIST_40_41_ob(Event_SIMPLE_LIST_40_41); + } +};// end class Comp_42_43 + +//---- 31 ---- +class Comp_48_49 : public Composite_producer { +public: // constructor + Comp_48_49 (): Composite_producer(Event_Judge){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_46_47 ; + } +};// end class Comp_48_49 + +//---- 32 ---- +class SCHEMA_Example5_Car_Race: public Composite_producer { +public: // constructor + SCHEMA_Example5_Car_Race(): Composite_producer(Event_Example5_Car_Race){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_Cars); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Judge); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_91_92_ob(Event_SIMPLE_LIST_91_92); + } +};// end class SCHEMA_Example5_Car_Race + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example05_Car_Race.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_11_12 temp_33; temp_33.harvest(); + // harvesting traces for ROOT events + Comp_42_43 temp_34; temp_34.harvest(); + Comp_48_49 temp_35; temp_35.harvest(); + // harvesting traces for main schema + SCHEMA_Example5_Car_Race temp_36; temp_36.harvest(); + temp_36.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Example5_Car_Race"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.mp new file mode 100644 index 0000000..4f6a8fd --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.mp @@ -0,0 +1,64 @@ +/* Example5_CarRace.mp + + more coordination patterns: + - ordering of selected events in concurrent threads + can be modeled by coordinating them with event sequence; + + - one-many coordination. + + Run for scopes 1 and up. The "Sequence" or "Swim Lanes" + layouts are the most appropriate for browsing traces here. +*/ + +SCHEMA Example5_Car_Race + +Car: Start + (* drive_lap *) + /* not necessary all cars will finish */ + ( finish [ winner ] | break) ; + +ROOT Cars: {+ Car +} + + BUILD{ + /* everybody who finishes drives the same number of laps */ + ENSURE FOREACH DISJ $c1: Car, $c2: Car + (#finish FROM $c1 == 1 AND #finish FROM $c2 == 1 -> + #drive_lap FROM $c1 == #drive_lap FROM $c2) + + AND + /* if it breaks, then earlier */ + (#finish FROM $c1 == 1 AND #break FROM $c2 == 1 -> + #drive_lap FROM $c1 >= #drive_lap FROM $c2); + + /* there always will be at most one winner */ + ENSURE #winner <= 1; + + /* if at least one car finishes, there should be a winner */ + ENSURE #finish > 0 -> #winner > 0; + }; + +ROOT Judge: provide_start_signal + watch + (* finish *); + +/* one-many coordination can be done with nested COORDINATE */ +COORDINATE $a: provide_start_signal FROM Judge + DO COORDINATE $b: Start FROM Cars + DO ADD $a PRECEDES $b; OD; + OD; + +Cars, Judge SHARE ALL finish; + +/* now when the ordering of finish events is ensured + (because they are ordered in the Judge root traces), + we can state: the winner is the car which finishes first */ +COORDINATE $w: winner + DO ENSURE #finish BEFORE $w == 1; OD; + +/* this is an example of trace annotation with data + specific for the trace */ + +IF #finish == #Car THEN SAY("All cars have finished"); +ELSE SAY( #finish " cars from " #Car + " have finished"); +FI; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.temp.txt new file mode 100644 index 0000000..b08a942 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example05_Car_Race tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.tree new file mode 100644 index 0000000000000000000000000000000000000000..57b4951abd8e9947e374d0a9c9516991b5423486 GIT binary patch literal 15360 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 NFjW5k^;g#ae*q-}{Z{}0 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.txt new file mode 100644 index 0000000..0f0b7a2 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.txt @@ -0,0 +1,15 @@ +generating traces for scope 1 +completed Car: 6 traces (0 MARKed) 23 events + average 3.83333 ev/trace min 3 max 5 + +completed Cars: 4 traces (0 MARKed) 20 events + average 5 ev/trace min 4 max 6 + +completed Judge: 2 traces (0 MARKed) 7 events + average 3.5 ev/trace min 3 max 4 + +completed Example5_Car_Race: 4 traces (0 MARKed) 42 events + average 10.5 ev/trace min 9 max 12 + +Elapsed time 0.000964 sec, Speed: 95435.7 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.cpp new file mode 100644 index 0000000..02e62ac --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.cpp @@ -0,0 +1,690 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA AtoB trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_A_sends_request_to_B + , Event_A_receives_data_from_B + , Event_A_timeout_waiting_from_B + , Event_B_receives_request_from_A + , Event_B_sends_data_to_A + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_23_24 + , Event_SIMPLE_LIST_41_42 + // ADD operations + // ROOT events + , Event_TaskA + , Event_Connector_A_to_B + , Event_TaskB + // main schema event + , Event_AtoB }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "A_sends_request_to_B" + , "A_receives_data_from_B" + , "A_timeout_waiting_from_B" + , "B_receives_request_from_A" + , "B_sends_data_to_A" + , "SIMPLE_LIST_23_24" + , "SIMPLE_LIST_41_42" + , "TaskA" + , "Connector_A_to_B" + , "TaskB" + , "AtoB" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_33(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_A_sends_request_to_B){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_34(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_A_receives_data_from_B){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 3 ---- +class SIMPLE_LIST_23_24_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_23_24_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int TaskA_source = Root_table[Event_TaskA]; + // lists of shared events for TaskA + vector<int> TaskA_A_sends_request_to_B_list; + vector<int> TaskA_A_timeout_waiting_from_B_list; + vector<int> TaskA_A_receives_data_from_B_list; + + int Connector_A_to_B_source = Root_table[Event_Connector_A_to_B]; + // lists of shared events for Connector_A_to_B + vector<int> Connector_A_to_B_A_sends_request_to_B_list; + vector<int> Connector_A_to_B_A_timeout_waiting_from_B_list; + vector<int> Connector_A_to_B_A_receives_data_from_B_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + TaskA_source ]){ + if( Stack[i]->name == Event_A_sends_request_to_B ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = TaskA_A_sends_request_to_B_list.begin(); + s != TaskA_A_sends_request_to_B_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) TaskA_A_sends_request_to_B_list.push_back(i); + } + if( Stack[i]->name == Event_A_timeout_waiting_from_B ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = TaskA_A_timeout_waiting_from_B_list.begin(); + s != TaskA_A_timeout_waiting_from_B_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) TaskA_A_timeout_waiting_from_B_list.push_back(i); + } + if( Stack[i]->name == Event_A_receives_data_from_B ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = TaskA_A_receives_data_from_B_list.begin(); + s != TaskA_A_receives_data_from_B_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) TaskA_A_receives_data_from_B_list.push_back(i); + } + }; + if(in_matrix[i * len + Connector_A_to_B_source ]){ + if( Stack[i]->name == Event_A_sends_request_to_B ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Connector_A_to_B_A_sends_request_to_B_list.begin(); + s != Connector_A_to_B_A_sends_request_to_B_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Connector_A_to_B_A_sends_request_to_B_list.push_back(i); + } + if( Stack[i]->name == Event_A_timeout_waiting_from_B ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Connector_A_to_B_A_timeout_waiting_from_B_list.begin(); + s != Connector_A_to_B_A_timeout_waiting_from_B_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Connector_A_to_B_A_timeout_waiting_from_B_list.push_back(i); + } + if( Stack[i]->name == Event_A_receives_data_from_B ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Connector_A_to_B_A_receives_data_from_B_list.begin(); + s != Connector_A_to_B_A_receives_data_from_B_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Connector_A_to_B_A_receives_data_from_B_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Connector_A_to_B_A_sends_request_to_B_list.size(); + if(TaskA_A_sends_request_to_B_list.size() != len_to_compare) throw failed ; + + len_to_compare = Connector_A_to_B_A_timeout_waiting_from_B_list.size(); + if(TaskA_A_timeout_waiting_from_B_list.size() != len_to_compare) throw +failed ; + len_to_compare = Connector_A_to_B_A_receives_data_from_B_list.size(); + if(TaskA_A_receives_data_from_B_list.size() != len_to_compare) throw failed + ; + + // do the SHARE ALL + len_to_compare = Connector_A_to_B_A_sends_request_to_B_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(TaskA_A_sends_request_to_B_list[i], Connector_A_to_B_A_sends_request_to_B_list[i]); + } + len_to_compare = Connector_A_to_B_A_timeout_waiting_from_B_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(TaskA_A_timeout_waiting_from_B_list[i], Connector_A_to_B_A_timeout_waiting_from_B_list[i]); + } + len_to_compare = Connector_A_to_B_A_receives_data_from_B_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(TaskA_A_receives_data_from_B_list[i], Connector_A_to_B_A_receives_data_from_B_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_23_24_ob class + +//---- 4 ---- +class SIMPLE_LIST_41_42_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_41_42_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int TaskB_source = Root_table[Event_TaskB]; + // lists of shared events for TaskB + vector<int> TaskB_B_receives_request_from_A_list; + vector<int> TaskB_B_sends_data_to_A_list; + + int Connector_A_to_B_source = Root_table[Event_Connector_A_to_B]; + // lists of shared events for Connector_A_to_B + vector<int> Connector_A_to_B_B_receives_request_from_A_list; + vector<int> Connector_A_to_B_B_sends_data_to_A_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + TaskB_source ]){ + if( Stack[i]->name == Event_B_receives_request_from_A ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = TaskB_B_receives_request_from_A_list.begin(); + s != TaskB_B_receives_request_from_A_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) TaskB_B_receives_request_from_A_list.push_back(i); + } + if( Stack[i]->name == Event_B_sends_data_to_A ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = TaskB_B_sends_data_to_A_list.begin(); + s != TaskB_B_sends_data_to_A_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) TaskB_B_sends_data_to_A_list.push_back(i); + } + }; + if(in_matrix[i * len + Connector_A_to_B_source ]){ + if( Stack[i]->name == Event_B_receives_request_from_A ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Connector_A_to_B_B_receives_request_from_A_list.begin(); + s != Connector_A_to_B_B_receives_request_from_A_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Connector_A_to_B_B_receives_request_from_A_list.push_back(i); + } + if( Stack[i]->name == Event_B_sends_data_to_A ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Connector_A_to_B_B_sends_data_to_A_list.begin(); + s != Connector_A_to_B_B_sends_data_to_A_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Connector_A_to_B_B_sends_data_to_A_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Connector_A_to_B_B_receives_request_from_A_list.size(); + if(TaskB_B_receives_request_from_A_list.size() != len_to_compare) throw +failed ; + len_to_compare = Connector_A_to_B_B_sends_data_to_A_list.size(); + if(TaskB_B_sends_data_to_A_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Connector_A_to_B_B_receives_request_from_A_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(TaskB_B_receives_request_from_A_list[i], Connector_A_to_B_B_receives_request_from_A_list[i]); + } + len_to_compare = Connector_A_to_B_B_sends_data_to_A_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(TaskB_B_sends_data_to_A_list[i], Connector_A_to_B_B_sends_data_to_A_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + if( ( special_function_33(current_host, Root_table[Event_TaskA])== special_function_34(current_host, Root_table[Event_TaskA])) +){} + else{ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"loss of reception detected"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + Mark = 'M'; // MARK + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_41_42_ob class + +//---- 5 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_A_receives_data_from_B); + element[ 1 ]= new Atomic_producer(Event_A_timeout_waiting_from_B); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 6 ---- +class Sq_3_4 : public AND_node_producer_container { +public: // constructor + Sq_3_4 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_A_sends_request_to_B); + element[ 1 ]= new Alt_1_2 ; + } +};// end class Sq_3_4 + +//---- 7 ---- +class Itr_5_6 : public OR_node_producer_container { +public: // constructor + Itr_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_3_4 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_5_6 + +//---- 8 ---- +class Alt_9_10 : public OR_node_producer_container { +public: // constructor + Alt_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_A_receives_data_from_B); + element[ 1 ]= new Atomic_producer(Event_A_timeout_waiting_from_B); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_9_10 + +//---- 9 ---- +class Sq_11_12 : public AND_node_producer_container { +public: // constructor + Sq_11_12 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_B_receives_request_from_A); + element[ 1 ]= new Atomic_producer(Event_B_sends_data_to_A); + element[ 2 ]= new Alt_9_10 ; + } +};// end class Sq_11_12 + +//---- 10 ---- +class Alt_13_14 : public OR_node_producer_container { +public: // constructor + Alt_13_14 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_11_12 ; + element[ 1 ]= new Atomic_producer(Event_A_timeout_waiting_from_B); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_13_14 + +//---- 11 ---- +class Sq_15_16 : public AND_node_producer_container { +public: // constructor + Sq_15_16 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_A_sends_request_to_B); + element[ 1 ]= new Alt_13_14 ; + } +};// end class Sq_15_16 + +//---- 12 ---- +class Itr_17_18 : public OR_node_producer_container { +public: // constructor + Itr_17_18 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_15_16 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_17_18 + +//---- 13 ---- +class Sq_25_26 : public AND_node_producer_container { +public: // constructor + Sq_25_26 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_B_receives_request_from_A); + element[ 1 ]= new Atomic_producer(Event_B_sends_data_to_A); + } +};// end class Sq_25_26 + +//---- 14 ---- +class Itr_27_28 : public OR_node_producer_container { +public: // constructor + Itr_27_28 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_25_26 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_27_28 + +//---- 15 ---- +class Comp_7_8 : public Composite_producer { +public: // constructor + Comp_7_8 (): Composite_producer(Event_TaskA){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_5_6 ; + } +};// end class Comp_7_8 + +//---- 16 ---- +class Comp_19_20 : public Composite_producer { +public: // constructor + Comp_19_20 (): Composite_producer(Event_Connector_A_to_B){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_17_18 ; + } +};// end class Comp_19_20 + +//---- 17 ---- +class Comp_29_30 : public Composite_producer { +public: // constructor + Comp_29_30 (): Composite_producer(Event_TaskB){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_27_28 ; + } +};// end class Comp_29_30 + +//---- 18 ---- +class SCHEMA_AtoB: public Composite_producer { +public: // constructor + SCHEMA_AtoB(): Composite_producer(Event_AtoB){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 5 ]; + element[0]= new Composite_secondary_producer(Event_TaskA); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Connector_A_to_B); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_23_24_ob(Event_SIMPLE_LIST_23_24); + element[3]= new Composite_secondary_producer(Event_TaskB); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_41_42_ob(Event_SIMPLE_LIST_41_42); + } +};// end class SCHEMA_AtoB + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example06_Assertion_Checking.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_7_8 temp_19; temp_19.harvest(); + Comp_19_20 temp_20; temp_20.harvest(); + Comp_29_30 temp_21; temp_21.harvest(); + // harvesting traces for main schema + SCHEMA_AtoB temp_22; temp_22.harvest(); + temp_22.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"AtoB"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.mp new file mode 100644 index 0000000..61d2cdd --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.mp @@ -0,0 +1,57 @@ +/* Example6 Assertion checking, Communicating via unreliable channel. + + MP models need to be tested and debugged like any other + programming artifacts. Trace generation for a given scope + yields exhaustive set of valid event traces. + Browsing these traces may result in finding examples of behavior + that are unwanted. Then we fix the issue in the MP code, + and run the trace generation again, until our expectations are + satisfied. + + Browsing dozens or hundreds of event traces may be time + consuming and error prone. The CHECK construct makes it possible + to use automated trace monitoring. If the property + (Boolean expression in the CHECK) is not satisfied, the trace will + be marked and available for further inspection. + + This can significantly speed up the testing process. Of course, + if the property should always hold, it makes sense to convert it + into the ENSURE condition. +*/ + +SCHEMA AtoB + +ROOT TaskA: (* A_sends_request_to_B + ( A_receives_data_from_B | + A_timeout_waiting_from_B ) + *); + +ROOT Connector_A_to_B: + (* A_sends_request_to_B + ( B_receives_request_from_A + B_sends_data_to_A + ( A_receives_data_from_B | + A_timeout_waiting_from_B ) | + + A_timeout_waiting_from_B ) + *); +/* A_timeout_waiting_from_B may happen because Connector_A_to_B + fails to pass a message from A to B, or from B to A */ + +TaskA, Connector_A_to_B SHARE ALL A_sends_request_to_B, + A_timeout_waiting_from_B, + A_receives_data_from_B ; + +ROOT TaskB: (* B_receives_request_from_A + B_sends_data_to_A + *); + +TaskB, Connector_A_to_B SHARE ALL B_receives_request_from_A, + B_sends_data_to_A ; + +/* assertion checking will mark examples of traces where TaskA + does not receive the requested data and will attach a message + to the trace */ +CHECK #A_sends_request_to_B FROM TaskA == + #A_receives_data_from_B FROM TaskA + ONFAIL SAY("loss of reception detected"); diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.temp.txt new file mode 100644 index 0000000..5e8de87 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example06_Assertion_Checking tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.tree new file mode 100644 index 0000000000000000000000000000000000000000..d4c5e1c58ca63ea26bb8f112ffaa523e6815c2da GIT binary patch literal 7168 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 L5MlcN;s1XFT|yDL literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.txt new file mode 100644 index 0000000..caeb897 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.txt @@ -0,0 +1,15 @@ +generating traces for scope 1 +completed TaskA: 3 traces (0 MARKed) 7 events + average 2.33333 ev/trace min 1 max 3 + +completed Connector_A_to_B: 4 traces (0 MARKed) 14 events + average 3.5 ev/trace min 1 max 5 + +completed TaskB: 2 traces (0 MARKed) 4 events + average 2 ev/trace min 1 max 3 + +completed AtoB: 4 traces (2 MARKed) 38 events + average 9.5 ev/trace min 4 max 13 + +Elapsed time 0.00089 sec, Speed: 70786.5 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.cpp new file mode 100644 index 0000000..89d29da --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.cpp @@ -0,0 +1,544 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Unconstrained_Stack trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_push + , Event_pop + , Event_bang + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_36_37 + // ADD operations + // ROOT events + , Event_Stack + // main schema event + , Event_Unconstrained_Stack }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "push" + , "pop" + , "bang" + , "SIMPLE_LIST_36_37" + , "Stack" + , "Unconstrained_Stack" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_9(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_pop){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_10(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_bang){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_11(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_push){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_12(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(find_pair_in_table( i, pivot, Follows )) { + if( Stack[i]->name == Event_bang){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +bool Quantified_expr_13_14(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int p_variable; + int pivot_p_variable = 0; + + // loop 1 for p_variable + for( p_variable = 0; p_variable < len; p_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ p_variable * len + pivot_p_variable +]) && + ( + (Stack[p_variable]-> name == Event_pop) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( ( ( special_function_9(current_host, p_variable ) - special_function_10(current_host, +p_variable ) )>= special_function_11(current_host, p_variable ) )== ( special_function_12(current_host, +p_variable ) == 1 ))) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 6 ---- +class SIMPLE_LIST_36_37_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_36_37_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_13_14(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + { // COORDINATE operation + int thread_length = -1; + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_bang)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + b_variable= b_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_pop)) && find_pair_in_table( b_variable , + x_variable , Follows) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + // ADD operation + { // SAY_event generation + string message; + ostringstream convert; + convert <<"This event tries to pop empty Stack"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + int temp_23 = Stack.size() - 1; + Follows.insert(pair<int, int>(x_variable,temp_23)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + Mark = 'M'; // MARK + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_36_37_ob class + +//---- 7 ---- +class Opt_1_2 : public OR_node_producer_container { +public: // constructor + Opt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_bang); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_1_2 + +//---- 8 ---- +class Sq_3_4 : public AND_node_producer_container { +public: // constructor + Sq_3_4 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_pop); + element[ 1 ]= new Opt_1_2 ; + } +};// end class Sq_3_4 + +//---- 9 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_push); + element[ 1 ]= new Sq_3_4 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_5_6 + +//---- 10 ---- +class Itr_7_8 : public OR_node_producer_container { +public: // constructor + Itr_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_5_6 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_7_8 + +//---- 11 ---- +class Comp_38_39 : public Composite_producer { +public: // constructor + Comp_38_39 (): Composite_producer(Event_Stack){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_7_8 ; + element[ 1 ]= new SIMPLE_LIST_36_37_ob(Event_SIMPLE_LIST_36_37); + } +};// end class Comp_38_39 + +//---- 12 ---- +class SCHEMA_Unconstrained_Stack: public Composite_producer { +public: // constructor + SCHEMA_Unconstrained_Stack(): Composite_producer(Event_Unconstrained_Stack){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 1 ]; + element[0]= new Composite_secondary_producer(Event_Stack); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + } +};// end class SCHEMA_Unconstrained_Stack + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example07_Unconstrained_Stack.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_38_39 temp_13; temp_13.harvest(); + // harvesting traces for main schema + SCHEMA_Unconstrained_Stack temp_14; temp_14.harvest(); + temp_14.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Unconstrained_Stack"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.mp new file mode 100644 index 0000000..817cee8 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.mp @@ -0,0 +1,50 @@ +/* Example7 Trace annotation techniques + +Assertion checking with the CHECK clause may be the simplest and most +common tool for finding counterexamples of traces, which violate some +property. Traces violating the CHECK condition are marked, and the +message provides some hint about the cause. The message is associated +with the root, composite, or the whole schema, and further details may +require browsing of the corresponding trace segment. The following example +demonstrates how to make messages more specific and focused. + +Let’s consider again the Stack model, but this time without the ENSURE +constraint on the Stack behavior. This Stack certainly will produce +unwanted behaviors. The MP code illustrates how to pinpoint events that +might violate certain property, and how to annotate these particular +events in the trace with additional messages. Programmers will recognize +the use of debugging print statements for traditional program testing/debugging. +*/ + +SCHEMA Unconstrained_Stack +ROOT Stack: (* ( push | pop [ bang ]) *) + /* bang event represents the Stack underflow event */ + + BUILD { + /* By default the domain for event selection is FROM THIS. + + The following ENSURE makes sure that each attempt to pop empty Stack + is followed by bang event */ + + ENSURE FOREACH $p: pop + /* pop associated with the bang event does not affect Stack contents, + hence only successful pop events do count */ + + (#pop BEFORE $p - #bang BEFORE $p) >= #push BEFORE $p + <-> #bang FOLLOWS $p == 1; + + COORDINATE $b: bang + + /* pick up pop event immediately preceding bang */ + DO COORDINATE $x: pop SUCH THAT $x PRECEDES $b + DO ADD SAY("This event tries to pop empty Stack") + PRECEDES $x; + MARK; + OD; + OD; + }; + +/* Now traces where Stack behavior is incorrect will be MARKed and + corresponding pop events will be pointed to by PRECEDES arrow leading + from the message box associated with this event. +*/ \ No newline at end of file diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.temp.txt new file mode 100644 index 0000000..67cecf8 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example07_Unconstrained_Stack tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.tree new file mode 100644 index 0000000000000000000000000000000000000000..ccfb7ce1ec83c57ec22426e4670cd16973b9b5e5 GIT binary patch literal 7168 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.txt new file mode 100644 index 0000000..6b82124 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.txt @@ -0,0 +1,9 @@ +generating traces for scope 1 +completed Stack: 3 traces (1 MARKed) 7 events + average 2.33333 ev/trace min 1 max 4 + +completed Unconstrained_Stack: 3 traces (1 MARKed) 10 events + average 3.33333 ev/trace min 2 max 5 + +Elapsed time 0.000251 sec, Speed: 67729.1 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.cpp new file mode 100644 index 0000000..06b30e6 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.cpp @@ -0,0 +1,1439 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Wide_Range_Search_for_Wreckage_and_Survivors trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Receive_distress_signal + , Event_Pass_mission_information + , Event_Acknowledge_search_plan + , Event_Receive_relayed_survivor_location_and_situation + , Event_Receive_mission_information + , Event_Relay_mission_information + , Event_Attempt_contact_with_PID + , Event_Assess_environmental_conditions + , Event_Receive_environmental_conditions + , Event_Provide_search_plan + , Event_Communicate_search_plan_and_responsibilities + , Event_Scan_environment_for_signs_of_PID + , Event_Receive_updates_for_OSC + , Event_Receive_PID_location_and_situation + , Event_Relay_survivor_location_and_situation + , Event_Send_distress_signal + , Event_Identify_self_as_PID + , Event_Present_for_rescue + , Event_Provide_environmental_conditions + , Event_Receive_relayed_mission_information + , Event_Confirm_search_plan_and_responsibilities + , Event_Provide_updates_to_OSC + , Event_Spot_object_of_interest + , Event_Maneuver_to_rescue_PID + , Event_Notify_OSC_of_PID_location_and_situation + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_105_106 + // ADD operations + // ROOT events + , Event_Command_and_Control + , Event_On_Scene_Commander + , Event_PID + , Event_Physical_Environment + , Event_SAR_Assets + // main schema event + , Event_Wide_Range_Search_for_Wreckage_and_Survivors }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Receive_distress_signal" + , "Pass_mission_information" + , "Acknowledge_search_plan" + , "Receive_relayed_survivor_location_and_situation" + , "Receive_mission_information" + , "Relay_mission_information" + , "Attempt_contact_with_PID" + , "Assess_environmental_conditions" + , "Receive_environmental_conditions" + , "Provide_search_plan" + , "Communicate_search_plan_and_responsibilities" + , "Scan_environment_for_signs_of_PID" + , "Receive_updates_for_OSC" + , "Receive_PID_location_and_situation" + , "Relay_survivor_location_and_situation" + , "Send_distress_signal" + , "Identify_self_as_PID" + , "Present_for_rescue" + , "Provide_environmental_conditions" + , "Receive_relayed_mission_information" + , "Confirm_search_plan_and_responsibilities" + , "Provide_updates_to_OSC" + , "Spot_object_of_interest" + , "Maneuver_to_rescue_PID" + , "Notify_OSC_of_PID_location_and_situation" + , "SIMPLE_LIST_105_106" + , "Command_and_Control" + , "On_Scene_Commander" + , "PID" + , "Physical_Environment" + , "SAR_Assets" + , "Wide_Range_Search_for_Wreckage_and_Survivors" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_105_106_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_105_106_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int PID_source = Root_table[Event_PID]; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int Command_and_Control_source = Root_table[Event_Command_and_Control] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + PID_source ]){ + if( ( (Stack[i]->name == Event_Send_distress_signal)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + Command_and_Control_source ]){ + if( ( (Stack[i]->name == Event_Receive_distress_signal)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Command_and_Control_source = Root_table[Event_Command_and_Control] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Command_and_Control_source ]){ + if( ( (Stack[i]->name == Event_Pass_mission_information)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Receive_mission_information)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int SAR_Assets_source = Root_table[Event_SAR_Assets] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Relay_mission_information)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + SAR_Assets_source ]){ + if( ( (Stack[i]->name == Event_Receive_relayed_mission_information)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int Physical_Environment_source = Root_table[Event_Physical_Environment] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Assess_environmental_conditions)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + Physical_Environment_source ]){ + if( ( (Stack[i]->name == Event_Provide_environmental_conditions)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Physical_Environment_source = Root_table[Event_Physical_Environment] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Physical_Environment_source ]){ + if( ( (Stack[i]->name == Event_Provide_environmental_conditions)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Receive_environmental_conditions)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int Command_and_Control_source = Root_table[Event_Command_and_Control] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Provide_search_plan)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + Command_and_Control_source ]){ + if( ( (Stack[i]->name == Event_Acknowledge_search_plan)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Command_and_Control_source = Root_table[Event_Command_and_Control] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Command_and_Control_source ]){ + if( ( (Stack[i]->name == Event_Acknowledge_search_plan)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Communicate_search_plan_and_responsibilities) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int SAR_Assets_source = Root_table[Event_SAR_Assets] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Communicate_search_plan_and_responsibilities) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + SAR_Assets_source ]){ + if( ( (Stack[i]->name == Event_Confirm_search_plan_and_responsibilities) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + + { // SHARE ALL operation + create_matrices(); + + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander]; + // lists of shared events for On_Scene_Commander + vector<int> On_Scene_Commander_Scan_environment_for_signs_of_PID_list; + + int SAR_Assets_source = Root_table[Event_SAR_Assets]; + // lists of shared events for SAR_Assets + vector<int> SAR_Assets_Scan_environment_for_signs_of_PID_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( Stack[i]->name == Event_Scan_environment_for_signs_of_PID ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = On_Scene_Commander_Scan_environment_for_signs_of_PID_list.begin(); + s != On_Scene_Commander_Scan_environment_for_signs_of_PID_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) On_Scene_Commander_Scan_environment_for_signs_of_PID_list.push_back(i); + } + }; + if(in_matrix[i * len + SAR_Assets_source ]){ + if( Stack[i]->name == Event_Scan_environment_for_signs_of_PID ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = SAR_Assets_Scan_environment_for_signs_of_PID_list.begin(); + s != SAR_Assets_Scan_environment_for_signs_of_PID_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) SAR_Assets_Scan_environment_for_signs_of_PID_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = SAR_Assets_Scan_environment_for_signs_of_PID_list.size(); + if(On_Scene_Commander_Scan_environment_for_signs_of_PID_list.size() != len_to_compare) +throw failed ; + + // do the SHARE ALL + len_to_compare = SAR_Assets_Scan_environment_for_signs_of_PID_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(On_Scene_Commander_Scan_environment_for_signs_of_PID_list[i], SAR_Assets_Scan_environment_for_signs_of_PID_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int SAR_Assets_source = Root_table[Event_SAR_Assets] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + SAR_Assets_source ]){ + if( ( (Stack[i]->name == Event_Provide_updates_to_OSC)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Receive_updates_for_OSC)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int SAR_Assets_source = Root_table[Event_SAR_Assets] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int PID_source = Root_table[Event_PID]; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + SAR_Assets_source ]){ + if( ( (Stack[i]->name == Event_Spot_object_of_interest)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + PID_source ]){ + if( ( (Stack[i]->name == Event_Identify_self_as_PID)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int PID_source = Root_table[Event_PID]; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int SAR_Assets_source = Root_table[Event_SAR_Assets] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + PID_source ]){ + if( ( (Stack[i]->name == Event_Identify_self_as_PID)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + SAR_Assets_source ]){ + if( ( (Stack[i]->name == Event_Maneuver_to_rescue_PID)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int SAR_Assets_source = Root_table[Event_SAR_Assets] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int PID_source = Root_table[Event_PID]; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + SAR_Assets_source ]){ + if( ( (Stack[i]->name == Event_Maneuver_to_rescue_PID)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + PID_source ]){ + if( ( (Stack[i]->name == Event_Present_for_rescue)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int SAR_Assets_source = Root_table[Event_SAR_Assets] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + SAR_Assets_source ]){ + if( ( (Stack[i]->name == Event_Notify_OSC_of_PID_location_and_situation) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Receive_PID_location_and_situation)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int On_Scene_Commander_source = Root_table[Event_On_Scene_Commander] +; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int Command_and_Control_source = Root_table[Event_Command_and_Control] +; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + On_Scene_Commander_source ]){ + if( ( (Stack[i]->name == Event_Relay_survivor_location_and_situation)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + Command_and_Control_source ]){ + if( ( (Stack[i]->name == Event_Receive_relayed_survivor_location_and_situation) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_105_106_ob class + +//---- 2 ---- +class Sq_1_2 : public AND_node_producer_container { +public: // constructor + Sq_1_2 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_Receive_distress_signal); + element[ 1 ]= new Atomic_producer(Event_Pass_mission_information); + element[ 2 ]= new Atomic_producer(Event_Acknowledge_search_plan); + element[ 3 ]= new Atomic_producer(Event_Receive_relayed_survivor_location_and_situation) +; + } +};// end class Sq_1_2 + +//---- 3 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 11 ]; + element[ 0 ]= new Atomic_producer(Event_Receive_mission_information); + element[ 1 ]= new Atomic_producer(Event_Relay_mission_information); + element[ 2 ]= new Atomic_producer(Event_Attempt_contact_with_PID); + element[ 3 ]= new Atomic_producer(Event_Assess_environmental_conditions); + + element[ 4 ]= new Atomic_producer(Event_Receive_environmental_conditions) +; + element[ 5 ]= new Atomic_producer(Event_Provide_search_plan); + element[ 6 ]= new Atomic_producer(Event_Communicate_search_plan_and_responsibilities) +; + element[ 7 ]= new Atomic_producer(Event_Scan_environment_for_signs_of_PID) +; + element[ 8 ]= new Atomic_producer(Event_Receive_updates_for_OSC); + element[ 9 ]= new Atomic_producer(Event_Receive_PID_location_and_situation) +; + element[ 10 ]= new Atomic_producer(Event_Relay_survivor_location_and_situation) +; + } +};// end class Sq_5_6 + +//---- 4 ---- +class Sq_9_10 : public AND_node_producer_container { +public: // constructor + Sq_9_10 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Send_distress_signal); + element[ 1 ]= new Atomic_producer(Event_Identify_self_as_PID); + element[ 2 ]= new Atomic_producer(Event_Present_for_rescue); + } +};// end class Sq_9_10 + +//---- 5 ---- +class Sq_15_16 : public AND_node_producer_container { +public: // constructor + Sq_15_16 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 7 ]; + element[ 0 ]= new Atomic_producer(Event_Receive_relayed_mission_information) +; + element[ 1 ]= new Atomic_producer(Event_Confirm_search_plan_and_responsibilities) +; + element[ 2 ]= new Atomic_producer(Event_Scan_environment_for_signs_of_PID) +; + element[ 3 ]= new Atomic_producer(Event_Provide_updates_to_OSC); + element[ 4 ]= new Atomic_producer(Event_Spot_object_of_interest); + element[ 5 ]= new Atomic_producer(Event_Maneuver_to_rescue_PID); + element[ 6 ]= new Atomic_producer(Event_Notify_OSC_of_PID_location_and_situation) +; + } +};// end class Sq_15_16 + +//---- 6 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Command_and_Control){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_1_2 ; + } +};// end class Comp_3_4 + +//---- 7 ---- +class Comp_7_8 : public Composite_producer { +public: // constructor + Comp_7_8 (): Composite_producer(Event_On_Scene_Commander){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_5_6 ; + } +};// end class Comp_7_8 + +//---- 8 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_PID){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_9_10 ; + } +};// end class Comp_11_12 + +//---- 9 ---- +class Comp_13_14 : public Composite_producer { +public: // constructor + Comp_13_14 (): Composite_producer(Event_Physical_Environment){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_Provide_environmental_conditions) +; + } +};// end class Comp_13_14 + +//---- 10 ---- +class Comp_17_18 : public Composite_producer { +public: // constructor + Comp_17_18 (): Composite_producer(Event_SAR_Assets){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_15_16 ; + } +};// end class Comp_17_18 + +//---- 11 ---- +class SCHEMA_Wide_Range_Search_for_Wreckage_and_Survivors: public Composite_producer { +public: // constructor + SCHEMA_Wide_Range_Search_for_Wreckage_and_Survivors(): Composite_producer(Event_Wide_Range_Search_for_Wreckage_and_Survivors){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 6 ]; + element[0]= new Composite_secondary_producer(Event_Command_and_Control); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_On_Scene_Commander); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new Composite_secondary_producer(Event_PID); + // for Root_table update in Composite_secondary_producer::traverse() + element[2] -> type = ROOT_node; + element[3]= new Composite_secondary_producer(Event_Physical_Environment); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new Composite_secondary_producer(Event_SAR_Assets); + // for Root_table update in Composite_secondary_producer::traverse() + element[4] -> type = ROOT_node; + element[5]= new SIMPLE_LIST_105_106_ob(Event_SIMPLE_LIST_105_106); + } +};// end class SCHEMA_Wide_Range_Search_for_Wreckage_and_Survivors + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example08_Operational_Process.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_12; temp_12.harvest(); + Comp_7_8 temp_13; temp_13.harvest(); + Comp_11_12 temp_14; temp_14.harvest(); + Comp_13_14 temp_15; temp_15.harvest(); + Comp_17_18 temp_16; temp_16.harvest(); + // harvesting traces for main schema + SCHEMA_Wide_Range_Search_for_Wreckage_and_Survivors temp_17; temp_17.harvest(); + temp_17.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Wide_Range_Search_for_Wreckage_and_Survivors"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.mp new file mode 100644 index 0000000..e930176 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.mp @@ -0,0 +1,123 @@ +/* Example8_OperationalProcess.mp + modeling operational processes + +Operational processes can be modeled to provide a common baseline against which +alternative proposed solutions may be assessed. + +In this example, humans are conducting a wide area search in roles of Command and Control +(C2), On Scene Commander (OSC), Person in Distress (PID), and Search And Rescue Assets +(SAR Assets) apart from the OSC. +An actor called Physical Environment represents behaviors in the natural environment. + +Actors may be partitioned and scoped according to the focus of the analysis. The analysis +prompting this model calls for an analysis of alternatives for the On Scene Commander role +(e.g., manned helicopter, cutter, unmanned aerial/surface/underwater vehicles). + +A System of Systems (SoS) analysis might expand the "SAR Asset" actor into distinct SAR assets +participating in or potentially participating in the scenario to study emergent behaviors of +those interacting systems in a SoS construct. + +Run for scope 1 (there is no iteration in this example, so increaasing the scope will not +produce more scenarios). Only one scenario is produced because no decision points have been +added to this model yet. + +The "Sequence" or "Swim Lanes" layouts are the most appropriate for browsing traces here. +The "Sequence" mode yields views very similar to the UML or SysML Sequence Diagrams. + +*/ + + +/* Actors */ + +SCHEMA Wide_Range_Search_for_Wreckage_and_Survivors + +ROOT Command_and_Control: Receive_distress_signal + Pass_mission_information + Acknowledge_search_plan + Receive_relayed_survivor_location_and_situation; + +ROOT On_Scene_Commander: Receive_mission_information + Relay_mission_information + Attempt_contact_with_PID + Assess_environmental_conditions + Receive_environmental_conditions + Provide_search_plan + Communicate_search_plan_and_responsibilities + Scan_environment_for_signs_of_PID + Receive_updates_for_OSC + Receive_PID_location_and_situation + Relay_survivor_location_and_situation; + +ROOT PID: Send_distress_signal + Identify_self_as_PID + Present_for_rescue; + +ROOT Physical_Environment: Provide_environmental_conditions; + +ROOT SAR_Assets: Receive_relayed_mission_information + Confirm_search_plan_and_responsibilities + Scan_environment_for_signs_of_PID + Provide_updates_to_OSC + Spot_object_of_interest + Maneuver_to_rescue_PID + Notify_OSC_of_PID_location_and_situation; + +/* Interactions */ + +COORDINATE $a: Send_distress_signal FROM PID, + $b: Receive_distress_signal FROM Command_and_Control + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Pass_mission_information FROM Command_and_Control, + $b: Receive_mission_information FROM On_Scene_Commander + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Relay_mission_information FROM On_Scene_Commander, + $b: Receive_relayed_mission_information FROM SAR_Assets + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Assess_environmental_conditions FROM On_Scene_Commander, + $b: Provide_environmental_conditions FROM Physical_Environment + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Provide_environmental_conditions FROM Physical_Environment, + $b: Receive_environmental_conditions FROM On_Scene_Commander + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Provide_search_plan FROM On_Scene_Commander, + $b: Acknowledge_search_plan FROM Command_and_Control + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Acknowledge_search_plan FROM Command_and_Control, + $b: Communicate_search_plan_and_responsibilities FROM On_Scene_Commander + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Communicate_search_plan_and_responsibilities FROM On_Scene_Commander, + $b: Confirm_search_plan_and_responsibilities FROM SAR_Assets + DO ADD $a PRECEDES $b; OD; + +On_Scene_Commander, SAR_Assets SHARE ALL Scan_environment_for_signs_of_PID; + +COORDINATE $a: Provide_updates_to_OSC FROM SAR_Assets, + $b: Receive_updates_for_OSC FROM On_Scene_Commander + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Spot_object_of_interest FROM SAR_Assets, + $b: Identify_self_as_PID FROM PID + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Identify_self_as_PID FROM PID, + $b: Maneuver_to_rescue_PID FROM SAR_Assets + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Maneuver_to_rescue_PID FROM SAR_Assets, + $b: Present_for_rescue FROM PID + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Notify_OSC_of_PID_location_and_situation FROM SAR_Assets, + $b: Receive_PID_location_and_situation FROM On_Scene_Commander + DO ADD $a PRECEDES $b; OD; + +COORDINATE $a: Relay_survivor_location_and_situation FROM On_Scene_Commander, + $b: Receive_relayed_survivor_location_and_situation FROM Command_and_Control + DO ADD $a PRECEDES $b; OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.temp.txt new file mode 100644 index 0000000..b5288e6 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example08_Operational_Process tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.tree new file mode 100644 index 0000000000000000000000000000000000000000..6cda1cdbd0b0917cd505a3eb2d8fc19f5eb82ca3 GIT binary patch literal 18944 zcmeI4e{39OddDYDJh2_eNgT&9P6&?kgB*2(f9|f+92Z|4E=fb;+BrzMT;8nhG2XD= zHM?s=P)fNdN+Wbd5v3@K5aO;Wr3j@6(JG=8-9<SRp$Jh#BZLsjrHG;kA?_3*6rq`Z zpLw4d@67v-J=Im}KYgRu@9aCD_xrr>^ZuOKg~1BLn2&!oh72|m2OsQtNNbVezSD@< zWEiGVRb$UL4BV<TnRi-ouMIJQxD9bP;(i&cz<@Ot;Gew!d554^iS#g12spz?7b49f zPE$SRxjc#(gZuXFcb=pxH7MM1m7yGkI}wvR8IwDu=PJ+&=PCWY@?5yWu;C=~rClxi zf$}KW=mY0jq>GTgU>F0t`VHr0T)!^4+azY#=p*MXaEm#uld1DI`F*}&FTv-_xW5$X z2S}G8{e%m1Vj3^ikUi5#)RH~Z_+|;&!{=poJ$=5q%wA4*EAUSSy8$|%8pfmf!o!r7 z2O3WpCT_4-fV&2}G={DtrE&F{ycfxR#oX6(aJQKIPI3!SJF2f^&NHaK&QcnEYA}uQ zW(-j|E?0sh|6zQ)DIDvj%`$bG=eey3^vinaQ@?DUC;KIZ{{A6xGvn7@h5LJ=?2Dh+ ztGVC7nMU#v8t?8nxZRyI^SqMI{od6~J3Rln{F)GdSi`d)UH*;`e?-HxKO_66g!ZGD zGcC(Ta!)dMTypL@&?5b6ujRCr({(a+elGnz>-c$Y4!hp?d2tTT8$Yjj_2cpL29KY& zW&Vuk<yD})>rwB^^Za>`%@j+{yQ<yN(MiksaGsG%Pgu^?dB$*l^r-XE9Ncy0KAVI4 zin*^P=l1i4P(R<2_sZMi^`Fac4Dk!RnLbm(DeuQSx!*Q%`aMqXlBrWitDrG6j+-=k z+>ZgSRl{*V2Dmm2$Nd=SpYrv`8@CBrHj?wk?Ka7o#$W#(t#`0riRIJ{&h85AbBKo! z#}NyN#}H3eU_L+lm-Zj={KnphatpBi$#SQ`oJBl`cwXvz<G}5QKbCf|yh#26xQmEa z5U(O$L%boQ%Wro1`QChSZsHy`ZKul1L4WYLC||$b@mN1!j>m=>mW-DBB`|Iq=gV>1 zBzbo}-_8Br&S?jyoicS=rJ83Upy$nlHhDMFt~U=7b8y}~*e1Eac+ri29tQz#w^vi? zfBNh2IH3A@{b<v?-#=f@`}?uacH#4Z`8d<aR%p2_b2)I2&B7gL?gY4}XW`B;cNW~a zS-A7ey$0@0ISQOhxPDJ<>rAT+?50(Q^AWh~h+iUpg9r~eHHZy}YY;K!BgfSy&kIsD zlDjJ=*A|o89FuF0$#ur$x?^&Qm|QBz(aPd%fzSI9_aYuZ97fCrxkx`x$K)Q1$vqzA zOyj|4>~323_AIk8|K0VeN3Lf$=DWc;hWegFJdJo3@f_lL8Qt}So+IcymgF?WX|GJ3 z3k&96PkB9|^?KHI^djscf}4H)<n=_(Fxig4I_9m5SEN5o<LkTaE!_S;37wm_q8(T9 zJoJ5}*Mk0|nz-kJ8^L^bou9aVy+@;alXdA~t1S4sRo*GK>}J`etNR0uZhfV!@9JQA zUw30Lzf97-bal6BblX{XOR&7J+aJu=>h@`L_p<JRV0mA6IG7*SrGEB27+B}C(4}=g zSBdqz5>y0toVgR=o}Ps}!`xYL=Vsx~Gxr*}H)r84G4~F*_ch$dm2$uO1l$kNj!(gT zq2auJ?f0yA6C57gBimbLO25=#eQGeHxi!qSfV*oJuA8|8xNRoZk$<hB=UmhHwuYW_ zO=JHe8_&6>ab}T?=Qpf3we<XE8h=x3<N3`r{-f5$^P6dGSZudYI<=UdHzL=?-84dH zLL|2*Cbu^xHxQE>jLErAkTdOo_m<c=pP9yvr8drIrt!B+ZJf^{+joCVI|pKN560vU z#^eqKIeHu697ZdT1oLM+Ag|o_0^2d(X<zA=X_%qUaral+S7zPMN~jZJV7}~t-6t@v z??w6~(jOsx3f!|A?gi#vWbPGkZ<w@C%{))Nt+v_WeM7N(nf2afy$_-HsmAUX%-vw_ zCOA7}x5{hzj0YXwR}{PT3uSv7kWzcsEHs==3st{#GS|)AJ>YgO47PVrW0&_G#qL4Y zJH&e9&?{){9%Jqa=1zfoCS><{ja}ZC6uU36-pj1_I`rPs*nNk&%glWM?vs$+&oy>= z-=dzkcLwLNP3MZQp-1P6TfwsazPF%irqeW6uI?_4Ze5ksZ3>q6bz6h^VQE))w??;( zbrZqzzV5bQzE<~7HM+Z5cYm<FuX`w%uhre7(H&>qLa@BAdn}l*>b`o)zK_;n^xt0h zTwEdF0HDuK;#uo-usrS06iDCR2j*<>zI(ImkE=VNsrNaq_xWIXzup&u`DK#srK|gA z8r_SmdnH)j*S#9d*Xj;xbg!}QjbM3S_hv9(t2?C8#mjbgepKOQds*;x>x21ah<j-o zzgcXzQva=}v)55-)!BDa`p<RtCQ2)p*mw_S8b4lQ<2{&Z{O2+o&oelO)YJ0}&LQ=Z z|4qG(=NjlNxA9yPxgW0%)+dr%6XfFVi*CPS-3aU}EkP}6IPF&y%HMB~<R>PbR+S}= z{AuF_yR%+@pBM_ReXLgj`y16V&WjQDH>oV?#<frDxAz9bJ?DGxaqp@&-1oR`QeW$* zglgNt{z^gdQ%Yrti(5~vpSGx)4)$#div6uBOI%$0k$$>|{j^Q$YyGrawe8?MKtZYJ z9+f37ZauYr+N)|hIA>5$><_3cadGWO`e~5;v|s9L{d7pR?cn@EL8<3ql_f52J+*!s zRy7@*izq1eM^%=%xb`FcG{$}!m-<>i6;#^}&RZ0edX`j{xVZJy`e|C#ba0NNpxA#* zWr>SxKhjT+v!9Mhed7H074)2OvRa<IPa*vgK0i}!IL}vu3UMzn_cC*@gL|twxE{Zw zw!z_Zq@wpe>wUm_pFr<(joq)A`#p2tfir7@c9-G{=}>U^oT=Dtu959sjg;EEvBq%P zYt;5`VQwpP_ktS;*?mxBm(QV!-BH#XW4%e}J+85Pg1M8-od$O{WcQrLE}v5syXRT& zHP(9*dY3eI-(&85<~|1ZS;+2J8oPXs4eZO`YB-!(DFnC*?~UtB=XvMa^7%pMAg5Mk zsg%;*x<#^omm;P9ZC-@4#Uhp4%v?KjTfp@%3f6D0YSZEKuVVKA>pjSNqtMG~>^{ca z<IJ4^_jJha8I4^&A1ii$$$IBl?>zJ_XzX5O?h<qFf%_<A_qxU|pPv=GU$Wj;toJSS zDr!|f*VfAZs6$Hq(Nt?Vt+hcvx8a3dC^+?UEy1~YxsCTRI5#h+_c3_GutL74TD3y{ z?&L4}?H^PA&K2^#pS42%J_XNB_lL$?LSx52xAis3_l2TSmOs@f-xL00qx_u<^d1Q5 zZPV!a=bN9cl<yb+VWlj8d8Itx|86Dy-o)K64ute}YxMkcz^|L+`^o=ml6qCQ$?r|> zzD@q_2KD>%kluccp1)ttYnJ8jY?kGBHq(1g)5taZ?R_w$cSxgm%<CuE4?iD_Yk2H4 z6w2qf`+RUjWr>Ts|7rK%tg7i?|DvGSeNaqZLm&^{kb*2?FDg4EZZQ;w;&9qfw~ zlzKj)vc$!$r`AtTs+tb=TMCN(<0?yBT>FuJI>CNADfP8}I<4Avu#Zzv>iLYy5*N3g zT0cFjYC1R{P*ChYr?SMwwIAuHGwi3cQeW$*bE<6z=MD-=Jzr8;;^Nj*>!+7hO$X;0 z3X1(#RF=57_9OlDD*NfY)Ytmyf@<5rIf;T&&o@<;xVZJy`spoI)4}<Rf@1$|l_f5& z{YXFkiv4s^>MM4y=<O=pdwR|^zV}!3`$?_;-&e~xIJZ$y^gmEp;^MYn>;Df`O$X;e z3X1)!Dob2k`;q?ti2eVu)YtmyGu5_(b0!6)o}a5MadGRZ_0t!sri1e<1;zdil_f5& z{YXE3$$t7u>TCV<t!mrBxtM}d&s!=>T-<tU{q&ux>EOIgL9tJVRZWO%KhjUeVtL-E zz?a_$T0hmwd*$XGoZ~4d^{i7_;^Nj*>!+ovrc)>Vq1dli+5d_CNIx~OpBkmU!nG_m z?4RIyrFF6V9Yot4+-Bxdb8uUj>z{+Wm$`vCxIyL)O3pNXv0gqW{rh_Pobkna`8`AZ z2LD`tFnq3;Wy!BzaQyS?Z#T&ACzfxN<u`4VzoYo+M*lhMry;#@jh=t5>suwi7df~} z>YZ98f1mO9t9-pfA-#e|&p-eCY_%-^Ppf75%d6%0Ew@(t?G+)tV;VjGobc=0W%--8 z%koug<o7YXYy9W7!y&zs8a>`mP2+cKq)z1>vivXZkl*LL&7Z%xgTD`I@#~uo>7Ul< z`}@UjTj+Zs%(Jypf74p|`;F~u<?}I~%Z5XGXEl2My1KSimj8aMEI-~VpTAGE`t2VH z>7CQ)`Rh-5oh<*vI$8eZb@aOu)3~(Guit1$@4QBj=c#G@Td}XdKluLOf`-SurQohV zR!IM%hR6K%`LPgxMZ;qr`}{*8{;Gz@eD?YA5Pwa>V_y4whSp{JCxiR_lea$I;Q4=3 z@{!y(%o+GG6hb6dQ76~C+Bvv7=9=c<nweWa2e*;A_Bpst=C;nk-NW3@Ik?@-?bmQe zu>Rj)XV?!TJ&ZJq^hgAkWp0|eCnLDy%>A6X=OVZ>%>9zNS0lLd%w1saqT~YaSue>v zIeO$@2jhl<J3l5u<MBNWkMZO4xe))6hQ~Pa`Fx1KuHiABe10;-f2rXyu6+KH5dV#a z$N2L3LWnn(xcAEcI2dO>Ukvdz8Xn`#=Sv~JLBnI*`TSJy+%=sp;P+2z8RE;&M=sZ* z=S<`I7521-Z`JdP?s`3E8lN<3bvNpHMR${)GmX_vTHU+!yrSEt=S<_^ZCc&UdS20O z*K_c1v(znHmubD|Tq4(ttw?FTxL1}BthdDNWNwhTgAv>z=Ej*TL~teMo?z}&1osqk z&ocKy1ot9yuQ2yU1otn@{ffDFBe*NfU1jcC1b3aeFPZyBa_%~X_sedI-+}z0pOt?8 zR@!kVW!WEvyQSw$W9tU(IQve|E4sFxGmT>#wYtXAvRckuD!LVV4)b`GR(FA(S9DE1 zhk1OvR<}yeE4np$4)b`8R<~BqE4p=h4*k}m)m^IR72SG0hkjeD)osx8if*HxGmW=e zwYp7uUeRsVbEfg#I@0|^=hgpqd2eL@fB#EQ{9pF}qo{&e92vJJ(p6TrB<Oc<mBo?# zq}BF7X4Ddc>D)t>7_!oZk#RAWFNg;U*2u$Y<fU_?VrZ%`ote%TiZz+s<WxzFWwO?y z{8Y)it}Nv9rQ+grDL;`J5!SSoD-~OIJeHoA%v$X!v2W5Uq)VB6E}azvh5U$BEN-5d zynR++`S$$81lgvzJ)bKT^4a=*IWaV1<t${lH?6|TL2JayOj}|U4Jtrb6f+OOPSZdd z*Atmy5oSduhbB$9Ran_K@^CKyXx17<+lsQili75xE@wR|s2QS^9?n|JiW#cBNRLpx zMSill=%H+W7!4T9rXOk;7(ZIfjNsFb+;pap&rP7kHA8)aqOVxAO2ztMX>xXTVG45e zpOaP7|4Tv8e;|IhSNVdKO&_&JMUnk1viT9Wwr=Z-nbMT|X_d!o+I8C?Y3N$q)K@B5 z6O$z|0xzOH;?YcLT;KtI`OvQW2KMX_dv*=&7ai?Ah>6Ovbhc<!!M~HDOLWVNq)64c zIUOCMqw@}GBb;l^G#!qB_-KZFRc!HU83ioI7?`F(SLXgU>d~njd|C?RyAD9VPC_^{ zoXNt3RjkIal>>^a)g?N*`7$XwQfr4s(z){bxg(keMp5L)sOkQ&nVKAh#i9%B8`|FL z)g4SkCv1?8o};U(iq<1jR&K;HhaM3fqLY#ykywbN7k+LSvM{VeW42+}D27pH>?j<Q z9TVvy)wF&9tw*+7LtKtbSuLLbq8z-an4c<)SaOnMaA$H=R10))Vx8AOZ^&te(k4u| zu}op2ynnR)(CAgf^I|D4;KY?flbA;N;Ug9X8~mNgl`Pb}RI`2GzQO)od;9k9Sh_u* zFN|h#)Z3k1qO-duE$~Q`p{Z9h>|X}3UeVQFp3&7Kx)S9X-5sL4Gmw!K-KpyFd{M4< zjrXN<*3`6B5U8hgC3$$$-n{E{)SO30M9)`wHC%@NLEC6ym`r1G6>_HZc)9W3r07l6 zm$kE_9mBM}yPWCi5<S6;UXchiGJ!#ps2<wcH@HLe?b%Z|G@dS4ec7x?Bt;^%xJVyI zdBrVPPIif8KsnhfQUT>uk4OdF*V`d_JC_uX=0?V`qGcX;mz;(D)>wKfTUu7WR&-)O zcLsBkqB9l9>FN?)-NBq*(cK=%>FyETiN!P$U0>2N8MxouBYG2|RSGLmd(d`Ihv*6A zBt=iKHi<5g2-YUqA(FvT$)rdIOQpI*Dp)GjD|*|j@e)&X^omY-)!8FD6K-Bthv@2* zS4q*8a<96vigs6GIu%Q1(V|td%4@KDzqd>DcGr+%FD(pGvb$IG$g7?n(IdqZ9U>vc k6TKoS?<RXhQr=B<h?KmW!fKtW8W`NMeMkR}A#axbH<Z;)>;M1& literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.txt new file mode 100644 index 0000000..1a99082 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.txt @@ -0,0 +1,15 @@ +generating traces for scope 1 +completed Command_and_Control: 1 traces (0 MARKed) 5 events + +completed On_Scene_Commander: 1 traces (0 MARKed) 12 events + +completed PID: 1 traces (0 MARKed) 4 events + +completed Physical_Environment: 1 traces (0 MARKed) 2 events + +completed SAR_Assets: 1 traces (0 MARKed) 8 events + +completed Wide_Range_Search_for_Wreckage_and_Survivors: 1 traces (0 MARKed) 32 events + +Elapsed time 0.007554 sec, Speed: 8339.95 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.cpp new file mode 100644 index 0000000..bd3e959 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.cpp @@ -0,0 +1,541 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Employee_Employer trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_SendArrivalDate + , Event_MedicalCheck + , Event_ReadyToWork + , Event_EmployeeArrival + , Event_Fill_HR_DB + , Event_ProvideOffice + , Event_ProvideComputer + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_29_30 + // ADD operations + // ROOT events + , Event_Employee + , Event_Employer + // main schema event + , Event_Employee_Employer }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "SendArrivalDate" + , "MedicalCheck" + , "ReadyToWork" + , "EmployeeArrival" + , "Fill_HR_DB" + , "ProvideOffice" + , "ProvideComputer" + , "SIMPLE_LIST_29_30" + , "Employee" + , "Employer" + , "Employee_Employer" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_29_30_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_29_30_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Employee_source = Root_table[Event_Employee]; + // lists of shared events for Employee + vector<int> Employee_MedicalCheck_list; + vector<int> Employee_ReadyToWork_list; + + int Employer_source = Root_table[Event_Employer]; + // lists of shared events for Employer + vector<int> Employer_MedicalCheck_list; + vector<int> Employer_ReadyToWork_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Employee_source ]){ + if( Stack[i]->name == Event_MedicalCheck ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Employee_MedicalCheck_list.begin(); + s != Employee_MedicalCheck_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Employee_MedicalCheck_list.push_back(i); + } + if( Stack[i]->name == Event_ReadyToWork ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Employee_ReadyToWork_list.begin(); + s != Employee_ReadyToWork_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Employee_ReadyToWork_list.push_back(i); + } + }; + if(in_matrix[i * len + Employer_source ]){ + if( Stack[i]->name == Event_MedicalCheck ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Employer_MedicalCheck_list.begin(); + s != Employer_MedicalCheck_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Employer_MedicalCheck_list.push_back(i); + } + if( Stack[i]->name == Event_ReadyToWork ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Employer_ReadyToWork_list.begin(); + s != Employer_ReadyToWork_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Employer_ReadyToWork_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Employer_MedicalCheck_list.size(); + if(Employee_MedicalCheck_list.size() != len_to_compare) throw failed ; + len_to_compare = Employer_ReadyToWork_list.size(); + if(Employee_ReadyToWork_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Employer_MedicalCheck_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Employee_MedicalCheck_list[i], Employer_MedicalCheck_list[i]); + } + len_to_compare = Employer_ReadyToWork_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Employee_ReadyToWork_list[i], Employer_ReadyToWork_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Employee_source = Root_table[Event_Employee]; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int Employer_source = Root_table[Event_Employer]; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Employee_source ]){ + if( ( (Stack[i]->name == Event_SendArrivalDate)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + Employer_source ]){ + if( ( (Stack[i]->name == Event_EmployeeArrival)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Employer_source = Root_table[Event_Employer]; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Employer_source ]){ + if( ( (Stack[i]->name == Event_Fill_HR_DB)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + Employer_source ]){ + if( ( (Stack[i]->name == Event_ProvideComputer)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_29_30_ob class + +//---- 2 ---- +class Sq_1_2 : public AND_node_producer_container { +public: // constructor + Sq_1_2 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_SendArrivalDate); + element[ 1 ]= new Atomic_producer(Event_MedicalCheck); + element[ 2 ]= new Atomic_producer(Event_ReadyToWork); + } +};// end class Sq_1_2 + +//---- 3 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Fill_HR_DB); + element[ 1 ]= new Atomic_producer(Event_MedicalCheck); + } +};// end class Sq_5_6 + +//---- 4 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_ProvideOffice); + element[ 1 ]= new Atomic_producer(Event_ProvideComputer); + } +};// end class Sq_7_8 + +//---- 5 ---- +class Set_9_10 : public SET_node_producer_container { +public: // constructor + Set_9_10 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_5_6 ; + element[ 1 ]= new Sq_7_8 ; + } +};// end class Set_9_10 + +//---- 6 ---- +class Sq_11_12 : public AND_node_producer_container { +public: // constructor + Sq_11_12 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_EmployeeArrival); + element[ 1 ]= new Set_9_10 ; + element[ 2 ]= new Atomic_producer(Event_ReadyToWork); + } +};// end class Sq_11_12 + +//---- 7 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Employee){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_1_2 ; + } +};// end class Comp_3_4 + +//---- 8 ---- +class Comp_13_14 : public Composite_producer { +public: // constructor + Comp_13_14 (): Composite_producer(Event_Employer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_11_12 ; + } +};// end class Comp_13_14 + +//---- 9 ---- +class SCHEMA_Employee_Employer: public Composite_producer { +public: // constructor + SCHEMA_Employee_Employer(): Composite_producer(Event_Employee_Employer){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_Employee); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Employer); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_29_30_ob(Event_SIMPLE_LIST_29_30); + } +};// end class SCHEMA_Employee_Employer + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example09_Employee_Employer.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_10; temp_10.harvest(); + Comp_13_14 temp_11; temp_11.harvest(); + // harvesting traces for main schema + SCHEMA_Employee_Employer temp_12; temp_12.harvest(); + temp_12.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Employee_Employer"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.mp new file mode 100644 index 0000000..b442399 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.mp @@ -0,0 +1,50 @@ +/* Example9_Employee_Employer.mp + +The web site http://www.infoq.com/articles/bpelbpm +“Why BPEL is not the holy grail for BPM “ +provides an example of a process that can be described +in BPMN but not in BPEL. +It is claimed to be a challenge for process specification. + +Here is the description. +“When a new employee arrives at a company, a workflow is instantiated. +First a record needs to be created in the Human Resources database. +Simultaneously, an office has to be provided. +As soon as the Human Resources activity has been completed, +the employee can undergo a medical check. During that time, +a computer is provided. This is only possible when both an office +has been set up and an account created in the information system +from the human resource database. When both the computer and the +medical check have been performed, the employee is ready to work. +Of course, you may want to model this simple process differently, +but the point here is that you cannot define a structured +parallel workflow [in BPEL] that is equivalent to this one ..." + + Run for scope 1. The "Sequence" or "Swim Lanes" + layouts are the most appropriate for browsing traces here. + Some box reshuffling may be needed to improve the trace layout. +*/ + +SCHEMA Employee_Employer + +ROOT Employee: SendArrivalDate + MedicalCheck + ReadyToWork; + +ROOT Employer: EmployeeArrival + /* these are concurrent threads */ + { Fill_HR_DB MedicalCheck, + ProvideOffice ProvideComputer } + ReadyToWork; + +Employee, Employer SHARE ALL MedicalCheck, ReadyToWork; + +/* coordination of two events in different threads */ +COORDINATE $a: SendArrivalDate FROM Employee, + $b: EmployeeArrival FROM Employer + DO ADD $a PRECEDES $b; OD; + +/* coordination between two events deep inside the process */ +COORDINATE $a: Fill_HR_DB FROM Employer, + $b: ProvideComputer FROM Employer + DO ADD $a PRECEDES $b; OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.temp.txt new file mode 100644 index 0000000..9275d97 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example09_Employee_Employer tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.tree new file mode 100644 index 0000000000000000000000000000000000000000..443d1d229c1b5192f58b56554752a56f354d6bb8 GIT binary patch literal 5632 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 Tcyi~&=*Vbsbn^fDx2*ra?iL|E literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.txt new file mode 100644 index 0000000..e250102 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.txt @@ -0,0 +1,9 @@ +generating traces for scope 1 +completed Employee: 1 traces (0 MARKed) 4 events + +completed Employer: 1 traces (0 MARKed) 7 events + +completed Employee_Employer: 1 traces (0 MARKed) 12 events + +Elapsed time 0.000332 sec, Speed: 69277.1 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.cpp new file mode 100644 index 0000000..404ebe7 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.cpp @@ -0,0 +1,1176 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Pipe_Filter trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_send + , Event_receive + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_29_30 + , Event_SIMPLE_LIST_39_40 + , Event_SIMPLE_LIST_65_66 + , Event_SIMPLE_LIST_75_76 + , Event_SIMPLE_LIST_103_104 + // ADD operations + // ROOT events + , Event_Producer + , Event_Filter1 + , Event_Filter2 + , Event_Consumer + // main schema event + , Event_Pipe_Filter }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "send" + , "receive" + , "SIMPLE_LIST_29_30" + , "SIMPLE_LIST_39_40" + , "SIMPLE_LIST_65_66" + , "SIMPLE_LIST_75_76" + , "SIMPLE_LIST_103_104" + , "Producer" + , "Filter1" + , "Filter2" + , "Consumer" + , "Pipe_Filter" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_11(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_12(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_19(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_20(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_47(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 6 ---- +int special_function_48(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 7 ---- +int special_function_55(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 8 ---- +int special_function_56(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 9 ---- +int special_function_87(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 10 ---- +int special_function_88(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 11 ---- +int special_function_89(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 12 ---- +int special_function_90(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 13 ---- +int special_function_93(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 14 ---- +int special_function_94(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 15 ---- +bool Quantified_expr_13_14(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int s_variable; + int pivot_s_variable = 0; + + // loop 1 for s_variable + for( s_variable = 0; s_variable < len; s_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ s_variable * len + pivot_s_variable +]) && + ( + (Stack[s_variable]-> name == Event_send) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_11(current_host, s_variable ) > special_function_12(current_host, +s_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 16 ---- +bool Quantified_expr_49_50(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int s_variable; + int pivot_s_variable = 0; + + // loop 1 for s_variable + for( s_variable = 0; s_variable < len; s_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ s_variable * len + pivot_s_variable +]) && + ( + (Stack[s_variable]-> name == Event_send) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_47(current_host, s_variable ) > special_function_48(current_host, +s_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 17 ---- +class SIMPLE_LIST_29_30_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_29_30_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_13_14(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( ( special_function_19(current_host, Root_table[Event_Filter1])!= special_function_20(current_host, Root_table[Event_Filter1])) +){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"some messages have been lost in Filter1"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_29_30_ob class + +//---- 18 ---- +class SIMPLE_LIST_39_40_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_39_40_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int Producer_source = Root_table[Event_Producer]; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + int Filter1_source = Root_table[Event_Filter1]; // source of coordination + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Producer_source ]){ + if( ( (Stack[i]->name == Event_send)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + Filter1_source ]){ + if( ( (Stack[i]->name == Event_receive)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_39_40_ob class + +//---- 19 ---- +class SIMPLE_LIST_65_66_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_65_66_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_49_50(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( ( special_function_55(current_host, Root_table[Event_Filter2])!= special_function_56(current_host, Root_table[Event_Filter2])) +){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"some messages have been lost in Filter2"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_65_66_ob class + +//---- 20 ---- +class SIMPLE_LIST_75_76_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_75_76_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int Filter1_source = Root_table[Event_Filter1]; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + int Filter2_source = Root_table[Event_Filter2]; // source of coordination + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Filter1_source ]){ + if( ( (Stack[i]->name == Event_send)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + Filter2_source ]){ + if( ( (Stack[i]->name == Event_receive)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_75_76_ob class + +//---- 21 ---- +class SIMPLE_LIST_103_104_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_103_104_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int Filter2_source = Root_table[Event_Filter2]; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + int Consumer_source = Root_table[Event_Consumer]; // source of coordination + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Filter2_source ]){ + if( ( (Stack[i]->name == Event_send)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + Consumer_source ]){ + if( ( (Stack[i]->name == Event_receive)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + if( ( special_function_87(current_host, Root_table[Event_Consumer])!= special_function_88(current_host, Root_table[Event_Producer])) +){ + { // SAY_event generation + string message; + ostringstream convert; + convert << ( special_function_93(current_host, Root_table[Event_Producer])- + special_function_94(current_host, Root_table[Event_Consumer])); + convert <<" messages did not reach Consumer"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + Mark = 'M'; // MARK + }// end THEN + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_103_104_ob class + +//---- 22 ---- +class Itr_1_2 : public OR_node_producer_container { +public: // constructor + Itr_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_send); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_1_2 + +//---- 23 ---- +class Itr_5_6 : public OR_node_producer_container { +public: // constructor + Itr_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_send); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_5_6 + +//---- 24 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_receive); + element[ 1 ]= new Itr_5_6 ; + } +};// end class Sq_7_8 + +//---- 25 ---- +class Itr_9_10 : public OR_node_producer_container { +public: // constructor + Itr_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_7_8 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_9_10 + +//---- 26 ---- +class Itr_41_42 : public OR_node_producer_container { +public: // constructor + Itr_41_42 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_send); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_41_42 + +//---- 27 ---- +class Sq_43_44 : public AND_node_producer_container { +public: // constructor + Sq_43_44 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_receive); + element[ 1 ]= new Itr_41_42 ; + } +};// end class Sq_43_44 + +//---- 28 ---- +class Itr_45_46 : public OR_node_producer_container { +public: // constructor + Itr_45_46 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_43_44 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_45_46 + +//---- 29 ---- +class Itr_77_78 : public OR_node_producer_container { +public: // constructor + Itr_77_78 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_receive); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_77_78 + +//---- 30 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Producer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_1_2 ; + } +};// end class Comp_3_4 + +//---- 31 ---- +class Comp_31_32 : public Composite_producer { +public: // constructor + Comp_31_32 (): Composite_producer(Event_Filter1){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_9_10 ; + element[ 1 ]= new SIMPLE_LIST_29_30_ob(Event_SIMPLE_LIST_29_30); + } +};// end class Comp_31_32 + +//---- 32 ---- +class Comp_67_68 : public Composite_producer { +public: // constructor + Comp_67_68 (): Composite_producer(Event_Filter2){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_45_46 ; + element[ 1 ]= new SIMPLE_LIST_65_66_ob(Event_SIMPLE_LIST_65_66); + } +};// end class Comp_67_68 + +//---- 33 ---- +class Comp_79_80 : public Composite_producer { +public: // constructor + Comp_79_80 (): Composite_producer(Event_Consumer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_77_78 ; + } +};// end class Comp_79_80 + +//---- 34 ---- +class SCHEMA_Pipe_Filter: public Composite_producer { +public: // constructor + SCHEMA_Pipe_Filter(): Composite_producer(Event_Pipe_Filter){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 7 ]; + element[0]= new Composite_secondary_producer(Event_Producer); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Filter1); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_39_40_ob(Event_SIMPLE_LIST_39_40); + element[3]= new Composite_secondary_producer(Event_Filter2); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_75_76_ob(Event_SIMPLE_LIST_75_76); + element[5]= new Composite_secondary_producer(Event_Consumer); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_103_104_ob(Event_SIMPLE_LIST_103_104); + } +};// end class SCHEMA_Pipe_Filter + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example10_Pipe_Filter.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_35; temp_35.harvest(); + Comp_31_32 temp_36; temp_36.harvest(); + Comp_67_68 temp_37; temp_37.harvest(); + Comp_79_80 temp_38; temp_38.harvest(); + // harvesting traces for main schema + SCHEMA_Pipe_Filter temp_39; temp_39.harvest(); + temp_39.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Pipe_Filter"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.mp new file mode 100644 index 0000000..63896c9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.mp @@ -0,0 +1,55 @@ +/* Example10_Pipe_Filter.mp + pipe/filter architecture model with 2 filters + + assumptions: + 1) not all items sent by Producer will be received by Consumer, + 2) after a message has been sent, it cannot be send repeatedly, + 3) received message can stay in the Filter for while, + before being sent (if at all). +*/ + +SCHEMA Pipe_Filter + +ROOT Producer: (* send *); + +ROOT Filter1: (* receive (* send *) *) +/* Filter can send only after receive */ + BUILD { /* can send only what has been received */ + ENSURE FOREACH $s: send + (#receive BEFORE $s > #send BEFORE $s); + + /* not everything received will be sent */ + IF #send != #receive THEN + SAY("some messages have been lost in Filter1" ); FI; + }; + +COORDINATE $s: send FROM Producer, + $r: receive FROM Filter1 + DO ADD $s PRECEDES $r; OD; + +ROOT Filter2: (* receive (* send *) *) +/* Filter can send only after receive */ + BUILD { /* can send only what has been received */ + ENSURE FOREACH $s: send + (#receive BEFORE $s > #send BEFORE $s); + + /* not everything received will be sent */ + IF #send != #receive THEN + SAY("some messages have been lost in Filter2" ); FI; + }; + +COORDINATE $s: send FROM Filter1, + $r: receive FROM Filter2 + DO ADD $s PRECEDES $r; OD; + +ROOT Consumer: (* receive *); + +COORDINATE $s: send FROM Filter2, + $r: receive FROM Consumer + DO ADD $s PRECEDES $r; OD; + +IF #receive FROM Consumer != #send FROM Producer THEN + SAY( #send FROM Producer - #receive FROM Consumer + " messages did not reach Consumer"); + MARK; +FI; \ No newline at end of file diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.temp.txt new file mode 100644 index 0000000..b7135b1 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example10_Pipe_Filter tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.tree new file mode 100644 index 0000000000000000000000000000000000000000..cd2418e386c88f4eaded41a0babb08d2c02d91cd GIT binary patch literal 14848 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.txt new file mode 100644 index 0000000..ac7ea05 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.txt @@ -0,0 +1,18 @@ +generating traces for scope 1 +completed Producer: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed Filter1: 3 traces (0 MARKed) 7 events + average 2.33333 ev/trace min 1 max 3 + +completed Filter2: 3 traces (0 MARKed) 7 events + average 2.33333 ev/trace min 1 max 3 + +completed Consumer: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed Pipe_Filter: 4 traces (2 MARKed) 36 events + average 9 ev/trace min 5 max 11 + +Elapsed time 0.000711 sec, Speed: 78762.3 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.cpp new file mode 100644 index 0000000..8665c0b --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.cpp @@ -0,0 +1,1213 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Publish_Subscribe trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Register + , Event_Unsubscribe + , Event_Send + , Event_Receive + // composite events + , Event_Client + // top coordination operations + , Event_Coordinate_45_46 + , Event_Coordinate_49_50 + // top conditional and simple action operations + , Event_SIMPLE_LIST_29_30 + , Event_SIMPLE_LIST_86_87 + // ADD operations + // ROOT events + , Event_Publisher + , Event_Subscribers + // main schema event + , Event_Publish_Subscribe }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Register" + , "Unsubscribe" + , "Send" + , "Receive" + , "Client" + , "Coordinate_45_46" + , "Coordinate_49_50" + , "SIMPLE_LIST_29_30" + , "SIMPLE_LIST_86_87" + , "Publisher" + , "Subscribers" + , "Publish_Subscribe" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Event_comparison_expr_51_52 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 AFTER temp2 + return (bool)( (current_host ->follows_matrix)[temp1 * len + temp2]); + } + +//---- 2 ---- +bool Event_comparison_expr_53_54 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 BEFORE temp2 + return (bool)( (current_host ->follows_matrix)[temp2 * len + temp1]); + } + +//---- 3 ---- +int special_function_7(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Register){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_8(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Unsubscribe){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_13(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Register){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 6 ---- +int special_function_14(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Unsubscribe){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 7 ---- +int special_function_21(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Register){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 8 ---- +int special_function_22(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Unsubscribe){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 9 ---- +int special_function_69(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(find_pair_in_table( i, pivot, Follows )) { + if( Stack[i]->name == Event_Receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 10 ---- +int special_function_72(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(find_pair_in_table( i, pivot, Follows )) { + if( Stack[i]->name == Event_Receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 11 ---- +bool Quantified_expr_15_16(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int u_variable; + int pivot_u_variable = 0; + + // loop 1 for u_variable + for( u_variable = 0; u_variable < len; u_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ u_variable * len + pivot_u_variable +]) && + ( + (Stack[u_variable]-> name == Event_Unsubscribe) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_13(current_host, u_variable ) > special_function_14(current_host, +u_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 12 ---- +bool Quantified_expr_23_24(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int s_variable; + int pivot_s_variable = 0; + + // loop 1 for s_variable + for( s_variable = 0; s_variable < len; s_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ s_variable * len + pivot_s_variable +]) && + ( + (Stack[s_variable]-> name == Event_Send) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_21(current_host, s_variable ) > special_function_22(current_host, +s_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 13 ---- +class SIMPLE_LIST_29_30_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_29_30_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( special_function_7(current_host, Root_table[Event_Publisher])== special_function_8(current_host, Root_table[Event_Publisher])) +){} + else{ + throw failed; // REJECT + }// end IF + if( Quantified_expr_15_16(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( Quantified_expr_23_24(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_29_30_ob class + +//---- 14 ---- +class SIMPLE_LIST_86_87_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_86_87_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int client_variable; // thread variable + vector<int> client_variable_list; // list of coordinated events + int Subscribers_source = Root_table[Event_Subscribers] +; // source of coordination + + // create lists of coordinated events + // preparing thread for client_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + client_variable = i; + if( client_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Subscribers_source ]){ + if( ( (Stack[i]->name == Event_Client)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = client_variable_list.begin(); s != client_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) client_variable_list.push_back(i); + } + } }; + // no processing needed for the default source client_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = client_variable_list.size(); + if(thread_length != client_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + client_variable= client_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int reg_variable; // thread variable + vector<int> reg_variable_list; // list of coordinated events + int uns_variable; // thread variable + vector<int> uns_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for reg_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + reg_variable = i; + if( reg_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + client_variable ]){ + if( ( (Stack[i]->name == Event_Register)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = reg_variable_list.begin(); s != reg_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) reg_variable_list.push_back(i); + } + } }; + // no processing needed for the default source reg_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = reg_variable_list.size(); + if(thread_length != reg_variable_list.size()) throw failed; + + // preparing thread for uns_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + uns_variable = i; + if( uns_variable_list.size() == thread_length){ + reg_variable = 0; } + else{ + reg_variable = reg_variable_list[uns_variable_list.size()];}; + if(in_matrix[i * len + client_variable ]){ + if( ( (Stack[i]->name == Event_Unsubscribe)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = uns_variable_list.begin(); s != uns_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) uns_variable_list.push_back(i); + } + } }; + // no processing needed for the default source uns_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = uns_variable_list.size(); + if(thread_length != uns_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + reg_variable= reg_variable_list[i]; + uns_variable= uns_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int Publisher_source = Root_table[Event_Publisher]; // source of coordination + + + // create lists of coordinated events + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + client_variable ]){ + if( ( (Stack[i]->name == Event_Receive)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){ + r_variable = 0; } + else{ + r_variable = r_variable_list[s_variable_list.size()];}; + if(in_matrix[i * len + Publisher_source ]){ + if( ( (Stack[i]->name == Event_Send)) && ( Event_comparison_expr_51_52 +(current_host, s_variable , reg_variable ) && Event_comparison_expr_53_54 +(current_host, s_variable , uns_variable ) ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + r_variable= r_variable_list[i]; + s_variable= s_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Send)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + if( ( special_function_69(current_host, s_variable ) > 1 )){ + Mark = 'M'; // MARK + // ADD operation + { // SAY_event generation + string message; + ostringstream convert; + convert <<"this Send is received by "; + convert << special_function_72(current_host, s_variable ) ; + convert <<" Clients"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + int temp_75 = Stack.size() - 1; + Follows.insert(pair<int, int>(s_variable,temp_75)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end THEN + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_86_87_ob class + +//---- 15 ---- +class Coordinate_45_46_ob: public Coordinate { +public: + //**** COORDINATE with asynchronous sources **** + Coordination_source * source[ 1 ]; + // Atomic_producer, Composite_event_instance, Coordinate_event_ob + // set the global derivation_path_mark + int current_path; + int unique_id; + // for traverse() to detect when no more options remain + int completeness_count; + int activated_source_count; + + // constructor + Coordinate_45_46_ob(int n): Coordinate(n){ + unique_id = get_unique_number(); + // remember path where we start to produce permutations + current_path = -20; + // initialize all sources + for(int i = 0; i < 1 ; i++) source[i] = new Coordination_source; + } + + // to overload the inherited hold() from Event_producer via Coordinate + void hold(){ + for(int k = 0; k < 1 ; k++) source[k]->hold_source(); } + +Traversal_result traverse(){ + //*** traverse with permutation generation + completeness_count = 0; activated_source_count= 0; + if(current_path != derivation_path_mark){ + current_path = derivation_path_mark; + // prepare to repeat the permutation cycle + for(int k = 0; k < 1 ; k++) source[k]->reset(); + }; + + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int r1_variable; // thread variable + vector<int> r1_variable_list; // list of coordinated events + int Publisher_source = Root_table[Event_Publisher]; // source of coordination + + int r2_variable; // thread variable + vector<int> r2_variable_list; // list of coordinated events + int Subscribers_source = Root_table[Event_Subscribers] +; // source of coordination + + // create lists of coordinated events + // preparing thread for r1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r1_variable = i; + if( r1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Publisher_source ]){ + if( ( (Stack[i]->name == Event_Register)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r1_variable_list.begin(); s != r1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r1_variable_list.size(); + if(thread_length != r1_variable_list.size()) throw failed; + + // preparing thread for r2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r2_variable = i; + if( r2_variable_list.size() == thread_length){ + r1_variable = 0; } + else{ + r1_variable = r1_variable_list[r2_variable_list.size()];}; + if(in_matrix[i * len + Subscribers_source ]){ + if( ( (Stack[i]->name == Event_Register)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r2_variable_list.begin(); s != r2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r2_variable_list.push_back(i); + } + } }; + // **** <!> source with permutations **** + activated_source_count++; + // get next permutation + switch(source[ 0 ] -> get_permutation( r2_variable_list) ){ + case success_and_completed: completeness_count++; + break; + case success_and_ready_for_next: + // hold all previous Coordination sources + // until source[ 0 ] completes + for(int k = 0; k < 0 ; k++) source[k]->hold_source(); + default:; // to avoid C++ warnings + };// end switch + // reset all following sources preparing to repeat the permutation cycle + if(!(source[ 0 ] -> was_on_hold)) { + for(int k = 0 + 1; k < 1 ; k++) source[k]->reset(); + }; + source[ 0 ] -> was_on_hold = false; + // if has proceeded so far r2_variable_list is ready + + // finally check the thread length + if(thread_length < 0) thread_length = r2_variable_list.size(); + if(thread_length != r2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + r1_variable= r1_variable_list[i]; + r2_variable= r2_variable_list[i]; + // SHARE_clause , throws failed exception if cannot complete + make_equality_complete( r1_variable , r2_variable ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } + catch(Traversal_result t){ + return failed; + } + return (completeness_count == activated_source_count)? + success_and_completed: success_and_ready_for_next; + } // end traverse() +}; // end Coordinate_45_46_ob class + +//---- 16 ---- +class Coordinate_49_50_ob: public Coordinate { +public: + //**** COORDINATE with asynchronous sources **** + Coordination_source * source[ 1 ]; + // Atomic_producer, Composite_event_instance, Coordinate_event_ob + // set the global derivation_path_mark + int current_path; + int unique_id; + // for traverse() to detect when no more options remain + int completeness_count; + int activated_source_count; + + // constructor + Coordinate_49_50_ob(int n): Coordinate(n){ + unique_id = get_unique_number(); + // remember path where we start to produce permutations + current_path = -20; + // initialize all sources + for(int i = 0; i < 1 ; i++) source[i] = new Coordination_source; + } + + // to overload the inherited hold() from Event_producer via Coordinate + void hold(){ + for(int k = 0; k < 1 ; k++) source[k]->hold_source(); } + +Traversal_result traverse(){ + //*** traverse with permutation generation + completeness_count = 0; activated_source_count= 0; + if(current_path != derivation_path_mark){ + current_path = derivation_path_mark; + // prepare to repeat the permutation cycle + for(int k = 0; k < 1 ; k++) source[k]->reset(); + }; + + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int u1_variable; // thread variable + vector<int> u1_variable_list; // list of coordinated events + int Publisher_source = Root_table[Event_Publisher]; // source of coordination + + int u2_variable; // thread variable + vector<int> u2_variable_list; // list of coordinated events + int Subscribers_source = Root_table[Event_Subscribers] +; // source of coordination + + // create lists of coordinated events + // preparing thread for u1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + u1_variable = i; + if( u1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Publisher_source ]){ + if( ( (Stack[i]->name == Event_Unsubscribe)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = u1_variable_list.begin(); s != u1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) u1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source u1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = u1_variable_list.size(); + if(thread_length != u1_variable_list.size()) throw failed; + + // preparing thread for u2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + u2_variable = i; + if( u2_variable_list.size() == thread_length){ + u1_variable = 0; } + else{ + u1_variable = u1_variable_list[u2_variable_list.size()];}; + if(in_matrix[i * len + Subscribers_source ]){ + if( ( (Stack[i]->name == Event_Unsubscribe)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = u2_variable_list.begin(); s != u2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) u2_variable_list.push_back(i); + } + } }; + // **** <!> source with permutations **** + activated_source_count++; + // get next permutation + switch(source[ 0 ] -> get_permutation( u2_variable_list) ){ + case success_and_completed: completeness_count++; + break; + case success_and_ready_for_next: + // hold all previous Coordination sources + // until source[ 0 ] completes + for(int k = 0; k < 0 ; k++) source[k]->hold_source(); + default:; // to avoid C++ warnings + };// end switch + // reset all following sources preparing to repeat the permutation cycle + if(!(source[ 0 ] -> was_on_hold)) { + for(int k = 0 + 1; k < 1 ; k++) source[k]->reset(); + }; + source[ 0 ] -> was_on_hold = false; + // if has proceeded so far u2_variable_list is ready + + // finally check the thread length + if(thread_length < 0) thread_length = u2_variable_list.size(); + if(thread_length != u2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + u1_variable= u1_variable_list[i]; + u2_variable= u2_variable_list[i]; + // SHARE_clause , throws failed exception if cannot complete + make_equality_complete( u1_variable , u2_variable ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } + catch(Traversal_result t){ + return failed; + } + return (completeness_count == activated_source_count)? + success_and_completed: success_and_ready_for_next; + } // end traverse() +}; // end Coordinate_49_50_ob class + +//---- 17 ---- +class Itr_33_34 : public OR_node_producer_container { +public: // constructor + Itr_33_34 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_Receive); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_33_34 + +//---- 18 ---- +class Sq_35_36 : public AND_node_producer_container { +public: // constructor + Sq_35_36 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Register); + element[ 1 ]= new Itr_33_34 ; + element[ 2 ]= new Atomic_producer(Event_Unsubscribe); + } +};// end class Sq_35_36 + +//---- 19 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Register); + element[ 1 ]= new Atomic_producer(Event_Unsubscribe); + element[ 2 ]= new Atomic_producer(Event_Send); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Alt_1_2 + +//---- 20 ---- +class Ct_88_89 : public AND_node_producer_container { +public: // constructor + Ct_88_89 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_1_2 ; + element[ 1 ]= new Alt_1_2 ; + } +};// end class Ct_88_89 + +//---- 21 ---- +class Ct_90_91 : public AND_node_producer_container { +public: // constructor + Ct_90_91 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_1_2 ; + element[ 1 ]= new Alt_1_2 ; + element[ 2 ]= new Alt_1_2 ; + } +};// end class Ct_90_91 + +//---- 22 ---- +class Ct_92_93 : public AND_node_producer_container { +public: // constructor + Ct_92_93 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Alt_1_2 ; + element[ 1 ]= new Alt_1_2 ; + element[ 2 ]= new Alt_1_2 ; + element[ 3 ]= new Alt_1_2 ; + } +};// end class Ct_92_93 + +//---- 23 ---- +class Ct_94_95 : public AND_node_producer_container { +public: // constructor + Ct_94_95 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Alt_1_2 ; + element[ 1 ]= new Alt_1_2 ; + element[ 2 ]= new Alt_1_2 ; + element[ 3 ]= new Alt_1_2 ; + element[ 4 ]= new Alt_1_2 ; + } +};// end class Ct_94_95 + +//---- 24 ---- +class Itp_3_4 : public OR_node_producer_container { +public: // constructor + Itp_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Ct_88_89 ; + element[ 1 ]= new Ct_90_91 ; + element[ 2 ]= new Ct_92_93 ; + element[ 3 ]= new Ct_94_95 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itp_3_4 + +//---- 25 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Register); + element[ 1 ]= new Itp_3_4 ; + } +};// end class Sq_5_6 + +//---- 26 ---- +class Comp_37_38 : public Composite_producer { +public: // constructor + Comp_37_38 (): Composite_producer(Event_Client){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_35_36 ; + } +};// end class Comp_37_38 + +//---- 27 ---- +class Comp_31_32 : public Composite_producer { +public: // constructor + Comp_31_32 (): Composite_producer(Event_Publisher){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_5_6 ; + element[ 1 ]= new SIMPLE_LIST_29_30_ob(Event_SIMPLE_LIST_29_30); + } +};// end class Comp_31_32 + +//---- 28 ---- +class Comp_41_42 : public Composite_producer { +public: // constructor + Comp_41_42 (): Composite_producer(Event_Subscribers){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Client); + } +};// end class Comp_41_42 + +//---- 29 ---- +class SCHEMA_Publish_Subscribe: public Composite_producer { +public: // constructor + SCHEMA_Publish_Subscribe(): Composite_producer(Event_Publish_Subscribe){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 5 ]; + element[0]= new Composite_secondary_producer(Event_Publisher); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Subscribers); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new Coordinate_45_46_ob(Event_Coordinate_45_46); + element[3]= new Coordinate_49_50_ob(Event_Coordinate_49_50); + element[4]= new SIMPLE_LIST_86_87_ob(Event_SIMPLE_LIST_86_87); + } +};// end class SCHEMA_Publish_Subscribe + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example11_Publish_Subscribe.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_37_38 temp_30; temp_30.harvest(); + // harvesting traces for ROOT events + Comp_31_32 temp_31; temp_31.harvest(); + Comp_41_42 temp_32; temp_32.harvest(); + // harvesting traces for main schema + SCHEMA_Publish_Subscribe temp_33; temp_33.harvest(); + temp_33.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Publish_Subscribe"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.mp new file mode 100644 index 0000000..b885a2e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.mp @@ -0,0 +1,89 @@ +/* Example 11 Publish/Subscribe architecture model. + + Publisher sends a notification to all active Subscribers + when new information is available. + + scope 1, 1 trace in less than 1 sec. + scope 2, 51 traces in less than 1 sec. + scope 3 3813 traces in approx. 5 min. +*/ + +SCHEMA Publish_Subscribe + +ROOT Publisher: Register + (+ <2 .. 3 + $$scope * 2> ( Register | Unsubscribe | Send ) +) +/* Iteration_scope <2 .. 3 + $$scope * 2> is needed to provide enough events for + coordination, since each Client has Register/Unsubscribe event pair, + plus some Receive events */ + +BUILD{ + /* The Register and Unsubscribe events should be balanced */ + ENSURE #Register == #Unsubscribe; + + ENSURE FOREACH $u: Unsubscribe #Register BEFORE $u > #Unsubscribe BEFORE $u; + + /* Publisher will Send only if there is at least one active Client. + This condition is specified with ENSURE. */ + + ENSURE FOREACH $s: Send #Register BEFORE $s > #Unsubscribe BEFORE $s; + }; + +Client: Register (* Receive *) Unsubscribe; + +ROOT Subscribers: {+ Client +}; + +/****** Coordination between Publisher and Subscribers ******/ +/* The ordering of composition operations is important, since Register and + Unsubscribe events are used to coordinate Send/Receive between + Publisher and Client. + + First, we do SHARE ALL for Register events, + next will try all valid permutations of Register/Unsubscribe, + and then proceed with further coordination of Send/Receive, + using the shared Register and Unsubscribe events as pivots + to coordinate Send events for each Client */ + + /* Need to try all possible permutations of Register/Unsubscribe pairs, + hence the use of <!> event reshuffling */ +COORDINATE $r1: Register FROM Publisher, + <!> $r2: Register FROM Subscribers + DO SHARE $r1 $r2; OD; + +COORDINATE $u1: Unsubscribe FROM Publisher, + <!> $u2: Unsubscribe FROM Subscribers + DO SHARE $u1 $u2; OD; + +/* the following coordination is performed + for each valid permutation of Register/Unsubscribe */ +COORDINATE $client: Client FROM Subscribers + DO COORDINATE $reg: Register FROM $client, + $uns: Unsubscribe FROM $client + + /* For Send event selection to coordinate with a particular + Client event, the SUCH THAT thread condition is used. + Client will Receive all and only Send between his Register and Unsubscribe */ + DO COORDINATE $r: Receive FROM $client, + $s: Send FROM Publisher + SUCH THAT $s AFTER $reg AND $s BEFORE $uns + + /* Register and Unsubscribe events have been shared and now can be used + to select appropriate Receive events from the Client and + Send events from the Publisher for coordination */ + + DO ADD $s PRECEDES $r; OD; + OD; + OD; + +/**** A query ******/ +/* It might be interesting to find out whether there are + Send events received by several Clients. + MARK traces containing such event configuration, and place + annotation pointing to the Send event of interest*/ +COORDINATE $s: Send +DO + IF (#Receive FOLLOWS $s > 1) THEN + MARK; + ADD SAY("this Send is received by " #Receive FOLLOWS $s " Clients") + PRECEDES $s; + FI; +OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.temp.txt new file mode 100644 index 0000000..a7efcec --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example11_Publish_Subscribe tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.tree new file mode 100644 index 0000000000000000000000000000000000000000..353c03265123fd31d0e4d8a367e271b81dd1687a GIT binary patch literal 14848 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 Qz@pe9v2fM?kHr6f0L^J`cK`qY literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.txt new file mode 100644 index 0000000..50f5c1e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.txt @@ -0,0 +1,14 @@ +generating traces for scope 1 +completed Client: 2 traces (0 MARKed) 7 events + average 3.5 ev/trace min 3 max 4 + +completed Publisher: 25 traces (0 MARKed) 160 events + average 6.4 ev/trace min 4 max 7 + +completed Subscribers: 2 traces (0 MARKed) 9 events + average 4.5 ev/trace min 4 max 5 + +completed Publish_Subscribe: 1 traces (0 MARKed) 10 events + +Elapsed time 0.006075 sec, Speed: 30617.3 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.cpp new file mode 100644 index 0000000..b1de57f --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.cpp @@ -0,0 +1,627 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA ring trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals + pair_list left_neighbor_of_UDR_set; + pair_list right_neighbor_of_UDR_set; +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + left_neighbor_of_UDR_set.clear(); + right_neighbor_of_UDR_set.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!left_neighbor_of_UDR_set.empty()) + UDRs.insert(pair<string, pair_list>("left_neighbor_of",left_neighbor_of_UDR_set)); + if(!right_neighbor_of_UDR_set.empty()) + UDRs.insert(pair<string, pair_list>("right_neighbor_of",right_neighbor_of_UDR_set)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + + if(p1->first == "left_neighbor_of"){ + for(p = (p1->second).begin(); p != (p1->second).end(); p++) + left_neighbor_of_UDR_set.insert(pair<int, int>(p->first + base, p->second + base));} + else + if(p1->first == "right_neighbor_of"){ + for(p = (p1->second).begin(); p != (p1->second).end(); p++) + right_neighbor_of_UDR_set.insert(pair<int, int>(p->first + base, p->second + base));} + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from left_neighbor_of_UDR_set + temp_list.clear(); + for(p = left_neighbor_of_UDR_set.begin(); p != left_neighbor_of_UDR_set.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + left_neighbor_of_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from right_neighbor_of_UDR_set + temp_list.clear(); + for(p = right_neighbor_of_UDR_set.begin(); p != right_neighbor_of_UDR_set.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + right_neighbor_of_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // merging from left_neighbor_of_UDR_set + // doing all adjustments to both a and b + temp_list.clear(); + for(p = left_neighbor_of_UDR_set.begin(); p != left_neighbor_of_UDR_set.end(); p++) { + if(p->second == b) + temp_list.insert(pair<int, int>(p->first, a)); + if(p->first == b) + temp_list.insert(pair<int, int>(a, p->second)); + if(p->second == a) + temp_list.insert(pair<int, int>(p->first, b)); + if(p->first == a) + temp_list.insert(pair<int, int>(b, p->second)); + }; + left_neighbor_of_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + // merging from right_neighbor_of_UDR_set + // doing all adjustments to both a and b + temp_list.clear(); + for(p = right_neighbor_of_UDR_set.begin(); p != right_neighbor_of_UDR_set.end(); p++) { + if(p->second == b) + temp_list.insert(pair<int, int>(p->first, a)); + if(p->first == b) + temp_list.insert(pair<int, int>(a, p->second)); + if(p->second == a) + temp_list.insert(pair<int, int>(p->first, b)); + if(p->first == a) + temp_list.insert(pair<int, int>(b, p->second)); + }; + right_neighbor_of_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_send_left + , Event_send_right + , Event_receive_from_left + , Event_receive_from_right + // composite events + , Event_Node + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_37_38 + // ADD operations + // ROOT events + , Event_Ring + // main schema event + , Event_ring }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "send_left" + , "send_right" + , "receive_from_left" + , "receive_from_right" + , "Node" + , "SIMPLE_LIST_37_38" + , "Ring" + , "ring" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_37_38_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_37_38_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int x1_variable; // thread variable + vector<int> x1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int x2_variable; // thread variable + vector<int> x2_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for x1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x1_variable = i; + if( x1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Node)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x1_variable_list.begin(); s != x1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x1_variable_list.size(); + if(thread_length != x1_variable_list.size()) throw failed; + + // preparing thread for x2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x2_variable = i; + if( x2_variable_list.size() == thread_length){ + x1_variable = 0; } + else{ + x1_variable = x1_variable_list[x2_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Node)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x2_variable_list.begin(); s != x2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x2_variable_list.push_back(i); + } + } }; + + // do the SHIFT_LEFT reshuffling + if(x2_variable_list.size() > 0) + rotate(x2_variable_list.begin(), x2_variable_list.begin() + 1, x2_variable_list.end()); + // finally check the thread length + if(thread_length < 0) thread_length = x2_variable_list.size(); + if(thread_length != x2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x1_variable= x1_variable_list[i]; + x2_variable= x2_variable_list[i]; + // ADD operation + left_neighbor_of_UDR_set.insert(pair<int, int>(x1_variable,x2_variable)); + right_neighbor_of_UDR_set.insert(pair<int, int>(x2_variable,x1_variable)); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int m_variable; // thread variable + vector<int> m_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for m_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + m_variable = i; + if( m_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Node)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = m_variable_list.begin(); s != m_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) m_variable_list.push_back(i); + } + } }; + // no processing needed for the default source m_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = m_variable_list.size(); + if(thread_length != m_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + m_variable= m_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int left_variable; // thread variable + vector<int> left_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for left_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + left_variable = i; + if( left_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Node)) && + find_pair_in_table( left_variable , m_variable , left_neighbor_of_UDR_set) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = left_variable_list.begin(); s != left_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) left_variable_list.push_back(i); + } + } }; + // no processing needed for the default source left_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = left_variable_list.size(); + if(thread_length != left_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + left_variable= left_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int s1_variable; // thread variable + vector<int> s1_variable_list; // list of coordinated events + int r1_variable; // thread variable + vector<int> r1_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s1_variable = i; + if( s1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + m_variable ]){ + if( ( (Stack[i]->name == Event_send_left)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s1_variable_list.begin(); s != s1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s1_variable_list.size(); + if(thread_length != s1_variable_list.size()) throw failed; + + // preparing thread for r1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r1_variable = i; + if( r1_variable_list.size() == thread_length){ + s1_variable = 0; } + else{ + s1_variable = s1_variable_list[r1_variable_list.size()];}; + if(in_matrix[i * len + left_variable ]){ + if( ( (Stack[i]->name == Event_receive_from_right)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r1_variable_list.begin(); s != r1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r1_variable_list.size(); + if(thread_length != r1_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s1_variable= s1_variable_list[i]; + r1_variable= r1_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r1_variable,s1_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int s1_variable; // thread variable + vector<int> s1_variable_list; // list of coordinated events + int r1_variable; // thread variable + vector<int> r1_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s1_variable = i; + if( s1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + left_variable ]){ + if( ( (Stack[i]->name == Event_send_right)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s1_variable_list.begin(); s != s1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s1_variable_list.size(); + if(thread_length != s1_variable_list.size()) throw failed; + + // preparing thread for r1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r1_variable = i; + if( r1_variable_list.size() == thread_length){ + s1_variable = 0; } + else{ + s1_variable = s1_variable_list[r1_variable_list.size()];}; + if(in_matrix[i * len + m_variable ]){ + if( ( (Stack[i]->name == Event_receive_from_left)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r1_variable_list.begin(); s != r1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r1_variable_list.size(); + if(thread_length != r1_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s1_variable= s1_variable_list[i]; + r1_variable= r1_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r1_variable,s1_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_37_38_ob class + +//---- 2 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_send_left); + element[ 1 ]= new Atomic_producer(Event_send_right); + element[ 2 ]= new Atomic_producer(Event_receive_from_left); + element[ 3 ]= new Atomic_producer(Event_receive_from_right); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Alt_1_2 + +//---- 3 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_3_4 + +//---- 4 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_Node){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_3_4 ; + } +};// end class Comp_5_6 + +//---- 5 ---- +class Comp_39_40 : public Composite_producer { +public: // constructor + Comp_39_40 (): Composite_producer(Event_Ring){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Node); + element[ 1 ]= new SIMPLE_LIST_37_38_ob(Event_SIMPLE_LIST_37_38); + } +};// end class Comp_39_40 + +//---- 6 ---- +class SCHEMA_ring: public Composite_producer { +public: // constructor + SCHEMA_ring(): Composite_producer(Event_ring){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 1 ]; + element[0]= new Composite_secondary_producer(Event_Ring); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + } +};// end class SCHEMA_ring + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example12_network_topology_ring.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_5_6 temp_7; temp_7.harvest(); + // harvesting traces for ROOT events + Comp_39_40 temp_8; temp_8.harvest(); + // harvesting traces for main schema + SCHEMA_ring temp_9; temp_9.harvest(); + temp_9.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"ring"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.mp new file mode 100644 index 0000000..d3dcba3 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.mp @@ -0,0 +1,75 @@ +/* ring.mp + ring topology + an example of user-defined relation use + + The following is a model of network ring, + where each node interacts with its left and right neighbors only. +------------------------------------------*/ + +SCHEMA ring +/* model of networking ring, where each node sends/receives +to/from its left and right neighbor. +*/ + +Node: (* ( send_left | send_right | + receive_from_left | receive_from_right ) *); + +ROOT Ring: {+ Node +} + +/* The following coordinations are done over the root Ring, + the ring may contain one or more Nodes */ +BUILD{ + +COORDINATE $x1: Node,/* This thread produces a default set */ +<SHIFT_LEFT> $x2: Node + +/* SHIFT_LEFT reshuffling, means that when the default set +of Node events is selected (all Node events from THIS), +it takes the first event from the +beginning and puts it to the end of sequence. +This adjusted thread is used to produce the ring topology */ + +DO +/* The COORDINATE loop proceeds to set up new relations between $x1 and its neighbor */ + ADD $x1 left_neighbor_of $x2, + $x2 right_neighbor_of $x1; +OD; + +/*----------------------------------------------------- +We assert the single ring property. +^R yields a transitive closure of the relation R. +Ring topology means that every node can be reached from any node in both directions. +Although it is possible to prove that the previous coordination sets the ring properly, +the following assertion check is provided for clarity to demonstrate how such +properties can be expressed in MP. +If uncommented, it will increase the trace generation time. +Assertions are mostly used for model testing/debugging. +You can uncomment it and try to run. +--------------------------------------------------------*/ + +/*---------------------------------------------------- +CHECK FOREACH $a: Node, $b: Node +( $a ^left_neighbor_of $b AND + $a ^right_neighbor_of $b ) +ONFAIL SAY("ring property violation detected!"); +-----------------------------------------------------*/ + +/* After the ring topology has been created, +we can coordinate message exchange between neighbors, +i.e. define the behavior of the ring */ + +COORDINATE $m: Node /* Default set, do the following for each Node */ + +DO COORDINATE $left: Node SUCH THAT $left left_neighbor_of $m + + DO + COORDINATE $s1: send_left FROM $m, + $r1: receive_from_right FROM $left + DO ADD $s1 PRECEDES $r1; OD; + + COORDINATE $s1: send_right FROM $left, + $r1: receive_from_left FROM $m + DO ADD $s1 PRECEDES $r1; OD; + OD; +OD; +}; /* end of the BUILD block for the root Ring */ diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.temp.txt new file mode 100644 index 0000000..2088504 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example12_network_topology_ring tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.tree new file mode 100644 index 0000000000000000000000000000000000000000..fd835226a8d77ab8f93bdb5cc7eaadfb808af85e GIT binary patch literal 8192 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 C>$+b6 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.txt new file mode 100644 index 0000000..331b073 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.txt @@ -0,0 +1,10 @@ +generating traces for scope 1 +completed Node: 5 traces (0 MARKed) 9 events + average 1.8 ev/trace min 1 max 2 + +completed Ring: 1 traces (0 MARKed) 2 events + +completed ring: 1 traces (0 MARKed) 3 events + +Elapsed time 0.000225 sec, Speed: 62222.2 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.cpp new file mode 100644 index 0000000..9488183 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.cpp @@ -0,0 +1,959 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA FiniteStateDiagram trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_a + , Event_b + , Event_Start + , Event_S1 + , Event_S2 + , Event_End + , Event_S3 + , Event_S4 + // composite events + , Event_S1_to_S3 + , Event_S1_to_S4 + , Event_S2_to_S1 + , Event_S3_to_S3 + , Event_S3_to_S4 + , Event_S4_to_S2 + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_31_32 + , Event_SIMPLE_LIST_49_50 + , Event_SIMPLE_LIST_79_80 + // ADD operations + // ROOT events + , Event_S1_behavior + , Event_S2_behavior + , Event_S3_behavior + , Event_S4_behavior + // main schema event + , Event_FiniteStateDiagram }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "a" + , "b" + , "Start" + , "S1" + , "S2" + , "End" + , "S3" + , "S4" + , "S1_to_S3" + , "S1_to_S4" + , "S2_to_S1" + , "S3_to_S3" + , "S3_to_S4" + , "S4_to_S2" + , "SIMPLE_LIST_31_32" + , "SIMPLE_LIST_49_50" + , "SIMPLE_LIST_79_80" + , "S1_behavior" + , "S2_behavior" + , "S3_behavior" + , "S4_behavior" + , "FiniteStateDiagram" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_31_32_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_31_32_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int S1_behavior_source = Root_table[Event_S1_behavior]; + // lists of shared events for S1_behavior + vector<int> S1_behavior_S2_to_S1_list; + + int S2_behavior_source = Root_table[Event_S2_behavior]; + // lists of shared events for S2_behavior + vector<int> S2_behavior_S2_to_S1_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S1_behavior_source ]){ + if( Stack[i]->name == Event_S2_to_S1 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S1_behavior_S2_to_S1_list.begin(); + s != S1_behavior_S2_to_S1_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S1_behavior_S2_to_S1_list.push_back(i); + } + }; + if(in_matrix[i * len + S2_behavior_source ]){ + if( Stack[i]->name == Event_S2_to_S1 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S2_behavior_S2_to_S1_list.begin(); + s != S2_behavior_S2_to_S1_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S2_behavior_S2_to_S1_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S2_behavior_S2_to_S1_list.size(); + if(S1_behavior_S2_to_S1_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S2_behavior_S2_to_S1_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S1_behavior_S2_to_S1_list[i], S2_behavior_S2_to_S1_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_31_32_ob class + +//---- 2 ---- +class SIMPLE_LIST_49_50_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_49_50_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int S3_behavior_source = Root_table[Event_S3_behavior]; + // lists of shared events for S3_behavior + vector<int> S3_behavior_S1_to_S3_list; + + int S1_behavior_source = Root_table[Event_S1_behavior]; + // lists of shared events for S1_behavior + vector<int> S1_behavior_S1_to_S3_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S3_behavior_source ]){ + if( Stack[i]->name == Event_S1_to_S3 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S3_behavior_S1_to_S3_list.begin(); + s != S3_behavior_S1_to_S3_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S3_behavior_S1_to_S3_list.push_back(i); + } + }; + if(in_matrix[i * len + S1_behavior_source ]){ + if( Stack[i]->name == Event_S1_to_S3 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S1_behavior_S1_to_S3_list.begin(); + s != S1_behavior_S1_to_S3_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S1_behavior_S1_to_S3_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S1_behavior_S1_to_S3_list.size(); + if(S3_behavior_S1_to_S3_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S1_behavior_S1_to_S3_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S3_behavior_S1_to_S3_list[i], S1_behavior_S1_to_S3_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_49_50_ob class + +//---- 3 ---- +class SIMPLE_LIST_79_80_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_79_80_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int S4_behavior_source = Root_table[Event_S4_behavior]; + // lists of shared events for S4_behavior + vector<int> S4_behavior_S1_to_S4_list; + + int S1_behavior_source = Root_table[Event_S1_behavior]; + // lists of shared events for S1_behavior + vector<int> S1_behavior_S1_to_S4_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S4_behavior_source ]){ + if( Stack[i]->name == Event_S1_to_S4 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S4_behavior_S1_to_S4_list.begin(); + s != S4_behavior_S1_to_S4_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S4_behavior_S1_to_S4_list.push_back(i); + } + }; + if(in_matrix[i * len + S1_behavior_source ]){ + if( Stack[i]->name == Event_S1_to_S4 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S1_behavior_S1_to_S4_list.begin(); + s != S1_behavior_S1_to_S4_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S1_behavior_S1_to_S4_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S1_behavior_S1_to_S4_list.size(); + if(S4_behavior_S1_to_S4_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S1_behavior_S1_to_S4_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S4_behavior_S1_to_S4_list[i], S1_behavior_S1_to_S4_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + + { // SHARE ALL operation + create_matrices(); + + int S4_behavior_source = Root_table[Event_S4_behavior]; + // lists of shared events for S4_behavior + vector<int> S4_behavior_S4_to_S2_list; + + int S2_behavior_source = Root_table[Event_S2_behavior]; + // lists of shared events for S2_behavior + vector<int> S2_behavior_S4_to_S2_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S4_behavior_source ]){ + if( Stack[i]->name == Event_S4_to_S2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S4_behavior_S4_to_S2_list.begin(); + s != S4_behavior_S4_to_S2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S4_behavior_S4_to_S2_list.push_back(i); + } + }; + if(in_matrix[i * len + S2_behavior_source ]){ + if( Stack[i]->name == Event_S4_to_S2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S2_behavior_S4_to_S2_list.begin(); + s != S2_behavior_S4_to_S2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S2_behavior_S4_to_S2_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S2_behavior_S4_to_S2_list.size(); + if(S4_behavior_S4_to_S2_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S2_behavior_S4_to_S2_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S4_behavior_S4_to_S2_list[i], S2_behavior_S4_to_S2_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + + { // SHARE ALL operation + create_matrices(); + + int S4_behavior_source = Root_table[Event_S4_behavior]; + // lists of shared events for S4_behavior + vector<int> S4_behavior_S3_to_S4_list; + + int S3_behavior_source = Root_table[Event_S3_behavior]; + // lists of shared events for S3_behavior + vector<int> S3_behavior_S3_to_S4_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S4_behavior_source ]){ + if( Stack[i]->name == Event_S3_to_S4 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S4_behavior_S3_to_S4_list.begin(); + s != S4_behavior_S3_to_S4_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S4_behavior_S3_to_S4_list.push_back(i); + } + }; + if(in_matrix[i * len + S3_behavior_source ]){ + if( Stack[i]->name == Event_S3_to_S4 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S3_behavior_S3_to_S4_list.begin(); + s != S3_behavior_S3_to_S4_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S3_behavior_S3_to_S4_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S3_behavior_S3_to_S4_list.size(); + if(S4_behavior_S3_to_S4_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S3_behavior_S3_to_S4_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S4_behavior_S3_to_S4_list[i], S3_behavior_S3_to_S4_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // SAY_event generation + string message; + ostringstream convert; + convert <<"The path: "; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_S1)|| (Stack[i]->name == Event_S2)|| (Stack[i]->name == Event_S3)|| (Stack[i]->name == Event_S4)|| (Stack[i]->name == Event_a)|| (Stack[i]->name == Event_b)|| (Stack[i]->name == Event_Start)|| (Stack[i]->name == Event_End) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + + // do the SORT reshuffling + topological_sort(a_variable_list); + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + { // SAY_event generation + string message; + ostringstream convert; + convert << event_name_string[Stack[ a_variable ]->name]; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_79_80_ob class + +//---- 4 ---- +class Alt_3_4 : public OR_node_producer_container { +public: // constructor + Alt_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_a); + element[ 1 ]= new Atomic_producer(Event_b); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_3_4 + +//---- 5 ---- +class Alt_7_8 : public OR_node_producer_container { +public: // constructor + Alt_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S1_to_S3); + element[ 1 ]= new Composite_secondary_producer(Event_S1_to_S4); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_7_8 + +//---- 6 ---- +class Sq_9_10 : public AND_node_producer_container { +public: // constructor + Sq_9_10 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_7_8 ; + element[ 1 ]= new Composite_secondary_producer(Event_S2_to_S1); + element[ 2 ]= new Atomic_producer(Event_S1); + } +};// end class Sq_9_10 + +//---- 7 ---- +class Itr_11_12 : public OR_node_producer_container { +public: // constructor + Itr_11_12 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_9_10 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_11_12 + +//---- 8 ---- +class Alt_13_14 : public OR_node_producer_container { +public: // constructor + Alt_13_14 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S1_to_S3); + element[ 1 ]= new Composite_secondary_producer(Event_S1_to_S4); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_13_14 + +//---- 9 ---- +class Sq_15_16 : public AND_node_producer_container { +public: // constructor + Sq_15_16 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_Start); + element[ 1 ]= new Atomic_producer(Event_S1); + element[ 2 ]= new Itr_11_12 ; + element[ 3 ]= new Alt_13_14 ; + } +};// end class Sq_15_16 + +//---- 10 ---- +class Sq_21_22 : public AND_node_producer_container { +public: // constructor + Sq_21_22 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S4_to_S2); + element[ 1 ]= new Atomic_producer(Event_S2); + element[ 2 ]= new Composite_secondary_producer(Event_S2_to_S1); + } +};// end class Sq_21_22 + +//---- 11 ---- +class Itr_23_24 : public OR_node_producer_container { +public: // constructor + Itr_23_24 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_21_22 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_23_24 + +//---- 12 ---- +class Sq_25_26 : public AND_node_producer_container { +public: // constructor + Sq_25_26 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Itr_23_24 ; + element[ 1 ]= new Composite_secondary_producer(Event_S4_to_S2); + element[ 2 ]= new Atomic_producer(Event_S2); + element[ 3 ]= new Atomic_producer(Event_End); + } +};// end class Sq_25_26 + +//---- 13 ---- +class Sq_37_38 : public AND_node_producer_container { +public: // constructor + Sq_37_38 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S3_to_S3); + element[ 1 ]= new Atomic_producer(Event_S3); + } +};// end class Sq_37_38 + +//---- 14 ---- +class Itr_39_40 : public OR_node_producer_container { +public: // constructor + Itr_39_40 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_37_38 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_39_40 + +//---- 15 ---- +class Sq_41_42 : public AND_node_producer_container { +public: // constructor + Sq_41_42 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S1_to_S3); + element[ 1 ]= new Atomic_producer(Event_S3); + element[ 2 ]= new Itr_39_40 ; + element[ 3 ]= new Composite_secondary_producer(Event_S3_to_S4); + } +};// end class Sq_41_42 + +//---- 16 ---- +class Itr_43_44 : public OR_node_producer_container { +public: // constructor + Itr_43_44 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_41_42 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_43_44 + +//---- 17 ---- +class Alt_53_54 : public OR_node_producer_container { +public: // constructor + Alt_53_54 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S1_to_S4); + element[ 1 ]= new Composite_secondary_producer(Event_S3_to_S4); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_53_54 + +//---- 18 ---- +class Sq_55_56 : public AND_node_producer_container { +public: // constructor + Sq_55_56 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_53_54 ; + element[ 1 ]= new Atomic_producer(Event_S4); + element[ 2 ]= new Composite_secondary_producer(Event_S4_to_S2); + } +};// end class Sq_55_56 + +//---- 19 ---- +class Itr_57_58 : public OR_node_producer_container { +public: // constructor + Itr_57_58 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_55_56 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_57_58 + +//---- 20 ---- +class Comp_1_2 : public Composite_producer { +public: // constructor + Comp_1_2 (): Composite_producer(Event_S1_to_S3){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_a); + } +};// end class Comp_1_2 + +//---- 21 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_S1_to_S4){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Alt_3_4 ; + } +};// end class Comp_5_6 + +//---- 22 ---- +class Comp_19_20 : public Composite_producer { +public: // constructor + Comp_19_20 (): Composite_producer(Event_S2_to_S1){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_b); + } +};// end class Comp_19_20 + +//---- 23 ---- +class Comp_33_34 : public Composite_producer { +public: // constructor + Comp_33_34 (): Composite_producer(Event_S3_to_S3){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_a); + } +};// end class Comp_33_34 + +//---- 24 ---- +class Comp_35_36 : public Composite_producer { +public: // constructor + Comp_35_36 (): Composite_producer(Event_S3_to_S4){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_b); + } +};// end class Comp_35_36 + +//---- 25 ---- +class Comp_51_52 : public Composite_producer { +public: // constructor + Comp_51_52 (): Composite_producer(Event_S4_to_S2){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_a); + } +};// end class Comp_51_52 + +//---- 26 ---- +class Comp_17_18 : public Composite_producer { +public: // constructor + Comp_17_18 (): Composite_producer(Event_S1_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_15_16 ; + } +};// end class Comp_17_18 + +//---- 27 ---- +class Comp_27_28 : public Composite_producer { +public: // constructor + Comp_27_28 (): Composite_producer(Event_S2_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_25_26 ; + } +};// end class Comp_27_28 + +//---- 28 ---- +class Comp_45_46 : public Composite_producer { +public: // constructor + Comp_45_46 (): Composite_producer(Event_S3_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_43_44 ; + } +};// end class Comp_45_46 + +//---- 29 ---- +class Comp_59_60 : public Composite_producer { +public: // constructor + Comp_59_60 (): Composite_producer(Event_S4_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_57_58 ; + } +};// end class Comp_59_60 + +//---- 30 ---- +class SCHEMA_FiniteStateDiagram: public Composite_producer { +public: // constructor + SCHEMA_FiniteStateDiagram(): Composite_producer(Event_FiniteStateDiagram){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 7 ]; + element[0]= new Composite_secondary_producer(Event_S1_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_S2_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_31_32_ob(Event_SIMPLE_LIST_31_32); + element[3]= new Composite_secondary_producer(Event_S3_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_49_50_ob(Event_SIMPLE_LIST_49_50); + element[5]= new Composite_secondary_producer(Event_S4_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_79_80_ob(Event_SIMPLE_LIST_79_80); + } +};// end class SCHEMA_FiniteStateDiagram + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example13_FiniteStateDiagram.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_1_2 temp_31; temp_31.harvest(); + Comp_5_6 temp_32; temp_32.harvest(); + Comp_19_20 temp_33; temp_33.harvest(); + Comp_33_34 temp_34; temp_34.harvest(); + Comp_35_36 temp_35; temp_35.harvest(); + Comp_51_52 temp_36; temp_36.harvest(); + // harvesting traces for ROOT events + Comp_17_18 temp_37; temp_37.harvest(); + Comp_27_28 temp_38; temp_38.harvest(); + Comp_45_46 temp_39; temp_39.harvest(); + Comp_59_60 temp_40; temp_40.harvest(); + // harvesting traces for main schema + SCHEMA_FiniteStateDiagram temp_41; temp_41.harvest(); + temp_41.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"FiniteStateDiagram"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.mp new file mode 100644 index 0000000..90b7756 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.mp @@ -0,0 +1,80 @@ +/* Example13_FiniteStateDiagram.mp + + example of finite state diagram behavior model, + contains non-deterministic transitions (from S1 with symbol a), + and a single state loop (S3 with a). + + The finite state transition diagram: + + Start -> S1 + S1 -> a -> S3 + S1 -> a -> S4 + S1 -> b -> S4 + S2 -> b -> S1 + S2 -> End + S3 -> a -> S3 + S3 -> b -> S4 + S4 -> a -> S2 + + Direct modeling of the state diagram including state visits + and actions triggering state transitions. Only paths starting + with Start and ending with End are valid. + + Behavior of each state Si is represented by a separate + root event Si_behavior. + + Each transition in the diagram Si -> Sj is modeled by a + composite event Si_to_Sj. + + 1) Event Si_to_Sj contains the symbol triggering the transition. + 2) Si_to_Sj is shared by corresponding state behavior roots. + + run for: + scope 1 (4 traces), + scope 2 (30 traces), + scope 3 (258 traces) +*/ + +SCHEMA FiniteStateDiagram + +S1_to_S3: a; +S1_to_S4: (a | b); + +ROOT S1_behavior: Start S1 + (* (S1_to_S3 | S1_to_S4) S2_to_S1 S1 *) + (S1_to_S3 | S1_to_S4); + +S2_to_S1: b; + +ROOT S2_behavior: (* S4_to_S2 S2 S2_to_S1 *) + S4_to_S2 S2 End; + +S1_behavior, S2_behavior SHARE ALL S2_to_S1; + +/* coordination should be done as soon as possible, + in order to prune the search, + but only after both root S1_behavior and S2_behavior + traces are available */ + +S3_to_S3: a; +S3_to_S4: b; + +ROOT S3_behavior: (* S1_to_S3 S3 + (* S3_to_S3 S3 *) + S3_to_S4 *) ; + +S3_behavior, S1_behavior SHARE ALL S1_to_S3; + +S4_to_S2: a; + +ROOT S4_behavior: (* (S1_to_S4 | S3_to_S4) S4 + S4_to_S2 *) ; + +S4_behavior, S1_behavior SHARE ALL S1_to_S4; +S4_behavior, S2_behavior SHARE ALL S4_to_S2; +S4_behavior, S3_behavior SHARE ALL S3_to_S4; + +SAY("The path: "); +/* Sort state visits and transition events according to the BEFORE relation and then show them */ +COORDINATE <SORT> $a: (S1 | S2 | S3 | S4 | a | b | Start | End) + DO SAY($a); OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.temp.txt new file mode 100644 index 0000000..76fa7e3 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example13_FiniteStateDiagram tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.tree new file mode 100644 index 0000000000000000000000000000000000000000..4883c937d5ee81b865449464ebf11c20fdb06361 GIT binary patch literal 13824 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 Uh3=gRt26ok^%utRzq9`T1^g>Jv;Y7A literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.txt new file mode 100644 index 0000000..b4d3b70 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.txt @@ -0,0 +1,31 @@ +generating traces for scope 1 +completed S1_to_S3: 1 traces (0 MARKed) 2 events + +completed S1_to_S4: 2 traces (0 MARKed) 4 events + average 2 ev/trace min 2 max 2 + +completed S2_to_S1: 1 traces (0 MARKed) 2 events + +completed S3_to_S3: 1 traces (0 MARKed) 2 events + +completed S3_to_S4: 1 traces (0 MARKed) 2 events + +completed S4_to_S2: 1 traces (0 MARKed) 2 events + +completed S1_behavior: 12 traces (0 MARKed) 105 events + average 8.75 ev/trace min 5 max 10 + +completed S2_behavior: 2 traces (0 MARKed) 15 events + average 7.5 ev/trace min 5 max 10 + +completed S3_behavior: 3 traces (0 MARKed) 16 events + average 5.33333 ev/trace min 1 max 9 + +completed S4_behavior: 4 traces (0 MARKed) 19 events + average 4.75 ev/trace min 1 max 6 + +completed FiniteStateDiagram: 4 traces (0 MARKed) 123 events + average 30.75 ev/trace min 26 max 38 + +Elapsed time 0.09693 sec, Speed: 3012.48 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.cpp new file mode 100644 index 0000000..eaa5ff1 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.cpp @@ -0,0 +1,1996 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA petri_net trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, float > initial_tokens_number_attribute; +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( initial_tokens_number_attribute[event1] != initial_tokens_number_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + initial_tokens_number_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!initial_tokens_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("initial_tokens",initial_tokens_number_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + + if(p1_num_attr->first == "initial_tokens"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + initial_tokens_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +graph_object GRAPH_171_Diagram; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_send_token + , Event_get_token + , Event_T1_receives_from_P1 + , Event_T1_fires + , Event_T2_receives_from_P2 + , Event_T2_receives_from_P3 + , Event_T2_fires + // composite events + , Event_P1_sends_to_T1 + , Event_P1_receives_from_T2 + , Event_T1_sends_to_P2 + , Event_T1_sends_to_P3 + , Event_P2_receives_from_T1 + , Event_P2_sends_to_T2 + , Event_P3_receives_from_T1 + , Event_P3_sends_to_T2 + , Event_T2_sends_to_P1 + , Event_T2_sends_to_P4 + , Event_P4_receives_from_T2 + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_21_22 + , Event_SIMPLE_LIST_43_44 + , Event_SIMPLE_LIST_59_60 + , Event_SIMPLE_LIST_73_74 + , Event_SIMPLE_LIST_91_92 + , Event_SIMPLE_LIST_105_106 + , Event_SIMPLE_LIST_141_142 + , Event_SIMPLE_LIST_172_173 + , Event_SIMPLE_LIST_205_206 + // ADD operations + // ROOT events + , Event_P1_behavior + , Event_T1_behavior + , Event_P2_behavior + , Event_P3_behavior + , Event_T2_behavior + , Event_P4_behavior + // main schema event + , Event_petri_net }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "send_token" + , "get_token" + , "T1_receives_from_P1" + , "T1_fires" + , "T2_receives_from_P2" + , "T2_receives_from_P3" + , "T2_fires" + , "P1_sends_to_T1" + , "P1_receives_from_T2" + , "T1_sends_to_P2" + , "T1_sends_to_P3" + , "P2_receives_from_T1" + , "P2_sends_to_T2" + , "P3_receives_from_T1" + , "P3_sends_to_T2" + , "T2_sends_to_P1" + , "T2_sends_to_P4" + , "P4_receives_from_T2" + , "SIMPLE_LIST_21_22" + , "SIMPLE_LIST_43_44" + , "SIMPLE_LIST_59_60" + , "SIMPLE_LIST_73_74" + , "SIMPLE_LIST_91_92" + , "SIMPLE_LIST_105_106" + , "SIMPLE_LIST_141_142" + , "SIMPLE_LIST_172_173" + , "SIMPLE_LIST_205_206" + , "P1_behavior" + , "T1_behavior" + , "P2_behavior" + , "P3_behavior" + , "T2_behavior" + , "P4_behavior" + , "petri_net" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_13(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_get_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_14(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_send_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_51(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_get_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_52(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_send_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_83(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_get_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 6 ---- +int special_function_84(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_send_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 7 ---- +int special_function_157(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_get_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 8 ---- +int special_function_158(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 9 ---- +int special_function_161(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_get_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 10 ---- +int special_function_162(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 11 ---- +int special_function_176(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_send_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 12 ---- +bool Quantified_expr_15_16(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int s_variable; + int pivot_s_variable = 0; + + // loop 1 for s_variable + for( s_variable = 0; s_variable < len; s_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ s_variable * len + pivot_s_variable +]) && + ( + (Stack[s_variable]-> name == Event_P1_sends_to_T1) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_13(current_host, s_variable ) > special_function_14(current_host, +s_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 13 ---- +bool Quantified_expr_53_54(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int s_variable; + int pivot_s_variable = 0; + + // loop 1 for s_variable + for( s_variable = 0; s_variable < len; s_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ s_variable * len + pivot_s_variable +]) && + ( + (Stack[s_variable]-> name == Event_P2_sends_to_T2) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_51(current_host, s_variable ) > special_function_52(current_host, +s_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 14 ---- +bool Quantified_expr_85_86(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int s_variable; + int pivot_s_variable = 0; + + // loop 1 for s_variable + for( s_variable = 0; s_variable < len; s_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ s_variable * len + pivot_s_variable +]) && + ( + (Stack[s_variable]-> name == Event_P3_sends_to_T2) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_83(current_host, s_variable ) > special_function_84(current_host, +s_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 15 ---- +bool Quantified_expr_187_188(Coordinate * current_host, int a_variable, int b_variable +){ + //===================================== + // quantifier EXISTS with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int c_variable; + int pivot_c_variable = a_variable ; + int d_variable; + int pivot_d_variable = b_variable ; + + // loop 1 for c_variable + for( c_variable = 0; c_variable < len; c_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ c_variable * len + pivot_c_variable +]) && + ( Stack[ c_variable ]->type == Composite_event_instance_node ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for d_variable + for( d_variable = 0; d_variable < len; d_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ d_variable * len + pivot_d_variable +]) && + ( Stack[ d_variable ]->type == Atom || Stack[ d_variable +]->type == ROOT_node || Stack[ d_variable +]->type == Composite_event_instance_node || Stack[ d_variable +]->type == Schema_node ) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( find_pair_in_table( d_variable , c_variable , Follows) ) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 16 ---- for aggregate operation aggregate_# +int aggregate_op_177(Coordinate * current_host, int pivot + , int a_variable){ + int t_variable ; + int temp = 0 ; +// #event traversal performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + bool first = true; + + current_host->create_matrices(); + int len = current_host->len; + // create list of selected events + for( t_variable = 0; t_variable < len; t_variable ++){ + if(current_host->in_matrix[ t_variable * len + pivot]){ + if( Stack[t_variable]->name == Event_get_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = current_host->eq_matrix[ t_variable * len + *s])) break; + }; // end of search for shared events + if(!found && ( special_function_176(current_host, t_variable ) == 0 ) + ) {selected_list.push_back( t_variable ); + temp = temp + 1 ;}; + }; // end if for selection + }; // end if for matrix + }; // end for + + return temp; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 17 ---- +class SIMPLE_LIST_21_22_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_21_22_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_15_16(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_21_22_ob class + +//---- 18 ---- +class SIMPLE_LIST_43_44_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_43_44_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_P1_sends_to_T1)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_T1_receives_from_P1)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_43_44_ob class + +//---- 19 ---- +class SIMPLE_LIST_59_60_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_59_60_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_53_54(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_59_60_ob class + +//---- 20 ---- +class SIMPLE_LIST_73_74_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_73_74_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_T1_sends_to_P2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_P2_receives_from_T1)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_73_74_ob class + +//---- 21 ---- +class SIMPLE_LIST_91_92_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_91_92_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_85_86(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_91_92_ob class + +//---- 22 ---- +class SIMPLE_LIST_105_106_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_105_106_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_T1_sends_to_P3)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_P3_receives_from_T1)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_105_106_ob class + +//---- 23 ---- +class SIMPLE_LIST_141_142_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_141_142_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_P2_sends_to_T2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_T2_receives_from_P2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_P3_sends_to_T2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_T2_receives_from_P3)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_T2_sends_to_P1)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_P1_receives_from_T2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_141_142_ob class + +//---- 24 ---- +class SIMPLE_LIST_172_173_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_172_173_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_T2_sends_to_P4)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + s_variable = 0; } + else{ + s_variable = s_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_P4_receives_from_T2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,s_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_P1_behavior)|| (Stack[i]->name == Event_P2_behavior)|| (Stack[i]->name == Event_P3_behavior)|| (Stack[i]->name == Event_P4_behavior) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + b_variable= b_variable_list[i]; + { // SAY_event generation + string message; + ostringstream convert; + convert <<"At the end of simulation place "; + convert << event_name_string[Stack[ b_variable ]->name]; + convert <<" has "; + convert << ( special_function_161(current_host, b_variable ) - special_function_162(current_host, +b_variable ) ); + convert <<" tokens"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // Diagram title generation + ostringstream convert; + convert <<"Petri net diagram"; + GRAPH_171_Diagram.title = convert.str();} + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_172_173_ob class + +//---- 25 ---- +class SIMPLE_LIST_205_206_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_205_206_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // WITHIN Diagram + int f_174_node_var = -1; + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->type == ROOT_node) ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + {// LAST_NODE + ostringstream convert; + convert << event_name_string[Stack[ a_variable ]->name]; + f_174_node_var = GRAPH_171_Diagram.find_or_create_new_node(convert.str());} + // attribute initial_tokens assignment + initial_tokens_number_attribute[a_variable]=aggregate_op_177(current_host, +a_variable + , a_variable) ; + if( ( + initial_tokens_number_attribute[a_variable] > 0 )){ + // add_arrow for GRAPH_171_Diagram + int temp_1_1 ; { + ostringstream convert; + convert <<"Start"; + temp_1_1 = GRAPH_171_Diagram . find_or_create_new_node (convert.str());} + { + ostringstream convert; + convert <<"initial "; + convert << + initial_tokens_number_attribute[a_variable] ; + convert <<" tokens"; + GRAPH_171_Diagram.add_arrow(temp_1_1,f_174_node_var,convert.str());} + }// end THEN + { // COORDINATE operation + int thread_length = -1; + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->type == ROOT_node) ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + b_variable= b_variable_list[i]; + if( ( ( a_variable != b_variable ) && Quantified_expr_187_188(current_host, a_variable, b_variable +) )){ + // add_arrow for GRAPH_171_Diagram + int temp_2_2 ; { + ostringstream convert; + convert << event_name_string[Stack[ b_variable ]->name]; + temp_2_2 = GRAPH_171_Diagram . find_or_create_new_node (convert.str());} + { + ostringstream convert; + convert << 1 ; + GRAPH_171_Diagram.add_arrow(f_174_node_var,temp_2_2,convert.str());} + }// end THEN + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_205_206_ob class + +//---- 26 ---- +class Itr_5_6 : public OR_node_producer_container { +public: // constructor + Itr_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Composite_secondary_producer(Event_P1_receives_from_T2) +; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_5_6 + +//---- 27 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_5_6 ; + element[ 1 ]= new Composite_secondary_producer(Event_P1_sends_to_T1); + } +};// end class Sq_7_8 + +//---- 28 ---- +class Itr_9_10 : public OR_node_producer_container { +public: // constructor + Itr_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_7_8 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_9_10 + +//---- 29 ---- +class Sq_11_12 : public AND_node_producer_container { +public: // constructor + Sq_11_12 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + element[ 1 ]= new Itr_9_10 ; + } +};// end class Sq_11_12 + +//---- 30 ---- +class Set_25_26 : public SET_node_producer_container { +public: // constructor + Set_25_26 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_T1_sends_to_P2); + element[ 1 ]= new Composite_secondary_producer(Event_T1_sends_to_P3); + } +};// end class Set_25_26 + +//---- 31 ---- +class Sq_27_28 : public AND_node_producer_container { +public: // constructor + Sq_27_28 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_T1_receives_from_P1); + element[ 1 ]= new Atomic_producer(Event_T1_fires); + element[ 2 ]= new Set_25_26 ; + } +};// end class Sq_27_28 + +//---- 32 ---- +class Itr_29_30 : public OR_node_producer_container { +public: // constructor + Itr_29_30 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_27_28 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_29_30 + +//---- 33 ---- +class Itr_45_46 : public OR_node_producer_container { +public: // constructor + Itr_45_46 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Composite_secondary_producer(Event_P2_receives_from_T1) +; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_45_46 + +//---- 34 ---- +class Sq_47_48 : public AND_node_producer_container { +public: // constructor + Sq_47_48 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_45_46 ; + element[ 1 ]= new Composite_secondary_producer(Event_P2_sends_to_T2); + } +};// end class Sq_47_48 + +//---- 35 ---- +class Itr_49_50 : public OR_node_producer_container { +public: // constructor + Itr_49_50 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_47_48 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_49_50 + +//---- 36 ---- +class Itr_75_76 : public OR_node_producer_container { +public: // constructor + Itr_75_76 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Composite_secondary_producer(Event_P3_receives_from_T1) +; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_75_76 + +//---- 37 ---- +class Sq_77_78 : public AND_node_producer_container { +public: // constructor + Sq_77_78 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_75_76 ; + element[ 1 ]= new Composite_secondary_producer(Event_P3_sends_to_T2); + } +};// end class Sq_77_78 + +//---- 38 ---- +class Itr_79_80 : public OR_node_producer_container { +public: // constructor + Itr_79_80 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_77_78 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_79_80 + +//---- 39 ---- +class Sq_81_82 : public AND_node_producer_container { +public: // constructor + Sq_81_82 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + element[ 1 ]= new Atomic_producer(Event_get_token); + element[ 2 ]= new Itr_79_80 ; + } +};// end class Sq_81_82 + +//---- 40 ---- +class Set_107_108 : public SET_node_producer_container { +public: // constructor + Set_107_108 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_T2_receives_from_P2); + element[ 1 ]= new Atomic_producer(Event_T2_receives_from_P3); + } +};// end class Set_107_108 + +//---- 41 ---- +class Set_109_110 : public SET_node_producer_container { +public: // constructor + Set_109_110 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_T2_sends_to_P1); + element[ 1 ]= new Composite_secondary_producer(Event_T2_sends_to_P4); + } +};// end class Set_109_110 + +//---- 42 ---- +class Opt_111_112 : public OR_node_producer_container { +public: // constructor + Opt_111_112 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Set_109_110 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_111_112 + +//---- 43 ---- +class Sq_113_114 : public AND_node_producer_container { +public: // constructor + Sq_113_114 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Set_107_108 ; + element[ 1 ]= new Atomic_producer(Event_T2_fires); + element[ 2 ]= new Opt_111_112 ; + } +};// end class Sq_113_114 + +//---- 44 ---- +class Itr_115_116 : public OR_node_producer_container { +public: // constructor + Itr_115_116 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_113_114 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_115_116 + +//---- 45 ---- +class Itr_143_144 : public OR_node_producer_container { +public: // constructor + Itr_143_144 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Composite_secondary_producer(Event_P4_receives_from_T2) +; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_143_144 + +//---- 46 ---- +class Sq_145_146 : public AND_node_producer_container { +public: // constructor + Sq_145_146 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + element[ 1 ]= new Itr_143_144 ; + } +};// end class Sq_145_146 + +//---- 47 ---- +class Comp_1_2 : public Composite_producer { +public: // constructor + Comp_1_2 (): Composite_producer(Event_P1_sends_to_T1){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_send_token); + } +};// end class Comp_1_2 + +//---- 48 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_P1_receives_from_T2){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + } +};// end class Comp_3_4 + +//---- 49 ---- +class Comp_33_34 : public Composite_producer { +public: // constructor + Comp_33_34 (): Composite_producer(Event_T1_sends_to_P2){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_send_token); + } +};// end class Comp_33_34 + +//---- 50 ---- +class Comp_35_36 : public Composite_producer { +public: // constructor + Comp_35_36 (): Composite_producer(Event_T1_sends_to_P3){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_send_token); + } +};// end class Comp_35_36 + +//---- 51 ---- +class Comp_63_64 : public Composite_producer { +public: // constructor + Comp_63_64 (): Composite_producer(Event_P2_receives_from_T1){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + } +};// end class Comp_63_64 + +//---- 52 ---- +class Comp_65_66 : public Composite_producer { +public: // constructor + Comp_65_66 (): Composite_producer(Event_P2_sends_to_T2){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_send_token); + } +};// end class Comp_65_66 + +//---- 53 ---- +class Comp_95_96 : public Composite_producer { +public: // constructor + Comp_95_96 (): Composite_producer(Event_P3_receives_from_T1){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + } +};// end class Comp_95_96 + +//---- 54 ---- +class Comp_97_98 : public Composite_producer { +public: // constructor + Comp_97_98 (): Composite_producer(Event_P3_sends_to_T2){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_send_token); + } +};// end class Comp_97_98 + +//---- 55 ---- +class Comp_119_120 : public Composite_producer { +public: // constructor + Comp_119_120 (): Composite_producer(Event_T2_sends_to_P1){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_send_token); + } +};// end class Comp_119_120 + +//---- 56 ---- +class Comp_121_122 : public Composite_producer { +public: // constructor + Comp_121_122 (): Composite_producer(Event_T2_sends_to_P4){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_send_token); + } +};// end class Comp_121_122 + +//---- 57 ---- +class Comp_149_150 : public Composite_producer { +public: // constructor + Comp_149_150 (): Composite_producer(Event_P4_receives_from_T2){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + } +};// end class Comp_149_150 + +//---- 58 ---- +class Comp_23_24 : public Composite_producer { +public: // constructor + Comp_23_24 (): Composite_producer(Event_P1_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_11_12 ; + element[ 1 ]= new SIMPLE_LIST_21_22_ob(Event_SIMPLE_LIST_21_22); + } +};// end class Comp_23_24 + +//---- 59 ---- +class Comp_31_32 : public Composite_producer { +public: // constructor + Comp_31_32 (): Composite_producer(Event_T1_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_29_30 ; + } +};// end class Comp_31_32 + +//---- 60 ---- +class Comp_61_62 : public Composite_producer { +public: // constructor + Comp_61_62 (): Composite_producer(Event_P2_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_49_50 ; + element[ 1 ]= new SIMPLE_LIST_59_60_ob(Event_SIMPLE_LIST_59_60); + } +};// end class Comp_61_62 + +//---- 61 ---- +class Comp_93_94 : public Composite_producer { +public: // constructor + Comp_93_94 (): Composite_producer(Event_P3_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_81_82 ; + element[ 1 ]= new SIMPLE_LIST_91_92_ob(Event_SIMPLE_LIST_91_92); + } +};// end class Comp_93_94 + +//---- 62 ---- +class Comp_117_118 : public Composite_producer { +public: // constructor + Comp_117_118 (): Composite_producer(Event_T2_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_115_116 ; + } +};// end class Comp_117_118 + +//---- 63 ---- +class Comp_147_148 : public Composite_producer { +public: // constructor + Comp_147_148 (): Composite_producer(Event_P4_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_145_146 ; + } +};// end class Comp_147_148 + +//---- 64 ---- +class SCHEMA_petri_net: public Composite_producer { +public: // constructor + SCHEMA_petri_net(): Composite_producer(Event_petri_net){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 12 ]; + element[0]= new Composite_secondary_producer(Event_P1_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_T1_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_43_44_ob(Event_SIMPLE_LIST_43_44); + element[3]= new Composite_secondary_producer(Event_P2_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_73_74_ob(Event_SIMPLE_LIST_73_74); + element[5]= new Composite_secondary_producer(Event_P3_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_105_106_ob(Event_SIMPLE_LIST_105_106); + element[7]= new Composite_secondary_producer(Event_T2_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[7] -> type = ROOT_node; + element[8]= new SIMPLE_LIST_141_142_ob(Event_SIMPLE_LIST_141_142); + element[9]= new Composite_secondary_producer(Event_P4_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[9] -> type = ROOT_node; + element[10]= new SIMPLE_LIST_172_173_ob(Event_SIMPLE_LIST_172_173); + element[11]= new SIMPLE_LIST_205_206_ob(Event_SIMPLE_LIST_205_206); + } +};// end class SCHEMA_petri_net + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + // SHOW Diagram + graph_container.insert(pair<int, graph_object>( 3,GRAPH_171_Diagram)); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example15_Petri_net.json"); + global_flag = true; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_1_2 temp_65; temp_65.harvest(); + Comp_3_4 temp_66; temp_66.harvest(); + Comp_33_34 temp_67; temp_67.harvest(); + Comp_35_36 temp_68; temp_68.harvest(); + Comp_63_64 temp_69; temp_69.harvest(); + Comp_65_66 temp_70; temp_70.harvest(); + Comp_95_96 temp_71; temp_71.harvest(); + Comp_97_98 temp_72; temp_72.harvest(); + Comp_119_120 temp_73; temp_73.harvest(); + Comp_121_122 temp_74; temp_74.harvest(); + Comp_149_150 temp_75; temp_75.harvest(); + // harvesting traces for ROOT events + Comp_23_24 temp_76; temp_76.harvest(); + Comp_31_32 temp_77; temp_77.harvest(); + Comp_61_62 temp_78; temp_78.harvest(); + Comp_93_94 temp_79; temp_79.harvest(); + Comp_117_118 temp_80; temp_80.harvest(); + Comp_147_148 temp_81; temp_81.harvest(); + // harvesting traces for main schema + SCHEMA_petri_net temp_82; temp_82.harvest(); + temp_82.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"petri_net"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.mp new file mode 100644 index 0000000..b0ecf3b --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.mp @@ -0,0 +1,111 @@ +/* Example15_Petri_net.mp + modeling Petri net behavior + see the Petri net diagram in Sec. 2.16.2 in the MP v.4 Language Manual + scope 1 (2 traces, 0.02 sec.) + scope 2 (4 traces, 6.23 sec.) + + to obtain in the Global view Petri net diagram + extracted from the event traces, run scope 2 +=======================================================*/ + +SCHEMA petri_net +/* behavior of each place and transition + is modeled by a separate root event */ + +P1_sends_to_T1: send_token; +P1_receives_from_T2: get_token; + +ROOT P1_behavior: get_token (* (* P1_receives_from_T2 *) + P1_sends_to_T1 *) + BUILD{ ENSURE FOREACH $s: P1_sends_to_T1 + #get_token BEFORE $s > #send_token BEFORE $s;}; + +ROOT T1_behavior: (* T1_receives_from_P1 T1_fires + {T1_sends_to_P2, T1_sends_to_P3} *); +T1_sends_to_P2: send_token; +T1_sends_to_P3: send_token; + +COORDINATE $s: P1_sends_to_T1, + $r: T1_receives_from_P1 + DO ADD $s PRECEDES $r; OD; + +ROOT P2_behavior: (* (* P2_receives_from_T1 *) + P2_sends_to_T2 *) + BUILD{ ENSURE FOREACH $s: P2_sends_to_T2 + #get_token BEFORE $s > #send_token BEFORE $s;}; +P2_receives_from_T1: get_token; +P2_sends_to_T2: send_token; + +COORDINATE $s: T1_sends_to_P2, + $r: P2_receives_from_T1 + DO ADD $s PRECEDES $r; OD; + +ROOT P3_behavior: get_token get_token + (* (* P3_receives_from_T1 *) + P3_sends_to_T2 *) + BUILD{ ENSURE FOREACH $s: P3_sends_to_T2 + #get_token BEFORE $s > #send_token BEFORE $s;}; +P3_receives_from_T1: get_token; +P3_sends_to_T2: send_token; + +COORDINATE $s: T1_sends_to_P3, + $r: P3_receives_from_T1 + DO ADD $s PRECEDES $r; OD; + +ROOT T2_behavior: (* {T2_receives_from_P2, T2_receives_from_P3} T2_fires + [{T2_sends_to_P1, T2_sends_to_P4}] *); +/* T2_sends_to events are made optional to terminate the loop from T2 to P1*/ +T2_sends_to_P1: send_token; +T2_sends_to_P4: send_token; + +COORDINATE $s: P2_sends_to_T2, + $r: T2_receives_from_P2 + DO ADD $s PRECEDES $r; OD; + +COORDINATE $s: P3_sends_to_T2, + $r: T2_receives_from_P3 + DO ADD $s PRECEDES $r; OD; + +COORDINATE $s: T2_sends_to_P1, + $r: P1_receives_from_T2 + DO ADD $s PRECEDES $r; OD; + +ROOT P4_behavior: get_token (* P4_receives_from_T2 *); +P4_receives_from_T2: get_token; + +COORDINATE $s: T2_sends_to_P4, + $r: P4_receives_from_T2 + DO ADD $s PRECEDES $r; OD; + +COORDINATE $b: (P1_behavior | P2_behavior | P3_behavior | P4_behavior) + DO SAY("At the end of simulation place " $b " has " + #get_token FROM $b - #send_token FROM $b " tokens"); + OD; +/*================================================================ + Building Petri net diagram +=================================================================*/ +GRAPH Diagram { TITLE ("Petri net diagram");}; +ATTRIBUTES {number initial_tokens;}; + +WITHIN Diagram{ + COORDINATE $a: $$ROOT DO + Node$f: LAST($a); + + $a.initial_tokens := + #{$t: get_token FROM $a SUCH THAT #send_token BEFORE $t == 0}; + + IF $a.initial_tokens > 0 THEN + ADD LAST("Start") ARROW("initial " $a.initial_tokens " tokens") Node$f; + FI; + + COORDINATE $b: $$ROOT DO + IF $a != $b AND + /* looking for $c: A_sends_to_B and $d: B_receives_from_A events */ + EXISTS $c: $$COMPOSITE FROM $a, $d: $$EVENT FROM $b ($c PRECEDES $d) + THEN ADD Node$f ARROW(1) LAST($b); FI; + OD; + OD; +}; /* end WITHIN */ + +GLOBAL +SHOW Diagram; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.temp.txt new file mode 100644 index 0000000..20c3b38 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example15_Petri_net tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.tree new file mode 100644 index 0000000000000000000000000000000000000000..1e4e740f7ae3248261a4887c25a8e4224ba67b06 GIT binary patch literal 32256 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 T$2_{n&@Ea~Et!E|egFS|4>_V& literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.txt new file mode 100644 index 0000000..60ab991 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.txt @@ -0,0 +1,46 @@ +generating traces for scope 1 +completed P1_sends_to_T1: 1 traces (0 MARKed) 2 events + +completed P1_receives_from_T2: 1 traces (0 MARKed) 2 events + +completed T1_sends_to_P2: 1 traces (0 MARKed) 2 events + +completed T1_sends_to_P3: 1 traces (0 MARKed) 2 events + +completed P2_receives_from_T1: 1 traces (0 MARKed) 2 events + +completed P2_sends_to_T2: 1 traces (0 MARKed) 2 events + +completed P3_receives_from_T1: 1 traces (0 MARKed) 2 events + +completed P3_sends_to_T2: 1 traces (0 MARKed) 2 events + +completed T2_sends_to_P1: 1 traces (0 MARKed) 2 events + +completed T2_sends_to_P4: 1 traces (0 MARKed) 2 events + +completed P4_receives_from_T2: 1 traces (0 MARKed) 2 events + +completed P1_behavior: 3 traces (0 MARKed) 12 events + average 4 ev/trace min 2 max 6 + +completed T1_behavior: 2 traces (0 MARKed) 8 events + average 4 ev/trace min 1 max 7 + +completed P2_behavior: 2 traces (0 MARKed) 6 events + average 3 ev/trace min 1 max 5 + +completed P3_behavior: 3 traces (0 MARKed) 15 events + average 5 ev/trace min 3 max 7 + +completed T2_behavior: 3 traces (0 MARKed) 13 events + average 4.33333 ev/trace min 1 max 8 + +completed P4_behavior: 2 traces (0 MARKed) 6 events + average 3 ev/trace min 2 max 4 + +completed petri_net: 2 traces (0 MARKed) 49 events + average 24.5 ev/trace min 15 max 34 + +Elapsed time 0.038257 sec, Speed: 3424.21 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.cpp new file mode 100644 index 0000000..c13b7fd --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.cpp @@ -0,0 +1,1058 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA spiral trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Initial_communication_with_stakeholders + , Event_Prototype_demonstration_to_stakeholders + , Event_Stakeholders_are_not_satisfied + , Event_Stakeholders_are_satisfied + , Event_Initial_requirements + , Event_Delivery_of_the_system + , Event_Adjust_requirements + , Event_Architecture_design + , Event_Detailed_design + , Event_Coding + , Event_Testing + , Event_Architecture_redesign + , Event_Detailed_redesign + // composite events + , Event_One_iteration + , Event_Initial_design + , Event_Redesign + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_31_32 + , Event_SIMPLE_LIST_45_46 + , Event_SIMPLE_LIST_57_58 + // ADD operations + // ROOT events + , Event_Stakeholders + , Event_Spiral_process + , Event_Architect + , Event_Developers + // main schema event + , Event_spiral }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Initial_communication_with_stakeholders" + , "Prototype_demonstration_to_stakeholders" + , "Stakeholders_are_not_satisfied" + , "Stakeholders_are_satisfied" + , "Initial_requirements" + , "Delivery_of_the_system" + , "Adjust_requirements" + , "Architecture_design" + , "Detailed_design" + , "Coding" + , "Testing" + , "Architecture_redesign" + , "Detailed_redesign" + , "One_iteration" + , "Initial_design" + , "Redesign" + , "SIMPLE_LIST_31_32" + , "SIMPLE_LIST_45_46" + , "SIMPLE_LIST_57_58" + , "Stakeholders" + , "Spiral_process" + , "Architect" + , "Developers" + , "spiral" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_31_32_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_31_32_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Stakeholders_source = Root_table[Event_Stakeholders]; + // lists of shared events for Stakeholders + vector<int> Stakeholders_Initial_communication_with_stakeholders_list; + vector<int> Stakeholders_Prototype_demonstration_to_stakeholders_list; + vector<int> Stakeholders_Stakeholders_are_not_satisfied_list; + vector<int> Stakeholders_Stakeholders_are_satisfied_list; + + int Spiral_process_source = Root_table[Event_Spiral_process]; + // lists of shared events for Spiral_process + vector<int> Spiral_process_Initial_communication_with_stakeholders_list; + vector<int> Spiral_process_Prototype_demonstration_to_stakeholders_list; + vector<int> Spiral_process_Stakeholders_are_not_satisfied_list; + vector<int> Spiral_process_Stakeholders_are_satisfied_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Stakeholders_source ]){ + if( Stack[i]->name == Event_Initial_communication_with_stakeholders ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Stakeholders_Initial_communication_with_stakeholders_list.begin(); + s != Stakeholders_Initial_communication_with_stakeholders_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Stakeholders_Initial_communication_with_stakeholders_list.push_back(i); + } + if( Stack[i]->name == Event_Prototype_demonstration_to_stakeholders ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Stakeholders_Prototype_demonstration_to_stakeholders_list.begin(); + s != Stakeholders_Prototype_demonstration_to_stakeholders_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Stakeholders_Prototype_demonstration_to_stakeholders_list.push_back(i); + } + if( Stack[i]->name == Event_Stakeholders_are_not_satisfied ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Stakeholders_Stakeholders_are_not_satisfied_list.begin(); + s != Stakeholders_Stakeholders_are_not_satisfied_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Stakeholders_Stakeholders_are_not_satisfied_list.push_back(i); + } + if( Stack[i]->name == Event_Stakeholders_are_satisfied ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Stakeholders_Stakeholders_are_satisfied_list.begin(); + s != Stakeholders_Stakeholders_are_satisfied_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Stakeholders_Stakeholders_are_satisfied_list.push_back(i); + } + }; + if(in_matrix[i * len + Spiral_process_source ]){ + if( Stack[i]->name == Event_Initial_communication_with_stakeholders ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Initial_communication_with_stakeholders_list.begin(); + s != Spiral_process_Initial_communication_with_stakeholders_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Initial_communication_with_stakeholders_list.push_back(i); + } + if( Stack[i]->name == Event_Prototype_demonstration_to_stakeholders ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Prototype_demonstration_to_stakeholders_list.begin(); + s != Spiral_process_Prototype_demonstration_to_stakeholders_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Prototype_demonstration_to_stakeholders_list.push_back(i); + } + if( Stack[i]->name == Event_Stakeholders_are_not_satisfied ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Stakeholders_are_not_satisfied_list.begin(); + s != Spiral_process_Stakeholders_are_not_satisfied_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Stakeholders_are_not_satisfied_list.push_back(i); + } + if( Stack[i]->name == Event_Stakeholders_are_satisfied ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Stakeholders_are_satisfied_list.begin(); + s != Spiral_process_Stakeholders_are_satisfied_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Stakeholders_are_satisfied_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Spiral_process_Initial_communication_with_stakeholders_list.size(); + if(Stakeholders_Initial_communication_with_stakeholders_list.size() != len_to_compare) +throw failed ; + len_to_compare = Spiral_process_Prototype_demonstration_to_stakeholders_list.size(); + if(Stakeholders_Prototype_demonstration_to_stakeholders_list.size() != len_to_compare) +throw failed ; + len_to_compare = Spiral_process_Stakeholders_are_not_satisfied_list.size(); + if(Stakeholders_Stakeholders_are_not_satisfied_list.size() != len_to_compare) +throw failed ; + len_to_compare = Spiral_process_Stakeholders_are_satisfied_list.size(); + if(Stakeholders_Stakeholders_are_satisfied_list.size() != len_to_compare) +throw failed ; + + // do the SHARE ALL + len_to_compare = Spiral_process_Initial_communication_with_stakeholders_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Stakeholders_Initial_communication_with_stakeholders_list[i], Spiral_process_Initial_communication_with_stakeholders_list[i]); + } + len_to_compare = Spiral_process_Prototype_demonstration_to_stakeholders_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Stakeholders_Prototype_demonstration_to_stakeholders_list[i], Spiral_process_Prototype_demonstration_to_stakeholders_list[i]); + } + len_to_compare = Spiral_process_Stakeholders_are_not_satisfied_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Stakeholders_Stakeholders_are_not_satisfied_list[i], Spiral_process_Stakeholders_are_not_satisfied_list[i]); + } + len_to_compare = Spiral_process_Stakeholders_are_satisfied_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Stakeholders_Stakeholders_are_satisfied_list[i], Spiral_process_Stakeholders_are_satisfied_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_31_32_ob class + +//---- 2 ---- +class SIMPLE_LIST_45_46_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_45_46_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Architect_source = Root_table[Event_Architect]; + // lists of shared events for Architect + vector<int> Architect_Initial_communication_with_stakeholders_list; + vector<int> Architect_Initial_requirements_list; + vector<int> Architect_Architecture_design_list; + vector<int> Architect_Prototype_demonstration_to_stakeholders_list; + vector<int> Architect_Adjust_requirements_list; + vector<int> Architect_Architecture_redesign_list; + + int Spiral_process_source = Root_table[Event_Spiral_process]; + // lists of shared events for Spiral_process + vector<int> Spiral_process_Initial_communication_with_stakeholders_list; + vector<int> Spiral_process_Initial_requirements_list; + vector<int> Spiral_process_Architecture_design_list; + vector<int> Spiral_process_Prototype_demonstration_to_stakeholders_list; + vector<int> Spiral_process_Adjust_requirements_list; + vector<int> Spiral_process_Architecture_redesign_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Architect_source ]){ + if( Stack[i]->name == Event_Initial_communication_with_stakeholders ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Architect_Initial_communication_with_stakeholders_list.begin(); + s != Architect_Initial_communication_with_stakeholders_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Architect_Initial_communication_with_stakeholders_list.push_back(i); + } + if( Stack[i]->name == Event_Initial_requirements ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Architect_Initial_requirements_list.begin(); + s != Architect_Initial_requirements_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Architect_Initial_requirements_list.push_back(i); + } + if( Stack[i]->name == Event_Architecture_design ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Architect_Architecture_design_list.begin(); + s != Architect_Architecture_design_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Architect_Architecture_design_list.push_back(i); + } + if( Stack[i]->name == Event_Prototype_demonstration_to_stakeholders ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Architect_Prototype_demonstration_to_stakeholders_list.begin(); + s != Architect_Prototype_demonstration_to_stakeholders_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Architect_Prototype_demonstration_to_stakeholders_list.push_back(i); + } + if( Stack[i]->name == Event_Adjust_requirements ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Architect_Adjust_requirements_list.begin(); + s != Architect_Adjust_requirements_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Architect_Adjust_requirements_list.push_back(i); + } + if( Stack[i]->name == Event_Architecture_redesign ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Architect_Architecture_redesign_list.begin(); + s != Architect_Architecture_redesign_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Architect_Architecture_redesign_list.push_back(i); + } + }; + if(in_matrix[i * len + Spiral_process_source ]){ + if( Stack[i]->name == Event_Initial_communication_with_stakeholders ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Initial_communication_with_stakeholders_list.begin(); + s != Spiral_process_Initial_communication_with_stakeholders_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Initial_communication_with_stakeholders_list.push_back(i); + } + if( Stack[i]->name == Event_Initial_requirements ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Initial_requirements_list.begin(); + s != Spiral_process_Initial_requirements_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Initial_requirements_list.push_back(i); + } + if( Stack[i]->name == Event_Architecture_design ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Architecture_design_list.begin(); + s != Spiral_process_Architecture_design_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Architecture_design_list.push_back(i); + } + if( Stack[i]->name == Event_Prototype_demonstration_to_stakeholders ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Prototype_demonstration_to_stakeholders_list.begin(); + s != Spiral_process_Prototype_demonstration_to_stakeholders_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Prototype_demonstration_to_stakeholders_list.push_back(i); + } + if( Stack[i]->name == Event_Adjust_requirements ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Adjust_requirements_list.begin(); + s != Spiral_process_Adjust_requirements_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Adjust_requirements_list.push_back(i); + } + if( Stack[i]->name == Event_Architecture_redesign ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Architecture_redesign_list.begin(); + s != Spiral_process_Architecture_redesign_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Architecture_redesign_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Spiral_process_Initial_communication_with_stakeholders_list.size(); + if(Architect_Initial_communication_with_stakeholders_list.size() != len_to_compare) +throw failed ; + len_to_compare = Spiral_process_Initial_requirements_list.size(); + if(Architect_Initial_requirements_list.size() != len_to_compare) throw +failed ; + len_to_compare = Spiral_process_Architecture_design_list.size(); + if(Architect_Architecture_design_list.size() != len_to_compare) throw +failed ; + len_to_compare = Spiral_process_Prototype_demonstration_to_stakeholders_list.size(); + if(Architect_Prototype_demonstration_to_stakeholders_list.size() != len_to_compare) +throw failed ; + len_to_compare = Spiral_process_Adjust_requirements_list.size(); + if(Architect_Adjust_requirements_list.size() != len_to_compare) throw +failed ; + len_to_compare = Spiral_process_Architecture_redesign_list.size(); + if(Architect_Architecture_redesign_list.size() != len_to_compare) throw +failed ; + + // do the SHARE ALL + len_to_compare = Spiral_process_Initial_communication_with_stakeholders_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Architect_Initial_communication_with_stakeholders_list[i], Spiral_process_Initial_communication_with_stakeholders_list[i]); + } + len_to_compare = Spiral_process_Initial_requirements_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Architect_Initial_requirements_list[i], Spiral_process_Initial_requirements_list[i]); + } + len_to_compare = Spiral_process_Architecture_design_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Architect_Architecture_design_list[i], Spiral_process_Architecture_design_list[i]); + } + len_to_compare = Spiral_process_Prototype_demonstration_to_stakeholders_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Architect_Prototype_demonstration_to_stakeholders_list[i], Spiral_process_Prototype_demonstration_to_stakeholders_list[i]); + } + len_to_compare = Spiral_process_Adjust_requirements_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Architect_Adjust_requirements_list[i], Spiral_process_Adjust_requirements_list[i]); + } + len_to_compare = Spiral_process_Architecture_redesign_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Architect_Architecture_redesign_list[i], Spiral_process_Architecture_redesign_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_45_46_ob class + +//---- 3 ---- +class SIMPLE_LIST_57_58_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_57_58_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Developers_source = Root_table[Event_Developers]; + // lists of shared events for Developers + vector<int> Developers_Detailed_design_list; + vector<int> Developers_Detailed_redesign_list; + vector<int> Developers_Coding_list; + vector<int> Developers_Testing_list; + + int Spiral_process_source = Root_table[Event_Spiral_process]; + // lists of shared events for Spiral_process + vector<int> Spiral_process_Detailed_design_list; + vector<int> Spiral_process_Detailed_redesign_list; + vector<int> Spiral_process_Coding_list; + vector<int> Spiral_process_Testing_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Developers_source ]){ + if( Stack[i]->name == Event_Detailed_design ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Developers_Detailed_design_list.begin(); + s != Developers_Detailed_design_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Developers_Detailed_design_list.push_back(i); + } + if( Stack[i]->name == Event_Detailed_redesign ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Developers_Detailed_redesign_list.begin(); + s != Developers_Detailed_redesign_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Developers_Detailed_redesign_list.push_back(i); + } + if( Stack[i]->name == Event_Coding ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Developers_Coding_list.begin(); + s != Developers_Coding_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Developers_Coding_list.push_back(i); + } + if( Stack[i]->name == Event_Testing ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Developers_Testing_list.begin(); + s != Developers_Testing_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Developers_Testing_list.push_back(i); + } + }; + if(in_matrix[i * len + Spiral_process_source ]){ + if( Stack[i]->name == Event_Detailed_design ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Detailed_design_list.begin(); + s != Spiral_process_Detailed_design_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Detailed_design_list.push_back(i); + } + if( Stack[i]->name == Event_Detailed_redesign ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Detailed_redesign_list.begin(); + s != Spiral_process_Detailed_redesign_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Detailed_redesign_list.push_back(i); + } + if( Stack[i]->name == Event_Coding ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Coding_list.begin(); + s != Spiral_process_Coding_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Coding_list.push_back(i); + } + if( Stack[i]->name == Event_Testing ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Spiral_process_Testing_list.begin(); + s != Spiral_process_Testing_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Spiral_process_Testing_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Spiral_process_Detailed_design_list.size(); + if(Developers_Detailed_design_list.size() != len_to_compare) throw failed ; + + len_to_compare = Spiral_process_Detailed_redesign_list.size(); + if(Developers_Detailed_redesign_list.size() != len_to_compare) throw failed + ; + len_to_compare = Spiral_process_Coding_list.size(); + if(Developers_Coding_list.size() != len_to_compare) throw failed ; + len_to_compare = Spiral_process_Testing_list.size(); + if(Developers_Testing_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Spiral_process_Detailed_design_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Developers_Detailed_design_list[i], Spiral_process_Detailed_design_list[i]); + } + len_to_compare = Spiral_process_Detailed_redesign_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Developers_Detailed_redesign_list[i], Spiral_process_Detailed_redesign_list[i]); + } + len_to_compare = Spiral_process_Coding_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Developers_Coding_list[i], Spiral_process_Coding_list[i]); + } + len_to_compare = Spiral_process_Testing_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Developers_Testing_list[i], Spiral_process_Testing_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_57_58_ob class + +//---- 4 ---- +class Sq_15_16 : public AND_node_producer_container { +public: // constructor + Sq_15_16 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_Stakeholders_are_not_satisfied); + element[ 1 ]= new Atomic_producer(Event_Adjust_requirements); + element[ 2 ]= new Composite_secondary_producer(Event_Redesign); + element[ 3 ]= new Atomic_producer(Event_Prototype_demonstration_to_stakeholders) +; + } +};// end class Sq_15_16 + +//---- 5 ---- +class Sq_19_20 : public AND_node_producer_container { +public: // constructor + Sq_19_20 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_Architecture_design); + element[ 1 ]= new Atomic_producer(Event_Detailed_design); + element[ 2 ]= new Atomic_producer(Event_Coding); + element[ 3 ]= new Atomic_producer(Event_Testing); + } +};// end class Sq_19_20 + +//---- 6 ---- +class Opt_23_24 : public OR_node_producer_container { +public: // constructor + Opt_23_24 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_Architecture_redesign); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_23_24 + +//---- 7 ---- +class Sq_25_26 : public AND_node_producer_container { +public: // constructor + Sq_25_26 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Opt_23_24 ; + element[ 1 ]= new Atomic_producer(Event_Detailed_redesign); + element[ 2 ]= new Atomic_producer(Event_Coding); + element[ 3 ]= new Atomic_producer(Event_Testing); + } +};// end class Sq_25_26 + +//---- 8 ---- +class Sq_1_2 : public AND_node_producer_container { +public: // constructor + Sq_1_2 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Stakeholders_are_not_satisfied); + element[ 1 ]= new Atomic_producer(Event_Prototype_demonstration_to_stakeholders) +; + } +};// end class Sq_1_2 + +//---- 9 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_3_4 + +//---- 10 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_Initial_communication_with_stakeholders) +; + element[ 1 ]= new Atomic_producer(Event_Prototype_demonstration_to_stakeholders) +; + element[ 2 ]= new Itr_3_4 ; + element[ 3 ]= new Atomic_producer(Event_Stakeholders_are_satisfied); + } +};// end class Sq_5_6 + +//---- 11 ---- +class Itr_9_10 : public OR_node_producer_container { +public: // constructor + Itr_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Composite_secondary_producer(Event_One_iteration); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_9_10 + +//---- 12 ---- +class Sq_11_12 : public AND_node_producer_container { +public: // constructor + Sq_11_12 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 7 ]; + element[ 0 ]= new Atomic_producer(Event_Initial_communication_with_stakeholders) +; + element[ 1 ]= new Atomic_producer(Event_Initial_requirements); + element[ 2 ]= new Composite_secondary_producer(Event_Initial_design); + element[ 3 ]= new Atomic_producer(Event_Prototype_demonstration_to_stakeholders) +; + element[ 4 ]= new Itr_9_10 ; + element[ 5 ]= new Atomic_producer(Event_Stakeholders_are_satisfied); + element[ 6 ]= new Atomic_producer(Event_Delivery_of_the_system); + } +};// end class Sq_11_12 + +//---- 13 ---- +class Opt_33_34 : public OR_node_producer_container { +public: // constructor + Opt_33_34 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_Architecture_redesign); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_33_34 + +//---- 14 ---- +class Sq_35_36 : public AND_node_producer_container { +public: // constructor + Sq_35_36 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Adjust_requirements); + element[ 1 ]= new Opt_33_34 ; + element[ 2 ]= new Atomic_producer(Event_Prototype_demonstration_to_stakeholders) +; + } +};// end class Sq_35_36 + +//---- 15 ---- +class Itr_37_38 : public OR_node_producer_container { +public: // constructor + Itr_37_38 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_35_36 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_37_38 + +//---- 16 ---- +class Sq_39_40 : public AND_node_producer_container { +public: // constructor + Sq_39_40 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Atomic_producer(Event_Initial_communication_with_stakeholders) +; + element[ 1 ]= new Atomic_producer(Event_Initial_requirements); + element[ 2 ]= new Atomic_producer(Event_Architecture_design); + element[ 3 ]= new Atomic_producer(Event_Prototype_demonstration_to_stakeholders) +; + element[ 4 ]= new Itr_37_38 ; + } +};// end class Sq_39_40 + +//---- 17 ---- +class Sq_47_48 : public AND_node_producer_container { +public: // constructor + Sq_47_48 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Detailed_redesign); + element[ 1 ]= new Atomic_producer(Event_Coding); + element[ 2 ]= new Atomic_producer(Event_Testing); + } +};// end class Sq_47_48 + +//---- 18 ---- +class Itr_49_50 : public OR_node_producer_container { +public: // constructor + Itr_49_50 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_47_48 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_49_50 + +//---- 19 ---- +class Sq_51_52 : public AND_node_producer_container { +public: // constructor + Sq_51_52 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_Detailed_design); + element[ 1 ]= new Atomic_producer(Event_Coding); + element[ 2 ]= new Atomic_producer(Event_Testing); + element[ 3 ]= new Itr_49_50 ; + } +};// end class Sq_51_52 + +//---- 20 ---- +class Comp_17_18 : public Composite_producer { +public: // constructor + Comp_17_18 (): Composite_producer(Event_One_iteration){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_15_16 ; + } +};// end class Comp_17_18 + +//---- 21 ---- +class Comp_21_22 : public Composite_producer { +public: // constructor + Comp_21_22 (): Composite_producer(Event_Initial_design){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_19_20 ; + } +};// end class Comp_21_22 + +//---- 22 ---- +class Comp_27_28 : public Composite_producer { +public: // constructor + Comp_27_28 (): Composite_producer(Event_Redesign){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_25_26 ; + } +};// end class Comp_27_28 + +//---- 23 ---- +class Comp_7_8 : public Composite_producer { +public: // constructor + Comp_7_8 (): Composite_producer(Event_Stakeholders){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_5_6 ; + } +};// end class Comp_7_8 + +//---- 24 ---- +class Comp_13_14 : public Composite_producer { +public: // constructor + Comp_13_14 (): Composite_producer(Event_Spiral_process){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_11_12 ; + } +};// end class Comp_13_14 + +//---- 25 ---- +class Comp_41_42 : public Composite_producer { +public: // constructor + Comp_41_42 (): Composite_producer(Event_Architect){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_39_40 ; + } +};// end class Comp_41_42 + +//---- 26 ---- +class Comp_53_54 : public Composite_producer { +public: // constructor + Comp_53_54 (): Composite_producer(Event_Developers){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_51_52 ; + } +};// end class Comp_53_54 + +//---- 27 ---- +class SCHEMA_spiral: public Composite_producer { +public: // constructor + SCHEMA_spiral(): Composite_producer(Event_spiral){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 7 ]; + element[0]= new Composite_secondary_producer(Event_Stakeholders); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Spiral_process); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_31_32_ob(Event_SIMPLE_LIST_31_32); + element[3]= new Composite_secondary_producer(Event_Architect); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_45_46_ob(Event_SIMPLE_LIST_45_46); + element[5]= new Composite_secondary_producer(Event_Developers); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_57_58_ob(Event_SIMPLE_LIST_57_58); + } +};// end class SCHEMA_spiral + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example16_software_spiral_process.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_27_28 temp_28; temp_28.harvest(); + Comp_17_18 temp_29; temp_29.harvest(); + Comp_21_22 temp_30; temp_30.harvest(); + // harvesting traces for ROOT events + Comp_7_8 temp_31; temp_31.harvest(); + Comp_13_14 temp_32; temp_32.harvest(); + Comp_41_42 temp_33; temp_33.harvest(); + Comp_53_54 temp_34; temp_34.harvest(); + // harvesting traces for main schema + SCHEMA_spiral temp_35; temp_35.harvest(); + temp_35.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"spiral"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.mp new file mode 100644 index 0000000..f8d2142 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.mp @@ -0,0 +1,82 @@ +/* Example 16, model of the spiral software process + + This example also illustrates how Melvin Conway's law + can be modeled in MP: "organizations which design systems ... + are constrained to produce designs which are copies of the + communication structures of these organizations." + + run scope up to 5 +======================================*/ + +SCHEMA spiral + +ROOT Stakeholders: + Initial_communication_with_stakeholders + Prototype_demonstration_to_stakeholders + (* Stakeholders_are_not_satisfied + Prototype_demonstration_to_stakeholders *) + Stakeholders_are_satisfied; + +ROOT Spiral_process: + Initial_communication_with_stakeholders + Initial_requirements + Initial_design + Prototype_demonstration_to_stakeholders + (* One_iteration *) + Stakeholders_are_satisfied + Delivery_of_the_system; + +One_iteration: + Stakeholders_are_not_satisfied + Adjust_requirements + Redesign + Prototype_demonstration_to_stakeholders; + +Initial_design: + Architecture_design + Detailed_design + Coding + Testing; + +Redesign: + [ Architecture_redesign ] /* not always needed */ + Detailed_redesign + Coding + Testing; + +Stakeholders, Spiral_process SHARE ALL + Initial_communication_with_stakeholders, + Prototype_demonstration_to_stakeholders, + Stakeholders_are_not_satisfied, + Stakeholders_are_satisfied; + +ROOT Architect: + Initial_communication_with_stakeholders + Initial_requirements + Architecture_design + Prototype_demonstration_to_stakeholders + (* Adjust_requirements + [ Architecture_redesign ] + Prototype_demonstration_to_stakeholders *); + +Architect, Spiral_process SHARE ALL + Initial_communication_with_stakeholders, + Initial_requirements, + Architecture_design, + Prototype_demonstration_to_stakeholders, + Adjust_requirements, + Architecture_redesign; + +ROOT Developers: + Detailed_design + Coding + Testing + (* Detailed_redesign + Coding + Testing *); + +Developers, Spiral_process SHARE ALL + Detailed_design, + Detailed_redesign, + Coding, + Testing; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.temp.txt new file mode 100644 index 0000000..9c4b0de --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example16_software_spiral_process tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.tree new file mode 100644 index 0000000000000000000000000000000000000000..59199f82c28aa5d11fbc9444c3d4621792a0e23e GIT binary patch literal 11264 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.txt new file mode 100644 index 0000000..2bb0a60 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.txt @@ -0,0 +1,26 @@ +generating traces for scope 1 +completed Redesign: 2 traces (0 MARKed) 9 events + average 4.5 ev/trace min 4 max 5 + +completed One_iteration: 2 traces (0 MARKed) 17 events + average 8.5 ev/trace min 8 max 9 + +completed Initial_design: 1 traces (0 MARKed) 5 events + +completed Stakeholders: 2 traces (0 MARKed) 10 events + average 5 ev/trace min 4 max 6 + +completed Spiral_process: 3 traces (0 MARKed) 50 events + average 16.6667 ev/trace min 11 max 20 + +completed Architect: 3 traces (0 MARKed) 20 events + average 6.66667 ev/trace min 5 max 8 + +completed Developers: 2 traces (0 MARKed) 11 events + average 5.5 ev/trace min 4 max 7 + +completed spiral: 3 traces (0 MARKed) 107 events + average 35.6667 ev/trace min 25 max 42 + +Elapsed time 0.021699 sec, Speed: 10553.5 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.cpp new file mode 100644 index 0000000..5471951 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.cpp @@ -0,0 +1,881 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Dining_Philosophers trace generator for scope 3 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_think + , Event_left_fork + , Event_right_fork + // composite events + , Event_Philosopher + , Event_eat + , Event_Fork + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_29_30 + , Event_SIMPLE_LIST_75_76 + // ADD operations + // ROOT events + , Event_Philosophers + , Event_Forks + // main schema event + , Event_Dining_Philosophers }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "think" + , "left_fork" + , "right_fork" + , "Philosopher" + , "eat" + , "Fork" + , "SIMPLE_LIST_29_30" + , "SIMPLE_LIST_75_76" + , "Philosophers" + , "Forks" + , "Dining_Philosophers" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Event_comparison_expr_59_60 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 BEFORE temp2 + return (bool)( (current_host ->follows_matrix)[temp2 * len + temp1]); + } + +//---- 2 ---- +bool Event_comparison_expr_61_62 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 BEFORE temp2 + return (bool)( (current_host ->follows_matrix)[temp2 * len + temp1]); + } + +//---- 3 ---- +int special_function_23(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_left_fork){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_24(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_right_fork){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +bool Quantified_expr_43_44(Coordinate * current_host, int e1_variable, int e2_variable +){ + //===================================== + // quantifier EXISTS with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int f1_variable; + int pivot_f1_variable = e1_variable ; + int f2_variable; + int pivot_f2_variable = e2_variable ; + + // loop 1 for f1_variable + for( f1_variable = 0; f1_variable < len; f1_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ f1_variable * len + pivot_f1_variable +]) && + ( + (Stack[f1_variable]-> name == Event_left_fork) || + (Stack[f1_variable]-> name == Event_right_fork) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for f2_variable + for( f2_variable = 0; f2_variable < len; f2_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ f2_variable * len + pivot_f2_variable +]) && + ( + (Stack[f2_variable]-> name == Event_left_fork) || + (Stack[f2_variable]-> name == Event_right_fork) ) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( find_pair_in_table( f2_variable , f1_variable , Follows) ) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 6 ---- +class SIMPLE_LIST_29_30_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_29_30_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( ( special_function_23(current_host, Root_table[Event_Fork])> 0 )&& ( special_function_24(current_host, Root_table[Event_Fork]) +> 0 ))){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_29_30_ob class + +//---- 7 ---- +class SIMPLE_LIST_75_76_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_75_76_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int p1_variable; // thread variable + vector<int> p1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int p2_variable; // thread variable + vector<int> p2_variable_list; // list of coordinated events + int f_variable; // thread variable + vector<int> f_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for p1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + p1_variable = i; + if( p1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Philosopher)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = p1_variable_list.begin(); s != p1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) p1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source p1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = p1_variable_list.size(); + if(thread_length != p1_variable_list.size()) throw failed; + + // preparing thread for p2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + p2_variable = i; + if( p2_variable_list.size() == thread_length){ + p1_variable = 0; } + else{ + p1_variable = p1_variable_list[p2_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Philosopher)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = p2_variable_list.begin(); s != p2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) p2_variable_list.push_back(i); + } + } }; + + // do the SHIFT_LEFT reshuffling + if(p2_variable_list.size() > 0) + rotate(p2_variable_list.begin(), p2_variable_list.begin() + 1, p2_variable_list.end()); + // finally check the thread length + if(thread_length < 0) thread_length = p2_variable_list.size(); + if(thread_length != p2_variable_list.size()) throw failed; + + // preparing thread for f_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + f_variable = i; + if( f_variable_list.size() == thread_length){ + p1_variable = 0; + p2_variable = 0; } + else{ + p1_variable = p1_variable_list[f_variable_list.size()]; + p2_variable = p2_variable_list[f_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Fork)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = f_variable_list.begin(); s != f_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) f_variable_list.push_back(i); + } + } }; + // no processing needed for the default source f_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = f_variable_list.size(); + if(thread_length != f_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + p1_variable= p1_variable_list[i]; + p2_variable= p2_variable_list[i]; + f_variable= f_variable_list[i]; + + { // SHARE ALL operation + create_matrices(); + // lists of shared events for p1_variable + vector<int> p1_variable_right_fork_list; + // lists of shared events for f_variable + vector<int> f_variable_right_fork_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + p1_variable ]){ + if( Stack[i]->name == Event_right_fork ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = p1_variable_right_fork_list.begin(); + s != p1_variable_right_fork_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) p1_variable_right_fork_list.push_back(i); + } + }; + if(in_matrix[i * len + f_variable ]){ + if( Stack[i]->name == Event_right_fork ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = f_variable_right_fork_list.begin(); + s != f_variable_right_fork_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) f_variable_right_fork_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = f_variable_right_fork_list.size(); + if(p1_variable_right_fork_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = f_variable_right_fork_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(p1_variable_right_fork_list[i], f_variable_right_fork_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + + { // SHARE ALL operation + create_matrices(); + // lists of shared events for p2_variable + vector<int> p2_variable_left_fork_list; + // lists of shared events for f_variable + vector<int> f_variable_left_fork_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + p2_variable ]){ + if( Stack[i]->name == Event_left_fork ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = p2_variable_left_fork_list.begin(); + s != p2_variable_left_fork_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) p2_variable_left_fork_list.push_back(i); + } + }; + if(in_matrix[i * len + f_variable ]){ + if( Stack[i]->name == Event_left_fork ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = f_variable_left_fork_list.begin(); + s != f_variable_left_fork_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) f_variable_left_fork_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = f_variable_left_fork_list.size(); + if(p2_variable_left_fork_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = f_variable_left_fork_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(p2_variable_left_fork_list[i], f_variable_left_fork_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int e1_variable; // thread variable + vector<int> e1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for e1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + e1_variable = i; + if( e1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_eat)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = e1_variable_list.begin(); s != e1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) e1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source e1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = e1_variable_list.size(); + if(thread_length != e1_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + e1_variable= e1_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int e2_variable; // thread variable + vector<int> e2_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for e2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + e2_variable = i; + if( e2_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_eat)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = e2_variable_list.begin(); s != e2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) e2_variable_list.push_back(i); + } + } }; + // no processing needed for the default source e2_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = e2_variable_list.size(); + if(thread_length != e2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + e2_variable= e2_variable_list[i]; + if( Quantified_expr_43_44(current_host, e1_variable, e2_variable) ){ + // ADD operation + Follows.insert(pair<int, int>(e2_variable,e1_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end THEN + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int e_variable; // thread variable + vector<int> e_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for e_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + e_variable = i; + if( e_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_eat)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = e_variable_list.begin(); s != e_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) e_variable_list.push_back(i); + } + } }; + // no processing needed for the default source e_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = e_variable_list.size(); + if(thread_length != e_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + e_variable= e_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int l_variable; // thread variable + vector<int> l_variable_list; // list of coordinated events + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for l_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + l_variable = i; + if( l_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + e_variable ]){ + if( ( (Stack[i]->name == Event_left_fork)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = l_variable_list.begin(); s != l_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) l_variable_list.push_back(i); + } + } }; + // no processing needed for the default source l_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = l_variable_list.size(); + if(thread_length != l_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + l_variable = 0; } + else{ + l_variable = l_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + e_variable ]){ + if( ( (Stack[i]->name == Event_right_fork)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + l_variable= l_variable_list[i]; + r_variable= r_variable_list[i]; + if( ! ( Event_comparison_expr_59_60 (current_host, l_variable , r_variable ) +|| Event_comparison_expr_61_62 (current_host, r_variable , l_variable ) )){} + else{ + throw failed; // REJECT + }// end IF + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_75_76_ob class + +//---- 8 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_think); + element[ 1 ]= new Composite_secondary_producer(Event_eat); + } +};// end class Sq_5_6 + +//---- 9 ---- +class Set_11_12 : public SET_node_producer_container { +public: // constructor + Set_11_12 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_left_fork); + element[ 1 ]= new Atomic_producer(Event_right_fork); + } +};// end class Set_11_12 + +//---- 10 ---- +class Alt_19_20 : public OR_node_producer_container { +public: // constructor + Alt_19_20 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_left_fork); + element[ 1 ]= new Atomic_producer(Event_right_fork); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_19_20 + +//---- 11 ---- +class Ct_77_78 : public AND_node_producer_container { +public: // constructor + Ct_77_78 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_19_20 ; + element[ 1 ]= new Alt_19_20 ; + } +};// end class Ct_77_78 + +//---- 12 ---- +class Ct_79_80 : public SET_node_producer_container { +public: // constructor + Ct_79_80 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Philosopher); + element[ 1 ]= new Composite_secondary_producer(Event_Philosopher); + element[ 2 ]= new Composite_secondary_producer(Event_Philosopher); + } +};// end class Ct_79_80 + +//---- 13 ---- +class Ct_81_82 : public SET_node_producer_container { +public: // constructor + Ct_81_82 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Fork); + element[ 1 ]= new Composite_secondary_producer(Event_Fork); + element[ 2 ]= new Composite_secondary_producer(Event_Fork); + } +};// end class Ct_81_82 + +//---- 14 ---- +class Comp_9_10 : public Composite_producer { +public: // constructor + Comp_9_10 (): Composite_producer(Event_Philosopher){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_5_6 ; + } +};// end class Comp_9_10 + +//---- 15 ---- +class Comp_13_14 : public Composite_producer { +public: // constructor + Comp_13_14 (): Composite_producer(Event_eat){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Set_11_12 ; + } +};// end class Comp_13_14 + +//---- 16 ---- +class Comp_31_32 : public Composite_producer { +public: // constructor + Comp_31_32 (): Composite_producer(Event_Fork){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Ct_77_78 ; + element[ 1 ]= new SIMPLE_LIST_29_30_ob(Event_SIMPLE_LIST_29_30); + } +};// end class Comp_31_32 + +//---- 17 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Philosophers){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Ct_79_80 ; + } +};// end class Comp_3_4 + +//---- 18 ---- +class Comp_17_18 : public Composite_producer { +public: // constructor + Comp_17_18 (): Composite_producer(Event_Forks){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Ct_81_82 ; + } +};// end class Comp_17_18 + +//---- 19 ---- +class SCHEMA_Dining_Philosophers: public Composite_producer { +public: // constructor + SCHEMA_Dining_Philosophers(): Composite_producer(Event_Dining_Philosophers){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_Philosophers); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Forks); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_75_76_ob(Event_SIMPLE_LIST_75_76); + } +};// end class SCHEMA_Dining_Philosophers + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example17_Dining_Philosophers.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 3 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_13_14 temp_20; temp_20.harvest(); + Comp_9_10 temp_21; temp_21.harvest(); + Comp_31_32 temp_22; temp_22.harvest(); + // harvesting traces for ROOT events + Comp_3_4 temp_23; temp_23.harvest(); + Comp_17_18 temp_24; temp_24.harvest(); + // harvesting traces for main schema + SCHEMA_Dining_Philosophers temp_25; temp_25.harvest(); + temp_25.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Dining_Philosophers"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.mp new file mode 100644 index 0000000..6a2330a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.mp @@ -0,0 +1,90 @@ +/* Example 17, Dining_Philosophers.mp +Five silent philosophers sit at a table around a bowl of spaghetti. +A fork is placed between each pair of adjacent philosophers. +It was originally formulated in 1965 by Edsger Dijkstra. + +Each philosopher must alternately think and eat. However, a philosopher +can only eat spaghetti when he has both left and right forks. +Each fork can be held by one philosopher only and so a philosopher can use +the fork only if it's not being used by another philosopher. +After he finishes eating, he needs to put down both forks so they become +available to others. A philosopher can grab the fork on his right or +the one on his left as they become available, but can't start eating +before getting both of them. + +Eating is not limited by the amount of spaghetti left: assume an infinite +supply. The problem is how to design a discipline of behavior (a concurrent +algorithm) such that each philosopher won't starve; i.e., can forever +continue to alternate between eating and thinking assuming that any +philosopher cannot know when others may want to eat or think. +(from Wikipedia: http://en.wikipedia.org/wiki/Dining_philosophers_problem ) + +This MP model provides abstract specification of correct +behaviors, but does not provide implementation details. +Since MP supports automated use case extraction, this model may be used +as a source of test cases for testing the implementation. + +scope 1 yields zero traces, because Philosopher cannot eat with a single fork. +scope 2 yields 2 traces in approx. 0.01 sec. +scope 3 yields 6 traces in approx. 0.05 sec. +scope 4 yields 14 traces in approx. 0.44 sec. +scope 5 yields 30 traces in approx. 1.6 sec. + +============================================================================*/ +SCHEMA Dining_Philosophers + +ROOT Philosophers: {+<$$scope> Philosopher +}; + +Philosopher: (+ <1> think eat +) +/* Philosopher eats at least once, but is limited to reduce the number of traces */ ; + +eat: { left_fork, right_fork }; + +ROOT Forks: {+ <$$scope> Fork +}; + +Fork: (* <2> (left_fork | right_fork) *) +/* limit the number of fork use to reduce the number of traces, + this in fact limits each Philosopher to one "eat" event */ + +/* Each fork is used at least once by each neighbor */ +BUILD{ ENSURE #left_fork > 0 AND #right_fork > 0;}; + +/* Assign forks to the Philosophers. + Philosophers $p1 and $p2 share fork $f. + + Shift_left reshuffling takes the first event + from the beginning and puts it to the end of sequence. + This adjusted thread is used to produce the ring topology, + and to assign two neighbors $p1 and $p2 for sharing fork $f */ + +COORDINATE $p1: Philosopher, + <SHIFT_LEFT> $p2: Philosopher, + $f: Fork +DO /* Default sequence is adequate here: + the order of fork use in Philosopher and in Fork are the same. */ + $p1, $f SHARE ALL right_fork; + $p2, $f SHARE ALL left_fork; +OD; + +/* to avoid deadlocks 'eat' events competing for resources are put in order. */ +COORDINATE $e1: eat +DO COORDINATE $e2: eat + DO + IF EXISTS $f1: (left_fork | right_fork) FROM $e1, + $f2: (left_fork | right_fork) FROM $e2 + ($f1 PRECEDES $f2) + THEN + ADD $e1 PRECEDES $e2; + FI; + OD; +OD; + +/* Ensure that both forks can be used simultaneously */ +COORDINATE $e: eat +DO COORDINATE $l: left_fork FROM $e, + $r: right_fork FROM $e + DO + /* MAY_OVERLAP $x $y is an abbreviation for NOT($x BEFORE $y OR $y BEFORE $x) */ + ENSURE MAY_OVERLAP $l $r; + OD; +OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.temp.txt new file mode 100644 index 0000000..402da51 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example17_Dining_Philosophers tree 3 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.tree new file mode 100644 index 0000000000000000000000000000000000000000..a1a5dcd99dae934f1b30f772df3dcaff411c088e GIT binary patch literal 12800 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 WG)&6Kr~{&mi~oQ88_oZn@&6yxZvpiH literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.txt new file mode 100644 index 0000000..d8fc0f0 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.txt @@ -0,0 +1,18 @@ +generating traces for scope 3 +completed eat: 1 traces (0 MARKed) 3 events + +completed Philosopher: 1 traces (0 MARKed) 5 events + +completed Fork: 2 traces (0 MARKed) 6 events + average 3 ev/trace min 3 max 3 + +completed Philosophers: 1 traces (0 MARKed) 16 events + +completed Forks: 8 traces (0 MARKed) 80 events + average 10 ev/trace min 10 max 10 + +completed Dining_Philosophers: 6 traces (0 MARKed) 162 events + average 27 ev/trace min 27 max 27 + +Elapsed time 0.050227 sec, Speed: 5415.41 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.cpp new file mode 100644 index 0000000..1a618cc --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.cpp @@ -0,0 +1,458 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Cardiac_Arrest trace generator for scope 3 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_check_breathing + , Event_finish_first + , Event_check_pulse + , Event_identify_the_patient + , Event_record_assessment_findings + , Event_identify_the_priority + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_16_17 + , Event_SIMPLE_LIST_30_31 + // ADD operations + // ROOT events + , Event_Phase1 + , Event_Triage + // main schema event + , Event_Cardiac_Arrest }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "check_breathing" + , "finish_first" + , "check_pulse" + , "identify_the_patient" + , "record_assessment_findings" + , "identify_the_priority" + , "SIMPLE_LIST_16_17" + , "SIMPLE_LIST_30_31" + , "Phase1" + , "Triage" + , "Cardiac_Arrest" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_11(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish_first){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 2 ---- +class SIMPLE_LIST_16_17_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_16_17_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( special_function_11(current_host, Root_table[Event_Phase1])== 1 )){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_16_17_ob class + +//---- 3 ---- +class SIMPLE_LIST_30_31_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_30_31_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_finish_first)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_identify_the_patient)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_30_31_ob class + +//---- 4 ---- +class Opt_1_2 : public OR_node_producer_container { +public: // constructor + Opt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_finish_first); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_1_2 + +//---- 5 ---- +class Sq_3_4 : public AND_node_producer_container { +public: // constructor + Sq_3_4 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_check_breathing); + element[ 1 ]= new Opt_1_2 ; + } +};// end class Sq_3_4 + +//---- 6 ---- +class Opt_5_6 : public OR_node_producer_container { +public: // constructor + Opt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_finish_first); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_5_6 + +//---- 7 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_check_pulse); + element[ 1 ]= new Opt_5_6 ; + } +};// end class Sq_7_8 + +//---- 8 ---- +class Set_9_10 : public SET_node_producer_container { +public: // constructor + Set_9_10 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_3_4 ; + element[ 1 ]= new Sq_7_8 ; + } +};// end class Set_9_10 + +//---- 9 ---- +class Sq_20_21 : public AND_node_producer_container { +public: // constructor + Sq_20_21 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_identify_the_patient); + element[ 1 ]= new Atomic_producer(Event_record_assessment_findings); + element[ 2 ]= new Atomic_producer(Event_identify_the_priority); + } +};// end class Sq_20_21 + +//---- 10 ---- +class Comp_18_19 : public Composite_producer { +public: // constructor + Comp_18_19 (): Composite_producer(Event_Phase1){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Set_9_10 ; + element[ 1 ]= new SIMPLE_LIST_16_17_ob(Event_SIMPLE_LIST_16_17); + } +};// end class Comp_18_19 + +//---- 11 ---- +class Comp_22_23 : public Composite_producer { +public: // constructor + Comp_22_23 (): Composite_producer(Event_Triage){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_20_21 ; + } +};// end class Comp_22_23 + +//---- 12 ---- +class SCHEMA_Cardiac_Arrest: public Composite_producer { +public: // constructor + SCHEMA_Cardiac_Arrest(): Composite_producer(Event_Cardiac_Arrest){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_Phase1); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Triage); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_30_31_ob(Event_SIMPLE_LIST_30_31); + } +};// end class SCHEMA_Cardiac_Arrest + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example18_Workflow_pattern.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 3 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_18_19 temp_13; temp_13.harvest(); + Comp_22_23 temp_14; temp_14.harvest(); + // harvesting traces for main schema + SCHEMA_Cardiac_Arrest temp_15; temp_15.harvest(); + temp_15.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Cardiac_Arrest"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.mp new file mode 100644 index 0000000..6c3b960 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.mp @@ -0,0 +1,30 @@ +/* Example18 Workflow pattern + +the web site +http://workflowpatterns.com/patterns/control/index.php +contains a collection of workflow patterns specified with Petri nets. + +Pattern 9 (Structured Discriminator) +http://workflowpatterns.com/patterns/control/advanced_branching/wcp9.php + +When handling a cardiac arrest, the check_breathing and check_pulse tasks +run in parallel. Once the first of these has completed, the triage task +is commenced. Completion of the other task is ignored and does not result +in a second instance of the triage task. + +run for scope 1 +*/ + +SCHEMA Cardiac_Arrest + +ROOT Phase1: { check_breathing [finish_first], + check_pulse [finish_first] } + +BUILD{ ENSURE #finish_first == 1; }; + +ROOT Triage: identify_the_patient + record_assessment_findings + identify_the_priority; + +COORDINATE $a: finish_first, $b: identify_the_patient + DO ADD $a PRECEDES $b; OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.temp.txt new file mode 100644 index 0000000..54fd25c --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example18_Workflow_pattern tree 3 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.tree new file mode 100644 index 0000000000000000000000000000000000000000..f5aa204f1fe4ab073b2fde2b9772f47fbf93068b GIT binary patch literal 5632 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 KTm7G`|Gxn%-6>xH literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.txt new file mode 100644 index 0000000..0d57835 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.txt @@ -0,0 +1,11 @@ +generating traces for scope 3 +completed Phase1: 2 traces (0 MARKed) 8 events + average 4 ev/trace min 4 max 4 + +completed Triage: 1 traces (0 MARKed) 4 events + +completed Cardiac_Arrest: 2 traces (0 MARKed) 18 events + average 9 ev/trace min 9 max 9 + +Elapsed time 0.000312 sec, Speed: 96153.8 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.cpp new file mode 100644 index 0000000..b6bd6fe --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.cpp @@ -0,0 +1,1433 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Suppliers trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals + pair_list related_to_UDR_set; + pair_list Is_supplier_for_UDR_set; +// matrices for User-Defined Relations used by Coordinate objects + char * related_to_UDR_matrix = 0; + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + related_to_UDR_set.clear(); + Is_supplier_for_UDR_set.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!related_to_UDR_set.empty()) + UDRs.insert(pair<string, pair_list>("related_to",related_to_UDR_set)); + if(!Is_supplier_for_UDR_set.empty()) + UDRs.insert(pair<string, pair_list>("Is_supplier_for",Is_supplier_for_UDR_set)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + + if(p1->first == "related_to"){ + for(p = (p1->second).begin(); p != (p1->second).end(); p++) + related_to_UDR_set.insert(pair<int, int>(p->first + base, p->second + base));} + else + if(p1->first == "Is_supplier_for"){ + for(p = (p1->second).begin(); p != (p1->second).end(); p++) + Is_supplier_for_UDR_set.insert(pair<int, int>(p->first + base, p->second + base));} + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from related_to_UDR_set + temp_list.clear(); + for(p = related_to_UDR_set.begin(); p != related_to_UDR_set.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + related_to_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Is_supplier_for_UDR_set + temp_list.clear(); + for(p = Is_supplier_for_UDR_set.begin(); p != Is_supplier_for_UDR_set.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Is_supplier_for_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // merging from related_to_UDR_set + // doing all adjustments to both a and b + temp_list.clear(); + for(p = related_to_UDR_set.begin(); p != related_to_UDR_set.end(); p++) { + if(p->second == b) + temp_list.insert(pair<int, int>(p->first, a)); + if(p->first == b) + temp_list.insert(pair<int, int>(a, p->second)); + if(p->second == a) + temp_list.insert(pair<int, int>(p->first, b)); + if(p->first == a) + temp_list.insert(pair<int, int>(b, p->second)); + }; + related_to_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + // merging from Is_supplier_for_UDR_set + // doing all adjustments to both a and b + temp_list.clear(); + for(p = Is_supplier_for_UDR_set.begin(); p != Is_supplier_for_UDR_set.end(); p++) { + if(p->second == b) + temp_list.insert(pair<int, int>(p->first, a)); + if(p->first == b) + temp_list.insert(pair<int, int>(a, p->second)); + if(p->second == a) + temp_list.insert(pair<int, int>(p->first, b)); + if(p->first == a) + temp_list.insert(pair<int, int>(b, p->second)); + }; + Is_supplier_for_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Request_delivery + , Event_Receive_supply + , Event_Not_available + , Event_Receive_order_and_buy + , Event_Sell + // composite events + , Event_Consumer + , Event_Producer + // top coordination operations + , Event_Coordinate_23_24 + , Event_Coordinate_41_42 + , Event_Coordinate_49_50 + , Event_Coordinate_75_76 + // top conditional and simple action operations + , Event_SIMPLE_LIST_107_108 + // ADD operations + // ROOT events + , Event_Consumers + , Event_Supply_Office + , Event_Producers + // main schema event + , Event_Suppliers }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Request_delivery" + , "Receive_supply" + , "Not_available" + , "Receive_order_and_buy" + , "Sell" + , "Consumer" + , "Producer" + , "Coordinate_23_24" + , "Coordinate_41_42" + , "Coordinate_49_50" + , "Coordinate_75_76" + , "SIMPLE_LIST_107_108" + , "Consumers" + , "Supply_Office" + , "Producers" + , "Suppliers" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Event_comparison_expr_53_54 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 BEFORE temp2 + return (bool)( (current_host ->follows_matrix)[temp2 * len + temp1]); + } + +//---- 2 ---- +bool Quantified_expr_55_56(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int request_variable; + int pivot_request_variable = 0; + int receive_variable; + int pivot_receive_variable = 0; + + // loop 1 for request_variable + for( request_variable = 0; request_variable < len; request_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ request_variable * len + +pivot_request_variable ]) && + ( + (Stack[request_variable]-> name == Event_Request_delivery) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for receive_variable + for( receive_variable = 0; receive_variable < len; receive_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ receive_variable * len + +pivot_receive_variable ]) && + ( + (Stack[receive_variable]-> name == Event_Receive_supply) ) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for FOREACH + if( (! ( create_UDR_matrix(current_host, related_to_UDR_matrix, related_to_UDR_set), + related_to_UDR_matrix[request_variable * Stack.size() + receive_variable]) +|| Event_comparison_expr_53_54 (current_host, request_variable , +receive_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 3 ---- +bool Quantified_expr_65_66(Coordinate * current_host, int c1_variable, int c2_variable +){ + //===================================== + // quantifier EXISTS with 3 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int request_variable; + int pivot_request_variable = c1_variable ; + int receive_variable; + int pivot_receive_variable = c2_variable ; + int order_variable; + int pivot_order_variable = Root_table[Event_Supply_Office]; + + // loop 1 for request_variable + for( request_variable = 0; request_variable < len; request_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ request_variable * len + +pivot_request_variable ]) && + ( + (Stack[request_variable]-> name == Event_Request_delivery) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for receive_variable + for( receive_variable = 0; receive_variable < len; receive_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ receive_variable * len + +pivot_receive_variable ]) && + ( + (Stack[receive_variable]-> name == Event_Receive_supply) ) + ) // end of if(selection condition) + { // branch for 2 + + // loop 3 for order_variable + for( order_variable = 0; order_variable < len; order_variable ++){ + // selection condition for 3 FROM + if( (current_host-> in_matrix [ order_variable * len + +pivot_order_variable ]) && + ( + (Stack[order_variable]-> name == Event_Receive_order_and_buy) ) + ) // end of if(selection condition) + { // branch for 3 + + // evaluate the body bool_expr for EXISTS + if( ( ( create_UDR_matrix(current_host, related_to_UDR_matrix, related_to_UDR_set), + related_to_UDR_matrix[request_variable * Stack.size() + order_variable]) +&& ( create_UDR_matrix(current_host, related_to_UDR_matrix, related_to_UDR_set), + related_to_UDR_matrix[order_variable * Stack.size() + receive_variable])) +) + {result = true; goto end_of_story;}; + }; // end of branch for 3 + }; // end for loop 3 + + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 4 ---- +bool Quantified_expr_67_68(Coordinate * current_host){ + //===================================== + // quantifier EXISTS DISJ with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int c1_variable; + int pivot_c1_variable = 0; + int c2_variable; + int pivot_c2_variable = 0; + + // loop 1 for c1_variable + for( c1_variable = 0; c1_variable < len; c1_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ c1_variable * len + pivot_c1_variable +]) && + ( + (Stack[c1_variable]-> name == Event_Consumer) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for c2_variable + for( c2_variable = 0; c2_variable < len; c2_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ c2_variable * len + pivot_c2_variable +]) && + ( + (Stack[c2_variable]-> name == Event_Consumer) ) + // checking DISJ + && c2_variable != c1_variable + && !(current_host-> eq_matrix[ c2_variable * len + c1_variable ]) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( Quantified_expr_65_66(current_host, c1_variable, c2_variable) ) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 5 ---- +bool Quantified_expr_81_82(Coordinate * current_host, int c1_variable, int c2_variable +){ + //===================================== + // quantifier EXISTS with 3 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int request_variable; + int pivot_request_variable = c1_variable ; + int receive_variable; + int pivot_receive_variable = c2_variable ; + int order_variable; + int pivot_order_variable = Root_table[Event_Supply_Office]; + + // loop 1 for request_variable + for( request_variable = 0; request_variable < len; request_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ request_variable * len + +pivot_request_variable ]) && + ( + (Stack[request_variable]-> name == Event_Request_delivery) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for receive_variable + for( receive_variable = 0; receive_variable < len; receive_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ receive_variable * len + +pivot_receive_variable ]) && + ( + (Stack[receive_variable]-> name == Event_Not_available) ) + ) // end of if(selection condition) + { // branch for 2 + + // loop 3 for order_variable + for( order_variable = 0; order_variable < len; order_variable ++){ + // selection condition for 3 FROM + if( (current_host-> in_matrix [ order_variable * len + +pivot_order_variable ]) && + ( + (Stack[order_variable]-> name == Event_Receive_order_and_buy) ) + ) // end of if(selection condition) + { // branch for 3 + + // evaluate the body bool_expr for EXISTS + if( ( ( create_UDR_matrix(current_host, related_to_UDR_matrix, related_to_UDR_set), + related_to_UDR_matrix[request_variable * Stack.size() + order_variable]) +&& ( create_UDR_matrix(current_host, related_to_UDR_matrix, related_to_UDR_set), + related_to_UDR_matrix[order_variable * Stack.size() + receive_variable])) +) + {result = true; goto end_of_story;}; + }; // end of branch for 3 + }; // end for loop 3 + + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 6 ---- +bool Quantified_expr_83_84(Coordinate * current_host){ + //===================================== + // quantifier EXISTS DISJ with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int c1_variable; + int pivot_c1_variable = 0; + int c2_variable; + int pivot_c2_variable = 0; + + // loop 1 for c1_variable + for( c1_variable = 0; c1_variable < len; c1_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ c1_variable * len + pivot_c1_variable +]) && + ( + (Stack[c1_variable]-> name == Event_Consumer) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for c2_variable + for( c2_variable = 0; c2_variable < len; c2_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ c2_variable * len + pivot_c2_variable +]) && + ( + (Stack[c2_variable]-> name == Event_Consumer) ) + // checking DISJ + && c2_variable != c1_variable + && !(current_host-> eq_matrix[ c2_variable * len + c1_variable ]) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( Quantified_expr_81_82(current_host, c1_variable, c2_variable) ) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 7 ---- +bool Quantified_expr_91_92(Coordinate * current_host, int c_variable, int p_variable +){ + //===================================== + // quantifier EXISTS with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int request_variable; + int pivot_request_variable = c_variable ; + int sell_variable; + int pivot_sell_variable = p_variable ; + + // loop 1 for request_variable + for( request_variable = 0; request_variable < len; request_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ request_variable * len + +pivot_request_variable ]) && + ( + (Stack[request_variable]-> name == Event_Request_delivery) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for sell_variable + for( sell_variable = 0; sell_variable < len; sell_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ sell_variable * len + +pivot_sell_variable ]) && + ( + (Stack[sell_variable]-> name == Event_Sell) ) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( ( create_UDR_matrix(current_host, related_to_UDR_matrix, related_to_UDR_set), + related_to_UDR_matrix[request_variable * Stack.size() + sell_variable]) +) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 8 ---- +class SIMPLE_LIST_107_108_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_107_108_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ! Quantified_expr_83_84(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + { // COORDINATE operation + int thread_length = -1; + int c_variable; // thread variable + vector<int> c_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for c_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + c_variable = i; + if( c_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Consumer)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = c_variable_list.begin(); s != c_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) c_variable_list.push_back(i); + } + } }; + // no processing needed for the default source c_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = c_variable_list.size(); + if(thread_length != c_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + c_variable= c_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int p_variable; // thread variable + vector<int> p_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for p_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + p_variable = i; + if( p_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Producer)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = p_variable_list.begin(); s != p_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) p_variable_list.push_back(i); + } + } }; + // no processing needed for the default source p_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = p_variable_list.size(); + if(thread_length != p_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + p_variable= p_variable_list[i]; + if( Quantified_expr_91_92(current_host, c_variable, p_variable) ){ + // ADD operation + Is_supplier_for_UDR_set.insert(pair<int, int>(p_variable,c_variable)); + }// end THEN + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_107_108_ob class + +//---- 9 ---- +class Coordinate_23_24_ob: public Coordinate { +public: + //**** COORDINATE with asynchronous sources **** + Coordination_source * source[ 1 ]; + // Atomic_producer, Composite_event_instance, Coordinate_event_ob + // set the global derivation_path_mark + int current_path; + int unique_id; + // for traverse() to detect when no more options remain + int completeness_count; + int activated_source_count; + + // constructor + Coordinate_23_24_ob(int n): Coordinate(n){ + unique_id = get_unique_number(); + // remember path where we start to produce permutations + current_path = -20; + // initialize all sources + for(int i = 0; i < 1 ; i++) source[i] = new Coordination_source; + } + + // to overload the inherited hold() from Event_producer via Coordinate + void hold(){ + for(int k = 0; k < 1 ; k++) source[k]->hold_source(); } + +Traversal_result traverse(){ + //*** traverse with permutation generation + completeness_count = 0; activated_source_count= 0; + if(current_path != derivation_path_mark){ + current_path = derivation_path_mark; + // prepare to repeat the permutation cycle + for(int k = 0; k < 1 ; k++) source[k]->reset(); + }; + + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int request_variable; // thread variable + vector<int> request_variable_list; // list of coordinated events + int Consumers_source = Root_table[Event_Consumers]; // source of coordination + + int receive_request_variable; // thread variable + vector<int> receive_request_variable_list; // list of coordinated events + int Supply_Office_source = Root_table[Event_Supply_Office] +; // source of coordination + + // create lists of coordinated events + // preparing thread for request_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + request_variable = i; + if( request_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Consumers_source ]){ + if( ( (Stack[i]->name == Event_Request_delivery)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = request_variable_list.begin(); s != request_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) request_variable_list.push_back(i); + } + } }; + // **** <!> source with permutations **** + activated_source_count++; + // get next permutation + switch(source[ 0 ] -> get_permutation( request_variable_list) ){ + case success_and_completed: completeness_count++; + break; + case success_and_ready_for_next: + // hold all previous Coordination sources + // until source[ 0 ] completes + for(int k = 0; k < 0 ; k++) source[k]->hold_source(); + default:; // to avoid C++ warnings + };// end switch + // reset all following sources preparing to repeat the permutation cycle + if(!(source[ 0 ] -> was_on_hold)) { + for(int k = 0 + 1; k < 1 ; k++) source[k]->reset(); + }; + source[ 0 ] -> was_on_hold = false; + // if has proceeded so far request_variable_list is ready + + // finally check the thread length + if(thread_length < 0) thread_length = request_variable_list.size(); + if(thread_length != request_variable_list.size()) throw failed; + + // preparing thread for receive_request_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + receive_request_variable = i; + if( receive_request_variable_list.size() == thread_length){ + request_variable = 0; } + else{ + request_variable = request_variable_list[receive_request_variable_list.size()]; +}; + if(in_matrix[i * len + Supply_Office_source ]){ + if( ( (Stack[i]->name == Event_Receive_order_and_buy)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = receive_request_variable_list.begin(); s != receive_request_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) receive_request_variable_list.push_back(i); + } + } }; + // no processing needed for the default source receive_request_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = receive_request_variable_list.size(); + if(thread_length != receive_request_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + request_variable= request_variable_list[i]; + receive_request_variable= receive_request_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(receive_request_variable,request_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + // ADD operation + related_to_UDR_set.insert(pair<int, int>(request_variable,receive_request_variable)); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } + catch(Traversal_result t){ + return failed; + } + return (completeness_count == activated_source_count)? + success_and_completed: success_and_ready_for_next; + } // end traverse() +}; // end Coordinate_23_24_ob class + +//---- 10 ---- +class Coordinate_41_42_ob: public Coordinate { +public: + //**** COORDINATE with asynchronous sources **** + Coordination_source * source[ 1 ]; + // Atomic_producer, Composite_event_instance, Coordinate_event_ob + // set the global derivation_path_mark + int current_path; + int unique_id; + // for traverse() to detect when no more options remain + int completeness_count; + int activated_source_count; + + // constructor + Coordinate_41_42_ob(int n): Coordinate(n){ + unique_id = get_unique_number(); + // remember path where we start to produce permutations + current_path = -20; + // initialize all sources + for(int i = 0; i < 1 ; i++) source[i] = new Coordination_source; + } + + // to overload the inherited hold() from Event_producer via Coordinate + void hold(){ + for(int k = 0; k < 1 ; k++) source[k]->hold_source(); } + +Traversal_result traverse(){ + //*** traverse with permutation generation + completeness_count = 0; activated_source_count= 0; + if(current_path != derivation_path_mark){ + current_path = derivation_path_mark; + // prepare to repeat the permutation cycle + for(int k = 0; k < 1 ; k++) source[k]->reset(); + }; + + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int receive_order_variable; // thread variable + vector<int> receive_order_variable_list; // list of coordinated events + int Supply_Office_source = Root_table[Event_Supply_Office] +; // source of coordination + int sell_variable; // thread variable + vector<int> sell_variable_list; // list of coordinated events + int Producers_source = Root_table[Event_Producers]; // source of coordination + + + // create lists of coordinated events + // preparing thread for receive_order_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + receive_order_variable = i; + if( receive_order_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Supply_Office_source ]){ + if( ( (Stack[i]->name == Event_Receive_order_and_buy)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = receive_order_variable_list.begin(); s != receive_order_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) receive_order_variable_list.push_back(i); + } + } }; + // no processing needed for the default source receive_order_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = receive_order_variable_list.size(); + if(thread_length != receive_order_variable_list.size()) throw failed; + + // preparing thread for sell_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + sell_variable = i; + if( sell_variable_list.size() == thread_length){ + receive_order_variable = 0; } + else{ + receive_order_variable = receive_order_variable_list[sell_variable_list.size()]; +}; + if(in_matrix[i * len + Producers_source ]){ + if( ( (Stack[i]->name == Event_Sell)|| (Stack[i]->name == Event_Not_available) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = sell_variable_list.begin(); s != sell_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) sell_variable_list.push_back(i); + } + } }; + // **** <!> source with permutations **** + activated_source_count++; + // get next permutation + switch(source[ 0 ] -> get_permutation( sell_variable_list) ){ + case success_and_completed: completeness_count++; + break; + case success_and_ready_for_next: + // hold all previous Coordination sources + // until source[ 0 ] completes + for(int k = 0; k < 0 ; k++) source[k]->hold_source(); + default:; // to avoid C++ warnings + };// end switch + // reset all following sources preparing to repeat the permutation cycle + if(!(source[ 0 ] -> was_on_hold)) { + for(int k = 0 + 1; k < 1 ; k++) source[k]->reset(); + }; + source[ 0 ] -> was_on_hold = false; + // if has proceeded so far sell_variable_list is ready + + // finally check the thread length + if(thread_length < 0) thread_length = sell_variable_list.size(); + if(thread_length != sell_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + receive_order_variable= receive_order_variable_list[i]; + sell_variable= sell_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(sell_variable,receive_order_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + // ADD operation + related_to_UDR_set.insert(pair<int, int>(receive_order_variable,sell_variable)); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } + catch(Traversal_result t){ + return failed; + } + return (completeness_count == activated_source_count)? + success_and_completed: success_and_ready_for_next; + } // end traverse() +}; // end Coordinate_41_42_ob class + +//---- 11 ---- +class Coordinate_49_50_ob: public Coordinate { +public: + //**** COORDINATE with asynchronous sources **** + Coordination_source * source[ 1 ]; + // Atomic_producer, Composite_event_instance, Coordinate_event_ob + // set the global derivation_path_mark + int current_path; + int unique_id; + // for traverse() to detect when no more options remain + int completeness_count; + int activated_source_count; + + // constructor + Coordinate_49_50_ob(int n): Coordinate(n){ + unique_id = get_unique_number(); + // remember path where we start to produce permutations + current_path = -20; + // initialize all sources + for(int i = 0; i < 1 ; i++) source[i] = new Coordination_source; + } + + // to overload the inherited hold() from Event_producer via Coordinate + void hold(){ + for(int k = 0; k < 1 ; k++) source[k]->hold_source(); } + +Traversal_result traverse(){ + //*** traverse with permutation generation + completeness_count = 0; activated_source_count= 0; + if(current_path != derivation_path_mark){ + current_path = derivation_path_mark; + // prepare to repeat the permutation cycle + for(int k = 0; k < 1 ; k++) source[k]->reset(); + }; + + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int sell_variable; // thread variable + vector<int> sell_variable_list; // list of coordinated events + int Producers_source = Root_table[Event_Producers]; // source of coordination + + int receive_variable; // thread variable + vector<int> receive_variable_list; // list of coordinated events + int Consumers_source = Root_table[Event_Consumers]; // source of coordination + + + // create lists of coordinated events + // preparing thread for sell_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + sell_variable = i; + if( sell_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Producers_source ]){ + if( ( (Stack[i]->name == Event_Sell)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = sell_variable_list.begin(); s != sell_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) sell_variable_list.push_back(i); + } + } }; + // no processing needed for the default source sell_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = sell_variable_list.size(); + if(thread_length != sell_variable_list.size()) throw failed; + + // preparing thread for receive_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + receive_variable = i; + if( receive_variable_list.size() == thread_length){ + sell_variable = 0; } + else{ + sell_variable = sell_variable_list[receive_variable_list.size()];}; + if(in_matrix[i * len + Consumers_source ]){ + if( ( (Stack[i]->name == Event_Receive_supply)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = receive_variable_list.begin(); s != receive_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) receive_variable_list.push_back(i); + } + } }; + // **** <!> source with permutations **** + activated_source_count++; + // get next permutation + switch(source[ 0 ] -> get_permutation( receive_variable_list) ){ + case success_and_completed: completeness_count++; + break; + case success_and_ready_for_next: + // hold all previous Coordination sources + // until source[ 0 ] completes + for(int k = 0; k < 0 ; k++) source[k]->hold_source(); + default:; // to avoid C++ warnings + };// end switch + // reset all following sources preparing to repeat the permutation cycle + if(!(source[ 0 ] -> was_on_hold)) { + for(int k = 0 + 1; k < 1 ; k++) source[k]->reset(); + }; + source[ 0 ] -> was_on_hold = false; + // if has proceeded so far receive_variable_list is ready + + // finally check the thread length + if(thread_length < 0) thread_length = receive_variable_list.size(); + if(thread_length != receive_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + sell_variable= sell_variable_list[i]; + receive_variable= receive_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(receive_variable,sell_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + // ADD operation + related_to_UDR_set.insert(pair<int, int>(sell_variable,receive_variable)); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } + catch(Traversal_result t){ + return failed; + } + return (completeness_count == activated_source_count)? + success_and_completed: success_and_ready_for_next; + } // end traverse() +}; // end Coordinate_49_50_ob class + +//---- 12 ---- +class Coordinate_75_76_ob: public Coordinate { +public: + //**** COORDINATE with asynchronous sources **** + Coordination_source * source[ 1 ]; + // Atomic_producer, Composite_event_instance, Coordinate_event_ob + // set the global derivation_path_mark + int current_path; + int unique_id; + // for traverse() to detect when no more options remain + int completeness_count; + int activated_source_count; + + // constructor + Coordinate_75_76_ob(int n): Coordinate(n){ + unique_id = get_unique_number(); + // remember path where we start to produce permutations + current_path = -20; + // initialize all sources + for(int i = 0; i < 1 ; i++) source[i] = new Coordination_source; + } + + // to overload the inherited hold() from Event_producer via Coordinate + void hold(){ + for(int k = 0; k < 1 ; k++) source[k]->hold_source(); } + +Traversal_result traverse(){ + //*** traverse with permutation generation + completeness_count = 0; activated_source_count= 0; + if(current_path != derivation_path_mark){ + current_path = derivation_path_mark; + // prepare to repeat the permutation cycle + for(int k = 0; k < 1 ; k++) source[k]->reset(); + }; + + try{ create_matrices(); + if( Quantified_expr_55_56(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( ! Quantified_expr_67_68(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + { // COORDINATE operation + int thread_length = -1; + int refusal1_variable; // thread variable + vector<int> refusal1_variable_list; // list of coordinated events + int Producers_source = Root_table[Event_Producers]; // source of coordination + + int refusal2_variable; // thread variable + vector<int> refusal2_variable_list; // list of coordinated events + int Consumers_source = Root_table[Event_Consumers]; // source of coordination + + + // create lists of coordinated events + // preparing thread for refusal1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + refusal1_variable = i; + if( refusal1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Producers_source ]){ + if( ( (Stack[i]->name == Event_Not_available)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = refusal1_variable_list.begin(); s != refusal1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) refusal1_variable_list.push_back(i); + } + } }; + // **** <!> source with permutations **** + activated_source_count++; + // get next permutation + switch(source[ 0 ] -> get_permutation( refusal1_variable_list) ){ + case success_and_completed: completeness_count++; + break; + case success_and_ready_for_next: + // hold all previous Coordination sources + // until source[ 0 ] completes + for(int k = 0; k < 0 ; k++) source[k]->hold_source(); + default:; // to avoid C++ warnings + };// end switch + // reset all following sources preparing to repeat the permutation cycle + if(!(source[ 0 ] -> was_on_hold)) { + for(int k = 0 + 1; k < 1 ; k++) source[k]->reset(); + }; + source[ 0 ] -> was_on_hold = false; + // if has proceeded so far refusal1_variable_list is ready + + // finally check the thread length + if(thread_length < 0) thread_length = refusal1_variable_list.size(); + if(thread_length != refusal1_variable_list.size()) throw failed; + + // preparing thread for refusal2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + refusal2_variable = i; + if( refusal2_variable_list.size() == thread_length){ + refusal1_variable = 0; } + else{ + refusal1_variable = refusal1_variable_list[refusal2_variable_list.size()]; +}; + if(in_matrix[i * len + Consumers_source ]){ + if( ( (Stack[i]->name == Event_Not_available)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = refusal2_variable_list.begin(); s != refusal2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) refusal2_variable_list.push_back(i); + } + } }; + // no processing needed for the default source refusal2_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = refusal2_variable_list.size(); + if(thread_length != refusal2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + refusal1_variable= refusal1_variable_list[i]; + refusal2_variable= refusal2_variable_list[i]; + // SHARE_clause , throws failed exception if cannot complete + make_equality_complete( refusal1_variable , refusal2_variable ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } + catch(Traversal_result t){ + return failed; + } + return (completeness_count == activated_source_count)? + success_and_completed: success_and_ready_for_next; + } // end traverse() +}; // end Coordinate_75_76_ob class + +//---- 13 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Receive_supply); + element[ 1 ]= new Atomic_producer(Event_Not_available); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_5_6 + +//---- 14 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Request_delivery); + element[ 1 ]= new Alt_5_6 ; + } +};// end class Sq_7_8 + +//---- 15 ---- +class Itr_9_10 : public OR_node_producer_container { +public: // constructor + Itr_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_7_8 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_9_10 + +//---- 16 ---- +class Alt_29_30 : public OR_node_producer_container { +public: // constructor + Alt_29_30 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Sell); + element[ 1 ]= new Atomic_producer(Event_Not_available); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_29_30 + +//---- 17 ---- +class Itr_31_32 : public OR_node_producer_container { +public: // constructor + Itr_31_32 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_29_30 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_31_32 + +//---- 18 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_Consumer){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_9_10 ; + } +};// end class Comp_11_12 + +//---- 19 ---- +class Comp_33_34 : public Composite_producer { +public: // constructor + Comp_33_34 (): Composite_producer(Event_Producer){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_31_32 ; + } +};// end class Comp_33_34 + +//---- 20 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Consumers){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Consumer); + } +};// end class Comp_3_4 + +//---- 21 ---- +class Comp_15_16 : public Composite_producer { +public: // constructor + Comp_15_16 (): Composite_producer(Event_Supply_Office){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_Receive_order_and_buy); + } +};// end class Comp_15_16 + +//---- 22 ---- +class Comp_27_28 : public Composite_producer { +public: // constructor + Comp_27_28 (): Composite_producer(Event_Producers){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Producer); + } +};// end class Comp_27_28 + +//---- 23 ---- +class SCHEMA_Suppliers: public Composite_producer { +public: // constructor + SCHEMA_Suppliers(): Composite_producer(Event_Suppliers){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 8 ]; + element[0]= new Composite_secondary_producer(Event_Consumers); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Supply_Office); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new Coordinate_23_24_ob(Event_Coordinate_23_24); + element[3]= new Composite_secondary_producer(Event_Producers); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new Coordinate_41_42_ob(Event_Coordinate_41_42); + element[5]= new Coordinate_49_50_ob(Event_Coordinate_49_50); + element[6]= new Coordinate_75_76_ob(Event_Coordinate_75_76); + element[7]= new SIMPLE_LIST_107_108_ob(Event_SIMPLE_LIST_107_108); + } +};// end class SCHEMA_Suppliers + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example19_Consumers_Suppliers.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_11_12 temp_24; temp_24.harvest(); + Comp_33_34 temp_25; temp_25.harvest(); + // harvesting traces for ROOT events + Comp_3_4 temp_26; temp_26.harvest(); + Comp_15_16 temp_27; temp_27.harvest(); + Comp_27_28 temp_28; temp_28.harvest(); + // harvesting traces for main schema + SCHEMA_Suppliers temp_29; temp_29.harvest(); + temp_29.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Suppliers"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.mp new file mode 100644 index 0000000..cb771e9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.mp @@ -0,0 +1,101 @@ +/* Example 19, Consumers/Suppliers + +Asynchronous coordination and dependency definition example. + +user-defined relation related_to connects events within each +single Request_delivery -> Consume chain + +on Gryphon: + scope 1, 2 traces, in less than 1 sec. + scope 2, 670 traces, approx. time 2.5 min. +*/ + +SCHEMA Suppliers + +/*=========================================*/ +ROOT Consumers: {+ Consumer +}; + +Consumer: (* Request_delivery + + ( Receive_supply | + + Not_available ) + *) +; + +/*======================================================================= + Supply_Office communicates asynchronously with Producers and Suppliers +=========================================================================*/ +ROOT Supply_Office: (*<1.. $$scope * $$scope> + /* Supply_Office serves several Consumers, + hence the iteration should be increased */ + Receive_order_and_buy + *); + +/*======== coordination ===================================================*/ +COORDINATE <!> $request: Request_delivery FROM Consumers, + $receive_request: Receive_order_and_buy FROM Supply_Office + DO + ADD $request PRECEDES $receive_request; + ADD $request related_to $receive_request; + OD; + +/*==========================================*/ +ROOT Producers: {+ Producer +}; + +Producer: (* ( Sell | Not_available ) *); + +/*======== coordination ===================================================*/ +COORDINATE $receive_order: Receive_order_and_buy FROM Supply_Office, + /* Receive_order_and_buy and Sell/Not_available events + may be asynchronous */ + <!> $sell: (Sell | Not_available) FROM Producers + DO ADD $receive_order PRECEDES $sell; + ADD $receive_order related_to $sell; + OD; + +COORDINATE $sell: Sell FROM Producers, + /* Sell and Receive_supply may be asynchronous */ + <!> $receive: Receive_supply FROM Consumers +DO ADD $sell PRECEDES $receive; + ADD $sell related_to $receive; +OD; + +ENSURE FOREACH $request: Request_delivery, + $receive: Receive_supply + ( $request ^related_to $receive -> $request BEFORE $receive); + +/* preventing mismatched delivery */ +ENSURE + NOT EXISTS DISJ $c1: Consumer, $c2: Consumer + EXISTS $request: Request_delivery FROM $c1, + $receive: Receive_supply FROM $c2, + $order: Receive_order_and_buy FROM Supply_Office + + ( $request ^related_to $order AND + $order ^related_to $receive ); + +COORDINATE <!>$refusal1: Not_available FROM Producers, + $refusal2: Not_available FROM Consumers + DO SHARE $refusal1 $refusal2; OD; + +/* preventing mismatched refusals */ +ENSURE +NOT EXISTS DISJ $c1: Consumer, $c2: Consumer + EXISTS $request: Request_delivery FROM $c1, + $receive: Not_available FROM $c2, + $order: Receive_order_and_buy FROM Supply_Office + + ( $request ^related_to $order AND + $order ^related_to $receive ); + +/**** add yet another relation for Supplier/Consumer ****/ +COORDINATE $c: Consumer + DO COORDINATE $p: Producer + DO + IF EXISTS $request: Request_delivery FROM $c, + $sell: Sell FROM $p + ( $request ^related_to $sell ) + THEN ADD $p Is_supplier_for $c; FI; + OD; +OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.temp.txt new file mode 100644 index 0000000..d39dfca --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example19_Consumers_Suppliers tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.tree new file mode 100644 index 0000000000000000000000000000000000000000..f4a2823ff9ee667f99c9e4ca3d2d3e394fe1b599 GIT binary patch literal 18944 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 G|NjBx*BDv= literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.txt new file mode 100644 index 0000000..76982e9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.txt @@ -0,0 +1,20 @@ +generating traces for scope 1 +completed Consumer: 3 traces (0 MARKed) 7 events + average 2.33333 ev/trace min 1 max 3 + +completed Producer: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed Consumers: 3 traces (0 MARKed) 10 events + average 3.33333 ev/trace min 2 max 4 + +completed Supply_Office: 1 traces (0 MARKed) 2 events + +completed Producers: 3 traces (0 MARKed) 8 events + average 2.66667 ev/trace min 2 max 3 + +completed Suppliers: 2 traces (0 MARKed) 20 events + average 10 ev/trace min 10 max 10 + +Elapsed time 0.0007 sec, Speed: 74285.7 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.cpp new file mode 100644 index 0000000..34305a6 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.cpp @@ -0,0 +1,1105 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Reuse_of_a_system trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_check_ID + , Event_creds_invalid + , Event_request_access + , Event_attempts_exhausted + , Event_cancel_access_request + , Event_creds_valid + , Event_access_granted + , Event_provide_ID + , Event_abandon_access_request + , Event_login_succeeds + , Event_work + , Event_cancel + , Event_login_fails + // composite events + , Event_request_ID + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_39_40 + , Event_SIMPLE_LIST_47_48 + , Event_SIMPLE_LIST_77_78 + , Event_SIMPLE_LIST_95_96 + // ADD operations + // ROOT events + , Event_Data_Base + , Event_Authentication_Service + , Event_Requester + , Event_User + // main schema event + , Event_Reuse_of_a_system }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "check_ID" + , "creds_invalid" + , "request_access" + , "attempts_exhausted" + , "cancel_access_request" + , "creds_valid" + , "access_granted" + , "provide_ID" + , "abandon_access_request" + , "login_succeeds" + , "work" + , "cancel" + , "login_fails" + , "request_ID" + , "SIMPLE_LIST_39_40" + , "SIMPLE_LIST_47_48" + , "SIMPLE_LIST_77_78" + , "SIMPLE_LIST_95_96" + , "Data_Base" + , "Authentication_Service" + , "Requester" + , "User" + , "Reuse_of_a_system" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_19(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_creds_invalid){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_24(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_attempts_exhausted){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_25(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_creds_invalid){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_30(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_attempts_exhausted){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 5 ---- +class SIMPLE_LIST_39_40_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_39_40_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( special_function_19(current_host, Root_table[Event_Authentication_Service]) +<= 3 )){} + else{ + throw failed; // REJECT + }// end IF + if( ( ( special_function_24(current_host, Root_table[Event_Authentication_Service]) +== 1 )== ( special_function_25(current_host, Root_table[Event_Authentication_Service]) +== 3 ))){} + else{ + throw failed; // REJECT + }// end IF + if( ( special_function_30(current_host, Root_table[Event_Authentication_Service]) +> 0 )){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<" attempts exhausted!"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_39_40_ob class + +//---- 6 ---- +class SIMPLE_LIST_47_48_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_47_48_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Authentication_Service_source = Root_table[Event_Authentication_Service]; + // lists of shared events for Authentication_Service + vector<int> Authentication_Service_check_ID_list; + + int Data_Base_source = Root_table[Event_Data_Base]; + // lists of shared events for Data_Base + vector<int> Data_Base_check_ID_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Authentication_Service_source ]){ + if( Stack[i]->name == Event_check_ID ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Authentication_Service_check_ID_list.begin(); + s != Authentication_Service_check_ID_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Authentication_Service_check_ID_list.push_back(i); + } + }; + if(in_matrix[i * len + Data_Base_source ]){ + if( Stack[i]->name == Event_check_ID ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Data_Base_check_ID_list.begin(); + s != Data_Base_check_ID_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Data_Base_check_ID_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Data_Base_check_ID_list.size(); + if(Authentication_Service_check_ID_list.size() != len_to_compare) throw +failed ; + + // do the SHARE ALL + len_to_compare = Data_Base_check_ID_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Authentication_Service_check_ID_list[i], Data_Base_check_ID_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_47_48_ob class + +//---- 7 ---- +class SIMPLE_LIST_77_78_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_77_78_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Requester_source = Root_table[Event_Requester]; + // lists of shared events for Requester + vector<int> Requester_creds_valid_list; + vector<int> Requester_creds_invalid_list; + vector<int> Requester_attempts_exhausted_list; + vector<int> Requester_access_granted_list; + + int Authentication_Service_source = Root_table[Event_Authentication_Service]; + // lists of shared events for Authentication_Service + vector<int> Authentication_Service_creds_valid_list; + vector<int> Authentication_Service_creds_invalid_list; + vector<int> Authentication_Service_attempts_exhausted_list; + vector<int> Authentication_Service_access_granted_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Requester_source ]){ + if( Stack[i]->name == Event_creds_valid ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Requester_creds_valid_list.begin(); + s != Requester_creds_valid_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Requester_creds_valid_list.push_back(i); + } + if( Stack[i]->name == Event_creds_invalid ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Requester_creds_invalid_list.begin(); + s != Requester_creds_invalid_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Requester_creds_invalid_list.push_back(i); + } + if( Stack[i]->name == Event_attempts_exhausted ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Requester_attempts_exhausted_list.begin(); + s != Requester_attempts_exhausted_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Requester_attempts_exhausted_list.push_back(i); + } + if( Stack[i]->name == Event_access_granted ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Requester_access_granted_list.begin(); + s != Requester_access_granted_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Requester_access_granted_list.push_back(i); + } + }; + if(in_matrix[i * len + Authentication_Service_source ]){ + if( Stack[i]->name == Event_creds_valid ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Authentication_Service_creds_valid_list.begin(); + s != Authentication_Service_creds_valid_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Authentication_Service_creds_valid_list.push_back(i); + } + if( Stack[i]->name == Event_creds_invalid ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Authentication_Service_creds_invalid_list.begin(); + s != Authentication_Service_creds_invalid_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Authentication_Service_creds_invalid_list.push_back(i); + } + if( Stack[i]->name == Event_attempts_exhausted ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Authentication_Service_attempts_exhausted_list.begin(); + s != Authentication_Service_attempts_exhausted_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Authentication_Service_attempts_exhausted_list.push_back(i); + } + if( Stack[i]->name == Event_access_granted ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Authentication_Service_access_granted_list.begin(); + s != Authentication_Service_access_granted_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Authentication_Service_access_granted_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Authentication_Service_creds_valid_list.size(); + if(Requester_creds_valid_list.size() != len_to_compare) throw failed ; + len_to_compare = Authentication_Service_creds_invalid_list.size(); + if(Requester_creds_invalid_list.size() != len_to_compare) throw failed ; + len_to_compare = Authentication_Service_attempts_exhausted_list.size(); + if(Requester_attempts_exhausted_list.size() != len_to_compare) throw failed + ; + len_to_compare = Authentication_Service_access_granted_list.size(); + if(Requester_access_granted_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Authentication_Service_creds_valid_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Requester_creds_valid_list[i], Authentication_Service_creds_valid_list[i]); + } + len_to_compare = Authentication_Service_creds_invalid_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Requester_creds_invalid_list[i], Authentication_Service_creds_invalid_list[i]); + } + len_to_compare = Authentication_Service_attempts_exhausted_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Requester_attempts_exhausted_list[i], Authentication_Service_attempts_exhausted_list[i]); + } + len_to_compare = Authentication_Service_access_granted_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Requester_access_granted_list[i], Authentication_Service_access_granted_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Requester_source = Root_table[Event_Requester]; // source of coordination + + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int Authentication_Service_source = Root_table[Event_Authentication_Service] +; // source of coordination + int c_variable; // thread variable + vector<int> c_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Requester_source ]){ + if( ( (Stack[i]->name == Event_request_access)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + Authentication_Service_source ]){ + if( ( (Stack[i]->name == Event_request_ID)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // preparing thread for c_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + c_variable = i; + if( c_variable_list.size() == thread_length){ + a_variable = 0; + b_variable = 0; } + else{ + a_variable = a_variable_list[c_variable_list.size()]; + b_variable = b_variable_list[c_variable_list.size()];}; + if(in_matrix[i * len + Requester_source ]){ + if( ( (Stack[i]->name == Event_provide_ID)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = c_variable_list.begin(); s != c_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) c_variable_list.push_back(i); + } + } }; + // no processing needed for the default source c_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = c_variable_list.size(); + if(thread_length != c_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + c_variable= c_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + // ADD operation + Follows.insert(pair<int, int>(c_variable,b_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_77_78_ob class + +//---- 8 ---- +class SIMPLE_LIST_95_96_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_95_96_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + map_relations( Root_table[Event_Requester] , Root_table[Event_User] ); + create_matrices();// to check for axiom violation + // since relation tables were modified + { // COORDINATE operation + int thread_length = -1; + int ready_variable; // thread variable + vector<int> ready_variable_list; // list of coordinated events + int Requester_source = Root_table[Event_Requester]; // source of coordination + + int go_variable; // thread variable + vector<int> go_variable_list; // list of coordinated events + int User_source = Root_table[Event_User]; // source of coordination + + // create lists of coordinated events + // preparing thread for ready_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + ready_variable = i; + if( ready_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Requester_source ]){ + if( ( (Stack[i]->name == Event_access_granted)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = ready_variable_list.begin(); s != ready_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) ready_variable_list.push_back(i); + } + } }; + // no processing needed for the default source ready_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = ready_variable_list.size(); + if(thread_length != ready_variable_list.size()) throw failed; + + // preparing thread for go_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + go_variable = i; + if( go_variable_list.size() == thread_length){ + ready_variable = 0; } + else{ + ready_variable = ready_variable_list[go_variable_list.size()];}; + if(in_matrix[i * len + User_source ]){ + if( ( (Stack[i]->name == Event_login_succeeds)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = go_variable_list.begin(); s != go_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) go_variable_list.push_back(i); + } + } }; + // no processing needed for the default source go_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = go_variable_list.size(); + if(thread_length != go_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + ready_variable= ready_variable_list[i]; + go_variable= go_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(go_variable,ready_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_95_96_ob class + +//---- 9 ---- +class Itr_1_2 : public OR_node_producer_container { +public: // constructor + Itr_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_check_ID); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_1_2 + +//---- 10 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_creds_invalid); + element[ 1 ]= new Composite_secondary_producer(Event_request_ID); + } +};// end class Sq_5_6 + +//---- 11 ---- +class Itr_7_8 : public OR_node_producer_container { +public: // constructor + Itr_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_5_6 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_7_8 + +//---- 12 ---- +class Opt_9_10 : public OR_node_producer_container { +public: // constructor + Opt_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_attempts_exhausted); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_9_10 + +//---- 13 ---- +class Sq_11_12 : public AND_node_producer_container { +public: // constructor + Sq_11_12 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_creds_invalid); + element[ 1 ]= new Opt_9_10 ; + element[ 2 ]= new Atomic_producer(Event_cancel_access_request); + } +};// end class Sq_11_12 + +//---- 14 ---- +class Sq_13_14 : public AND_node_producer_container { +public: // constructor + Sq_13_14 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_creds_valid); + element[ 1 ]= new Atomic_producer(Event_access_granted); + } +};// end class Sq_13_14 + +//---- 15 ---- +class Alt_15_16 : public OR_node_producer_container { +public: // constructor + Alt_15_16 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_11_12 ; + element[ 1 ]= new Sq_13_14 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_15_16 + +//---- 16 ---- +class Sq_17_18 : public AND_node_producer_container { +public: // constructor + Sq_17_18 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_request_ID); + element[ 1 ]= new Itr_7_8 ; + element[ 2 ]= new Alt_15_16 ; + } +};// end class Sq_17_18 + +//---- 17 ---- +class Sq_49_50 : public AND_node_producer_container { +public: // constructor + Sq_49_50 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_creds_invalid); + element[ 1 ]= new Atomic_producer(Event_request_access); + element[ 2 ]= new Atomic_producer(Event_provide_ID); + } +};// end class Sq_49_50 + +//---- 18 ---- +class Itr_51_52 : public OR_node_producer_container { +public: // constructor + Itr_51_52 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_49_50 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_51_52 + +//---- 19 ---- +class Alt_53_54 : public OR_node_producer_container { +public: // constructor + Alt_53_54 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_access_granted); + element[ 1 ]= new Atomic_producer(Event_abandon_access_request); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_53_54 + +//---- 20 ---- +class Sq_55_56 : public AND_node_producer_container { +public: // constructor + Sq_55_56 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_creds_valid); + element[ 1 ]= new Alt_53_54 ; + } +};// end class Sq_55_56 + +//---- 21 ---- +class Alt_57_58 : public OR_node_producer_container { +public: // constructor + Alt_57_58 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_attempts_exhausted); + element[ 1 ]= new Atomic_producer(Event_abandon_access_request); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_57_58 + +//---- 22 ---- +class Sq_59_60 : public AND_node_producer_container { +public: // constructor + Sq_59_60 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_creds_invalid); + element[ 1 ]= new Alt_57_58 ; + } +};// end class Sq_59_60 + +//---- 23 ---- +class Alt_61_62 : public OR_node_producer_container { +public: // constructor + Alt_61_62 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_55_56 ; + element[ 1 ]= new Sq_59_60 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_61_62 + +//---- 24 ---- +class Sq_63_64 : public AND_node_producer_container { +public: // constructor + Sq_63_64 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_request_access); + element[ 1 ]= new Atomic_producer(Event_provide_ID); + element[ 2 ]= new Itr_51_52 ; + element[ 3 ]= new Alt_61_62 ; + } +};// end class Sq_63_64 + +//---- 25 ---- +class Alt_79_80 : public OR_node_producer_container { +public: // constructor + Alt_79_80 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_work); + element[ 1 ]= new Atomic_producer(Event_cancel); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_79_80 + +//---- 26 ---- +class Sq_81_82 : public AND_node_producer_container { +public: // constructor + Sq_81_82 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_login_succeeds); + element[ 1 ]= new Alt_79_80 ; + } +};// end class Sq_81_82 + +//---- 27 ---- +class Alt_83_84 : public OR_node_producer_container { +public: // constructor + Alt_83_84 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_81_82 ; + element[ 1 ]= new Atomic_producer(Event_login_fails); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_83_84 + +//---- 28 ---- +class Comp_43_44 : public Composite_producer { +public: // constructor + Comp_43_44 (): Composite_producer(Event_request_ID){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_check_ID); + } +};// end class Comp_43_44 + +//---- 29 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Data_Base){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_1_2 ; + } +};// end class Comp_3_4 + +//---- 30 ---- +class Comp_41_42 : public Composite_producer { +public: // constructor + Comp_41_42 (): Composite_producer(Event_Authentication_Service){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_17_18 ; + element[ 1 ]= new SIMPLE_LIST_39_40_ob(Event_SIMPLE_LIST_39_40); + } +};// end class Comp_41_42 + +//---- 31 ---- +class Comp_65_66 : public Composite_producer { +public: // constructor + Comp_65_66 (): Composite_producer(Event_Requester){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_63_64 ; + } +};// end class Comp_65_66 + +//---- 32 ---- +class Comp_85_86 : public Composite_producer { +public: // constructor + Comp_85_86 (): Composite_producer(Event_User){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Alt_83_84 ; + } +};// end class Comp_85_86 + +//---- 33 ---- +class SCHEMA_Reuse_of_a_system: public Composite_producer { +public: // constructor + SCHEMA_Reuse_of_a_system(): Composite_producer(Event_Reuse_of_a_system){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 7 ]; + element[0]= new Composite_secondary_producer(Event_Data_Base); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Authentication_Service); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_47_48_ob(Event_SIMPLE_LIST_47_48); + element[3]= new Composite_secondary_producer(Event_Requester); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_77_78_ob(Event_SIMPLE_LIST_77_78); + element[5]= new Composite_secondary_producer(Event_User); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_95_96_ob(Event_SIMPLE_LIST_95_96); + } +};// end class SCHEMA_Reuse_of_a_system + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example20_MP_model__reuse.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_43_44 temp_34; temp_34.harvest(); + // harvesting traces for ROOT events + Comp_3_4 temp_35; temp_35.harvest(); + Comp_41_42 temp_36; temp_36.harvest(); + Comp_65_66 temp_37; temp_37.harvest(); + Comp_85_86 temp_38; temp_38.harvest(); + // harvesting traces for main schema + SCHEMA_Reuse_of_a_system temp_39; temp_39.harvest(); + temp_39.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Reuse_of_a_system"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.mp new file mode 100644 index 0000000..c09d654 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.mp @@ -0,0 +1,89 @@ +SCHEMA Reuse_of_a_system + +/* Example 20. + Authentication system's behavior for reuse with MAP operation. + + run for scope 3 or more to see attempts_exhausted event + you may hide the Requestor node in the event trace graph, + since the User will copy all Requestor's behavior + +============== reused MP code starts here ==================*/ +ROOT Data_Base: (* check_ID *); + +ROOT Authentication_Service: + request_ID + (* creds_invalid request_ID *) + + ( creds_invalid + [ attempts_exhausted ] + cancel_access_request | + + creds_valid + access_granted ) + +BUILD{ /*--- constraints for this root ---*/ + ENSURE #creds_invalid <= 3; /* no more than 3 attempts to get access */ + ENSURE #attempts_exhausted == 1 <-> #creds_invalid == 3; + IF #attempts_exhausted > 0 THEN SAY(" attempts exhausted!");FI; } +; + +request_ID: check_ID; + +Authentication_Service, Data_Base SHARE ALL check_ID; + +ROOT Requester: + request_access + provide_ID + (* creds_invalid request_access provide_ID *) + + ( creds_valid + ( access_granted | abandon_access_request) | + + creds_invalid + ( attempts_exhausted | abandon_access_request ) ) +; + +Requester, Authentication_Service SHARE ALL + creds_valid, creds_invalid, + attempts_exhausted, access_granted; + +COORDINATE $a: request_access FROM Requester, + $b: request_ID FROM Authentication_Service, + $c: provide_ID FROM Requester + DO ADD $a PRECEDES $b; + ADD $b PRECEDES $c; + OD; +/*================= end of reused MP code =======================*/ + + +/*===============================================================*/ +/* new system, which will reuse authentication system's behavior */ +/*---------------------------------------------------------------*/ +ROOT User: + + ( login_succeeds + ( work | + /* User may change their mind and cancel login */ + cancel ) | + + login_fails ) +; + + +/*================================================================*/ +/* the following adjustments of the new model and the reused one + are needed to integrate their behaviors. + + reuse of authentication system's behavior: + mapping actions of the Requestor from Authentication_Service + on actions of the User. + User will copy/reuse all activities of Requestor +------------------------------------------------------------------*/ +/* Requester's behavior is included into the behavior of User */ + MAP Requester ON User; + +/* synchronizing particular events from the authentication + system's behavior with events in the new system */ +COORDINATE $ready: access_granted FROM Requester, + $go: login_succeeds FROM User + DO ADD $ready PRECEDES $go; OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.temp.txt new file mode 100644 index 0000000..c1967c9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example20_MP_model__reuse tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.tree new file mode 100644 index 0000000000000000000000000000000000000000..60af972e8ed5ba6abab013b353edf10c9d154030 GIT binary patch literal 15872 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 D(3%%H literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.txt new file mode 100644 index 0000000..093c206 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.txt @@ -0,0 +1,20 @@ +generating traces for scope 1 +completed request_ID: 1 traces (0 MARKed) 2 events + +completed Data_Base: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed Authentication_Service: 4 traces (0 MARKed) 26 events + average 6.5 ev/trace min 5 max 8 + +completed Requester: 8 traces (0 MARKed) 52 events + average 6.5 ev/trace min 5 max 8 + +completed User: 3 traces (0 MARKed) 8 events + average 2.66667 ev/trace min 2 max 3 + +completed Reuse_of_a_system: 3 traces (0 MARKed) 47 events + average 15.6667 ev/trace min 15 max 16 + +Elapsed time 0.003091 sec, Speed: 44645.7 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.cpp new file mode 100644 index 0000000..3abe3af --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.cpp @@ -0,0 +1,1536 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA compiler1 trace generator for scope 3 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_get_characters + , Event_unget_some_characters + , Event_match_string + , Event_largest_successful_match + , Event_put_token + , Event_get_token + , Event_Push + , Event_Pop + , Event_Put_node + , Event_Parsing_complete + , Event_Report_syntax_error + // composite events + , Event_RegExpr_match + , Event_Token_recognition + , Event_Shift + , Event_Reduce + , Event_Shift_Reduce + , Event_Stack + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_24_25 + , Event_SIMPLE_LIST_34_35 + , Event_SIMPLE_LIST_48_49 + , Event_SIMPLE_LIST_54_55 + , Event_SIMPLE_LIST_92_93 + , Event_SIMPLE_LIST_104_105 + , Event_SIMPLE_LIST_110_111 + // ADD operations + // ROOT events + , Event_Source_code + , Event_Lexer + , Event_Token_list + , Event_Parser + // main schema event + , Event_compiler1 }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "get_characters" + , "unget_some_characters" + , "match_string" + , "largest_successful_match" + , "put_token" + , "get_token" + , "Push" + , "Pop" + , "Put_node" + , "Parsing_complete" + , "Report_syntax_error" + , "RegExpr_match" + , "Token_recognition" + , "Shift" + , "Reduce" + , "Shift_Reduce" + , "Stack" + , "SIMPLE_LIST_24_25" + , "SIMPLE_LIST_34_35" + , "SIMPLE_LIST_48_49" + , "SIMPLE_LIST_54_55" + , "SIMPLE_LIST_92_93" + , "SIMPLE_LIST_104_105" + , "SIMPLE_LIST_110_111" + , "Source_code" + , "Lexer" + , "Token_list" + , "Parser" + , "compiler1" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_19(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_largest_successful_match){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_42(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_put_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_43(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_get_token){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_84(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Pop){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_85(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Push){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 6 ---- +bool Quantified_expr_86_87(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int x_variable; + int pivot_x_variable = 0; + + // loop 1 for x_variable + for( x_variable = 0; x_variable < len; x_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ x_variable * len + pivot_x_variable +]) && + ( + (Stack[x_variable]-> name == Event_Pop) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_84(current_host, x_variable ) < special_function_85(current_host, +x_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 7 ---- +class SIMPLE_LIST_24_25_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_24_25_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( special_function_19(current_host, Root_table[Event_Token_recognition]) +== 1 )){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_24_25_ob class + +//---- 8 ---- +class SIMPLE_LIST_34_35_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_34_35_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Source_code_source = Root_table[Event_Source_code]; + // lists of shared events for Source_code + vector<int> Source_code_get_characters_list; + vector<int> Source_code_unget_some_characters_list; + + int Lexer_source = Root_table[Event_Lexer]; + // lists of shared events for Lexer + vector<int> Lexer_get_characters_list; + vector<int> Lexer_unget_some_characters_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Source_code_source ]){ + if( Stack[i]->name == Event_get_characters ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Source_code_get_characters_list.begin(); + s != Source_code_get_characters_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Source_code_get_characters_list.push_back(i); + } + if( Stack[i]->name == Event_unget_some_characters ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Source_code_unget_some_characters_list.begin(); + s != Source_code_unget_some_characters_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Source_code_unget_some_characters_list.push_back(i); + } + }; + if(in_matrix[i * len + Lexer_source ]){ + if( Stack[i]->name == Event_get_characters ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Lexer_get_characters_list.begin(); + s != Lexer_get_characters_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Lexer_get_characters_list.push_back(i); + } + if( Stack[i]->name == Event_unget_some_characters ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Lexer_unget_some_characters_list.begin(); + s != Lexer_unget_some_characters_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Lexer_unget_some_characters_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Lexer_get_characters_list.size(); + if(Source_code_get_characters_list.size() != len_to_compare) throw failed ; + + len_to_compare = Lexer_unget_some_characters_list.size(); + if(Source_code_unget_some_characters_list.size() != len_to_compare) throw +failed ; + + // do the SHARE ALL + len_to_compare = Lexer_get_characters_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Source_code_get_characters_list[i], Lexer_get_characters_list[i]); + } + len_to_compare = Lexer_unget_some_characters_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Source_code_unget_some_characters_list[i], Lexer_unget_some_characters_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_34_35_ob class + +//---- 9 ---- +class SIMPLE_LIST_48_49_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_48_49_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( special_function_42(current_host, Root_table[Event_Token_list])>= special_function_43(current_host, Root_table[Event_Token_list])) +){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_48_49_ob class + +//---- 10 ---- +class SIMPLE_LIST_54_55_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_54_55_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Token_list_source = Root_table[Event_Token_list]; + // lists of shared events for Token_list + vector<int> Token_list_put_token_list; + + int Lexer_source = Root_table[Event_Lexer]; + // lists of shared events for Lexer + vector<int> Lexer_put_token_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Token_list_source ]){ + if( Stack[i]->name == Event_put_token ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Token_list_put_token_list.begin(); + s != Token_list_put_token_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Token_list_put_token_list.push_back(i); + } + }; + if(in_matrix[i * len + Lexer_source ]){ + if( Stack[i]->name == Event_put_token ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Lexer_put_token_list.begin(); + s != Lexer_put_token_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Lexer_put_token_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Lexer_put_token_list.size(); + if(Token_list_put_token_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Lexer_put_token_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Token_list_put_token_list[i], Lexer_put_token_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_54_55_ob class + +//---- 11 ---- +class SIMPLE_LIST_92_93_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_92_93_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_86_87(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_92_93_ob class + +//---- 12 ---- +class SIMPLE_LIST_104_105_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_104_105_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s1_variable; // thread variable + vector<int> s1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int s2_variable; // thread variable + vector<int> s2_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s1_variable = i; + if( s1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Shift_Reduce)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s1_variable_list.begin(); s != s1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s1_variable_list.size(); + if(thread_length != s1_variable_list.size()) throw failed; + + // preparing thread for s2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s2_variable = i; + if( s2_variable_list.size() == thread_length){ + s1_variable = 0; } + else{ + s1_variable = s1_variable_list[s2_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Stack)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s2_variable_list.begin(); s != s2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s2_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s2_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s2_variable_list.size(); + if(thread_length != s2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s1_variable= s1_variable_list[i]; + s2_variable= s2_variable_list[i]; + + { // SHARE ALL operation + create_matrices(); + // lists of shared events for s1_variable + vector<int> s1_variable_Pop_list; + vector<int> s1_variable_Push_list; + // lists of shared events for s2_variable + vector<int> s2_variable_Pop_list; + vector<int> s2_variable_Push_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + s1_variable ]){ + if( Stack[i]->name == Event_Pop ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s1_variable_Pop_list.begin(); + s != s1_variable_Pop_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s1_variable_Pop_list.push_back(i); + } + if( Stack[i]->name == Event_Push ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s1_variable_Push_list.begin(); + s != s1_variable_Push_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s1_variable_Push_list.push_back(i); + } + }; + if(in_matrix[i * len + s2_variable ]){ + if( Stack[i]->name == Event_Pop ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s2_variable_Pop_list.begin(); + s != s2_variable_Pop_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s2_variable_Pop_list.push_back(i); + } + if( Stack[i]->name == Event_Push ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s2_variable_Push_list.begin(); + s != s2_variable_Push_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s2_variable_Push_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = s2_variable_Pop_list.size(); + if(s1_variable_Pop_list.size() != len_to_compare) throw failed ; + len_to_compare = s2_variable_Push_list.size(); + if(s1_variable_Push_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = s2_variable_Pop_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(s1_variable_Pop_list[i], s2_variable_Pop_list[i]); + } + len_to_compare = s2_variable_Push_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(s1_variable_Push_list[i], s2_variable_Push_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_104_105_ob class + +//---- 13 ---- +class SIMPLE_LIST_110_111_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_110_111_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Token_list_source = Root_table[Event_Token_list]; + // lists of shared events for Token_list + vector<int> Token_list_get_token_list; + + int Parser_source = Root_table[Event_Parser]; + // lists of shared events for Parser + vector<int> Parser_get_token_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Token_list_source ]){ + if( Stack[i]->name == Event_get_token ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Token_list_get_token_list.begin(); + s != Token_list_get_token_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Token_list_get_token_list.push_back(i); + } + }; + if(in_matrix[i * len + Parser_source ]){ + if( Stack[i]->name == Event_get_token ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Parser_get_token_list.begin(); + s != Parser_get_token_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Parser_get_token_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Parser_get_token_list.size(); + if(Token_list_get_token_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Parser_get_token_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Token_list_get_token_list[i], Parser_get_token_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_110_111_ob class + +//---- 14 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_largest_successful_match); + element[ 1 ]= new Atomic_producer(Event_put_token); + } +};// end class Sq_7_8 + +//---- 15 ---- +class Opt_9_10 : public OR_node_producer_container { +public: // constructor + Opt_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_7_8 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_9_10 + +//---- 16 ---- +class Sq_11_12 : public AND_node_producer_container { +public: // constructor + Sq_11_12 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_match_string); + element[ 1 ]= new Opt_9_10 ; + } +};// end class Sq_11_12 + +//---- 17 ---- +class Ct_112_113 : public SET_node_producer_container { +public: // constructor + Ct_112_113 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_RegExpr_match); + element[ 1 ]= new Composite_secondary_producer(Event_RegExpr_match); + } +};// end class Ct_112_113 + +//---- 18 ---- +class Ct_114_115 : public SET_node_producer_container { +public: // constructor + Ct_114_115 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_RegExpr_match); + element[ 1 ]= new Composite_secondary_producer(Event_RegExpr_match); + element[ 2 ]= new Composite_secondary_producer(Event_RegExpr_match); + } +};// end class Ct_114_115 + +//---- 19 ---- +class SetItp_15_16 : public OR_node_producer_container { +public: // constructor + SetItp_15_16 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_RegExpr_match); + element[ 1 ]= new Ct_112_113 ; + element[ 2 ]= new Ct_114_115 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class SetItp_15_16 + +//---- 20 ---- +class Sq_17_18 : public AND_node_producer_container { +public: // constructor + Sq_17_18 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_get_characters); + element[ 1 ]= new SetItp_15_16 ; + element[ 2 ]= new Atomic_producer(Event_unget_some_characters); + } +};// end class Sq_17_18 + +//---- 21 ---- +class Sq_56_57 : public AND_node_producer_container { +public: // constructor + Sq_56_57 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Push); + element[ 1 ]= new Atomic_producer(Event_get_token); + } +};// end class Sq_56_57 + +//---- 22 ---- +class Ct_116_117 : public AND_node_producer_container { +public: // constructor + Ct_116_117 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Pop); + element[ 1 ]= new Atomic_producer(Event_Pop); + } +};// end class Ct_116_117 + +//---- 23 ---- +class Itp_60_61 : public OR_node_producer_container { +public: // constructor + Itp_60_61 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Pop); + element[ 1 ]= new Ct_116_117 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itp_60_61 + +//---- 24 ---- +class Sq_62_63 : public AND_node_producer_container { +public: // constructor + Sq_62_63 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itp_60_61 ; + element[ 1 ]= new Atomic_producer(Event_Push); + } +};// end class Sq_62_63 + +//---- 25 ---- +class Sq_66_67 : public AND_node_producer_container { +public: // constructor + Sq_66_67 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Reduce); + element[ 1 ]= new Atomic_producer(Event_Put_node); + } +};// end class Sq_66_67 + +//---- 26 ---- +class Alt_68_69 : public OR_node_producer_container { +public: // constructor + Alt_68_69 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Shift); + element[ 1 ]= new Sq_66_67 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_68_69 + +//---- 27 ---- +class Ct_118_119 : public AND_node_producer_container { +public: // constructor + Ct_118_119 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_68_69 ; + element[ 1 ]= new Alt_68_69 ; + } +};// end class Ct_118_119 + +//---- 28 ---- +class Ct_120_121 : public AND_node_producer_container { +public: // constructor + Ct_120_121 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_68_69 ; + element[ 1 ]= new Alt_68_69 ; + element[ 2 ]= new Alt_68_69 ; + } +};// end class Ct_120_121 + +//---- 29 ---- +class Itp_70_71 : public OR_node_producer_container { +public: // constructor + Itp_70_71 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_68_69 ; + element[ 1 ]= new Ct_118_119 ; + element[ 2 ]= new Ct_120_121 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itp_70_71 + +//---- 30 ---- +class Sq_72_73 : public AND_node_producer_container { +public: // constructor + Sq_72_73 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Reduce); + element[ 1 ]= new Atomic_producer(Event_Put_node); + element[ 2 ]= new Atomic_producer(Event_Parsing_complete); + } +};// end class Sq_72_73 + +//---- 31 ---- +class Alt_74_75 : public OR_node_producer_container { +public: // constructor + Alt_74_75 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_72_73 ; + element[ 1 ]= new Atomic_producer(Event_Report_syntax_error); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_74_75 + +//---- 32 ---- +class Sq_76_77 : public AND_node_producer_container { +public: // constructor + Sq_76_77 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_Push); + element[ 1 ]= new Atomic_producer(Event_get_token); + element[ 2 ]= new Itp_70_71 ; + element[ 3 ]= new Alt_74_75 ; + } +};// end class Sq_76_77 + +//---- 33 ---- +class Alt_80_81 : public OR_node_producer_container { +public: // constructor + Alt_80_81 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Push); + element[ 1 ]= new Atomic_producer(Event_Pop); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_80_81 + +//---- 34 ---- +class Ct_122_123 : public AND_node_producer_container { +public: // constructor + Ct_122_123 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_80_81 ; + element[ 1 ]= new Alt_80_81 ; + } +};// end class Ct_122_123 + +//---- 35 ---- +class Ct_124_125 : public AND_node_producer_container { +public: // constructor + Ct_124_125 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_80_81 ; + element[ 1 ]= new Alt_80_81 ; + element[ 2 ]= new Alt_80_81 ; + } +};// end class Ct_124_125 + +//---- 36 ---- +class Ct_126_127 : public AND_node_producer_container { +public: // constructor + Ct_126_127 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Alt_80_81 ; + element[ 1 ]= new Alt_80_81 ; + element[ 2 ]= new Alt_80_81 ; + element[ 3 ]= new Alt_80_81 ; + } +};// end class Ct_126_127 + +//---- 37 ---- +class Ct_128_129 : public AND_node_producer_container { +public: // constructor + Ct_128_129 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Alt_80_81 ; + element[ 1 ]= new Alt_80_81 ; + element[ 2 ]= new Alt_80_81 ; + element[ 3 ]= new Alt_80_81 ; + element[ 4 ]= new Alt_80_81 ; + } +};// end class Ct_128_129 + +//---- 38 ---- +class Ct_130_131 : public AND_node_producer_container { +public: // constructor + Ct_130_131 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 6 ]; + element[ 0 ]= new Alt_80_81 ; + element[ 1 ]= new Alt_80_81 ; + element[ 2 ]= new Alt_80_81 ; + element[ 3 ]= new Alt_80_81 ; + element[ 4 ]= new Alt_80_81 ; + element[ 5 ]= new Alt_80_81 ; + } +};// end class Ct_130_131 + +//---- 39 ---- +class Ct_132_133 : public AND_node_producer_container { +public: // constructor + Ct_132_133 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 7 ]; + element[ 0 ]= new Alt_80_81 ; + element[ 1 ]= new Alt_80_81 ; + element[ 2 ]= new Alt_80_81 ; + element[ 3 ]= new Alt_80_81 ; + element[ 4 ]= new Alt_80_81 ; + element[ 5 ]= new Alt_80_81 ; + element[ 6 ]= new Alt_80_81 ; + } +};// end class Ct_132_133 + +//---- 40 ---- +class Ct_134_135 : public AND_node_producer_container { +public: // constructor + Ct_134_135 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 8 ]; + element[ 0 ]= new Alt_80_81 ; + element[ 1 ]= new Alt_80_81 ; + element[ 2 ]= new Alt_80_81 ; + element[ 3 ]= new Alt_80_81 ; + element[ 4 ]= new Alt_80_81 ; + element[ 5 ]= new Alt_80_81 ; + element[ 6 ]= new Alt_80_81 ; + element[ 7 ]= new Alt_80_81 ; + } +};// end class Ct_134_135 + +//---- 41 ---- +class Ct_136_137 : public AND_node_producer_container { +public: // constructor + Ct_136_137 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 9 ]; + element[ 0 ]= new Alt_80_81 ; + element[ 1 ]= new Alt_80_81 ; + element[ 2 ]= new Alt_80_81 ; + element[ 3 ]= new Alt_80_81 ; + element[ 4 ]= new Alt_80_81 ; + element[ 5 ]= new Alt_80_81 ; + element[ 6 ]= new Alt_80_81 ; + element[ 7 ]= new Alt_80_81 ; + element[ 8 ]= new Alt_80_81 ; + } +};// end class Ct_136_137 + +//---- 42 ---- +class Itr_82_83 : public OR_node_producer_container { +public: // constructor + Itr_82_83 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 8 ]; + element[ 0 ]= new Ct_122_123 ; + element[ 1 ]= new Ct_124_125 ; + element[ 2 ]= new Ct_126_127 ; + element[ 3 ]= new Ct_128_129 ; + element[ 4 ]= new Ct_130_131 ; + element[ 5 ]= new Ct_132_133 ; + element[ 6 ]= new Ct_134_135 ; + element[ 7 ]= new Ct_136_137 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 1.250000E-01; + alternative_probability[ 1 ]= 1.250000E-01; + alternative_probability[ 2 ]= 1.250000E-01; + alternative_probability[ 3 ]= 1.250000E-01; + alternative_probability[ 4 ]= 1.250000E-01; + alternative_probability[ 5 ]= 1.250000E-01; + alternative_probability[ 6 ]= 1.250000E-01; + alternative_probability[ 7 ]= 1.250000E-01; + } +};// end class Itr_82_83 + +//---- 43 ---- +class Sq_1_2 : public AND_node_producer_container { +public: // constructor + Sq_1_2 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_get_characters); + element[ 1 ]= new Atomic_producer(Event_unget_some_characters); + } +};// end class Sq_1_2 + +//---- 44 ---- +class Ct_138_139 : public AND_node_producer_container { +public: // constructor + Ct_138_139 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_1_2 ; + element[ 1 ]= new Sq_1_2 ; + } +};// end class Ct_138_139 + +//---- 45 ---- +class Ct_140_141 : public AND_node_producer_container { +public: // constructor + Ct_140_141 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_1_2 ; + element[ 1 ]= new Sq_1_2 ; + element[ 2 ]= new Sq_1_2 ; + } +};// end class Ct_140_141 + +//---- 46 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_1_2 ; + element[ 2 ]= new Ct_138_139 ; + element[ 3 ]= new Ct_140_141 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_3_4 + +//---- 47 ---- +class Ct_142_143 : public AND_node_producer_container { +public: // constructor + Ct_142_143 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Token_recognition); + element[ 1 ]= new Composite_secondary_producer(Event_Token_recognition); + } +};// end class Ct_142_143 + +//---- 48 ---- +class Ct_144_145 : public AND_node_producer_container { +public: // constructor + Ct_144_145 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Token_recognition); + element[ 1 ]= new Composite_secondary_producer(Event_Token_recognition); + element[ 2 ]= new Composite_secondary_producer(Event_Token_recognition); + } +};// end class Ct_144_145 + +//---- 49 ---- +class Itp_28_29 : public OR_node_producer_container { +public: // constructor + Itp_28_29 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Token_recognition); + element[ 1 ]= new Ct_142_143 ; + element[ 2 ]= new Ct_144_145 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itp_28_29 + +//---- 50 ---- +class Ct_146_147 : public AND_node_producer_container { +public: // constructor + Ct_146_147 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_put_token); + element[ 1 ]= new Atomic_producer(Event_put_token); + } +};// end class Ct_146_147 + +//---- 51 ---- +class Ct_148_149 : public AND_node_producer_container { +public: // constructor + Ct_148_149 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_put_token); + element[ 1 ]= new Atomic_producer(Event_put_token); + element[ 2 ]= new Atomic_producer(Event_put_token); + } +};// end class Ct_148_149 + +//---- 52 ---- +class Itp_36_37 : public OR_node_producer_container { +public: // constructor + Itp_36_37 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_put_token); + element[ 1 ]= new Ct_146_147 ; + element[ 2 ]= new Ct_148_149 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itp_36_37 + +//---- 53 ---- +class Ct_150_151 : public AND_node_producer_container { +public: // constructor + Ct_150_151 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + element[ 1 ]= new Atomic_producer(Event_get_token); + } +};// end class Ct_150_151 + +//---- 54 ---- +class Ct_152_153 : public AND_node_producer_container { +public: // constructor + Ct_152_153 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + element[ 1 ]= new Atomic_producer(Event_get_token); + element[ 2 ]= new Atomic_producer(Event_get_token); + } +};// end class Ct_152_153 + +//---- 55 ---- +class Itp_38_39 : public OR_node_producer_container { +public: // constructor + Itp_38_39 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_get_token); + element[ 1 ]= new Ct_150_151 ; + element[ 2 ]= new Ct_152_153 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itp_38_39 + +//---- 56 ---- +class Sq_40_41 : public AND_node_producer_container { +public: // constructor + Sq_40_41 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itp_36_37 ; + element[ 1 ]= new Itp_38_39 ; + } +};// end class Sq_40_41 + +//---- 57 ---- +class Set_96_97 : public SET_node_producer_container { +public: // constructor + Set_96_97 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Shift_Reduce); + element[ 1 ]= new Composite_secondary_producer(Event_Stack); + } +};// end class Set_96_97 + +//---- 58 ---- +class Comp_13_14 : public Composite_producer { +public: // constructor + Comp_13_14 (): Composite_producer(Event_RegExpr_match){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_11_12 ; + } +};// end class Comp_13_14 + +//---- 59 ---- +class Comp_26_27 : public Composite_producer { +public: // constructor + Comp_26_27 (): Composite_producer(Event_Token_recognition){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_17_18 ; + element[ 1 ]= new SIMPLE_LIST_24_25_ob(Event_SIMPLE_LIST_24_25); + } +};// end class Comp_26_27 + +//---- 60 ---- +class Comp_58_59 : public Composite_producer { +public: // constructor + Comp_58_59 (): Composite_producer(Event_Shift){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_56_57 ; + } +};// end class Comp_58_59 + +//---- 61 ---- +class Comp_64_65 : public Composite_producer { +public: // constructor + Comp_64_65 (): Composite_producer(Event_Reduce){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_62_63 ; + } +};// end class Comp_64_65 + +//---- 62 ---- +class Comp_78_79 : public Composite_producer { +public: // constructor + Comp_78_79 (): Composite_producer(Event_Shift_Reduce){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_76_77 ; + } +};// end class Comp_78_79 + +//---- 63 ---- +class Comp_94_95 : public Composite_producer { +public: // constructor + Comp_94_95 (): Composite_producer(Event_Stack){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_82_83 ; + element[ 1 ]= new SIMPLE_LIST_92_93_ob(Event_SIMPLE_LIST_92_93); + } +};// end class Comp_94_95 + +//---- 64 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_Source_code){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_3_4 ; + } +};// end class Comp_5_6 + +//---- 65 ---- +class Comp_30_31 : public Composite_producer { +public: // constructor + Comp_30_31 (): Composite_producer(Event_Lexer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itp_28_29 ; + } +};// end class Comp_30_31 + +//---- 66 ---- +class Comp_50_51 : public Composite_producer { +public: // constructor + Comp_50_51 (): Composite_producer(Event_Token_list){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_40_41 ; + element[ 1 ]= new SIMPLE_LIST_48_49_ob(Event_SIMPLE_LIST_48_49); + } +};// end class Comp_50_51 + +//---- 67 ---- +class Comp_106_107 : public Composite_producer { +public: // constructor + Comp_106_107 (): Composite_producer(Event_Parser){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Set_96_97 ; + element[ 1 ]= new SIMPLE_LIST_104_105_ob(Event_SIMPLE_LIST_104_105); + } +};// end class Comp_106_107 + +//---- 68 ---- +class SCHEMA_compiler1: public Composite_producer { +public: // constructor + SCHEMA_compiler1(): Composite_producer(Event_compiler1){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 7 ]; + element[0]= new Composite_secondary_producer(Event_Source_code); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Lexer); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_34_35_ob(Event_SIMPLE_LIST_34_35); + element[3]= new Composite_secondary_producer(Event_Token_list); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_54_55_ob(Event_SIMPLE_LIST_54_55); + element[5]= new Composite_secondary_producer(Event_Parser); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_110_111_ob(Event_SIMPLE_LIST_110_111); + } +};// end class SCHEMA_compiler1 + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example21_compiler1.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 3 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_13_14 temp_69; temp_69.harvest(); + Comp_26_27 temp_70; temp_70.harvest(); + Comp_58_59 temp_71; temp_71.harvest(); + Comp_64_65 temp_72; temp_72.harvest(); + Comp_78_79 temp_73; temp_73.harvest(); + Comp_94_95 temp_74; temp_74.harvest(); + // harvesting traces for ROOT events + Comp_5_6 temp_75; temp_75.harvest(); + Comp_30_31 temp_76; temp_76.harvest(); + Comp_50_51 temp_77; temp_77.harvest(); + Comp_106_107 temp_78; temp_78.harvest(); + // harvesting traces for main schema + SCHEMA_compiler1 temp_79; temp_79.harvest(); + temp_79.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"compiler1"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.mp new file mode 100644 index 0000000..371f385 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.mp @@ -0,0 +1,86 @@ +/* Example 21 + Compiler front end, + bottom-up parser + Lexer and parser in batch mode + +run for +scope 1, 2 traces, less than 1 sec. +scope 2, 147 traces, approx. time 0.87 sec. +scope 3, 11988 traces, approx. time 148 sec. +====================================================*/ + +SCHEMA compiler1 + +ROOT Source_code: (* get_characters + unget_some_characters *) +; + +/*----------- lexical analysis ----------------*/ +RegExpr_match: match_string + [ largest_successful_match + put_token ] +; + +Token_recognition: + get_characters + {+ RegExpr_match +} + unget_some_characters +BUILD{ + /* only one RegExpr_match succeeds */ + ENSURE #largest_successful_match == 1; +}; + +ROOT Lexer: + (+ Token_recognition +) +; + +Source_code, Lexer SHARE ALL get_characters, unget_some_characters; + +/*--------- intermediate token list ----------*/ +ROOT Token_list: + (+ put_token +) (+ get_token +) +BUILD{ + ENSURE #put_token >= #get_token; +}; + +Token_list, Lexer SHARE ALL put_token; + +/* ----- bottom-up parsing -------------------*/ +Shift: Push + get_token +; + +Reduce: (+<1..2> Pop +) +/* to tame the combinatorial explosion for nested iterations */ + Push +; + +Shift_Reduce: + Push /* push the start non-terminal symbol */ + get_token + (+ ( Shift | + Reduce Put_node ) + +) + + ( Reduce + Put_node + Parsing_complete | + + Report_syntax_error ) +; + +Stack: (*<2 .. 2 * $$scope + 3 > (Push | Pop) *) + /* extended iteration to provide + sufficient numbers of Pop and Push events */ +BUILD{ ENSURE FOREACH $x: Pop + #Pop BEFORE $x < #Push BEFORE $x; +}; + +ROOT Parser: {Shift_Reduce, Stack} +BUILD{ COORDINATE $s1: Shift_Reduce, + $s2: Stack + DO $s1, $s2 SHARE ALL Pop, Push; OD; +}; + +/*------ lexer and parser in the batch mode -------*/ +Token_list, Parser SHARE ALL get_token; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.temp.txt new file mode 100644 index 0000000..54340ff --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example21_compiler1 tree 3 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.tree new file mode 100644 index 0000000000000000000000000000000000000000..c20e3ceca5162805af2e8983da2341d894551eb8 GIT binary patch literal 19968 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.txt new file mode 100644 index 0000000..3c2abf1 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.txt @@ -0,0 +1,35 @@ +generating traces for scope 3 +completed RegExpr_match: 2 traces (0 MARKed) 6 events + average 3 ev/trace min 2 max 4 + +completed Token_recognition: 6 traces (0 MARKed) 58 events + average 9.66667 ev/trace min 7 max 11 + +completed Shift: 1 traces (0 MARKed) 3 events + +completed Reduce: 2 traces (0 MARKed) 7 events + average 3.5 ev/trace min 3 max 4 + +completed Shift_Reduce: 117 traces (0 MARKed) 2043 events + average 17.4615 ev/trace min 7 max 24 + +completed Stack: 272 traces (0 MARKed) 2418 events + average 8.88971 ev/trace min 3 max 10 + +completed Source_code: 4 traces (0 MARKed) 16 events + average 4 ev/trace min 1 max 7 + +completed Lexer: 258 traces (0 MARKed) 7276 events + average 28.2016 ev/trace min 8 max 34 + +completed Token_list: 6 traces (0 MARKed) 30 events + average 5 ev/trace min 3 max 7 + +completed Parser: 53 traces (0 MARKed) 1297 events + average 24.4717 ev/trace min 11 max 31 + +completed compiler1: 11988 traces (0 MARKed) 807636 events + average 67.3704 ev/trace min 28 max 80 + +Elapsed time 386.985 sec, Speed: 2120.98 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.cpp new file mode 100644 index 0000000..1e5a0d8 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.cpp @@ -0,0 +1,1109 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA compiler2 trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_get_characters + , Event_unget_some_characters + , Event_match_string + , Event_largest_successful_match + , Event_put_token + , Event_Push + , Event_get_token + , Event_Pop + , Event_Put_node + , Event_Parsing_complete + , Event_Report_syntax_error + // composite events + , Event_RegExpr_match + , Event_Token_recognition + , Event_Shift + , Event_Reduce + , Event_Shift_Reduce + , Event_Stack + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_24_25 + , Event_SIMPLE_LIST_34_35 + , Event_SIMPLE_LIST_72_73 + , Event_SIMPLE_LIST_84_85 + , Event_SIMPLE_LIST_94_95 + // ADD operations + // ROOT events + , Event_Source_code + , Event_Lexer + , Event_Parser + // main schema event + , Event_compiler2 }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "get_characters" + , "unget_some_characters" + , "match_string" + , "largest_successful_match" + , "put_token" + , "Push" + , "get_token" + , "Pop" + , "Put_node" + , "Parsing_complete" + , "Report_syntax_error" + , "RegExpr_match" + , "Token_recognition" + , "Shift" + , "Reduce" + , "Shift_Reduce" + , "Stack" + , "SIMPLE_LIST_24_25" + , "SIMPLE_LIST_34_35" + , "SIMPLE_LIST_72_73" + , "SIMPLE_LIST_84_85" + , "SIMPLE_LIST_94_95" + , "Source_code" + , "Lexer" + , "Parser" + , "compiler2" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_19(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_largest_successful_match){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_64(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Pop){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_65(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Push){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +bool Quantified_expr_66_67(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int x_variable; + int pivot_x_variable = 0; + + // loop 1 for x_variable + for( x_variable = 0; x_variable < len; x_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ x_variable * len + pivot_x_variable +]) && + ( + (Stack[x_variable]-> name == Event_Pop) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_64(current_host, x_variable ) < special_function_65(current_host, +x_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 5 ---- +class SIMPLE_LIST_24_25_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_24_25_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( special_function_19(current_host, Root_table[Event_Token_recognition]) +== 1 )){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_24_25_ob class + +//---- 6 ---- +class SIMPLE_LIST_34_35_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_34_35_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Source_code_source = Root_table[Event_Source_code]; + // lists of shared events for Source_code + vector<int> Source_code_get_characters_list; + vector<int> Source_code_unget_some_characters_list; + + int Lexer_source = Root_table[Event_Lexer]; + // lists of shared events for Lexer + vector<int> Lexer_get_characters_list; + vector<int> Lexer_unget_some_characters_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Source_code_source ]){ + if( Stack[i]->name == Event_get_characters ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Source_code_get_characters_list.begin(); + s != Source_code_get_characters_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Source_code_get_characters_list.push_back(i); + } + if( Stack[i]->name == Event_unget_some_characters ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Source_code_unget_some_characters_list.begin(); + s != Source_code_unget_some_characters_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Source_code_unget_some_characters_list.push_back(i); + } + }; + if(in_matrix[i * len + Lexer_source ]){ + if( Stack[i]->name == Event_get_characters ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Lexer_get_characters_list.begin(); + s != Lexer_get_characters_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Lexer_get_characters_list.push_back(i); + } + if( Stack[i]->name == Event_unget_some_characters ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Lexer_unget_some_characters_list.begin(); + s != Lexer_unget_some_characters_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Lexer_unget_some_characters_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Lexer_get_characters_list.size(); + if(Source_code_get_characters_list.size() != len_to_compare) throw failed ; + + len_to_compare = Lexer_unget_some_characters_list.size(); + if(Source_code_unget_some_characters_list.size() != len_to_compare) throw +failed ; + + // do the SHARE ALL + len_to_compare = Lexer_get_characters_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Source_code_get_characters_list[i], Lexer_get_characters_list[i]); + } + len_to_compare = Lexer_unget_some_characters_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Source_code_unget_some_characters_list[i], Lexer_unget_some_characters_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_34_35_ob class + +//---- 7 ---- +class SIMPLE_LIST_72_73_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_72_73_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_66_67(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_72_73_ob class + +//---- 8 ---- +class SIMPLE_LIST_84_85_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_84_85_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s1_variable; // thread variable + vector<int> s1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int s2_variable; // thread variable + vector<int> s2_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for s1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s1_variable = i; + if( s1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Shift_Reduce)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s1_variable_list.begin(); s != s1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s1_variable_list.size(); + if(thread_length != s1_variable_list.size()) throw failed; + + // preparing thread for s2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s2_variable = i; + if( s2_variable_list.size() == thread_length){ + s1_variable = 0; } + else{ + s1_variable = s1_variable_list[s2_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Stack)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s2_variable_list.begin(); s != s2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s2_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s2_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s2_variable_list.size(); + if(thread_length != s2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s1_variable= s1_variable_list[i]; + s2_variable= s2_variable_list[i]; + + { // SHARE ALL operation + create_matrices(); + // lists of shared events for s1_variable + vector<int> s1_variable_Pop_list; + vector<int> s1_variable_Push_list; + // lists of shared events for s2_variable + vector<int> s2_variable_Pop_list; + vector<int> s2_variable_Push_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + s1_variable ]){ + if( Stack[i]->name == Event_Pop ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s1_variable_Pop_list.begin(); + s != s1_variable_Pop_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s1_variable_Pop_list.push_back(i); + } + if( Stack[i]->name == Event_Push ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s1_variable_Push_list.begin(); + s != s1_variable_Push_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s1_variable_Push_list.push_back(i); + } + }; + if(in_matrix[i * len + s2_variable ]){ + if( Stack[i]->name == Event_Pop ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s2_variable_Pop_list.begin(); + s != s2_variable_Pop_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s2_variable_Pop_list.push_back(i); + } + if( Stack[i]->name == Event_Push ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s2_variable_Push_list.begin(); + s != s2_variable_Push_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s2_variable_Push_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = s2_variable_Pop_list.size(); + if(s1_variable_Pop_list.size() != len_to_compare) throw failed ; + len_to_compare = s2_variable_Push_list.size(); + if(s1_variable_Push_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = s2_variable_Pop_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(s1_variable_Pop_list[i], s2_variable_Pop_list[i]); + } + len_to_compare = s2_variable_Push_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(s1_variable_Push_list[i], s2_variable_Push_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_84_85_ob class + +//---- 9 ---- +class SIMPLE_LIST_94_95_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_94_95_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int produce_token_variable; // thread variable + vector<int> produce_token_variable_list; // list of coordinated events + int Lexer_source = Root_table[Event_Lexer]; // source of coordination + int consume_token_variable; // thread variable + vector<int> consume_token_variable_list; // list of coordinated events + int Parser_source = Root_table[Event_Parser]; // source of coordination + + // create lists of coordinated events + // preparing thread for produce_token_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + produce_token_variable = i; + if( produce_token_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Lexer_source ]){ + if( ( (Stack[i]->name == Event_put_token)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = produce_token_variable_list.begin(); s != produce_token_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) produce_token_variable_list.push_back(i); + } + } }; + // no processing needed for the default source produce_token_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = produce_token_variable_list.size(); + if(thread_length != produce_token_variable_list.size()) throw failed; + + // preparing thread for consume_token_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + consume_token_variable = i; + if( consume_token_variable_list.size() == thread_length){ + produce_token_variable = 0; } + else{ + produce_token_variable = produce_token_variable_list[consume_token_variable_list.size()]; +}; + if(in_matrix[i * len + Parser_source ]){ + if( ( (Stack[i]->name == Event_get_token)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = consume_token_variable_list.begin(); s != consume_token_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) consume_token_variable_list.push_back(i); + } + } }; + // no processing needed for the default source consume_token_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = consume_token_variable_list.size(); + if(thread_length != consume_token_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + produce_token_variable= produce_token_variable_list[i]; + consume_token_variable= consume_token_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(consume_token_variable,produce_token_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_94_95_ob class + +//---- 10 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_largest_successful_match); + element[ 1 ]= new Atomic_producer(Event_put_token); + } +};// end class Sq_7_8 + +//---- 11 ---- +class Opt_9_10 : public OR_node_producer_container { +public: // constructor + Opt_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_7_8 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_9_10 + +//---- 12 ---- +class Sq_11_12 : public AND_node_producer_container { +public: // constructor + Sq_11_12 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_match_string); + element[ 1 ]= new Opt_9_10 ; + } +};// end class Sq_11_12 + +//---- 13 ---- +class Sq_17_18 : public AND_node_producer_container { +public: // constructor + Sq_17_18 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_get_characters); + element[ 1 ]= new Composite_secondary_producer(Event_RegExpr_match); + element[ 2 ]= new Atomic_producer(Event_unget_some_characters); + } +};// end class Sq_17_18 + +//---- 14 ---- +class Sq_36_37 : public AND_node_producer_container { +public: // constructor + Sq_36_37 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Push); + element[ 1 ]= new Atomic_producer(Event_get_token); + } +};// end class Sq_36_37 + +//---- 15 ---- +class Ct_96_97 : public AND_node_producer_container { +public: // constructor + Ct_96_97 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Pop); + element[ 1 ]= new Atomic_producer(Event_Pop); + } +};// end class Ct_96_97 + +//---- 16 ---- +class Itp_40_41 : public OR_node_producer_container { +public: // constructor + Itp_40_41 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Pop); + element[ 1 ]= new Ct_96_97 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itp_40_41 + +//---- 17 ---- +class Sq_42_43 : public AND_node_producer_container { +public: // constructor + Sq_42_43 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itp_40_41 ; + element[ 1 ]= new Atomic_producer(Event_Push); + } +};// end class Sq_42_43 + +//---- 18 ---- +class Sq_46_47 : public AND_node_producer_container { +public: // constructor + Sq_46_47 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Reduce); + element[ 1 ]= new Atomic_producer(Event_Put_node); + } +};// end class Sq_46_47 + +//---- 19 ---- +class Alt_48_49 : public OR_node_producer_container { +public: // constructor + Alt_48_49 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Shift); + element[ 1 ]= new Sq_46_47 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_48_49 + +//---- 20 ---- +class Sq_52_53 : public AND_node_producer_container { +public: // constructor + Sq_52_53 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Reduce); + element[ 1 ]= new Atomic_producer(Event_Put_node); + element[ 2 ]= new Atomic_producer(Event_Parsing_complete); + } +};// end class Sq_52_53 + +//---- 21 ---- +class Alt_54_55 : public OR_node_producer_container { +public: // constructor + Alt_54_55 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_52_53 ; + element[ 1 ]= new Atomic_producer(Event_Report_syntax_error); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_54_55 + +//---- 22 ---- +class Sq_56_57 : public AND_node_producer_container { +public: // constructor + Sq_56_57 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_Push); + element[ 1 ]= new Atomic_producer(Event_get_token); + element[ 2 ]= new Alt_48_49 ; + element[ 3 ]= new Alt_54_55 ; + } +};// end class Sq_56_57 + +//---- 23 ---- +class Alt_60_61 : public OR_node_producer_container { +public: // constructor + Alt_60_61 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Push); + element[ 1 ]= new Atomic_producer(Event_Pop); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_60_61 + +//---- 24 ---- +class Ct_98_99 : public AND_node_producer_container { +public: // constructor + Ct_98_99 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_60_61 ; + element[ 1 ]= new Alt_60_61 ; + } +};// end class Ct_98_99 + +//---- 25 ---- +class Ct_100_101 : public AND_node_producer_container { +public: // constructor + Ct_100_101 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_60_61 ; + element[ 1 ]= new Alt_60_61 ; + element[ 2 ]= new Alt_60_61 ; + } +};// end class Ct_100_101 + +//---- 26 ---- +class Ct_102_103 : public AND_node_producer_container { +public: // constructor + Ct_102_103 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Alt_60_61 ; + element[ 1 ]= new Alt_60_61 ; + element[ 2 ]= new Alt_60_61 ; + element[ 3 ]= new Alt_60_61 ; + } +};// end class Ct_102_103 + +//---- 27 ---- +class Ct_104_105 : public AND_node_producer_container { +public: // constructor + Ct_104_105 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Alt_60_61 ; + element[ 1 ]= new Alt_60_61 ; + element[ 2 ]= new Alt_60_61 ; + element[ 3 ]= new Alt_60_61 ; + element[ 4 ]= new Alt_60_61 ; + } +};// end class Ct_104_105 + +//---- 28 ---- +class Itr_62_63 : public OR_node_producer_container { +public: // constructor + Itr_62_63 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Ct_98_99 ; + element[ 1 ]= new Ct_100_101 ; + element[ 2 ]= new Ct_102_103 ; + element[ 3 ]= new Ct_104_105 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_62_63 + +//---- 29 ---- +class Sq_1_2 : public AND_node_producer_container { +public: // constructor + Sq_1_2 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_get_characters); + element[ 1 ]= new Atomic_producer(Event_unget_some_characters); + } +};// end class Sq_1_2 + +//---- 30 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_3_4 + +//---- 31 ---- +class Set_76_77 : public SET_node_producer_container { +public: // constructor + Set_76_77 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Shift_Reduce); + element[ 1 ]= new Composite_secondary_producer(Event_Stack); + } +};// end class Set_76_77 + +//---- 32 ---- +class Comp_13_14 : public Composite_producer { +public: // constructor + Comp_13_14 (): Composite_producer(Event_RegExpr_match){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_11_12 ; + } +};// end class Comp_13_14 + +//---- 33 ---- +class Comp_26_27 : public Composite_producer { +public: // constructor + Comp_26_27 (): Composite_producer(Event_Token_recognition){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_17_18 ; + element[ 1 ]= new SIMPLE_LIST_24_25_ob(Event_SIMPLE_LIST_24_25); + } +};// end class Comp_26_27 + +//---- 34 ---- +class Comp_38_39 : public Composite_producer { +public: // constructor + Comp_38_39 (): Composite_producer(Event_Shift){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_36_37 ; + } +};// end class Comp_38_39 + +//---- 35 ---- +class Comp_44_45 : public Composite_producer { +public: // constructor + Comp_44_45 (): Composite_producer(Event_Reduce){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_42_43 ; + } +};// end class Comp_44_45 + +//---- 36 ---- +class Comp_58_59 : public Composite_producer { +public: // constructor + Comp_58_59 (): Composite_producer(Event_Shift_Reduce){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_56_57 ; + } +};// end class Comp_58_59 + +//---- 37 ---- +class Comp_74_75 : public Composite_producer { +public: // constructor + Comp_74_75 (): Composite_producer(Event_Stack){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_62_63 ; + element[ 1 ]= new SIMPLE_LIST_72_73_ob(Event_SIMPLE_LIST_72_73); + } +};// end class Comp_74_75 + +//---- 38 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_Source_code){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_3_4 ; + } +};// end class Comp_5_6 + +//---- 39 ---- +class Comp_30_31 : public Composite_producer { +public: // constructor + Comp_30_31 (): Composite_producer(Event_Lexer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Token_recognition); + } +};// end class Comp_30_31 + +//---- 40 ---- +class Comp_86_87 : public Composite_producer { +public: // constructor + Comp_86_87 (): Composite_producer(Event_Parser){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Set_76_77 ; + element[ 1 ]= new SIMPLE_LIST_84_85_ob(Event_SIMPLE_LIST_84_85); + } +};// end class Comp_86_87 + +//---- 41 ---- +class SCHEMA_compiler2: public Composite_producer { +public: // constructor + SCHEMA_compiler2(): Composite_producer(Event_compiler2){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 5 ]; + element[0]= new Composite_secondary_producer(Event_Source_code); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Lexer); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_34_35_ob(Event_SIMPLE_LIST_34_35); + element[3]= new Composite_secondary_producer(Event_Parser); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_94_95_ob(Event_SIMPLE_LIST_94_95); + } +};// end class SCHEMA_compiler2 + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example22_compiler2.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_13_14 temp_42; temp_42.harvest(); + Comp_26_27 temp_43; temp_43.harvest(); + Comp_38_39 temp_44; temp_44.harvest(); + Comp_44_45 temp_45; temp_45.harvest(); + Comp_58_59 temp_46; temp_46.harvest(); + Comp_74_75 temp_47; temp_47.harvest(); + // harvesting traces for ROOT events + Comp_5_6 temp_48; temp_48.harvest(); + Comp_30_31 temp_49; temp_49.harvest(); + Comp_86_87 temp_50; temp_50.harvest(); + // harvesting traces for main schema + SCHEMA_compiler2 temp_51; temp_51.harvest(); + temp_51.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"compiler2"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.mp new file mode 100644 index 0000000..b18d9af --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.mp @@ -0,0 +1,80 @@ +/* Example 22 + Compiler front end, + bottom-up parser + Lexer and parser in interaction mode + +run for +scope 1, 2 traces, less than 1 sec. +scope 2, 111 traces, approx. time 0.65 sec. +scope 3, 4860 traces, approx. time 55 sec. +====================================================*/ + +SCHEMA compiler2 + +ROOT Source_code: (* get_characters + unget_some_characters *) +; + +/*----------- lexical analysis ----------------*/ +RegExpr_match: match_string + [ largest_successful_match + put_token ] +; + +Token_recognition: + get_characters + {+ RegExpr_match +} + unget_some_characters +BUILD{ + /* only one RegExpr_match succeeds */ + ENSURE #largest_successful_match == 1; +}; + +ROOT Lexer: + (+ Token_recognition +) +; + +Source_code, Lexer SHARE ALL get_characters, unget_some_characters; + +/* ----- bottom-up parsing -------------------*/ +Shift: Push + get_token +; + +Reduce: (+<1..2> Pop +) + /* to tame the combinatorial explosion for nested iterations */ + Push +; + +Shift_Reduce: + Push /* push the start non-terminal symbol */ + get_token + (+ ( Shift | + Reduce + Put_node ) + +) + + ( Reduce + Put_node + Parsing_complete | + + Report_syntax_error ) +; + +Stack: (*<2 .. 2 * $$scope + 3 > (Push | Pop) *) + /* extended iteration to provide + sufficient numbers of Pop and Push events */ +BUILD{ ENSURE FOREACH $x: Pop + #Pop BEFORE $x < #Push BEFORE $x; +}; + +ROOT Parser: {Shift_Reduce, Stack} +BUILD{ COORDINATE $s1: Shift_Reduce, + $s2: Stack + DO $s1, $s2 SHARE ALL Pop, Push; OD; +}; + +/*------ lexer and parser in the interactive mode -------*/ +COORDINATE $produce_token: put_token FROM Lexer, + $consume_token: get_token FROM Parser + DO ADD $produce_token PRECEDES $consume_token; OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.temp.txt new file mode 100644 index 0000000..c5f4af0 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example22_compiler2 tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.tree new file mode 100644 index 0000000000000000000000000000000000000000..6a2cd6fd9d7ec3f04d11578945d9d49593f3127e GIT binary patch literal 15872 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 Z@>EREiR~C2-ZVTkJof+V{{`0ne*hcEMg{-? literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.txt new file mode 100644 index 0000000..3db135a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.txt @@ -0,0 +1,30 @@ +generating traces for scope 1 +completed RegExpr_match: 2 traces (0 MARKed) 6 events + average 3 ev/trace min 2 max 4 + +completed Token_recognition: 1 traces (0 MARKed) 7 events + +completed Shift: 1 traces (0 MARKed) 3 events + +completed Reduce: 2 traces (0 MARKed) 7 events + average 3.5 ev/trace min 3 max 4 + +completed Shift_Reduce: 9 traces (0 MARKed) 99 events + average 11 ev/trace min 7 max 14 + +completed Stack: 21 traces (0 MARKed) 108 events + average 5.14286 ev/trace min 3 max 6 + +completed Source_code: 2 traces (0 MARKed) 4 events + average 2 ev/trace min 1 max 3 + +completed Lexer: 1 traces (0 MARKed) 8 events + +completed Parser: 5 traces (0 MARKed) 79 events + average 15.8 ev/trace min 11 max 19 + +completed compiler2: 2 traces (0 MARKed) 56 events + average 28 ev/trace min 25 max 31 + +Elapsed time 0.031716 sec, Speed: 11886.7 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.cpp new file mode 100644 index 0000000..338732b --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.cpp @@ -0,0 +1,823 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Shopping_spree trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, float > price_number_attribute; + map<int, float > total_cost_number_attribute; +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( price_number_attribute[event1] != price_number_attribute[event2]) + return false; + if( total_cost_number_attribute[event1] != total_cost_number_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + price_number_attribute.clear(); + total_cost_number_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!price_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("price",price_number_attribute)); + if(!total_cost_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("total_cost",total_cost_number_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + + if(p1_num_attr->first == "price"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + price_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + else + if(p1_num_attr->first == "total_cost"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + total_cost_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Buy + , Event_Sell_Item_1 + , Event_Sell_Item_2 + , Event_Sell_Item_3 + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_21_22 + , Event_SIMPLE_LIST_41_42 + , Event_SIMPLE_LIST_66_67 + // ADD operations + // ROOT events + , Event_Buyer + , Event_Shop_A + , Event_Shop_B + // main schema event + , Event_Shopping_spree }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Buy" + , "Sell_Item_1" + , "Sell_Item_2" + , "Sell_Item_3" + , "SIMPLE_LIST_21_22" + , "SIMPLE_LIST_41_42" + , "SIMPLE_LIST_66_67" + , "Buyer" + , "Shop_A" + , "Shop_B" + , "Shopping_spree" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_58(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Buy){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_59(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Buy){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_62(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Buy){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_63(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Buy){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- for aggregate operation SUM +float aggregate_op_55(Coordinate * current_host, int pivot){ + int item_variable ; + float temp = 0 ; +// #event traversal performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + bool first = true; + + current_host->create_matrices(); + int len = current_host->len; + // create list of selected events + for( item_variable = 0; item_variable < len; item_variable ++){ + if(current_host->in_matrix[ item_variable * len + pivot]){ + if( Stack[item_variable]->name == Event_Sell_Item_1|| Stack[item_variable]->name == Event_Sell_Item_2 +|| Stack[item_variable]->name == Event_Sell_Item_3){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = current_host->eq_matrix[ item_variable * len + *s])) break; + }; // end of search for shared events + if(!found + ) {selected_list.push_back( item_variable ); + temp = temp + + price_number_attribute[item_variable] ;}; + }; // end if for selection + }; // end if for matrix + }; // end for + + return temp; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 6 ---- +class SIMPLE_LIST_21_22_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_21_22_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Sell_Item_1)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + // attribute price assignment + price_number_attribute[s_variable]=8 ; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Sell_Item_2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + // attribute price assignment + price_number_attribute[s_variable]=20 ; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_21_22_ob class + +//---- 7 ---- +class SIMPLE_LIST_41_42_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_41_42_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Sell_Item_2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + // attribute price assignment + price_number_attribute[s_variable]=22 ; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Sell_Item_3)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + // attribute price assignment + price_number_attribute[s_variable]=30 ; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_41_42_ob class + +//---- 8 ---- +class SIMPLE_LIST_66_67_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_66_67_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int sell_variable; // thread variable + vector<int> sell_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int buy_variable; // thread variable + vector<int> buy_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for sell_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + sell_variable = i; + if( sell_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Sell_Item_1)|| (Stack[i]->name == Event_Sell_Item_2)|| (Stack[i]->name == Event_Sell_Item_3) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = sell_variable_list.begin(); s != sell_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) sell_variable_list.push_back(i); + } + } }; + // no processing needed for the default source sell_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = sell_variable_list.size(); + if(thread_length != sell_variable_list.size()) throw failed; + + // preparing thread for buy_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + buy_variable = i; + if( buy_variable_list.size() == thread_length){ + sell_variable = 0; } + else{ + sell_variable = sell_variable_list[buy_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Buy)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = buy_variable_list.begin(); s != buy_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) buy_variable_list.push_back(i); + } + } }; + // no processing needed for the default source buy_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = buy_variable_list.size(); + if(thread_length != buy_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + sell_variable= sell_variable_list[i]; + buy_variable= buy_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(sell_variable,buy_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // SAY_event generation + string message; + ostringstream convert; + convert <<" Trace #"; + convert << + trace_id_attribute ; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + // attribute total_cost assignment + total_cost_number_attribute[0]=aggregate_op_55(current_host, 0 ) ; + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Bought "; + convert << special_function_62(current_host, Root_table[Event_Shopping_spree]) +; + convert <<" items. Total purchase cost is: "; + convert << + total_cost_number_attribute[0] ; + convert <<" average cost: "; + convert << ( + total_cost_number_attribute[0] / (float)special_function_63(current_host, Root_table[Event_Shopping_spree]) +) ; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_66_67_ob class + +//---- 9 ---- +class Ct_68_69 : public AND_node_producer_container { +public: // constructor + Ct_68_69 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Buy); + element[ 1 ]= new Atomic_producer(Event_Buy); + } +};// end class Ct_68_69 + +//---- 10 ---- +class Itr_1_2 : public OR_node_producer_container { +public: // constructor + Itr_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_Buy); + element[ 2 ]= new Ct_68_69 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itr_1_2 + +//---- 11 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Sell_Item_1); + element[ 1 ]= new Atomic_producer(Event_Sell_Item_2); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_5_6 + +//---- 12 ---- +class Itr_7_8 : public OR_node_producer_container { +public: // constructor + Itr_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_5_6 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_7_8 + +//---- 13 ---- +class Alt_25_26 : public OR_node_producer_container { +public: // constructor + Alt_25_26 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Sell_Item_2); + element[ 1 ]= new Atomic_producer(Event_Sell_Item_3); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_25_26 + +//---- 14 ---- +class Itr_27_28 : public OR_node_producer_container { +public: // constructor + Itr_27_28 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_25_26 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_27_28 + +//---- 15 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Buyer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_1_2 ; + } +};// end class Comp_3_4 + +//---- 16 ---- +class Comp_23_24 : public Composite_producer { +public: // constructor + Comp_23_24 (): Composite_producer(Event_Shop_A){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_7_8 ; + element[ 1 ]= new SIMPLE_LIST_21_22_ob(Event_SIMPLE_LIST_21_22); + } +};// end class Comp_23_24 + +//---- 17 ---- +class Comp_43_44 : public Composite_producer { +public: // constructor + Comp_43_44 (): Composite_producer(Event_Shop_B){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_27_28 ; + element[ 1 ]= new SIMPLE_LIST_41_42_ob(Event_SIMPLE_LIST_41_42); + } +};// end class Comp_43_44 + +//---- 18 ---- +class SCHEMA_Shopping_spree: public Composite_producer { +public: // constructor + SCHEMA_Shopping_spree(): Composite_producer(Event_Shopping_spree){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 4 ]; + element[0]= new Composite_secondary_producer(Event_Buyer); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Shop_A); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new Composite_secondary_producer(Event_Shop_B); + // for Root_table update in Composite_secondary_producer::traverse() + element[2] -> type = ROOT_node; + element[3]= new SIMPLE_LIST_66_67_ob(Event_SIMPLE_LIST_66_67); + } +};// end class SCHEMA_Shopping_spree + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example23_number_attributes.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_19; temp_19.harvest(); + Comp_23_24 temp_20; temp_20.harvest(); + Comp_43_44 temp_21; temp_21.harvest(); + // harvesting traces for main schema + SCHEMA_Shopping_spree temp_22; temp_22.harvest(); + temp_22.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Shopping_spree"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.mp new file mode 100644 index 0000000..a040553 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.mp @@ -0,0 +1,38 @@ +/* Example23.mp number attribute test */ + +SCHEMA Shopping_spree + +ROOT Buyer: (*<0.. 2 * $$scope> Buy *); +/* Increase the iteration to ensure enough Buy events to coordinate with both Shops */ + +ATTRIBUTES{number price, total_cost;}; + +ROOT Shop_A: (* (Sell_Item_1 | Sell_Item_2) *) +/* Initializing attribute values in a context of composite event where these are used */ +BUILD{ COORDINATE $s: Sell_Item_1 DO $s.price:= 8; OD; + COORDINATE $s: Sell_Item_2 DO $s.price:= 20; OD; +}; + +ROOT Shop_B: (* (Sell_Item_2 | Sell_Item_3) *) + +/* In Shop_B the cost of Item_2 may be different */ +BUILD{ COORDINATE $s: Sell_Item_2 DO $s.price:= 22; OD; + COORDINATE $s: Sell_Item_3 DO $s.price:= 30; OD; +}; + +/* Schema’s attribute total_cost is automatically initialized by 0.0. + Absence of event reference means THIS by default */ +COORDINATE $sell: (Sell_Item_1 | Sell_Item_2 | Sell_Item_3), + $buy: Buy + DO /* to render the dependency between sell and buy events */ + ADD $buy PRECEDES $sell; + OD; + +/* example of pre-defined attribute use */ +SAY(" Trace #" trace_id); + +/* use of aggregate operation to calculate total_cost as an attribute of the whole schema */ +total_cost := SUM{ $item: (Sell_Item_1 | Sell_Item_2 | Sell_Item_3) APPLY $item.price}; + +SAY("Bought " #Buy " items. Total purchase cost is: " total_cost + " average cost: " total_cost/#Buy); diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.temp.txt new file mode 100644 index 0000000..edbab33 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example23_number_attributes tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.tree new file mode 100644 index 0000000000000000000000000000000000000000..eab922f373c18cf3e2790721911a92e18856b7e6 GIT binary patch literal 10752 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 a7=BgFT+xj6^{-pIu4mnVNS6Pr_5T+&8m#F6 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.txt new file mode 100644 index 0000000..1287f21 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.txt @@ -0,0 +1,15 @@ +generating traces for scope 1 +completed Buyer: 3 traces (0 MARKed) 6 events + average 2 ev/trace min 1 max 3 + +completed Shop_A: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed Shop_B: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed Shopping_spree: 9 traces (0 MARKed) 78 events + average 8.66667 ev/trace min 6 max 10 + +Elapsed time 0.000878 sec, Speed: 107062 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.cpp new file mode 100644 index 0000000..0557e78 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.cpp @@ -0,0 +1,690 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA RedGreen trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, float > selection_probability_number_attribute; +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( selection_probability_number_attribute[event1] != selection_probability_number_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + selection_probability_number_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!selection_probability_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("selection_probability",selection_probability_number_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + + if(p1_num_attr->first == "selection_probability"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + selection_probability_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Select_Red + , Event_Select_Green + , Event_RRR + , Event_RRG + , Event_RGG + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_49_50 + // ADD operations + // ROOT events + , Event_Selection + // main schema event + , Event_RedGreen }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Select_Red" + , "Select_Green" + , "RRR" + , "RRG" + , "RGG" + , "SIMPLE_LIST_49_50" + , "Selection" + , "RedGreen" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_11(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_RRR){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_12(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Select_Red){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_13(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_RRG){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_14(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Select_Red){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_15(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_RGG){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 6 ---- +int special_function_16(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Select_Red){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 7 ---- +int special_function_23(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Select_Red){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 8 ---- +int special_function_24(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Select_Red|| Stack[i]->name == Event_Select_Green +){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 9 ---- +int special_function_29(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Select_Green){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 10 ---- +int special_function_30(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_Select_Red|| Stack[i]->name == Event_Select_Green +){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 11 ---- +class SIMPLE_LIST_49_50_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_49_50_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( ( ( ( special_function_11(current_host, Root_table[Event_RedGreen])== 1 + )== ( special_function_12(current_host, Root_table[Event_RedGreen])== 3 ))&& ( +( special_function_13(current_host, Root_table[Event_RedGreen])== 1 )== ( special_function_14(current_host, Root_table[Event_RedGreen]) +== 2 )))&& ( ( special_function_15(current_host, Root_table[Event_RedGreen])== 1 + )== ( special_function_16(current_host, Root_table[Event_RedGreen])== 1 )))){} + else{ + throw failed; // REJECT + }// end IF + { // COORDINATE operation + int thread_length = -1; + int res_variable; // thread variable + vector<int> res_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for res_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + res_variable = i; + if( res_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_RRR)|| (Stack[i]->name == Event_RRG)|| (Stack[i]->name == Event_RGG) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = res_variable_list.begin(); s != res_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) res_variable_list.push_back(i); + } + } }; + // no processing needed for the default source res_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = res_variable_list.size(); + if(thread_length != res_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + res_variable= res_variable_list[i]; + // attribute selection_probability assignment + selection_probability_number_attribute[0]=1 ; + { // COORDINATE operation + int thread_length = -1; + int s_variable; // thread variable + vector<int> s_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for s_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + s_variable = i; + if( s_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Select_Red)|| (Stack[i]->name == Event_Select_Green) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = s_variable_list.begin(); s != s_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) s_variable_list.push_back(i); + } + } }; + // no processing needed for the default source s_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = s_variable_list.size(); + if(thread_length != s_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + s_variable= s_variable_list[i]; + if( (Stack[s_variable]->name == Event_Select_Red)){ + // attribute selection_probability assignment + selection_probability_number_attribute[0]*=(( 3 - special_function_23(current_host, +s_variable ) )/ (float)( 5 - special_function_24(current_host, s_variable ) )) ; + + }// end THEN + else{ + // attribute selection_probability assignment + selection_probability_number_attribute[0]*=(( 2 - special_function_29(current_host, +s_variable ) )/ (float)( 5 - special_function_30(current_host, s_variable ) )) ; + + }// end IF + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Probability of result "; + convert << event_name_string[Stack[ res_variable ]->name]; + convert <<" was "; + convert << + selection_probability_number_attribute[0] ; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_49_50_ob class + +//---- 12 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Select_Red); + element[ 1 ]= new Atomic_producer(Event_Select_Green); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 13 ---- +class Ct_51_52 : public AND_node_producer_container { +public: // constructor + Ct_51_52 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_1_2 ; + element[ 1 ]= new Alt_1_2 ; + element[ 2 ]= new Alt_1_2 ; + } +};// end class Ct_51_52 + +//---- 14 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_RRR); + element[ 1 ]= new Atomic_producer(Event_RRG); + element[ 2 ]= new Atomic_producer(Event_RGG); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Alt_5_6 + +//---- 15 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Ct_51_52 ; + element[ 1 ]= new Alt_5_6 ; + } +};// end class Sq_7_8 + +//---- 16 ---- +class Comp_9_10 : public Composite_producer { +public: // constructor + Comp_9_10 (): Composite_producer(Event_Selection){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_7_8 ; + } +};// end class Comp_9_10 + +//---- 17 ---- +class SCHEMA_RedGreen: public Composite_producer { +public: // constructor + SCHEMA_RedGreen(): Composite_producer(Event_RedGreen){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 2 ]; + element[0]= new Composite_secondary_producer(Event_Selection); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new SIMPLE_LIST_49_50_ob(Event_SIMPLE_LIST_49_50); + } +};// end class SCHEMA_RedGreen + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example24_Bayesian_probability.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_9_10 temp_18; temp_18.harvest(); + // harvesting traces for main schema + SCHEMA_RedGreen temp_19; temp_19.harvest(); + temp_19.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"RedGreen"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.mp new file mode 100644 index 0000000..5022d18 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.mp @@ -0,0 +1,56 @@ +/* Example24.mp Bayesian attribute example + + Suppose there are 3 red and 2 green balls in a box. + We pick at random three balls, one at a time. + The result of the process can be denoted as RRR, RRG, or RGG, + representing sets of selected balls. + + The following MP schema demonstrates how to obtain all valid traces + and to calculate probabilities for the results. + Please notice that the trace Type 1 probability is calculated as 1/7 ~ 0.142857, + since Type 1 assumes that probability of selecting an alternative is + constant for the whole derivation process. + + run for scope 1 +*/ +SCHEMA RedGreen + +ATTRIBUTES{ number selection_probability; }; + +ROOT Selection: + /* there are precisely three ball selections */ + (+ <3> ( Select_Red | Select_Green ) +) + + /* possible selection configurations */ + ( RRR | RRG | RGG ) +; + +/* Constraints to shape the valid traces */ +ENSURE (#RRR == 1 <-> #Select_Red == 3) AND + (#RRG == 1 <-> #Select_Red == 2) AND + (#RGG == 1 <-> #Select_Red == 1); + +/* Attribute calculations are done here */ +COORDINATE $res: ( RRR | RRG | RGG ) +DO + /* prepare for further calculations */ + selection_probability:= 1; + + COORDINATE $s: ( Select_Red | Select_Green ) + DO + /* Probability of the result depends on the ball selection order */ + IF $s IS Select_Red THEN + /* probability to select Red ball is: + (number of Red balls available / total number of available balls) */ + selection_probability *:= + (3 - #Select_Red BEFORE $s)/(5 - #( Select_Red | Select_Green ) BEFORE $s); + ELSE + /* probability to select Green ball */ + selection_probability *:= + (2 - #Select_Green BEFORE $s)/(5 - #( Select_Red | Select_Green ) BEFORE $s); + FI; + OD; + + /* Report the results */ + SAY( "Probability of result " $res " was " selection_probability); +OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.temp.txt new file mode 100644 index 0000000..fe5a227 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example24_Bayesian_probability tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.tree new file mode 100644 index 0000000000000000000000000000000000000000..a6375fb96f5e70469e0b24f3e21acbb9515787de GIT binary patch literal 10240 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 HYW)8LgyE=q literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.txt new file mode 100644 index 0000000..31fdea9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.txt @@ -0,0 +1,9 @@ +generating traces for scope 1 +completed Selection: 24 traces (0 MARKed) 120 events + average 5 ev/trace min 5 max 5 + +completed RedGreen: 7 traces (0 MARKed) 49 events + average 7 ev/trace min 7 max 7 + +Elapsed time 0.000815 sec, Speed: 207362 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.cpp new file mode 100644 index 0000000..fd35c55 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.cpp @@ -0,0 +1,530 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA backpack trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, Interval > weight_interval_attribute; +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( weight_interval_attribute[event1] != weight_interval_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + weight_interval_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!weight_interval_attribute.empty()) + interval_attr_container.insert(pair<string, map<int, Interval> >("weight",weight_interval_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + + if(p1_interval_attr->first == "weight"){ + for(p_interval = (p1_interval_attr->second).begin(); + p_interval != (p1_interval_attr->second).end(); p_interval++) + weight_interval_attribute.insert(pair<int, Interval>(p_interval->first + base, p_interval->second));} + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + // composite events + , Event_item1 + , Event_item2 + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_3_4 + , Event_SIMPLE_LIST_9_10 + , Event_SIMPLE_LIST_31_32 + , Event_SIMPLE_LIST_45_46 + // ADD operations + // ROOT events + , Event_Backpack + // main schema event + , Event_backpack }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "item1" + , "item2" + , "SIMPLE_LIST_3_4" + , "SIMPLE_LIST_9_10" + , "SIMPLE_LIST_31_32" + , "SIMPLE_LIST_45_46" + , "Backpack" + , "backpack" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_35(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_item1|| Stack[i]->name == Event_item2){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_38(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_item1|| Stack[i]->name == Event_item2){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 3 ---- +class SIMPLE_LIST_3_4_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_3_4_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute weight assignment + weight_interval_attribute[0]=Interval(2 ,5 ); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_3_4_ob class + +//---- 4 ---- +class SIMPLE_LIST_9_10_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_9_10_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute weight assignment + weight_interval_attribute[0]=Interval(10 ,16 ); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_9_10_ob class + +//---- 5 ---- +class SIMPLE_LIST_31_32_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_31_32_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int item_variable; // thread variable + vector<int> item_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for item_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + item_variable = i; + if( item_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_item1)|| (Stack[i]->name == Event_item2)) + ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = item_variable_list.begin(); s != item_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) item_variable_list.push_back(i); + } + } }; + // no processing needed for the default source item_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = item_variable_list.size(); + if(thread_length != item_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + item_variable= item_variable_list[i]; + { // SAY_event generation + string message; + ostringstream convert; + convert <<"selected "; + convert << event_name_string[Stack[ item_variable ]->name]; + convert <<" with weight "; + Interval temp_1 = + weight_interval_attribute[item_variable] ; + if( temp_1 .smallest != temp_1 .largest) + convert <<"["<< temp_1 .smallest << " .. "<< temp_1 .largest << "]"; + else convert << temp_1 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + // attribute weight assignment + weight_interval_attribute[0]+= + weight_interval_attribute[item_variable] ; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + if( ( ( + weight_interval_attribute[0] > 0 )&& ( + weight_interval_attribute[0] <= 30 ))){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_31_32_ob class + +//---- 6 ---- +class SIMPLE_LIST_45_46_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_45_46_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // SAY_event generation + string message; + ostringstream convert; + convert <<"selected "; + convert << special_function_38(current_host, Root_table[Event_backpack]); + convert <<" items"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + { // SAY_event generation + string message; + ostringstream convert; + convert <<"backpack weight is within interval "; + Interval temp_2 = + weight_interval_attribute[Root_table[Event_Backpack]] ; + if( temp_2 .smallest != temp_2 .largest) + convert <<"["<< temp_2 .smallest << " .. "<< temp_2 .largest << "]"; + else convert << temp_2 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_45_46_ob class + +//---- 7 ---- +class Alt_13_14 : public OR_node_producer_container { +public: // constructor + Alt_13_14 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_item1); + element[ 1 ]= new Composite_secondary_producer(Event_item2); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_13_14 + +//---- 8 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_item1){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new SIMPLE_LIST_3_4_ob(Event_SIMPLE_LIST_3_4); + } +};// end class Comp_5_6 + +//---- 9 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_item2){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new SIMPLE_LIST_9_10_ob(Event_SIMPLE_LIST_9_10); + } +};// end class Comp_11_12 + +//---- 10 ---- +class Comp_33_34 : public Composite_producer { +public: // constructor + Comp_33_34 (): Composite_producer(Event_Backpack){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_13_14 ; + element[ 1 ]= new SIMPLE_LIST_31_32_ob(Event_SIMPLE_LIST_31_32); + } +};// end class Comp_33_34 + +//---- 11 ---- +class SCHEMA_backpack: public Composite_producer { +public: // constructor + SCHEMA_backpack(): Composite_producer(Event_backpack){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 2 ]; + element[0]= new Composite_secondary_producer(Event_Backpack); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new SIMPLE_LIST_45_46_ob(Event_SIMPLE_LIST_45_46); + } +};// end class SCHEMA_backpack + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example25_interval_attributes.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_5_6 temp_12; temp_12.harvest(); + Comp_11_12 temp_13; temp_13.harvest(); + // harvesting traces for ROOT events + Comp_33_34 temp_14; temp_14.harvest(); + // harvesting traces for main schema + SCHEMA_backpack temp_15; temp_15.harvest(); + temp_15.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"backpack"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.mp new file mode 100644 index 0000000..cfef3eb --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.mp @@ -0,0 +1,28 @@ +/* Example 25, Use of interval attributes. + The task is to load a backpack with items not exceeding + the total weight of 30 units. + There may be several instances of the same item. + + run for scopes 1 and up +==========================================================*/ +SCHEMA backpack + +ATTRIBUTES{ interval weight; }; + +/* Composite event is used to define attribute value for + all instances of a particular event */ +item1: BUILD{ weight := [2..5];}; +item2: BUILD{ weight := [10..16];}; + +ROOT Backpack: (+ (item1 | item2) +) +BUILD{ + COORDINATE $item: (item1 | item2) + DO SAY("selected " $item " with weight " $item.weight); + /* interval weight is initialized by [0..0] */ + weight +:= $item.weight; + OD; + /* ensure that the backpack's weight does not exceed maximum */ + ENSURE weight > 0 AND weight <= 30; }; + +SAY("selected " #(item1 | item2) " items"); +SAY("backpack weight is within interval " Backpack.weight); diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.temp.txt new file mode 100644 index 0000000..69e5129 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example25_interval_attributes tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.tree new file mode 100644 index 0000000000000000000000000000000000000000..d630eb407175a251f7074af736673e837e95dfa5 GIT binary patch literal 7680 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.txt new file mode 100644 index 0000000..f5a7740 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.txt @@ -0,0 +1,13 @@ +generating traces for scope 1 +completed item1: 1 traces (0 MARKed) 1 events + +completed item2: 1 traces (0 MARKed) 1 events + +completed Backpack: 2 traces (0 MARKed) 6 events + average 3 ev/trace min 3 max 3 + +completed backpack: 2 traces (0 MARKed) 12 events + average 6 ev/trace min 6 max 6 + +Elapsed time 0.000226 sec, Speed: 88495.6 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.cpp new file mode 100644 index 0000000..8208b45 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.cpp @@ -0,0 +1,542 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Delays trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, Interval > total_delay_interval_attribute; +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( total_delay_interval_attribute[event1] != total_delay_interval_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + total_delay_interval_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!total_delay_interval_attribute.empty()) + interval_attr_container.insert(pair<string, map<int, Interval> >("total_delay",total_delay_interval_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + + if(p1_interval_attr->first == "total_delay"){ + for(p_interval = (p1_interval_attr->second).begin(); + p_interval != (p1_interval_attr->second).end(); p_interval++) + total_delay_interval_attribute.insert(pair<int, Interval>(p_interval->first + base, p_interval->second));} + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + // composite events + , Event_Work + , Event_Visitor + , Event_Get_distracted + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_3_4 + , Event_SIMPLE_LIST_9_10 + , Event_SIMPLE_LIST_43_44 + // ADD operations + // ROOT events + , Event_Worker + // main schema event + , Event_Delays }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Work" + , "Visitor" + , "Get_distracted" + , "SIMPLE_LIST_3_4" + , "SIMPLE_LIST_9_10" + , "SIMPLE_LIST_43_44" + , "Worker" + , "Delays" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_37(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Visitor){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_40(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Visitor){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 3 ---- +class SIMPLE_LIST_3_4_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_3_4_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + SET_duration(0,1 ); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_3_4_ob class + +//---- 4 ---- +class SIMPLE_LIST_9_10_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_9_10_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + SET_duration(0,Interval(2 ,3 )); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_9_10_ob class + +//---- 5 ---- +class SIMPLE_LIST_43_44_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_43_44_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int distraction_variable; // thread variable + vector<int> distraction_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for distraction_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + distraction_variable = i; + if( distraction_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Get_distracted)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = distraction_variable_list.begin(); s != distraction_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) distraction_variable_list.push_back(i); + } + } }; + // no processing needed for the default source distraction_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = distraction_variable_list.size(); + if(thread_length != distraction_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + distraction_variable= distraction_variable_list[i]; + // attribute total_delay assignment + total_delay_interval_attribute[0]+=(recalculate_timing_attributes(), + time_duration_attributes[distraction_variable] ) ; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->type == Atom || Stack[i]->type == ROOT_node || +Stack[i]->type == Composite_event_instance_node) ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + { // SAY_event generation + string message; + ostringstream convert; + convert <<" "; + convert << event_name_string[Stack[ x_variable ]->name]; + convert <<" start "; + Interval temp_1 = (recalculate_timing_attributes(), + time_start_attributes[x_variable] ) ; + if( temp_1 .smallest != temp_1 .largest) + convert <<"["<< temp_1 .smallest << " .. "<< temp_1 .largest << "]"; + else convert << temp_1 .smallest; + convert <<" duration "; + Interval temp_2 = (recalculate_timing_attributes(), + time_duration_attributes[x_variable] ) ; + if( temp_2 .smallest != temp_2 .largest) + convert <<"["<< temp_2 .smallest << " .. "<< temp_2 .largest << "]"; + else convert << temp_2 .smallest; + convert <<" end "; + Interval temp_3 = (recalculate_timing_attributes(), + time_end_attributes[x_variable] ) ; + if( temp_3 .smallest != temp_3 .largest) + convert <<"["<< temp_3 .smallest << " .. "<< temp_3 .largest << "]"; + else convert << temp_3 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // SAY_event generation + string message; + ostringstream convert; + convert <<" Delay created by "; + convert << special_function_40(current_host, Root_table[Event_Delays]); + convert <<" visitors is "; + Interval temp_4 = + total_delay_interval_attribute[0] ; + if( temp_4 .smallest != temp_4 .largest) + convert <<"["<< temp_4 .smallest << " .. "<< temp_4 .largest << "]"; + else convert << temp_4 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_43_44_ob class + +//---- 6 ---- +class Alt_17_18 : public OR_node_producer_container { +public: // constructor + Alt_17_18 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Work); + element[ 1 ]= new Composite_secondary_producer(Event_Get_distracted); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_17_18 + +//---- 7 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_Work){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new SIMPLE_LIST_3_4_ob(Event_SIMPLE_LIST_3_4); + } +};// end class Comp_5_6 + +//---- 8 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_Visitor){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new SIMPLE_LIST_9_10_ob(Event_SIMPLE_LIST_9_10); + } +};// end class Comp_11_12 + +//---- 9 ---- +class Comp_15_16 : public Composite_producer { +public: // constructor + Comp_15_16 (): Composite_producer(Event_Get_distracted){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Visitor); + } +};// end class Comp_15_16 + +//---- 10 ---- +class Comp_21_22 : public Composite_producer { +public: // constructor + Comp_21_22 (): Composite_producer(Event_Worker){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Alt_17_18 ; + } +};// end class Comp_21_22 + +//---- 11 ---- +class SCHEMA_Delays: public Composite_producer { +public: // constructor + SCHEMA_Delays(): Composite_producer(Event_Delays){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 2 ]; + element[0]= new Composite_secondary_producer(Event_Worker); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new SIMPLE_LIST_43_44_ob(Event_SIMPLE_LIST_43_44); + } +};// end class SCHEMA_Delays + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example26_timing_attributes.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_5_6 temp_12; temp_12.harvest(); + Comp_11_12 temp_13; temp_13.harvest(); + Comp_15_16 temp_14; temp_14.harvest(); + // harvesting traces for ROOT events + Comp_21_22 temp_15; temp_15.harvest(); + // harvesting traces for main schema + SCHEMA_Delays temp_16; temp_16.harvest(); + temp_16.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Delays"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.mp new file mode 100644 index 0000000..65df381 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.mp @@ -0,0 +1,42 @@ +/* Example 26, timing attribute use + + also demonstrates how to print all + events present in the trace + with timing attributes + + run for scopes 1 and up +*/ +SCHEMA Delays + +Work: +BUILD{ + SET duration AT LEAST 1; + /* The new default value for the Work event duration + attribute is set as an interval [1..1] */ +}; + + +Visitor: + /* set new default duration for Visitor */ +BUILD{ SET duration AT LEAST [2..3]; }; + +Get_distracted: (+ Visitor +) ; + +ROOT Worker: (+ ( Work | Get_distracted) +); + +ATTRIBUTES{ interval total_delay; }; +/* delay is THIS.delay, or attribute of the whole schema event, + and is used to hold specific data extracted from the trace */ + +COORDINATE $distraction: Get_distracted + DO total_delay +:= $distraction.duration; OD; + +/* show all events present in the trace with timing attributes, + preserving the order of derivation, top-down, left-to-right */ +COORDINATE $x: $$EVENT + DO SAY(" " $x " start " $x.start + " duration " $x.duration + " end " $x.end); + OD; + +SAY(" Delay created by " #Visitor " visitors is " total_delay); diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.temp.txt new file mode 100644 index 0000000..4819824 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example26_timing_attributes tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.tree new file mode 100644 index 0000000000000000000000000000000000000000..e482590aa965b97261482b8d14c4fae1fc30bb0b GIT binary patch literal 7680 zcmeHLU2Ggz6~12Yj(6?Yu^kiKw1jPNp^%VfcOBbFOIjy(69>l*u`wl7nyl@yvthln z%*;A*1yNP;&_*E-6-c3~5QHcM6qS&N3aScGsG<-e1XWZaB%%O)s3H_0s6-T1GkoX% z?9S|rlk@?JhhA%ZcJKY}cg{WM+;i{jUl?PJ_-lit=Hl_1AsZl9K*k_f<LPEhV}FXd zjf`O^hHl=xbr{<qzo<UUqn5-2EQ{mMjRV&Qz69g|qz1VavI%ks&luU!!0|M9-}v~X z_Y{2!w?-DjpJ*<Wc>5VUY+7F>>2FZQ+!Waji8cB8-4@Jy+K;Y%CVya=ynTsy=P(~@ z^2(5{kk5!QzAiY<`zHEVLY{zZhdc?{0eK3~Inw`j6Y1l2bP9hfes>ixuL9o%`Ey9} z`)h*VZwJS{DRCDi?$TXwZ%N$MyWp-#+;xSk#ew_jhUl;V@3)Wp={@j}pO8e{Pf3bC z&w)m@Uazx(d0lu`i!mA}e^K-ExgSA)cLQ@N_trteZ{7wmCk~|hQGD-1e>db4koQ6E zu5l8d#`?cTdBpv`hTGAg5Z<WzL`cz;-!*o<?A|Zq^*~*|Pr>#B!MUD{1K0DhI{YEv zojSaX2gk3iv+HOOOO|=pg?;27Y$M(x^X7Tzda)tsN6N4Iym?vZ2>9ENQ+acyh70Ib zd@66wL+@)1JijRq__~k>Tw=cj^n9G`X%PGMVgoA{Y{$D))1&gl_2b@>xT|-;VgGZ! zYYOM96KUvu7kTm^<iEtYbS3Qb<vZ20_k-gKr!oC2?kB{0ls}xMvf*LVmhuaRhpIGf z&MtYVj^2t`fS2P|tE#0Kg$&g*_=VRqNPqL&`GNT0Kh6i~Z~lA=tfO15V-42P6Qi13 z+cz7-Yw(bF)Z#$8J@DT^7~|IqbnX0z+D|e+1GuPtB=a+1-}bO>5BV9eZ#0bY+o!Q_ z{gBQTp1-I=0sg7*T$R5Zk9rlrABe!qJO-{-7Z1VL4xXbmyjRWRMs5q)XyOd=o{us2 zA;@EppM*S)c_%2}mcgC$;a-Y?>l;b;Q?$OGEAGQ`ou7`#>(eoj*JortoQ0kXF%jp_ zK=11{TmAl1pEdUHqwadizk&E``;q6{Mah3D$iwr9_%8?h6|a(^{H?e5D(t;ReyQo@ z=hVCK2c6@P{^rMV`))+r=ii6?ysP6;oMa!}L8$S1_7CX&EcD)l+z5FK_T3h7i^Roo z&JnJyk$LUJ=BxiyAJ;UBef<D%kKp@S;2ypME-P`pz-<$_K)u~1`F1yoIyx#w6RhWt zD0^Z*q)BG3Jh^Xt4?l-DLGM%}o3qRX??5BtemkUCY2|X>gH#`&pYTPAUtA9V-WfL| z=VkeRs@02UVf(Qlzjs!|k>^bg{NE0a3oB~>{c(1Cf&U)t+6;-k>u(y{|DxMRcI<4T zIEUtaKYAYab<N&Wu=iZh9uIj*?OyHG*mt@of!Ek?y2ZWZXF0c@?5UkwGv-3sdo`$s zE8+9*i@O7)FUG8cW!y7moPQmSzjxl3wE*v%lK1z~yc+xGBkmR%*R4VO-ACd7KSa+X zKk;+*&(Y(xbz+}AR>%7}@V*m0ugZHfdc4N_=!J>FFN^%&#`7_*&VTO~;*0x)cN_A3 z!Q;t&6F3JnHAAt&F6<j>A%7>sSi))Sjkny#>&}-bUhFSwA>QU_UVmN(>hg*pepy^w z5Esb*_Bd)+a9r)rB-{2oVDX+PWQbqY-@DnNaCLTQEY&l)Yh*%HI_?s2es<!0l+Mqt zxTsgFg?;?|euDf~tF!#P?T)j&HJ|a;aGCXbu%?Z1kq?7Gyt^H|1K_7Rw-u7={SfeD zlx@Cy)Kfv9kaeESZ@+%dH!b;QC0_}AN9y>Vi{O)aO=pX{gYmP-9SYjZ*LPg<o`9tD z<|O!EqV+x2N_9`Y_t)g#o5Vf;MiZT*c(rEkFyVgig8L-JbA6oRs<FXil&=~)d&b=< z^oq=s_ZSt2)4@0_8?Q4#9C?7}>)G(yp}yL9Tv1;F{{KmM4#kUFXy2R*V+lw4-Cgk4 zE79YGq2^yt;JxO2T%5BP#C&ci>Q%tb*TdW%@<8y`)&KvMoxhZJ{z}>T*Eige2tQp8 z+e&t7Y_io|C;Y|Zwaoh!Uljf&*-te(A(QNaM){(#@BT>KS1+e1-!!&i742)>V~5<` z^d0&4`8vN{3ESdT{k*ru9hLL;)XjT4VqSIKzx}bQC-~WlHy+RH*f(RygTKjr^bYpV zO}g#SpAV<*SGS};Z!3Q`q}_4apT}3NNBl$i7gx7KNhSsV{fYLgmJs^@e&y$TG9m7T zonjvM&tAUH1YT=+^STna@8C(}S%+r>o{i$s*hozHH`z>aqg5!c1nR{=Lez`xm^YLV zarlC$GwF0Xu#UyNg&G*W4(fIH-9gV@sb@d*Je?4AYyy`oXz=FHSH@#SbJJq|{^WLi zJsPXAhnmHGM%I<1(Kzlv{8Rfi#Q$vcJdK@iadDBW)~&nnFYEW`q(6>h-6y0!zIX@! zos{@fz@L_JLOs;j>R*U`1^?IO9rx2K%dO)-Eg!^BA^)6Tj(7VCqcnTZ{!#u{QpKfS zhV*|Je@6FhivJYlu|0FpSjZ=hqNCIAX9;`8EF0R8QOqyd&4p6A;^=dQqS0bj9Q8S2 znWkem(`$!m7aYUxv<nO6qM_$!oPt^6JZp!K<f$*)r#pp(LTO&lJC0SDt^mGqp?v=x zhBdlh7*^9%0pzCDw$pI*S(s*l-k5DG8HaT;KzH)fMT38>S+cVFQ8%qw!|DiHW|r-a ziIF{fM~C&%k%>vYH>daZrmPBVr^6{lzm)0pbKXin3ZQoX_bqy6Q-@tPW(xVDK36I6 zRom^xqET{u%WRo1n$v_R=I5Jtz*%}Wqi3_Js)<S7xmoWMqnV7J$;ywL^-Nz1fw1!A z(N*=z^jv?quXj_6V>(bcOTkOb<%_n_F_SMAjaj{_)7C7*t`wc-Qhu>8&)JiOl4Dql z`C=<#35BMmmx~oUHR6=@%oaVnX{G3=(DLj^7z<@*NsQ<8Os{5}6>G+5t45f+utoIp zZ0N9!q9Kx_43uG&TJl8_FksP04I=q6{d#7gy==i{(}iNeS>h90isoU%(x=TzX||<O zhC{^XM7fwRl)CCuOScUtIa?84Yu+(FzHew`Y;bb8eTRv3C_tT|XZ!W+K$l7=S`_MC zfpW=@%5Bzjea%OzV=24@>b)7gH>;H@3)6<xJ~%nKPam9^*g3XmQb%Be9sT-1Qt_@z zr}=(L&sYX5m`zVFrCZaBBE9W&!A{GQ`TFC@8M9<N`I6J6f`ZVY$EwUAE-US&(#%22 zEES&NkxNxQ-ZW&)<q_6Ec4s&1*}kTpp5dwCvB|(lE~n>uTl2PEm@h3*)|%z6DwkgC r=c~?T^jx+xu-t4;&-ON@VX5V$o72kU=>+ddq*2M!AIAUxJ^ud%5d6sj literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.txt new file mode 100644 index 0000000..3489f5d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.txt @@ -0,0 +1,15 @@ +generating traces for scope 1 +completed Work: 1 traces (0 MARKed) 1 events + +completed Visitor: 1 traces (0 MARKed) 1 events + +completed Get_distracted: 1 traces (0 MARKed) 2 events + +completed Worker: 2 traces (0 MARKed) 5 events + average 2.5 ev/trace min 2 max 3 + +completed Delays: 2 traces (0 MARKed) 14 events + average 7 ev/trace min 6 max 8 + +Elapsed time 0.000258 sec, Speed: 89147.3 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.cpp new file mode 100644 index 0000000..85b95d6 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.cpp @@ -0,0 +1,960 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Railroad_Crossing trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Enter_Restricted_Region + , Event_Goes_through_Restricted_Region + , Event_Enter_Crossing_Region + , Event_Leaves_Crossing_Region + , Event_Down + , Event_Up + // composite events + , Event_Goes_through_Crossing_Region + , Event_Move_Down + , Event_Move_Up + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_15_16 + , Event_SIMPLE_LIST_21_22 + , Event_SIMPLE_LIST_27_28 + , Event_SIMPLE_LIST_97_98 + // ADD operations + // ROOT events + , Event_Train + , Event_Crossing + // main schema event + , Event_Railroad_Crossing }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Enter_Restricted_Region" + , "Goes_through_Restricted_Region" + , "Enter_Crossing_Region" + , "Leaves_Crossing_Region" + , "Down" + , "Up" + , "Goes_through_Crossing_Region" + , "Move_Down" + , "Move_Up" + , "SIMPLE_LIST_15_16" + , "SIMPLE_LIST_21_22" + , "SIMPLE_LIST_27_28" + , "SIMPLE_LIST_97_98" + , "Train" + , "Crossing" + , "Railroad_Crossing" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Event_comparison_expr_49_50 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 BEFORE temp2 + return (bool)( (current_host ->follows_matrix)[temp2 * len + temp1]); + } + +//---- 2 ---- +bool Event_comparison_expr_51_52 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 BEFORE temp2 + return (bool)( (current_host ->follows_matrix)[temp2 * len + temp1]); + } + +//---- 3 ---- +bool Quantified_expr_53_54(Coordinate * current_host, int enter_variable){ + //===================================== + // quantifier EXISTS with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int up_variable; + int pivot_up_variable = Root_table[Event_Crossing]; + + // loop 1 for up_variable + for( up_variable = 0; up_variable < len; up_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ up_variable * len + pivot_up_variable +]) && + ( + (Stack[up_variable]-> name == Event_Up) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for EXISTS + if( ! ( Event_comparison_expr_49_50 (current_host, enter_variable , +up_variable ) || Event_comparison_expr_51_52 (current_host, up_variable , +enter_variable ) )) + {result = true; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 4 ---- +bool Quantified_expr_55_56(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int enter_variable; + int pivot_enter_variable = Root_table[Event_Train]; + + // loop 1 for enter_variable + for( enter_variable = 0; enter_variable < len; enter_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ enter_variable * len + +pivot_enter_variable ]) && + ( + (Stack[enter_variable]-> name == Event_Goes_through_Crossing_Region) + ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ! Quantified_expr_53_54(current_host, enter_variable) ) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 5 ---- +class SIMPLE_LIST_15_16_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_15_16_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + SET_duration(0,10 ); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_15_16_ob class + +//---- 6 ---- +class SIMPLE_LIST_21_22_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_21_22_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + SET_duration(0,5 ); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_21_22_ob class + +//---- 7 ---- +class SIMPLE_LIST_27_28_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_27_28_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + SET_duration(0,2 ); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_27_28_ob class + +//---- 8 ---- +class SIMPLE_LIST_97_98_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_97_98_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int enter_variable; // thread variable + vector<int> enter_variable_list; // list of coordinated events + int Train_source = Root_table[Event_Train]; // source of coordination + int down_variable; // thread variable + vector<int> down_variable_list; // list of coordinated events + int Crossing_source = Root_table[Event_Crossing]; // source of coordination + + // create lists of coordinated events + // preparing thread for enter_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + enter_variable = i; + if( enter_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Train_source ]){ + if( ( (Stack[i]->name == Event_Enter_Restricted_Region)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = enter_variable_list.begin(); s != enter_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) enter_variable_list.push_back(i); + } + } }; + // no processing needed for the default source enter_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = enter_variable_list.size(); + if(thread_length != enter_variable_list.size()) throw failed; + + // preparing thread for down_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + down_variable = i; + if( down_variable_list.size() == thread_length){ + enter_variable = 0; } + else{ + enter_variable = enter_variable_list[down_variable_list.size()];}; + if(in_matrix[i * len + Crossing_source ]){ + if( ( (Stack[i]->name == Event_Move_Down)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = down_variable_list.begin(); s != down_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) down_variable_list.push_back(i); + } + } }; + // no processing needed for the default source down_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = down_variable_list.size(); + if(thread_length != down_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + enter_variable= enter_variable_list[i]; + down_variable= down_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(down_variable,enter_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int enter_variable; // thread variable + vector<int> enter_variable_list; // list of coordinated events + int Train_source = Root_table[Event_Train]; // source of coordination + int down_variable; // thread variable + vector<int> down_variable_list; // list of coordinated events + int Crossing_source = Root_table[Event_Crossing]; // source of coordination + + // create lists of coordinated events + // preparing thread for enter_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + enter_variable = i; + if( enter_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Train_source ]){ + if( ( (Stack[i]->name == Event_Enter_Crossing_Region)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = enter_variable_list.begin(); s != enter_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) enter_variable_list.push_back(i); + } + } }; + // no processing needed for the default source enter_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = enter_variable_list.size(); + if(thread_length != enter_variable_list.size()) throw failed; + + // preparing thread for down_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + down_variable = i; + if( down_variable_list.size() == thread_length){ + enter_variable = 0; } + else{ + enter_variable = enter_variable_list[down_variable_list.size()];}; + if(in_matrix[i * len + Crossing_source ]){ + if( ( (Stack[i]->name == Event_Down)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = down_variable_list.begin(); s != down_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) down_variable_list.push_back(i); + } + } }; + // no processing needed for the default source down_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = down_variable_list.size(); + if(thread_length != down_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + enter_variable= enter_variable_list[i]; + down_variable= down_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(enter_variable,down_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int leaves_variable; // thread variable + vector<int> leaves_variable_list; // list of coordinated events + int Train_source = Root_table[Event_Train]; // source of coordination + int up_variable; // thread variable + vector<int> up_variable_list; // list of coordinated events + int Crossing_source = Root_table[Event_Crossing]; // source of coordination + + // create lists of coordinated events + // preparing thread for leaves_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + leaves_variable = i; + if( leaves_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Train_source ]){ + if( ( (Stack[i]->name == Event_Leaves_Crossing_Region)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = leaves_variable_list.begin(); s != leaves_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) leaves_variable_list.push_back(i); + } + } }; + // no processing needed for the default source leaves_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = leaves_variable_list.size(); + if(thread_length != leaves_variable_list.size()) throw failed; + + // preparing thread for up_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + up_variable = i; + if( up_variable_list.size() == thread_length){ + leaves_variable = 0; } + else{ + leaves_variable = leaves_variable_list[up_variable_list.size()];}; + if(in_matrix[i * len + Crossing_source ]){ + if( ( (Stack[i]->name == Event_Move_Up)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = up_variable_list.begin(); s != up_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) up_variable_list.push_back(i); + } + } }; + // no processing needed for the default source up_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = up_variable_list.size(); + if(thread_length != up_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + leaves_variable= leaves_variable_list[i]; + up_variable= up_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(up_variable,leaves_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + if( Quantified_expr_55_56(current_host) ){} + else{ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Crossing is open when train is passing through!"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + Mark = 'M'; // MARK + }// end IF + { // COORDINATE operation + int thread_length = -1; + int goes_through_variable; // thread variable + vector<int> goes_through_variable_list; // list of coordinated events + int Train_source = Root_table[Event_Train]; // source of coordination + int down_variable; // thread variable + vector<int> down_variable_list; // list of coordinated events + int Crossing_source = Root_table[Event_Crossing]; // source of coordination + int bar_is_up_variable; // thread variable + vector<int> bar_is_up_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for goes_through_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + goes_through_variable = i; + if( goes_through_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Train_source ]){ + if( ( (Stack[i]->name == Event_Goes_through_Crossing_Region)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = goes_through_variable_list.begin(); s != goes_through_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) goes_through_variable_list.push_back(i); + } + } }; + // no processing needed for the default source goes_through_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = goes_through_variable_list.size(); + if(thread_length != goes_through_variable_list.size()) throw failed; + + // preparing thread for down_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + down_variable = i; + if( down_variable_list.size() == thread_length){ + goes_through_variable = 0; } + else{ + goes_through_variable = goes_through_variable_list[down_variable_list.size()]; +}; + if(in_matrix[i * len + Crossing_source ]){ + if( ( (Stack[i]->name == Event_Down)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = down_variable_list.begin(); s != down_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) down_variable_list.push_back(i); + } + } }; + // no processing needed for the default source down_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = down_variable_list.size(); + if(thread_length != down_variable_list.size()) throw failed; + + // preparing thread for bar_is_up_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + bar_is_up_variable = i; + if( bar_is_up_variable_list.size() == thread_length){ + goes_through_variable = 0; + down_variable = 0; } + else{ + goes_through_variable = goes_through_variable_list[bar_is_up_variable_list.size()]; + down_variable = down_variable_list[bar_is_up_variable_list.size()];}; + if(in_matrix[i * len + Crossing_source ]){ + if( ( (Stack[i]->name == Event_Move_Up)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = bar_is_up_variable_list.begin(); s != bar_is_up_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) bar_is_up_variable_list.push_back(i); + } + } }; + // no processing needed for the default source bar_is_up_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = bar_is_up_variable_list.size(); + if(thread_length != bar_is_up_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + goes_through_variable= goes_through_variable_list[i]; + down_variable= down_variable_list[i]; + bar_is_up_variable= bar_is_up_variable_list[i]; + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Bar moved down by "; + Interval temp_1 = (recalculate_timing_attributes(), + time_end_attributes[down_variable] ) ; + if( temp_1 .smallest != temp_1 .largest) + convert <<"["<< temp_1 .smallest << " .. "<< temp_1 .largest << "]"; + else convert << temp_1 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Train starts go through crossing at "; + Interval temp_2 = (recalculate_timing_attributes(), + time_start_attributes[goes_through_variable] ) ; + if( temp_2 .smallest != temp_2 .largest) + convert <<"["<< temp_2 .smallest << " .. "<< temp_2 .largest << "]"; + else convert << temp_2 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Train ends go through crossing at "; + Interval temp_3 = (recalculate_timing_attributes(), + time_end_attributes[goes_through_variable] ) ; + if( temp_3 .smallest != temp_3 .largest) + convert <<"["<< temp_3 .smallest << " .. "<< temp_3 .largest << "]"; + else convert << temp_3 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Bar starts go up at "; + Interval temp_4 = (recalculate_timing_attributes(), + time_start_attributes[bar_is_up_variable] ) ; + if( temp_4 .smallest != temp_4 .largest) + convert <<"["<< temp_4 .smallest << " .. "<< temp_4 .largest << "]"; + else convert << temp_4 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + if( ( (recalculate_timing_attributes(), + time_start_attributes[goes_through_variable] ) < +(recalculate_timing_attributes(), + time_end_attributes[down_variable] ) )){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Not enough time to close crossing"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + else{ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Crossing was successfully closed"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end IF + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_97_98_ob class + +//---- 9 ---- +class Sq_1_2 : public AND_node_producer_container { +public: // constructor + Sq_1_2 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Atomic_producer(Event_Enter_Restricted_Region); + element[ 1 ]= new Atomic_producer(Event_Goes_through_Restricted_Region); + element[ 2 ]= new Atomic_producer(Event_Enter_Crossing_Region); + element[ 3 ]= new Composite_secondary_producer(Event_Goes_through_Crossing_Region) +; + element[ 4 ]= new Atomic_producer(Event_Leaves_Crossing_Region); + } +};// end class Sq_1_2 + +//---- 10 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Move_Down); + element[ 1 ]= new Atomic_producer(Event_Down); + element[ 2 ]= new Composite_secondary_producer(Event_Move_Up); + element[ 3 ]= new Atomic_producer(Event_Up); + } +};// end class Sq_7_8 + +//---- 11 ---- +class Comp_17_18 : public Composite_producer { +public: // constructor + Comp_17_18 (): Composite_producer(Event_Goes_through_Crossing_Region){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new SIMPLE_LIST_15_16_ob(Event_SIMPLE_LIST_15_16); + } +};// end class Comp_17_18 + +//---- 12 ---- +class Comp_23_24 : public Composite_producer { +public: // constructor + Comp_23_24 (): Composite_producer(Event_Move_Down){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new SIMPLE_LIST_21_22_ob(Event_SIMPLE_LIST_21_22); + } +};// end class Comp_23_24 + +//---- 13 ---- +class Comp_29_30 : public Composite_producer { +public: // constructor + Comp_29_30 (): Composite_producer(Event_Move_Up){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new SIMPLE_LIST_27_28_ob(Event_SIMPLE_LIST_27_28); + } +};// end class Comp_29_30 + +//---- 14 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_Train){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_1_2 ; + } +};// end class Comp_5_6 + +//---- 15 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_Crossing){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_7_8 ; + } +};// end class Comp_11_12 + +//---- 16 ---- +class SCHEMA_Railroad_Crossing: public Composite_producer { +public: // constructor + SCHEMA_Railroad_Crossing(): Composite_producer(Event_Railroad_Crossing){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_Train); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Crossing); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_97_98_ob(Event_SIMPLE_LIST_97_98); + } +};// end class SCHEMA_Railroad_Crossing + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example27_Railroad_Crossing.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_17_18 temp_17; temp_17.harvest(); + Comp_23_24 temp_18; temp_18.harvest(); + Comp_29_30 temp_19; temp_19.harvest(); + // harvesting traces for ROOT events + Comp_5_6 temp_20; temp_20.harvest(); + Comp_11_12 temp_21; temp_21.harvest(); + // harvesting traces for main schema + SCHEMA_Railroad_Crossing temp_22; temp_22.harvest(); + temp_22.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Railroad_Crossing"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.mp new file mode 100644 index 0000000..c6c9332 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.mp @@ -0,0 +1,71 @@ +/* +Example 27. Timing attribute use. + +Railroad crossing example from [Formal Methods for Real-Time Computing, 1996]. +The system operates a gate at a railroad crossing. A sensor determines when +each train enters and exits the crossing’s region. + +The main safety requirement is: if a train is in the crossing region, +then gate must be down. + +*/ + +SCHEMA Railroad_Crossing + +ROOT Train: + (+ + Enter_Restricted_Region + Goes_through_Restricted_Region + Enter_Crossing_Region + Goes_through_Crossing_Region + Leaves_Crossing_Region + +) ; + +ROOT Crossing: + (+ + Move_Down + Down + Move_Up + Up + +) ; + +/* Set values for duration attributes */ +/*================================================*/ +Goes_through_Crossing_Region: BUILD{ SET duration AT LEAST 10; }; + +Move_Down: BUILD{ SET duration AT LEAST 5; }; + +Move_Up: BUILD{ SET duration AT LEAST 2; }; + +COORDINATE $enter: Enter_Restricted_Region FROM Train, + $down: Move_Down FROM Crossing + DO ADD $enter PRECEDES $down; OD; + +COORDINATE $enter: Enter_Crossing_Region FROM Train, + $down: Down FROM Crossing + DO ADD $down PRECEDES $enter; OD; + +COORDINATE $leaves: Leaves_Crossing_Region FROM Train, + $up: Move_Up FROM Crossing + DO ADD $leaves PRECEDES $up; OD; + +/* The main safety condition */ +CHECK FOREACH $enter: Goes_through_Crossing_Region FROM Train + NOT EXISTS $up: Up FROM Crossing + MAY_OVERLAP $enter $up + ONFAIL SAY("Crossing is open when train is passing through!"); + +COORDINATE + $goes_through: Goes_through_Crossing_Region FROM Train, + $down: Down FROM Crossing, + $bar_is_up: Move_Up FROM Crossing +DO + SAY("Bar moved down by " $down.end ); + SAY("Train starts go through crossing at " $goes_through.start); + SAY("Train ends go through crossing at " $goes_through.end); + SAY("Bar starts go up at " $bar_is_up.start); + IF $goes_through.start < $down.end THEN + SAY("Not enough time to close crossing"); + ELSE SAY("Crossing was successfully closed"); + FI; +OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.temp.txt new file mode 100644 index 0000000..c00db62 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example27_Railroad_Crossing tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.tree new file mode 100644 index 0000000000000000000000000000000000000000..021e238362b98b8e7b6e02296ef38833b4d3594c GIT binary patch literal 13312 zcmd^FeQX@Zbsv$u<=u%QDT<O+SyfJos<^Id^S;PCMO8(Kq$NjRA?Zd@6m5>YC3(*A z?sU7S4_8qdBQRXUbsSf91vfAfC2);EFk06T+#)qpwJ1_Y2nxd$3_~zfqcvPrFa*aD zf*{@P@6F8K-R$m>bo^J*A@<(w>~DVWW8S=--Q#o17;DF04-?IXaH5Ra=y$px+aTBA zSj(8k)^^zKjL{GX-keRiwiU;q?0}$g)WSG`WgYmlJJ7!qd?CnPkQ(F&WGCbS9EZt{ zWgL$oZ2aKCNoR__`I`@y_hYE1owealG#kb^GmM=qSHDWKxxpl6N60@&_^ymwj&XD7 zhfhwmc@*L3Pc(Z4uAc#}8}czo1k`z2T;u-t;`}-EuY~*oWFO>9kgFhH#c_r7U+S=- zPh*dDl0I%vzemq%V6S2v&B;$8X`cR7=uzxx#=R|Z*IVG;lYH+>+|5OBA4%MuMR1r+ zZeJT^f$)QTqGsO(ySs25dBx>#2<db$^T&TJa1{Sdf=4iT;zIG?3LM3M5R&4*Q{eI0 z$kzv#F=ro+0}U>UKQ%s2>oD#R#@`Kj1aduO9`ZLKOJa=1hK^Hy^7+}ob9|Z0=2YBo zf|EYo`Qi9adGL<};N?7N>_)|o$voJ|$F;fn?0geGJf)6x<h*e`n>_gQz+dp-<@|B{ zr#<+Kz+dv<<veO^ZrvpO>cHx<H^V>7<4E~rsV*<eb4ce3&1XBXqS?)P>E`cM;I1uz zbMyBGa5n|6zV3+cJx~6AB<%LB2N&n&FC`~hOB}<z1LA~5)OnncXIvuBxI~^Q{{0s4 zeTd5z$n}t)f!xx@oPjprn(EO#=--CxzYRI!&Z>x!g1Z;j4*>T&kcU;A#`G`QTUGtm z>5Ab@wXsre-f;45Y^t0;?aV-bh4eS(LBTyDac6*gjBt%Q%yCbvdWDswx5*!>ug|oJ z`U=_Her>*Uk`J=E{n~ubN<PTurm;7^E%JF8d#D0Gkk4Eqe}fu&8|(eN%0+kw`An^Y z^5=JPe!-970QsTtUG!s}8y>z(evF52;W{DL2Ur`pp!y)!hl0BpP#5I-P}b3X@cVKj zABqLja;^xwTjDU!9CvjQ9OjSXt_d8Eb3gRmSU4`Em)0yb`+neWO8aif{Qm&?{|m8B zXiq?m<J#IqUU#&M^`x~kr&oC4*0nO_&AN7$tIo!q^;{;LEx-)~;I>KJc8MDU?hx6w z`Kmo2>q=a$OMD$3X&3AIsI=plsDj-81oY3jRZ-aP{p9s3xd3lf@>(9=vy1Wm?5v%V zcBB4rJ*a<NqW(3{cc34S3;yPH&G%E!1nX_d=h}bH<!h=>v@ZZ3-xqjzHTEapr~RR_ z4xjhycJo)ky%>O#`K#bw4#3I$ZT81*UN<vL<oS=pSdINxubq~0#r>ms9M8Xh=J~{& zAGb3e=QqT-4j}pYoA4j|bmto65abQjCXM}hubq+nxG(wmZ%TgLw>aM|mtUT{{2!>i zZXRmvKeKk0cpLYZ6S*qZTrl2;`(-eW@}KYPe-(Vaq2JgZsJ{iTPk#$L>-y>8Xo04& zb6>Z&$@qSj=Ud3FGY;++P83H!jtw~O!6DbTa-ZFfc}w7V>h~b=4A9*8dfUNyJKVbD zq`<QS#~vKxqSuk@+sAt}m=}2*Z09j>lAUt>YV6O}(tQ;8hW<HRC;e3%uKxP^Y-g_j zJnzpy|L?=EvyeL>AIF#{D0^Gr&Pm+!z<qZC+z%!072qz>Y&H3F8GWzgcoWAvINrx0 z*IS64+p!V;_}0OP9iq--Uxs?0aQ9^z`^?U%a=ECnZ%mSep2j}mBX>p`Ge+x>T63P+ z!|>boV+j{x)+(|`V|VrY_yfi`avk!#056xjq{P0GpJQLyoCkbeheP5%6Ln{Yv@d|` zS|YA{iMZY+;`&rvnC<upV&2-Heih%+?=?%rtz9B+or-H|=Xx3U#r$`1i}~Z?Ja%gA zuaov}HSea&^A%@<YA2s`d}!?Ts68T{_o{Oh=EOpx-rgIGZ_ek1dB3n+;oT~E2R|wA z&sE-x<lWVZxA9!W>(GeAkA;{$iuJfBgxVG2b--Pj3ht=H9RqG|0bEt$Ea1)t;2xKH zp8#$QdhuN7JQ;v<?R!@8od@5A5a#Ljjx%RyUg=LX`vLG=1a1%HOORAwUlnoi;jT#B zKS|tA1x{l}p0W2*9!!Mjy^Y4cAENg*8v9wu#(Nu$?bc|&rm;WO=zW03J{_j_Fd8$% z^j<(?{}`rym&R5_=(!5#YsGtw$mYpCdncOh;QN@jp#MSG`8FyZJ<ncu?ZAHgbE<y| z{+$5)z6J0%0`U9EzT5ZP2S`HSK^ot*kEHtiF6=u5c}v(OL(QM}`1AH1wcow&O3wTF z0A6V1yir0l8r`utZ@=2#K!|Ugcih7}0XsK<7j@scM;%}1O{o2T-v7S1cTC0uH+ULn zKLoz*i;YA4{y>et{RNC0lYSn8JdE=rf~RgzehIwr2erO&e?^vg8|6DSUp=b$v4o>u zy8kM?RX^6j`k?0HwftDZY3zG{Y=4p7hhL9I`T6h@_7OTSEGMQg>+GT@S6T=4`a<jW z1mZ*M_7o(o+ebCj1I>?nR^rY}+y&q+YN{WX{I)qVPknkXOTH_T?<)AN1?asYaqmjp zE#U5W^s-KPrZz|Bu}^QbQ~28jN&c?s#J#4|@9(`5w^iZ>f!o=s`ukvjUYX~Z-^P27 zNsK+FV%@y<**7QkJ}mWG7<)FrzQ-l*35h!g-17mr7bWh8688#luX+6Vv1%Jd(vj;! zV?XZ|_4I#w#qR}w*(>Vszx0aV5d!l0jQ~F67d2l#zv;&kj<5eO!H#Re*9k+7SgD>V z>*+237zcSv&8PouKbCMy)lc(RzYjJ)S6}ZG&(-e;er~6C-M{bG?O;7n^VxaRk0snv z?F@|5EkCD&bw<sn{{ugka7)$SGETQ;oIVu%+)mt2l==LXU$=wxOU-Ae?Z*;ssdjSx z-n!3!Wh9nHb5Iwk`SiEpB~L(Gs{WR7>IjQ`(geQ`*Bci5<vxk)cX3Vo3d+w75*JhL z<bLD6sl<JgiXpcg)Fo;@zc>4_gj=fLT)%f6Z}D?FsCU$S`tR{$3HPz|W1pb-f3Kg@ zK^>*$)4$b^CEQZ=`{vVquYI4K&jG=Y_a9wifBZLHqW*qu#6C)O@Oqcn58v*p|E~LG zk3ZY|HahkC^lvM~KKsKJf_Htl*jI1uuJax9@QnoU)z|S|Jz}4p>JfZLd&K^HzNgNo zd-x6n@X37F*k@m!82+ND_h0dhI~*`h=D)_i_0s;~@z3%6%2AxY*(dH_FZ2n!uJ#E( z@AL_~Hm(wOj;*TOImPug-cKC~<Nk=FgyR&BM{&sc@y+9tVP;Qb-8?1N-FabaOWbo3 z_k%@nFG$>92^{V5>^$Wq{fWk(AKkj}vdp7bTJXBK*Cg)pBDmKj?&>1AYZCWX11EO2 zu$Su5yV8&UK%B;K{vKj^JB)eydvkbXL|u=+6dck$E-0?l`1~54yy(C`TzHy;_)_Ee z84tcY0FOA=@w0N=93R)%->r?{cNul8Bje2V6g>FNz;E&3WxP55VGn))_=E>9<IeG4 z_29Pyzr%x<@z>a2JXL?rDvEq@p9lDJ?w*Kv@Ax2>31<>q$0Dd>_<eXD^D`F_&t+AW zp9cvaO8%9AKLdOj@-av}mpf03aX#EL689a6d!YsHMTvV^;(jD>JpYde`12ZYw9mf` zxfAkr_;WSF-wE6JUmLPR@!!Q?llU9Jzbo<P0{B}Je+T$qNW8TGzAY;3>54L^I|_Tc zR&ST_3$$mg#BTzAbF{VH_eop^xNT8>|Kaa9M(C-qbyMzpV}2~nJ2eG&C;%t(qWS*F ze}6gR#}c0pcQhEMv4ItKEdYNk81Li#N-$1i<?cY<sbIX1Hy@0{`_CTY)!4uPgMA{v z?wMBO-dtsr@{M_$3&v6GsQK)9I2f<79sTx6u^-|2@Ns#It$3g8|3vndTJiqmli6Eo z#jCCUL~*FL;_YAkapIt{FDL2u6{QX~KR;SgvEM%-^tHtOk;FYJaQuESEbmj;PxEtE zy8U>*;{ABeX<T3PxArM{j^_a0?@H{8m2;Qxw5J|C>5q*g?dRhk@!+2gz)L@T{<`~< z?@E6!w1|s~yC`ulHO1u*J^Eh_&@Xwpy?D>9)Vse6z)OC9|M?pIeujO`S=?t9SzrI3 z=Kt%6iDpjE8S}ZYQM7dWznYLaU9K1_$8&{ZwVccAyQ^i>ER<%Wg;J$v=`)3*vAkTf z-0z`kxonwH`lY9A7A(W;GYj*TqM_%etwOoPDL0Is%28ipNcYj+H($AXfy<%EYOYWU zyGE>kplq1BHCHXyX6Ndr>Ep&MbVc@;PZ&BqGj#HA4^>v=tnz$eS~pG@CCltC87Flz zSGRIgMT4I<?Cz<5)yvhqQC&H)cmJV%qx!zR6O(#&NY7>>)f)Vw8Xcj3IMC_8?Cu&Z zSw<BGm{zqgZ5erK%Lc_z-{sX}nCq4tv{DUSxnlMoujNWsVWt3L<5Z=}!?|vh+|kM2 zT(w{#$n{IhXN%>jTv4AX=4QjY0npR>V3dD}$Mtw3Qg>2z4(aiX_?k%SiIn`B)sq8j z_8GYo2)5V8=CH)mdVEj`R3fe?5^B$op2)2JyvL7pQctJ+y=gr?cz3XSsjQwJXmKqa z*VBp6Os;4eE2neCBBE7y)QljVt2s)>Xg!+M6-ZTdmaBTDSTj5KS`|I1r+P#$<t<+Y zVd~H7@qv&rU$IVWqlb|U6Jczd_(ZHUPJyL_c)LBFV+Y4ahj;JMc8$`vuxT8x8Kr4M zn>el`GRuqQlgO5-a;=nKUaP<^@trOY=^4!|*Q(P-cg{jGP1P)er&u>88$hTiP}*W# z{d>Pvn8(u88v{(k3g>IW-Q|Lgn~I4q<qH%9vYr#IG>xJm7HI_pa3oYIVzFse!>kpp zzTwHqaea7V;(-JEC-rzzkEc9cSv@hJb|un!0_k?};P}Yi1H+S}y}Qd;ONCMnt|ZfX za&Sc+tFvx?^W{`rPbHL&Aw8ApDT*Yl+q~O#13^z`^}&INfl22sHV@9G_3Ys4+2&&5 zQuIw>_6nxn6vi-uV_H~fTB$ZaWmJ32)1_(Dm{Q>po;RH%#!L<&QSv&O)RQT-C#$Ch zl%7;tPYp)!c0^AP>FG?A-goGOaeYu-BH5&#O|7UJMXrrIbHBUnVg)mX1TMu+&f&wN zYDis`952c-Sqe8s@JOyF<9ae7z76Tg4F8rwTBo=PgD3^Un8B<*G{F0YlKPOiIy9sY zWmYzaHyhWpiHHTY+@jD-p=w&1X;3DGU1R%p<*KoH)ZKiHrZzTpI<}dY>=*)CwanOT z*|jk?E$<|;oE6(7K-ieIg!B`2gQZrXap6Pbqq|2(MkgZmoDXqKxInAqM6RezKqjeY z)Je)@^{ntc6W22d9)%3nUS{KgvK2E*bYqEOSs5{_9GfndO`~CVeNIm1%$Ql5o;FN# PrdBMT7Qp=fx%vNJc!Z6G literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.txt new file mode 100644 index 0000000..abddef2 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.txt @@ -0,0 +1,15 @@ +generating traces for scope 1 +completed Goes_through_Crossing_Region: 1 traces (0 MARKed) 1 events + +completed Move_Down: 1 traces (0 MARKed) 1 events + +completed Move_Up: 1 traces (0 MARKed) 1 events + +completed Train: 1 traces (0 MARKed) 6 events + +completed Crossing: 1 traces (0 MARKed) 5 events + +completed Railroad_Crossing: 1 traces (0 MARKed) 17 events + +Elapsed time 0.000585 sec, Speed: 52991.5 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture new file mode 100644 index 0000000000000000000000000000000000000000..a5f5958fc7eeb22fffa662ebd346a65dd6f2c632 GIT binary patch literal 222672 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	M+@Hx^+#^W#{oXM83WIUW;)MJ(-_!<7tnX= z-&9tqt!D9Lty1J7IeOMeX{ZyN+li63`C~$(p^k%@%5YJMI4rjMsp-Xp;5Zd#L|$9y zSGTP+{3ZxfErj|f()HCIz)Ml(BCaYo@W1-1b?%+iR}VaoE<o)3TlLiyyVX}~rLX?| zT<VM#ePcdy{9{ZHSEM*M@!U~gJ$oPp#uy}}ug;-pQeVAB@d&mj2=}P3wlET;uc9V( zrLXn}YMQ>9nYRaZHQ;=}{UA@z{33OAHm4OjsH;mAg$TZz_IhBF`i#`VbZzx~tJ91R z;v10f`Kc{dTa_L&5TlMQ8Gd`xSMm36itYZ4+F!F$RGEwSH)quDk!rHWxM+~wC=<?V zH#5|OT`H`1elwv3jEdDV3{&QNh9Ok02}UdD1jAD+gV8zDTZ`uibsXK-m@r(qI2dkj zFi{Q56~#|l?D<*~K;1BF0>w_vOGXA;{Ul`_P%Ayi=3w~r#m(vGxrR~q4+Jq7zP7;x z?%Vj9V0cGa<iVASj5gm$(AuE?`UP7XR+<NuYhI<8aPu0QAYDp7p|>y?eYjcA7E5j^ zIltrP0H~z2zbibi6HM1GH|Y#b?K{8(;A_;i@U^DGu={q^O4SqT4U6`W=8uE2@YBK8 zk{qJJw<OnuECa&qd`<x54wk2VEev{Az$?yXqb!bP!Q*_iXcl<1nt3F1>EkVe!n#Yq z={;4Qtn<n&XQtW!<&ld}08t{-4msXK>4Yxqzxn`Pt%m&(#)0L{Qey;AEX4=_c4hg% znF%9+t)iq6urEM@=|(_-sb-tA;A~+hfsXXDUnD5&_M}d80-i<WCk+%<Ny{Tkg3>4W z>_xl3@gX(O8$CH~Cukm9ru)kry)u?c^8PYYN<dm2w#o^dJz>c_beXv)&1Wmv*%_Tz z5gB2uAagyMt@*IAg4k3CqJPmUW1{I$=Qd|Bq)c3{#L(0hpq7{A`?LNmjTn`JciWnh z{9+6<4WYI_xO(`MIoJX<AW9ESVW7CDHR@_;GM{Rzp6;y#w>G7Yok@l(!NYWqGwk<W z>My|S{QZz%<okBaL>o-4r3{uEOic6!jgeq$(@FyUNDwa*7<P@^zmm7sCgswPoZ@Ev z#FO6&Mjvg~b8^7kyx9&IPoAZ&?+3%iPjnaK$r~@<7j&|j%EL`7&D#x%>~alTTodpt zD%K_e)4^1J+qv5;o~JBiZ*k|fREz2fRfJ^gWKfxdi3xiuKh`6$&y!+L<<j{wt2^0K z?>W;ZCnPEM)YDY$>WQ+aa;eo9>!y98;}i5ss7q^wc(mxVSxm4!0OJgvL^aW(w-xaZ zo}GY=__HG3P{iqElbW2Lw5JZY^YTXT`#Y^|*b4RV+BT=;5LIw_&~aF*$G$QKOFnkU z(}K&?w)sqj+nt96dl|4@Sh2^z+nw)Yw<e$4+#>@U+uSAi*0u}1>fLX)Z*2R47nASQ z2)_2>wB^|J8i1U`Obh4;=7>m5jdRPvLXG$6;-FJ(@Z`lcu4Mfk>f)MbV2#dmdI{M- z^3O%E?NBG%q-psY<L!9o*UHgX7173bu#hFEtpRoZQ79@uN)+DIhG0sy(C!r^S!fS9 zFOo~d>6N65^SI)Ktu+Y!jofvLJC{%>CgqsrpJ0@u=f>QeX+UiZ#NtUC&FiF%ZTmQN zF8sR*o!JJkv4FWkO#w&kjZNSw$vR!xZ~8J9g3fH|OLOv;fA5+Fp044>9H1|VIJ@86 zKSR?%_#+Nfu)kk100)C?BJ`J7kEZVLPw!;3F)c~qyIMp>T4ozDU!E}w=Of;_K^do~ zh_B&>D+rc(?5{Ug=)n!PFv8{xNg39ji~tNcFUkjpl!Vm%Lo;8d?Eiam1w*_{dmTn( z2iX%4c)Q<!k>ovCW><vYX{%=ahDpZT@z?oY3SP_%8&ctm1KM%Xt^%dC?Qf7z!<p=< zh=VS(kJ<irx_yIH|H8kA&QtNkA%JT;9s*EZolXI?J?O~|eQor2BD6=q*q!2ng#7S& zxF@W(+g*Ro>lJ5|ZFnQo^o15d3e-Qj98uuQi4dH#rDfs282gahP}~GY2YH6`fFzZO zSbQ!jN7h<N_==b10GnoC;TTWYJnW#=_FGe|+2Xz?*{7#}Qbs4TJ_kwY4@duYDE$-l zva^MQSA2=7{+a}z_6!dAE31~9ce6o}_}US;Crs77PnXOE$=PN81+C>7a9~AvX^#H@ zGO-rjLrj?5#q{f{Cp!!2d;AG`tlm%QL|%6c-pLt_mxVB0x77`80}iJFWrgqfn>NuW zF}8o=$@2j3BmDV(73)#iv1>?1l)qI)qt{hPXqaWF4(9<Lr-ZZQw1g;gPEl5S9$-Ji zCSc~=#i=vrO>$|hWjnoiN*Y(kK?_N#YQi-6P!{gAAF!CF?7_Zzg38nED^T8}f%RQ( zz<8F?7a3TkoeivOTm$P=>h-`Rga{G?zD&2U{+IUy-b=Hs((eCsxgXG7UDBm_6=Vrj zd{CUW9{@RN<{U$*$b#uIuG~!%*RJyKTTHBbVJZ)7I#{IVD~c)YAixU}%RJ<Fr7i?R ztfUj{eDpvzP{vO;8z^_F`;i32!7v*rM|ta6#+PlE_ocpI|KwMhDW*jFeW@<#^#W*j zO|RUEUC|2}s;v{*NV1^VJDJnP-U-sWlT!Givr{@C`zO|Nl4c;&X+LJP$L%PP>GXRR ztiFQj^aiC<Os8I&GtDK-*uQQ%_0Syq7-B>}w#jz*uRhCEv&|W5u#?P2cI@7CnuzIC zhw0?*pWKt|WEi7u5bJTWo30`n>u#@9yXmP^yNNB7de>}Pfbf^uWH(VfuTuA>nN7cN zml-6VJ_XUP&8Bwe<TCZFXEt4B_EFyTH(p9>+n9aEiJ}-qk(p*#U|~-8Y$t1BPPf}k zA8S5L-%ZqMZq?qK8tl~81(|BBg*iPKnK%bBF<M+QJ(y0W;YlUy-$k!lP}Yq+Yi6d> z>sc_~9liPlzldIu3@9cGGlwSl+})=@$K9vh*h*VE+Dh+foIto#TS<qH?R=HK`()QY z%>L8cA|J)_WBYbxFFCYgH}=wTsI;zV#9n%l>OH*&B_UT$iuLYfFWLA*qy{x7)uKPp znAG>3pPD)M?z5S59~=(`(W0N|`7WNFKa}!sGyjMUEB1Pu<8nPOSC0FY<6fKNLdDi9 z_OHsuyqh1>xn0lXNPJTDFfS(GS*D_{u~T2+45OjW!qm8foPgraHF54v(`ctRacOqL zK-I{l)wbVwh7=lpie1smOaEcI>GGlA%5=FiQO@xj;NHgC?@i4~GjN06nNOY>r*OM- zAMeg(YW1H?tEI9;7EfnauKpy;5Hiwk`iR{0z0wkUbc<Y2O9cvY<v6nh>;wTjho`p3 zJ)~UHZEQQ%#%yXE<IFMDU9Ot2_>L7UnXQAVDK-(ZI}?-vOph?&ndekTfzx~tX}?iL zN1F`Wo%0DjxEHup#$=><&m7E2^kP37+3HcOHTFI%=Byj5Hkb}-t3T1X2>4!UJ~`%< zj^zk3!!MBTt&~hZlJ1vgRZbP!>Y968K#rl8OGIrg`Wt_ts!t$e>?h*$gnp_LDf@L_ z4}0&2B9W(g<o<i?y|Mq#*?apQ_+NW(&-UK-e*X@8@1PRR8UI)8z2j-XSFrbXp258F z>?x8T5|ACwe;a!*QtZi-R_AnO?P%|<>x(4#2f3`hcL+~Od#?yuNLJSqrrCQXQ_8~s z;2z8*PL)oz=f75Jme!(6*ZXNNP&ubm^0|J8v5psf?WdJ;{A;N_{-u*(<42Z-$D3`0 zfOC6DX2<0m|C;X}{~AA46E-II_>RZF4%n-c!gj8rkm2W2tp`Rj1X*tW_3f~qb`Gt; zco}0)fBj5tvBrz^T8<~V`)O(CgL-g2NP@P5<A?2`xoM6c>e0+nyr(>XA(~L^)6NGS zp<d|1#M{YzoP-`TD(!qwFp`Pxe7S4p%}3?jqnWp>vza&6wTp*Pg&;w1pd<;^Y2(qe z^32BL&FO?X%$)1m4OQy)M3wJ@S%NATvlxUsj9+Q1ajo&Qk+RSDPY~^zN~aVhsT8|} z2~+3Ad$VU&zqri3#TvcRY*d85$qBAY76-#6@<`&GSS$ALn+Nu0Z^E?#>vNZX=SH!d zxpZYu(HWc2Xo%*%PR9*`7oArUwji$iyj`><SXqy+6s^oI+Eb&|gfG2|c73Yp>%Y1o zVG5qc)4#Zj_6S8g*f>2*HQStggWZ=l1zCVIXX)-sWrdu!!A4$uN&ALH(okrR2H`aD zO&U0>Qufhepu0N*=eSYg2+tsFn%!*n&x}3z*Dr4m-ih(o!ED~*+Jm2;q@LUjtvcI- z9<9>$>vPig>vwN8i%LuPNTq?PX7k1SiTa_{TFG3a6&UQ_6uR99ZFWbue-x(BEru_X zgxwT<R0BvxVR_`I4ThsHU(Dw3;<SC=PmDRrk`&_@kI*>Wa~ChxQo?eq*^Mj@|4cB9 z#~lBI%QV=Qn-Q4YpZkh7=eZqi&ZaJG&dJ8+WMd`W<TUFAoOc{=l4Wn|khP(k>`=4) z(l*D^F=fAQj^TkW_v`K%nUF}>pXaC8pKkfZoS)3M<&j3-`AL^H#=XzCk{~W$9QzI0 zx_1uTNTJx-08Q%e$$h|!WY-$|)tK(F%!K`F-w(6)Yg-T<V&@3BI9jwt&u{bW^wYl_ z8~co6U$W1S>iKCUet4oOvRV-jDdKe^oWnpCKtE9IZ7PBul^@#<(w^~C<~^L_J<RnU zLiS-}+kV(%)1BMi5-bd}8}*Q~pSW0nnc5qK0?Nr8RX>!PooiJ+DYKQ5*o9lZ4;s$? zN<YoS+a1FC{!Uy4PfCrO<g^jz;lVeAQ!L?bs#ccr6JEM|pmS5(P^YhIwr5KHji<|2 zdjYsHeDM&S0%W~v6OivZe-k{=KZv3(MCW&kix|_C&tJ$!iwMj=QV5thMLN*AVz_d< z8<FFk0t!1310k_zh=E&X8fan?2J~>nL8u}Ffo;w_BAo3eXX*y!K8lekd5gs`<p}8w zPQY!zR6@4_F_u=n=e9vMvbF6-FEvjsikVsrKCTIVr@?|48T@y>L4$GTmjL57xV4R| zOD4~B=PL5F{m!{!SW5e|oPtj1pC-UU|1}qbwkwlE#f)Rcf9>quJJl{G6&Bf<S^iD- z?niLq|5N*$zu)`6_U@kT-Ct(^JM7&7Lo`SIU$J-J+v_XYyFJD-t-OK<(LLC^Hx2fL zQL9s>tR3y$OR3YzqRrOc9Z3G9y<4GpWO5T>LOy82X9OM}c6lBj%yKumwn(~Lr`OKk zRToYXxitS|_PNtGy6emvyO1})^EcvK(x+>hW#L`Moy0#T$sYi>_{yX8#m*nhyfKZf zifZj8g$`4dI@>%irOKK_mAaWK?~R-UIo$cCqQUMALK#p8m51MKyWLy&CSjyasNd$@ z^+-W7<uTFzH2IiY&JD@($T70{vnvYU@;BljS%(!H3DEM)bcDiLXPdLFoNLF9IeN{- z9^Ck(HYe`f!i3;a@U{~?3Z^vY2<I9_gY|a^rO6&FM+!8@)~A#?Hl_Y8odXa`O^Xcq z5TNCefFS{$qHTAt!6j9(p%g;jQ$jL!W3!nLyxX&pg<$(`XmMHi^F(Xt9Oi47r&DV_ zcAiJ&@>=ua@m;j$NN2sG!FesAT63srO_E8JcB4(Jf5Ss8rBlp2_GS2SQlkF<7(Z@3 zu8Srg?mVMtnzezjOMYBs6TWWzxNld@Il}pLkZsNfgkAIF%Qoe!@#9Y^^uNiEV}-Vn zPbs78NN13u>6|=^bC>*>ZPWf|{J3$TSO0&EA1f18rZo9*r%=%}c`#v@{FrMKzHa<@ z<*^<GQ<`&x^DRZwoC^rM=EtB-`D*;QKZSO~k5hD}gt_oD)_ytolydMdmxF)NtlaOh zQ+#oD>x4sDgJs2QuVCxdQ!%OaYn{+rPhn0-@}(NhA^v?Q<nuR@zaW28`J2PvV*kEZ zFDEB~Rs{%F+2COtJZ*!QZQ$786B}qtnF4ZRMUZcUkv0etV4;RMx#0XVQ-T~7J8>DZ zelI43e5P+_(g077*c6OBVoI6q!q4&{cjS=*fiV$pD<b-cDsxWWZk}=W=5vPFXJO_X zZJ#&m`B_a8(MQw_=XiNBh(5AX&)?Gxvgjkr_59XO!C6w{9QP0NFxAPk55>+Q_95T7 z;60M)_g6qPIe%DthEDi?v(+!m8olW%*5&sKMjlT#rJ!R|jv#_noq*aFxmzt_Ga_`f zS#Qt|qc#plu}<skJchcLZQ`Kqn|$%nX4OoYErk9|B2cm|6wyLZ^6h@U*{KwqS6OUy z?(G0anG<lnYvJsGAXFhbb_HjN;LPp-N0}3F$_$)G#3`VqKBy?%=Bh2t34LXWJHtDd z(kJLC=qg-}$2qUY)G_9IEz2`9%A9QFaNRAub2OBIg|f+3|7Tj4P{a;%HY*K+JWVK< z4rn0%XuHv+1MzEYe7$4!mTmr~1?Vjvj%aS&l-uT9L$313BP|wvv5i4r3-652&iEe- zAMF|chxv|#hyNhqxEuU)lm?#J7SB%j?>Ne|t26!vNe};L$p!waEdDFM5dT*&RQHVk z9OZE7KM&};!@p8#;2*SjcEZ2F#&^cwAnD=XlU(4>a1#4yc<!10mwur9d*mPX{XP6w zvm~-R{F{{q{>urw;-4BD-x+^{q=)~h<kI>q&gE*#3f~Q#Wb}F&7MlEyFlUlgOYII} zwXH%IoSl9K^cy&KUWT)=!guSRSMkJ<+W8Fwb2^bz1@q*D{@)qy!KrW`r6AR&!=0Ld zd#i;T1a7h5p4i+O-m}Qk1fKJ|f>)e?cbb7WvjBMc5*~-LA7tcMXoNF_G|4dH>to8G zQj28|Kn+jx#!%=<zNCEhN<7r|TSG_p-QRQ(LLqh~|J?CyA^V$pDgMaL@prTQ8r#4> zFMpaHlAx!R=bCU`pFYM6?Rwr_d5z|~3GAOTv+fmq_+WSyfy$g~C*tHR91Ks;y!)S= zb6Yd>gpZl>nSVcGht)Y@7hMp|TFKaYJliDV-QZ!Nj8G?QX|B^dpfOOIW85J+*B;5+ zBg!Dnf?edta}++#u7`<X_Y*%?S*PGRxh&j+Q`))CZ;o)kyT#6Oj#B{u4(UCfO95LG zyPxDmfKzTuM9*AE)ZsApn|w}`(&muAt-p`z*HL!-GyR1W1gFKUJe=>mZ&01eaYlXH zYb>xVc5Gl&gfGu^N(?NoDH~00;{<xK0p%u?hetYhCezMKPg|UA>MRe>$#$+xtM4;9 z-!uycDl|>lTN**c*2C2bujaBO^!8WPh?JU-OQyY^p0+sK$w?+|audsDa#p`Qyg0{0 zi*J`<9qV@ls}cUI!HVz4ZtL!h1&83T@4D-*ll3Q>=G$HfXSWt-o4CmMobqtM`2}=} z4DWRt1*7|1b~OPRdJ0ZBJ9<{PaAi)o-@7a6smNJ5!SEOsNlPim7*A8={8o`GIj>|| z$@wK!8=da}*4f2BV?u{Fwwd!-ZU4}#w*bUNnaA>}Nj}(zkkx(J&X>)c{(3JkiQ6i| zyPW-!=^r~;yhw;%zSB%iPAQ}^fX($JZa-MxU9g5dXQzkfl>uf9MjlP-WH*aUkw=s2 zWkeCtM~!;9<qh+!LG8R~pB)f#TJ7^@Jzw;p)W}CQ1v}60FwZOXJoG*Dyj;&$zau!8 z*Er9;Z62mNo9siev)(@BI~l-~`muzT3DMYV^sB{~FUOgfhlueg<Ya(n3}#J{mC_rP zv1H0)0jf32T&$rjdnem@z+jp6gD6Zpl{AJpOe^>MsF!x+?{_G;C7Aa5!-VN!Z#I$2 zcSc|iQ7)WorJT6k4q`rI-1syw7=b?$2ZcAZ<rw`najz%jUv_EWpey)bv;C~Y`@zBu z_%Wu;vP%L7`>(r3r6VQzX4prvmT@7?`eOA?j4o^G7S5VSbO}rxu-q5W{iEKJTF%?T zJJRnPrgrYJJQ;lW5aQEO++<PQxzeK8FCp)f_m2#o2Y1ACg~js_|8?I<$Me-&z;mSN zkb<YdFr4)`X%^4v=Ax8Ev_yzThxcq!;*=cCF~Klik;4V1y}`%iG~YPo4%cKe1_Qim zENXx-&)`%#JSNBa>=4u3VJp=V+uTD*PjBub+uXfOrVVWeq|B%3{c=dh_KvpgJ=A~Q zko5Mpp#bl$z0Z^8wl_D~F=q(V=<qR(yKC<O;Qa;d4LH4Qd&m7G+1|rCwfAV--UCgh zJ+=4Hj_rL19)b@K^I!KmPbqx(8OyA@Yws4)-1g=t+dJc6)80#$?XJBCesOyXoI?a9 z(r+^S?)C5Co!a|H;Tp|4#$?)4dk^c_-kWWE5BFd9z4Z3>+CzJ{|2Wa!k;(Rc`ykWa zUwvnH?bW3J1^rv>3>1_|zgZeGE<Yd9p}nEev~`rpu%T@~SAR?A<HOV28R|)&9^t<h z`uNsW@DDy5GEhNLuj`Q+J9F_?Zx&0U!yo&GiT{ud0_Qd2%Vrwoq+kCVO#G|F2RCfZ z3U=EZj8roD6*v#8bhd@MT&1msa+_PYcQD#-6BNVb=uq$q<v?6WiSo7WW9|He<O_3= zZFd}}?-sfohrd=&^ld*-w3~w2eAwhGwJG39l-%GW2T_G3J}O$*!laTZo2?T~*=(OQ z3aJFOGLJQ_|0_#N&eK%mQLDMXiQlC7HN<<=`bcDo7TrU9heltc(k`{mQE5x9I=8T> z^+Q_MnObKkhexg0>l~-R{`Puv)&Nsqk?_b@4Q_AlIMT!)rT84T3RKO0lP!MxbjI)P z1CscyQ)!Fei$tq&!tdi7yTb22<w)T7b~=7fBDJB%E#C!?<*LEOuhQbzr1%=Q3gNd_ zh((L$6W@V;r>e9|zk`$b4Rs3(zq7l<Z(rp|;CB+HPYV5XFPHjuHG_xKFNxopfQf%o z@tcYF`nRve?{~y^!0#@VcJaGZr7iuw?-mw*5B;z!`h8nD68K${j$h+329IgNBd8i& z`sG;sN)=z=Rw4R@M7U_tah>t&snRZfuOM1n{66e!8z=k@>=M7<D@OvqSHMro6{l9) z{NBU<dT4vcRm$*(K@q8?Z?&QPp~K!w-6qR3=Kn_X|55Y*AuGr9obVpIoBgk;4$!*V z|JuIIRKsV5bDS6Vr|Qo84eJ#RMr#SRvexDPmrdL4enZLGd-lgaM|J$K`Qz_tTJWFn z$G>u4so=&RfBoOsw63IP^$#aUojVK`_?IS3YEwynN5(m4@*@Q!Wq0q%KliZx49x=a zmD`1X?tT+Y^1tk#yA;Dfema_y`fWY;|Nrm%=N=7>q374iKexVp3bE|^QbMmV-yN8m z9`E@hm^A0>=%2gN(6&qe+&B2OfH=#TPYM6r(~+glMWi@?<X=#pZ~jI9+-Ipg^6vaT z3b#As1$5sW<R=UCWyU}EP&dmcvM|>>-%ytK^skJ3Dtx30b1sI(1^jcr#sGYtWN!d| z!{plToJ(lqQv7rGa1&1^OpeZkJ$!aT!hY@ia}P2ULnZvLf9|jDpZhPn^UwWia>L@0 z-e%(K=%4!zqIJIKW<nOC`D{H)X!3seCH!;Gv1R`2pSx#pAO}Rhx_|CtdTFG?^zvu$ zAM(%rVNdFe77b;w#Mz5yD?|8x{ocfLW-ZM>_n#3yXBs4R*L5-3y%oz%&W{z30DFPZ zoB#K$9|b8NnZ#6&Z+l##JvcV6L{4UOSwGKyt|-UH&wQ>3eN$#Lt82QU$|h#YcZ-@0 zi;{ue6LU~%MtRD2i(XelxKj0CX<lSXVENcQF42Uk^{afm=y+<7Uj^^uMYqdB<f?vh zd&a1+sL)Pbc0yTt`4!0ZjRZ|MIT!OR68(}eRUD7AZl@CG+rEOnl&RL~Lmpl0OK)-$ ziR6D-UmE^()t7oh=C7N+l>PsSz7#OD?NVQ=?$L$5RKNnBGl~@F=luJh=u1bdJSxxe zSqis12MFlj_?Og|GTbb^$Rd5|Lqg{<<vVCETloD<A>ryvcl?Pl_!E*ned$9}e!DY} z+@18LKe~y1NK74|?*75oSYP^Fjb<O<zxq<}E9*-QoO15+dnN~x0FRmPnM5+W)R#g; zoAc0wUsYckY0LaqU;0<|rH{L5r2l92rH!gHT9mOrGVf15PlmKQOL*?6FCBxIU8jF{ zAt`++NYSLe^ex3Bz-}k(q%Rdn@9Fq`$6V7~qbvnGf8TLzz82+-lBDgnd^9NOO46Rb zNME`@`jV>DcOHMGhNOPyF+V&u|EqrO5wGk3Nh(aY?OtIT!`BVn)uj<HL9Y)IMBU_! zSBs(1Qo=pR<FBAEy+mz$(3c+2ji>(~^`*bG)9$a?`qKX|`qB<V+b;E`;k#h&j_XUl zKFE$<q&SQC_dn5>c7Cp2<@;}+DP(<}cjrEUCiSHk-7K$?Mf%c4Ww}<B$5c6mH>j|u zFJ<C?*;z=6r!Q?Zx%mEDA}(cp>E~|ZYlM3kpIv=#gG-e9<ObJrgB-%<^!6~<ZR>yN z`)`I~|J9eY?=z8;hF|6TZ(E<+jlOg-37)=m?x(x7vC?sUX&lkgmqrtQRedSjmie!~ z^snkmt)FP5|7Z23@2gI}|F$<W@6L}sxx)9~c<!h#UHx0l{{~6vOSwEH^`(>kNdW{{ zEup6`l}C&2uR>Geo7jJJJpq-3Kc5ne9=De0N#z4}nNwcdKcMJ_T^XSx2EXdwKP(S_ zz;gPy@V1h8-z{8(?<ODGZznhY%~`$KNtq^bxDgG>h(%70DW~55`};2izK#^==IibY zlrE}X5DNGLdxtKmsV?HdMpV>YcoHvj7tE?&OziQ;`%34{sHv--6$s6pUrkC~^~^zm zNj25gvy`t|Q0h(~vZt@-<b|Ob^N0-9&X`$U7nr@UHZXSK{F;Szb3>FY+TE|GFL3eP z(3}LcK>qw0wHHyNZ$O}?cHspxE|@!SZs-!Q=@}S*dU^TjXHN>un_Cw$6_~mL-ykbZ zsSC}h4UHb{D>`{reJ%g17tEqe*=e1#2Lj}uy>Q;Vg%{TeZs{3QO3J$c3nA*}&QiOp zzg<6Lp2_PQw50!8Wu<3N>VML?z9s$7EUi5K%*pn7a><zT(*7p}mIV5T=7#1~^XTh8 zDA2QiXvPI~yqxQsHmGNye=W7zx4`9r%YiYb<jktE!4iQ<D?2FAe`;09)H13H^!N2Y z^YqCjlLg;5cu>Gsz+cZm3bZBtE#-wv&uP9vJyo}_=eb}{wLN|30%A~qU;ToM7A(AY zf$h71x*vdpdY<c>NoUQg4vF$71@=z#W4<p?QF7+Q>RAI6X?r}-)3^8DGZt0X&bZJJ zXVD3^Bley@cY%6h{*1)|--3lnR;XVv%k)>5k##fYRL`Fg@Ksb+&8VF@2X>hms;{l~ zm4p_~_a#`U3TBv9KeM{FYQe%;)hY1?r7C(VG-JWcYMXlI>8DS&Pm>IA`+WMDHY_=9 zoSRtc<|>_E6S~C4ja|5~cGlblGeXr>3u}Cn=FF(AE}1t^&vkP}psIznRb}H%TFE!7 z=2zF%K?L9I8FS}V&+^sP&xH5us%9*hRh6J;T5N6gj9HgdF*vFgR4)$s#?{ZCe~E8G z^@8f!xiiNuTo9Tumq%ZP1zTm>=9{;0#;hu+Gn+a@rTGwGURCw1xuLlWF7#a>e&Rtn zW{Na5wL;;{DW_FkP#+2{TwrrlTVPeDr+jsnP}Sn9>e||cwRKgq==PcPyswT<P1MBr zsaiO@st#y#fiibNO?@a)Np1Da>bYe8R^7q{7O_Qh>lh<*FRgZ~sHv`{ne(gMs%9*h zG4GPPxplsaYw6)CMuad4dC8&L>S~{e({;*)qLBJzY)y@=uC{)Gc@deRORY~4)r+fV z)-&3mlglnC2u>=is4Oq7DleNfxoXJpsv#%(Qe%b{Rt+ymi#f5dYD9X>h{CFo=`n+c z4XqkHY?yCKoqEl7fa#fq=5@l9GR4-+s8xDNS8bjwaarZIk5ax1X4K7{Sp{|I)00lB zs-RQh?b`a8p}>OrdGi7b7KQ?gAoMJEaw%OrLwq@8r259P2EE2}>R>uv{bUQcRRKLY zK5GMYGZ)rW2ZjcGDI*KHzHq^;8MT*m7<)_lPdKxrGAKdQe-J`Qa?OXZ^7WsFz?<fq z7MOOqZxI}|u+}tyZbj72)EKR<4Y_FhX3kikrpzRj38F4E>!g!xnZUdmwHH>`210XY zEC?V<s_I~>`~hhYXDqm|+JhIEWN`Nd3@Mon<}-)_;){g~G|SCh5Q2ARhG614YMnQ) z4qmoVb!P7I4eCFk{PZy;<+P~(6b@Ya+P>8u|MuMWc&i)!l<*4oS@B){olCmfmXuhX z=?7MBUotzo1enci%e;EweBoLL%_LMcdxqvz>rTnwVWpa86MdjMQh$SoOHjfxo`6hE z<eBnDx^+x0oP_+c0w%4*kP}@wnE)sbbOjSRhm7##XV)2q3`<fVT{hcl29Hdpcf?6K zhNPr-rXcMpNQ!9XAABPH&RkSCV_p@KuYO*F!;}iVg4AJd27cAT3v62FbR!1#kZy#+ z9@347NKYS<TE8nWQgVzqy(UyOxN3-p(TI|Hp{k)(!_wY|SDl!6SN;)IBNOkFzFk#V zHCT(Z<_CR%H*5rdCXf407UUbh!m?0J)!@NZgWVcOQhu<cm@V!rRQ-b~?$%(-52wIz zQ^I|x#Bfu@!YiyA;$l!J{DzFE8se50{2_%^Lp=ly{Go%ZhPw5e{6mLU4RsMv{-MLG zhI$Ql>l;peCdz#W!QrL`Q~%HrRYTqS41CbF*!p~eH+*Q7MV2<Y<)O!k1||D`BJDfT zU}WG8A6{i^v*kw&t{UN@>y|%}_Md1lcFTj`i3UH)*H(=fS~Vi2JtGHKjqFe!{7*C( zyXC=$*~a!yZPm!3RU_T<q$A2`Ed`YBz7K(A3`qBVXkpbbuRY2?d_<L{kDESXc-4s1 z@*{^=jWq8=hD;h8EUhT%IAy3V`)fEwVf5VxR(|}{nv=VA`1yPdC#U{(J0xS&JZ_h) zrcBG<cg0uoyyLB1aou_HZQB*!N*H*XkQ2t^2;bq%{rQ9+A$ac~+<d&x_ssTP@yZi? zzGlqx0@eqLKV)r)_?DjR<`U*`<>P763ka7B9#>u_bKZFk;bnw72wMn?xj^I)HWMC7 zeOn11CT!-e*5`zkTnTFd{&d2Z2m@RtI}f2-Ot_kGO`tuV$(^s_BirM-gw2GNgavu+ z@tX+)1KZ=jRr;Xz_$PYDDdim6({d8!_M!YK<R{!*+#bK4a7Rgdd@Et`*!FnCzJ#Ui zah)lwtZa|#o<N`$ypE&%^}wTDn+bb!|8py0fN%%lFx>~efz1fQHH3|Xn+b1J_=EQN zJA{EBf-mhZARHt*5Ec_w65dEyL%5o-nQ$C*@ZAXA2m^%8gvEq+5KbqYC;I%TJ)Q$S zYHn$d*AQ0T0o*>6Tg5wJ^WE+7wS)!tKySjDd)woE{oqYlPFVR%@FZ*|T&Z}%^@?8u zzKXxEJw7sr`1|Qk!p&>xC&Iu3?eRAVR}vOLudRer2?Gy8cf!qtz4wD&4}mA)^oQHy zs|X8z4IYG*>!1_+aXF7rKjF&t^fTcaLPznBLf5|Jd#pV^i*P#OV!{@}HH5yF_V`DH zIfU6<Hme~lCfrI`L)fr^b`b6$bO@(E0o@M(FT!zzfsN!NoKAQnq3=ofR`Hw2$JvO6 zr>K{34dG(K=4VMK-0>UemrJ?Lq!X_EJ@^oAet~}Ao=VFf+T$U@%0I!sgewW(A#8pH ze&Z5z!)wrwaO)QM@DS+nI`M?l31<-o-lQK0*KDJnLuuFB;71tP0X?`Z7WgOhBy9K; zIE22>>2EGoZO)3v8weYE#^b*wY{B7s;0W;LLti1n&Bw;$ErbQ^^5q1mZ*V-mhH&eU zczh5yF^WgT<2MpE&y2_4A<UT_kB^4$YwF|i-rNgn#x2%)gbkO*<Ese+OXKm+_5PiB zyfP1bm&fCG5Eew^@lObAe!#NwQIz{}Jbp9b^gH759fS?5;_>36q0jyC`1OP}55?ne z5VjEJ9K-v=z$2XgYw#oVtpgvzO2XWH-XDp_rxNZUe3-C#eLVgV;a0-H0Nx*s$EOoE zJVtv711;1`xMNd1KKWSid=@+jr?YMO2BDAR0)c_#`(r#_L)gM`xfZ>1X1DJk>fI8L z&m!FMdOW^X?_5*JMh-M^k6|id;GKAUmEO57JLd%Q5w0QBPi(4Rw@c6Tbz7X%?U3Gk zW$W|Yil<9`EBm&`P1bRHF_L^f$mScyU+!zj)(jr{<c#l=d#b<J#n}zMQw~1q*r9p! zh%J8}Vc>7O;-;V?`3Y`_zg*%2D)0W3X9a&P*S5#^N{L&^^LpYCXXdATYx#SaI7Es0 zDeh_h)~3X1a{LQ_Yl!<Pp>KSjoE6<m`s7}fQPL-{EVKLAo_%sl`s9r1lRc)_l9Xq% z3ZCvG=UvwxXIPkDCI1HzS3ukcikaFcC)#~XpWGE0<N5@y${g1xe_7VJJ_X$;_3V>R z4b(KoKriW4)gfkLuTY=tjZgjdcd&%70hoUQW{F^y_sO}c`?x;2%QD9I2~->WO8R7v z-T0KnX*GF$&FSrKA?|a^Gkut!aDR!oPl)qqrap6sdy=~p%ayBC^;D>y)A|Iu&+sZj zMEG*L(@y$)xSMZT_lx>uE1thWq^$w2M-#;r6SqDkPIXNtE*}^bJlndU#<Gkv`vhve zs(b|`T}Hl2@|CCOJH1cfeA^*3eqyh(L>a+eLz#JB09*X|GWo`VSG8c9zK5=E-(L#! zai()hd!1pR!v$nhdvf5(%Tn5-xIE&PcZeHF-1RAO!mXUR0Jz=7a|aqXm>Ox1XdEKn zNcdl6eDEOAU<hyV+DzICV6-R=4q738xJo>>EOP?v1!crrmUByc`NZc>Qf6vwm#vpF z(e4b%72<Q3FDLXV?mo2x7nbz$RjQ6mpYI*U$WA>Qo-R$4EfG(v(l5i)i!D!!UXy{j zoHpz&nEZs}9O4>@Tc-$G8|^+JF?LKnWqm5UH-jTBO&L4BAldJrY!F&!5~}QV-QkIA zGsg4@L^H?q$zPFG(x>369wmK7F57EdpUR9|GJ5tINfcno!Vt9sG1yDE?EuDl@Q@tR zPq<|=P(Jw{b9)b7%-AseI-yS><GJn$P8{1SV>ysTdUY5BZZg@6DXadPtFd{SaD#r= zYWzks$EV{qo?eJ{iCRgo?!U0)d+vF_2+tdVdq=<a_%%H1C!StST!2f4rz^tnG<aT> z0iMe;F9I{7VB`tCh#hMl$tL=}LAjBXyNNMj=?76#>4)69s>e9dZ$h7%j5)Nq3;LDx zVruafK%*78?eTXLv>LllkBaLuuFZ^Qt?03AuZ*WMdNPH;UC03brjxH6eOU6;;>?J< zDq|vY=K)L1QVnvSWWWmY76;nnf9!4ZUf2D!bUc&&d|ID|ZW*(Bb&2Sys#|lHe%&su zEH^XTUN=>r?eiVt&2QrUJpR_8d;bXBGB5l_*R&~3;VtUCuv?dPn)Zr5`lZzQ{#l7S z!FbtTSM^wt70tXh<2rSPcu@UX`PW@Wre?m^pEuiQ(zDm%pwUV2yy2@P&nNqAe4pvv zuk8{m=voZCH-I&DNPGMc^+9D~-ZJvRjJ@ukSgGR8SYuPhpo>pF0&>_;7ls*wNggUq z=kp2R^SdtbflA`X5U{d`G3U8Fah>MTuK96%pBf?81v`$jZPUDV=nv3uk%5^H9%<Tl zZTIp%xlzf76`8c}D#?dsJu=2IdNnmCB!W7v7<@FZEyqTQ3WlyEL!;fm$n6S70WfNS z@zTvMFFj;otmqz0%sCm~gmEN07@?|HW8*ReWbv)-@j}|*J6&@!`Il)tXXJMC1Pw{z zkyYfK{FAQdvqeC*^I2Kie5P_+DYxP)meU-Si*ofO<s=`amn`dkp_wC<HjFffwDE4* zRo&}Nn)ttxv_n@S50y4Ceg5h`(WAfw)E~>|4dg$M{G&tz_$qboGQ6qz=i?4@*J-^b zrz=^YNb!&8zslR%;}hwN%n1S0kDYicDMK_@T-Nn)9&cpbq4ZPbPut^f13N|DmKpu= zo`k?<l-d3)=OG8%wnX_)P3Us;=M1kmgVN<R1{RZd7<rc{uW2`I>CV}v-O?pb>o6Zq z?1h?{s$5zb_9U?80P7^dO3q)*r1QOcjjVfzd<|caPq_8%jeb42J-*BB6L(Ha%AO<* zCqToEUDI%4uhGDo4y<zOyiK^l<JW4eM>9$jW0Q6+>(RX~ePm9Qdi<R1hn19HPx<XC z-$Cwlp8LE18d(8ED40I=Gr56uhiJpw`+(oi+T%ZP;k)>CkR9E>la8Oyr?!oz>>A2$ zP}vS`qoZ88)BUFOvZ(WJ+b*Mg@z2}i2PWv;K@KMA46k<o+gEMdUx4qs6R%Ff58Caf zZFi;PXU9@5>oAR!y;8W*w$yQC<h_}HT%D^pqq1991THmAeO~&^9N<04dXG@jPqOJU z;#!ECq6qLywa+e2$h3*lXRP2PTQPrHD{?3|*v0Ky>0GY7PtrXjqg#5zEK^Zl_<RD4 zH-3?hPj5f+lDMym&p66u-_<ofu-sL$3z>iRh|h9hWU>yHN}rpF^AYz|@EJsrmnfG{ zxi2e&Ga<+v^8bjkd*G8gD~%G<rxeY!`BZaSC9u{5>jD>6YM*vLE7_64^D=eB>Mw_< zV6P^BG5Nm;w(`DA-bV74@VqBkEFCbDwZK*6-IM$jzJtiuLcW^>Gs&;UHtT*_VtSWp zVCJLq$gefc{oV21N%k?mk$n;9ioKAa>#4n_TS{a3S&a-`M{;>J@O<~S$IlTwbd=OF z*@Z0pX_tD_gkF~afz|hy?eU`krC&LJ!$7=%xEG`coq(19Me=rf#{X&W%j4@Pj{JKx z8cDWn`ROpeK^z7jNa#sEq$DJgZP}JjVHxAFB%|xeenA(~ld-dGRvZC`Q``na5LX~T z5|a=xXT*I5v=|deAZrK^FUO)KKp-6YeXG0ry_wOB{A^5i|M<<v*37G^uCDH`uBxs+ z=6V0I!n{o4_XNaH`+l7?zc=~vJ70|r`oY@^i0{_JA5Nu%_4dqLF?=;2t*?0d1iXES zxbJu3b?Nc1-MaTmUs4!<lZ{${SnzJdj;C@v4~YxGhk<ywEcc?!6FiWGnJJYX(DF=C z3;H*J{&vKq--cg9<@Td*&VUtm<xrKGa;68gAT#9w4~TpgYO9Pqlml_?3%Cp{TZqN@ zjInD|9tx@t>U*m}Ycpcw6?h)5@73aUH*jwQ?t5G|&KLf{d8wXp#WL8yi;(Y7`;PH* zqwkAFnT^Qf4dhXZnEU&XYhSskijVOSDKQTsnMNiUzB`?Wd6_A{!;6JO+=zM9->D9l zjfK1;R-a`5yaCjPIwjB^L~9FZz3>QPXjCtWzAo#<)7LTHGOq~o!AQlv0a`C%j-UX~ zbdlfl31A-r_JCWa<e0EZ#WKsyzmZHqHNgODMbwV8voHs-@k#gwoc4T*H?dDA?XR?V zDa(|o#q}Db?{*Jpab^V|P@r*DH(x?90F5VGnAwdyZ$_S%JpJY1uPIMIe*}H(%(O)m z!&r*(Ct|LpiylT(J%&bn2Go9!B0P)H*K=7Ji!)Q+_pSOxnJN7`46`_^)-_r`1KA#l zxt0Fke>r$7;wcUuWScCeF|g!eDe<rbvikZkJS@vJcLX(=x!Fi?QSIVF$=My?;}gu~ ze3=100`;Jb=PZD1oNR%Sp`B)t)X@T}^tL}GEwh0(h2&xxX!X5<xyiU591@2tO6gDy z9v7*~OoCvH6o)LyOj+jvRc0;#1d<q+6Ed>Z$a6RB*fXzwIrucjxv4v#)C227`l^ev z1`P8_>fl3r-eTR4zXdXjF}HOy*_xXa%^|+Cl<@@=hPoZ(XlUUKEx=+c{x&1|ZSP>- z4~|{xS;O(i@wYz1Jby$me^lmIKxWG)nA02unp=~g*^^>^C(V~8ya6RsMX)h3d@kTm zh{0)^{$*a21s2J+ddn>9kNk*JKr172aPWKRtEs0a!C$*sMV(=&jLyp>de4B~czomT z2x^Z`7d?Ob)NaQ7ZU1~p??cROzH}Jk(^UB3<z;DBk72GF>05Vl+`kbd7GN&)<`CvE z-L}(jyiDV`ouD?<iYy@!_kmYtBAVp`N51Rve>d6BY|ML7-TXT`gQq;whC1yV1a`51 zWiN&L^KAvVV6v~RhRx_5iw&4ZBCnF6d3o&8lB}L|vuuKI-N|?<we8KIc~!;W;J=Zq z{Hv>NJ@prlPs<SOP+3`!NqvLt+B5S}A2gmiF@WA;hrRDd-^lXiQMPXpXfA{8*^XH3 za|eTF18B+^%gWJdRgSp#tEut0H>yWojyUjtmB-`2qtZgq=_%)?ooAh&dI7m4XhJz2 zu7CUs8B<FwLLRuNerUe`gjJa5g>0oBs>>sN)g^A<jO(X7<u|^Kh#Dt)v~J+Yn!&-h z$;bbjs||zt62&}y)a4@Cm)3*cGdRoVBBJ-Si(XLsRk42smFf1csQtEs-sIy42ft79 zJS;t_&yOJm{A+&(;hihF9R<5I?fZj+GfB5y<KofJpIShD{+T_{tOd=~#=*fK5uZC; zG(F``@cH~6Xx;&uMe7F#!(_{Da?uRrv&CPpOZ!9Zoq=K8<dX&mClR0S_V(j*0p@?E z`?I-J_OG>|_ik)(@G;`i-9CXle#4(fX?uvr+dy+Y)@n!|zo}&$4xn>Rz&Re<1CO7B zUMbdmJc!tGYVJ^ao^ge2@B96EjMpQri@D=m=JE2OG(Ea+*m|6XGH-+~IRgg_Rp40+ z6Dy`T;|;*Q8MxOHt|!izh%W`lP~SlM@fQw$Z86jZhk!rOzl`{U{TbpnpzRRnIL+-M zshD{;(vG?)xq7$_xJAI-*Lrvt>3fm>edcoy@squdB`-S^{9U|n^+4wuUxKt1#M>U^ z;SS(#2kySs!-q&e?UJvj9*zY2r(n(3cF@1fK>xcKhFIE5*esgcDo=SqManRV4x3a9 z{4)*%KUj<PIE|~M{}MRAPxB4a{KqpZGgD6Rvs22BhOpl3lC6V-za~AH1)gL+7@rK$ zG4XNJRDV5Kq2@I}FSU1Y@D|d8<%%A!X^>-RjDzKRAafEFizhBqiehd=;4Sv^y_Xfz zm#-l2mylNa1g0*_zWW46V$I#nx3CT0fxx)OhfL_UxDPh04L=3+KKTXP@L}mCY~ye? zoXXq}nyJ4Y96Xq0>L$(Oux0KW&JW7ZM_dH-q~CI~rsrpKk}GpN=*_y5%RDT-<jedB zXqID5;UQG!rJBcK%lzPQWzIVo>qoFAQI>g<rnm29ZUnt{tYMVC+OYJJFLMu!<KzX1 zu|rn}%b}#Vh<v|-@xIP!eEgjOI`2O6#o$TsD^st*AUsgEnPzXE`DHF>&L0xzlVcXr zZ*)0)`_Z%GzI|42o+n<Tefwwb{bFz`^jqpm^jBQcu7kJ!KVfY;K&h8&9Rl6wnFltX z8RgL-6`4?(@^bL;<5>wlicYuAOg+~;FNN|ao=@ugVvs%~l=_2^Ot%1kKc9}dum=a@ zYvg!cmGt8hb9{@{x}fq_U*$^l7tDaa1v;d@^+may0C+jp<fH22*WjR${xjp(2G&~O zF*Ofqa9=<n^bJugKL6YRq&MYE<HmHXYeR{yO+C}NGF?1s0sc4ZEaM+(qC4FJ<kED) zOt*k|Yr2J`pmVgM(?@g~g!nQg_vJM4JG0`AG;w?C5<Fi)WF7~ZXVb(BX%-;=nPvff zGZ6!U(9!KeylDK=_&7yeViIiYRAb@~@UX?Oew=Cy5bWAi>#kJs7%dw^&s5jo*6GH< zXA<*&G^`8LjkAd0x#{$HOS<(yy7)Z-6uJxd+6?3J47|E3!@}b|8P>BI;#C4L?x1nV z<wW+jl-<^@9C3e^^-!+(ARCaoa%%8+e=Z)0&*{dLLoYF&%rO3*nzJ**+?i%wHNyNn zy%f)vk5Kgf4dbC=!i^Yfr(Iy|oM3!to@Kl-!Mw`qreEOn!*S+sGOTmQo2O^KXmpP^ z9~#s8<OFkPw$(Gy{7cTx6#RH;>{PtC@qimB<!KWR$B#!QEW(R(CdRW7yTg>vF~)+K zR~x??Yh0gpyYbLC^P`bljSmhmugQ9le!Z9-!H)}bt%nXU2Xem$$REdAfP6M~5uV>W zfS&Ikm!Nrxq!~62n|_XQ|0v^PYt56R%#TJ`&y6-O&-|HzA3q-r?59RsctrJ~xL89@ zd>m~Q&&8WH)+?rQj&ZxO12^*<PnpICrgd|wd10z`d#boT)w(BDJWb8|61Oc;p!8FX zNn5EAUNfvW(v3c9%F{Efi!;P^iIyU~DMnsC-YvC$m0>)bVLg!{{@_3u+`7dy&Nhp# zGd?`l_(ke<#@TDk=Q1ufZe3$OG}5|ejrropKI`H&=3Cho5dM*U$Zf04(+;qHy4L*V zMC<co%%>(<XRb9*pKP7G)_ilab?I7jFyFfEIP;uCtOt%WA3Vf*>NxZIL#;24Ge1AV z`t5P%xznw4jx(>DZe5Az8P*$X%vWbx@2xT4FMN>lJTGkRTw`8dOc}gZd~3?UG3M2? zt@Br#XU(y$UTwZP*Sc-B`F<(ob3qwV{rFqf^~af~ecSqYjrqrKTR%R|-1Z%U_kV|Q zUi%K^aD6$w{ivMYK3+liZ&xhtJI35HpK`uwfwg_LIk12*@2e#G&n~nsIM#e<G3EHl zVk-S<Ro3apnh#f5yN@*=SZaZ*_m<JydzV|NufH#^2F|XP^!!LQ;lET(dA(mv`F<v! z&pO6Jju#(8kav!;P}G}N5uL|s&^G;R2=MS)DmBZ<w~lhiNTc<+X<T7EX#CAIZZ*I0 zwrO0HYCVx^-kxgxN2+)@)%s(qc!$K}6OW8k8Rf5%jNG1L-7!V%Hm&QX7=x+S{Zqs} zY1XY%#O3MM6;njth=-x-&YnVVFPK7@JEkDf8&j<N4%FHNdZ^%svmTx=J~o~*?wT*I zPrJvsb-vi0aSUK*Wc}I#?6rxX90Ays^XUf?q*j26lvT*!p?Genf5R|7Gpz0uaX|`x zD|Mn|`4Zyu6$7f%IF)4i(RAy@bn#|FLs5M!H|DE8^NwX)W>_y<<{2qPuUp2$ruCs^ z-j!<M`5fyT{g!cMn)Okdd4HPqWtw;;&3Y|O45WeTc}!1sBH4$op?v>pSXX2imr%dB zJHvV^L%i(hBFOg)!`M`Ymp`yB8-=cF-9OU&FI4GBW2ZUex>3d!%er}ld0(1!`v~Kg z=@uXtXIS@)Fh0s4$UidZ?U^G8|C|w&_No!|_Tv%O1tZO~M_M0enmb2YzsoeQ$h7Xv z6#bdV>3=e<(?*F4N8ynrg8RJY_wEei4q_6VzMUaHb@O|bVO(es!%^$;F~&B->K|ji zonrlbjPZ_Xy*|b~-?APUW8RuJ{i%@gUb^-281u>z)^EocH;uHO$TEMIY5hl**+0s{ z+uw|~{+MN4nniD~%p%O6Wf7fQvxw$hS@d?x80+dW=9gov!EE!<ko9r4cs*qOHrqTc z+d3;-Y$LnSljA6etasVoyA5k+x^X)-%E#%}SsCIocRBhD<F~RLKd@fQp^85zhbsR1 z9OHG<x;)2(>3l!S_;K2d+j5L2(yf2wnE#Vuy_IFWKf>CXV_utSy_#iQHOj)<(??ss z%`twQMUV@#2<Nga!r7Wdscy<5I={&x%G<Lj7uYn=e-h=+G0qxeZOJybj<KE|WBzK4 zb$ZDBUC6pN+dMbhx+Pl-WLu}@h%cy={W;c8bIp(Tt*kE?#^c;(zsRFDJ3ZHYB?a6W zFPqj4dFE-B^<kc|)3V;lGp|jX{!qyHOS<)H$h>HT^>oO%V5GGr&wMJ=dLd-=j<)dj z;w<a#kg+4nx--w*Ifme`p#&l0tud799h520{QDT9d3uO)*&L!AF9}hqD?*gxEg?#~ zCEI#4+uWXQou4C~$+mu+WA4hf{*YrnPsQAtYn_&7zLINwnkz0Q$7$<WYx`KO#I&7C zrmY8!%x4ViJwse5U7SJVM^FZ@q>Di#cSpMDOUZpI9llfEgXv<6X`Mep++tdIe#*@K z@d)u32*U_0wY2a&Xj=ECiz`#<?IWqVyVJz0Pz!0|zf&zdf0}B&k|xfv==n0s+L0!n zun6-5%L4sp)9Crm^ykp!pufrvK!M6W&v+|G+&J=-S98R>nHHXRj5-CYAO1G_l%Jx^ zV@}zUD}EC?<)U1%Bm0#1bHsVt_t}%q``^-K%-4zQ{>Lyjr&#Buh^t(>_<x(P^&c3< zPg1P&Q^eK(C-~ZyYTTGwTO_^hYi1g~#z8$Z%{Ps4r_MBQOv(LZhWTR3g~l&unm<mp z@Z;{(+`DF)@1>q?yg$RdG|j?~+tbcA-kM>)o=)#C%gFu14D+dsvyEqGm>-O=@Z<cE zXB&^sFz?EwAG<QoHtw5Y-ZYw!Ul@JR%`?m^vc_F8!+bd_w+AV*tW#&0r;oAlynRgG z2h+{x$5?-vZoV<b!t?v+=F`oyL-h8yp}a?@o6n&OPd8r+S$KXoWZg8~9F)&zXIopQ zoA<(no?-6JKIn|;<}Y%_U07hgmy^4>z&sQE`AGBfTno?7<mSD7r1@5^^`|4vPjW3h zpPpwubENsxJbL?NUf%sjnt#c&etD$%QJ#h8?y=UDN17LprRSfHwaz)xd~PgZem>Uv ze5QHMc<a5H=AGlm{duPO@%Sk_XPOU9nE%*JbNfUK&#z6)8!Rxdnp81RU|ulU!t=e8 zD_$!w@0vny-<y*6e1UoMffWxIm|G9B@cj5e6?Xt9pPv7kUvXoB`RT!gdDS5ke_Lq2 za>%%!6`ETQopN=d`M{yp`Gscxp%$LcI4pNZp?URT)+2@HFAuZueD`72>xJfy!|3f< zQ*%F>X7*0C-kN6KKGnkWeN(L`rkT&m=a;8if0$<e<Z!~g<?zvWOf&B}eDsae%ny%% zsvtvs?o_hV-!oP{W=zLsqfZTMdy4rw3G!c4th-F}^i=G%FgK@KJ5tU6Ots!fHNQx; zPP5FdmUW|L_Cgt1=BpO`81u0V>*)-$cZ79U8bpN2izA8tpmAr)*qIogWm&r?h+kz{ zR~;xG%Cg>_B6en3JqL>2S=N11#AjL783&5<Arn)?wPUPLrieSnST{@&kB_nLI8gj? zjJ0cucyEk#^MRr}WNn)wE)H3J2a0<`))Q02vmtBC6al$8cZzsB*Xo`k9?7#loGkv3 zXYHOW-p;dLnJm7@v-&5Cp0U;=lg0H=`;*0;W3AgJizmlgy_3Z&W35Xji}%s?lLZD0 zpHC8(9$*bj!lD`LjY;C(1FV-OiDwV6o|z<GJHYCjBtAUAx?_?!Yn*lSByr_9>#9lO z7vrp+N!XBUoiR!57-xMlQM@(IdUvAubey$oA~yV3FH98IjJKYcD1JTOx^JR*biB1~ zqIhY%b;CsQ&UkCfMDgW#>)eUr!U<OQL~+9e>%$3Db=IMun9?o%r~PR^OJ$XRvbwjQ zsqRG#*NpT$hF}P;z7@(bE;7`;+k<yA<CXLKAiVs?nO-W>BfE^tORtpix=&E=djjw> zG#<a#`Ii4gl8yiAWB#f={Dn5hQRKr$rdLgydvWy!<lDn|`DYA|cQfPd+Aus`ALA8u z43GB`<Mm!YJl+7~)pB`5DGJ|P&lyjs_Sh3%ev){lN#a#AUJ>(E6j0CWlf>&z5^qbA z{B28;-V;gE+m$4}Pm;t7J(*m)O-mB5obmS59&3}N*PbNa<|Om&O%iW=l6d_|^0zxl zJn@ujk3H4j_$2X)lEhogczf!<wMo+3m?U0Ll6W^K$zNZR^j=C5Zy-s$jHi?9NBNA` zw<o)mBwlrrc<YnI>rN7HOOklolEjln^8f$&KU)La)+zbc4EFQyZuW;Xd>{axv0kP3 z;^zmz%LCxG0q|~y4|w?L4Z!aUfcG;zULO8k&3=%EhoY)HUU*ReygC5h9suuQ_)FgM z1i-fi!21H={S5ck*RBBgKmc6)K-Ghn&k)1C^z#GoivsY=1K`yGbZP_O?E!SU1MqtS z;JpEKwgtfZ0^t1t^mhfo2LkAb6IK0t>p2tv&u6%|y@~?x%LCxm0r1)Y`t1Su-2w2P z0C;Zz{cQ}_<3im}`vTzo0q|V`@PPohXjb*_%{LSP_v$}A&h(C_H2?apMqTk~B|W_) z9?DP{`u%_M?@>BowR+I|T-VYj0bE$JDX-r9)Nd@Qmlu}A$_vXc<+YvPPv+lDUVQZB zU>kvYIo^O6j=To229z!={Z$v%f6>KY@mH+hqKnoF)1~vnGIH0Y!x-bARs5;H*#FJ+ zXdMJyIBG*)dd)*SE%d;p;k8)LO_%07bh!G>Y{c`&5-)jayw3(z`B1MC^d<kMbL8m4 zcadcIHJ>=*Oa6X|8T*ufSLudP$@bgdjAwL>xJedqdzbUQn(wuIZ|8eA-+TDp%lB=3 z@8f$v-*@qSfbZfMm2Zge`Ft<pdpX~$`CiNScD{G>y@&6;eBZ|RKEC(!eHY&c_%2p) z{(R5pdlBEu`CiTUTE4gQy_@eneDCG^Hoo`qy`S&9_&&gQQN#K3J)iGId@tv_yLI;c zS4O{T@AV!(L{nTefBrY}ryX10)f(%{FDoo5EGh`k?UFykKPoONESfc4f#vEXMN7%L zj@aoQq$%oqEgn>-%P`Kv^C;@tSSU2)O6dT|s4=_*jjK+;3)xYO?}z9)p&U}vyYX8X z*~ZkY+)OiTQr5BKvW*aUNhvhUtZ!s~GqWu7hzZ$7PI~$H%jZonazSa9&~K`8Q^wsj z57?=PiOkGzg8+zi;=d_q!4)Rtvqs~uj9sB48ij>Nsehdv4M#Oc>(@0j9EIbOo1*KE zik8p;s|_8orn=5pOI>VzVS`k%mLW!@=pvargkhQH$R*bJG(4nzH#hAx%QzmfC&Osj z*wER5k1!0I!%^-Gj;im9Ha8vxHVVoL7I&U_d}ST~kWI+1H<r$^=gcZ-j<$AfELhjt z#hi=INX#Z~ZDJRn3h0ckYsCiva9p-nwBp$O`Qf>$$@2?Zn%i2}6*RVW;jHz7(jow2 zU9FL$<>BJd2K=Pc$B#xn1#@QQ7p&9&Ru<<M=>JWURh&Z(KB(UE3z}Nn3UG{n!-)kr z7@Cfx$0^taP3=SvTy1J?Sl`js+Sb)s(A9b}PR%ZmC%t##rApM$T-Ui?C&g*sc+t@0 z_)X1+Hr#Y3{y6R_;=-7QoyzY<0Cq|0$nx%kuhF2h_!Xfm0*Sx6H8oD+O>$2r1Y^8b z{Ej51ND*{So%b>!j%$74sp1r0xD~gnPFf~)9JYUMc)HMb*A34Q+8(*#BZRhNZum%{ z?WG%@DYRX6!{KFUd*FCsiqRt97oH`mee|L!#)w*9ct~`waS-N5Q)CP6$2i}bB1eeY zp?1*}xuTZ+F*kmm=s(F1f2=6K$`5`3&ZPB&j}zKYa?>9#`h4*x2tWI6iitw|J8nAg z&RGAu;gdzVFMNs<E&gl@?d8Nl^1&2X?Co=zBHsr}%Jtv?_#pxCLj&N44S`daPZj?& z=zW11LG-SWsNSsJEN6rghW9dj8N<KH@Bt70e1>be(j1VIAo^bTjhYV61NGrIU39)4 z;SYRY{k}!rL@mQ_V7b+P_Rjz}AfG32e1ytL*Mp4z0OK!IV1dOVl78xO3P5X_>H0gv z^?VzxWu|Kk#L~bieBHa0d}{g!;wSMro$M|yT9ZuIH*xo?=PJh6I#PQD#|7ZmGkzcI zTSZ-nMurb~;3qTOJ3ok}8j}C&|G)z-%|CTRLk#U-4>KJ-|ETkQPT~*kr$PMxx5UpA z-=d5>mtXySF42bSlLMAeJrC7~W1!y+jJCY}UD=NVhUksy(jE-u|67vIQ2nq9@Pjdm z(Q#lso@xO65VU(g9iodX%4Hj1c+pV`UcvBnuq)7>L#`hJPV{#@qUtBa80RwllRgEX z#_+8HbnXa%(@N=V$nCU0DmuE|vj8XlcP&v6dBz9w_z~cKe5N6J4)C{~tr*ecyMCrq z%k`kg!I?0nL|@Nm>V8_x@LrD3Yxs8oKNvYwa~wvGU)MAKwi${~P5*j^_c8ofuAc!( zXS~q!eY(8{8LsCkH9UlYEb-ZQn4<q6(>aylJy$3=?bW9%oT2Ko_hnU|MG7pI050Vr zMZszBCtZIAoZ45<JL!DimGB&)<F>lIpD})hr`<=P!l@m_tL}UY04Mq{J*42%RJP*V z4A=AXI^Q~m>-kj;Z)f=C``vW@9dJK+c$V-}CW#Q+N3bogcLAq*&~X=thrH4eprH2c z@wD#&fD`_%VpY#m8NW=!XDEJX?;TyoGQ9j61)y^R=xRa*Qa$MT5M8d*0hjdOQuwr2 zh^{uM62kBH)bo!RKEVAkUt(hwG{dXq0W)f^C%t+WaM|v!Df+aBjjjd=Dz#VW6~#Y; zMH}FhZ;>b8ZorAow#f=po*xN1modJc=ho%ALF0!MKAjgz*ByZSwU>pFTS!b2(>(sn zD8MP-KGs)T6&Z03;MCu{FIND0-Yp(`0jF}+zNpH@)i3U1cpjHm!=D12%DdK6-j@NV ze9M<9{+BCqq5}4o@bx^mE-!5}BK&UVQ=V-GelBGEZ63M3jq$hfdIha#9@X&qD&Gn& z?^q~aqQ9#^!Rr~`%y7M~MfcN70jGNC-KiMYeBK4PU;Y09a4OdT8CG1npYCQlA=b~D z&WC^#KYE=Bo!vs$glw)KmQPJ*2E+3obki@D@EoDzt`HA-RRK=)2jpRmLa>?>$1|Of zN1sfcFGN1%$LlAb$aK2bs(fkh99>IM2~=La&P11ME#Q9jvyt)je6Ys<3Bxyf`rT!K zXA`Abm9Lh!8v!D@4c(^rkY@zr@ioAyyxR^}?fZawEvDphJxo({v^;DEoZ2`4PYPbd z_*k(k%ca*9X+D1gII<XWz0CM}eS*fP?`;sDz2~VUD>>y%#5ajg@omNDRCN=_GJIgV z;^%$F|8Kylp7pvFO`i?~Cpz8oP)Q-Qeg7B4SN-_h1UQwqkL6I8_a}gp-q!O1TK?%g zFUoiKgNh$5hd-0_QLZhDL3#Ey9)HjH8$I&>XQsc6?Shui_W>vV`#t?P;{e6yX12e& z-6sQn2-k`8RtmUZdFc!kKRAugW&KZA6|ec(D)FJOexj(~!kN%{CX&y?-0gB49DAy_ ze2=|r0$l3VKPv)qUnm|o15R}G`ZGFTiLPHT9X&4w^Cz!+C49UX&jSu!|Ma~S%2&@b zYW`maoboODg-WmcMJfb_@(q2Y%1h^e&~*ji)V}LI^lt%N%B`*NXdfzFzXF`(NBlw6 zL#>1g@w~+6ACB8ZC}h9-{|?}k@8SpDa#amD@!40X_^fAIzhihU8(uo|ny!9HCr1qM z{4%pC-T|EW9PhEq2o1=5w|VqlHsG>;N>skjGyU@!-aSw8sr`yBs7S)^pQ!L7iXCw) z!`qKg@Ke=IOhT3U)x$yw4~hJn6oK8`E{y^B_W(}y7V_A^9e@)*`Rw0b#{8^B2*WR5 z`p!)@{5l;EXLPX%aH6l*m7!VXwVC01y_AMyYZ&m61ILB59NxnC>pk}CUciaZZrU7< z>st9&h%SUw2)?UH!MnNM{=x7bR*-DQ#A1Y62;b{ReV^gG=wlwZbbGDLS9})n{JWNu zA4vFkvE3v88v&Q~IZrWi0rT?~(<$e9OkLi;Go8?*D&KCQuJFN%PVEs2uJw7JhI__S zpE11eYL#J3-Ne<0C^|i#Dgd3eL)Ui>^>5!*fD`}K#VTJqKZ33%z{#J__xSUt1<<*L z@Tq-0`t9xj{1*VHe7*k0o01OvJx@J<%<x{1-8T=Ta>2fwqxhEJslekD30E-Z-{S#? zi!$Uo7jWW7ug|43!07r-0G(GEzqUfvoA&cNFkqp6q1P>I`9BqKSzfkZS`Tbq3;t7v z##f(XI(j{@rt=EZ*|t>WtL66L!<8Oe{AUHvQ0$Ax8J_PMpZ*ze+3xJ;XgzTJ5ehCA zDEWC$krUHkP^erzo_<;exGa~)4|$&9UVr-?z)9a$vmd3)^)bWOdd3mPbVc85_a`zu zpY80mT;AsxUd?tP%J9w^%;$5eT>r-9s+g(DrPtePeyRbda&7aBr)mKw{%bjI2G2}h zO@K=~ewO;Znc+WSI_>N~u=^!G)pR`m)hNgv<y*U6@k!@C(lr-w%6FTm-sUrYXtlzZ z=Z6CSalrlb`5zhIYmY(&svh)u30<zK5)QwG^;o9l1{0Ei6F>QEH+8)&W_TZugSIgK z@qknPY`aeZ=&U)qP6eFG+wF<}+`#aBLzOFCp^M)!yn3Z-Ks~;=v{2E}`yE(Kh~ENE zdP%R#;_4I+Y5b{*j+Xy#ALU<fYXK)d%URB^Wq!uNF{XOxdsWfVe)53~FZa|BeZ`XK z<j+*)((-T<!@c8?zc75@b%jso+R@b#R^`&`Uf{;a>uiSCdfMv>hU;~NS~h+KxPE35 z^7b&`#Ak@*_E>%yDpqo$_dV!#p9whO7agqltYG}}C4P?3>*aL)Z)G}q-MprA8^e3p zK2|fGok&RfN6*KH7(RWzlB=FG6#&g7ug{szW{>|ivPAJ&U8?w`^S0^wcfd(b^m;@L z$K-XHgkzlUu{+lTp2IlK+ntQx!|Mojxt@{m9MR5xg>J9^0$j=!JK)+bjGLw8s)zNV zrgH?~e)%2^IPtI7WsPR0Rxq7v*8iH$YKafO`Y9#18s5Ngy^dYOV@zMK<I?o$P!`I! zm&>Kw_aeak_<Rm<>MtjF^!yuuQ$6T?I~Mc*8PjiPze109M$G2&^88LV;~xk((dn6> z+P6&I#8Hgj?eWLTC49Wl>*sZOk70bhzE;z3V)}g{Rc|`3`wzgWT<xCr8aapf#CV+L zIiLAF9&qAQc*d2NGQ8Sjm$T<8{A~xh^Su#pzj}U<@yk7O^*+PB{+?M%bTFPeTQPVK z^O*;@l+S!sk#95nS-`2?i?}{@yS&2qUO#+B8R`fAq&MC;2XH_BF9w|IP47b(&-q># zfWL$2qyCFLakF<A-tCFoe8%+q9#r)S_d{MIzoE+8=dlZCGJMwzg|Fk!*J*g3g43Cd zbS?O%svo_68pAz#H2_Za96C?^=IRz37{8kP(KyDx5OAvhqC-{v>v6%fZ*l!|ztH`$ z3~<69n4<8PDz?P44Bu9x06eS`CmyZpt=wb3eh4_#{}Z10%sGr-?eQ}&X8iFU|L_LD zi66axPs_>ufKxs6{z?_}3+|`l+bZ8(9{+y~;Dq1PqwwYT+3;8lIMMGb=XT+G+s<_K z{uwPlk1>3jN1wl@>3mBuBEOpeT1S7!Uq0&rCwbHB0oY9xn*#99llaV><Mt5X#J|`7 zc@uEzU*(?m{g~mq7_R*>t6bIFmIqZmXnD?KxZd}p>tQP3l&@D$&SCs^51mDf?~S+I z$?*O|RlXHMT@&y?@>A=vztaGh<vm!{^S?6wiHxt;^=dxP0NhVMychsKVjk0fThZ74 zp#?vI_|f|pHT@ih>-{wvekkBHKjMvV7csuxAFA<}GF<O-((n@ir}EZ%{M+*({~^fF z=3T1ZxEjP+j6dKRC+=jpSI+-s0n_IJsE&6vGkhEC|5DE2=YW&k?(&QW?_m6Pjx!v~ z_(mnuH&lII&+sDwC;1#;In@378w?M5?Ces&{n|0g^vijk<qD?%Jj1>7yrUPYb`+le zI}LC@`o}T8-Z!Y*r3r9qm(W~Q|8&kJU1u`f+g`T=PW4vH@ytF|9pYI@KS$Jh`s1q- zj(J#KKdSTn2jho4dVcI8mQN4<;S4YJ#PO;CCw{tl9Gai1_-_K7%2mz^9_C427Xj{9 zKeq+IcQgGSk3Ibx;MDFtp7u>$toYaaB6N8VXSm+qso`@0C;9jK1M>kV{);YG75qK! z9w}9devij4WCKq1FyP^HGUGq-v?4H#>mdxdUp=g0{Oun5)hY2|r*2mS<eB<-yd;3m zdw>%^+dO{YXH37^V^2pdA$}0gJVEgpVLm4VPWnpkkJj~8065i85AW+QVEpxrpW%_8 zvly=T;c7Ztn2vXR_a@_)a=mH%j~Tx^qS{5zA5||^@=)!OhdK!#FY=#I<<fLo0Vn?Z zSRa1O{9g#T>|dVo@=bvIwb$Pzedr(VN810%Sf=O;kNlT0+^gTt1f1l#+tYt9W&CoU ze~&Vs;pM8my3bL7Jccg@oZ3sDL!issAn_T=aXSZaSr3+~Px<X%yuUpF|1ridHx&Lz zru8Pn`$s7F3u)>_#tKE>tN$wj_p8r3#_v8-wb$d8qVsP7_&;U*evZFszqDW_*C)@j zjAcF-N;v#^&$#$s0M}zHMwPd70jK(@JzViq!7txu_%?=L%kUczD4>4SeWL>C`Rg|U zr*_f%+I72p2sqL2W;?6vbILKCZ;`4``E4_hyc=+mlRl4}KPBPlr=I@uC%{Rb1^dZG z%;#SizSiSEzejX1J{s?dxBo-ZN69>PHe;2d-^cw$(?5dYMND6pw*YXzc8>xs%f;<A zn)&=8;8Z_FTtB-0uM41akE8>8=dn{enU2>U88xb1^geFQXNcjUC*6AEAPGktlKGs% zeA2#;9Da7*j${0GZZF-w5x`}+QdIkXz=<xD_=wv-<<9pShWC5ctNfDbc>R`ft68o* z{ip<RlEYq){-4MA`3qIP+Fu<H2Q1%NAby?&IPpJ_rts-I1$4d0aIZh}G2kSJ-JbE? z7l8ZK+t@XVPvPP7Fu-MhIY!mnsVaMM3*b_3v%IkzBJO5<@3^)4IRAWa09>{U54_%H z`p+`lJ1_RVwTe%@uTsm;j{qk<P|c15t1)pt<3I6$BCP#^t$<U${cBXY<hQR-pX0u( z;NJCwjet`-PV>}H2jhF^RsYWL_U9G-6UNBq5{Dhn^?8DV%Wqxb)iHn*eSLm_E>}I{ z>vL=9+embsCGjy%<bH9W0*jw(`kwVs?*LBi)$j37K4AP_&p2hmzo`1u=k3g9`f~uM zdh@Q2IuCHtC;e=fSv<v+fK$G^JaL#?nSS*z72yh19pXg^=gb_pk2HOcy-qzr)mz3B zs(p36Wdlxp4$M)6wcpah@a`oF|6tBH<$H?%UarrBIPa+p@9~tY81Q@tfBLZka4K)R zC+@lkaLLa?m7)A*9}>MH>0`X?(Vw3&oo<hwKk)nh{pe`G{rEXf;-enUQygyP{&f@J zByW1(gzgvj15W&RbH5gh|B%Fo-{rA`JD5(XXT1Lg!}WPFx?Mg1oa&*QEB;@(;%3{b z{`<InwLMx0IPufyi5st$`0z75_BR4J(f9g+mofg$9({fT!^LB&pxw;R0Mps^->SXn z8#{DeT+8jq<7*7-<kin`eGV0UZ;Y;wYE?b&zE9ED^*pjpl~;J`a}wZw`nfCs{(Zn@ z{dn}SsN7iB(%u{?F143e+bwO4k!HKCiJoZ-T9metb#+7v8`|52ZO0m#>|(x$`CcUK z<5z@>=C`$VG)7zNVv*u-wAGGv)M5KuEV?0LH#E0(f<$F?Lt%SeN375%LDR{5Oi&Y> zYugPQH-^LE;`+MIXoKAu>%i`}s)m|aINY$lu7gNKW1UqEl{IzvQyDI{m)qD(2)wR_ zSXDJZ8&=yjbM2Z~aZyuS$H{dajW!C{QHPCkcC2n)p+v^sxpu|l-e)<#xUza_!>Xk< zC3a!7v!hPZ3D0Q<qcM9)&B_(X20Q*%)x=6$x|(Crmb&(;XtX9at2xrySrsM5@uR&i z+EKMM8m+9PI%{ZaZbTK=#FmB2+M|(%$jQ-8RH`nQto_pYZ7uC>sPBjk_8YqzA|2sy zTUV^TOJ!TRL6K>xi?%YsMax#st5{~+on7^Im2Dqi(o(mvsYzv2YTMDaXlpbkY=1OG z!@YIVz4;OEI%8c;P1v;A80m<ti*}--?N|#*Lu;fHveVdRuWN3ruWPm&QU9HGUDrm@ zfMPU9Vv)we(xN$#6F(%o37kPVJL)#sk=9tpCehSU*AlTCyINW{A&KLcO=WPQ+V;X# z70WB_$`uQ28_3v}X;&_0;Nk_VguURqD=L;(&Br@eVl;shfE|+^iP~AYaA8g5YI}9X zyk(W3di?4t>JKgLc1f8%ONu)h++I}=35`UmR_wi8Ro2Xg)Rx&*jVN(6wy6rgE4A3j zX9x~JmFUDa1iBNw4c($d=V`a1UrP)U7bi0$d@OI(VIMI<F5x1(CejQ&5blgs)yzs{ ztmGAdJ!A_EWZPQTQeM7jS=GGxYuDN(g|lQmMa#?avtnMA9WE>($eOa1?J>Kg#4aI( z6*X-okm1S(Z^{)*_r4P6l62KU5utz1vRxDli^F1hUB`(s%h;R^a_?+ab$C|g22^;w zPf_;_qqyO@sOFAHU2}6=1Eiue(h;j#BHvVQSW#x%*b*#N6*N|BTSp5-T&tO?YM?<o zR8}r%UkTGBTO&M6DYQ0h#0AwBKb2NFtF1lKO4>!XYgJpPy%GS@*RGN%is;NxEa75O zi!r;c{s$<K78j3}sVM?8l?%d^8z^b<oRzDju*AzunkELd5$Tw<9-2s@)x_&49B!`L z1Wh9oQT-4(rnb7KtSZ)Shs*3@?gW}IsRj3juSAA5vArQettGW;DX~>7xnEsXR?!@@ z(TL$vlv#FG{G5f~vj`B>Kf)y)k@mKDeGcgvXjOL|Q!@|WA%USX)FOw{L67d6ieM{J zGY5R2A#juT3fz4K7Tti}B_XmEcFlZXYLN|>w7^`|t&1pYHgC2x%R>snGPtgzu6_L; z+S=7jLCjJUCc$i}EsLd@U0qdLbCNx~#GWlRPEA=&#dqxpb!%$-HBi)O``KaqhhuYm zak#asr5={5E*9%Zh<>7oI>nsXc6iPlB2iWBP@A0*beG1uj!p6YBT-a8Kqiz2bexk1 zcq3(TJ*||9UDw(O{Q}!q*V+)NCsiIdAF6jkVMNf?R@J!mm{@RJVMnB?P)hZj)g5&k zA|0JjKOK=yxEsiOg;%8|IyHK$TlL2KcogCUXQZsXt8=|wkMjkfL8FqGqvYD}m>;f` z@0><vpDdoXOR#Izi3%Ii>mb6q*J(pYQe8~WUj*JnT|>lPPwrP&YxJb9NYxUEeXKa_ z<4M_2k+Wl6a6o_rHxb=unO(I6LWidqq>>GILYb4Gfmp)KO0UfQJ|Tz2#WnL6S1zyc z`qosF`?Iz{E6}-|W3yv9q#hTdC~z=z9pYytS-FO`_DxVnOYLyju8{VQTnW^OpMQZw z)k|wu+5rN)N*X*i@x^oPVyS-Dz_C&GFWLs@9X0Lo<}1AhZuJ^eW!3U(I9toAYF0yS zm*D>_=ooKRI=ma0J&z|-oRA!469I6RxiqOVBN56xf4DNUo7>b}w+;+y4FZ)EmO5!g zxY(&9<5r6F7F@WnbcE*ON0|+6#fIA9{&4NJsqs*-3xQsYArRSSSA~-AV@De6Vs&4= z_QG=<y)JT6S6wswq9Pk(97s%1CqfPCP7<EoxxVdWjO^-S7%)T|IyZ=>Xa^2dsoPK& zZKk0U1hToSrBz_8hmIX>l!`i9-xZ6<s`WY?+OC#XwPO6Sp{`lGD85EU`9gbk;ouOH ztZ1&4iGda`ak)9Z{<PLrUN1~qK<ziJDK2u#ckyhycuripb&*&rYtPN8L7JLegM}v4 zyc%KRsjjMN4_-+V`y^l86QMy04@_99R}60~6V|A>n0pPG%4P_IT_&%DB_^E-jRAwy z8Ns;QE!4W7(IBiiY!?@c_Krv+2G5<HZ5<@%?i!w3W|tPBhD#w<WHKYlQ6%qxD9oN~ z&sMsM`eey$yF^<48qez$aZiJLX}qhW=hASN^t^69_G1Cr+qg!h>`@7c_KzM&16Em6 z3YE?dVFh$Qo@+4rRi5DzJoxqlm`Hk;gtN88hK+Rggt_EH%(b;2ts97%-=%e^foPNr z=W7mX2dkb*Gs@IxE@4-#gcd+N$?ocmQ23*`1Pup00LQ4Vlg?FQMbL>@imp=Mv52a5 z9y7Q-c-<?!ebF@{a`r2SIf+;Q5VNw6!vHlTiVwDA{kVm6R+&AUgcPr&J7ULhp3}*Y ze^d!sW}ga{106WG(zgwlB68Ab(`X-qR^_`#qshmjR88v2ZcyeVJPR7XDcao3%~IL2 zYH5QT^Z$sX$L*?;y12{l=##8c1NsEnuszy_s0;(JWk3+1&aOxB3({H_Ygq3JcBrwr ztHEi!++mlN*rjr;vL>!is6zdsGvTnbm(mz^CUlmoQ<0XUAr1yCvq^0^%FAsiO-N^C zT?@xL>g(#G&4@A~<V6L5)YLUcf2iXOc5z{G;cNjvqdC&beVSn{k(P#*b~j9BsE6!M zKPRc)S3HXpu!?NTK^uizVl*lWhgDQnLcLLmuPSn|pS~ekn9fQl*0@TA!z@+m0<BW3 zNEs>@4dW?in8COG<|00`A<`LB{JXn5)Z$zpn^fa6L2I;Mh=yIwEgcVJ6qg*+Rfl+C zQ#8_OM>e*1VEjpA(Bf(`TsmAI<>8v{*j#r}Pq-tXMpV>`tUL|R1A2~px97eCH22V* zN9Ry{;n_ukg4ZZ!afx?a%QFE9*8sdmS{s{v2NTeD;S!Fwv9FBCEmS^CqsKx?>6fY% zvl^(thDdu1=i<3~vBRHtbTBFJ`(oN1BVAqLdPL?J4=dZQU8=Z1Xs@HjEl6?q5%Ue0 zFtMYZc2~O{YqR0=E3cXDFvc2l<X|IVQfutsC@3{Lg}8zmo!%wU=p{ClFz!sF*5a{_ zeT{>ufHuf#S@!g2ISQt}Jj8ha(?-D#Eu2gp>$Y}Qj>8*qk06JXY9Cz^@-vEyFzYA% z3~2jxvGtf;=xFOe7~0cUj>qIwM_WS#n&#vv(9|$3THR1%vwqoIH@6Iqg>v-*0`{`& z`9z?Ujoargh$;>YpXfd)$FtH9@DN8D0?3;*1hTPU3lYin*h0Ipv&~))C$?F3JQav8 z3EL$yF3A4yY&}|#3Z2FurL%3Eh03ai0CQ*CbJ>>f&(0ED@V$x~4IlGH7gH^i;M^g} zNrq`?w%T5Y<5oFfDkFR{;9$dBKnEBmD2Ji@Dwr+B#Qv~)dI;|Bg&OMYvio8ZU<Zci zv-s#k8woXpk*$O%o}Xr01Pg}|ptdIX>5O$PODfidM2K}&4;SkqH^gmzv>zkomuyu$ zrj;-=z9Y9FyCR2YdvwGxNOlKl*gKk|t=wt^9>cShC!idG`mQElm%*#*oVr`hM(tC( zQe3Rw-GI8OqxEE)l5{kYx%RJ<pYKysVMv<jh5J+p%`xQ4;kyj6KtWM@8a+C?v5L{l zE=&>lVf2K%uMNr1*Wx+i*-)`b#Ir#K^1fg=dB<{wh7&znUM+`#nhw(>5yhtB^D_3j zjT`NDM3~xWOcmQ?Z%|>OHnMg+liX4X{nWPF?Tr?eQUBoyRh~$~?D*`aW=zTqjjcFB zQL3eNC@MZUK(K{|CnYv{eBm+~8ldP31^n&xk-ElCIWRyUiAx9=Z0Ly4C@~<w@9ik7 z*I;3gT(yG{<%TdiG?stBrrWVi?FinsHnkzP@0$N#5fs^XN9Mp4rrFsqX<LWIKtXPa zOTry?hGL@bg$*zZ?#@UdUWdr+x9I@1V^v~8OUbx4L;KVR-67W1Rf#Ct{+?J;dd8!) zq}3sXHKa=aN#1m0v`Hkw1a*y#nC?VexUG%XbL_h-xF-#bqHBYSK<iQ(anMA$4gmxS zU$RclSDV9JiGUT9*YGo#QtF3ymg3VKIvlRuQ4~+h?N<%B1UNL>x<u88caPERgwLfJ z)3YR`1y%HkCKGTrKTQVPnCy4=KOGVK8qA}%(qCmPy4RldKIs!(>-%QYhvyNFfU5Dh zRjG1lWjV94FFX&`J@A6v>YUtShdN)Flm~!B@Bo$!=K)A{PO~0*Mtg;h$tlaPmL(2d zdEpzt^sSX}v2(rD5H0KL>kQutNP<=<tyo~wq;zK@a^_yhTijB2A_8ADk4wG^t)HXS znU(Micqx?ZOs<%6@S?fdaB;9I7|Vv((Mfix9HL0*`B=JJ7Pxd*Q0TdRQ^FBbv*r#3 zl|&#*2X3ppi)2t&?0O-JjvzV$X{Z*Oioz-(Ir-cv7OkqNUW^I)u)QE!2Tdati+{}C zwJ_JMe-e5SM%}TLj@CQQZXmY_bNHoLI(u>yOF=95^Gu7!uxmY#+-M|dxJDuIB*K7I zHWryU!hqq~6|uG!cy@YWk=p}YUE`i<{7N?7qmtw0mf`;4ZM=#R$08e}-dNAq<9j6p z#5F^)mm~k-wF8Fvq6(|`8zV~68@sSX9)WMCxXV5tpsk#v(EX>aU>10oyEn7AaYL>h zg5<+{=z+8dEJ&{DT@rGQ?FM9d;!ae}Fw4NClIgJLme_OU1YpgOP5^Du*jznirgx|( zhQ+_hOt!feUdCrg-2oiEI6`SE-!@Oup&efA;EGB`E61g?Z5i;?AyK_n3L{F#f{DFb z`Q%<lCYL>7$pJ;A=7#OL6oGYCqg|EgYOITC!h;5dK@vgll8}gEn-<YKBqHp$Qj-@$ zsHGIGC;P0O_Y)2T--cZp7w-kb6i<o)CW&|fj$SKEatAIF!*vcx&|IR9bqK5!Z^q^h z8sXB?Z)Gm&Cr>dUaxq87y7k(b65b&JeVzzMxPlH?wX+vN2W&QpZcy5)9UtMsm$=lb ze&>v5VwKTqIh(3iZXw?8S@2IXK>|`5wo8kpJ4c=Xmj&y^=g3t-x^VHxBGGAShsUIC zmq)g=B6In5Zf`YigTB5A)@Drq(bBpGn%9(zY*w${zr738SY;=rjMTcDxW@iUCVf~} zCeWnE^N#nEcmbS7?VsLM*rr9_b+a4RpNJ34MVk|T?$G(#K((a@$IcGRQ^w6$M%5Ni zsHD|b(SO|ow7><VY6$^(6MpNkVPO*nHb|rErcBO#@Ue{c>g9;;sGVc91Z$3Mx2c%} zJ)-ejy*%841B@+8Y~7k_Ta?nOq&^dlfXn;G^vQDN{v+2YmX5fhu7zQ&<~=@K%tJf5 zbW#uRltbWJakR#@LQMBprxr+Zvt=b_v7`IuM{}q18!JKO4%tlL2p70FI3?$5Izj;Z zZ4!WtLhwo@YL5~bU&lHy6<G(!J5A>HvOM}{pBg0TdF(x{5!HSn8$Q34bNj>~+$mc5 z5#&zMyCmEx#9YZ0*Zm)y_-d}WcKhEHlUc_uSmlVe$Vr)m^MtQ|QdEJ2Lx)<md$b}k zVc;GIduMK>1GaaII<X<cxlpaRtRvD;*WA!W{(;SFh7y5}4PXy-{FRJzye)zZDeYZT z^Phq1D^N*tXP5Tfu_?s0Xx_g+=~b(w1-u(Lv2ZmRfoqT+nHD!?1`;cA8}Rv8w?;;N zp_mN_`nVJ|z>Rf7M{=GiGg^Mr8QtToSt8Drs9GMhcsp-=B&C)o>cznj0&>_(=GrAL zpH^>kbGX60ypb2@VQqX^E{^{yLgAP?)*_+jRkR~ab1QPlt=*V_exBsSUQ$C*RVR87 zg90Yha_~|a&9GV{gjSH+i7Tzj&&sJDwTDemv!t=7iC3RB3vgDv!Ub;QE3Wo#oJ>BU zi&|kZuQf^(f8V?RezQtJW@DdsE?}Gok3eojpb;JEWuEDxm6CPjg43RV=pDDFaV~Jt zLqR<@bjVC#U_2qvx_+H)m$d)I)-*wF-`fbTTtbhy;*4?OmfMSmQPE1?rPe5+{W3gw zc9tw5$5@pbu=Yl6GLSlKRa;w3ZCX(MMORj0jJelCG}ev7?s|8dTNN-!>?Y<=fDUU= zb7MhBU2}w*!PSX|F#UDx^VS7Q)QNNENUK)0SS-<$&T+Tbj3$IzM!FM*P94C}8adfk z3qxIzA!R~b7KK)J_-=nqNQQ3F;GUv}3gNkGD}Y=@f&m!BM-Oqxua?`G^<*46Yj8l! z>w`OX*r+2s^cs2U^=pRTx&{=@7f!l}3|W&7(U2W-*yCPQ=an_x5s`K6tX3sLNu3rk zRQy!u;Q6|E3=0ZRZM~{0o?C&DEp6_NN3Ag7$45U<`B}ATdvDicjfGZ;C|ttncJ}e4 zwHK^=GUuB(MsM?yn!ttsh(Y$kJxt&#Lysk4*r2a^jIO9Pej!1WR&Q*ZRfRG55R0kg zB|zZuvUslAys{yR{-ciPuz!FxVRE>>kL#tenu&Z`x#PXEr3Fj0-7#Ydcqg{eV&|A- z(jCi0{`C!ZLuZ!^EjU`8w_vzJ<OvhOu4cGcZ@8yJ0_4tLa;UYdjIJ2Co5zur-$o_f zclKpcBkp-Aldg7yx(YJfwy(Y4^pyw@Yu_0wvS@&%rZjx_0XdC~oLrV2%QN5RJn|-a z+gSny=`lq-^})k=XVWI>)h2ult+EphwD(4s8%T{u^kR6IMsb9EzU~0z@Z$o+86m0R zxwK?8v4jZch0v(j>leoN-H@<37kD-XF7Wgm1)xt3Q-M2D5Lm^8l@2X!8$7%5kcD^7 z!6{Sp+Og#;JR4IgG`er8gZ0FwXpogXB0geBUcMYAi&jJo-RDSo`|Q%-bVJv}4z+k5 zA=@YWLW`}34NvZIv9<C&U^#sXqtw^XNgvN>o+8E(tT`KI{j1ZEI>f$yNYqL$+;eVH zq}j*er56~gnZKf~)}A8`$=Rv#Ot;A82+1x99iC~mT}1bUeLF)>Hjn#sn_yGq={Erl z;(NHmkVf)7EKLqvwWZXj(n!4~x6>i;1z`=C=m5d`c&Jl)aWqWTHcdIL0I2;z3)`?Q z{NzqSaYf~+IgSS+FGG!HFrgq<ONGm@WET6leNR5Bq4_5zJxMvBzAllR^mX{uD~5GC z<I}W>k%vb&cn2#E{~byq33r?Ow3=;+@4HrW*ZSBp3=)Pp6irr1TXSb6PO|eHZYSrK z<;*c54O>*V%&EYpPRZd}hhcQ+!>?r!$zyjvMW>^Q<S-|8s-v<UJkhyd|2sN5C?vE` zOVFxTFSip%S7Pdq4z65HXV9o_kWiuyJ-shWH63G`{Wv2PJl>|}t)w-bSg3Jq>&bK` z#44N*)<Q1D{P{SVQJux%o`DQdgGny@!3qo4J|D+{T*>d(i?zjYlo_8>K#NTFli2OI zh-AVoj{8wbj(@3oluK5*s%7Y~%~e!ATJbq}gGY}0t1o(tx;FdCEeF+_qH1{UnHX_m zhE&=lwJ(VWO9{m?bhNqm>xp?wAjYH!%40n-&Kn3g3fNb=u%<4VaGHDN0FQ3uIy0@( zwQ<@fEt#~ql1J-1eWq9nm+|2f`ix%+M)<ll(tJ6*-l2yadhHj7&-J-Up3|1Jnf9cr z8P-Iq7Ew0cm&>5&rfd!=jq0RQchmarJk?>;#H6e5V*UMlKo$#1jov+=m)JXlaDFFx zAj(iYXUK^js$Z!v0v(*e-U%PnLav`HI?EvnwHwf(SDO%k$13Om!%FL;_qY+a$u(aJ z+P;P}$pMbTR_@RJcr|;B?ecnac{Y{3t_7hwRkyZ~D>{@=`IgKbvl=o)@ZG&J%n(5? zG97M+0D_Jo!kXZL4tOpu!O58NT)Y6cU!4Hdj^o?y4bhGmoCdcGPEL|O-P_|Lh39gR z0c##qpkbp+N>^1k?A6&*SQFvh5+G<eh+@PCLi$_;z1ww;o|sWCwVa7^_kW0ElBYfB zncR3BKpm^3roS7yIy&g|B)wQRJ`$5#fLS_{%SaneX))qUQ(fzxlaJ20r-fDEFQ^N8 z4*W?@QXL&~e>$&@$?N0`yP!zLvE0+MIt=HrHWb+RuF=)gBJmSANE530JiqZQRitYk zfE+;gFi`odQYt!yDD2$S0uKWBSckf=*H5w^wu{2nwpgSP=Z6<!=`i+*;}EU{sJ<)O z+*lB8WDrhGFThs|ghXFo*STI4Hg0M~7U~}BP;clwLu}q~{jl+_Bhp+)3HYfU=K~kg z8Us;?$HH}O`~YJw3bDThKc$COi0=!~S)qlI^?cO+`bJRGzmQD>c4N!4l6baOQdOt$ zD;oNl=nxwqDOs+=b{{-Q>X=;;_{u;F?KTH2Qs1=>$!PZ&;OZysAJ@-y_4OT*4f<Cz zjw{#Cs9^nwmeh|-Nq%|btNodT<Ocrp=TF3VQ_<6ReBsM=5w7z(6hG4OU#BnS^!lFf zM8<Q5=l2}^cBWs;>Gl0E55E5Xk_O|mgRb<aaC&{u*NA-grpM=(#K(h!ZJPgHPOtCy zjE=ncGbcm%$7e}ICjRU6LTAAD0ZvF|q`K4P*WZbu@9t5SI{g5D$V=b<sy{FU9J;*q ze-dDW4*p-_5BBN%B{G!|ntz>-zW)gCzjUN;AFC4R`v9jW{)tb`KZ6B*ZikAh>D3;f z-spSiaP?c~uhZ-DU(V_0DKydkE%l)9+qfPn{Y3otroR?2suN9LRO1I-d?)#KUb=ZS z>?%As)8}(KeJ^5p(D)&K(D$1>>8tVGG`jR%<0&Y86I5OLz70Q}`PXuKeb3)R{&#!Q zcjLQcbm{v}{*Ic0Ci2(6e}@NW{%gOdT2kNj_lY#VxBedG^t$~;EkE(SmcQer)9Z5U z-@o^yuWeT8^}Sht;EWS^^Z%14eg8=+y}q~4&^f8QmLCm$)04jZDwST}KjiP3X?$<~ zf5(d~{MXIY%illhy-m^4a<0?s{PmqaKS){V^xHZ8c22MHg3^ycdTKwNUVrDRkJB&q z@Sm><@tr>ZNqtAB&v-`hoxyyB)K95nDT(Gsx8tpVIrAU?ESH<VL$`}wIxd}F->2fe zGkyGf)P0K1G)G!`)af*MCK3}&^RK^GK8@2a){Jt3a-ERx^chUbzsLjE={@2jaS4^u z&{f9i)vv_gRh++<u1=>h7YC$2jng-3M812|uMSB67N=jnhxGLU=}R6|^?&jn(zkMY zZ#i$_^!z!+I2FymzHbW1|1<v18a^-Rx^y}XJR>0eYW{v<zDDG`H$DAk5qDv3<n(L# wgMf$Q?IQfw@~8VXnP)9~P6GX(D5@vcIiU%;(a`LG^xr&QQN75+u;-`vf10AxKL7v# literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.cpp new file mode 100644 index 0000000..b8479e7 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.cpp @@ -0,0 +1,1681 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA MP_architecture trace generator for scope 3 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +graph_object GRAPH_101_Diagram; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_load_MP_file + , Event_MP_model_editing + , Event_browsing_MP_code + , Event_press_RUN_button + , Event_browse_event_trace + , Event_syntax_errors_detected + , Event_save_MP_file + , Event_end_of_session + , Event_input_MP_code + , Event_receive_json_file + , Event_visualize_trace + , Event_perform_syntax_analysis + , Event_write_abstract_syntax_tree + , Event_read_abstract_syntax_tree + , Event_generate_Cpp_file + , Event_run_Cpp_compiler + , Event_run_executable + , Event_produce_json_file + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_25_26 + , Event_SIMPLE_LIST_49_50 + , Event_SIMPLE_LIST_69_70 + , Event_SIMPLE_LIST_79_80 + , Event_SIMPLE_LIST_143_144 + // ADD operations + // ROOT events + , Event_User + , Event_MP_code_editor + , Event_MP_GUI + , Event_MP_parser + , Event_Abstract_syntax_tree + , Event_Trace_generator + // main schema event + , Event_MP_architecture }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "load_MP_file" + , "MP_model_editing" + , "browsing_MP_code" + , "press_RUN_button" + , "browse_event_trace" + , "syntax_errors_detected" + , "save_MP_file" + , "end_of_session" + , "input_MP_code" + , "receive_json_file" + , "visualize_trace" + , "perform_syntax_analysis" + , "write_abstract_syntax_tree" + , "read_abstract_syntax_tree" + , "generate_Cpp_file" + , "run_Cpp_compiler" + , "run_executable" + , "produce_json_file" + , "SIMPLE_LIST_25_26" + , "SIMPLE_LIST_49_50" + , "SIMPLE_LIST_69_70" + , "SIMPLE_LIST_79_80" + , "SIMPLE_LIST_143_144" + , "User" + , "MP_code_editor" + , "MP_GUI" + , "MP_parser" + , "Abstract_syntax_tree" + , "Trace_generator" + , "MP_architecture" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Quantified_expr_121_122(Coordinate * current_host, int E1_variable, int E2_variable +){ + //===================================== + // quantifier EXISTS with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int E3_variable; + int pivot_E3_variable = 0; + + // loop 1 for E3_variable + for( E3_variable = 0; E3_variable < len; E3_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ E3_variable * len + pivot_E3_variable +]) && + ( Stack[ E3_variable ]->type == Atom || Stack[ E3_variable +]->type == ROOT_node || Stack[ E3_variable +]->type == Composite_event_instance_node || Stack[ E3_variable +]->type == Schema_node ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for EXISTS + if( ( find_pair_in_table( E3_variable , E1_variable , Inside) && +find_pair_in_table( E3_variable , E2_variable , Inside) )) + {result = true; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 2 ---- +bool Quantified_expr_125_126(Coordinate * current_host, int E1_variable, int E2_variable +){ + //===================================== + // quantifier EXISTS with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int E3_variable; + int pivot_E3_variable = E1_variable ; + int E4_variable; + int pivot_E4_variable = E2_variable ; + + // loop 1 for E3_variable + for( E3_variable = 0; E3_variable < len; E3_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ E3_variable * len + pivot_E3_variable +]) && + ( Stack[ E3_variable ]->type == Atom || Stack[ E3_variable +]->type == ROOT_node || Stack[ E3_variable +]->type == Composite_event_instance_node || Stack[ E3_variable +]->type == Schema_node ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for E4_variable + for( E4_variable = 0; E4_variable < len; E4_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ E4_variable * len + pivot_E4_variable +]) && + ( Stack[ E4_variable ]->type == Atom || Stack[ E4_variable +]->type == ROOT_node || Stack[ E4_variable +]->type == Composite_event_instance_node || Stack[ E4_variable +]->type == Schema_node ) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( find_pair_in_table( E4_variable , E3_variable , Follows) ) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 3 ---- +class SIMPLE_LIST_25_26_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_25_26_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int User_source = Root_table[Event_User]; + // lists of shared events for User + vector<int> User_MP_model_editing_list; + vector<int> User_browsing_MP_code_list; + + int MP_code_editor_source = Root_table[Event_MP_code_editor]; + // lists of shared events for MP_code_editor + vector<int> MP_code_editor_MP_model_editing_list; + vector<int> MP_code_editor_browsing_MP_code_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + User_source ]){ + if( Stack[i]->name == Event_MP_model_editing ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = User_MP_model_editing_list.begin(); + s != User_MP_model_editing_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) User_MP_model_editing_list.push_back(i); + } + if( Stack[i]->name == Event_browsing_MP_code ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = User_browsing_MP_code_list.begin(); + s != User_browsing_MP_code_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) User_browsing_MP_code_list.push_back(i); + } + }; + if(in_matrix[i * len + MP_code_editor_source ]){ + if( Stack[i]->name == Event_MP_model_editing ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_code_editor_MP_model_editing_list.begin(); + s != MP_code_editor_MP_model_editing_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_code_editor_MP_model_editing_list.push_back(i); + } + if( Stack[i]->name == Event_browsing_MP_code ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_code_editor_browsing_MP_code_list.begin(); + s != MP_code_editor_browsing_MP_code_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_code_editor_browsing_MP_code_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = MP_code_editor_MP_model_editing_list.size(); + if(User_MP_model_editing_list.size() != len_to_compare) throw failed ; + len_to_compare = MP_code_editor_browsing_MP_code_list.size(); + if(User_browsing_MP_code_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = MP_code_editor_MP_model_editing_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(User_MP_model_editing_list[i], MP_code_editor_MP_model_editing_list[i]); + } + len_to_compare = MP_code_editor_browsing_MP_code_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(User_browsing_MP_code_list[i], MP_code_editor_browsing_MP_code_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_25_26_ob class + +//---- 4 ---- +class SIMPLE_LIST_49_50_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_49_50_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int User_source = Root_table[Event_User]; + // lists of shared events for User + vector<int> User_load_MP_file_list; + vector<int> User_save_MP_file_list; + vector<int> User_press_RUN_button_list; + + int MP_GUI_source = Root_table[Event_MP_GUI]; + // lists of shared events for MP_GUI + vector<int> MP_GUI_load_MP_file_list; + vector<int> MP_GUI_save_MP_file_list; + vector<int> MP_GUI_press_RUN_button_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + User_source ]){ + if( Stack[i]->name == Event_load_MP_file ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = User_load_MP_file_list.begin(); + s != User_load_MP_file_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) User_load_MP_file_list.push_back(i); + } + if( Stack[i]->name == Event_save_MP_file ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = User_save_MP_file_list.begin(); + s != User_save_MP_file_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) User_save_MP_file_list.push_back(i); + } + if( Stack[i]->name == Event_press_RUN_button ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = User_press_RUN_button_list.begin(); + s != User_press_RUN_button_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) User_press_RUN_button_list.push_back(i); + } + }; + if(in_matrix[i * len + MP_GUI_source ]){ + if( Stack[i]->name == Event_load_MP_file ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_GUI_load_MP_file_list.begin(); + s != MP_GUI_load_MP_file_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_GUI_load_MP_file_list.push_back(i); + } + if( Stack[i]->name == Event_save_MP_file ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_GUI_save_MP_file_list.begin(); + s != MP_GUI_save_MP_file_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_GUI_save_MP_file_list.push_back(i); + } + if( Stack[i]->name == Event_press_RUN_button ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_GUI_press_RUN_button_list.begin(); + s != MP_GUI_press_RUN_button_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_GUI_press_RUN_button_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = MP_GUI_load_MP_file_list.size(); + if(User_load_MP_file_list.size() != len_to_compare) throw failed ; + len_to_compare = MP_GUI_save_MP_file_list.size(); + if(User_save_MP_file_list.size() != len_to_compare) throw failed ; + len_to_compare = MP_GUI_press_RUN_button_list.size(); + if(User_press_RUN_button_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = MP_GUI_load_MP_file_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(User_load_MP_file_list[i], MP_GUI_load_MP_file_list[i]); + } + len_to_compare = MP_GUI_save_MP_file_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(User_save_MP_file_list[i], MP_GUI_save_MP_file_list[i]); + } + len_to_compare = MP_GUI_press_RUN_button_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(User_press_RUN_button_list[i], MP_GUI_press_RUN_button_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int v_variable; // thread variable + vector<int> v_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for v_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + v_variable = i; + if( v_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_visualize_trace)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = v_variable_list.begin(); s != v_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) v_variable_list.push_back(i); + } + } }; + // no processing needed for the default source v_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = v_variable_list.size(); + if(thread_length != v_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + v_variable = 0; } + else{ + v_variable = v_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_browse_event_trace)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + v_variable= v_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,v_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_49_50_ob class + +//---- 5 ---- +class SIMPLE_LIST_69_70_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_69_70_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int MP_parser_source = Root_table[Event_MP_parser]; + // lists of shared events for MP_parser + vector<int> MP_parser_input_MP_code_list; + + int MP_GUI_source = Root_table[Event_MP_GUI]; + // lists of shared events for MP_GUI + vector<int> MP_GUI_input_MP_code_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + MP_parser_source ]){ + if( Stack[i]->name == Event_input_MP_code ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_parser_input_MP_code_list.begin(); + s != MP_parser_input_MP_code_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_parser_input_MP_code_list.push_back(i); + } + }; + if(in_matrix[i * len + MP_GUI_source ]){ + if( Stack[i]->name == Event_input_MP_code ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_GUI_input_MP_code_list.begin(); + s != MP_GUI_input_MP_code_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_GUI_input_MP_code_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = MP_GUI_input_MP_code_list.size(); + if(MP_parser_input_MP_code_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = MP_GUI_input_MP_code_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(MP_parser_input_MP_code_list[i], MP_GUI_input_MP_code_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + + { // SHARE ALL operation + create_matrices(); + + int User_source = Root_table[Event_User]; + // lists of shared events for User + vector<int> User_syntax_errors_detected_list; + + int MP_parser_source = Root_table[Event_MP_parser]; + // lists of shared events for MP_parser + vector<int> MP_parser_syntax_errors_detected_list; + + int MP_GUI_source = Root_table[Event_MP_GUI]; + // lists of shared events for MP_GUI + vector<int> MP_GUI_syntax_errors_detected_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + User_source ]){ + if( Stack[i]->name == Event_syntax_errors_detected ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = User_syntax_errors_detected_list.begin(); + s != User_syntax_errors_detected_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) User_syntax_errors_detected_list.push_back(i); + } + }; + if(in_matrix[i * len + MP_parser_source ]){ + if( Stack[i]->name == Event_syntax_errors_detected ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_parser_syntax_errors_detected_list.begin(); + s != MP_parser_syntax_errors_detected_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_parser_syntax_errors_detected_list.push_back(i); + } + }; + if(in_matrix[i * len + MP_GUI_source ]){ + if( Stack[i]->name == Event_syntax_errors_detected ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_GUI_syntax_errors_detected_list.begin(); + s != MP_GUI_syntax_errors_detected_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_GUI_syntax_errors_detected_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = MP_GUI_syntax_errors_detected_list.size(); + if(User_syntax_errors_detected_list.size() != len_to_compare) throw failed +; + if(MP_parser_syntax_errors_detected_list.size() != len_to_compare) throw +failed ; + + // do the SHARE ALL + len_to_compare = MP_GUI_syntax_errors_detected_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(User_syntax_errors_detected_list[i], MP_parser_syntax_errors_detected_list[i]); + make_equality_complete(User_syntax_errors_detected_list[i], MP_GUI_syntax_errors_detected_list[i]); + make_equality_complete(MP_parser_syntax_errors_detected_list[i], MP_GUI_syntax_errors_detected_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int p_variable; // thread variable + vector<int> p_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for p_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + p_variable = i; + if( p_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_press_RUN_button)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = p_variable_list.begin(); s != p_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) p_variable_list.push_back(i); + } + } }; + // no processing needed for the default source p_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = p_variable_list.size(); + if(thread_length != p_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + p_variable = 0; } + else{ + p_variable = p_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_input_MP_code)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + p_variable= p_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,p_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_69_70_ob class + +//---- 6 ---- +class SIMPLE_LIST_79_80_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_79_80_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int MP_parser_source = Root_table[Event_MP_parser]; + // lists of shared events for MP_parser + vector<int> MP_parser_write_abstract_syntax_tree_list; + + int Abstract_syntax_tree_source = Root_table[Event_Abstract_syntax_tree]; + // lists of shared events for Abstract_syntax_tree + vector<int> Abstract_syntax_tree_write_abstract_syntax_tree_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + MP_parser_source ]){ + if( Stack[i]->name == Event_write_abstract_syntax_tree ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = MP_parser_write_abstract_syntax_tree_list.begin(); + s != MP_parser_write_abstract_syntax_tree_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) MP_parser_write_abstract_syntax_tree_list.push_back(i); + } + }; + if(in_matrix[i * len + Abstract_syntax_tree_source ]){ + if( Stack[i]->name == Event_write_abstract_syntax_tree ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Abstract_syntax_tree_write_abstract_syntax_tree_list.begin(); + s != Abstract_syntax_tree_write_abstract_syntax_tree_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Abstract_syntax_tree_write_abstract_syntax_tree_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Abstract_syntax_tree_write_abstract_syntax_tree_list.size(); + if(MP_parser_write_abstract_syntax_tree_list.size() != len_to_compare) +throw failed ; + + // do the SHARE ALL + len_to_compare = Abstract_syntax_tree_write_abstract_syntax_tree_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(MP_parser_write_abstract_syntax_tree_list[i], Abstract_syntax_tree_write_abstract_syntax_tree_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_79_80_ob class + +//---- 7 ---- +class SIMPLE_LIST_143_144_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_143_144_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Abstract_syntax_tree_source = Root_table[Event_Abstract_syntax_tree]; + // lists of shared events for Abstract_syntax_tree + vector<int> Abstract_syntax_tree_read_abstract_syntax_tree_list; + + int Trace_generator_source = Root_table[Event_Trace_generator]; + // lists of shared events for Trace_generator + vector<int> Trace_generator_read_abstract_syntax_tree_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Abstract_syntax_tree_source ]){ + if( Stack[i]->name == Event_read_abstract_syntax_tree ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Abstract_syntax_tree_read_abstract_syntax_tree_list.begin(); + s != Abstract_syntax_tree_read_abstract_syntax_tree_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Abstract_syntax_tree_read_abstract_syntax_tree_list.push_back(i); + } + }; + if(in_matrix[i * len + Trace_generator_source ]){ + if( Stack[i]->name == Event_read_abstract_syntax_tree ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Trace_generator_read_abstract_syntax_tree_list.begin(); + s != Trace_generator_read_abstract_syntax_tree_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Trace_generator_read_abstract_syntax_tree_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Trace_generator_read_abstract_syntax_tree_list.size(); + if(Abstract_syntax_tree_read_abstract_syntax_tree_list.size() != len_to_compare) +throw failed ; + + // do the SHARE ALL + len_to_compare = Trace_generator_read_abstract_syntax_tree_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Abstract_syntax_tree_read_abstract_syntax_tree_list[i], Trace_generator_read_abstract_syntax_tree_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int p_variable; // thread variable + vector<int> p_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for p_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + p_variable = i; + if( p_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_produce_json_file)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = p_variable_list.begin(); s != p_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) p_variable_list.push_back(i); + } + } }; + // no processing needed for the default source p_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = p_variable_list.size(); + if(thread_length != p_variable_list.size()) throw failed; + + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){ + p_variable = 0; } + else{ + p_variable = p_variable_list[r_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_receive_json_file)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + p_variable= p_variable_list[i]; + r_variable= r_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r_variable,p_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // SAY_event generation + string message; + ostringstream convert; + convert <<" Scope "; + convert << 3 ; + convert <<" Trace #"; + convert << + trace_id_attribute ; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + { // Diagram title generation + ostringstream convert; + convert <<"main component interactions"; + GRAPH_101_Diagram.title = convert.str();} + { // COORDINATE operation + int thread_length = -1; + int E1_variable; // thread variable + vector<int> E1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for E1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + E1_variable = i; + if( E1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->type == ROOT_node) || +(Stack[i]->type == Composite_event_instance_node) ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = E1_variable_list.begin(); s != E1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) E1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source E1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = E1_variable_list.size(); + if(thread_length != E1_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + E1_variable= E1_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int E2_variable; // thread variable + vector<int> E2_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for E2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + E2_variable = i; + if( E2_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->type == ROOT_node) || +(Stack[i]->type == Composite_event_instance_node) ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = E2_variable_list.begin(); s != E2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) E2_variable_list.push_back(i); + } + } }; + // no processing needed for the default source E2_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = E2_variable_list.size(); + if(thread_length != E2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + E2_variable= E2_variable_list[i]; + // WITHIN Diagram + int a_102_node_var = -1; + int b_104_node_var = -1; + {// LAST_NODE + ostringstream convert; + convert << event_name_string[Stack[ E1_variable ]->name]; + a_102_node_var = GRAPH_101_Diagram.find_or_create_new_node(convert.str());} + {// LAST_NODE + ostringstream convert; + convert << event_name_string[Stack[ E2_variable ]->name]; + b_104_node_var = GRAPH_101_Diagram.find_or_create_new_node(convert.str());} + if( find_pair_in_table( E1_variable , E2_variable , Inside) ){ + // add_arrow for GRAPH_101_Diagram + { + ostringstream convert; + convert <<"calls"; + GRAPH_101_Diagram.add_arrow(b_104_node_var,a_102_node_var,convert.str());} + }// end THEN + if( ( ( ( E1_variable != E2_variable ) && ! ( find_pair_in_table( E1_variable + , E2_variable , Inside) || find_pair_in_table( E2_variable , E1_variable +, Inside) ))&& ( Quantified_expr_121_122(current_host, E1_variable, E2_variable) + || Quantified_expr_125_126(current_host, E1_variable, E2_variable) ))){ + // add_line for GRAPH_101_Diagram + { + ostringstream convert; + convert <<"interacts with"; + GRAPH_101_Diagram.add_line(a_102_node_var,b_104_node_var,convert.str());} + }// end THEN + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_143_144_ob class + +//---- 8 ---- +class Opt_1_2 : public OR_node_producer_container { +public: // constructor + Opt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_load_MP_file); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_1_2 + +//---- 9 ---- +class Alt_3_4 : public OR_node_producer_container { +public: // constructor + Alt_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_MP_model_editing); + element[ 1 ]= new Atomic_producer(Event_browsing_MP_code); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_3_4 + +//---- 10 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_browse_event_trace); + element[ 1 ]= new Atomic_producer(Event_syntax_errors_detected); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_5_6 + +//---- 11 ---- +class Opt_7_8 : public OR_node_producer_container { +public: // constructor + Opt_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_save_MP_file); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_7_8 + +//---- 12 ---- +class Sq_9_10 : public AND_node_producer_container { +public: // constructor + Sq_9_10 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Opt_1_2 ; + element[ 1 ]= new Alt_3_4 ; + element[ 2 ]= new Atomic_producer(Event_press_RUN_button); + element[ 3 ]= new Alt_5_6 ; + element[ 4 ]= new Opt_7_8 ; + } +};// end class Sq_9_10 + +//---- 13 ---- +class Ct_147_148 : public AND_node_producer_container { +public: // constructor + Ct_147_148 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_9_10 ; + element[ 1 ]= new Sq_9_10 ; + } +};// end class Ct_147_148 + +//---- 14 ---- +class Ct_149_150 : public AND_node_producer_container { +public: // constructor + Ct_149_150 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_9_10 ; + element[ 1 ]= new Sq_9_10 ; + element[ 2 ]= new Sq_9_10 ; + } +};// end class Ct_149_150 + +//---- 15 ---- +class Itp_11_12 : public OR_node_producer_container { +public: // constructor + Itp_11_12 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_9_10 ; + element[ 1 ]= new Ct_147_148 ; + element[ 2 ]= new Ct_149_150 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itp_11_12 + +//---- 16 ---- +class Sq_13_14 : public AND_node_producer_container { +public: // constructor + Sq_13_14 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itp_11_12 ; + element[ 1 ]= new Atomic_producer(Event_end_of_session); + } +};// end class Sq_13_14 + +//---- 17 ---- +class Alt_17_18 : public OR_node_producer_container { +public: // constructor + Alt_17_18 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_MP_model_editing); + element[ 1 ]= new Atomic_producer(Event_browsing_MP_code); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_17_18 + +//---- 18 ---- +class Ct_151_152 : public AND_node_producer_container { +public: // constructor + Ct_151_152 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_17_18 ; + element[ 1 ]= new Alt_17_18 ; + } +};// end class Ct_151_152 + +//---- 19 ---- +class Ct_153_154 : public AND_node_producer_container { +public: // constructor + Ct_153_154 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_17_18 ; + element[ 1 ]= new Alt_17_18 ; + element[ 2 ]= new Alt_17_18 ; + } +};// end class Ct_153_154 + +//---- 20 ---- +class Itp_19_20 : public OR_node_producer_container { +public: // constructor + Itp_19_20 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_17_18 ; + element[ 1 ]= new Ct_151_152 ; + element[ 2 ]= new Ct_153_154 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itp_19_20 + +//---- 21 ---- +class Opt_27_28 : public OR_node_producer_container { +public: // constructor + Opt_27_28 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_load_MP_file); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_27_28 + +//---- 22 ---- +class Sq_29_30 : public AND_node_producer_container { +public: // constructor + Sq_29_30 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_receive_json_file); + element[ 1 ]= new Atomic_producer(Event_visualize_trace); + } +};// end class Sq_29_30 + +//---- 23 ---- +class Alt_31_32 : public OR_node_producer_container { +public: // constructor + Alt_31_32 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_29_30 ; + element[ 1 ]= new Atomic_producer(Event_syntax_errors_detected); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_31_32 + +//---- 24 ---- +class Opt_33_34 : public OR_node_producer_container { +public: // constructor + Opt_33_34 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_save_MP_file); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_33_34 + +//---- 25 ---- +class Sq_35_36 : public AND_node_producer_container { +public: // constructor + Sq_35_36 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Opt_27_28 ; + element[ 1 ]= new Atomic_producer(Event_press_RUN_button); + element[ 2 ]= new Atomic_producer(Event_input_MP_code); + element[ 3 ]= new Alt_31_32 ; + element[ 4 ]= new Opt_33_34 ; + } +};// end class Sq_35_36 + +//---- 26 ---- +class Ct_155_156 : public AND_node_producer_container { +public: // constructor + Ct_155_156 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_35_36 ; + element[ 1 ]= new Sq_35_36 ; + } +};// end class Ct_155_156 + +//---- 27 ---- +class Ct_157_158 : public AND_node_producer_container { +public: // constructor + Ct_157_158 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_35_36 ; + element[ 1 ]= new Sq_35_36 ; + element[ 2 ]= new Sq_35_36 ; + } +};// end class Ct_157_158 + +//---- 28 ---- +class Itp_37_38 : public OR_node_producer_container { +public: // constructor + Itp_37_38 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_35_36 ; + element[ 1 ]= new Ct_155_156 ; + element[ 2 ]= new Ct_157_158 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itp_37_38 + +//---- 29 ---- +class Alt_51_52 : public OR_node_producer_container { +public: // constructor + Alt_51_52 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_write_abstract_syntax_tree); + element[ 1 ]= new Atomic_producer(Event_syntax_errors_detected); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_51_52 + +//---- 30 ---- +class Sq_53_54 : public AND_node_producer_container { +public: // constructor + Sq_53_54 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_input_MP_code); + element[ 1 ]= new Atomic_producer(Event_perform_syntax_analysis); + element[ 2 ]= new Alt_51_52 ; + } +};// end class Sq_53_54 + +//---- 31 ---- +class Ct_159_160 : public AND_node_producer_container { +public: // constructor + Ct_159_160 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_53_54 ; + element[ 1 ]= new Sq_53_54 ; + } +};// end class Ct_159_160 + +//---- 32 ---- +class Ct_161_162 : public AND_node_producer_container { +public: // constructor + Ct_161_162 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_53_54 ; + element[ 1 ]= new Sq_53_54 ; + element[ 2 ]= new Sq_53_54 ; + } +};// end class Ct_161_162 + +//---- 33 ---- +class Itp_55_56 : public OR_node_producer_container { +public: // constructor + Itp_55_56 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_53_54 ; + element[ 1 ]= new Ct_159_160 ; + element[ 2 ]= new Ct_161_162 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itp_55_56 + +//---- 34 ---- +class Sq_71_72 : public AND_node_producer_container { +public: // constructor + Sq_71_72 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_write_abstract_syntax_tree); + element[ 1 ]= new Atomic_producer(Event_read_abstract_syntax_tree); + } +};// end class Sq_71_72 + +//---- 35 ---- +class Ct_163_164 : public AND_node_producer_container { +public: // constructor + Ct_163_164 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_71_72 ; + element[ 1 ]= new Sq_71_72 ; + } +};// end class Ct_163_164 + +//---- 36 ---- +class Ct_165_166 : public AND_node_producer_container { +public: // constructor + Ct_165_166 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_71_72 ; + element[ 1 ]= new Sq_71_72 ; + element[ 2 ]= new Sq_71_72 ; + } +};// end class Ct_165_166 + +//---- 37 ---- +class Itr_73_74 : public OR_node_producer_container { +public: // constructor + Itr_73_74 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_71_72 ; + element[ 2 ]= new Ct_163_164 ; + element[ 3 ]= new Ct_165_166 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_73_74 + +//---- 38 ---- +class Sq_81_82 : public AND_node_producer_container { +public: // constructor + Sq_81_82 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Atomic_producer(Event_read_abstract_syntax_tree); + element[ 1 ]= new Atomic_producer(Event_generate_Cpp_file); + element[ 2 ]= new Atomic_producer(Event_run_Cpp_compiler); + element[ 3 ]= new Atomic_producer(Event_run_executable); + element[ 4 ]= new Atomic_producer(Event_produce_json_file); + } +};// end class Sq_81_82 + +//---- 39 ---- +class Ct_167_168 : public AND_node_producer_container { +public: // constructor + Ct_167_168 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_81_82 ; + element[ 1 ]= new Sq_81_82 ; + } +};// end class Ct_167_168 + +//---- 40 ---- +class Ct_169_170 : public AND_node_producer_container { +public: // constructor + Ct_169_170 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_81_82 ; + element[ 1 ]= new Sq_81_82 ; + element[ 2 ]= new Sq_81_82 ; + } +};// end class Ct_169_170 + +//---- 41 ---- +class Itr_83_84 : public OR_node_producer_container { +public: // constructor + Itr_83_84 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_81_82 ; + element[ 2 ]= new Ct_167_168 ; + element[ 3 ]= new Ct_169_170 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_83_84 + +//---- 42 ---- +class Comp_15_16 : public Composite_producer { +public: // constructor + Comp_15_16 (): Composite_producer(Event_User){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_13_14 ; + } +};// end class Comp_15_16 + +//---- 43 ---- +class Comp_21_22 : public Composite_producer { +public: // constructor + Comp_21_22 (): Composite_producer(Event_MP_code_editor){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itp_19_20 ; + } +};// end class Comp_21_22 + +//---- 44 ---- +class Comp_39_40 : public Composite_producer { +public: // constructor + Comp_39_40 (): Composite_producer(Event_MP_GUI){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itp_37_38 ; + } +};// end class Comp_39_40 + +//---- 45 ---- +class Comp_57_58 : public Composite_producer { +public: // constructor + Comp_57_58 (): Composite_producer(Event_MP_parser){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itp_55_56 ; + } +};// end class Comp_57_58 + +//---- 46 ---- +class Comp_75_76 : public Composite_producer { +public: // constructor + Comp_75_76 (): Composite_producer(Event_Abstract_syntax_tree){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_73_74 ; + } +};// end class Comp_75_76 + +//---- 47 ---- +class Comp_85_86 : public Composite_producer { +public: // constructor + Comp_85_86 (): Composite_producer(Event_Trace_generator){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_83_84 ; + } +};// end class Comp_85_86 + +//---- 48 ---- +class SCHEMA_MP_architecture: public Composite_producer { +public: // constructor + SCHEMA_MP_architecture(): Composite_producer(Event_MP_architecture){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 11 ]; + element[0]= new Composite_secondary_producer(Event_User); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_MP_code_editor); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_25_26_ob(Event_SIMPLE_LIST_25_26); + element[3]= new Composite_secondary_producer(Event_MP_GUI); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_49_50_ob(Event_SIMPLE_LIST_49_50); + element[5]= new Composite_secondary_producer(Event_MP_parser); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_69_70_ob(Event_SIMPLE_LIST_69_70); + element[7]= new Composite_secondary_producer(Event_Abstract_syntax_tree); + // for Root_table update in Composite_secondary_producer::traverse() + element[7] -> type = ROOT_node; + element[8]= new SIMPLE_LIST_79_80_ob(Event_SIMPLE_LIST_79_80); + element[9]= new Composite_secondary_producer(Event_Trace_generator); + // for Root_table update in Composite_secondary_producer::traverse() + element[9] -> type = ROOT_node; + element[10]= new SIMPLE_LIST_143_144_ob(Event_SIMPLE_LIST_143_144); + } +};// end class SCHEMA_MP_architecture + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + // SHOW Diagram + graph_container.insert(pair<int, graph_object>( 1,GRAPH_101_Diagram)); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example28_MP_model_of_MP_architecture.json"); + global_flag = true; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 3 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_15_16 temp_49; temp_49.harvest(); + Comp_21_22 temp_50; temp_50.harvest(); + Comp_39_40 temp_51; temp_51.harvest(); + Comp_57_58 temp_52; temp_52.harvest(); + Comp_75_76 temp_53; temp_53.harvest(); + Comp_85_86 temp_54; temp_54.harvest(); + // harvesting traces for main schema + SCHEMA_MP_architecture temp_55; temp_55.harvest(); + temp_55.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"MP_architecture"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.json new file mode 100644 index 0000000..e69de29 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.mp new file mode 100644 index 0000000..3626418 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.mp @@ -0,0 +1,148 @@ +/* Example 28 + MP compiler/trace generator architecture model + + run for scope 1 or more + +===================================================*/ +SCHEMA MP_architecture + +ROOT User: + (+ [ load_MP_file ] + ( MP_model_editing | browsing_MP_code ) + press_RUN_button + ( browse_event_trace | + syntax_errors_detected ) + [ save_MP_file ] + +) + end_of_session +; +/*--------------------------------------------------*/ + +ROOT MP_code_editor: + (+ + ( MP_model_editing | + browsing_MP_code ) + +) +; + +User, MP_code_editor SHARE ALL MP_model_editing, browsing_MP_code; + +/*--------------------------------------------------*/ + +ROOT MP_GUI: + (+ [ load_MP_file ] + press_RUN_button + input_MP_code + /* trace visualization happens only if there are no syntax errors, + and trace generator has been called */ + ( receive_json_file + visualize_trace | + + syntax_errors_detected ) + [ save_MP_file ] + +) +; + +User, MP_GUI SHARE ALL load_MP_file, save_MP_file, + press_RUN_button; + +COORDINATE $v: visualize_trace, + $b: browse_event_trace + DO ADD $v PRECEDES $b; OD; + +/*--------------------------------------------------*/ + +ROOT MP_parser: + (+ input_MP_code + perform_syntax_analysis + ( write_abstract_syntax_tree | + syntax_errors_detected ) + +) +; + +MP_parser, MP_GUI SHARE ALL input_MP_code; + +User, MP_parser, MP_GUI SHARE ALL syntax_errors_detected; + +COORDINATE $p: press_RUN_button, + $r: input_MP_code + DO ADD $p PRECEDES $r; OD; +/*--------------------------------------------------*/ + +ROOT Abstract_syntax_tree: + (* write_abstract_syntax_tree + read_abstract_syntax_tree + *); + +MP_parser, Abstract_syntax_tree SHARE ALL write_abstract_syntax_tree; +/*--------------------------------------------------*/ + +ROOT Trace_generator: + (* read_abstract_syntax_tree + generate_Cpp_file + run_Cpp_compiler + run_executable + produce_json_file + *); + +Abstract_syntax_tree, Trace_generator SHARE ALL read_abstract_syntax_tree; + +COORDINATE $p: produce_json_file, + $r: receive_json_file + DO ADD $p PRECEDES $r; OD; +/*--------------------------------------------------*/ + +/* trace annotations */ +SAY(" Scope " $$scope " Trace #" trace_id ); + +/*================================================================ + Processing event trace to find dependencies between components. + Produces a UML-like Component Diagram. This code is reusable, + and can be copied/pasted into any other MP model. + See Sec. 5.3 in MP v.4 Manual + ================================================================*/ +GRAPH Diagram { TITLE ("main component interactions");}; + + COORDINATE $E1: ($$ROOT | $$COMPOSITE) DO + COORDINATE $E2: ($$ROOT | $$COMPOSITE) DO + WITHIN Diagram{ + /* For each valid event trace find all root and composite + event instances within the event trace and add them to the graph. */ + Node$a: LAST ($E1); + Node$b: LAST ($E2); + /* LAST option in the node constructors ensures + there will be only a single instance of a node + in the graph for each root and composite event + found in the event trace */ + + /* If event E1 is IN another event E2, add an arrow “E2 calls E1†*/ + IF $E1 IN $E2 THEN + ADD Node$b ARROW("calls") Node$a; + FI; + + /* We look for interactions between components and data structures. + + Interactions between components, usually are represented by coordination of + events in the interacting components (presence of PRECEDES between events + in different threads). + + Interactions between components and data structures are modeled by shared events, + since data structures are usually modeled as a set of operations performed on them. */ + + IF $E1 != $E2 AND + NOT ($E1 IN $E2 OR $E2 IN $E1) AND + ( ( EXISTS $E3: $$EVENT ($E3 IN $E1 AND $E3 IN $E2) ) OR + + ( EXISTS $E3: $$EVENT FROM $E1, + $E4: $$EVENT FROM $E2 ($E3 PRECEDES $E4) ) ) THEN + ADD Node$a LINE("interacts with") Node$b; + FI; + }; /* end WITHIN Diagram */ + OD; + OD; /* end of $E1 and $E2 loops */ + +GLOBAL +/* When trace derivation is completed, data from the traces has been accumulated in + the graph and is ready to be shown */ +SHOW Diagram; + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.temp.txt new file mode 100644 index 0000000..735bdc5 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example28_MP_model_of_MP_architecture tree 3 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.tree new file mode 100644 index 0000000000000000000000000000000000000000..730d1ab81d308c3d53af63bfc976fbfa8c17f02a GIT binary patch literal 24576 zcmd^Hf0R_!eSg62+u2>%-y$MGFi4Ro*_oZ4-6aJ1v8!Ma$bw2J^*Osc3uA_vab^~f z5`&fyYY3%;5^9XKXpJ${8f%Clh7x0qA=FYsImYIAsK<Id9_z7&<MDXxd;NUB_uhH$ zzV~LArtzQl?zwZ{y!W}E`@P@$z2E!2@4eag#~a23{7o`MvQap7hGCCGIT0nUJCl)T z7=~$dkGCfn1};_COT04|*W$<vk(VL&BX1BHxN*pwoMCz3DTtR+75?lh)XAg0YLo?( zCdv}Z8kAd*caogrsBKRDt5&Ub?v-DBMF6+Q2asPU7~}CLk{v-Cdktf2uJ8pay(z%A z&wJH94)E=ld?>wXJT&PXKzk1$KZ^V$@-xWKdr@LspaxEMEv}z7jBIjq%6SQT!5BGb zkk1+hM2BuLD9APjhU(ZDI~rG2|Hfjf;GDyG47BqW$_A9@kul(`|3(}~#u;`K$`+K( zD5s%pK{<Pz;k1tf*V*yJV;Tod;^B5$sWj_|kH5EtjMIEIY7oqm0{U7oPUs({HwE;+ zP`|FQ0lr0&52ZH+_?GC`6*j=vEBR1*lWF|t)oYfmy4f_|zuLY?>H)T01^u%<T?;*4 z3_UIzXKc<5rJU>a`ZP{7ew6Gfz^wrO5|k@Z0_v<5_=>po61QOt+_1!L5;&62o(lc~ z&R>dh2g+$EcZ=&nB4I}`15WlQaD5+e(`9*?D4qS|xEGqe-47hu+aoB+-kyLR9TPaR zRZ2GO$9WFdVK>f;C}*I28MxO7=b4`~asF*wzZ~WJx_ni@*`LIDDrcdrQ?r_zD1Vqn zqM7>3c8YdPWA|k0H-Eo^O7jxxKYyPs%iojb94g-&PyWy}x^5@`!?-KiAG&^SVz6yB zevF5|g!C?catL0IBjZ2i!_Nr8%kiveA9JA>H0oR>>Q=-hB(8f5+!BfF6*$w_G<7Ys z%zor5v_tlBwJhh!^3$SpR*q*o8P(p`jnTfc_kl5R%HA^qSGM;pke}>*CrYySd&PBS zD4KrA?;aRmUKcXyV#zre(ykY`-!K^W;25|C;{@(8B_HI09Xd~;g#9_kb-BFqk!?`2 z+ktyQ%6D?SF_0U&!#On`>w?g;hC3&5uSwkNz`a8_cU>j_<$Ms{u4!B|p;Q=2dG%Ae zBcF1{PY~-;)dbPLDMpuYSk^f)u1VrrB(80O;Y=57p}08`Hy60LSj+6FZ$2zkmLwZO zq3oRJPt1p37J`@d&iD==zCQ#n?VjyDj`qmjJ7t-WWtS+O4WwPqd>;<sllHFR@*y~B z?;37<2u|9&cbv3!MfrnWqHaZ;@&|jzz$t%lNZ?H4YY$O8rOA0XL{2%6fE%wY&N+gy zKB{9KIgfywpsqM4fIEqNMxBAa<vh~*<DHj_<a~Qo)TxNW`p)zBO@YI@ex=<l*MXU0 zJyiCZ%cI@*CK$=W#;9|i%b0^8*@=*KOfcB)TM*y&0M~|cKFaB;wy;^#*gLn(f4SgS z>m&2esS^Bixr{mSD#Y6%{L3VNzs^tnq!^JB$B}0YA=ic~F>h}H->p?x*A9Hi{*3JB z0v<niTy6uVr1Ls*o}0$3Q}$<NJ?sOhJ%!}{-znSKStb0#-Qe0o@?+jy1AQD+Xd$Ej zljr3k!K+4F^E(ep-ot{Y%zI>X-hiCSKOL2PPeaaUX%v0^IVJn^qQspB?v+t+uS?t; zz`aZT#yBlTzsYYbk>yfZ_KMQ^Q1FHJSNYj0VI=|i8mh&(DnHv)Z8%e_gZ)rA<!5IB zH?LZsx82GT-BEF*-@try<CrBOIO#Vu+=>vK^c&uOu$|siE!N$2)rQ>%y{w0PLwY|n zTvp=pz-<q~?UH=Efx8xb_W-v)1gF})U-CTw+@qu5o|L$!fIA+7Q|-PW+dT=~8K0hC z4bhAAQ_x?vy6U`%y6+)>gp76CF|n7FeyZAdp<(vy5dYC+3jfi<Wz3m|I<rl-2gS>N zrd{G<61M=jYfYY~Jl|H+Ost$t<F2&>xm-pY@BUyN@`IGL`2ISK#|G1|m!TZi>p;>^ z*~<y<#wlBp1>7&taZ0iP4m;McMEeHrSIHE1wj~^g{<wZ{8+3BFj&tC5DP4Gf?wVm= zPyX^NGbr9-e<1gVykFb{J^ViOu-6pp&_1+zpBOLY(O7QfuO2pqUws6)CkW^6n;3V@ z6#n2DU2fAj|A@Up`t2Kh{{A?)UeNIl{5B=_uPY(nOZs)b==t!<VXp%I*XY-3lvp#p ziCFB<ar>^Fzl!$XM1BwXBV@D2aHM|^@HW*{=Is~rA=Hny)Cj$`;U*JOdEJ;UzVpeD z57W5&2lg7NH*9>!Z-w&Dk^FOg{PD5)p^qC!;aw<s7x{RvADx$06#FLVpVpn5Ww}n2 z-fn94z7~4-ulrTPYnaBqcCsJf-MH));5Q)`Tv;5fKa|RLv%|gSZC4#@e7nK55BWZ~ zjx)>0_pp0Sad=Dby2A58t$S*ne;oWz*YGH6^Go5>I{z$ir$)i4b^a`H=V~y&kKAK_ zUfRie-~4(DnDe^aw7yYdJ^ca3g>HV1l6c;1@bN|>xPPajJyF@gdPu3vJ59eXQ0}K` zy!&bU52f6<kR7`I#I_*U?1*9Cin3kjA%5O}&ezYo%;JdUPWt5Th1@IkdJfiIN@cm% z>DL9D`^mfmK6@MhZw7gbTi3xlO{vVg)4k@hxkt=9=+nax`hPF<kV1JtuV2=~1NwQF zQ5<>gQj23A1#cgCAA{UaMKrtAaK|O?1aK!qa4PON1KhRXI}6-7fm8m9`QD0%_3!P7 zSa04DatGv7d>=@@55ZSe3p;O`yBzC5VBKxN<|`xxa82R3!1~-0jx&wR!rN~P#|PS< z9F7aLKP4Pz8b4~JxQFyr*6T3zJ+;=bH=>+|audqgqQ0hA!nI3WOyU;QBJQfy$DMGi zC9YrMHUKwF`p0^amh<&CDt|Sb<l*yQpmFiZm6tpP$+N?iOOt=M#N8ut`vs19GxXe{ z)Q4%H?-%YD81Jw<h+intyx{xa4+Jq@Jo9hX<z~OF?lV1DEBwr1!Nc>I_K`=%;$6Sr z&XRumt8Lu3@%l9_PCBadRKz{4<Fs}27{&(Kn^e3MF&6#;SZ#c{{by=LoOWFH?*uqb zk{!7ISCjLM&R-FC){pb;XVw1vW!dg4X!mv9{xtdCk+^q(`>+;vAo|1Omh<`Fsyf4I zK%P=pR)r(uEw8*BA6{NpIgUfjsOfhWIOn;XMDEBqE5O@53h(XA>&Bh)!P|?x5_ui+ z0J4m;0=$`UUhn*7y{R}t#pzjaZmSE9zZ!>~@_xbH!0iz@H7}X(V4bj&Lv>;v+$Z$l zo#z_vVTpT0;Gjo0UV8#<$gBp)k?~o8uRQ;xd{2(i?lZF8<741nkhqf}@|}TvGMD9( z@t)R?v%sB0eoJt$Js_^5#QuTyE9c#7e8KktzA6>}Ie5V8MCuVsAy30YRU`-TAEh$i zY;m4XhJ0vz?ckY@+>5+Y@*z&7ROVYZCZBu1Wgv)k5K~e@yDlyhf|GHlX3z9IZ%e&l zUnWW>k{=r1wh%tVoRl=&-61#`mwN4rpC?kg^n8d)dVYkGl6M~2!#KYO*Egcvi;~vU zL(t{n`XKIz#62!?PXqUCy)NIW5cy=>s`cY+2oA9-B@K5j1SjKJZ@j_J31t76#Pgx? zy%oZTSeBB8J0F5Wyc@vLivhl*Vq#6cd9MC_@SvU}6UBJcp``I>n}~bc6N9)p5;s@k z;=nDOsP|*pM1OO5KSK0_*OdbI+r1Cd4~`9b9g3GJ@qD8F)3AQs-vIL#eY|<_ZrAHM zh_5x?UHbJ<-jW_)*tB2Ri~iGo;gDXR<mG+SVf}oN_cKqfS^Rks?~SnBuD?10xgSS< z8u^&uabz6N{oF$GxcATO>mbJlx)Mxfd7c|f9#7l}K5l2LEYq@FCd+N^dCh)b47Ne> zG9|CPgSpLl=X4NDIBpm1gV(i>m!O9;I^IEiO)0>8R>v_2A8bc=Ku<4+UspJ8AN|zY ze+BLTTCe9IZm0CIv=4o2dVN)Io7!~{?^E)&&-YQ!1+j$Ve%<EdeJzM}us@&_;C(%a zB^>R(?d`-rXNUbqvYj2=jvI%)0sXy;{2_AHB*c)>ztLExNBbWm1K>F;PSBshGyD z8d}$A^|!xB-_L);zEigQC6c>Bd_5H}uXqyM!%nm}O+W8}@S$luR7dNWY5b;+{5|XO zE}wl&M}Ow%JPzV+O56^`D>3~#U-W!1@7<%wzd)~FmVcps-b2ZU74@-5uU8Sb#E+}6 z-{_qr{NA<D#p+4reMCjx^?u$8<F-M^MT~D9rH)nPy+y}Y#NB#<xPc4A4P78^SjVaU zV7|L?{3htIfV{)SI@o7WD%;a;_ZnaDeQ5qG^!~q(Z;bo@rt#us<>$$N?6ZHmPmJtM zj@-wvUGHMN+dql-)^X&1hUfK{eg0z~bfKOf+=t_bk>!4c`FH!|q5I6p-sH%A3**1y zlSkscbsV{WQSx}>T;7kV{gZm`@VFR{08Z`io|g0D*ciCyB<^{E)9m6j`Yp5So7x9? z{WZ(?Qn-Bt<Wv1n&o|DDA>XS~zH?*X-jcYt%l&ZUoA=QVPo};&a{u+e?#Dv;JmrHi z<Qv~0{8d#0t1_S$HEs<O*CcQl54Rsv8*pFH&D;;U@ALM9<DF@uJ~!t12;ioN<4ohq zui){Nwk|X8jBtE__wsNY&j*X=gS*e16~xj$jZ%R3cM)&h>T7>?Nc-6TeH`t3$DQw= ztM>!vG>H4>bA>E{e#e6{hRT<?KwS3);^to<Zb3MX#~b?>*s(j_3xik(`@qot{4T~D z`zEdZMIr5DfBA8=Uva#b$nowKvS{+H43Q6eR!SOfT?kI@YrXcv?+IPVeS?7zKI~}& z?Pfx7a^I`9yA*!5Lc63Fb-#@7&unQB_XD<}+=O~}!_Vz$0Lq6uC~=1*?l5pi8g#uJ z4Utdok9q%a5BU}P6N%qnIRU;uLA$tD%<I{+f`jq*3cQk+@z2TjpGWys)H@A1Uh>KD z>kv8Qz8G&>%(eGWe7|AE+GWevm_~f2{Wbdj*_rlUDz9o4=fBu%|0#XnC9i)?UjL@7 zk9`UDucq-I?sx1by?W#RsOJN3$o1t-$ornIU&g8X$R9}@UcPrCjo_;gFSj&GEs7%0 zuHtKJ6zkvQM*JR#_}p>T<eMvTR{@u3EXVbxv96Bp_i=oLeHhhO<Hz+?T(L;jUn1nH zDEA6oZp<rp|GyG#BYTtDPnpIQljwe<lEXB<+${EKzig)W^4Q<)<9X`xtp?wEA0PHD zl*;k-kbd3UHXY;lGm~i^o5m+EwlS|v<EBeQ`OqbHFMa>bCG>uVX)K*e?`N3C*QeTe zKck|a)N`<`Xg7dU@yIr*&+TL2c1hfBfrCEX_<JAvFSF{GBli>3u9{aoj{6(+=U4|& z_kj?5QFf)CJ3R{AlOZ_8r=B}K1KjhC<S$(L)N`iO?ie^SzUJ}#Gv9d9^8#dVa%7y% zc)Y`}@k_k7jw9o3wj=C6OylI`_Sb#wggvK{@iMn_z=x-24#?i*$hevDf9{h@;=Oeo z89%dJ2O00)R|$K*CF5S^|AtQ<dS-#_O^%Fz8GpzpkHmZHI5G}a@|ea?BI0*sKa1Fy zLU`M-L44oXK)(~h_eQ&m%10aNcO=}-UvN8a{PBuA&Pp~%#$BfIy;ku%pJ!SH-{;x{ z|IKaU{6L#HKkg!NpJv%b<@+@E`Pz9sq#e25d)G;htKSJ?Nwxs)-3!FMcY(O`;W*aY zkgq@Q2eA&;>rgpAj=1fEkoFM=d>rk2{h=18f7mGE^pAurcyINq_BYASX6~`?r}E!^ zVt*@S+{`AH)Bj-_mru7J5bFT@zeqSv)vG91U6YV&qNvZ~_m?C`g>`$f-cI@c-W2`3 zYFCxa`ykteyS`0rGMrg@J%=U<Qh9xwr(frbo)6Rb=>##K5YPOTkG~uIOZ55<;s{D* z{uTOl4>cdM+=oZe$4z?uvOd=7=R<iP^2xg%@($_s92t+8#=lOq=ehAi#qr7N^(*4? zIu7fOJ1zytf$U9=j5C09{dx(wJCW&r`8_E2Bg?pe_4cr@e{{bP*_#|0A29x}8Sk#I z67Q|!$T-1W{}P?@eNb2a`ymJ3WAP>j@c^arxId!z&x@sFO&?EyZ;nrH#0`|nd}G`< z*Z7Ws5AU&flY{tzQkn0$(d7%oKPs+K_qSg}8!tC$aUA=j*P0Cb5$ro&ZxZj{y(8KQ z_y>i1SK>YtIMZmJBG$8MQ^fCB@48f!-?&u#jx{=s;z!fiHqB1Rb@bb;Pj?;tDA+fr z>=%Fj9kGA;_A%iXF|Qx>)i;~Hs^ep)?7!wr(Bu6IeymC7s5nnrbeuMhZOwT8tY3Ge zzpBVLS;tqzP0?{$yHn9FvNt)>kD12ztGxS+iu}{``W120b)0F;ZV~&5Qj6}7D#YVz z-#7y@&uwOV)Z%t!w`$)Q2X5ggIJF;K23&s#PQ~qNKez$7VZyo3p?ST`>-|!?)bw0H zUEgyzNBRx#d<or0mIVKA)$X071E0T<{y>v&HTERyh2K!}JDB&B%6??b{o#*`i+g*? z-?{U1XHYlfFDS8}{*G@x-W!64-zeiBqxF;iMAH1wfo9={9#Hyn?TB&e{oe<h#rwpE zp_?PkkYi+mc+Psy1pPVdMO7kxAFA@&r)m6qz3@k!6DiKu^mr7UxUb<&4(yduS&t`z zee~irzOc9kcCGPAKjG!@9&3DIaSZHV;~OK6(fCfHzqn80O%CRX#&>4){^EV#PTF_! zI*j`&8h=<EBj<y{YxeM6tVge6e2<`f6XoBad{49=z@3*kTjC-uEH~PB?YB;x)B1Nn z@Ui_qF75bl^>{n%cVLQx?10~wX$x{I43)pte4pNe_X+eh(UJD{Tk*{RpD+G&<am1d z_&tov!}}A!%?ihv#z&3za=qWoJ3Aa7;GGkWGmZN%61*P2L3T2?Mc7FkCE3YBQC}PX zML|wSj+?SSRkA(cxe}MR$`bom{+<fy*Y!be|G0DiSA^qC<J7c3zYq$R|KG#P7O@{& zE$Xuz9(nlt6F&dDKG>Ec>y!4V4kh-dL(tpz(B3f0CsA&KtrS{-`LCPozoUNtVkZ4Q z&>IgVQP<hgV&G>ki1+oj`1f5;;rz}P;m7Z734Pz5<^I0ZE8dLI#%qtxNwN|jC9d}a zlE-5QUVR;u`a0ynKh6B^^UuTR;}PVe$R`BOk$7UId-ar9KPRD=ABz6k$55U^owF_6 zx`sO^anJ|jUIXrJfm87f^Sv+i@&Rx^0^f(gRkbo-D6XMZ;F?+y<F$(ZKjYKatX3hg z=ab~5#Q&G($7l!t_lJMiIWLGM9P8E3+aAO^=oh5`@BAQ^aHjFiz00qa{Kv((DZS<L zkZVD!_+9WqE@RFz^s~QJth0ZQ>l?y(iJKD3eM0am{V}ile+a{pHxJ(J9^PG}^9KCV z-f%p({}XE8jVF1&?;8dGEXlp#iqPLH?GLXP;6D(K3;bT_U^q^jZ-;^yrFWVSp?W<m z^?C$)J*wL;>;HrtSNy*u{9lR~{l6sVS)qT9k5`lCDkn|8Qz7!n@nik-b1TeOJg*A< z{?k$X#o1QjUtbn&c;`R&<2B5`=U|7g%l^E9{=O;ttKwH-Z+so^_qU4Ye)LbJkSI>L zkp7y+l)4>w|FDcV+A1ptS4d9PKKm8*{C|9#=uefX&-(ZWpTB4bayzpBrZM$u`+0gl z@`fvCe%93|*%goDls3_ysX-1BxY{VS&Xn?LcBAZJTASdR-G<+swPCz2ZWF%~tFJHr zUhHQ+dFKb)a%BHV3)DwStcTt<!+rtdMSl3_D6vjC*HSymKGx4uzmwDa&}x<|>hw$b zHbB1NHrBF+%S&8A;&uSHyX}88ZkoLNq`Z)m<%QhNev<cB8T%yJ1AZ_43-sfD;JkkP z5nU&y@!cy!{mG*`junNEfIoRG92f8>N5XNY@x$=;9}mX|+J7P(7ij;<a2(z<+H9Zl z=<6w;zK-klH2-o!zeYMDeN$q)`A2sixON14dQqPD`<;LC+3&L<{E)BAe_HbVvwSc4 zCHnsVXZ(LjdM*xbN^MR?QkjxP|M$q;n8^(!GmST_wvvUxP3cl<uryLgRTl?y`BYsx zn;$7z!|6<_J~vWQ$JK>gu2gI(rZ?v^DJwZxO6RgnR*O1?Bz>*V4crDMi(K-YzHLcD z#=0%ELO%-4Sh-<3_O>{0bN-480yd!HAV{p#P`Z>WnD~0#jmsw`OS#SIK`XT-l`Rz; zvZ<{WNokdm1DRB_E^01cY`c9VnJuM<)2SgVwJl#@@tfByzhU)?K5NDDHEXR{rxi<R zXW~6pXM0U=I=Qis+}wO!|Kioltf5qKu#nDEm#Zo4i`5oJpcCqLEq%A>e|XkH#C)=V z|EAftc%WD+Kx0<%j%+Ep%_<dAsm8T9ld?9ZvZTCRVPYni93u6Q-kVSgl~H%o*^NyD zh1}L64hTVd&}2;XSY7QGf6mvrXe??)W3iC)oj9MExFrpBi4iN-3xlwRGs%q_bytto z-QMa|Q8eCRMdR^_^#3q%0IqmK>LuD9wWOx%mg46eRuoqg;t;~bV&br)$BMT%<qN4| z(dxf(r8O{8D&?{*+(is9jU`kB?M#;XN)-yZLJ?{wJ53EuEGD<4l&b2=V_FdGon2OE zw>a$Tw7O*T-JMo<q9K(XA|ouKWsKb<VdzSuh16gw4dUC1Fl-uy#x3dMNHUY&j-e%S z%)WK7ku?!Spu%!e+e)cIHkq;1nMg5p`$#G~n2M~q-HMW)CSh*z_*(hQNU?T#2}<d) zV(pFMJk24VbbO_w%j)R97_(_OSJ<qKC5Z;^D5i^3w-!*xN`~0dC504hC+teIw6B!4 zG@s{A)o#iag%hYR=0*xIL2?N7eNpN}n&wS?U#xr_S>4~aw6C{sO*LD7-AFc#4qDlf z&GpF)cfJIb)h>o#iFR4hZj34%%RoAlF5MxBGr6s)f;EsE$qv<z<k2^AObY7gv^o;p z@y<@GGZ9g$!l{DQ)nRqT`KY_Y>W()RMzY)odJK=TDKyZD)V9>%h?wkXcxVK@DUV+5 znq`ao`>e$)Ry3^Hlq{qcXEIi-!-~Zx73nKHfN&b+i}9!xhlQ?M)!(~(<>Iw{O-pmR z!caP!gx2F-R=m4zOIa^<1LZ@Py|c$kw7XvuQ7aMik|esUM0Z`jT(hoFJ|vrB<u?~o z85lX)MLt;~4Vz+^>ias%==#2R`S=rkJYPsHpdiy_&lW{jqp^5IIINx?R&$gbLUlfq zOlL{|ogG$ZoDRC8R#%J;x}#Qi%<Vx}m(|tne(mnEy1Ts{>glk0;<fm}n$^=~^>nv* z6c&Xxqw!cJ>Bv~3-4(C)K+g6?%>Kbmg<LkhomZDjH$(0j)X`iPE@DPHOH+$=RjkhB z29uc@bOBY>KP@?TO(e%oI+>|ml`mPbE-Thu@3By}+m5K!5##F}9acxYZYfN;6T)}G z7U&RqgqCjP^e@+lb8u^&a4d8g9qH_@nX!ge&KV|r+DN7pnZeF|#wQyvgoQNx8>S4F zgqm5i`flo5xz?ODi~hT8{j6C_SKY9B)tcpN`)Ybq!%0+Sk<h$q9o<Q^b4xI%Xd+gf z+MF-lAx=QDgpfBuel`)|n8!FRgoL$4VQwTO)`w_UyXM#7x8b(EejOa37|dmhB`lIA zruaarP+RUmgk7MO9;zW#!kO35r0=leT%s<YhlP+G#d@p`AvGpW6f=jUz)BkJY@bv} zWq3G)i*HZV>WS%V4VH>%yuB9BOe`!r@i-qPI;=#zdN^G`AX7|1;-QEl<?G!&R!_TT zjBu>cj&2_{bk>om!?K>=#G^AQOYw!6h^eA^^Kv{HU0IXMv!D%0*j3C@kcI(#jhDZ+ z2(ViGKpgiq7Q?xY77-k{&16z0A_FYzwbTo&^to*9ip7XSR<7#pYh<)5U+YqZ!HN@& z!W^Qp+R~<!h{E)%9qni@+DJ4A7cis+$lKxj-dSn>wI_h?su4aVrT3&ABNA<I605Z9 zb#xGdzG$qcmbAs|3Lo*RQkxvYN`>`&Yh7w+BNm_JKq?cVlbLijbrGKv0*?qU7;UfY mCNKe_@k*Vb*dv+<V~llG!&zjC4a$QQXKYQEHvJzR|NjQ@tX;?e literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.txt new file mode 100644 index 0000000..adb8b70 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.txt @@ -0,0 +1,19 @@ +generating traces for scope 3 +completed User: 4368 traces (0 MARKed) 60000 events + average 13.7363 ev/trace min 5 max 17 + +completed MP_code_editor: 14 traces (0 MARKed) 48 events + average 3.42857 ev/trace min 2 max 4 + +completed MP_GUI: 584 traces (0 MARKed) 8108 events + average 13.8836 ev/trace min 4 max 19 + +completed MP_parser: 14 traces (0 MARKed) 116 events + average 8.28571 ev/trace min 4 max 10 + +completed Abstract_syntax_tree: 4 traces (0 MARKed) 16 events + average 4 ev/trace min 1 max 7 + +completed Trace_generator: 4 traces (0 MARKed) 34 events + average 8.5 ev/trace min 1 max 16 + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.cpp new file mode 100644 index 0000000..f4f35f1 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.cpp @@ -0,0 +1,587 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA stack1 trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, float > p2_number_attribute; +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( p2_number_attribute[event1] != p2_number_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + p2_number_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!p2_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("p2",p2_number_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + + if(p1_num_attr->first == "p2"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + p2_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_push + , Event_pop + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_13_14 + , Event_SIMPLE_LIST_53_54 + // ADD operations + // ROOT events + , Event_Stack + // main schema event + , Event_stack1 }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "push" + , "pop" + , "SIMPLE_LIST_13_14" + , "SIMPLE_LIST_53_54" + , "Stack" + , "stack1" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_5(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_pop){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_6(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_push){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_19(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_pop){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_20(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_push){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +bool Quantified_expr_7_8(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int x_variable; + int pivot_x_variable = Root_table[Event_Stack]; + + // loop 1 for x_variable + for( x_variable = 0; x_variable < len; x_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ x_variable * len + pivot_x_variable +]) && + ( + (Stack[x_variable]-> name == Event_pop) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( special_function_5(current_host, x_variable ) < special_function_6(current_host, +x_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 6 ---- +class SIMPLE_LIST_13_14_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_13_14_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_7_8(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_13_14_ob class + +//---- 7 ---- +class SIMPLE_LIST_53_54_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_53_54_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute p2 assignment + p2_number_attribute[0]=(1 / (float)( 1 + 1 )) ; + { // COORDINATE operation + int thread_length = -1; + int e_variable; // thread variable + vector<int> e_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for e_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + e_variable = i; + if( e_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_pop)|| (Stack[i]->name == Event_push)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = e_variable_list.begin(); s != e_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) e_variable_list.push_back(i); + } + } }; + // no processing needed for the default source e_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = e_variable_list.size(); + if(thread_length != e_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + e_variable= e_variable_list[i]; + if( ( special_function_19(current_host, e_variable ) == special_function_20(current_host, +e_variable ) )){} + else{ + if( (Stack[e_variable]->name == Event_pop)){ + // attribute p2 assignment + p2_number_attribute[0]*=2.500000E-01; + }// end THEN + else{ + // attribute p2 assignment + p2_number_attribute[0]*=7.500000E-01; + }// end IF + }// end IF + // attribute p2 assignment + p2_number_attribute[e_variable]= + p2_number_attribute[0] ; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_pop)|| (Stack[i]->name == Event_push)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + { // SAY_event generation + string message; + ostringstream convert; + convert << event_name_string[Stack[ x_variable ]->name]; + convert <<" with probability "; + convert << + p2_number_attribute[x_variable] ; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Trace "; + convert << + trace_id_attribute ; + convert <<" for scope "; + convert << 1 ; + convert <<" has probability "; + convert << + p2_number_attribute[0] ; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_53_54_ob class + +//---- 8 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_push); + element[ 1 ]= new Atomic_producer(Event_pop); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 7.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + } +};// end class Alt_1_2 + +//---- 9 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_3_4 + +//---- 10 ---- +class Comp_15_16 : public Composite_producer { +public: // constructor + Comp_15_16 (): Composite_producer(Event_Stack){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_3_4 ; + element[ 1 ]= new SIMPLE_LIST_13_14_ob(Event_SIMPLE_LIST_13_14); + } +};// end class Comp_15_16 + +//---- 11 ---- +class SCHEMA_stack1: public Composite_producer { +public: // constructor + SCHEMA_stack1(): Composite_producer(Event_stack1){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 2 ]; + element[0]= new Composite_secondary_producer(Event_Stack); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new SIMPLE_LIST_53_54_ob(Event_SIMPLE_LIST_53_54); + } +};// end class SCHEMA_stack1 + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example29_stack1_Bayesian_probability.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_15_16 temp_12; temp_12.harvest(); + // harvesting traces for main schema + SCHEMA_stack1 temp_13; temp_13.harvest(); + temp_13.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"stack1"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.mp new file mode 100644 index 0000000..b0fc26d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.mp @@ -0,0 +1,95 @@ +/* Example 29 + + An example of Bayesian probability calculation. + + run for scopes 1, 2, 3, and up. + + This example illustrates the main parts in probabilistic MP model construction: + + 1) selection of the search space - the finite number of event instances, + including the event trace, which is an event by itself. + 2) Rules for event attribute p2 calculation. + 3) The p2 attribute represents the probability for a particular event + instance (including the trace) to appear on the MP output. + + When run on Firebird, the output also shows Type 1 trace probability + (p=nnnn on the right scroll bar), + which will be different from the calculated Type 2 values. + + Note. For this simple example it is possible to run more than 5 iterations + of push/pop (beyond the max standard scope of 5) by using the explicit iteration option, + where M is the desired number of iterations. + + ROOT Stack: (*<0..M> ( <<0.75>> push | <<0.25>> pop ) *) + this will require to update the first step in p2 assignment (line 57) + it will become p2 := 1/(M + 1); +==================================================================*/ + +SCHEMA stack1 + +ROOT Stack: (* ( <<0.75>> push | <<0.25>> pop ) *) + /* probabilities for alternatives are here to enable also + the default Type 1 trace probability calculation, in order + to compare it with the Bayesian */ + BUILD { + /* if an element is retrieved, it should have been stored before */ + ENSURE FOREACH $x: pop FROM Stack + ( #pop BEFORE $x < #push BEFORE $x ); + } +;/* end BUILD for Stack */ + +/*==============================================================*/ +/* here starts the part of model responsible for Bayesian logic */ +/*==============================================================*/ +ATTRIBUTES{ number p2;}; +/* the attribute p2 represents a probability of event + to be included in the current trace. + Since the whole trace also is an event, + attribute p2 for it specifies the trace probability - + the target of all this example */ + +/* first, let's bring the probability to select the number of iterations. + For scope $$scope there may be 0, 1, 2, ... $$scope iterations. + Total ($$scope + 1) choices. + Hence: assuming that each choice has equal probability 1/($$scope + 1) + stand alone p2 is attribute of the whole event trace */ + + p2:= 1/($$scope + 1); +/* here the default is THIS.p2 := 1/($$scope + 1); + p2 is an attribute of the whole trace. + The interpretation: "the probability of getting the trace segment so far" */ + +/* by now the valid trace has been derived + and we can proceed with decorating its events with attribute values. + COORDINATE traverses its thread in order of derivation (the default) */ +COORDINATE $e: (pop | push) +DO + IF #pop BEFORE $e == #push BEFORE $e THEN + /* if the condition above holds, the choice of event $e + is unambiguous: it should be 'push', + and its probability is the same as for the previous event */ + ELSE + /* otherwise we have to choose one of the pop/push + with corresponding probability. + Notice that the option #pop BEFORE $e > #push BEFORE $e has been eliminated + by ENSURE filter during the valid trace derivation */ + IF $e IS pop THEN p2 *:= 0.25; + ELSE p2 *:= 0.75; /* for 'push' */ + FI; + FI; + + /* Now we can set the probability for $e, + this is done for the purpose to show the sequence of pop/push later. + This $e.p2 attribute is not actually needed in order + to calculate p2 for the trace */ + $e.p2 := p2; +OD; + +/*=================================================*/ +/* for debugging purposes let's show the sequence + of pop/push with their probabilities in order of derivation */ +COORDINATE $x: (pop | push) + DO SAY($x " with probability " $x.p2); OD; + +/**** final report ****/ +SAY("Trace " trace_id " for scope " $$scope " has probability " p2); diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.temp.txt new file mode 100644 index 0000000..50e59ae --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example29_stack1_Bayesian_probability tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.tree new file mode 100644 index 0000000000000000000000000000000000000000..af9dfb6cd6b91ce926aba098b9f1773fab8c88f8 GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.txt new file mode 100644 index 0000000..ecf6b39 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.txt @@ -0,0 +1,9 @@ +generating traces for scope 1 +completed Stack: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed stack1: 2 traces (0 MARKed) 8 events + average 4 ev/trace min 3 max 5 + +Elapsed time 0.000252 sec, Speed: 43650.8 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.cpp new file mode 100644 index 0000000..7609167 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.cpp @@ -0,0 +1,587 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Data_flow trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +report_object REPORT_29_basic_statistics; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_working + , Event_writing + , Event_reading + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_17_18 + , Event_SIMPLE_LIST_46_47 + // ADD operations + // ROOT events + , Event_Writer + , Event_File + , Event_Reader + // main schema event + , Event_Data_flow }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "working" + , "writing" + , "reading" + , "SIMPLE_LIST_17_18" + , "SIMPLE_LIST_46_47" + , "Writer" + , "File" + , "Reader" + , "Data_flow" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_32(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_writing){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_36(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_reading){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_40(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_working){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 4 ---- +class SIMPLE_LIST_17_18_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_17_18_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Writer_source = Root_table[Event_Writer]; + // lists of shared events for Writer + vector<int> Writer_writing_list; + + int File_source = Root_table[Event_File]; + // lists of shared events for File + vector<int> File_writing_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Writer_source ]){ + if( Stack[i]->name == Event_writing ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Writer_writing_list.begin(); + s != Writer_writing_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Writer_writing_list.push_back(i); + } + }; + if(in_matrix[i * len + File_source ]){ + if( Stack[i]->name == Event_writing ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = File_writing_list.begin(); + s != File_writing_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) File_writing_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = File_writing_list.size(); + if(Writer_writing_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = File_writing_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Writer_writing_list[i], File_writing_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_17_18_ob class + +//---- 5 ---- +class SIMPLE_LIST_46_47_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_46_47_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Reader_source = Root_table[Event_Reader]; + // lists of shared events for Reader + vector<int> Reader_reading_list; + + int File_source = Root_table[Event_File]; + // lists of shared events for File + vector<int> File_reading_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Reader_source ]){ + if( Stack[i]->name == Event_reading ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Reader_reading_list.begin(); + s != Reader_reading_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Reader_reading_list.push_back(i); + } + }; + if(in_matrix[i * len + File_source ]){ + if( Stack[i]->name == Event_reading ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = File_reading_list.begin(); + s != File_reading_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) File_reading_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = File_reading_list.size(); + if(Reader_reading_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = File_reading_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Reader_reading_list[i], File_reading_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // basic_statistics title generation + ostringstream convert; + convert <<"scope= "; + convert << 1 ; + convert <<" trace "; + convert << + trace_id_attribute ; + REPORT_29_basic_statistics.title = convert.str();} + // CLEAR basic_statistics + REPORT_29_basic_statistics.clean(); + { // increment report + ostringstream convert; + convert <<"#writing= "; + convert << special_function_32(current_host, Root_table[Event_Data_flow]); + REPORT_29_basic_statistics.report_contents.push_back(convert.str());} + { // increment report + ostringstream convert; + convert <<"#reading= "; + convert << special_function_36(current_host, Root_table[Event_Data_flow]); + REPORT_29_basic_statistics.report_contents.push_back(convert.str());} + { // increment report + ostringstream convert; + convert <<"#working= "; + convert << special_function_40(current_host, Root_table[Event_Data_flow]); + REPORT_29_basic_statistics.report_contents.push_back(convert.str());} + // SHOW basic_statistics + report_container.insert(pair<int, report_object>( 1,REPORT_29_basic_statistics)); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_46_47_ob class + +//---- 6 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_working); + element[ 1 ]= new Atomic_producer(Event_writing); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 7 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_3_4 + +//---- 8 ---- +class Itr_9_10 : public OR_node_producer_container { +public: // constructor + Itr_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_reading); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_9_10 + +//---- 9 ---- +class Sq_11_12 : public AND_node_producer_container { +public: // constructor + Sq_11_12 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_writing); + element[ 1 ]= new Itr_9_10 ; + } +};// end class Sq_11_12 + +//---- 10 ---- +class Alt_19_20 : public OR_node_producer_container { +public: // constructor + Alt_19_20 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_reading); + element[ 1 ]= new Atomic_producer(Event_working); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_19_20 + +//---- 11 ---- +class Itr_21_22 : public OR_node_producer_container { +public: // constructor + Itr_21_22 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_19_20 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_21_22 + +//---- 12 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_Writer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_3_4 ; + } +};// end class Comp_5_6 + +//---- 13 ---- +class Comp_13_14 : public Composite_producer { +public: // constructor + Comp_13_14 (): Composite_producer(Event_File){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_11_12 ; + } +};// end class Comp_13_14 + +//---- 14 ---- +class Comp_23_24 : public Composite_producer { +public: // constructor + Comp_23_24 (): Composite_producer(Event_Reader){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_21_22 ; + } +};// end class Comp_23_24 + +//---- 15 ---- +class SCHEMA_Data_flow: public Composite_producer { +public: // constructor + SCHEMA_Data_flow(): Composite_producer(Event_Data_flow){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 5 ]; + element[0]= new Composite_secondary_producer(Event_Writer); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_File); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_17_18_ob(Event_SIMPLE_LIST_17_18); + element[3]= new Composite_secondary_producer(Event_Reader); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_46_47_ob(Event_SIMPLE_LIST_46_47); + } +};// end class SCHEMA_Data_flow + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example30_Local_Report.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_5_6 temp_16; temp_16.harvest(); + Comp_13_14 temp_17; temp_17.harvest(); + Comp_23_24 temp_18; temp_18.harvest(); + // harvesting traces for main schema + SCHEMA_Data_flow temp_19; temp_19.harvest(); + temp_19.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Data_flow"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.mp new file mode 100644 index 0000000..0271dd2 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.mp @@ -0,0 +1,29 @@ + +/* Example 30. Local Report within a trace. + run for scope 1 and up. +*/ +SCHEMA Data_flow + +ROOT Writer: (* ( working | writing ) *); + +ROOT File: (+ writing +) (* reading *); +Writer, File SHARE ALL writing; + +ROOT Reader: (* ( reading | working ) *); +Reader, File SHARE ALL reading; + +REPORT basic_statistics { + TITLE ("scope= " $$scope " trace " trace_id);}; + +/* Clear the contents after a trace derivation has been completed */ +CLEAR basic_statistics; + +/* fill the Report with data from the current event trace */ +SAY("#writing= " #writing) => basic_statistics; +SAY("#reading= " #reading) => basic_statistics; +SAY("#working= " #working) => basic_statistics; + + +/* In order to make it visible together with the event trace, the SHOW command is needed */ +SHOW basic_statistics; + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.temp.txt new file mode 100644 index 0000000..a6480c7 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example30_Local_Report tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.tree new file mode 100644 index 0000000000000000000000000000000000000000..4baaa76eb8f0417a2b3533c505c95e7657dde1bd GIT binary patch literal 8192 zcmeHMe~c7Y9e+E!Gq-yO*Mn9pSnC021;q3A$Nj(-+T(h7hX;puCs0fr_x9#s>)!6N zJ9`vDYBfzu@J9#|(-=jg4Pw(jDru0ArU^|$5D7sf{i9KWq-h#Ms#c=Jm>ECc_ulO8 z+nGC}|CpG*&AT`A-sgSZ_kDlOo4H$zu`qrM&{A<w-Db2QwCHp+v`bL$XUt$Pgq$#A z7}9l)M*j-bwWvL)kD+cxm1I$1fMpT<oCx|Sz=w(McC-fCooJiTPNL>Wju6Ka_1Ng> zggZ-D{^G+u<;PG@m}&Tl;y@Vp0Au?KrLR$2UwnKA>ql$XKE9_VAKLmtx^ZHpFSO7l z=@)9_#c6>Y&oH(ro3q@*7>BOhV`5CfEkyrujJL}69?=q#>$45_Kf(ASv@fAujP_Nu z_o96r^#ZNmqtSW>drPDBxIFjK{rNDh%kMwZARpQKDtJDM_8MC9gSP_YtH<4txSMyu z-IBQX1<qi5mQCPN**EFuj?|A968c#{UesVu?89Axameqsi*XL(xH^5qZ{0P(Ek&C` zyA16HkFVx$&d1O{r1E%t5qPEZ0LI6H$32|EdiRpwa=m_>`+mrq;ZAs09vXa7uN?ni z1O6)kc&T5G|3m|RPXJ!(S<!F3-8}o2#N0V?H>BMT-Ua8`_qhOEJNA1dRE@t}wrsmc z?}9^Iaoi7UINCdvLJ@o?V3*}+PoiCc_N5SWUk-793dEhR!=0H2_eLG=O@X6aM#X8z zI+sJt-e0ubD<PIo&sgqNta~klcrw52tQ7u?bjJ(FU6;5UAvRf<+V9>3{+8hN@&d>G zUE=OY+&^pk4&;kyg3r*H+on<OtohqAFY`%3(74jh3a%pnC+)1@Is<Uh&IbF=&nUkt z_`U$Vv^Q`%(mpTlM#zr1b4So_NBt`5lcMUZ<F`<!$Ww@8gT*gx8XMgbfrXt8?8nyF zbg3}oKCKCR98%Zhae}z7;txywv3c;w4^{kei9b0H{*xrvFC)%F)Sih@9^v`<Q;_eJ zCj9+XjXA4ue_9j%d<Oe_Lj(Sszj9W~{jCY`n@gJTuglWTS1|8w4gB!WPlN9rb-z-j z)y81QzV57*{GZ|W(YzV%`{26c-H9o#^f#`z&Uxg~!ou$&Vdl1mYx3Ohd2>|+<%05y z;>Rn(Vt-y-bbzl@WFe0!FfRJU=$w3BTx<m2h~V?q<?*{cEbOuqe)L)BaTjn?^WgFl zR|M{Wz<K$F^F1r~@f>hn;6r|J4+Y?kVmyxVV{-lPgYSiTa6gr}7lAt=P9N?oxIXJ? zM^SI}Mv22W{aA_{D)r}{Okt+zp7&!3XRvcuokT-?U+`mH#1|DG??peBaEhFl{1_MU zN5#i?*^eb0_uHgwQ;bEKJ&4CPtrPL=?_PoauA=@P^}6735sy?Tu4W2Tmit~XKL_ED z!ET>$y5%}O4RQ4+@ZMJEyNFvVJZ^hoe>z0ZQ<QUNAMjC}pVy(qv%9{K=Xm?#anc+S z@w6Z!;<Gh^b30|T2AuaiS|M>Az;#B1{yx{RpFWIj^i~n8yAdIObw4BOc)g5t?c2}x z;QbivNEhi9_NwKnomhWT<##(8*3YTqjq59Xq?1_{@5+3l;GO~Qa03qcgi3Ya$JFu0 zbq)6NA?IP~CyzAj>p1vNs`DuiRr%M$-lx=YKR?bR8ya|D1Mhito{PMt@Lo~J{k(tG zokvOTf9T?QCiBqSu$z3Y1;vTM7Or<5qj|1D^LRY=lfIDm<h*ivKVmNu7-t3>ZK}@O z7%=bM;CbZVN<Q}T>|Y`x&wl`&+!k@5;P6t)&u>hx<!wy|*WV0!@ABSv4K~o^;Qgz1 z|Gg#$?`PgUf8QG*Kc}B4{Cv6qyvs%0^7w2eBo05Q&f@~_S%Tx+fFA^YG1^UNAJCcm zAjz}pp!0b(jyT^cUC6&i@N#nesgE}Ww^qd|{@#hTQ0t4Ar=sjfr>Wmy9haOTY9asd zJnM9+JUm|LypmA+>(>(e;N3hA?<4B`D(?ohzma!NeGIAd=EQAQaf;qXpf}X|;>vvJ z>8<|x#qF_G#d~vodAjlZw+(CU($)Mpg+A2!;>vvJ<MYm2Uf!R^+@cPDsl5mPSMq7{ zJa_<n&o;>SUG$;W7gy#@=&|;`azw=t-bIe2qTqfIfRlN&ejoh1$%}rhkMD#Z<06Op zaIXa5WS&*lrSCLztjpu(3*_ImJi*V8XLXUMUem?<!RunJIdK;x?xMgM?8mjdITDaJ zujzB-+jG(Jq0t@q9u!sb{B`7?dGq`?zU6G8Jh1%RbS^a5AI~{kX<s!z;^)a5ew~qC z4fc@kjEd(d_qUtDIBo=v-*wd4M)L+Vk$1OfWZ!0tIbY=K^ZWYvb?Dsm4)zgnZZg=P zHOl8c{JV4Ee-{?{{|{kWzqanh70y`0^Ec@Hhq$FuJvZFt{O9p2dFDOD5zcA##YOy5 zsq%g>zaAC7pmQDKSK+(Mxz3Z*XZL>v%i+U0!8n7heqMYRZ15*|Kv41VYQZ>zJ$!1s z{|V0Gj5pXVf>R5=6V?}3#vzYe2&CxG03P2H>x(Pnan87n8X~@%g?ya%OXR=5{>8-5 z@VLQ#ewN}X$~OFlnE%t~ha%s7kPo%KxY9omw_)*Jcy(BO7hV(*--DM%=$@?NY?tSh z9V8#_cQ)*Q3HarARBsJe?#uHF&hvyf8jv48v_EtH$M)X^^BCpK9&08YwQ{ye-&^%^ zrcktEkEiXlIh`x)YtH7272BMKYqS(9ws)<U3I)5oFl`rRvKiBwweog(aXC9v%vokS zV`mF_&bD;$sWkN^yUdY7CY>|KtYV>Lcg_@-1dkXyN?F?~8Dmy@$|^O{e{8b(-A((@ zOKl0=Xj}8vK9eLc?et{MTBI&qD3%wMi&iF!^`<L%E=_sCY!-70lTTV1yS!+8c+0kt zL33nye8P<Pn(;oRC)H!7dSj&u_Ck-S7)fE$%fh{lv}Q69(AVSdOLetPrpr)O*-qO~ zb2d|M*_|s)l8CwV?&ttM!I<4<Pcy%WC(U?DTqcrcA{B#4N|;y38zrk;$=S{M^lWxF z@6o5zxiVB><*+l-dogW8gZaf{gWE>OCd?_ToGE3Ce6r}$X+MePN<O={Vww5MOq5g( zQ<j>B?UI=^Q}>7tV&m=*En9%*GgfqbuNjY<@kES}iMW|a#P$@*!gX4NcDc?VCmGrR z`=nJ`CS^&iGaI!K^M-m`(m9eFo0_$n`r(dXZ!4CdqseS8Ywza{)dH8aO6FvtlAmg+ z6rmPz9pe+$nTf90_)!1YpxHk%(mK8;U9$RfIWyjE#(Nf)>2^vwYi%&mZ6<p3fsw)f zv9@eJQ?h2@%%+gPb$IK*m?=d}cB{ARnz(Y-w>P!hrF6z>H_C-dDPy(50Hy3?#fEa> zG<uFaf1#&ivzV)tq3EL7YxYG+jqA*KR|{X?M4Tk!$||X3G*igKYw~ui${XeDnb|45 zm`i8#^8XVz9@VXxqP;(c=bV{Ln#q*7>NS&n&2-i?Qz<jm-Mmsp)B5)2l`^2#w{vJJ TZl)3#7g4vq{X_fzU)%rRhm$G) literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.txt new file mode 100644 index 0000000..3f90b15 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.txt @@ -0,0 +1,15 @@ +generating traces for scope 1 +completed Writer: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed File: 2 traces (0 MARKed) 5 events + average 2.5 ev/trace min 2 max 3 + +completed Reader: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed Data_flow: 3 traces (0 MARKed) 21 events + average 7 ev/trace min 6 max 8 + +Elapsed time 0.000458 sec, Speed: 78602.6 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.cpp new file mode 100644 index 0000000..4a2faff --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.cpp @@ -0,0 +1,542 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA simple_message_flow trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +report_object REPORT_19_statistics; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_send + , Event_receive + , Event_does_not_receive + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_32_33 + // ADD operations + // ROOT events + , Event_Sender + , Event_Receiver + // main schema event + , Event_simple_message_flow }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "send" + , "receive" + , "does_not_receive" + , "SIMPLE_LIST_32_33" + , "Sender" + , "Receiver" + , "simple_message_flow" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_20(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_does_not_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_21(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_22(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_23(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_24(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 6 ---- +class SIMPLE_LIST_32_33_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_32_33_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Sender_source = Root_table[Event_Sender]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int Receiver_source = Root_table[Event_Receiver]; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Sender_source ]){ + if( ( (Stack[i]->name == Event_send)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + Receiver_source ]){ + if( ( (Stack[i]->name == Event_receive)|| (Stack[i]->name == Event_does_not_receive) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(y_variable,x_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // statistics title generation + ostringstream convert; + convert <<"scope= "; + convert << 1 ; + REPORT_19_statistics.title = convert.str();} + if( ( special_function_20(current_host, Root_table[Event_simple_message_flow]) +> 0 )){ + { // increment report + ostringstream convert; + convert <<"trace "; + convert << + trace_id_attribute ; + convert <<" sent "; + convert << special_function_21(current_host, Root_table[Event_simple_message_flow]) +; + convert <<" received "; + convert << special_function_22(current_host, Root_table[Event_simple_message_flow]) +; + convert <<" ratio "; + convert << (special_function_23(current_host, Root_table[Event_simple_message_flow]) +/ (float)special_function_24(current_host, Root_table[Event_simple_message_flow]) +) ; + REPORT_19_statistics.report_contents.push_back(convert.str());} + }// end THEN + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_32_33_ob class + +//---- 7 ---- +class Itr_1_2 : public OR_node_producer_container { +public: // constructor + Itr_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_send); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_1_2 + +//---- 8 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_receive); + element[ 1 ]= new Atomic_producer(Event_does_not_receive); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_5_6 + +//---- 9 ---- +class Itr_7_8 : public OR_node_producer_container { +public: // constructor + Itr_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_5_6 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_7_8 + +//---- 10 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Sender){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_1_2 ; + } +};// end class Comp_3_4 + +//---- 11 ---- +class Comp_9_10 : public Composite_producer { +public: // constructor + Comp_9_10 (): Composite_producer(Event_Receiver){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_7_8 ; + } +};// end class Comp_9_10 + +//---- 12 ---- +class SCHEMA_simple_message_flow: public Composite_producer { +public: // constructor + SCHEMA_simple_message_flow(): Composite_producer(Event_simple_message_flow){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_Sender); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Receiver); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_32_33_ob(Event_SIMPLE_LIST_32_33); + } +};// end class SCHEMA_simple_message_flow + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + { // increment report + ostringstream convert; + convert <<"total traces "; + convert << total_segments ; + REPORT_19_statistics.report_contents.push_back(convert.str());} + // SHOW statistics + report_container.insert(pair<int, report_object>( 1,REPORT_19_statistics)); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects + JSON<<",{\"SAY\":["; + string c = "\""; + for(vector<string>::iterator p2 = global_SAY_list_999999.begin(); + p2 != global_SAY_list_999999.end(); p2++){ + JSON<<c<<*p2<<"\""; c = ",\"";} + JSON<<"]}"; +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example31_Global_report.json"); + global_flag = true; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_13; temp_13.harvest(); + Comp_9_10 temp_14; temp_14.harvest(); + // harvesting traces for main schema + SCHEMA_simple_message_flow temp_15; temp_15.harvest(); + temp_15.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"simple_message_flow"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.mp new file mode 100644 index 0000000..ad102ee --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.mp @@ -0,0 +1,31 @@ +/* Example 31. Global report. + run for scope 1 and up +-----------------------------*/ +SCHEMA simple_message_flow + +ROOT Sender: (* send *); + +ROOT Receiver: (* (receive | does_not_receive) *); + +COORDINATE $x: send FROM Sender, + $y: (receive | does_not_receive) FROM Receiver + DO ADD $x PRECEDES $y; OD; + +REPORT statistics { TITLE ("scope= " $$scope);}; + +/* for each valid trace add report records */ +IF #does_not_receive > 0 THEN + SAY( "trace " trace_id " sent " #send + " received " #receive + " ratio " #receive/#send ) => statistics; +FI; +/* Since no CLEAR operation is present, the contents of Report is preserved + and augmented for each valid event trace */ + +GLOBAL + +SAY( "total traces " #$$TRACE) => statistics; +/* Global expression #$$TRACE provides number of valid event traces derived + for the current scope */ + +SHOW statistics; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.temp.txt new file mode 100644 index 0000000..d3ba045 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example31_Global_report tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.tree new file mode 100644 index 0000000000000000000000000000000000000000..f1da8411024c50cc2a7cdea7b64e1d66d2023094 GIT binary patch literal 7680 zcmeHMe{9@V9e;P1b1q4nCh1^XDdX0KQpV_VcWIJt{go!^lF~LI$yQprx|chrF<j0! z+m|-gn7VF4P)b!5sHQQdF{;8Qgu1E<Qw6A-1`<_4fY5~a0~J(F(=?%KOx09PHlOc% zc5I)WX#XLkeIwu3e*S#F@B6;L{Onw3j3w~b3{GU>up7Z+;7h>c;Ge{iW=vv(F)P6s zZY97t+4tgJCyq_d02s*;0T+ijCwma%qt1mp2E9ae__OM8e;?*cg6{{Hzz=}egHPZn zk)1Kp$!T<Wc-)?GE^1f^cen=NTqal?e}b$O<~YLGAx-}}aX*oNU=Am%0l3Fu7kp$t z;oy(r{Fv}#0C$41a(-H|PXgZr%qbkF8N*b39at)};46}`mXf^B9t6aG4&%$f&jH{g z?ynY%pU3@H@Jrxr;BSC02md3EzmeXzVixpB?3;1Y!{@n;_|lEmCy0M9Wg!N9{C0{% zf?0P!_Fs${`B`RPXKY$4D)zs9ljBrkuQZGe4)2!OT*JKlokE`b?*{B}^hC*%Ki&MX zR$#vOfd3Tu`{0y!H^qDl;@~}wi;HaV;|!%-w3p!iO6Vc}X~9Wj$iL0FPyW5b%_?_Z zFV8Ia%U%_{FHj=h6hk8GF5vEizR!Snfv3T@#F)K3Cj5FguE#OH3Vc8KJ>Um|dU+h$ zh2DApP`*vXL|ztStfU&IJt^cQ_I8}=lgoXUc=uye7yNoP&#{<0gI#gYxVikt^)ttR zt_FW30`K@+VpA)|p~3I>$T&VNbS#K-<9IRxN9%sZSvTsDulrdKM>Z2_72wXopKHL+ zfqx$SXYl*WF>YTZ?xGJjw+QaC5BEC7G0rUNcULj~1@Je+J|dg^{fFwqz7~y>*ye<( zR~3o9^a}Y?Vh>&z>)j*bd0$Qcd<ScKH>k(W1M)B0Cns~ZqS!ZMqVIeVV-s3&*1iSV zx;XboB(6Cwa4m6WuZSZm%*&g0Bv=jEPFw@HwGlWct`ht1PpH2F?>#qqFc<t{Z}sGC zC%#G6{%4ej@B`{fVwtPkMu&Iu{`5uob4Q#_>e{sZNSyKY9`JOKsXU)ihx7Oe2VYtQ zpZ4Kr9Q@H}Jo!5^uZ|->-26Ks{2hrq<HJ28aP&+d;?I{;Oswn0xQOFf`08Ao@#n=_ z$}jIZ!SnyTW9NlhKOFm|b-&|}j-VX(+eJtJTu`nKk+L%I^Q*yeVWIcS{hTGeHTn0t zqxTIbuYL#n{}e|&9KC;ETyIF<bw{6@&u>BBjfi}9ac(}}0<Mm<dG>MtHYY?sZNc*{ zhjq3kn7uLrx7xw20j?9cdx7hu>h{&gCbv_2exdv%^7ny)HeIo|gt3H^*lT~W*75rA z>TYWoYa@?|LVEkdSi%MD+!n^z$aA8QzQHh-a6I1VfAe*<Jt69FJh5;cqEF7__dEEh zh4A@0tBdBDs-wQi_c_i!g6}JI#GxB;Fcac=FoSp;O`t9g|G?@YxjWC0A0@W;w6&i2 ze`2&B@Yjp=0OXHD&x7FmXjL9b?EQ1r29iS^Zsh)pyP0aAz+7j7ezB3)L_DuILEj6( z`~0TwCuGOV3)yk1gX}>3y!n5Q`O(MyWTOs<=I5VVeExvG%g}cvh__KM0eycB-sd-c zKN7ofzqQ%%*A~hnuP<4>@W(%}zOCSI2lbG>{JHdAaNMVwpGxe9Cx^B<`uj+~SI4~X zeVAZ*{a}XnUEo<8FDG`2vIc#oAM>`kPrF*p;#y)4Cux7^zSl_Xw@Jzu?>Z^bKGMC0 z|GfHK8P;v19*9EqbXOQlxPZQN7-OSeh(h{Sg|UR=c{@Pw7v=z72ZH(2UdQa!K{*@s zLqz`K`}B_BeSXvTlVU%bqf39B1J99cP<}yNXAl?2%P!c7!%uEqdGmYwb3T7h5bw$c z^gaN+IQ(Qg_2T#MV*32~$8ojKxeb_O8+p@Lw<8$C;V0XvE5AMqd2Wy5J(%`4<KPd0 z?}zLZbx$wvIZk(Qrh|I|xNq@!z5F~KoRj9aoq9{M$t2np*DEr>*+)MIeYB5$zE1S> z7laPd%-8#3Sf_tofqXt2#=7+=v5`PsNo<eguRFfa8H}*+7mj`C+uWY>Vh)L|dE6SJ z{QrJj)a&zcs%yNWGiy7IUs+{+$-553C#tU_jzqL>>m&4aZywCoTT|B;BK&~(68ZCv z?+-49v4rDx>_A-RqVE%ih}S>*ZD4(`A~!At<!s~)QE2{O1#ujNpN~2}<*A!be4pjM zzx}38Jg+Yc{Sy1}x2>Jjr=}>>u)FuTcy2$Mo6xk<f_knvdak;9p8O8!k=WfQgnUOr z<WX-zeE0Z9zqO0*&n84(Je3gr{@KL*_mJV5c)c0+fjw_G;yY4<zZQXa><g{q9pvwq z5yyAy#QyW9kR=?&jwtYb=>rFM3o-n#4wzpXz5V?ZU$4$3?m{8#{E~hmo)4qMi_-je znlXwep3DC4JT1w{{vWU(FR1p4B(oj{ZwG$_e65%}fTQ<z_j^T0Qp7#$;=H~+lh>KO zA#6L@?axb&+Z2tH*dG$sZfBie;c-d2?@{)aB;GA??7)HVG4?L-5pi(8pibR-A??;4 z(Qn*n^8LkLtdsiiKJdNZlaNQsa{O1B;OIs4Cc?k<=(ul2+e+(_*gs#h9u2OK*ZmXG zG7`IxwDybo<NfYvG>&u=al7P*bsS5IeG<M~@O=`#Ti8!0VbAYh8Xp`Qlh{u$QT-&@ zZV9i8$PcIApIm%CiRn+0+{f|%|Be3v#9J~7Q_6HcrIbvWzOzXOOWH)fwA@gqD<wsq zRtzJ5P?0A~+M%RT&?-u!TCP-0c~UJYO<L7-&y%{QnMRu<mM@s9R^|#DAfxB$Qqq-* zrkhRL#MhL9DN|Oj7&x4#d2$)~AwI7xFl(nPw=Zx@8pAGK(Nm*JK~ZNEeQDm*rqzP1 z%qV5kXf7*<WHLoI^AjbdHE54kF<Om^Qc&|Hd9qsOMjEYSLpw)y49Gi%#>VAbR?g*G z)N(;rrlHR<r_nI60>e}bM)T0FzEOE}U}Sg{=&mHan`Yab>!M;5bhSc@ZP2T5AFZ*0 zATs?gpk5a?w-hzSkjpUA8CYIxl$`B|7|TSAWtYsTShDb`(IldWaODrSIp_GQC|7g^ z4@dJh$Ii@p*;`Q~ea@G2-Eyuc)rT(?a!&4S;3w<lOb3EyR7+-KIX|Nw<YA03A{Q~% z*+3KLI_2EDRzoQv;*=4UylE<Wd8w(H`BK`{^9997r&Np~jC%c$smmETyG#s_0M9u- z-Yxeu8Cq2@C?c;4TDhq5yee0xClp;0i)*Zw)yJxejKS1B?d{{Ey?q18N-3|Fn~=kb zE>CFHa<QpeL0UTJ`4ZWL#my-7y{LnAa#u@5M;T10CDoke(>3-D50CZ_?dlyLXz9~5 zy{JM!ku&S$OjqM!8ILNJ60UJ}{<O8vH4xdB>yUGq26IYrioy*<cgmHN#M<ilf;Xm< zC9RMzIZw1}o0H0P#hhJc%$5sNx>i<?@KB`S0|c^c*7qxud4wsD%bA><=?siyd*tl; zrMgn$(!!0{RLGf(oXG|<JKLR{RCTliLm@w>T$$9!=s@2<|G*fJZg!oV?UHyD)6Iyi qu1-|p6v}leO$nE7OgkxFOgGE}Qd~k-i}h*V8PXrezoh&R;{RVGg#4TU literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.txt new file mode 100644 index 0000000..276153c --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.txt @@ -0,0 +1,12 @@ +generating traces for scope 1 +completed Sender: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed Receiver: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed simple_message_flow: 3 traces (0 MARKed) 13 events + average 4.33333 ev/trace min 3 max 5 + +Elapsed time 0.000259 sec, Speed: 81081.1 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.cpp new file mode 100644 index 0000000..ea4e30a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.cpp @@ -0,0 +1,1065 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Car_Race trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +graph_object GRAPH_73_Winner_trace; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Start + , Event_drive_lap + , Event_finish + , Event_winner + , Event_break + , Event_provide_start_signal + , Event_watch + // composite events + , Event_Car + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_40_41 + , Event_SIMPLE_LIST_92_93 + // ADD operations + // ROOT events + , Event_Cars + , Event_Judge + // main schema event + , Event_Car_Race }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Start" + , "drive_lap" + , "finish" + , "winner" + , "break" + , "provide_start_signal" + , "watch" + , "Car" + , "SIMPLE_LIST_40_41" + , "SIMPLE_LIST_92_93" + , "Cars" + , "Judge" + , "Car_Race" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_15(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_16(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_17(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_drive_lap){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_18(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_drive_lap){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_19(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 6 ---- +int special_function_20(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_break){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 7 ---- +int special_function_21(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_drive_lap){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 8 ---- +int special_function_22(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_drive_lap){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 9 ---- +int special_function_29(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_winner){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 10 ---- +int special_function_34(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 11 ---- +int special_function_35(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_winner){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 12 ---- +int special_function_62(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> follows_matrix [ pivot * len + i ]){ + if( Stack[i]->name == Event_finish){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 13 ---- +int special_function_74(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_winner){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 14 ---- +int special_function_76(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_drive_lap){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 15 ---- +bool Quantified_expr_23_24(Coordinate * current_host){ + //===================================== + // quantifier FOREACH DISJ with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int c1_variable; + int pivot_c1_variable = 0; + int c2_variable; + int pivot_c2_variable = 0; + + // loop 1 for c1_variable + for( c1_variable = 0; c1_variable < len; c1_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ c1_variable * len + pivot_c1_variable +]) && + ( + (Stack[c1_variable]-> name == Event_Car) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for c2_variable + for( c2_variable = 0; c2_variable < len; c2_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ c2_variable * len + pivot_c2_variable +]) && + ( + (Stack[c2_variable]-> name == Event_Car) ) + // checking DISJ + && c2_variable != c1_variable + && !(current_host-> eq_matrix[ c2_variable * len + c1_variable ]) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for FOREACH + if( ( (! ( ( special_function_15(current_host, c1_variable ) == 1 )&& ( special_function_16(current_host, +c2_variable ) == 1 ))|| ( special_function_17(current_host, c1_variable ) == special_function_18(current_host, +c2_variable ) ))&& (! ( ( special_function_19(current_host, c1_variable ) == 1 ) +&& ( special_function_20(current_host, c2_variable ) == 1 ))|| ( special_function_21(current_host, +c1_variable ) >= special_function_22(current_host, c2_variable ) )))) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 16 ---- +class SIMPLE_LIST_40_41_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_40_41_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_23_24(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( ( special_function_29(current_host, Root_table[Event_Cars])<= 1 )){} + else{ + throw failed; // REJECT + }// end IF + if( (! ( special_function_34(current_host, Root_table[Event_Cars])> 0 )|| ( special_function_35(current_host, Root_table[Event_Cars]) +> 0 ))){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_40_41_ob class + +//---- 17 ---- +class SIMPLE_LIST_92_93_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_92_93_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Judge_source = Root_table[Event_Judge]; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Judge_source ]){ + if( ( (Stack[i]->name == Event_provide_start_signal)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + { // COORDINATE operation + int thread_length = -1; + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int Cars_source = Root_table[Event_Cars]; // source of coordination + + // create lists of coordinated events + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Cars_source ]){ + if( ( (Stack[i]->name == Event_Start)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + + { // SHARE ALL operation + create_matrices(); + + int Cars_source = Root_table[Event_Cars]; + // lists of shared events for Cars + vector<int> Cars_finish_list; + + int Judge_source = Root_table[Event_Judge]; + // lists of shared events for Judge + vector<int> Judge_finish_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Cars_source ]){ + if( Stack[i]->name == Event_finish ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Cars_finish_list.begin(); + s != Cars_finish_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Cars_finish_list.push_back(i); + } + }; + if(in_matrix[i * len + Judge_source ]){ + if( Stack[i]->name == Event_finish ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Judge_finish_list.begin(); + s != Judge_finish_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Judge_finish_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Judge_finish_list.size(); + if(Cars_finish_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Judge_finish_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Cars_finish_list[i], Judge_finish_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int w_variable; // thread variable + vector<int> w_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for w_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + w_variable = i; + if( w_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_winner)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = w_variable_list.begin(); s != w_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) w_variable_list.push_back(i); + } + } }; + // no processing needed for the default source w_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = w_variable_list.size(); + if(thread_length != w_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + w_variable= w_variable_list[i]; + if( ( special_function_62(current_host, w_variable ) == 1 )){} + else{ + throw failed; // REJECT + }// end IF + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // Winner_trace title generation + ostringstream convert; + convert <<"winner trace "; + convert << + trace_id_attribute ; + convert <<" for scope "; + convert << 1 ; + GRAPH_73_Winner_trace.title = convert.str();} + { // COORDINATE operation + int thread_length = -1; + int car_event_variable; // thread variable + vector<int> car_event_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for car_event_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + car_event_variable = i; + if( car_event_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Car)) && ( special_function_74(current_host, +car_event_variable ) > 0 ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = car_event_variable_list.begin(); s != car_event_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) car_event_variable_list.push_back(i); + } + } }; + // no processing needed for the default source car_event_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = car_event_variable_list.size(); + if(thread_length != car_event_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + car_event_variable= car_event_variable_list[i]; + // WITHIN Winner_trace + int laps_75_node_var = -1; + {// NEW_NODE + ostringstream convert; + convert << special_function_76(current_host, car_event_variable ) ; + convert <<" laps"; + laps_75_node_var = GRAPH_73_Winner_trace.create_new_node(convert.str());} + // add_arrow for GRAPH_73_Winner_trace + int temp_1_1 ; { + ostringstream convert; + convert <<"Start"; + temp_1_1 = GRAPH_73_Winner_trace . create_new_node (convert.str());} + { + ostringstream convert; + convert <<"followed by"; + GRAPH_73_Winner_trace.add_arrow(temp_1_1,laps_75_node_var,convert.str());} + // add_arrow for GRAPH_73_Winner_trace + int temp_2_2 ; { + ostringstream convert; + convert <<"finish"; + temp_2_2 = GRAPH_73_Winner_trace . create_new_node (convert.str());} + { + ostringstream convert; + convert <<"followed by"; + GRAPH_73_Winner_trace.add_arrow(laps_75_node_var,temp_2_2,convert.str());} + // add_arrow for GRAPH_73_Winner_trace + int temp_3_1 ; { + ostringstream convert; + convert <<"finish"; + temp_3_1 = GRAPH_73_Winner_trace . find_or_create_new_node +(convert.str());} + int temp_4_2 ; { + ostringstream convert; + convert <<"winner"; + temp_4_2 = GRAPH_73_Winner_trace . create_new_node (convert.str());} + { + ostringstream convert; + convert <<"followed by"; + GRAPH_73_Winner_trace.add_arrow(temp_3_1,temp_4_2,convert.str());} + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + // SHOW Winner_trace + graph_container.insert(pair<int, graph_object>( 5,GRAPH_73_Winner_trace)); + // CLEAR Winner_trace + GRAPH_73_Winner_trace.clean(); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_92_93_ob class + +//---- 18 ---- +class Itr_1_2 : public OR_node_producer_container { +public: // constructor + Itr_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_drive_lap); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_1_2 + +//---- 19 ---- +class Opt_3_4 : public OR_node_producer_container { +public: // constructor + Opt_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_winner); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_3_4 + +//---- 20 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_finish); + element[ 1 ]= new Opt_3_4 ; + } +};// end class Sq_5_6 + +//---- 21 ---- +class Alt_7_8 : public OR_node_producer_container { +public: // constructor + Alt_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_5_6 ; + element[ 1 ]= new Atomic_producer(Event_break); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_7_8 + +//---- 22 ---- +class Sq_9_10 : public AND_node_producer_container { +public: // constructor + Sq_9_10 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Start); + element[ 1 ]= new Itr_1_2 ; + element[ 2 ]= new Alt_7_8 ; + } +};// end class Sq_9_10 + +//---- 23 ---- +class Itr_44_45 : public OR_node_producer_container { +public: // constructor + Itr_44_45 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_finish); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_44_45 + +//---- 24 ---- +class Sq_46_47 : public AND_node_producer_container { +public: // constructor + Sq_46_47 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_provide_start_signal); + element[ 1 ]= new Atomic_producer(Event_watch); + element[ 2 ]= new Itr_44_45 ; + } +};// end class Sq_46_47 + +//---- 25 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_Car){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_9_10 ; + } +};// end class Comp_11_12 + +//---- 26 ---- +class Comp_42_43 : public Composite_producer { +public: // constructor + Comp_42_43 (): Composite_producer(Event_Cars){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_Car); + element[ 1 ]= new SIMPLE_LIST_40_41_ob(Event_SIMPLE_LIST_40_41); + } +};// end class Comp_42_43 + +//---- 27 ---- +class Comp_48_49 : public Composite_producer { +public: // constructor + Comp_48_49 (): Composite_producer(Event_Judge){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_46_47 ; + } +};// end class Comp_48_49 + +//---- 28 ---- +class SCHEMA_Car_Race: public Composite_producer { +public: // constructor + SCHEMA_Car_Race(): Composite_producer(Event_Car_Race){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_Cars); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Judge); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_92_93_ob(Event_SIMPLE_LIST_92_93); + } +};// end class SCHEMA_Car_Race + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example32_Local_graph.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_11_12 temp_29; temp_29.harvest(); + // harvesting traces for ROOT events + Comp_42_43 temp_30; temp_30.harvest(); + Comp_48_49 temp_31; temp_31.harvest(); + // harvesting traces for main schema + SCHEMA_Car_Race temp_32; temp_32.harvest(); + temp_32.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Car_Race"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.mp new file mode 100644 index 0000000..625c9e8 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.mp @@ -0,0 +1,67 @@ +/* Example 32. Local graph within the event trace. + run for scope 1 and up +------------------------------------------------*/ +SCHEMA Car_Race + +Car: Start + (* drive_lap *) + ( finish [ winner ] | break); + +ROOT Cars: {+ Car +} + BUILD{ + /* everybody who finishes drives the same number of laps */ + ENSURE FOREACH DISJ $c1: Car, $c2: Car + (#finish FROM $c1 == 1 AND #finish FROM $c2 == 1 -> + #drive_lap FROM $c1 == #drive_lap FROM $c2) AND + /* if it breaks, then earlier */ + (#finish FROM $c1 == 1 AND #break FROM $c2 == 1 -> + #drive_lap FROM $c1 >= #drive_lap FROM $c2); + + /* there always will be at most one winner */ + ENSURE #winner <= 1; + + /* if at least one car finishes, there should be a winner */ +ENSURE #finish > 0 -> #winner > 0; }; + + +ROOT Judge: provide_start_signal + watch + (* finish *); + +COORDINATE $a: provide_start_signal FROM Judge + DO COORDINATE $b: Start FROM Cars + DO ADD $a PRECEDES $b; OD; + OD; +Cars, Judge SHARE ALL finish; + +COORDINATE $w: winner + DO ENSURE #finish BEFORE $w == 1; OD; + +/* ======================================================= + Here starts the trace view graph construction. + Operations are performed after a valid event trace has been + successfully derived. +=========================================================*/ +GRAPH Winner_trace { + TITLE( "winner trace " trace_id " for scope " $$scope);}; + +/* We want to render a graph extracted from each valid event trace, +so the graph is cleared before the trace processing starts. */ + + COORDINATE $car_event: Car SUCH THAT #winner FROM $car_event > 0 + DO + +/* the following WITHIN command provides a context for performing + operations on the Winner_trace graph */ +WITHIN Winner_trace{ + Node$laps: NEW(#drive_lap FROM $car_event " laps"); + ADD NEW("Start") ARROW("followed by") Node$laps; + ADD Node$laps ARROW("followed by") NEW("finish"); + ADD LAST("finish") ARROW("followed by") NEW("winner"); +}; /* end of WITHIN Winner_trace body */ + + OD; /* end of Car loop */ + +SHOW Winner_trace; +CLEAR Winner_trace ; + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.temp.txt new file mode 100644 index 0000000..e3481d7 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example32_Local_graph tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.tree new file mode 100644 index 0000000000000000000000000000000000000000..bdd9b8d633d57e4c4bb31de9a79577394bb6460f GIT binary patch literal 16896 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 NuGasb|Np!B|6kcho@f97 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.txt new file mode 100644 index 0000000..bf61533 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.txt @@ -0,0 +1,15 @@ +generating traces for scope 1 +completed Car: 6 traces (0 MARKed) 23 events + average 3.83333 ev/trace min 3 max 5 + +completed Cars: 4 traces (0 MARKed) 20 events + average 5 ev/trace min 4 max 6 + +completed Judge: 2 traces (0 MARKed) 7 events + average 3.5 ev/trace min 3 max 4 + +completed Car_Race: 4 traces (0 MARKed) 38 events + average 9.5 ev/trace min 8 max 11 + +Elapsed time 0.000926 sec, Speed: 95032.4 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.cpp new file mode 100644 index 0000000..fdb7dd8 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.cpp @@ -0,0 +1,434 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Statistics trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, float > count_number_attribute; +//-- node attributes -- + map<int, float > NODE_count_number_attribute; +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( count_number_attribute[event1] != count_number_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + count_number_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!count_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("count",count_number_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + + if(p1_num_attr->first == "count"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + count_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +graph_object GRAPH_13_Stat; +report_object REPORT_32_Total_event_statistics; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_a + , Event_b + , Event_c + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_14_15 + , Event_SIMPLE_LIST_28_29 + // ADD operations + // ROOT events + , Event_A + , Event_B + // main schema event + , Event_Statistics }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "a" + , "b" + , "c" + , "SIMPLE_LIST_14_15" + , "SIMPLE_LIST_28_29" + , "A" + , "B" + , "Statistics" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_14_15_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_14_15_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // Stat title generation + ostringstream convert; + convert <<"Total event count as graph for scope "; + convert << 1 ; + GRAPH_13_Stat.title = convert.str();} + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_14_15_ob class + +//---- 2 ---- +class SIMPLE_LIST_28_29_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_28_29_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->type == Atom || Stack[i]->type == ROOT_node || +Stack[i]->type == Composite_event_instance_node) ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + // WITHIN Stat + int e_16_node_var = -1; + {// LAST_NODE + ostringstream convert; + convert << event_name_string[Stack[ x_variable ]->name]; + e_16_node_var = GRAPH_13_Stat.find_or_create_new_node(convert.str());} + // attribute count assignment + NODE_count_number_attribute[e_16_node_var]+=1 ; + // add_arrow for GRAPH_13_Stat + int temp_1_2 ; { + ostringstream convert; + convert <<"trace "; + convert << + trace_id_attribute ; + temp_1_2 = GRAPH_13_Stat . find_or_create_new_node (convert.str());} + { + ostringstream convert; + convert <<"in trace"; + GRAPH_13_Stat.add_arrow(e_16_node_var,temp_1_2,convert.str());} + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_28_29_ob class + +//---- 3 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_a); + element[ 1 ]= new Atomic_producer(Event_b); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 4 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_3_4 + +//---- 5 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_A){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_3_4 ; + } +};// end class Comp_5_6 + +//---- 6 ---- +class Comp_9_10 : public Composite_producer { +public: // constructor + Comp_9_10 (): Composite_producer(Event_B){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_c); + } +};// end class Comp_9_10 + +//---- 7 ---- +class SCHEMA_Statistics: public Composite_producer { +public: // constructor + SCHEMA_Statistics(): Composite_producer(Event_Statistics){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 4 ]; + element[0]= new Composite_secondary_producer(Event_A); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_B); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_14_15_ob(Event_SIMPLE_LIST_14_15); + element[3]= new SIMPLE_LIST_28_29_ob(Event_SIMPLE_LIST_28_29); + } +};// end class SCHEMA_Statistics + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + { // Total_event_statistics title generation + ostringstream convert; + convert <<"Total event count as Report"; + REPORT_32_Total_event_statistics.title = convert.str();} + // WITHIN Stat + // loop_over_graph for GRAPH_13_Stat + { // loop over graph GRAPH_13_Stat + int a_33_node_var ; + int end_limit_2 = GRAPH_13_Stat .nodes.size(); + for(int temp = 0; temp < end_limit_2 ; temp++){ + a_33_node_var = temp; + if( ( + NODE_count_number_attribute[a_33_node_var] > 0 )){ + // add_arrow for GRAPH_13_Stat + int temp_3_2 ; { + ostringstream convert; + convert << + NODE_count_number_attribute[a_33_node_var] ; + temp_3_2 = GRAPH_13_Stat . create_new_node (convert.str());} + { + ostringstream convert; + convert <<"total count"; + GRAPH_13_Stat.add_arrow(a_33_node_var,temp_3_2,convert.str());} + { // increment report + ostringstream convert; + if( a_33_node_var >= 0 && a_33_node_var < GRAPH_13_Stat .nodes.size()) + convert << GRAPH_13_Stat .nodes[ a_33_node_var ]; + else convert << "Undefined node"; + convert <<" event count: "; + convert << + NODE_count_number_attribute[a_33_node_var] ; + REPORT_32_Total_event_statistics.report_contents.push_back(convert.str());} + }// end THEN + } } // end GRAPH_13_Stat loop + // SHOW Stat + graph_container.insert(pair<int, graph_object>( 4,GRAPH_13_Stat)); + // SHOW Total_event_statistics + report_container.insert(pair<int, report_object>( 5,REPORT_32_Total_event_statistics)); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects + JSON<<",{\"SAY\":["; + string c = "\""; + for(vector<string>::iterator p2 = global_SAY_list_999999.begin(); + p2 != global_SAY_list_999999.end(); p2++){ + JSON<<c<<*p2<<"\""; c = ",\"";} + JSON<<"]}"; +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example34_Graph_as_data_structure.json"); + global_flag = true; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_5_6 temp_8; temp_8.harvest(); + Comp_9_10 temp_9; temp_9.harvest(); + // harvesting traces for main schema + SCHEMA_Statistics temp_10; temp_10.harvest(); + temp_10.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Statistics"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.mp new file mode 100644 index 0000000..873759c --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.mp @@ -0,0 +1,50 @@ +/* Example 34. + Accumulating and rendering statistics from event traces. + Graphs as container data structures +============================================================*/ +SCHEMA Statistics +ROOT A: (* ( a | b) *); +ROOT B: (+ c +); + +GRAPH Stat{ TITLE("Total event count as graph for scope " $$scope);}; + +ATTRIBUTES { number count;}; + +COORDINATE $x: $$EVENT DO + WITHIN Stat{ + Node$e: LAST ($x); /* creates new node with label $x if needed, + or finds the existing one */ + Node$e.count +:= 1; + /* add more data to the node */ + ADD Node$e ARROW("in trace") LAST("trace " trace_id); + }; +OD; + +GLOBAL +/* Render the accumulated statistics as Report. + The Stat graph is used as a data structure. */ +REPORT Total_event_statistics{ TITLE("Total event count as Report"); }; + + WITHIN Stat{ + FOR Node$a DO + IF Node$a.count > 0 THEN + /* Nodes with “trace†labels have count attribute 0. + Create and connect new node with the total count to each event node */ + ADD Node$a ARROW("total count") NEW (Node$a.count); + /* graph loop works only with the initial graph contents, + new nodes added within the loop body + don’t participate in the iterations. + That prevents from infinite looping. */ + + /* Add to the Report as well. + Use the graph as a source of accumulated data. */ + SAY(Node$a " event count: " Node$a.count) + => Total_event_statistics; + FI; + OD; /* end FOR */ + }; /* end WITHIN */ + + /* render statistics as a graph */ + SHOW Stat; + /* show the Report */ + SHOW Total_event_statistics; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.temp.txt new file mode 100644 index 0000000..b800742 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example34_Graph_as_data_structure tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.tree new file mode 100644 index 0000000000000000000000000000000000000000..90dd8676a6fc63852524cb4c48a4aac8b356c575 GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.txt new file mode 100644 index 0000000..fa6fd01 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.txt @@ -0,0 +1,11 @@ +generating traces for scope 1 +completed A: 3 traces (0 MARKed) 5 events + average 1.66667 ev/trace min 1 max 2 + +completed B: 1 traces (0 MARKed) 2 events + +completed Statistics: 3 traces (0 MARKed) 14 events + average 4.66667 ev/trace min 4 max 5 + +Elapsed time 0.000288 sec, Speed: 72916.7 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.cpp new file mode 100644 index 0000000..4fcba83 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.cpp @@ -0,0 +1,1150 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Finite_State_Diagram_with_path trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +graph_object GRAPH_73_Path; +graph_object GRAPH_92_Diagram; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Start + , Event_S1 + , Event_empty + , Event_a + , Event_b + , Event_S2 + , Event_End + , Event_S3 + , Event_S4 + // composite events + , Event_Start_to_S1 + , Event_S1_to_S3 + , Event_S1_to_S4 + , Event_S2_to_S1 + , Event_S2_to_End + , Event_S3_to_S3 + , Event_S3_to_S4 + , Event_S4_to_S2 + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_35_36 + , Event_SIMPLE_LIST_53_54 + , Event_SIMPLE_LIST_101_102 + // ADD operations + // ROOT events + , Event_S1_behavior + , Event_S2_behavior + , Event_S3_behavior + , Event_S4_behavior + // main schema event + , Event_Finite_State_Diagram_with_path }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Start" + , "S1" + , "empty" + , "a" + , "b" + , "S2" + , "End" + , "S3" + , "S4" + , "Start_to_S1" + , "S1_to_S3" + , "S1_to_S4" + , "S2_to_S1" + , "S2_to_End" + , "S3_to_S3" + , "S3_to_S4" + , "S4_to_S2" + , "SIMPLE_LIST_35_36" + , "SIMPLE_LIST_53_54" + , "SIMPLE_LIST_101_102" + , "S1_behavior" + , "S2_behavior" + , "S3_behavior" + , "S4_behavior" + , "Finite_State_Diagram_with_path" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_35_36_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_35_36_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int S1_behavior_source = Root_table[Event_S1_behavior]; + // lists of shared events for S1_behavior + vector<int> S1_behavior_S2_to_S1_list; + + int S2_behavior_source = Root_table[Event_S2_behavior]; + // lists of shared events for S2_behavior + vector<int> S2_behavior_S2_to_S1_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S1_behavior_source ]){ + if( Stack[i]->name == Event_S2_to_S1 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S1_behavior_S2_to_S1_list.begin(); + s != S1_behavior_S2_to_S1_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S1_behavior_S2_to_S1_list.push_back(i); + } + }; + if(in_matrix[i * len + S2_behavior_source ]){ + if( Stack[i]->name == Event_S2_to_S1 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S2_behavior_S2_to_S1_list.begin(); + s != S2_behavior_S2_to_S1_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S2_behavior_S2_to_S1_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S2_behavior_S2_to_S1_list.size(); + if(S1_behavior_S2_to_S1_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S2_behavior_S2_to_S1_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S1_behavior_S2_to_S1_list[i], S2_behavior_S2_to_S1_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_35_36_ob class + +//---- 2 ---- +class SIMPLE_LIST_53_54_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_53_54_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int S3_behavior_source = Root_table[Event_S3_behavior]; + // lists of shared events for S3_behavior + vector<int> S3_behavior_S1_to_S3_list; + + int S1_behavior_source = Root_table[Event_S1_behavior]; + // lists of shared events for S1_behavior + vector<int> S1_behavior_S1_to_S3_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S3_behavior_source ]){ + if( Stack[i]->name == Event_S1_to_S3 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S3_behavior_S1_to_S3_list.begin(); + s != S3_behavior_S1_to_S3_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S3_behavior_S1_to_S3_list.push_back(i); + } + }; + if(in_matrix[i * len + S1_behavior_source ]){ + if( Stack[i]->name == Event_S1_to_S3 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S1_behavior_S1_to_S3_list.begin(); + s != S1_behavior_S1_to_S3_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S1_behavior_S1_to_S3_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S1_behavior_S1_to_S3_list.size(); + if(S3_behavior_S1_to_S3_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S1_behavior_S1_to_S3_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S3_behavior_S1_to_S3_list[i], S1_behavior_S1_to_S3_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_53_54_ob class + +//---- 3 ---- +class SIMPLE_LIST_101_102_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_101_102_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int S4_behavior_source = Root_table[Event_S4_behavior]; + // lists of shared events for S4_behavior + vector<int> S4_behavior_S1_to_S4_list; + + int S1_behavior_source = Root_table[Event_S1_behavior]; + // lists of shared events for S1_behavior + vector<int> S1_behavior_S1_to_S4_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S4_behavior_source ]){ + if( Stack[i]->name == Event_S1_to_S4 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S4_behavior_S1_to_S4_list.begin(); + s != S4_behavior_S1_to_S4_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S4_behavior_S1_to_S4_list.push_back(i); + } + }; + if(in_matrix[i * len + S1_behavior_source ]){ + if( Stack[i]->name == Event_S1_to_S4 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S1_behavior_S1_to_S4_list.begin(); + s != S1_behavior_S1_to_S4_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S1_behavior_S1_to_S4_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S1_behavior_S1_to_S4_list.size(); + if(S4_behavior_S1_to_S4_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S1_behavior_S1_to_S4_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S4_behavior_S1_to_S4_list[i], S1_behavior_S1_to_S4_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + + { // SHARE ALL operation + create_matrices(); + + int S4_behavior_source = Root_table[Event_S4_behavior]; + // lists of shared events for S4_behavior + vector<int> S4_behavior_S4_to_S2_list; + + int S2_behavior_source = Root_table[Event_S2_behavior]; + // lists of shared events for S2_behavior + vector<int> S2_behavior_S4_to_S2_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S4_behavior_source ]){ + if( Stack[i]->name == Event_S4_to_S2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S4_behavior_S4_to_S2_list.begin(); + s != S4_behavior_S4_to_S2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S4_behavior_S4_to_S2_list.push_back(i); + } + }; + if(in_matrix[i * len + S2_behavior_source ]){ + if( Stack[i]->name == Event_S4_to_S2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S2_behavior_S4_to_S2_list.begin(); + s != S2_behavior_S4_to_S2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S2_behavior_S4_to_S2_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S2_behavior_S4_to_S2_list.size(); + if(S4_behavior_S4_to_S2_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S2_behavior_S4_to_S2_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S4_behavior_S4_to_S2_list[i], S2_behavior_S4_to_S2_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + + { // SHARE ALL operation + create_matrices(); + + int S4_behavior_source = Root_table[Event_S4_behavior]; + // lists of shared events for S4_behavior + vector<int> S4_behavior_S3_to_S4_list; + + int S3_behavior_source = Root_table[Event_S3_behavior]; + // lists of shared events for S3_behavior + vector<int> S3_behavior_S3_to_S4_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + S4_behavior_source ]){ + if( Stack[i]->name == Event_S3_to_S4 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S4_behavior_S3_to_S4_list.begin(); + s != S4_behavior_S3_to_S4_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S4_behavior_S3_to_S4_list.push_back(i); + } + }; + if(in_matrix[i * len + S3_behavior_source ]){ + if( Stack[i]->name == Event_S3_to_S4 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = S3_behavior_S3_to_S4_list.begin(); + s != S3_behavior_S3_to_S4_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) S3_behavior_S3_to_S4_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = S3_behavior_S3_to_S4_list.size(); + if(S4_behavior_S3_to_S4_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = S3_behavior_S3_to_S4_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(S4_behavior_S3_to_S4_list[i], S3_behavior_S3_to_S4_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // Path title generation + ostringstream convert; + convert <<"Path for the event trace"; + GRAPH_73_Path.title = convert.str();} + // CLEAR Path + GRAPH_73_Path.clean(); + // WITHIN Path + int s1_76_node_var = -1; + int s2_78_node_var = -1; + { // COORDINATE operation + int thread_length = -1; + int state1_variable; // thread variable + vector<int> state1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int symbol_variable; // thread variable + vector<int> symbol_variable_list; // list of coordinated events + int state2_variable; // thread variable + vector<int> state2_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for state1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + state1_variable = i; + if( state1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Start)|| (Stack[i]->name == Event_S1)|| (Stack[i]->name == Event_S2)|| (Stack[i]->name == Event_S3)|| (Stack[i]->name == Event_S4) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = state1_variable_list.begin(); s != state1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) state1_variable_list.push_back(i); + } + } }; + + // do the SORT reshuffling + topological_sort(state1_variable_list); + // finally check the thread length + if(thread_length < 0) thread_length = state1_variable_list.size(); + if(thread_length != state1_variable_list.size()) throw failed; + + // preparing thread for symbol_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + symbol_variable = i; + if( symbol_variable_list.size() == thread_length){ + state1_variable = 0; } + else{ + state1_variable = state1_variable_list[symbol_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_a)|| (Stack[i]->name == Event_b)|| (Stack[i]->name == Event_empty) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = symbol_variable_list.begin(); s != symbol_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) symbol_variable_list.push_back(i); + } + } }; + + // do the SORT reshuffling + topological_sort(symbol_variable_list); + // finally check the thread length + if(thread_length < 0) thread_length = symbol_variable_list.size(); + if(thread_length != symbol_variable_list.size()) throw failed; + + // preparing thread for state2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + state2_variable = i; + if( state2_variable_list.size() == thread_length){ + state1_variable = 0; + symbol_variable = 0; } + else{ + state1_variable = state1_variable_list[state2_variable_list.size()]; + symbol_variable = symbol_variable_list[state2_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_S1)|| (Stack[i]->name == Event_S2)|| (Stack[i]->name == Event_S3)|| (Stack[i]->name == Event_S4)|| (Stack[i]->name == Event_End) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = state2_variable_list.begin(); s != state2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) state2_variable_list.push_back(i); + } + } }; + + // do the SORT reshuffling + topological_sort(state2_variable_list); + // finally check the thread length + if(thread_length < 0) thread_length = state2_variable_list.size(); + if(thread_length != state2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + state1_variable= state1_variable_list[i]; + symbol_variable= symbol_variable_list[i]; + state2_variable= state2_variable_list[i]; + {// LAST_NODE + ostringstream convert; + convert << event_name_string[Stack[ state1_variable ]->name]; + s1_76_node_var = GRAPH_73_Path.find_or_create_new_node(convert.str());} + {// NEW_NODE + ostringstream convert; + convert << event_name_string[Stack[ state2_variable ]->name]; + s2_78_node_var = GRAPH_73_Path.create_new_node(convert.str());} + // add_arrow for GRAPH_73_Path + { + ostringstream convert; + convert << event_name_string[Stack[ symbol_variable ]->name]; + GRAPH_73_Path.add_arrow(s1_76_node_var,s2_78_node_var,convert.str());} + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + // SHOW Path + graph_container.insert(pair<int, graph_object>( 1,GRAPH_73_Path)); + { // Diagram title generation + ostringstream convert; + convert <<"State transition diagram"; + GRAPH_92_Diagram.title = convert.str();} + // WITHIN Diagram + { // COORDINATE operation + int thread_length = -1; + int state1_variable; // thread variable + vector<int> state1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int symbol_variable; // thread variable + vector<int> symbol_variable_list; // list of coordinated events + int state2_variable; // thread variable + vector<int> state2_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for state1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + state1_variable = i; + if( state1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Start)|| (Stack[i]->name == Event_S1)|| (Stack[i]->name == Event_S2)|| (Stack[i]->name == Event_S3)|| (Stack[i]->name == Event_S4) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = state1_variable_list.begin(); s != state1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) state1_variable_list.push_back(i); + } + } }; + + // do the SORT reshuffling + topological_sort(state1_variable_list); + // finally check the thread length + if(thread_length < 0) thread_length = state1_variable_list.size(); + if(thread_length != state1_variable_list.size()) throw failed; + + // preparing thread for symbol_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + symbol_variable = i; + if( symbol_variable_list.size() == thread_length){ + state1_variable = 0; } + else{ + state1_variable = state1_variable_list[symbol_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_a)|| (Stack[i]->name == Event_b)|| (Stack[i]->name == Event_empty) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = symbol_variable_list.begin(); s != symbol_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) symbol_variable_list.push_back(i); + } + } }; + + // do the SORT reshuffling + topological_sort(symbol_variable_list); + // finally check the thread length + if(thread_length < 0) thread_length = symbol_variable_list.size(); + if(thread_length != symbol_variable_list.size()) throw failed; + + // preparing thread for state2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + state2_variable = i; + if( state2_variable_list.size() == thread_length){ + state1_variable = 0; + symbol_variable = 0; } + else{ + state1_variable = state1_variable_list[state2_variable_list.size()]; + symbol_variable = symbol_variable_list[state2_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_S1)|| (Stack[i]->name == Event_S2)|| (Stack[i]->name == Event_S3)|| (Stack[i]->name == Event_S4)|| (Stack[i]->name == Event_End) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = state2_variable_list.begin(); s != state2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) state2_variable_list.push_back(i); + } + } }; + + // do the SORT reshuffling + topological_sort(state2_variable_list); + // finally check the thread length + if(thread_length < 0) thread_length = state2_variable_list.size(); + if(thread_length != state2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + state1_variable= state1_variable_list[i]; + symbol_variable= symbol_variable_list[i]; + state2_variable= state2_variable_list[i]; + // add_arrow for GRAPH_92_Diagram + int temp_2_1 ; { + ostringstream convert; + convert << event_name_string[Stack[ state1_variable ]->name]; + temp_2_1 = GRAPH_92_Diagram . find_or_create_new_node (convert.str());} + int temp_3_2 ; { + ostringstream convert; + convert << event_name_string[Stack[ state2_variable ]->name]; + temp_3_2 = GRAPH_92_Diagram . find_or_create_new_node (convert.str());} + { + ostringstream convert; + convert << event_name_string[Stack[ symbol_variable ]->name]; + GRAPH_92_Diagram.add_arrow(temp_2_1,temp_3_2,convert.str());} + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_101_102_ob class + +//---- 4 ---- +class Alt_17_18 : public OR_node_producer_container { +public: // constructor + Alt_17_18 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_a); + element[ 1 ]= new Atomic_producer(Event_b); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_17_18 + +//---- 5 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S1_to_S3); + element[ 1 ]= new Composite_secondary_producer(Event_S1_to_S4); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 6 ---- +class Sq_3_4 : public AND_node_producer_container { +public: // constructor + Sq_3_4 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_1_2 ; + element[ 1 ]= new Composite_secondary_producer(Event_S2_to_S1); + element[ 2 ]= new Atomic_producer(Event_S1); + } +};// end class Sq_3_4 + +//---- 7 ---- +class Itr_5_6 : public OR_node_producer_container { +public: // constructor + Itr_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_3_4 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_5_6 + +//---- 8 ---- +class Alt_7_8 : public OR_node_producer_container { +public: // constructor + Alt_7_8 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S1_to_S3); + element[ 1 ]= new Composite_secondary_producer(Event_S1_to_S4); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_7_8 + +//---- 9 ---- +class Sq_9_10 : public AND_node_producer_container { +public: // constructor + Sq_9_10 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Atomic_producer(Event_Start); + element[ 1 ]= new Composite_secondary_producer(Event_Start_to_S1); + element[ 2 ]= new Atomic_producer(Event_S1); + element[ 3 ]= new Itr_5_6 ; + element[ 4 ]= new Alt_7_8 ; + } +};// end class Sq_9_10 + +//---- 10 ---- +class Sq_21_22 : public AND_node_producer_container { +public: // constructor + Sq_21_22 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S4_to_S2); + element[ 1 ]= new Atomic_producer(Event_S2); + element[ 2 ]= new Composite_secondary_producer(Event_S2_to_S1); + } +};// end class Sq_21_22 + +//---- 11 ---- +class Itr_23_24 : public OR_node_producer_container { +public: // constructor + Itr_23_24 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_21_22 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_23_24 + +//---- 12 ---- +class Sq_25_26 : public AND_node_producer_container { +public: // constructor + Sq_25_26 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Itr_23_24 ; + element[ 1 ]= new Composite_secondary_producer(Event_S4_to_S2); + element[ 2 ]= new Atomic_producer(Event_S2); + element[ 3 ]= new Composite_secondary_producer(Event_S2_to_End); + element[ 4 ]= new Atomic_producer(Event_End); + } +};// end class Sq_25_26 + +//---- 13 ---- +class Sq_37_38 : public AND_node_producer_container { +public: // constructor + Sq_37_38 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S3_to_S3); + element[ 1 ]= new Atomic_producer(Event_S3); + } +};// end class Sq_37_38 + +//---- 14 ---- +class Itr_39_40 : public OR_node_producer_container { +public: // constructor + Itr_39_40 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_37_38 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_39_40 + +//---- 15 ---- +class Sq_41_42 : public AND_node_producer_container { +public: // constructor + Sq_41_42 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S1_to_S3); + element[ 1 ]= new Atomic_producer(Event_S3); + element[ 2 ]= new Itr_39_40 ; + element[ 3 ]= new Composite_secondary_producer(Event_S3_to_S4); + } +};// end class Sq_41_42 + +//---- 16 ---- +class Itr_43_44 : public OR_node_producer_container { +public: // constructor + Itr_43_44 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_41_42 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_43_44 + +//---- 17 ---- +class Alt_55_56 : public OR_node_producer_container { +public: // constructor + Alt_55_56 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_S1_to_S4); + element[ 1 ]= new Composite_secondary_producer(Event_S3_to_S4); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_55_56 + +//---- 18 ---- +class Sq_57_58 : public AND_node_producer_container { +public: // constructor + Sq_57_58 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Alt_55_56 ; + element[ 1 ]= new Atomic_producer(Event_S4); + element[ 2 ]= new Composite_secondary_producer(Event_S4_to_S2); + } +};// end class Sq_57_58 + +//---- 19 ---- +class Itr_59_60 : public OR_node_producer_container { +public: // constructor + Itr_59_60 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_57_58 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_59_60 + +//---- 20 ---- +class Comp_13_14 : public Composite_producer { +public: // constructor + Comp_13_14 (): Composite_producer(Event_Start_to_S1){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_empty); + } +};// end class Comp_13_14 + +//---- 21 ---- +class Comp_15_16 : public Composite_producer { +public: // constructor + Comp_15_16 (): Composite_producer(Event_S1_to_S3){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_a); + } +};// end class Comp_15_16 + +//---- 22 ---- +class Comp_19_20 : public Composite_producer { +public: // constructor + Comp_19_20 (): Composite_producer(Event_S1_to_S4){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Alt_17_18 ; + } +};// end class Comp_19_20 + +//---- 23 ---- +class Comp_29_30 : public Composite_producer { +public: // constructor + Comp_29_30 (): Composite_producer(Event_S2_to_S1){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_b); + } +};// end class Comp_29_30 + +//---- 24 ---- +class Comp_31_32 : public Composite_producer { +public: // constructor + Comp_31_32 (): Composite_producer(Event_S2_to_End){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_empty); + } +};// end class Comp_31_32 + +//---- 25 ---- +class Comp_47_48 : public Composite_producer { +public: // constructor + Comp_47_48 (): Composite_producer(Event_S3_to_S3){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_a); + } +};// end class Comp_47_48 + +//---- 26 ---- +class Comp_49_50 : public Composite_producer { +public: // constructor + Comp_49_50 (): Composite_producer(Event_S3_to_S4){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_b); + } +};// end class Comp_49_50 + +//---- 27 ---- +class Comp_63_64 : public Composite_producer { +public: // constructor + Comp_63_64 (): Composite_producer(Event_S4_to_S2){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_a); + } +};// end class Comp_63_64 + +//---- 28 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_S1_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_9_10 ; + } +};// end class Comp_11_12 + +//---- 29 ---- +class Comp_27_28 : public Composite_producer { +public: // constructor + Comp_27_28 (): Composite_producer(Event_S2_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_25_26 ; + } +};// end class Comp_27_28 + +//---- 30 ---- +class Comp_45_46 : public Composite_producer { +public: // constructor + Comp_45_46 (): Composite_producer(Event_S3_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_43_44 ; + } +};// end class Comp_45_46 + +//---- 31 ---- +class Comp_61_62 : public Composite_producer { +public: // constructor + Comp_61_62 (): Composite_producer(Event_S4_behavior){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_59_60 ; + } +};// end class Comp_61_62 + +//---- 32 ---- +class SCHEMA_Finite_State_Diagram_with_path: public Composite_producer { +public: // constructor + SCHEMA_Finite_State_Diagram_with_path(): Composite_producer(Event_Finite_State_Diagram_with_path){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 7 ]; + element[0]= new Composite_secondary_producer(Event_S1_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_S2_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_35_36_ob(Event_SIMPLE_LIST_35_36); + element[3]= new Composite_secondary_producer(Event_S3_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_53_54_ob(Event_SIMPLE_LIST_53_54); + element[5]= new Composite_secondary_producer(Event_S4_behavior); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_101_102_ob(Event_SIMPLE_LIST_101_102); + } +};// end class SCHEMA_Finite_State_Diagram_with_path + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + // SHOW Diagram + graph_container.insert(pair<int, graph_object>( 4,GRAPH_92_Diagram)); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example35_Finite_State_Diagram.json"); + global_flag = true; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_13_14 temp_33; temp_33.harvest(); + Comp_15_16 temp_34; temp_34.harvest(); + Comp_19_20 temp_35; temp_35.harvest(); + Comp_29_30 temp_36; temp_36.harvest(); + Comp_31_32 temp_37; temp_37.harvest(); + Comp_47_48 temp_38; temp_38.harvest(); + Comp_49_50 temp_39; temp_39.harvest(); + Comp_63_64 temp_40; temp_40.harvest(); + // harvesting traces for ROOT events + Comp_11_12 temp_41; temp_41.harvest(); + Comp_27_28 temp_42; temp_42.harvest(); + Comp_45_46 temp_43; temp_43.harvest(); + Comp_61_62 temp_44; temp_44.harvest(); + // harvesting traces for main schema + SCHEMA_Finite_State_Diagram_with_path temp_45; temp_45.harvest(); + temp_45.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Finite_State_Diagram_with_path"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.mp new file mode 100644 index 0000000..ff0ca81 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.mp @@ -0,0 +1,97 @@ +/* Example 35. + + Adding path and state transition diagrams to + the Finite Automaton behavior model. + + run for scope 2 +==========================================================*/ +SCHEMA Finite_State_Diagram_with_path + +ROOT S1_behavior: + Start Start_to_S1 S1 + (* (S1_to_S3 | S1_to_S4) S2_to_S1 S1 *) + (S1_to_S3 | S1_to_S4); +Start_to_S1: empty; +S1_to_S3: a; +S1_to_S4: (a | b); + +ROOT S2_behavior: + (* S4_to_S2 S2 S2_to_S1 *) + S4_to_S2 S2 + S2_to_End End; +S2_to_S1: b; +S2_to_End: empty; + +S1_behavior, S2_behavior SHARE ALL S2_to_S1; + +ROOT S3_behavior: + (* S1_to_S3 S3 + (* S3_to_S3 S3 *) + S3_to_S4 *); +S3_to_S3: a; +S3_to_S4: b; + +S3_behavior, S1_behavior SHARE ALL S1_to_S3; + +ROOT S4_behavior: + (* (S1_to_S4 | S3_to_S4) S4 + S4_to_S2 *); +S4_to_S2: a; + +S4_behavior, S1_behavior SHARE ALL S1_to_S4; +S4_behavior, S2_behavior SHARE ALL S4_to_S2; +S4_behavior, S3_behavior SHARE ALL S3_to_S4; + +GRAPH Path { TITLE("Path for the event trace"); }; +/* The following coordination extracts all triples State-Symbol-State + from the trace and accumulates corresponding nodes/transitions + in the Path graph. */ + +CLEAR Path; /* Path graph is cleared before a new event trace derivation begins. */ + +WITHIN Path{ + COORDINATE + /* SORT (plain synchronous coordination) performs topological sort + on the selected event set with respect to the transitive closure of + PRECEDES (BEFORE relation), and the coordination will follow this ordering. + If A BEFORE B holds for events A and B, event A will appear in the sorted + sequence before B. This way pairs of states and transitions between them + are synchronized. */ + <SORT> $state1: (Start | S1 | S2 | S3 | S4), + <SORT> $symbol: (a | b | empty), + <SORT> $state2: (S1 | S2 | S3 | S4 | End) + + DO + Node$s1: LAST ($state1); + /* Assigns to the node variable Node$s1 the last instance of node + with the event name stored in $state1 in this graph, or creates a new node, + if such instance does not yet exist */ + Node$s2: NEW ($state2); + /* Creates a new instance of node with name $state2. As a result, + nodes with the same label (representing the same state in the diagram) + may appear repeatedly in the Path graph. */ + ADD Node$s1 ARROW($symbol) Node$s2; + OD; + + /* show Path graph for each event trace */ + SHOW Path; +}; /* end WITHIN Path */ + +GRAPH Diagram { TITLE("State transition diagram"); }; + +WITHIN Diagram{ + /* The following coordination extracts all triples State-Symbol-State from + the trace and accumulates corresponding nodes/transitions in the graph */ + COORDINATE + <SORT> $state1: (Start | S1 | S2 | S3 | S4), + <SORT> $symbol: (a | b | empty), + <SORT> $state2: (S1 | S2 | S3 | S4 | End) + DO + ADD LAST ($state1) ARROW($symbol) LAST ($state2); + /* this time nodes with the same label will be unique */ + OD; +}; /* end WITHIN Diagram */ + +GLOBAL +/* After all valid traces have been derived, show the accumulated diagram */ +SHOW Diagram; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.temp.txt new file mode 100644 index 0000000..ec42749 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example35_Finite_State_Diagram tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.tree new file mode 100644 index 0000000000000000000000000000000000000000..3c680a728496e9175dfc662ad64f4ff3a3b1da58 GIT binary patch literal 18944 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.txt new file mode 100644 index 0000000..f692e29 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.txt @@ -0,0 +1,35 @@ +generating traces for scope 1 +completed Start_to_S1: 1 traces (0 MARKed) 2 events + +completed S1_to_S3: 1 traces (0 MARKed) 2 events + +completed S1_to_S4: 2 traces (0 MARKed) 4 events + average 2 ev/trace min 2 max 2 + +completed S2_to_S1: 1 traces (0 MARKed) 2 events + +completed S2_to_End: 1 traces (0 MARKed) 2 events + +completed S3_to_S3: 1 traces (0 MARKed) 2 events + +completed S3_to_S4: 1 traces (0 MARKed) 2 events + +completed S4_to_S2: 1 traces (0 MARKed) 2 events + +completed S1_behavior: 12 traces (0 MARKed) 129 events + average 10.75 ev/trace min 7 max 12 + +completed S2_behavior: 2 traces (0 MARKed) 19 events + average 9.5 ev/trace min 7 max 12 + +completed S3_behavior: 3 traces (0 MARKed) 16 events + average 5.33333 ev/trace min 1 max 9 + +completed S4_behavior: 4 traces (0 MARKed) 19 events + average 4.75 ev/trace min 1 max 6 + +completed Finite_State_Diagram_with_path: 4 traces (0 MARKed) 101 events + average 25.25 ev/trace min 22 max 30 + +Elapsed time 0.136319 sec, Speed: 2215.39 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.cpp new file mode 100644 index 0000000..a1deeab --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.cpp @@ -0,0 +1,1168 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA ATM_withdrawal_with_Statechart_view trace generator for scope 3 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +graph_object GRAPH_77_Diagram; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_insert_card + , Event_identification_succeeds + , Event_request_withdrawal + , Event_get_money + , Event_not_sufficient_funds + , Event_identification_fails + , Event_retrieve_card + , Event_Idle + , Event_read_card + , Event_validate_id + , Event_id_successful + , Event_check_balance + , Event_sufficient_balance + , Event_dispense_money + , Event_unsufficient_balance + , Event_id_failed + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_86_87 + // ADD operations + // ROOT events + , Event_Customer + , Event_ATM_system + , Event_Data_Base + // main schema event + , Event_ATM_withdrawal_with_Statechart_view }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "insert_card" + , "identification_succeeds" + , "request_withdrawal" + , "get_money" + , "not_sufficient_funds" + , "identification_fails" + , "retrieve_card" + , "Idle" + , "read_card" + , "validate_id" + , "id_successful" + , "check_balance" + , "sufficient_balance" + , "dispense_money" + , "unsufficient_balance" + , "id_failed" + , "SIMPLE_LIST_86_87" + , "Customer" + , "ATM_system" + , "Data_Base" + , "ATM_withdrawal_with_Statechart_view" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_86_87_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_86_87_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Data_Base_source = Root_table[Event_Data_Base]; + // lists of shared events for Data_Base + vector<int> Data_Base_validate_id_list; + vector<int> Data_Base_check_balance_list; + + int ATM_system_source = Root_table[Event_ATM_system]; + // lists of shared events for ATM_system + vector<int> ATM_system_validate_id_list; + vector<int> ATM_system_check_balance_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Data_Base_source ]){ + if( Stack[i]->name == Event_validate_id ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Data_Base_validate_id_list.begin(); + s != Data_Base_validate_id_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Data_Base_validate_id_list.push_back(i); + } + if( Stack[i]->name == Event_check_balance ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Data_Base_check_balance_list.begin(); + s != Data_Base_check_balance_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Data_Base_check_balance_list.push_back(i); + } + }; + if(in_matrix[i * len + ATM_system_source ]){ + if( Stack[i]->name == Event_validate_id ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = ATM_system_validate_id_list.begin(); + s != ATM_system_validate_id_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) ATM_system_validate_id_list.push_back(i); + } + if( Stack[i]->name == Event_check_balance ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = ATM_system_check_balance_list.begin(); + s != ATM_system_check_balance_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) ATM_system_check_balance_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = ATM_system_validate_id_list.size(); + if(Data_Base_validate_id_list.size() != len_to_compare) throw failed ; + len_to_compare = ATM_system_check_balance_list.size(); + if(Data_Base_check_balance_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = ATM_system_validate_id_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Data_Base_validate_id_list[i], ATM_system_validate_id_list[i]); + } + len_to_compare = ATM_system_check_balance_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Data_Base_check_balance_list[i], ATM_system_check_balance_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_insert_card)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_read_card)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(y_variable,x_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_request_withdrawal)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_check_balance)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(y_variable,x_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_identification_succeeds)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_id_successful)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(x_variable,y_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_get_money)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_dispense_money)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(x_variable,y_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_not_sufficient_funds)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_unsufficient_balance)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(x_variable,y_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Customer_source = Root_table[Event_Customer]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int ATM_system_source = Root_table[Event_ATM_system] +; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Customer_source ]){ + if( ( (Stack[i]->name == Event_identification_fails)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + ATM_system_source ]){ + if( ( (Stack[i]->name == Event_id_failed)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(x_variable,y_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // Diagram title generation + ostringstream convert; + convert <<"ATM state transition diagram"; + GRAPH_77_Diagram.title = convert.str();} + { // COORDINATE operation + int thread_length = -1; + int state1_variable; // thread variable + vector<int> state1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int user_variable; // thread variable + vector<int> user_variable_list; // list of coordinated events + int state2_variable; // thread variable + vector<int> state2_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for state1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + state1_variable = i; + if( state1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Idle)|| (Stack[i]->name == Event_id_successful)|| (Stack[i]->name == Event_id_failed)|| (Stack[i]->name == Event_sufficient_balance)|| (Stack[i]->name == Event_unsufficient_balance) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = state1_variable_list.begin(); s != state1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) state1_variable_list.push_back(i); + } + } }; + + // do the CUT_END 1 reshuffling + if(state1_variable_list.size() >=1) + state1_variable_list.erase(state1_variable_list.end() - 1, state1_variable_list.end()); + else throw failed; + // finally check the thread length + if(thread_length < 0) thread_length = state1_variable_list.size(); + if(thread_length != state1_variable_list.size()) throw failed; + + // preparing thread for user_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + user_variable = i; + if( user_variable_list.size() == thread_length){ + state1_variable = 0; } + else{ + state1_variable = state1_variable_list[user_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_insert_card)|| (Stack[i]->name == Event_request_withdrawal)|| (Stack[i]->name == Event_retrieve_card) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = user_variable_list.begin(); s != user_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) user_variable_list.push_back(i); + } + } }; + // no processing needed for the default source user_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = user_variable_list.size(); + if(thread_length != user_variable_list.size()) throw failed; + + // preparing thread for state2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + state2_variable = i; + if( state2_variable_list.size() == thread_length){ + state1_variable = 0; + user_variable = 0; } + else{ + state1_variable = state1_variable_list[state2_variable_list.size()]; + user_variable = user_variable_list[state2_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Idle)|| (Stack[i]->name == Event_id_successful)|| (Stack[i]->name == Event_id_failed)|| (Stack[i]->name == Event_sufficient_balance)|| (Stack[i]->name == Event_unsufficient_balance) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = state2_variable_list.begin(); s != state2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) state2_variable_list.push_back(i); + } + } }; + + // do the CUT_FRONT 1 reshuffling + if(state2_variable_list.size() >=1) + state2_variable_list.erase(state2_variable_list.begin(),state2_variable_list.begin() + 1); + else throw failed; + // finally check the thread length + if(thread_length < 0) thread_length = state2_variable_list.size(); + if(thread_length != state2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + state1_variable= state1_variable_list[i]; + user_variable= user_variable_list[i]; + state2_variable= state2_variable_list[i]; + // WITHIN Diagram + // add_arrow for GRAPH_77_Diagram + int temp_1_1 ; { + ostringstream convert; + convert << event_name_string[Stack[ state1_variable ]->name]; + temp_1_1 = GRAPH_77_Diagram . find_or_create_new_node (convert.str());} + int temp_2_2 ; { + ostringstream convert; + convert << event_name_string[Stack[ state2_variable ]->name]; + temp_2_2 = GRAPH_77_Diagram . find_or_create_new_node (convert.str());} + { + ostringstream convert; + convert << event_name_string[Stack[ user_variable ]->name]; + GRAPH_77_Diagram.add_arrow(temp_1_1,temp_2_2,convert.str());} + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_86_87_ob class + +//---- 2 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_get_money); + element[ 1 ]= new Atomic_producer(Event_not_sufficient_funds); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_1_2 + +//---- 3 ---- +class Sq_3_4 : public AND_node_producer_container { +public: // constructor + Sq_3_4 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_identification_succeeds); + element[ 1 ]= new Atomic_producer(Event_request_withdrawal); + element[ 2 ]= new Alt_1_2 ; + } +};// end class Sq_3_4 + +//---- 4 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_3_4 ; + element[ 1 ]= new Atomic_producer(Event_identification_fails); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_5_6 + +//---- 5 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_insert_card); + element[ 1 ]= new Alt_5_6 ; + element[ 2 ]= new Atomic_producer(Event_retrieve_card); + } +};// end class Sq_7_8 + +//---- 6 ---- +class Ct_90_91 : public AND_node_producer_container { +public: // constructor + Ct_90_91 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_7_8 ; + element[ 1 ]= new Sq_7_8 ; + } +};// end class Ct_90_91 + +//---- 7 ---- +class Ct_92_93 : public AND_node_producer_container { +public: // constructor + Ct_92_93 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_7_8 ; + element[ 1 ]= new Sq_7_8 ; + element[ 2 ]= new Sq_7_8 ; + } +};// end class Ct_92_93 + +//---- 8 ---- +class Itr_9_10 : public OR_node_producer_container { +public: // constructor + Itr_9_10 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_7_8 ; + element[ 2 ]= new Ct_90_91 ; + element[ 3 ]= new Ct_92_93 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_9_10 + +//---- 9 ---- +class Sq_13_14 : public AND_node_producer_container { +public: // constructor + Sq_13_14 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_sufficient_balance); + element[ 1 ]= new Atomic_producer(Event_dispense_money); + } +};// end class Sq_13_14 + +//---- 10 ---- +class Alt_15_16 : public OR_node_producer_container { +public: // constructor + Alt_15_16 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_13_14 ; + element[ 1 ]= new Atomic_producer(Event_unsufficient_balance); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_15_16 + +//---- 11 ---- +class Sq_17_18 : public AND_node_producer_container { +public: // constructor + Sq_17_18 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_id_successful); + element[ 1 ]= new Atomic_producer(Event_check_balance); + element[ 2 ]= new Alt_15_16 ; + } +};// end class Sq_17_18 + +//---- 12 ---- +class Alt_19_20 : public OR_node_producer_container { +public: // constructor + Alt_19_20 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_17_18 ; + element[ 1 ]= new Atomic_producer(Event_id_failed); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_19_20 + +//---- 13 ---- +class Sq_21_22 : public AND_node_producer_container { +public: // constructor + Sq_21_22 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_Idle); + element[ 1 ]= new Atomic_producer(Event_read_card); + element[ 2 ]= new Atomic_producer(Event_validate_id); + element[ 3 ]= new Alt_19_20 ; + } +};// end class Sq_21_22 + +//---- 14 ---- +class Ct_94_95 : public AND_node_producer_container { +public: // constructor + Ct_94_95 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_21_22 ; + element[ 1 ]= new Sq_21_22 ; + } +};// end class Ct_94_95 + +//---- 15 ---- +class Ct_96_97 : public AND_node_producer_container { +public: // constructor + Ct_96_97 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_21_22 ; + element[ 1 ]= new Sq_21_22 ; + element[ 2 ]= new Sq_21_22 ; + } +};// end class Ct_96_97 + +//---- 16 ---- +class Itr_23_24 : public OR_node_producer_container { +public: // constructor + Itr_23_24 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_21_22 ; + element[ 2 ]= new Ct_94_95 ; + element[ 3 ]= new Ct_96_97 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_23_24 + +//---- 17 ---- +class Sq_25_26 : public AND_node_producer_container { +public: // constructor + Sq_25_26 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_23_24 ; + element[ 1 ]= new Atomic_producer(Event_Idle); + } +};// end class Sq_25_26 + +//---- 18 ---- +class Opt_29_30 : public OR_node_producer_container { +public: // constructor + Opt_29_30 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_check_balance); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_29_30 + +//---- 19 ---- +class Sq_31_32 : public AND_node_producer_container { +public: // constructor + Sq_31_32 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_validate_id); + element[ 1 ]= new Opt_29_30 ; + } +};// end class Sq_31_32 + +//---- 20 ---- +class Ct_98_99 : public AND_node_producer_container { +public: // constructor + Ct_98_99 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_31_32 ; + element[ 1 ]= new Sq_31_32 ; + } +};// end class Ct_98_99 + +//---- 21 ---- +class Ct_100_101 : public AND_node_producer_container { +public: // constructor + Ct_100_101 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_31_32 ; + element[ 1 ]= new Sq_31_32 ; + element[ 2 ]= new Sq_31_32 ; + } +};// end class Ct_100_101 + +//---- 22 ---- +class Itr_33_34 : public OR_node_producer_container { +public: // constructor + Itr_33_34 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_31_32 ; + element[ 2 ]= new Ct_98_99 ; + element[ 3 ]= new Ct_100_101 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_33_34 + +//---- 23 ---- +class Comp_11_12 : public Composite_producer { +public: // constructor + Comp_11_12 (): Composite_producer(Event_Customer){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_9_10 ; + } +};// end class Comp_11_12 + +//---- 24 ---- +class Comp_27_28 : public Composite_producer { +public: // constructor + Comp_27_28 (): Composite_producer(Event_ATM_system){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_25_26 ; + } +};// end class Comp_27_28 + +//---- 25 ---- +class Comp_35_36 : public Composite_producer { +public: // constructor + Comp_35_36 (): Composite_producer(Event_Data_Base){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_33_34 ; + } +};// end class Comp_35_36 + +//---- 26 ---- +class SCHEMA_ATM_withdrawal_with_Statechart_view: public Composite_producer { +public: // constructor + SCHEMA_ATM_withdrawal_with_Statechart_view(): Composite_producer(Event_ATM_withdrawal_with_Statechart_view){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 4 ]; + element[0]= new Composite_secondary_producer(Event_Customer); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_ATM_system); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new Composite_secondary_producer(Event_Data_Base); + // for Root_table update in Composite_secondary_producer::traverse() + element[2] -> type = ROOT_node; + element[3]= new SIMPLE_LIST_86_87_ob(Event_SIMPLE_LIST_86_87); + } +};// end class SCHEMA_ATM_withdrawal_with_Statechart_view + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + // SHOW Diagram + graph_container.insert(pair<int, graph_object>( 3,GRAPH_77_Diagram)); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example36_Statechart.json"); + global_flag = true; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 3 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_11_12 temp_27; temp_27.harvest(); + Comp_27_28 temp_28; temp_28.harvest(); + Comp_35_36 temp_29; temp_29.harvest(); + // harvesting traces for main schema + SCHEMA_ATM_withdrawal_with_Statechart_view temp_30; temp_30.harvest(); + temp_30.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"ATM_withdrawal_with_Statechart_view"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.mp new file mode 100644 index 0000000..f41f30f --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.mp @@ -0,0 +1,83 @@ +/* Example 36. + + Extracting Statechart view from MP model. + + run for scope 1 and up +==========================================================*/ +SCHEMA ATM_withdrawal_with_Statechart_view + +ROOT Customer: (* insert_card + ( identification_succeeds + request_withdrawal + (get_money | not_sufficient_funds) | + + identification_fails ) + retrieve_card + *); + +ROOT ATM_system: (* Idle + read_card + validate_id + ( id_successful + check_balance + ( sufficient_balance + dispense_money | + unsufficient_balance ) | + + id_failed ) + *) + Idle; + +ROOT Data_Base: (* validate_id [ check_balance ] *); + +/* Interactions */ +Data_Base, ATM_system SHARE ALL validate_id, check_balance; + +COORDINATE $x: insert_card FROM Customer, + $y: read_card FROM ATM_system +DO ADD $x PRECEDES $y; OD; + +COORDINATE $x: request_withdrawal FROM Customer, + $y: check_balance FROM ATM_system +DO ADD $x PRECEDES $y; OD; + +COORDINATE $x: identification_succeeds FROM Customer, + $y: id_successful FROM ATM_system +DO ADD $y PRECEDES $x; OD; + +COORDINATE $x: get_money FROM Customer, + $y: dispense_money FROM ATM_system +DO ADD $y PRECEDES $x; OD; + +COORDINATE $x: not_sufficient_funds FROM Customer, + $y: unsufficient_balance FROM ATM_system +DO ADD $y PRECEDES $x; OD; + +COORDINATE $x: identification_fails FROM Customer, + $y: id_failed FROM ATM_system +DO ADD $y PRECEDES $x; OD; + +GRAPH Diagram{ TITLE("ATM state transition diagram"); }; + +/*===================================== + Building a graph proceeds here +=======================================*/ +COORDINATE + <CUT_END> $state1: /* these are ATM system’s states */ + ( Idle | id_successful | id_failed | + sufficient_balance | unsufficient_balance), + + $user: /* these are User’s inputs that trigger ATM state transitions */ + (insert_card | request_withdrawal | retrieve_card), + + <CUT_FRONT> $state2: /* these are ATM system’s states */ + ( Idle | id_successful | id_failed | + sufficient_balance | unsufficient_balance) + DO + WITHIN Diagram{ + ADD LAST ($state1) ARROW($user) LAST ($state2); }; + OD; + +GLOBAL + +SHOW Diagram; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.temp.txt new file mode 100644 index 0000000..afef2c5 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example36_Statechart tree 3 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.tree new file mode 100644 index 0000000000000000000000000000000000000000..575bf4212f989b9a8b84ae9621ef561353f844b6 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.txt new file mode 100644 index 0000000..ad36dea --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.txt @@ -0,0 +1,15 @@ +generating traces for scope 3 +completed Customer: 40 traces (0 MARKed) 482 events + average 12.05 ev/trace min 1 max 16 + +completed ATM_system: 40 traces (0 MARKed) 658 events + average 16.45 ev/trace min 2 max 23 + +completed Data_Base: 15 traces (0 MARKed) 66 events + average 4.4 ev/trace min 1 max 7 + +completed ATM_withdrawal_with_Statechart_view: 40 traces (0 MARKed) 1390 events + average 34.75 ev/trace min 5 max 47 + +Elapsed time 18.2951 sec, Speed: 141.896 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.cpp new file mode 100644 index 0000000..50d477b --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.cpp @@ -0,0 +1,523 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA unreliable_message_flow trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, float > trace_unique_id_number_attribute; + map<int, float > summary_probability_number_attribute; + map<int, float > count_number_attribute; +//-- node attributes -- + map<int, float > NODE_trace_unique_id_number_attribute; +//-- GLOBAL attributes -- + float GLOBAL_summary_probability_number_attribute; + float GLOBAL_count_number_attribute; + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( trace_unique_id_number_attribute[event1] != trace_unique_id_number_attribute[event2]) + return false; + if( summary_probability_number_attribute[event1] != summary_probability_number_attribute[event2]) + return false; + if( count_number_attribute[event1] != count_number_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + trace_unique_id_number_attribute.clear(); + summary_probability_number_attribute.clear(); + count_number_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!trace_unique_id_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("trace_unique_id",trace_unique_id_number_attribute)); + if(!summary_probability_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("summary_probability",summary_probability_number_attribute)); + if(!count_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("count",count_number_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + + if(p1_num_attr->first == "trace_unique_id"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + trace_unique_id_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + else + if(p1_num_attr->first == "summary_probability"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + summary_probability_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + else + if(p1_num_attr->first == "count"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + count_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +graph_object GRAPH_21_good_traces; +report_object REPORT_41_R; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_send + , Event_receive + , Event_does_not_receive + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_17_18 + , Event_SIMPLE_LIST_37_38 + // ADD operations + // ROOT events + , Event_Sender + , Event_Receiver + // main schema event + , Event_unreliable_message_flow }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "send" + , "receive" + , "does_not_receive" + , "SIMPLE_LIST_17_18" + , "SIMPLE_LIST_37_38" + , "Sender" + , "Receiver" + , "unreliable_message_flow" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_22(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_receive){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_23(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_send){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 3 ---- +class SIMPLE_LIST_17_18_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_17_18_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int Sender_source = Root_table[Event_Sender]; // source of coordination + int y_variable; // thread variable + vector<int> y_variable_list; // list of coordinated events + int Receiver_source = Root_table[Event_Receiver]; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Sender_source ]){ + if( ( (Stack[i]->name == Event_send)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // preparing thread for y_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + y_variable = i; + if( y_variable_list.size() == thread_length){ + x_variable = 0; } + else{ + x_variable = x_variable_list[y_variable_list.size()];}; + if(in_matrix[i * len + Receiver_source ]){ + if( ( (Stack[i]->name == Event_receive)|| (Stack[i]->name == Event_does_not_receive) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = y_variable_list.begin(); s != y_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) y_variable_list.push_back(i); + } + } }; + // no processing needed for the default source y_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = y_variable_list.size(); + if(thread_length != y_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + y_variable= y_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(y_variable,x_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_17_18_ob class + +//---- 4 ---- +class SIMPLE_LIST_37_38_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_37_38_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // good_traces title generation + ostringstream convert; + convert <<" "; + GRAPH_21_good_traces.title = convert.str();} + if( ( (special_function_22(current_host, Root_table[Event_unreliable_message_flow]) +/ (float)special_function_23(current_host, Root_table[Event_unreliable_message_flow]) +) > 7.500000E-01)){ + // WITHIN good_traces + int x_24_node_var = -1; + {// NEW_NODE + ostringstream convert; + convert << + trace_id_attribute ; + x_24_node_var = GRAPH_21_good_traces.create_new_node(convert.str());} + // attribute trace_unique_id assignment + NODE_trace_unique_id_number_attribute[x_24_node_var]= + trace_id_attribute ; + Mark = 'M'; // MARK + }// end THEN + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_37_38_ob class + +//---- 5 ---- +class Alt_5_6 : public OR_node_producer_container { +public: // constructor + Alt_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_receive); + element[ 1 ]= new Atomic_producer(Event_does_not_receive); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 8.000000E-01; + alternative_probability[ 1 ]= 2.000000E-01; + } +};// end class Alt_5_6 + +//---- 6 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_Sender){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_send); + } +};// end class Comp_3_4 + +//---- 7 ---- +class Comp_9_10 : public Composite_producer { +public: // constructor + Comp_9_10 (): Composite_producer(Event_Receiver){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Alt_5_6 ; + } +};// end class Comp_9_10 + +//---- 8 ---- +class SCHEMA_unreliable_message_flow: public Composite_producer { +public: // constructor + SCHEMA_unreliable_message_flow(): Composite_producer(Event_unreliable_message_flow){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 4 ]; + element[0]= new Composite_secondary_producer(Event_Sender); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Receiver); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_17_18_ob(Event_SIMPLE_LIST_17_18); + element[3]= new SIMPLE_LIST_37_38_ob(Event_SIMPLE_LIST_37_38); + } +};// end class SCHEMA_unreliable_message_flow + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + { // R title generation + ostringstream convert; + convert <<"Scope "; + convert << 1 ; + REPORT_41_R.title = convert.str();} + // WITHIN good_traces + // loop_over_graph for GRAPH_21_good_traces + { // loop over graph GRAPH_21_good_traces + int a_42_node_var ; + int end_limit_1 = GRAPH_21_good_traces .nodes.size(); + for(int temp = 0; temp < end_limit_1 ; temp++){ + a_42_node_var = temp; + // attribute summary_probability assignment + GLOBAL_summary_probability_number_attribute+=get_trace_probability(m, (int) + NODE_trace_unique_id_number_attribute[a_42_node_var] ) ; + // attribute count assignment + GLOBAL_count_number_attribute+=1 ; + } } // end GRAPH_21_good_traces loop + { // increment report + ostringstream convert; + convert <<"Total "; + convert << total_segments ; + convert <<" traces"; + REPORT_41_R.report_contents.push_back(convert.str());} + { // increment report + ostringstream convert; + convert <<"In "; + convert << + GLOBAL_count_number_attribute ; + convert <<" of traces at least 75% of sent messages have been received"; + REPORT_41_R.report_contents.push_back(convert.str());} + { // increment report + ostringstream convert; + convert <<"At the given scope probability for at least 75% messages to pass through is "; + convert << + GLOBAL_summary_probability_number_attribute ; + REPORT_41_R.report_contents.push_back(convert.str());} + // SHOW R + report_container.insert(pair<int, report_object>( 2,REPORT_41_R)); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects + JSON<<",{\"SAY\":["; + string c = "\""; + for(vector<string>::iterator p2 = global_SAY_list_999999.begin(); + p2 != global_SAY_list_999999.end(); p2++){ + JSON<<c<<*p2<<"\""; c = ",\"";} + JSON<<"]}"; +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example37_GLOBAL_query.json"); + global_flag = true; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_9; temp_9.harvest(); + Comp_9_10 temp_10; temp_10.harvest(); + // harvesting traces for main schema + SCHEMA_unreliable_message_flow temp_11; temp_11.harvest(); + temp_11.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"unreliable_message_flow"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.mp new file mode 100644 index 0000000..d6f37e1 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.mp @@ -0,0 +1,61 @@ +/* Example 37 GLOBAL query + +Unreliable message flow. +Assuming that probability for a message to get lost is 0.2, +find probability of a trace with more than 75% successfully received messages. + +Since we are interested only in traces with at least one 'send' event, +the (+ ... +) iteration is used. + +This example is small enough to try scopes larger than 5. +That can be done using explicit iteration limit (running for instance, +for scope 1), like: + +ROOT Sender: (+<1..7> send +); +ROOT Receiver: (+<1..7> (receive |<<0.2>> does_not_receive) +); + + Run for scopes 1 and up. +*/ +SCHEMA unreliable_message_flow + +ROOT Sender: (+ send +); +ROOT Receiver: (+ (receive |<<0.2>> does_not_receive) +); + +COORDINATE $x: send FROM Sender, + $y: (receive | does_not_receive) FROM Receiver + DO ADD $x PRECEDES $y; OD; + +ATTRIBUTES {number trace_unique_id, + summary_probability, + count; }; + +GRAPH good_traces{ }; /* To accumulate data about traces of interest */ + +IF #receive / #send > 0.75 THEN + WITHIN good_traces { + Node$x: NEW(trace_id); + Node$x.trace_unique_id := trace_id; }; + MARK; /* MARK this trace */ +FI; + +GLOBAL +REPORT R{TITLE("Scope " $$scope);}; + +WITHIN good_traces{ + FOR Node$a DO + /* sum up probabilities of traces stored in the 'good_traces'. + Please notice that trace's probability can be estimated only + after all valid trace derivation has been completed, + i.e. should be postponed to the GLOBAL section, + using the #$$TP( ) function. */ + summary_probability +:= #$$TP(Node$a.trace_unique_id); + count +:=1; + OD; + }; + + SAY( "Total " #$$TRACE " traces") => R; + SAY("In "count " of traces at least 75% of sent messages have been received") => R; + SAY("At the given scope probability for at least 75% messages to pass through is " summary_probability) => R; + + SHOW R; + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.temp.txt new file mode 100644 index 0000000..e765646 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example37_GLOBAL_query tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.tree new file mode 100644 index 0000000000000000000000000000000000000000..7f37652a806cc96e94235b36728ec42cda90b57a GIT binary patch literal 9728 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.txt new file mode 100644 index 0000000..8e52387 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.txt @@ -0,0 +1,11 @@ +generating traces for scope 1 +completed Sender: 1 traces (0 MARKed) 2 events + +completed Receiver: 2 traces (0 MARKed) 4 events + average 2 ev/trace min 2 max 2 + +completed unreliable_message_flow: 2 traces (1 MARKed) 10 events + average 5 ev/trace min 5 max 5 + +Elapsed time 0.000207 sec, Speed: 77294.7 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.cpp new file mode 100644 index 0000000..0fd3a20 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.cpp @@ -0,0 +1,881 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Knapsack trace generator for scope 3 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, float > limit_number_attribute; + map<int, float > accumulated_total_number_attribute; + map<int, float > current_max_number_attribute; + map<int, float > A_count_number_attribute; + map<int, float > B_count_number_attribute; + map<int, float > C_count_number_attribute; +//-- node attributes -- + map<int, float > NODE_accumulated_total_number_attribute; + map<int, float > NODE_A_count_number_attribute; + map<int, float > NODE_B_count_number_attribute; + map<int, float > NODE_C_count_number_attribute; +//-- GLOBAL attributes -- + float GLOBAL_limit_number_attribute; + float GLOBAL_current_max_number_attribute; + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( limit_number_attribute[event1] != limit_number_attribute[event2]) + return false; + if( accumulated_total_number_attribute[event1] != accumulated_total_number_attribute[event2]) + return false; + if( current_max_number_attribute[event1] != current_max_number_attribute[event2]) + return false; + if( A_count_number_attribute[event1] != A_count_number_attribute[event2]) + return false; + if( B_count_number_attribute[event1] != B_count_number_attribute[event2]) + return false; + if( C_count_number_attribute[event1] != C_count_number_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + limit_number_attribute.clear(); + accumulated_total_number_attribute.clear(); + current_max_number_attribute.clear(); + A_count_number_attribute.clear(); + B_count_number_attribute.clear(); + C_count_number_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!limit_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("limit",limit_number_attribute)); + if(!accumulated_total_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("accumulated_total",accumulated_total_number_attribute)); + if(!current_max_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("current_max",current_max_number_attribute)); + if(!A_count_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("A_count",A_count_number_attribute)); + if(!B_count_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("B_count",B_count_number_attribute)); + if(!C_count_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("C_count",C_count_number_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + + if(p1_num_attr->first == "limit"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + limit_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + else + if(p1_num_attr->first == "accumulated_total"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + accumulated_total_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + else + if(p1_num_attr->first == "current_max"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + current_max_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + else + if(p1_num_attr->first == "A_count"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + A_count_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + else + if(p1_num_attr->first == "B_count"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + B_count_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + else + if(p1_num_attr->first == "C_count"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + C_count_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +graph_object GRAPH_62_candidates; +report_object REPORT_97_best_knapsack; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Item_A + , Event_Item_B + , Event_Item_C + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_3_4 + , Event_SIMPLE_LIST_10_11 + , Event_SIMPLE_LIST_22_23 + , Event_SIMPLE_LIST_29_30 + , Event_SIMPLE_LIST_41_42 + , Event_SIMPLE_LIST_48_49 + , Event_SIMPLE_LIST_93_94 + // ADD operations + // ROOT events + , Event_A + , Event_B + , Event_C + // main schema event + , Event_Knapsack }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Item_A" + , "Item_B" + , "Item_C" + , "SIMPLE_LIST_3_4" + , "SIMPLE_LIST_10_11" + , "SIMPLE_LIST_22_23" + , "SIMPLE_LIST_29_30" + , "SIMPLE_LIST_41_42" + , "SIMPLE_LIST_48_49" + , "SIMPLE_LIST_93_94" + , "A" + , "B" + , "C" + , "Knapsack" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_7(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Item_A){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_26(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Item_B){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_45(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Item_C){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_69(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Item_A){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_72(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Item_B){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 6 ---- +int special_function_75(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Item_C){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 7 ---- +class SIMPLE_LIST_3_4_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_3_4_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute limit assignment + GLOBAL_limit_number_attribute=11 ; + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_3_4_ob class + +//---- 8 ---- +class SIMPLE_LIST_10_11_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_10_11_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute accumulated_total assignment + accumulated_total_number_attribute[0]=( special_function_7(current_host, Root_table[Event_A]) +* 2 ); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_10_11_ob class + +//---- 9 ---- +class SIMPLE_LIST_22_23_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_22_23_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute accumulated_total assignment + accumulated_total_number_attribute[0]+= + accumulated_total_number_attribute[Root_table[Event_A]] ; + if( ( + accumulated_total_number_attribute[0] > + GLOBAL_limit_number_attribute )){ + throw failed; // REJECT + }// end THEN + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_22_23_ob class + +//---- 10 ---- +class SIMPLE_LIST_29_30_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_29_30_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute accumulated_total assignment + accumulated_total_number_attribute[0]=( special_function_26(current_host, Root_table[Event_B]) +* 3 ); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_29_30_ob class + +//---- 11 ---- +class SIMPLE_LIST_41_42_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_41_42_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute accumulated_total assignment + accumulated_total_number_attribute[0]+= + accumulated_total_number_attribute[Root_table[Event_B]] ; + if( ( + accumulated_total_number_attribute[0] > + GLOBAL_limit_number_attribute )){ + throw failed; // REJECT + }// end THEN + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_41_42_ob class + +//---- 12 ---- +class SIMPLE_LIST_48_49_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_48_49_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute accumulated_total assignment + accumulated_total_number_attribute[0]=( special_function_45(current_host, Root_table[Event_C]) +* 5 ); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_48_49_ob class + +//---- 13 ---- +class SIMPLE_LIST_93_94_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_93_94_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // attribute accumulated_total assignment + accumulated_total_number_attribute[0]+= + accumulated_total_number_attribute[Root_table[Event_C]] ; + if( ( + accumulated_total_number_attribute[0] > + GLOBAL_limit_number_attribute )){ + throw failed; // REJECT + }// end THEN + { // candidates title generation + ostringstream convert; + convert <<" "; + GRAPH_62_candidates.title = convert.str();} + if( ( + accumulated_total_number_attribute[0] >= + GLOBAL_current_max_number_attribute )){ + // attribute current_max assignment + GLOBAL_current_max_number_attribute= + accumulated_total_number_attribute[0] ; + // WITHIN candidates + int a_65_node_var = -1; + {// NEW_NODE + ostringstream convert; + convert << + trace_id_attribute ; + a_65_node_var = GRAPH_62_candidates.create_new_node(convert.str());} + // attribute accumulated_total assignment + NODE_accumulated_total_number_attribute[a_65_node_var]= + accumulated_total_number_attribute[0] ; + // attribute A_count assignment + NODE_A_count_number_attribute[a_65_node_var]=special_function_69(current_host, Root_table[Event_Knapsack]) +; + // attribute B_count assignment + NODE_B_count_number_attribute[a_65_node_var]=special_function_72(current_host, Root_table[Event_Knapsack]) +; + // attribute C_count assignment + NODE_C_count_number_attribute[a_65_node_var]=special_function_75(current_host, Root_table[Event_Knapsack]) +; + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Best result so far: "; + convert << + accumulated_total_number_attribute[0] ; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_93_94_ob class + +//---- 14 ---- +class Ct_123_124 : public AND_node_producer_container { +public: // constructor + Ct_123_124 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Item_A); + element[ 1 ]= new Atomic_producer(Event_Item_A); + } +};// end class Ct_123_124 + +//---- 15 ---- +class Ct_125_126 : public AND_node_producer_container { +public: // constructor + Ct_125_126 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Item_A); + element[ 1 ]= new Atomic_producer(Event_Item_A); + element[ 2 ]= new Atomic_producer(Event_Item_A); + } +};// end class Ct_125_126 + +//---- 16 ---- +class Itr_5_6 : public OR_node_producer_container { +public: // constructor + Itr_5_6 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_Item_A); + element[ 2 ]= new Ct_123_124 ; + element[ 3 ]= new Ct_125_126 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_5_6 + +//---- 17 ---- +class Ct_127_128 : public AND_node_producer_container { +public: // constructor + Ct_127_128 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Item_B); + element[ 1 ]= new Atomic_producer(Event_Item_B); + } +};// end class Ct_127_128 + +//---- 18 ---- +class Ct_129_130 : public AND_node_producer_container { +public: // constructor + Ct_129_130 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Item_B); + element[ 1 ]= new Atomic_producer(Event_Item_B); + element[ 2 ]= new Atomic_producer(Event_Item_B); + } +};// end class Ct_129_130 + +//---- 19 ---- +class Itr_24_25 : public OR_node_producer_container { +public: // constructor + Itr_24_25 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_Item_B); + element[ 2 ]= new Ct_127_128 ; + element[ 3 ]= new Ct_129_130 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_24_25 + +//---- 20 ---- +class Ct_131_132 : public AND_node_producer_container { +public: // constructor + Ct_131_132 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Item_C); + element[ 1 ]= new Atomic_producer(Event_Item_C); + } +};// end class Ct_131_132 + +//---- 21 ---- +class Ct_133_134 : public AND_node_producer_container { +public: // constructor + Ct_133_134 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Item_C); + element[ 1 ]= new Atomic_producer(Event_Item_C); + element[ 2 ]= new Atomic_producer(Event_Item_C); + } +};// end class Ct_133_134 + +//---- 22 ---- +class Itr_43_44 : public OR_node_producer_container { +public: // constructor + Itr_43_44 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_Item_C); + element[ 2 ]= new Ct_131_132 ; + element[ 3 ]= new Ct_133_134 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_43_44 + +//---- 23 ---- +class Comp_12_13 : public Composite_producer { +public: // constructor + Comp_12_13 (): Composite_producer(Event_A){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_5_6 ; + element[ 1 ]= new SIMPLE_LIST_10_11_ob(Event_SIMPLE_LIST_10_11); + } +};// end class Comp_12_13 + +//---- 24 ---- +class Comp_31_32 : public Composite_producer { +public: // constructor + Comp_31_32 (): Composite_producer(Event_B){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_24_25 ; + element[ 1 ]= new SIMPLE_LIST_29_30_ob(Event_SIMPLE_LIST_29_30); + } +};// end class Comp_31_32 + +//---- 25 ---- +class Comp_50_51 : public Composite_producer { +public: // constructor + Comp_50_51 (): Composite_producer(Event_C){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_43_44 ; + element[ 1 ]= new SIMPLE_LIST_48_49_ob(Event_SIMPLE_LIST_48_49); + } +};// end class Comp_50_51 + +//---- 26 ---- +class SCHEMA_Knapsack: public Composite_producer { +public: // constructor + SCHEMA_Knapsack(): Composite_producer(Event_Knapsack){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 7 ]; + element[0]= new SIMPLE_LIST_3_4_ob(Event_SIMPLE_LIST_3_4); + element[1]= new Composite_secondary_producer(Event_A); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_22_23_ob(Event_SIMPLE_LIST_22_23); + element[3]= new Composite_secondary_producer(Event_B); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_41_42_ob(Event_SIMPLE_LIST_41_42); + element[5]= new Composite_secondary_producer(Event_C); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_93_94_ob(Event_SIMPLE_LIST_93_94); + } +};// end class SCHEMA_Knapsack + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + { // best_knapsack title generation + ostringstream convert; + convert <<"Best knapsack"; + REPORT_97_best_knapsack.title = convert.str();} + { // increment report + ostringstream convert; + convert <<"Weight limit "; + convert << + GLOBAL_limit_number_attribute ; + REPORT_97_best_knapsack.report_contents.push_back(convert.str());} + { // increment report + ostringstream convert; + convert <<"Single item's weight: A= 2 B= 3 C= 5"; + REPORT_97_best_knapsack.report_contents.push_back(convert.str());} + { // increment report + ostringstream convert; + convert <<"For scope "; + convert << 3 ; + convert <<" best packing is "; + convert << + GLOBAL_current_max_number_attribute ; + REPORT_97_best_knapsack.report_contents.push_back(convert.str());} + // WITHIN candidates + // loop_over_graph for GRAPH_62_candidates + { // loop over graph GRAPH_62_candidates + int x_107_node_var ; + int end_limit_1 = GRAPH_62_candidates .nodes.size(); + for(int temp = 0; temp < end_limit_1 ; temp++){ + x_107_node_var = temp; + if( ( + NODE_accumulated_total_number_attribute[x_107_node_var] == + GLOBAL_current_max_number_attribute )){ + { // increment report + ostringstream convert; + convert <<"Pack "; + convert << + NODE_A_count_number_attribute[x_107_node_var] ; + convert <<" of A, "; + convert << + NODE_B_count_number_attribute[x_107_node_var] ; + convert <<" of B, "; + convert << + NODE_C_count_number_attribute[x_107_node_var] ; + convert <<" of C"; + REPORT_97_best_knapsack.report_contents.push_back(convert.str());} + }// end THEN + } } // end GRAPH_62_candidates loop + // SHOW best_knapsack + report_container.insert(pair<int, report_object>( 2,REPORT_97_best_knapsack)); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects + JSON<<",{\"SAY\":["; + string c = "\""; + for(vector<string>::iterator p2 = global_SAY_list_999999.begin(); + p2 != global_SAY_list_999999.end(); p2++){ + JSON<<c<<*p2<<"\""; c = ",\"";} + JSON<<"]}"; +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example38_knapsack.json"); + global_flag = true; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 3 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_12_13 temp_27; temp_27.harvest(); + Comp_31_32 temp_28; temp_28.harvest(); + Comp_50_51 temp_29; temp_29.harvest(); + // harvesting traces for main schema + SCHEMA_Knapsack temp_30; temp_30.harvest(); + temp_30.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Knapsack"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.mp new file mode 100644 index 0000000..ebe7c4d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.mp @@ -0,0 +1,81 @@ +/* Example 38 Knapsack + + This is a case of well-known Knapsack Dynamic Programming Problem. + In general it is NP-hard and NP-complete + with respect to the number N of items and to the weight limit W. + It has been proven that the computational complexity is O(N * W), + see https://en.wikipedia.org/wiki/Knapsack_problem + + This example demonstrates MP template for performing "brute force" search + for all optimal solutions within the given scope + (certainly not the optimal performance, but is acceptable for relatively + small N,in particular, it stabilizes at scope 4). + + Run for scope 1 and up to 5 +*/ +SCHEMA Knapsack + +ATTRIBUTES { number limit, accumulated_total, current_max, + A_count, B_count, C_count;}; + +GLOBAL.limit := 11; + +ROOT A: (* Item_A *) + BUILD{ accumulated_total := #Item_A * 2; + }; + +accumulated_total +:= A.accumulated_total; +IF accumulated_total > GLOBAL.limit THEN REJECT; FI; + +ROOT B: (* Item_B *) + BUILD{ accumulated_total := #Item_B * 3; + }; + +accumulated_total +:= B.accumulated_total; +IF accumulated_total > GLOBAL.limit THEN REJECT; FI; + +ROOT C: (* Item_C *) + BUILD{ accumulated_total := #Item_C * 5; + }; + +accumulated_total +:= C.accumulated_total; +IF accumulated_total > GLOBAL.limit THEN REJECT; FI; + +/* if got so far, check whether accumulated_total can be stored as result */ +GRAPH candidates{}; + +IF accumulated_total >= GLOBAL.current_max THEN + GLOBAL.current_max := accumulated_total; + + /* add potential candidate to the list */ + WITHIN candidates{ + Node$a: NEW(trace_id); + Node$a.accumulated_total := accumulated_total; + Node$a.A_count := #Item_A; + Node$a.B_count := #Item_B; + Node$a.C_count := #Item_C; + SAY("Best result so far: " accumulated_total); + }; + + ELSE REJECT; +FI; + +GLOBAL +REPORT best_knapsack{TITLE("Best knapsack");}; + +SAY("Weight limit " limit) => best_knapsack; +SAY("Single item's weight: A= 2 B= 3 C= 5" ) => best_knapsack; +SAY("For scope " $$scope " best packing is " current_max) => best_knapsack; + +WITHIN candidates{ + FOR Node$x DO + IF Node$x.accumulated_total == current_max THEN + SAY("Pack " + Node$x.A_count " of A, " + Node$x.B_count " of B, " + Node$x.C_count " of C" ) => best_knapsack; + FI; + OD; + }; + +SHOW best_knapsack; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.temp.txt new file mode 100644 index 0000000..59e8085 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example38_knapsack tree 3 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.tree new file mode 100644 index 0000000000000000000000000000000000000000..3f8d998fa00e44aae098a0eee31ff5b644e52f4f GIT binary patch literal 17408 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.txt new file mode 100644 index 0000000..0f6979f --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.txt @@ -0,0 +1,15 @@ +generating traces for scope 3 +completed A: 4 traces (0 MARKed) 10 events + average 2.5 ev/trace min 1 max 4 + +completed B: 4 traces (0 MARKed) 10 events + average 2.5 ev/trace min 1 max 4 + +completed C: 4 traces (0 MARKed) 10 events + average 2.5 ev/trace min 1 max 4 + +completed Knapsack: 6 traces (0 MARKed) 44 events + average 7.33333 ev/trace min 5 max 9 + +Elapsed time 0.001388 sec, Speed: 53314.1 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.cpp new file mode 100644 index 0000000..0fe305e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.cpp @@ -0,0 +1,2346 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Turtles trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_nobody_before + , Event_one_before + , Event_two_before + , Event_nobody_behinds + , Event_one_behinds + , Event_two_behinds + , Event_Lying + , Event_Telling_the_truth + // composite events + , Event_neighbors + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_17_18 + , Event_SIMPLE_LIST_32_33 + , Event_SIMPLE_LIST_47_48 + , Event_SIMPLE_LIST_62_63 + , Event_SIMPLE_LIST_178_179 + // ADD operations + // ROOT events + , Event_Turtle_1 + , Event_Turtle_2 + , Event_Turtle_3 + // main schema event + , Event_Turtles }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "nobody_before" + , "one_before" + , "two_before" + , "nobody_behinds" + , "one_behinds" + , "two_behinds" + , "Lying" + , "Telling_the_truth" + , "neighbors" + , "SIMPLE_LIST_17_18" + , "SIMPLE_LIST_32_33" + , "SIMPLE_LIST_47_48" + , "SIMPLE_LIST_62_63" + , "SIMPLE_LIST_178_179" + , "Turtle_1" + , "Turtle_2" + , "Turtle_3" + , "Turtles" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +int special_function_7(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 2 ---- +int special_function_8(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 3 ---- +int special_function_9(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 4 ---- +int special_function_10(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 5 ---- +int special_function_11(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 6 ---- +int special_function_12(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 7 ---- +int special_function_25(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Telling_the_truth){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 8 ---- +int special_function_26(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 9 ---- +int special_function_27(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 10 ---- +int special_function_40(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Telling_the_truth){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 11 ---- +int special_function_41(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 12 ---- +int special_function_42(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 13 ---- +int special_function_55(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Telling_the_truth){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 14 ---- +int special_function_56(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 15 ---- +int special_function_57(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 16 ---- +int special_function_66(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 17 ---- +int special_function_67(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 18 ---- +int special_function_68(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 19 ---- +int special_function_69(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 20 ---- +int special_function_70(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 21 ---- +int special_function_71(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 22 ---- +int special_function_80(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 23 ---- +int special_function_81(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 24 ---- +int special_function_82(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 25 ---- +int special_function_83(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 26 ---- +int special_function_84(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 27 ---- +int special_function_85(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 28 ---- +int special_function_94(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 29 ---- +int special_function_95(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 30 ---- +int special_function_96(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 31 ---- +int special_function_97(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 32 ---- +int special_function_98(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 33 ---- +int special_function_99(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 34 ---- +int special_function_100(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 35 ---- +int special_function_101(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 36 ---- +int special_function_102(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 37 ---- +int special_function_103(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 38 ---- +int special_function_104(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 39 ---- +int special_function_105(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 40 ---- +int special_function_106(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 41 ---- +int special_function_107(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 42 ---- +int special_function_108(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 43 ---- +int special_function_109(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 44 ---- +int special_function_110(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 45 ---- +int special_function_111(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 46 ---- +int special_function_116(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 47 ---- +int special_function_117(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 48 ---- +int special_function_118(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 49 ---- +int special_function_127(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 50 ---- +int special_function_128(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 51 ---- +int special_function_129(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 52 ---- +int special_function_138(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 53 ---- +int special_function_139(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 54 ---- +int special_function_140(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_one_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 55 ---- +int special_function_141(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_two_before){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 56 ---- +int special_function_150(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_nobody_behinds){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 57 ---- +int special_function_159(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Lying){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 58 ---- +int special_function_168(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Lying){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 59 ---- +int special_function_171(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Lying){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 60 ---- +bool Quantified_expr_72_73(Coordinate * current_host, int t1_variable){ + //===================================== + // quantifier EXISTS DISJ with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int t2_variable; + int pivot_t2_variable = 0; + int t3_variable; + int pivot_t3_variable = 0; + + // loop 1 for t2_variable + for( t2_variable = 0; t2_variable < len; t2_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ t2_variable * len + pivot_t2_variable +]) && + ( Stack[ t2_variable ]->type == ROOT_node ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for t3_variable + for( t3_variable = 0; t3_variable < len; t3_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ t3_variable * len + pivot_t3_variable +]) && + ( Stack[ t3_variable ]->type == ROOT_node ) + // checking DISJ + && t3_variable != t2_variable + && !(current_host-> eq_matrix[ t3_variable * len + t2_variable ]) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( ( ( ( t1_variable != t2_variable ) && ( t1_variable != t3_variable ) + )&& ( ( ( special_function_67(current_host, t2_variable ) == 1 )&& ( special_function_68(current_host, +t3_variable ) == 1 ))|| ( ( ( special_function_69(current_host, t2_variable ) == + 1 )&& ( special_function_70(current_host, t2_variable ) == 1 ))&& ( special_function_71(current_host, +t3_variable ) == 1 ))))) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 61 ---- +bool Quantified_expr_74_75(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int t1_variable; + int pivot_t1_variable = 0; + + // loop 1 for t1_variable + for( t1_variable = 0; t1_variable < len; t1_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ t1_variable * len + pivot_t1_variable +]) && + ( Stack[ t1_variable ]->type == ROOT_node ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( (! ( special_function_66(current_host, t1_variable ) > 0 )|| Quantified_expr_72_73(current_host, t1_variable +) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 62 ---- +bool Quantified_expr_86_87(Coordinate * current_host, int t1_variable){ + //===================================== + // quantifier EXISTS DISJ with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int t2_variable; + int pivot_t2_variable = 0; + int t3_variable; + int pivot_t3_variable = 0; + + // loop 1 for t2_variable + for( t2_variable = 0; t2_variable < len; t2_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ t2_variable * len + pivot_t2_variable +]) && + ( Stack[ t2_variable ]->type == ROOT_node ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for t3_variable + for( t3_variable = 0; t3_variable < len; t3_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ t3_variable * len + pivot_t3_variable +]) && + ( Stack[ t3_variable ]->type == ROOT_node ) + // checking DISJ + && t3_variable != t2_variable + && !(current_host-> eq_matrix[ t3_variable * len + t2_variable ]) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( ( ( ( t1_variable != t2_variable ) && ( t1_variable != t3_variable ) + )&& ( ( ( special_function_81(current_host, t2_variable ) == 1 )&& ( special_function_82(current_host, +t3_variable ) == 1 ))|| ( ( ( special_function_83(current_host, t2_variable ) == + 1 )&& ( special_function_84(current_host, t2_variable ) == 1 ))&& ( special_function_85(current_host, +t3_variable ) == 1 ))))) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 63 ---- +bool Quantified_expr_88_89(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int t1_variable; + int pivot_t1_variable = 0; + + // loop 1 for t1_variable + for( t1_variable = 0; t1_variable < len; t1_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ t1_variable * len + pivot_t1_variable +]) && + ( Stack[ t1_variable ]->type == ROOT_node ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( (! ( special_function_80(current_host, t1_variable ) > 0 )|| Quantified_expr_86_87(current_host, t1_variable +) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 64 ---- +class SIMPLE_LIST_17_18_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_17_18_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( ( ( ( special_function_7(current_host, Root_table[Event_neighbors])+ special_function_8(current_host, Root_table[Event_neighbors])) +< 2 )&& (! ( special_function_9(current_host, Root_table[Event_neighbors])== 1 ) +|| ( special_function_10(current_host, Root_table[Event_neighbors])== 1 )))&& (! + ( special_function_11(current_host, Root_table[Event_neighbors])== 1 )|| ( special_function_12(current_host, Root_table[Event_neighbors]) +== 1 )))){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_17_18_ob class + +//---- 65 ---- +class SIMPLE_LIST_32_33_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_32_33_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( ( special_function_25(current_host, Root_table[Event_Turtle_1])== 1 )== + ( ( special_function_26(current_host, Root_table[Event_Turtle_1])== 1 )&& ( special_function_27(current_host, Root_table[Event_Turtle_1]) +== 1 )))){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_32_33_ob class + +//---- 66 ---- +class SIMPLE_LIST_47_48_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_47_48_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( ( special_function_40(current_host, Root_table[Event_Turtle_2])== 1 )== + ( ( special_function_41(current_host, Root_table[Event_Turtle_2])== 1 )&& ( special_function_42(current_host, Root_table[Event_Turtle_2]) +== 1 )))){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_47_48_ob class + +//---- 67 ---- +class SIMPLE_LIST_62_63_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_62_63_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( ( special_function_55(current_host, Root_table[Event_Turtle_3])== 1 )== + ( ( special_function_56(current_host, Root_table[Event_Turtle_3])== 1 )&& ( special_function_57(current_host, Root_table[Event_Turtle_3]) +== 1 )))){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_62_63_ob class + +//---- 68 ---- +class SIMPLE_LIST_178_179_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_178_179_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( Quantified_expr_74_75(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( Quantified_expr_88_89(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( ( ( ( ( ( ( ( ( ( special_function_94(current_host, Root_table[Event_Turtles]) +== 1 )&& ( special_function_95(current_host, Root_table[Event_Turtles])== 2 ))&& + ( special_function_96(current_host, Root_table[Event_Turtles])== 0 ))&& ( special_function_97(current_host, Root_table[Event_Turtles]) +== 0 ))&& ( special_function_98(current_host, Root_table[Event_Turtles])== 2 )) +&& ( special_function_99(current_host, Root_table[Event_Turtles])== 1 ))|| ( ( ( + ( ( ( special_function_100(current_host, Root_table[Event_Turtles])== 1 )&& ( special_function_101(current_host, Root_table[Event_Turtles]) +== 2 ))&& ( special_function_102(current_host, Root_table[Event_Turtles])== 0 )) +&& ( special_function_103(current_host, Root_table[Event_Turtles])== 0 ))&& ( special_function_104(current_host, Root_table[Event_Turtles]) +== 1 ))&& ( special_function_105(current_host, Root_table[Event_Turtles])== 2 ))) +|| ( ( ( ( special_function_106(current_host, Root_table[Event_Turtles])== 1 )&& + ( special_function_107(current_host, Root_table[Event_Turtles])== 1 ))&& ( special_function_108(current_host, Root_table[Event_Turtles]) +== 1 ))&& ( special_function_109(current_host, Root_table[Event_Turtles])== 1 ))) +|| ( ( special_function_110(current_host, Root_table[Event_Turtles])== 3 )&& ( special_function_111(current_host, Root_table[Event_Turtles]) +== 3 )))){} + else{ + throw failed; // REJECT + }// end IF + if( ( ( ( special_function_116(current_host, Root_table[Event_Turtles])== 1 ) +&& ( special_function_117(current_host, Root_table[Event_Turtles])== 2 ))&& ( special_function_118(current_host, Root_table[Event_Turtles]) +== 0 ))){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"form fork upward"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + if( ( ( ( special_function_127(current_host, Root_table[Event_Turtles])== 1 ) +&& ( special_function_128(current_host, Root_table[Event_Turtles])== 2 ))&& ( special_function_129(current_host, Root_table[Event_Turtles]) +== 0 ))){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"form fork downward"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + if( ( ( ( ( special_function_138(current_host, Root_table[Event_Turtles])== 1 + )&& ( special_function_139(current_host, Root_table[Event_Turtles])== 1 ))&& ( special_function_140(current_host, Root_table[Event_Turtles]) +== 1 ))&& ( special_function_141(current_host, Root_table[Event_Turtles])== 1 )) +){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"form vertical line"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + if( ( special_function_150(current_host, Root_table[Event_Turtles])== 3 )){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"moving parallel"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end THEN + if( ( special_function_159(current_host, Root_table[Event_Turtles])== 0 )){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"All three are telling truth!"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + Mark = 'M'; // MARK + }// end THEN + else{ + { // SAY_event generation + string message; + ostringstream convert; + convert << special_function_171(current_host, Root_table[Event_Turtles]); + convert <<" are lying"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_178_179_ob class + +//---- 69 ---- +class Alt_1_2 : public OR_node_producer_container { +public: // constructor + Alt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_nobody_before); + element[ 1 ]= new Atomic_producer(Event_one_before); + element[ 2 ]= new Atomic_producer(Event_two_before); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Alt_1_2 + +//---- 70 ---- +class Alt_3_4 : public OR_node_producer_container { +public: // constructor + Alt_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_nobody_behinds); + element[ 1 ]= new Atomic_producer(Event_one_behinds); + element[ 2 ]= new Atomic_producer(Event_two_behinds); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Alt_3_4 + +//---- 71 ---- +class Set_5_6 : public SET_node_producer_container { +public: // constructor + Set_5_6 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_1_2 ; + element[ 1 ]= new Alt_3_4 ; + } +};// end class Set_5_6 + +//---- 72 ---- +class Alt_21_22 : public OR_node_producer_container { +public: // constructor + Alt_21_22 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Lying); + element[ 1 ]= new Atomic_producer(Event_Telling_the_truth); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_21_22 + +//---- 73 ---- +class Sq_23_24 : public AND_node_producer_container { +public: // constructor + Sq_23_24 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_neighbors); + element[ 1 ]= new Alt_21_22 ; + } +};// end class Sq_23_24 + +//---- 74 ---- +class Alt_36_37 : public OR_node_producer_container { +public: // constructor + Alt_36_37 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Lying); + element[ 1 ]= new Atomic_producer(Event_Telling_the_truth); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_36_37 + +//---- 75 ---- +class Sq_38_39 : public AND_node_producer_container { +public: // constructor + Sq_38_39 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_neighbors); + element[ 1 ]= new Alt_36_37 ; + } +};// end class Sq_38_39 + +//---- 76 ---- +class Alt_51_52 : public OR_node_producer_container { +public: // constructor + Alt_51_52 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Lying); + element[ 1 ]= new Atomic_producer(Event_Telling_the_truth); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_51_52 + +//---- 77 ---- +class Sq_53_54 : public AND_node_producer_container { +public: // constructor + Sq_53_54 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Composite_secondary_producer(Event_neighbors); + element[ 1 ]= new Alt_51_52 ; + } +};// end class Sq_53_54 + +//---- 78 ---- +class Comp_19_20 : public Composite_producer { +public: // constructor + Comp_19_20 (): Composite_producer(Event_neighbors){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Set_5_6 ; + element[ 1 ]= new SIMPLE_LIST_17_18_ob(Event_SIMPLE_LIST_17_18); + } +};// end class Comp_19_20 + +//---- 79 ---- +class Comp_34_35 : public Composite_producer { +public: // constructor + Comp_34_35 (): Composite_producer(Event_Turtle_1){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_23_24 ; + element[ 1 ]= new SIMPLE_LIST_32_33_ob(Event_SIMPLE_LIST_32_33); + } +};// end class Comp_34_35 + +//---- 80 ---- +class Comp_49_50 : public Composite_producer { +public: // constructor + Comp_49_50 (): Composite_producer(Event_Turtle_2){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_38_39 ; + element[ 1 ]= new SIMPLE_LIST_47_48_ob(Event_SIMPLE_LIST_47_48); + } +};// end class Comp_49_50 + +//---- 81 ---- +class Comp_64_65 : public Composite_producer { +public: // constructor + Comp_64_65 (): Composite_producer(Event_Turtle_3){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_53_54 ; + element[ 1 ]= new SIMPLE_LIST_62_63_ob(Event_SIMPLE_LIST_62_63); + } +};// end class Comp_64_65 + +//---- 82 ---- +class SCHEMA_Turtles: public Composite_producer { +public: // constructor + SCHEMA_Turtles(): Composite_producer(Event_Turtles){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 4 ]; + element[0]= new Composite_secondary_producer(Event_Turtle_1); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Turtle_2); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new Composite_secondary_producer(Event_Turtle_3); + // for Root_table update in Composite_secondary_producer::traverse() + element[2] -> type = ROOT_node; + element[3]= new SIMPLE_LIST_178_179_ob(Event_SIMPLE_LIST_178_179); + } +};// end class SCHEMA_Turtles + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example39_turtles.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_19_20 temp_83; temp_83.harvest(); + // harvesting traces for ROOT events + Comp_34_35 temp_84; temp_84.harvest(); + Comp_49_50 temp_85; temp_85.harvest(); + Comp_64_65 temp_86; temp_86.harvest(); + // harvesting traces for main schema + SCHEMA_Turtles temp_87; temp_87.harvest(); + temp_87.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Turtles"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.mp new file mode 100644 index 0000000..bedbdb0 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.mp @@ -0,0 +1,132 @@ +/* Example39 turtles.mp + + Demonstration of the benefits for complete + example set generation in MP. + + + Three turtles are moving on a desert plain, all in the same direction. + The first has been asked: "What do you see?" It answered: + "I see nobody before me and two turtles behind." The second turtle has been + asked the same question: "What do you see?" and answered + "I see one turtle before me and one behind." When the third turtle + is asked the same question, it answers: "I see one turtle before + me and one behind." How could that be? + +Don't try to construct a non-Euclidean geometry to + accommodate the possible turtle configuration. A person with common sense + after a short moment of time will say: "The third is lying!" The + reaction will be: "Ahh, yes! But wait, maybe the first is lying, or the second, + or all three of them. It becomes too complicated...." + + Now it is time to use MP to obtain all possible scenarios for that story. + + Here it is. Run for scope 1. + There are 13 possible scenarios, and none when all three + are telling the truth. + + ==================================*/ +SCHEMA Turtles + +neighbors: { (nobody_before | one_before | two_before ), + (nobody_behinds | one_behinds | two_behinds) } +BUILD{ + /* no more than one of two_before or two_behinds */ + ENSURE (#two_before + #two_behinds) < 2 AND + (#two_before == 1 -> #nobody_behinds == 1) AND + (#two_behinds == 1 -> #nobody_before == 1) ; + }; + +ROOT Turtle_1: neighbors (Lying | Telling_the_truth) +BUILD{ + ENSURE (#Telling_the_truth == 1 <-> + #nobody_before == 1 AND #two_behinds == 1); + }; + +ROOT Turtle_2: neighbors (Lying | Telling_the_truth) +BUILD{ + ENSURE (#Telling_the_truth == 1 <-> + #one_before == 1 AND #one_behinds == 1); + }; + +ROOT Turtle_3: neighbors (Lying | Telling_the_truth) +BUILD{ + ENSURE (#Telling_the_truth == 1 <-> + #one_before == 1 AND #one_behinds == 1); + }; + +/*=============================== + global constraints +=================================*/ +/* ensure the shape of the pack +---------------------------------*/ +ENSURE FOREACH $t1: $$ROOT + (#two_before FROM $t1 > 0 -> EXISTS DISJ $t2: $$ROOT, $t3: $$ROOT + $t1 != $t2 AND $t1 != $t3 AND + + /* $t1 is the root of upward fork */ + ( (#one_behinds FROM $t2 == 1 AND #one_behinds FROM $t3 == 1) OR + + /* $t1 is the bottom of vertical line */ + (#one_behinds FROM $t2 == 1 AND #one_behinds FROM $t2 == 1 AND + #two_behinds FROM $t3 == 1 ) + ) + ); + +ENSURE FOREACH $t1: $$ROOT + (#two_behinds FROM $t1 > 0 -> EXISTS DISJ $t2: $$ROOT, $t3: $$ROOT + $t1 != $t2 AND $t1 != $t3 AND + + /* $t1 is the top of downward fork */ + ( (#one_before FROM $t2 == 1 AND #one_before FROM $t3 == 1) OR + + /* $t1 is the top of vertical line */ + (#one_behinds FROM $t2 == 1 AND #one_behinds FROM $t2 == 1 AND + #two_before FROM $t3 == 1 ) + ) + ); + +/* turtles form either a fork or a line */ +/*======================================*/ +ENSURE /* fork upward */ + #two_before == 1 AND + #one_behinds == 2 AND + #one_before == 0 AND + #two_behinds == 0 AND + #nobody_before == 2 AND + #nobody_behinds == 1 OR + + /* fork downward */ + #two_behinds == 1 AND + #one_before == 2 AND + #one_behinds == 0 AND + #two_before == 0 AND + #nobody_before == 1 AND + #nobody_behinds == 2 OR + + /* vertical */ + #two_behinds == 1 AND + #one_before == 1 AND + #one_behinds == 1 AND + #two_before == 1 OR + + /* parallel */ + #nobody_behinds == 3 AND + #nobody_before == 3 +; +/*-------------------------------------------------------*/ +IF #two_before == 1 AND #one_behinds == 2 AND #one_before == 0 THEN + SAY("form fork upward"); FI; + +IF #two_behinds == 1 AND #one_before == 2 AND #one_behinds == 0 THEN + SAY("form fork downward"); FI; + + +IF #two_behinds == 1 AND #one_before == 1 AND + #one_behinds == 1 AND #two_before == 1 THEN + SAY("form vertical line"); FI; + +IF #nobody_behinds == 3 THEN + SAY("moving parallel"); FI; + +IF #Lying == 0 THEN SAY("All three are telling truth!"); MARK; +ELSE SAY( #Lying " are lying"); FI; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.temp.txt new file mode 100644 index 0000000..a0251d2 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example39_turtles tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.tree new file mode 100644 index 0000000000000000000000000000000000000000..4465a42e2fe8a1571f688eceb525d23e5488c02f GIT binary patch literal 36864 zcmdUYe{@twc4k?qANqw5k`O`&(Z)h%7|g0$tzX2$V2p{)$d~|e7>2klp~lD-lH6)A z_Oc!iVOYmYSV9;=7(y6^5JFg%5W+Gn$05YwcnOCP;^laWm&5Vluq?;RvMlTPus&V; z-Ku)suez$Aq#pmX#c5UddtZHZ@2y+6ZoT)qIg`)WDEu4CWJ#jpMT{jMLtTP84|Nq@ z)r>jp<AUTU#&9Yh%|zi-ac(AFEqKjU$Iy;S0baneeEdtI0bdBd0O}6Z4(dgyN26Yj zR~O0gn7~upB`>|SjQ7$zvlzHO6GKM~+(0&59)p^qBq219Gxk=0{0*wT1){TLA=v>n zY(#d0IYdboqg?{Wp*w#U^%&Ie%X3~ilBGDlLp92%gq<)Dd@tIUp+1Cq9O~n!%Tb@f z>m%yFrG)x(SXC+Y=ddrwQh!3OiVV3b(dIJRk4Jq4HI3_4S1ynIUfgF2cVh_L9fiA_ z1@}<(`=!EtmBx{8P)U++<vqrd6I2a9qt875G1I=Kz>$5cQImbAl6UFjEbKc|9v3G) ze{l3M_Y7}w-=zU$Un*i8CW5~W{nVhIhk6p~4%D@%UzTkh*7_#-sj&NG;p=&>AMxeT zp-b<>wY$LAW#D^(U!Q?j_80gm8Tj{r{~!ae#=&7X2a-YM507WG+lhAjGTNzeaoC!g zWv>1-uQ3kECsbXp>S?m(hvoRVaUkjSAJ@-Lps%w&IM>fE0C&X)=la=o;BIC31@)Wh zXZNIj!fu#v<mEJXsU#bK{|b6NNqXe5<aE>}d5Cd&0{1Ht#**K{@gUC6Ks^KXw^2uc zn<H^4y=UV1^Em$$>LsXWp<W5x>O9QH=ns<rLZ6R`w+CW;AdmHRu8r|{9_#Awew!zx z*Nj3Ga{Widp?C9S9763a-ngUjy{Gs#W#QYZ_)vRGR=#bDZ+jNLJ&F&tw-|hTmA?BF z-~KFoM-(4wZ^_51kZgoq;g5a=XVdfVD8?Xj{=pxq2)+>bPU-z*a%+6&z?V5c;kO#! z#S!p*0=~@o3;)*mZj6BM4)`+XwVDUs@koZD_k*;ZdwT{G{Gse8D-QlAaLFNX@GF5U zkgH-oygAu~{>n$OB-SNf>#mkU&D0<2m*y&!{sG_`fRCV_j=CB3j8Vujq;ytXiwD={ zgPZ5U%^xM>JmoEmaJ&`ua@1|8yHK~I?nS@rB_GlhQIfN9{Jl}EyJzrqzG;-4pPPZ( zB5|oWL%8kg{Eks_p6>*1pM~$R;ya@7M}a#=^1<&Bkoal4-IPeM-Oe8-pH}hyI~no* zJh(3D?cI1I;v?dqsOMy~yM}f*Guo-RBJhZtqW*41ySr%jFr%G{9|8}5a9Hz|!B|4J zpPSJh2_`RaqpQ@At9T*WHw+`5mdo}=-c_sfy7rSJB0pK<Y27!(=f>0Nza(EcU#=f+ zJdH>`hyBjaY282+N#{9pOr72NuHl}y;M9EAa7!#WHQ&8<)Zz@*2N4%m%C=c?aVBxA zB`(0~|KSM?ix_vT#|{f!TCn7$7xNJ>lFwjX4CJ%b@&2{^oqQ(7ZL=<$XovMXh2Ns^ z+kNm@=TrDS3V+a!Cq1YSDq7q+hW(Bkw~iBA7Tg&R?yL{)f(Q4p5ALc5_X%aO_&g7G zx`Fyx)OS$NNBscxbEv=0XWR)uhrh2#E+G3}tC;`7(uKlq$ZM#*$WO`w(!MnTmi$$; zt3~}h>INC@kT+H&Ur^(OJc#slM?%=8F~B<GuZ4J6)M3h(_|pMk@^sz>ZuFEkb^jut zogn4=Zxd4TA<s(5w>U$-6-vHt$w%_I%p!jG1!UYF2uS_n0me55fJ*0I!k@MT<UD)d zZ7n78>L+j?DBM=Xw+(!|efSOxlkcG7I|RPtK740}$#+)qeF(mfi7!1)njTjb?i1i{ z_~7m+++E-v1}N^N^Dk`ld4W4Sq}_PA^a_Xlq<R?+Y4~ynewBe&aaY4N0N0p-Q}Gn* zU^}fV8h$qL^E2=&UV8Nx@oJGH{bI4hk_+MAOVD<uquEKrtyZ`-z{P!V8x`(d;NExi z_`E}xjV#4goP-_$gmY2&UbH=g*Kxeg;Pnw+m*oq%biDu6!iP9X#k(G^>R&s+ubWuH zIqa{mCcl@lj(lcfIpQf5gZGAsC7dSbO%uZrZ>bo3pPN|1(a|LGw^Y2o<;eBmo|An& zK%SSvf2HtwqqF0Y52o-Xqa}Zp4<31A3LjMX8FoDRpR1X+endv6*N>LbKxM(r_2B0D z;5t0GMLxLY9^8u2&;#p42mG-c$6rL<hk6m}4X9s2y=gS#TP2?yIkgV%8ZG1fZc&H% z0pN~~hOR$a*45vSD;=IVaSG?ox!E<1DtNKJQ1SXfaxsoy)NulYKLK{B;wj{>-uW!- z`H7O_nv&xt`npScJtoKdp`Fj=)%?}cH&^SG(XXrjm#SY}3FSovdR(f+u{w8l%N{w_ zEh>iI({-FglmBm+kXm=KPcY;N7szplh&n8;OUx;N{u%4;^V#@U>`49^^)t7GuB$oh z;i2RbHSd;Y#P220XQj@=u?|uZ`xpd#zFI%;>fzQ73zo`$Ft2|-gMR@0@96D0)<r5Q z{>}P%m)ET^*UD1-FK6&?1OINlJ;yppCB=V0KkxFowTMT*A$Ui*J0N}(yr=Lwmu}0k zu2M<yUQC~JxxBUDU7o@F2{>=ybtm1HV;!cF;(d@l=jC(X8~M)H1-a!r*mUrMLik@s z{^atFG~X#NL=5oZ8)?4N0KP`z8zSGC4cvSmoSW|~0&aOB=EG0_<b?%lK78LY|J*px zRY>zN%zM#peW4tm6_^k2;bwwQ5##;?3-1SlFT}Sh-d*6`@8LZ%4BnMKyeAd!hv5C# z!+X`A*K1!bPx`D-=2JJocSpCchI^oJxQ@yn`rvRAM&xI>F2Y%nHm(|9QIW)z6yf@= z1s5!m`QB88s|RkD53Wt&W&=0B2;PqV7vcSKyt<0Aj-<nm6(y_5PdW=_{5e~ctoMHY zXYIVU?(~|x9C;2E?>Zs!xjqw1IE`<>#Bk(6R1Chji6xxImoPCLc@h<aZ@q~noW{4o z#Bk(MR1Cg%Of2EVyurRVm4|ICl6l*fqU?Dd_Qxswc7@;LgP-rgA5{2bKKSQ6_|po1 z-j1hvBu6CUy22&+pL<>5vh-6c?o$u$x)1J_2Y1^Cci)41Py{<6FZ@l!FXUCpS5SYA z^HJ1JF-yLRx~!P-nquT-AD1>X(72`JuE@*WxL98-<Kisf+lo!xJaIn6=PTSI;FcGo zca^_&;U=h0p?=+UIN1rgx*^{)s8^%zLOmec8@P8AZll6&$%5Oia61%kuf##`3Z$c= zckB2Z0-nb4F!VVh^>*bH_Bo03bp88OvGmu|k~gLI8TmPz>JIyXLwR;qyPs9|ynz0% z_}Klr!rcPy-Y;SIuauo0DLdukCa$uNtG5`R(h@m7WvFR<YO>(!6|O<y8YM2k{_6zm zK45l<%!8j6b(k+GVSI5(+K)!E53uCoT;<P3{^MRhS|R0g$15vtrH(^fOkYoV1v2C1 zEp9%YmG4y@pB2}o<FtOe(Jx-!!d0G~m2b6<&x%{4<FtNXN56P^3s?DfR=!>xpB2|P zOx%EugM8_{J`VZR%axI<JU(l`37s!1Zv8NE8+4o|-#d^`y;Ab2{eZ*%rkb7)(Cls7 zzag)ulG;xUv47L}Z2L9j^%~z0`!$Wvwm(B&ukj7BKhx}E+m|8#*Z79mmuY;q{TTKM z8sCunu`KK4MisZVU`)4{nCs*o72ozM+#%qOd*a&=>m>9@Uq3vf`xMFV?o$Hn&ZzI; z{-Uw2e5CrviX-+p7tsF|i=6Jde_hFW3%Gk8IY$zQzp}`w_C1Dtd1GY!$9)eWU;Y@z zOUIacxbjsCe3(xKZswTW)`=E8pp;R#+CNcFkX&W4qr0!0tNLGv{+G%AleAxa#pLvM zA$Yshd?oyvVc=sPe0&)A)fTzkJZ+<rdkf^=?vZ=XP`p3gmfA<ZX5n|o<)Gp}2L98E ze+~3JKNLUg-Q&Z1N%39-?@bTyU4LG$pNV~^yPteGM(#Vm1RpEa{7l0Ym8$(|DfXul zC$Hc@UV2W$<qIm@RN!WoVsB7foSf?2KmKa5zMouKOwZM&_nS9L==mA<xj}8dx8TBF zM&Z~mQ8D&gZ6=m*8sBUa!?B;DV(>j}VhN}5%`q_?`z<O4-&_+*IE`<fiQ(9fQ8D=D zn^?k$dDh|C&n+mG`^&|p+4q+(dhjb0zS{@C$b;`w_zgaIT#rxfUpFcIRy&^jmUN(^ z-FMgpKcjugZur?A>5o?2L4`X6++iQw357ce+^JH?hkfJg;6I1sZ=k-2x)(L_^5k07 zp8$75p9ey|JHYkf{M}L+$G-sXo)7LTg?j|t*VOOu_KOayF50+}{2<FZ?2MJ`N7-2H zO~z)&)hpaA;M&Hf`=5u0dwq(-{^MBMw+a91&+yy%W?S0FQZf8?fr%xY;KlP*+I)E4 z#B%I=sf>sh_h&TTg%)1ylSj;p>kJP2s|xM8kB+f&zP&s)%Y6IUZztcR=g%+VsWWQ- z%m>NuQT>}u?!MTKvzmXsD#k6uyD)Cua(u10K7|_qF76rMA@Z!Oezj5g%NFo$_wlPe z3U?5=W1fD8^ee0<{TbtP+A==apO1KaGX3d{g||%RYQK~}owe{bjEpzH{>ud4>oOmX zmGSQ!?0a60gL{2KyDoD{`Q3=G%Y3gSIgR{qsaTI`)k)%+Cx?BzR32|CrFA-eytqsr zuPD=x_ZQ0b{k=kZZr)+r3hDZ?Xg5foe^Ds&gNudq{I<hBEu{RwJ#YBoW#!LTlz&}^ z{<kcCcu(Q(E8HXC^2^fkZ3zDlu;s<p>ocWgGOpwKOOc<Kl_9>Cnenw=;qZK>z%>BZ z=;?om{eySEE%K|`W%By}(`CZ%-9G_#zr@|=SjT@(Sx(pG47<-&`r!F2q0c<%(_zv3 zWrf4@TLQNnxGs<0L)bm5-o2T6Un%v~yYCy)dqC-f=g)*bap<$rqW2bs!}A9M_dakt zz5%`W>UtaFvQPDk=N&}9`_b<ai+t|B<fOod`G>%L?2&H>f7I5?tGZ0&i|&3;!+mDK zsePV?yKTX#{hgt&yMMc{^mqh4^2eF;&(*hdoU}{zID7|ZTzdWwu?}hS&BPa*G74Aw zL_<Ee-xk&HT=cupBHuD`KEz*ExL1LD-6P)+^F)&`VUbVmGqcL~uIl%F^t;0%-(Dr( zK7~6B+=(3JJ8O|o?N>#fm+;ABFR1>np#ST#|0M0BZ<(ClAridnEWG!WUiTI6Bk<;z z3%?M&rR824<GtWrZ{e*jCqE1E8c~ONeL3#W5-+}2K=QVgGjUyHo}J%eGsnnv(*3^N z{4sK$?0)`Gthed!(Upvq>#6)+o#qc6W*;2;J}O3Dv&h5}PUBl_VmS7NR1Cf)CYEp- z-!c=!v2Ube@V#te38(QbH!&RhN-7553KL5>F|N2j=&+*kTK>MWT;}hq%d_O~$cu14 z(P7`x+YP98@A$NPmD)Yh+ih0uw%Oa!d?s0`h&<2z{>g6m7ww1l!0+~!1C<4LNZ}3x zcf<#GQsGVkcbfbd`{B31e;&s-puU9qZPeFLzk~WFaCgfgTg_9+e@V}|l~z8E>#xGD zi)p`~C*$x#rPr7CaR{)<_I6+Sw=?40BQ+m!zgMh_Uqe2pLf9o=noruVtU}IPN8LXx zufX#>6_9s$`*5RQH~u#W-Y{<j-)u|2^HsmNt{~)F0Nmo?_e<B+<o^3+MH1Hm9JaD! z+4C<fb=dz<pVx_6n<p#87E@_2D~|ms74JM*-x<gAaVC~<0ajOS9oJVX<ow7wu20$9 zz3Si2uy2>L8?L_yyLH2EeHQy}P&oLjz`X<9=Hc7d=+_<BZE9S1gYST)-=nHu%m>l$ zG2l)Qzh8&_uL*KIldAr)su5>!{mEfhCTQ{Le1(ipmy{hdzE@Jf{t3G-8n^#cgs)wh z{(nu$8&vZX-yh|lO1-T6iO*F(Biv60*l7EH>Xzys-&Ym(x($2Xx7hWO!r}XG0{1m= zPGx$Y4w1hG*wSL({X$t~PWz+)d)=S6JU3p4{o&!{zf$q@UAjK>ze_NeF^;px`07!a zTYmwz*q^s5H(n9{e@OEGBfb$&@=qA+D}Qxv{RG%k{=7B0@e29hBe{>4`O00J8@~}} z>MF^<L-gFb@bh3LzEfIh&fAE>;kkB!YXNSqXFd$Ef5^JeURa4yN|&s-j$z^!W#Tff zSG)VU#X_GjUjaS3E&96gw@=|V0Jq7b?-2Vr!_Hfk{kAE--QYW5>G!C@9aFf|z@7K> zo2#8K4Plqds^2TB-|Oi2mPNjM3U^=O9s!p>J{=c_kT1aguHN-)YhGD8Ugnkbz2>s< z!Vj(MLe2P`;wO!Z%O|dLx!?D$9WTFMSvOudqcMKd$IE##L)2j&8IRvPkn(By-SY~! zP~nyV_sU4@b9S1qeb#vF^SY0H65p_W)+_sL$YLLNzHCx@Z-w5wEcV&2>~lcjjskaT z`1aBA%X3nebo9W!K<(25ta7@q9WQ$9c*)0(*K)I?Cg-OXIn};D!2YkloS%E-yyYY3 zy>CFy`xZId<i1JM=aB`ct}{67@v-u{y8HV(`^5G6^zZO|Q6{e=xWCKu*f@!opS6DS zaicz?aO{t%82bmu#1c;9D=;w}`(`QzUy+F=oW@sTVmS8GR1CgS6H7R;-oH-u#40V% zE~}Dxc1>0G>i}<1yTy9Ddev^0PdnUCMt>8v{@PT#dG>Y`53TXKqe{l>MOD~ORsod- zw?g4o0{4m!ZjHjd4qUGfZoR^70PdYCtUtJ3@FUFs%{aaZ^)}SMg?cyY&8QCmceG0A zK==C`wqjQ5e)0h2TNUHoc;T)O+I_84$}S_`hlKrkPv^#KtWRgE<obl?%SC>67W!V0 z_S4p<D+-6_3<T~faG#O=hIjoTz`kGQYp2_}>Ep1I74mx^*mvUkjhGi=obXwU&(w*& z{ocu~-vFEI&wDpFUSoW|P<F?4EMfP1u=`h*@yVMY#}U`L1TKF9p2wRog7H~X<7=nt z2|49WTHLD<TYL&%slstxfQk|KYE3NR0_+z>-$tGCyE;3Luv7}z-xcMd4zN7`{ckWg z{Q|7UpLc3*yanv#V%QGyuT}MT#>mf0Rb4Yyer{CtUzE}30Q+bE{a<}<@&wqJalZc1 zkQ=X<uRm7vc8jY2HTgrv{>#l1rwcz1^DzAT=?U3!3lwfKa4S6XV5Ivmx8H8X*9X20 zmVP&>`L|i&wgI=>)9;Y`n^jM^_O-5;2PUNVHwR_^*7fFCZsQPOC;a<A?&<%8Pyc6g z>tFc6`{cj-{r7nvdgM6gBge(u<Or}+{{3I_^ncl>|4(!4U)bTdJ<lCppCI$OTZ+%P zZhE;M(_XH7A7td2_srPH)jl=Ae%F7$_?1V`M?QMySLd`Y1lS?}{+;TyzZX=Cd2aRh z^4$6tcK$aWJ6BdqJJ%^b!_I$&r;L=Hw`SORIvy0tD14~>Zn#>m(@$43zCh}y<y(uz z`4C^Ca4UgZU7cR{hKwhXCw=3|fXBXZANy|1&At@B-SN_{m%Ljoua~?hZ6?OycRb_p zff|RM*~Vc4e!)(z4_5wtihsX{f18K@h~ht)jh}wK(ue;;#eYunXVvqf!d-IZNLI@I zD)Lg1pH3d1`iwl)VfWIXaUN@V`uii-B!}0<IQDr`&h+p5iu+-onpnbVeAi73$NtaC z_nC<`_->dO-j;>$rimp!;RkO~-Ky^|KUd@Rg?+q4yA9N?s7BkDeyQ5AiP`tTxG#+R z;d;BGi82mU`n1D+Wc&`P-mXryn{IDMenPTR(e8(bC#K_EWTKcgR@@v9Zmth*p$FID zgL~P7TRstS1^eKCi~VjFj&DcZi~4s_uSdND^?MWX+nN)Rk5-MBd1tez@k>_z`?{UV z9wXlWPW9*Al^bsXTUjOLpEgm}&x#uRc>n#+?%etdu&_Vxp4@l~*c&w@zr#M7AfLZ+ z_rFs&(sS7bETHxclU4ml><<c9**I!P{-~`tZl1e$qFk2_VZ4t^|Iu(~#Q6~UhrC_@ z+y(NV;avyF+V2&`cO87UEdAb7{oYr&N5JLR{PO*l)<`|7Yw+A%jcJ#e;(UnDQn)tY z<_*8!0PCOXyAF5Mr04%4*}uE4Y1fgK*W{FEiTL<?p7n1<jf`*IiqFV%RzE@gi*`Fb z?fO)^4cXfLWxCx@Jnc5Ac3ZQx`+2?eWBBhbPrF^J-TrLteo;^RdbCZilSgWBL@ylq zGZpXk1@XHcM@_86k%!76@|I&Y@_FXtH8O8GA=?T2{Juxtvr66z+2q|hEv4sfPrECs z-Suqk{&bq5=Pgrqj{H^1pUww_p0`b`#AVU*j?(k4Y-h~ZhiX22spbQlgx}$sWX_w) zNi?rQyh_wz9t3X2q+!q30Gr~UzeXmd=S_?3-yJt?-prkp`@H!B&p6GSB<D?s;xpz= z>yxSR-IL*$FHe#V<@w81{;T=#s}>ycVL4tI<Jx6n2`BvWry2csn^>;$W3B%_3l90R zwf_MVo9chB=s*2C3vrD7Mjg*p{w(DE!wh-1=vd<AsXTg2RVr^5dG!3M)cPm#=+cSu zK9S6`HT||*c#&UH@x}*{NAEDPgwyzTni!6}lZwH&%fu2+<J)awIPy^{2HzeNOE`^h zuZiKvQ>hqy`%En1#Q6NkGY|Hwd2qx&4+I|fQBvQVJgM*>`rv=dga26JulnFOd+?tr z{B1j);upz8Ma#SId*a6f89%JJuRS>YhZR}*3To5wsHiqOuF`|6s)e19ckhFL2XXw5 zP|rZUA9V!v&rl=Z;d5${&pB@1s_H6{{}r%iQ5$jE&F7x4mHEw*T0AQ$<<j!G)#5z9 zpQrMwHNeG5uHof#$eZij{Kgu8H`eA9f3xcIuF~gy$hpI!&t9bu>?iWmeZU<ai9Wv< zboH_N!wJv$os|7s_5Sc1()*m!=e*MA67;!d(fg*teXej{0Qcoc^bY#xscdrEzw;&w z|F-H~GC8O57IEW%XI__1mg{Y`;xpFU_*BF?J>E^7Ow(K|9QiI4Z@d$EQN4*JoEASD zObkaJOvT`vZej_i@y#$X9QiR7gKwsZC7i}L%fxWx%~TA&MiWaohn=gJ>!tjEs2uhy zCzd|*eHr(Ep3z^}<lrhF*5ry<aLA9T7;?3kSi)(1Z6<~zZ>D1K%{H-wbJ+1|GH-D8 zM1F8Eqo1eEwp``G0rn3KzHwoWXMW7}nI8*tn;!vo+rR$~PydU2`d^+~|6+drv1fj+ zQ1i1p+x(m=@?mWp`z-cFUQNXq#{m;7akMhXqV3P(ljZ&_A=^1DFkOCMSB^KevbK9y zwR_KP_kX6#?*|Xj?gQ0st88aHf4Xb3+&Avl^~fs69>urUm1AZ)j}>`sa-yF1POi~E zFRMu+^%Ua-yk_@9x(sAJjy#TvVfVu(mT(&15fj6a=TR~Ej+$7)X?({_3`ZVF#o#+` zVhN}5oiH&Rc_I~q@1%((oUkLVho<t_Q_A1Z+5KJMaose9zo_t^_~3DUHHE*S@OOOh zxDK1bKT!Cu?RfGtl8K6z_d0dyb-bVss4Td053bS&SLeY6>mVQU*+cLz<SWTPL5+MQ zc^LI9T<602&T)U7&yajt9_r?+kvf^T&8frx0cOE15$8knT$af1mI3z)^*h{r_55Tv zj=S+dyI!!SE~oqj*Tw7LgTkIxy<S&(B_Qv+7QNnAdLjQ8dVK)g&XMRfFO|1i_1c%4 zUc#?`=JC7zbuuqIqWFxwY!|+vL-+B2^tfwhs~?{9_{}M453Ahga+5p2{@%a;^Pc`c z^6CF_Zv6|p!S7S^^@_6F^=x)~!pvuH)zS3T3NMxM%7|mPO)NEZ*s>?Q>!8C9J|Vxq z>*hf}sh8`9`}s({H%|(HBl)Mq^W$mqI*W_@=`?TNC~!wq-25|--glJV53=d~NdwIr zVXvc}c3-P@&J;Nx4L|$uqMa7^%chXZTH(l3s2KJtH?f4n{lF)6dqDqxm$AN7nr(S1 z?*RT-2ENLIPvslH|N9JlwFR&842RA5){D<9`JS-Xab>qZ7wyy6+iIpTUaxcTR9=y& z)%E+R);rz~tDNi|SBG^^_Kv$|?*_dOvLDAfNyV`DbQ4QBjc<mD;aEqh7<@BLEa5c1 zStf>Kouy*%HJVt$X?$T5!?6xiG58`TmT+R+aJ?rL7h0yscskea=K}vn9{fUuU*?0~ z@4>&K@N4XNv0mf;5Xbk6lDOZ)@%^DB?%!~HpNH<paC~2f$EQHQEcXjHPLb=?7WmwD z3vQ1%AEM`}#k#f^xI<G$uwD=Nuh++wUL(A}T)_TzGObft^*W*SItzI(SoFH0^ul#J zq1RR5J{yT%|8t7FK3dnk+qvrXTo691`|Tam7dh5(Du&<QHL-*fet5{^S6?W<`qJ)K z1#I)<B!_5+JTT?&EGYfGD3~R#Ulr}Nc~==E5wyawo>DR7uL_FenST(+rh4O^#$Ro= z;aIn*82mLRmT($ht%>1S&!`xDbtaZ@4y$<58<)lUdV=yQtQUWw>XXEmC4UbF(|P{X zpltV-#CvkGzW(Re>G{FKI&Zvp*!(Hp^+3~erYSo|JfmXhIm^TnPUCAdF&y!Zioq8) zv4qq3A|{3-9#S#*T1+hAM0~{anDqNMN!;({_#R(!H)?!OFNx;|IevGBw*|qM5g+FT zDK3QQdnF=1%n#!KwXoopD;&OeB5*5!>kf_}K2GtEk9}&MjW|9IiiOS4Ye311=YoX1 zamc&TqSqFM!*fFd_daktMxxh#|M<8!SG^tx2XNTtpx5s;zu9N{0!O@~V))H|6H7Ra z?|_NnOdd1%4w_idVcu3w^~M8-{cVFjPyeaGJ5NR2J>`kJhg94>ZjZb8fBvTE{I{lf z<E6tQL2uj;^8$H3$8!Kl<n45yKl#U~@w{sC4^ZQKn*0pKogdcvu5%ydHjV*y#h>>= zZoCCd-b4s6=I?(W=f)pkFZuIc%#F8z{apF=y2o|D_~>!3Uub@L$@Dc2KcQmy<z;zX zob>z=et_q9Iew=qiRWzTccqg50reHEKkz?}y$F>8wy73<qyEQQ%DW2Ks44REk}34r zVIAMfyzWXqOhvnXb=|YBeHKJJtcU0?m0#ReetuusF=O92r2c46#nAteJT6Xp{y0qT zhf~*|&J?rLIPVOuS`%B_SrF?@MCt$O4Gga8ABc@!wl1FNjSUv{^bM>_L|6Cp#)|vb zCEWLccz=Ilu!!zY^$+$WVuR&_J!=PgW6{o4iJtyGK~(wNhE6)x)E-SpvRP{f#u*0- zWKYqM`zGwZX)5fC^}M#Gt3N(CrZdsMwr5o|wm#OE7%c6Jy%i-1qKVF~-kA897G-Se zZL~k$9g9~iec{E$9nVEOURb&;8ftCBtGzJ34#LuZds_HbfBcPTU+3D`n7)4c|8ApQ zvDN+YSW$mp%zc}9t6#kxr>ogNFgR{-AhxQfvp2eWU7yf>u=34yoqdU()jhH9Xl%nk zTo|MHwch?NLiKjOR`e{)7Hx_|o0{d@NPD!oQNC@7L|d8*QyR#Fq4sFFu{0&#nx4My z!D1<&d@ltQ?*kog_w>CsPS-gaYSWH1g`-VP+L1_WG}2a{sY|rgJY+$&kN>p{m0QEn z)+Y04B-+|+9BpffwzURUclHj(#x0BW_Cow<Vhu(ozAmw5+^WvrUKlcEk-<WEXS|cV zOjDpG9BpZG;<3SXy@{f}&h<U72~35dQmD~#EMz$rHjjmyi&BFdHx+4%wzU@w#@<{P z>su8oSo&r(+!PH*=uJ~ww5grmG&e<?Bcqqb64B;p%ecW<Z%j^@fzCuC7Vook*<v}? zY95PN)QW_h=a$3kmlohbA>oGOVjHL%IHG%G^n#a`Jon7A&%@{Xx_ij1PT#t<U6?k8 z<sue~G&h^LW{b$pt;LBDb=pHSHZaiJ+0$3t*(-!e^sJ8+K7;TR4n@P^vVk~eN>@*B zPvUJMvpCh%5^ZV~@0vr==J05O11;*NXk^^8uJlkX)D#Ux3S;mmsk8T7xGfrP*U%9( zkC;ldSd?h7*uACA(zcxpE;Mxp``5)+#k3xq+oH|746QBE)>aME-WY8URd^*2g~HKL zs7XH-ZjOe+ErpmaGUn=MVYE<_MdntEue4gGK$`{E78*@+u`?bkPJ~kfTAXM~y)S?# z4JHr*3*_o^^ScGVF3NxYt}b2#p*Yg6A8T%nhML>-W3W!B)uKk5#UI<6%;9LW3~yU= znOI9iV8K`o!td+rm%Q}SGH1zi3!i&-S&6J5O*GWverRfpHig^|k>+T`;w0^s-r6m* zq}|rG)g^CfjJBkD!kX3E?w)B6N86i9UFkv*I7M@%F;_#OHhtYgC<=um7GStt2Vz|c zHQ5-O8!fGy+f947Tc$*NyQOiXjj=IgL56I|kQLctYu;)(7`7g4vmhfO-9!;MWTaI; z)(k&E;M3OK7T^#wv}3I>Z>!C`jbTgAjZL<Lwqb0va<&)a5g8182(PewkF`J4WTTDP zY}{xwXQRz>jcsMfo7M*L=Z)aHfwwy2-R0>6-TiO%(IJaEO*WG^Daj)+SEN}=j<qw? z9Fgy_+=p74O6Udy-T>61K*&5otxdA$^|5%O2MI(FIYn&j+Wz%OErJMLlv4E8KGWM9 nOst8=VnGD6U_xddL6LPlUL=n7QYvMUxYg!(Ep7k*jsO1xV1Q;J literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.txt new file mode 100644 index 0000000..2f53500 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.txt @@ -0,0 +1,18 @@ +generating traces for scope 1 +completed neighbors: 6 traces (0 MARKed) 18 events + average 3 ev/trace min 3 max 3 + +completed Turtle_1: 6 traces (0 MARKed) 30 events + average 5 ev/trace min 5 max 5 + +completed Turtle_2: 6 traces (0 MARKed) 30 events + average 5 ev/trace min 5 max 5 + +completed Turtle_3: 6 traces (0 MARKed) 30 events + average 5 ev/trace min 5 max 5 + +completed Turtles: 13 traces (0 MARKed) 234 events + average 18 ev/trace min 18 max 18 + +Elapsed time 0.10552 sec, Speed: 3241.09 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.cpp new file mode 100644 index 0000000..d8e5814 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.cpp @@ -0,0 +1,1295 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Web_browser trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals + pair_list causes_UDR_set; + pair_list is_response_to_UDR_set; +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + causes_UDR_set.clear(); + is_response_to_UDR_set.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!causes_UDR_set.empty()) + UDRs.insert(pair<string, pair_list>("causes",causes_UDR_set)); + if(!is_response_to_UDR_set.empty()) + UDRs.insert(pair<string, pair_list>("is_response_to",is_response_to_UDR_set)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + + if(p1->first == "causes"){ + for(p = (p1->second).begin(); p != (p1->second).end(); p++) + causes_UDR_set.insert(pair<int, int>(p->first + base, p->second + base));} + else + if(p1->first == "is_response_to"){ + for(p = (p1->second).begin(); p != (p1->second).end(); p++) + is_response_to_UDR_set.insert(pair<int, int>(p->first + base, p->second + base));} + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from causes_UDR_set + temp_list.clear(); + for(p = causes_UDR_set.begin(); p != causes_UDR_set.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + causes_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from is_response_to_UDR_set + temp_list.clear(); + for(p = is_response_to_UDR_set.begin(); p != is_response_to_UDR_set.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + is_response_to_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // merging from causes_UDR_set + // doing all adjustments to both a and b + temp_list.clear(); + for(p = causes_UDR_set.begin(); p != causes_UDR_set.end(); p++) { + if(p->second == b) + temp_list.insert(pair<int, int>(p->first, a)); + if(p->first == b) + temp_list.insert(pair<int, int>(a, p->second)); + if(p->second == a) + temp_list.insert(pair<int, int>(p->first, b)); + if(p->first == a) + temp_list.insert(pair<int, int>(b, p->second)); + }; + causes_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + // merging from is_response_to_UDR_set + // doing all adjustments to both a and b + temp_list.clear(); + for(p = is_response_to_UDR_set.begin(); p != is_response_to_UDR_set.end(); p++) { + if(p->second == b) + temp_list.insert(pair<int, int>(p->first, a)); + if(p->first == b) + temp_list.insert(pair<int, int>(a, p->second)); + if(p->second == a) + temp_list.insert(pair<int, int>(p->first, b)); + if(p->first == a) + temp_list.insert(pair<int, int>(b, p->second)); + }; + is_response_to_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_Request + , Event_Redirect + , Event_Send_Response + , Event_Process_Response + // composite events + , Event_Response + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_13_14 + , Event_SIMPLE_LIST_34_35 + , Event_SIMPLE_LIST_53_54 + , Event_SIMPLE_LIST_73_74 + , Event_SIMPLE_LIST_137_138 + // ADD operations + // ROOT events + , Event_Client + , Event_Good_Server + , Event_Bad_Server + // main schema event + , Event_Web_browser }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "Request" + , "Redirect" + , "Send_Response" + , "Process_Response" + , "Response" + , "SIMPLE_LIST_13_14" + , "SIMPLE_LIST_34_35" + , "SIMPLE_LIST_53_54" + , "SIMPLE_LIST_73_74" + , "SIMPLE_LIST_137_138" + , "Client" + , "Good_Server" + , "Bad_Server" + , "Web_browser" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Event_comparison_expr_77_78 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 FROM temp2 + return (bool)( (current_host ->in_matrix)[temp1 * len + temp2]); + } + +//---- 2 ---- +bool Event_comparison_expr_79_80 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 FROM temp2 + return (bool)( (current_host ->in_matrix)[temp1 * len + temp2]); + } + +//---- 3 ---- +bool Event_comparison_expr_87_88 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 FROM temp2 + return (bool)( (current_host ->in_matrix)[temp1 * len + temp2]); + } + +//---- 4 ---- +bool Event_comparison_expr_89_90 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 FROM temp2 + return (bool)( (current_host ->in_matrix)[temp1 * len + temp2]); + } + +//---- 5 ---- +bool Event_comparison_expr_123_124 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 BEFORE temp2 + return (bool)( (current_host ->follows_matrix)[temp2 * len + temp1]); + } + +//---- 6 ---- +int special_function_23(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Redirect){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 7 ---- +int special_function_28(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Request){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 8 ---- +int special_function_29(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Process_Response){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 9 ---- +int special_function_42(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Redirect){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 10 ---- +int special_function_47(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Request){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 11 ---- +int special_function_48(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Process_Response){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 12 ---- +int special_function_61(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Response){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 13 ---- +int special_function_62(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Redirect){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 14 ---- +int special_function_67(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Request){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 15 ---- +int special_function_68(Coordinate * host, int pivot){ +// #event counting performed with respect to the pivot event + vector<int> selected_list ; // list of selected events + + host->create_matrices(); + int len = host->len; + // create list of selected events + for(int i = 0; i < len; i++){ + if(host-> in_matrix [ i * len + pivot ]){ + if( Stack[i]->name == Event_Process_Response){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = selected_list.begin(); + s != selected_list.end(); s++){ + if((found = host->eq_matrix[i * len + *s])) break; + }; // end of search for shared events + if(!found) selected_list.push_back(i); + }; // end if for selection + }; // end if for matrix + }; // end for + + return selected_list.size(); +} + +//---- 16 ---- +bool Quantified_expr_81_82(Coordinate * current_host, int a_variable, int b_variable, int c_variable +){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int s_variable; + int pivot_s_variable = 0; + + // loop 1 for s_variable + for( s_variable = 0; s_variable < len; s_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ s_variable * len + pivot_s_variable +]) && + ( Stack[ s_variable ]->type == ROOT_node ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ! ( Event_comparison_expr_77_78 (current_host, a_variable , +s_variable ) && Event_comparison_expr_79_80 (current_host, b_variable , +s_variable ) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 17 ---- +bool Quantified_expr_91_92(Coordinate * current_host, int a_variable, int b_variable, int c_variable +){ + //===================================== + // quantifier EXISTS with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int s_variable; + int pivot_s_variable = 0; + + // loop 1 for s_variable + for( s_variable = 0; s_variable < len; s_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ s_variable * len + pivot_s_variable +]) && + ( Stack[ s_variable ]->type == ROOT_node ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for EXISTS + if( ( Event_comparison_expr_87_88 (current_host, a_variable , s_variable + ) && Event_comparison_expr_89_90 (current_host, c_variable , s_variable ) )) + {result = true; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 18 ---- +bool Quantified_expr_117_118(Coordinate * current_host){ + //===================================== + // quantifier EXISTS with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int r1_variable; + int pivot_r1_variable = Root_table[Event_Client]; + int r2_variable; + int pivot_r2_variable = Root_table[Event_Bad_Server]; + + // loop 1 for r1_variable + for( r1_variable = 0; r1_variable < len; r1_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ r1_variable * len + pivot_r1_variable +]) && + ( + (Stack[r1_variable]-> name == Event_Request) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for r2_variable + for( r2_variable = 0; r2_variable < len; r2_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ r2_variable * len + pivot_r2_variable +]) && + ( + (Stack[r2_variable]-> name == Event_Response) ) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( + find_pair_in_table( r1_variable , r2_variable , causes_UDR_set)) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 19 ---- +bool Quantified_expr_125_126(Coordinate * current_host){ + //===================================== + // quantifier EXISTS with 2 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int r1_variable; + int pivot_r1_variable = Root_table[Event_Client]; + int r2_variable; + int pivot_r2_variable = 0; + + // loop 1 for r1_variable + for( r1_variable = 0; r1_variable < len; r1_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ r1_variable * len + pivot_r1_variable +]) && + ( + (Stack[r1_variable]-> name == Event_Process_Response) ) + ) // end of if(selection condition) + { // branch for 1 + + // loop 2 for r2_variable + for( r2_variable = 0; r2_variable < len; r2_variable ++){ + // selection condition for 2 FROM + if( (current_host-> in_matrix [ r2_variable * len + pivot_r2_variable +]) && + ( + (Stack[r2_variable]-> name == Event_Redirect) ) + ) // end of if(selection condition) + { // branch for 2 + + // evaluate the body bool_expr for EXISTS + if( Event_comparison_expr_123_124 (current_host, r2_variable , +r1_variable ) ) + {result = true; goto end_of_story;}; + }; // end of branch for 2 + }; // end for loop 2 + + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 20 ---- +class SIMPLE_LIST_13_14_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_13_14_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int r_variable; // thread variable + vector<int> r_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for r_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r_variable = i; + if( r_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Request)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r_variable_list.begin(); s != r_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r_variable_list.size(); + if(thread_length != r_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + r_variable= r_variable_list[i]; + // ADD operation + causes_UDR_set.insert(pair<int, int>(0,r_variable)); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_13_14_ob class + +//---- 21 ---- +class SIMPLE_LIST_34_35_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_34_35_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( special_function_23(current_host, Root_table[Event_Client])== 0 )){} + else{ + throw failed; // REJECT + }// end IF + if( ( special_function_28(current_host, Root_table[Event_Client])== special_function_29(current_host, Root_table[Event_Client])) +){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_34_35_ob class + +//---- 22 ---- +class SIMPLE_LIST_53_54_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_53_54_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( special_function_42(current_host, Root_table[Event_Good_Server])== 0 ) +){} + else{ + throw failed; // REJECT + }// end IF + if( ( special_function_47(current_host, Root_table[Event_Good_Server])== special_function_48(current_host, Root_table[Event_Good_Server])) +){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_53_54_ob class + +//---- 23 ---- +class SIMPLE_LIST_73_74_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_73_74_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + if( ( special_function_61(current_host, Root_table[Event_Bad_Server])== special_function_62(current_host, Root_table[Event_Bad_Server])) +){} + else{ + throw failed; // REJECT + }// end IF + if( ( special_function_67(current_host, Root_table[Event_Bad_Server])== special_function_68(current_host, Root_table[Event_Bad_Server])) +){} + else{ + throw failed; // REJECT + }// end IF + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_73_74_ob class + +//---- 24 ---- +class SIMPLE_LIST_137_138_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_137_138_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int c_variable; // thread variable + vector<int> c_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Request)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Response)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // preparing thread for c_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + c_variable = i; + if( c_variable_list.size() == thread_length){ + a_variable = 0; + b_variable = 0; } + else{ + a_variable = a_variable_list[c_variable_list.size()]; + b_variable = b_variable_list[c_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Process_Response)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = c_variable_list.begin(); s != c_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) c_variable_list.push_back(i); + } + } }; + // no processing needed for the default source c_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = c_variable_list.size(); + if(thread_length != c_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + b_variable= b_variable_list[i]; + c_variable= c_variable_list[i]; + if( Quantified_expr_81_82(current_host, a_variable, b_variable, c_variable) +){} + else{ + throw failed; // REJECT + }// end IF + if( Quantified_expr_91_92(current_host, a_variable, b_variable, c_variable) +){} + else{ + throw failed; // REJECT + }// end IF + // ADD operation + Follows.insert(pair<int, int>(b_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + // ADD operation + causes_UDR_set.insert(pair<int, int>(a_variable,b_variable)); + // ADD operation + is_response_to_UDR_set.insert(pair<int, int>(b_variable,a_variable)); + { // COORDINATE operation + int thread_length = -1; + int d_variable; // thread variable + vector<int> d_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for d_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + d_variable = i; + if( d_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + b_variable ]){ + if( ( (Stack[i]->name == Event_Send_Response)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = d_variable_list.begin(); s != d_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) d_variable_list.push_back(i); + } + } }; + // no processing needed for the default source d_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = d_variable_list.size(); + if(thread_length != d_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + d_variable= d_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(c_variable,d_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + // ADD operation + causes_UDR_set.insert(pair<int, int>(d_variable,c_variable)); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + if( ! Quantified_expr_117_118(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( Quantified_expr_125_126(current_host) ){ + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Response to Client may be affected by Bad Server"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + Mark = 'M'; // MARK + }// end THEN + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_137_138_ob class + +//---- 25 ---- +class SetIt_1_2 : public OR_node_producer_container { +public: // constructor + SetIt_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_Request); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class SetIt_1_2 + +//---- 26 ---- +class Opt_3_4 : public OR_node_producer_container { +public: // constructor + Opt_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_Redirect); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_3_4 + +//---- 27 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new SetIt_1_2 ; + element[ 1 ]= new Opt_3_4 ; + element[ 2 ]= new Atomic_producer(Event_Send_Response); + } +};// end class Sq_5_6 + +//---- 28 ---- +class Alt_17_18 : public OR_node_producer_container { +public: // constructor + Alt_17_18 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Request); + element[ 1 ]= new Atomic_producer(Event_Process_Response); + element[ 2 ]= new Composite_secondary_producer(Event_Response); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Alt_17_18 + +//---- 29 ---- +class Sq_21_22 : public AND_node_producer_container { +public: // constructor + Sq_21_22 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_Request); + element[ 1 ]= new Alt_17_18 ; + } +};// end class Sq_21_22 + +//---- 30 ---- +class Alt_38_39 : public OR_node_producer_container { +public: // constructor + Alt_38_39 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Request); + element[ 1 ]= new Atomic_producer(Event_Process_Response); + element[ 2 ]= new Composite_secondary_producer(Event_Response); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Alt_38_39 + +//---- 31 ---- +class Ct_139_140 : public AND_node_producer_container { +public: // constructor + Ct_139_140 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_38_39 ; + element[ 1 ]= new Alt_38_39 ; + } +};// end class Ct_139_140 + +//---- 32 ---- +class Itr_40_41 : public OR_node_producer_container { +public: // constructor + Itr_40_41 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_38_39 ; + element[ 2 ]= new Ct_139_140 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itr_40_41 + +//---- 33 ---- +class Alt_57_58 : public OR_node_producer_container { +public: // constructor + Alt_57_58 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_Request); + element[ 1 ]= new Atomic_producer(Event_Process_Response); + element[ 2 ]= new Composite_secondary_producer(Event_Response); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Alt_57_58 + +//---- 34 ---- +class Ct_141_142 : public AND_node_producer_container { +public: // constructor + Ct_141_142 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Alt_57_58 ; + element[ 1 ]= new Alt_57_58 ; + } +};// end class Ct_141_142 + +//---- 35 ---- +class Itr_59_60 : public OR_node_producer_container { +public: // constructor + Itr_59_60 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Alt_57_58 ; + element[ 2 ]= new Ct_141_142 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itr_59_60 + +//---- 36 ---- +class Comp_15_16 : public Composite_producer { +public: // constructor + Comp_15_16 (): Composite_producer(Event_Response){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_5_6 ; + element[ 1 ]= new SIMPLE_LIST_13_14_ob(Event_SIMPLE_LIST_13_14); + } +};// end class Comp_15_16 + +//---- 37 ---- +class Comp_36_37 : public Composite_producer { +public: // constructor + Comp_36_37 (): Composite_producer(Event_Client){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_21_22 ; + element[ 1 ]= new SIMPLE_LIST_34_35_ob(Event_SIMPLE_LIST_34_35); + } +};// end class Comp_36_37 + +//---- 38 ---- +class Comp_55_56 : public Composite_producer { +public: // constructor + Comp_55_56 (): Composite_producer(Event_Good_Server){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_40_41 ; + element[ 1 ]= new SIMPLE_LIST_53_54_ob(Event_SIMPLE_LIST_53_54); + } +};// end class Comp_55_56 + +//---- 39 ---- +class Comp_75_76 : public Composite_producer { +public: // constructor + Comp_75_76 (): Composite_producer(Event_Bad_Server){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Itr_59_60 ; + element[ 1 ]= new SIMPLE_LIST_73_74_ob(Event_SIMPLE_LIST_73_74); + } +};// end class Comp_75_76 + +//---- 40 ---- +class SCHEMA_Web_browser: public Composite_producer { +public: // constructor + SCHEMA_Web_browser(): Composite_producer(Event_Web_browser){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 4 ]; + element[0]= new Composite_secondary_producer(Event_Client); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Good_Server); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new Composite_secondary_producer(Event_Bad_Server); + // for Root_table update in Composite_secondary_producer::traverse() + element[2] -> type = ROOT_node; + element[3]= new SIMPLE_LIST_137_138_ob(Event_SIMPLE_LIST_137_138); + } +};// end class SCHEMA_Web_browser + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example40_web_browsers.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_15_16 temp_41; temp_41.harvest(); + // harvesting traces for ROOT events + Comp_36_37 temp_42; temp_42.harvest(); + Comp_55_56 temp_43; temp_43.harvest(); + Comp_75_76 temp_44; temp_44.harvest(); + // harvesting traces for main schema + SCHEMA_Web_browser temp_45; temp_45.harvest(); + temp_45.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Web_browser"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.mp new file mode 100644 index 0000000..5c6181c --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.mp @@ -0,0 +1,107 @@ +/* Example 40. MP Web browsers formal security model. + +based on the papers by: + +Daniel Jackson +Alloy: A Language and Tool for Exploring Software Designs +Communications of the ACM, September 2019, Vol. 62 No. 9, Pages 66-76 + +and + +Akhawe, D., Barth, A., Lam, P.E., Mitchell, J. and Song, D. +Towards a formal foundation of Web security. +In Proceedings of the 23rd IEEE Computer Security Foundations Symp. +Edinburgh, 2010, 290–304. + +In particular, we've found very inspiring the sentences from the +Akhave et al.: + +"We believe that examining the set of possible events +accurately captures the way that web security mechanisms +are designed" (page 292) + +and + +"The browser, server, and network behavior +form the “backbone†of the model" (page 292) + +This has motivated to design the MP behavior model of the web activities +in order to model the vulnerabilities explained in the papers above. + + run for scope 1: 3 traces, no counterexamples for Property1, in less than 0.001 sec. + run for scope 2: 7 traces, 1 counterexample for Property1, in 0.13 sec. + run for scope 3: 52 traces, 16 counterexamples for Property1, in 15 sec. + + This example borrowed from Daniel Jackson's paper demonstrates + how MP can check whether Client's web query may + be indirectly affected by Bad Server's Redirect intervention. + +==============================================================================*/ +SCHEMA Web_browser + +/* Response may embed some Request events, + Only Responses from Bad_Server contain Redirect */ +Response: {* Request *} [ Redirect ] Send_Response +BUILD{ + COORDINATE $r: Request + DO + ADD THIS causes $r; + OD; +}; + +/* Client starts interactions */ +ROOT Client: Request (+ (Request | Process_Response | Response ) +) +BUILD{ + ENSURE #Redirect == 0; + + ENSURE #Request == #Process_Response; }; + + +ROOT Good_Server: (*<0 .. $$scope + 1> (Request | Process_Response | Response ) *) +BUILD{ + ENSURE #Redirect == 0; + + ENSURE #Request == #Process_Response; }; + + +ROOT Bad_Server: (*<0 .. $$scope + 1> (Request | Process_Response | Response ) *) +BUILD{ + ENSURE #Response == #Redirect; + + ENSURE #Request == #Process_Response; }; + + +COORDINATE $a: Request, + $b: Response, + $c: Process_Response + DO + /* No Server should respond to its own Request */ + ENSURE FOREACH $s: $$ROOT NOT ($a FROM $s AND $b FROM $s); + + /* allow only pairs Request/Process_Request from the same Server */ + ENSURE EXISTS $s: $$ROOT ($a FROM $s AND $c FROM $s); + + ADD $a PRECEDES $b; + ADD $a causes $b; + + /* to make the correspondence between Request/Process_Response more visible */ + ADD $b is_response_to $a; + + COORDINATE $d: Send_Response FROM $b + DO + ADD $d PRECEDES $c; + ADD $d causes $c; + OD; + OD; + +/* Client never does directly interact with Bad_Server */ +ENSURE NOT EXISTS $r1: Request FROM Client, $r2: Response FROM Bad_Server ($r1 causes $r2); + +/*=================== Property1 ========================= + Check whether Client's Process_Response may + be indirectly affected by Bad_Server's Redirect intervention +=========================================================*/ +IF EXISTS $r1: Process_Response FROM Client, $r2: Redirect ($r2 BEFORE $r1) +THEN SAY("Response to Client may be affected by Bad Server"); + MARK; +FI; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.temp.txt new file mode 100644 index 0000000..1615ab5 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example40_web_browsers tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.tree new file mode 100644 index 0000000000000000000000000000000000000000..189dd308ccfa5d02af82a2e35dae4934f32f4574 GIT binary patch literal 19968 zcmeHPe~=Vaes7kY-r1k*@<SIyZdHzOhH&#^cXpRU6xihe5x8YfIZtV4cLy0AX2zM> z6^!S3#2Ain#t@Dph{W?OVp*0&5o0VuEMp9@3`Gd>EMtsCS;q1xilU4~S(eqE&-eZ4 z?$@tpS-sr-lRT>DJKg<xpZ9&=@Atj;?bovuYYbyD{<Rsr*bq*GVc3%(n;>!DxdKPK zVVK6wCVR4B;8ty|z&qFC-U1vc95?ZcRF6s&2e3vh{@JMDtOj2Mat)*jxfZexawCo* z(qj_CQ{91e>js@1ebbAE%j+1rqT!0wa5V<H$%+l7oswbPUnt#6(qEvuVb_x#AYmi2 z8_dCq-H3V>Tu0xXhaj6Fck+9FJ?s`--y<po1hdl=+&_r=t&oQy;TY!#<W$IGI9{jr z_q9@crg35_wPzZarc--NuW13jrlZa&)Sm%)8j}2aM(X9$-;aAw;NHIs?qh*FR|WT} zX!nx9edgh0{MZy*HIoecN+A(vbnetn((T&<9ND)WlI(jeMVIPlX5R(;I&aPU#MMdi zj+2t#y!&KdD$EZv!QX>+W<f54yb5v+<ZQ@Wq2FDTVDIkxC{CH(uV%4cBjd=q2bhZ5 zhO|4w&k5ik0)A%zFYM3oUkl*(0Dmxm7k)5}vqif@#KSd#dWTW(NT8nZi)n0`HOTsp ze$u#xAI2*bJ+2@9@gw8x7}|QB`!N(J<Lnf0?~H?!arOal=L2y;?FQrQ64#sA4dadU zq_IoIz7BYdc6%;l1LW5sr`H(HoEnD1ux7=chwJlk|92o0kn<rI1Gj?X-2Qw6*Vp6z z^^mti{x0MQaCwe%+g*U`+i?H)Aa_76gxn3>z8csN=ikKnQ;;#p=VTNKWrU!9$oZzS zy_j*HuQBrJtr_Qq8e^z1vfVkt>rDoqWMK2zu^K*~LHdi|e~j<A;Cn^zy$b!_q<#eW z-V%I}{!*3iZNc{r_&x~XJ1_Vk{iSMuF9^Pi9Ixs3x!{BJ7es|OKEHr2!SRWBrBaJk z$d1DgrnI)7#rv-CwNBQ@FXEbt%Qx#w@XZBZaC{^F6~2XEg0BaB!ErCfiQmq40{vb# zna2z4m&=wbP9JZlDh_eQaBDAvL%cBDMvh}~pG12@lMNf|mXizb54B5UnM$Du+!*kk zklP@;ARj>A9^~4E;vV(kc8-JF<HPNxxea*><u!+Jy&Ljb$R5a}kiC${(e4SA&t8P< zr-l8_Oy=YAE#Te{!F?=n=LGINaF;mFoi~UNda!(?rk3*|`*K=HJH+X?aKBy7M%+fh zPhymO%zoF_8tKyAac3@*31=brdTN0R;FbwopTMmJZes{;NZ>{UE)U!`(hu|5V(7O6 zcDw;{cetL)_+0|rKHzVJ+^^zI!}`8`6Rm4|e`qfi>)W!x`gQ<qKcm)@^CDXh=2E>K ze`7Bf_51kxAZxIB@P%4FuO1QhJ_^p`!ruMR>x4uHEzQqaJ6{+4E5_kJE%?uX|2-f7 zM-$-3xMA&loArOP968QKaD9%WR(c%zig}XZujBeieCRsT!s}{zYrDtk?>WVd)R^(j zig5eMb!2wLaOOpT^74C@r+ryIxsJrZx9H39h4xpjBYnJIrty<s(0Ykk*2@#u>V1~; zA#mP$vJpBBsaQwMhYBtS+*kl7=0iU6xn-4k80#XNHy`Hps^Urp$L->{h%xtH;cgx$ z^GL=|t{7N%3yolVCE{Xl#MoRaY;_Jr4Cc3IRlQieApddk&k6jC<KU4ex%gKE{*7=v z^@G}=qRi`OBHq0I7Wugf?tLHb>^Qh{KHT|naF=|z&mz1Zt6--Z)38@VHbLGDd4<%P z>uwsy+U+&M&d3M-{$c&<FloNU^NPvsynxpyJ2AU21n({2jX|!3TomMgZl=9X@FUM8 zemUM4e;?zIQ$C4y5;WgBD@>-p!oObd-yY<DevZqJ{FV4+BryIF!JlU`;cPQ8rxSmT zs{d}4ms>~WW9#ESldos{O}?ICU2qPVh=pIaQ+)d8iLrDE^LaI1Z$4qT!{Inr&u2xu z&xPYm<HPXwpAW}tdcF{j)7n20jx&u{XNLCwXgFSL|HW{e*8WT3IL+@b3%?%|et#W) zKV|Ci@s7Z~D{vnIcY*v_mmWkAn8w8%N&h;};_@?-uM?lE`uO9U;l2<!Y#OoW9HS1; zZgt@O^sv2NjEnCC*1_q(%)v1q8%&}&SjVZbylDXAEaBY~5JmX)wKo92xX!TA5od{7 zkF>YH8)*L~w7nX~poev^&Qo#Q-{jq6Hv%78`&&f&_o($Wd*$l5UGsI^UPb8fKppd& zoHv+V9}&1m1#TyBdkE(}?<sydsJ5%DYm|2#Qtvw=k1&m&w(~f6JVyRPJuhE*7HuBI zaonrxAYY*3+UbOMFJK~es_>l#*Sk1A^y)as7pS;=7rcAyM&Lu?`wUz)Q8k|u`GVi> zY`t!Z@_DT#YS_0TPFhiKR#dS&!_5`AdBEKU+<f2?<KPwx+!Ekcj)NNzxIy4Hjf2}F zaQ6ULiIP9OJmw)>+leH|R~(UdD0bNc+(8_NJ**@04&c1}>4<k<Qc~VQ#Xo-y7q%9i zqdJywrt$Y@?2RmLJl+>|tb_c7ipKkrjwPI;=gT_ALH<HT<2$Bf3CHFEJTJQW&+#bF zuTDg(=T~^Hbn&MJ{@ro#c>Z+p9}4`1aqxIfb@87Gd`*3*J`~S#CRXyXrg|?QYpDmS z3a;IUn>7w@t`9e_9=S$k+BMA1Rq`6_oAJB`dp5Cp=y>Jyp+X^N8b2B&srYdbHs}L| z@+vB%w|ow;zlU+x2R&|wTnqVq$c?;i#CW4+-aN9~ByOi6ozvfh(*B5!b&z*`nfCqh zX5Rt5@;WEy3*<k=3F1oOI4w`8gyYa(Z@w6-H=Ku6oFno;(|DxA%`34_;qosO`R*>Y zp0p`hi~Pgnoh1K#9``q{V;_}Whu^&WxQ=~Qy&kS(pVc(}B|NX%8{WR({w%ND7mjoL zBlF7r;W*4+9rh-59$~x(!tq-B2g7k%`-j4Drg8fo+afz0YNhurrZM-VeV4FTnvV-5 zFOd5mPu27M;c58z`Fb`U?0&@KOX2NE|5eQ&URCQ=#l1E`-0Lb1ap~n1C!n)9q+T-L ziyCiFrE4^c(++V}J>F3HtK#0AAnv4!Q}jIreZ@h#QE^0m7&Rhzd*|tE8hvlsL&AT< z<LG}{ZI9(Y<i9iOb>j9H<kdg3M+ARn9RBxI9>%{J{O_yR{oM53G(Kv!+lkkk?^&K1 zjJvb2$vIj_ym^k{J`Lxu$|v{nE`iTzVC~9vfblgn@O-(cfya9be+#7er@aCDto)Gu zaYSDFYwIWX0cU}K?l}4_6#B(N^jn0w;&Am7d9G#`xj!eL4;G{D3f`_V53Cn<k<SMM zz}?XR|6Tm1eYc2@E#ybfKXw-W-^}%sdPqs}!JglW;rAuZG@kg&RVxJlJ!+h=yySrf zzJHDPb1W}-5PCh@z~`rX(f;F?<Hx#?3*kK=c=5iE@zVRggFfEF6X4w%!h1yU;ynW6 zJqmq~`*=@GfHxn)ds^_~y#(jQ`-3w+-uK4m^~Z(sT=G!^e=hkLdVZqDg@XG+;P7Jz zC)&uym5d+dd1z`Qe;%6Nh-dN;oO~Xd4;(!YT@PGm2yRIuf4;g&;M(!bxvUZKctacg ze!%-(#DBK&bx!_H;#Y0-K3m?$xb~hS)-=knbESj4or*uM+4IR-9ZNWcZ@rFjkk?bu z_y%+=;S|0>9pfPHr=s!Qs$&VK@NLvF4xS6BXneQpSi-S9YnAW0;*LiCoU^$x^tpoJ zSNrfqfq!5e{LMc6BLe?eIDVpeI>o!3_w54WY(L^?CFB7}daw8l@2@g02={`(9TB)= zh|kvp@kzK-0(V;A-UaT%5ZncUyC`s<16SJwyZ-GI%5yb6Tbj6@t&pVWtR`{;@E7OU zcwffsd!LYa2f)tD<j+8V=L(*Af+xm#G~6PATP$!ZI1X{-<^AiM@OuY-ohgG4N96OY zeLPPw$?|v1w|Ec8&ZT}*U%VG&*DEYez5Hzi{COPPyfz%<p;TC&LHl<*ynF0M;KQG< zvHiQ<=nw7RAqVys)A-d?K41LzR6b9b)9C#a&7Srs={Iu*zkl5fem^xsy??5i?rZHm zR;|7NXr}p!@sCyM_v2pQ9OOY%CfaY)c=KBO{s6Ds4?W=HMLwkPUS>bkG){fZeeb%B z@q6(=dw4kf#SwXwv?Joj^RL_=ea5HHEJFJFd71rD7B|}ideGh<4u5fCoY$v^r}qnp zG3<}}i?cYO$IG6Mew_Sn8mTU^uj%o=243u^`iq17iHhsTljHN!xOCT3nqS@)<MJIb zE<ZpU=bO~|{gTe<6nVQ5V@2By7;paZ&hjavng5=mrkT&*wau=cEI&5+IlCD0p{y@a z9V_#(i1A;neRsb8GQ3kmctt)IF~+8i+ppRG3;miC(!R*sBF2pA)c#lM*ZdG(k+-q< zet`Q+#sTwJqM7o&IQ{;F<$ZWR>2x;pxVjf{vP9?fyN&VwehBYM!P_L><KR7~v)acy zI04=V)%Y53pN;Iro(DEffcFO~FSA1j)06$)j>YK$>X{f{WQQ%6<9*^W_c`MsQSXPS zSGruit<!kEDSv<4Je{u(@_goWzD~&VC)s)-f2XUAmk0H>9OP3}w0!I#9ZNWc?_nL| zAm5^*@$JyDgj4t)(J>D4F)AA0qdJywEZ*)6@b1*Hl!sB#cz5Yo!ZBX#6Ds=d*0B!q zHYytLV>*^_Y<_+iaqxKfeZo*-?PDKOX@8Gi$3Z?w<u}qk@+_tOy&>%*&-{(GAN1?K zkoJ+chPFSRUy&aw{n{VGi##@z_kfNi9P=0QPlflOj&+dthVmZLu^bo3v!B9xO3xKf zLsGu}Jg?_pciHpDO9J<@z`Z7MRo=gzRNMFGn{57*@6%6B5O-R|!7g5YcBUD73H)Hj zz=zDYqsEed1{V9LoBoaWKcMeh&3r#Cz^~~mae;l@s<^=Zsee4N{#V%-gsxs*_BQ&2 z!(SYc-)VgBs5n_i;d>W+f&ETL<aI3GvVnMePv>-y&r$KW&-NRB&G|`*w*>qrf7knd zGyk2~S+0v|{QSrEkI0{^+DH%6Sh|bex0=SCN&Y<Q`IqhMoNMO$Fz402`2D8fE~vPu zv3(lvZx!B)D!wZ3Cn_#t9G>x&^RQ1<F49ltQ4yp6im%LThwu*aYltInA1aCm&OmWC zh2W-!;6$FI@XZdvl{lYiJU4^qFY@n(Zn%QyFY<iV6+C~D=O^0j9TX3DtQlOnY6E^p zcqPX#n8we4&}aVv-QRX4Jr|qC8&~rBe?61edwCAW|Kl9~cS~pHaNOBBWF9t7g7f{n z5dATqQqjiAd>u=;(E0v)9qVBJrK0gxU7wy4@6ldt<^BApR&_t%AKK~fZ`kuDp6~Jg zvWuR_z4J;7w+HqY9tq433qtgB$LW*L+J7ke^{9}4B;-yZe@y+TGOki8cU4?Z5a(Op z{PW177Cw(G=J=|7D<;UdQt++jc++^igWLCT2alV->Y%vQ=C#2V!`_AQdTR@xm+q4F zVc$O%cG)fDPnf+U6dP2Wp%(nz0gf>o598Q{V=q5g{5&S={Ryk*ts{qkc~<S0<Ldo) z<)wXnYMyaa#j>`cFBR6#<Gf$;IZxSVKaT$023_%YM$RiOtpB07Hw5l>;NIjocfXVT zChhc=u+#gz{i^mnD{$v7gF7#9mpHBlJ$F9i-&qH%d}!^~OyT~kox<bFoWg2qan&kt zQ~7;KukigT`a6A!Vef&Q1Nmo=^EsZ`d#~>~@p_d<@=3|?KlR}|$Hy!4@Dd&C!2VPi z@4mqJUm1djA6)#;0{DRtJpAF}_lLxl{GHkzu*<Em%cd!KR-OWVzIAlN((iG-{yfl5 zDWo0YAJh28HMcAsxS93m0JZ164`g{vMXyWx`El&`5M$vu(`cPS``n6Mx9M0%_))>_ z2*C;eY4NgK#LGSrFHiBh8t!R<dtTsPs)Bo2;9e8BlN`tF^n}`f`yl*qO4pU_<nEKa z6MmmCR3bR+Cn>HDcJOr>=g2>`@gwuM4^+OYxDSIk&%exXAF215GWgK^`*AqVG*-{D z4~5{*h2u5e^WiwtI53OiM#EnS$7{HY;W*RSbrt=662*l(4;SFSPvB>I?)wyyp8IT! zt7xklw^LiCd0goTzp}Xa3o$P|C8Ycvl>EI@@H}`Oaiqlm?2z`L9~G^?b95}>Cb}P@ zj1zyJ(9z20^J_W3X(VRT?>|_7rT#x>dVA~Zf>!*W0;)casIRpn*R`8k`TDV%*Q<(K zBXGBJoMNwyYMa!52fS36zE212I~0Nkzl;9`j}vztrgbUT%GaeaNLrU3=6FS4!tD^a z-2%5y;sWDuzpewdule^tIL<Uq&JG=a2gC6i@1by<Y0SRbeLsn~WcHKq1%v1R?|(L* zC~@*z@c%Q26SF+LC9^dh&EzT;{he8)JX|Pd8gI)CSwp45{pC!lA)7CbR;<n0T&A%w zT9Mx)r9z=nZlE>3P|j8|<*DWD)?zMWrH3ooLY|S$?BABAYn?Icevh!caBK03@H^)6 zTsD)hG=95K7_l~FN@Hk#Sz3OL4rI#3LcW}7PFD(Bv%^+q4B&E0K6AfC+E|tJP%gtx zJ+-E|U#&uEBvYEUVbv|`*YsO!R&5xx;>m6tJ@utgC{Ei*_4K#47X4v;-9YBP(M-95 zMn|%x%y6Z7Lnc3BNfp}E-WH1GwsJ8uoK5Gf&7*l{g7WnHM$`F9c5^l}Vr8}!OUx#- z`blYvv`Uw<Wmw9+)vz2Ftz^ndcJr@YT~=3$f9>wFx>NOTU--p%mlaR7t}hjaGv%_U zn%YAv-r45AlI*mSUCNcNq}A0qEvUYgNQPYN3Axrg<2!+l_Qb88gm$$zZuKUv3}WMP z_#obMRk&TcyRGi3_j;|KSe1G`-BwRe^t*in%;=4G=L$pQnq2zsw&8Rx2amY6EY~CA zOKFN)#Vp-PtGm-IWy+(uN<%(9mc5%{bOUrILaud(TnjN?D&F8mNlCX&0v=AJs`atg z>Wy6;Znt<MiJG0}aC)?yDYs<H7COQPk5wr|Hm7stOtef9o*&LcH{53>;#MLN#W;o` z3Z?p0m6C-~+Zmt2FVTo*GXuNR)oZ0<CTewAskU+^htWZRV!DF*dA;MQ5Cf$`43z4r zTd{7Sf9dj-QRJ4)b8VSz#0lTYD`x*j4BZWl=^VRJ$&O{}mtyux_E^c@)?x{c9?Isj zmF?W~xx)RKk~LHq&5tyW7U5|AomJ`Twz_&6%Z1U>aE75V!15zm>WrBm-8zKXCr#~U zX<lg<^1cqcU!$c=j?EVhW%ru7te?6ODdy7Ie6zHvRm_c+VZNdj@3j)KrgElY$$Rx1 zGL=;o3qFVziqw2MSGTT+K3ScOz8*C!U$<_cZ`InRgZ-_`3z*Kb`E(_N(F0dEl-%~) zmdjqiY>7@Q(N&*;zqvjA_mVLy8CTGqXt7hh(rb0a$Q{fGCO1}NDekt`SW39xs|6!X zRPhwEIgNG<Ojdq*W0Z0g!#I0mB(t?x+1{`mMo9Kz%8IeCo#<I-LeVFcv{I^usa~r) zHdV0)Vn5zF&EM5Hj2=(K)N4tol}y!Fwq*EvHKn{gKfI+>$Y&p5Lp_RcC|59tn{(&V zfA&+?m)V@gY|!eTPr(~A2l`j{FCT2;!b+s9M7KOiCah#qo^*Cuohf<J6}P$)%?KdY z7;}%jmBPq!aousNJE5*y<nnl;MYI>k=#3`=kR*(d?5x9Pl!du4vN>BSSIlw-T^gaF z<@252L_JBXN40Ek((3K3Cx+f`tGB0teWU)y8tH31hGt`lM(i7)d0bD%nrJToUvMLt zP<#@@{dlZl#Eq4hTuM7Cg$};%cWg~>?-<H-q&IKIl#&_g7~0-}<-dbx0@3vY{mc9N r`Zq`;^>kT1u914XtlpGrq!>ai)+1DfHDaCOJKP>i<)GsKZU6rd1&tXI literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.txt new file mode 100644 index 0000000..1ce5a20 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.txt @@ -0,0 +1,17 @@ +generating traces for scope 1 +completed Response: 4 traces (0 MARKed) 12 events + average 3 ev/trace min 2 max 4 + +completed Client: 1 traces (0 MARKed) 3 events + +completed Good_Server: 7 traces (0 MARKed) 25 events + average 3.57143 ev/trace min 1 max 5 + +completed Bad_Server: 7 traces (0 MARKed) 30 events + average 4.28571 ev/trace min 1 max 7 + +completed Web_browser: 3 traces (0 MARKed) 33 events + average 11 ev/trace min 8 max 13 + +Elapsed time 0.003506 sec, Speed: 29378.2 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.cpp new file mode 100644 index 0000000..608d0a8 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.cpp @@ -0,0 +1,971 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Replay_Attack trace generator for scope 3 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_sends_password_to_Bob + , Event_presents_Alice_password + , Event_talks + , Event_message_in_transit + , Event_eavesesdrops_message + , Event_requests_password_from_Alice + , Event_receives_password_from_Alice + , Event_asks_for_password + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_17_18 + , Event_SIMPLE_LIST_33_34 + , Event_SIMPLE_LIST_67_68 + // ADD operations + // ROOT events + , Event_Alice + , Event_Network + , Event_Eve + , Event_Bob + // main schema event + , Event_Replay_Attack }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "sends_password_to_Bob" + , "presents_Alice_password" + , "talks" + , "message_in_transit" + , "eavesesdrops_message" + , "requests_password_from_Alice" + , "receives_password_from_Alice" + , "asks_for_password" + , "SIMPLE_LIST_17_18" + , "SIMPLE_LIST_33_34" + , "SIMPLE_LIST_67_68" + , "Alice" + , "Network" + , "Eve" + , "Bob" + , "Replay_Attack" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Event_comparison_expr_61_62 +(Coordinate * current_host, int temp1, int temp2){ + bool host_has_no_matrices = !(current_host ->in_matrix); + if(host_has_no_matrices) current_host->create_matrices(); + int len = current_host->len; + // checking temp1 FROM temp2 + return (bool)( (current_host ->in_matrix)[temp1 * len + temp2]); + } +//*************************** +//==== generated classes ==== +//*************************** + +//---- 2 ---- +class SIMPLE_LIST_17_18_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_17_18_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Alice_source = Root_table[Event_Alice]; // source of coordination + int n_variable; // thread variable + vector<int> n_variable_list; // list of coordinated events + int Network_source = Root_table[Event_Network]; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Alice_source ]){ + if( ( (Stack[i]->name == Event_sends_password_to_Bob)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for n_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + n_variable = i; + if( n_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[n_variable_list.size()];}; + if(in_matrix[i * len + Network_source ]){ + if( ( (Stack[i]->name == Event_message_in_transit)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = n_variable_list.begin(); s != n_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) n_variable_list.push_back(i); + } + } }; + // no processing needed for the default source n_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = n_variable_list.size(); + if(thread_length != n_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + n_variable= n_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(n_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_17_18_ob class + +//---- 3 ---- +class SIMPLE_LIST_33_34_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_33_34_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int n_variable; // thread variable + vector<int> n_variable_list; // list of coordinated events + int Network_source = Root_table[Event_Network]; // source of coordination + int e_variable; // thread variable + vector<int> e_variable_list; // list of coordinated events + int Eve_source = Root_table[Event_Eve]; // source of coordination + + // create lists of coordinated events + // preparing thread for n_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + n_variable = i; + if( n_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Network_source ]){ + if( ( (Stack[i]->name == Event_message_in_transit)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = n_variable_list.begin(); s != n_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) n_variable_list.push_back(i); + } + } }; + // no processing needed for the default source n_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = n_variable_list.size(); + if(thread_length != n_variable_list.size()) throw failed; + + // preparing thread for e_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + e_variable = i; + if( e_variable_list.size() == thread_length){ + n_variable = 0; } + else{ + n_variable = n_variable_list[e_variable_list.size()];}; + if(in_matrix[i * len + Eve_source ]){ + if( ( (Stack[i]->name == Event_eavesesdrops_message)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = e_variable_list.begin(); s != e_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) e_variable_list.push_back(i); + } + } }; + // no processing needed for the default source e_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = e_variable_list.size(); + if(thread_length != e_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + n_variable= n_variable_list[i]; + e_variable= e_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(e_variable,n_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_33_34_ob class + +//---- 4 ---- +class SIMPLE_LIST_67_68_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_67_68_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // COORDINATE operation + int thread_length = -1; + int a1_variable; // thread variable + vector<int> a1_variable_list; // list of coordinated events + int Bob_source = Root_table[Event_Bob]; // source of coordination + int r1_variable; // thread variable + vector<int> r1_variable_list; // list of coordinated events + int Alice_source = Root_table[Event_Alice]; // source of coordination + + // create lists of coordinated events + // preparing thread for a1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a1_variable = i; + if( a1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Bob_source ]){ + if( ( (Stack[i]->name == Event_requests_password_from_Alice)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a1_variable_list.begin(); s != a1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a1_variable_list.size(); + if(thread_length != a1_variable_list.size()) throw failed; + + // preparing thread for r1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + r1_variable = i; + if( r1_variable_list.size() == thread_length){ + a1_variable = 0; } + else{ + a1_variable = a1_variable_list[r1_variable_list.size()];}; + if(in_matrix[i * len + Alice_source ]){ + if( ( (Stack[i]->name == Event_sends_password_to_Bob)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = r1_variable_list.begin(); s != r1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) r1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source r1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = r1_variable_list.size(); + if(thread_length != r1_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a1_variable= a1_variable_list[i]; + r1_variable= r1_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(r1_variable,a1_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int n_variable; // thread variable + vector<int> n_variable_list; // list of coordinated events + int Network_source = Root_table[Event_Network]; // source of coordination + int b_variable; // thread variable + vector<int> b_variable_list; // list of coordinated events + int Bob_source = Root_table[Event_Bob]; // source of coordination + + // create lists of coordinated events + // preparing thread for n_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + n_variable = i; + if( n_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Network_source ]){ + if( ( (Stack[i]->name == Event_message_in_transit)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = n_variable_list.begin(); s != n_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) n_variable_list.push_back(i); + } + } }; + // no processing needed for the default source n_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = n_variable_list.size(); + if(thread_length != n_variable_list.size()) throw failed; + + // preparing thread for b_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b_variable = i; + if( b_variable_list.size() == thread_length){ + n_variable = 0; } + else{ + n_variable = n_variable_list[b_variable_list.size()];}; + if(in_matrix[i * len + Bob_source ]){ + if( ( (Stack[i]->name == Event_receives_password_from_Alice)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b_variable_list.begin(); s != b_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b_variable_list.size(); + if(thread_length != b_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + n_variable= n_variable_list[i]; + b_variable= b_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(b_variable,n_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int Bob_source = Root_table[Event_Bob]; // source of coordination + int p_variable; // thread variable + vector<int> p_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + Bob_source ]){ + if( ( (Stack[i]->name == Event_asks_for_password)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // preparing thread for p_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + p_variable = i; + if( p_variable_list.size() == thread_length){ + a_variable = 0; } + else{ + a_variable = a_variable_list[p_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_presents_Alice_password)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = p_variable_list.begin(); s != p_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) p_variable_list.push_back(i); + } + } }; + // no processing needed for the default source p_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = p_variable_list.size(); + if(thread_length != p_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + p_variable= p_variable_list[i]; + // ADD operation + Follows.insert(pair<int, int>(p_variable,a_variable)); + create_matrices();// to check for axiom violation + // since relation table was modified + timing_is_up_to_date = false; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int t1_variable; // thread variable + vector<int> t1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int t2_variable; // thread variable + vector<int> t2_variable_list; // list of coordinated events + int Bob_source = Root_table[Event_Bob]; // source of coordination + + // create lists of coordinated events + // preparing thread for t1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + t1_variable = i; + if( t1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_talks)) && ! Event_comparison_expr_61_62 +(current_host, t1_variable , Root_table[Event_Bob] ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = t1_variable_list.begin(); s != t1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) t1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source t1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = t1_variable_list.size(); + if(thread_length != t1_variable_list.size()) throw failed; + + // preparing thread for t2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + t2_variable = i; + if( t2_variable_list.size() == thread_length){ + t1_variable = 0; } + else{ + t1_variable = t1_variable_list[t2_variable_list.size()];}; + if(in_matrix[i * len + Bob_source ]){ + if( ( (Stack[i]->name == Event_talks)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = t2_variable_list.begin(); s != t2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) t2_variable_list.push_back(i); + } + } }; + // no processing needed for the default source t2_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = t2_variable_list.size(); + if(thread_length != t2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + t1_variable= t1_variable_list[i]; + t2_variable= t2_variable_list[i]; + // SHARE_clause , throws failed exception if cannot complete + make_equality_complete( t1_variable , t2_variable ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_67_68_ob class + +//---- 5 ---- +class Sq_1_2 : public AND_node_producer_container { +public: // constructor + Sq_1_2 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_presents_Alice_password); + element[ 1 ]= new Atomic_producer(Event_talks); + } +};// end class Sq_1_2 + +//---- 6 ---- +class Ct_69_70 : public AND_node_producer_container { +public: // constructor + Ct_69_70 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_1_2 ; + element[ 1 ]= new Sq_1_2 ; + } +};// end class Ct_69_70 + +//---- 7 ---- +class Ct_71_72 : public AND_node_producer_container { +public: // constructor + Ct_71_72 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_1_2 ; + element[ 1 ]= new Sq_1_2 ; + element[ 2 ]= new Sq_1_2 ; + } +};// end class Ct_71_72 + +//---- 8 ---- +class Itr_3_4 : public OR_node_producer_container { +public: // constructor + Itr_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Sq_1_2 ; + element[ 2 ]= new Ct_69_70 ; + element[ 3 ]= new Ct_71_72 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.500000E-01; + alternative_probability[ 1 ]= 2.500000E-01; + alternative_probability[ 2 ]= 2.500000E-01; + alternative_probability[ 3 ]= 2.500000E-01; + } +};// end class Itr_3_4 + +//---- 9 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_sends_password_to_Bob); + element[ 1 ]= new Itr_3_4 ; + } +};// end class Sq_5_6 + +//---- 10 ---- +class Sq_19_20 : public AND_node_producer_container { +public: // constructor + Sq_19_20 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_presents_Alice_password); + element[ 1 ]= new Atomic_producer(Event_talks); + } +};// end class Sq_19_20 + +//---- 11 ---- +class Ct_73_74 : public AND_node_producer_container { +public: // constructor + Ct_73_74 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_19_20 ; + element[ 1 ]= new Sq_19_20 ; + } +};// end class Ct_73_74 + +//---- 12 ---- +class Ct_75_76 : public AND_node_producer_container { +public: // constructor + Ct_75_76 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_19_20 ; + element[ 1 ]= new Sq_19_20 ; + element[ 2 ]= new Sq_19_20 ; + } +};// end class Ct_75_76 + +//---- 13 ---- +class Itp_21_22 : public OR_node_producer_container { +public: // constructor + Itp_21_22 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_19_20 ; + element[ 1 ]= new Ct_73_74 ; + element[ 2 ]= new Ct_75_76 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 3.333333E-01; + alternative_probability[ 1 ]= 3.333333E-01; + alternative_probability[ 2 ]= 3.333333E-01; + } +};// end class Itp_21_22 + +//---- 14 ---- +class Sq_23_24 : public AND_node_producer_container { +public: // constructor + Sq_23_24 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_eavesesdrops_message); + element[ 1 ]= new Itp_21_22 ; + } +};// end class Sq_23_24 + +//---- 15 ---- +class Sq_35_36 : public AND_node_producer_container { +public: // constructor + Sq_35_36 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_asks_for_password); + element[ 1 ]= new Atomic_producer(Event_talks); + } +};// end class Sq_35_36 + +//---- 16 ---- +class Ct_77_78 : public AND_node_producer_container { +public: // constructor + Ct_77_78 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Sq_35_36 ; + element[ 1 ]= new Sq_35_36 ; + } +};// end class Ct_77_78 + +//---- 17 ---- +class Ct_79_80 : public AND_node_producer_container { +public: // constructor + Ct_79_80 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Sq_35_36 ; + element[ 1 ]= new Sq_35_36 ; + element[ 2 ]= new Sq_35_36 ; + } +};// end class Ct_79_80 + +//---- 18 ---- +class Ct_81_82 : public AND_node_producer_container { +public: // constructor + Ct_81_82 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Sq_35_36 ; + element[ 1 ]= new Sq_35_36 ; + element[ 2 ]= new Sq_35_36 ; + element[ 3 ]= new Sq_35_36 ; + } +};// end class Ct_81_82 + +//---- 19 ---- +class Ct_83_84 : public AND_node_producer_container { +public: // constructor + Ct_83_84 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 5 ]; + element[ 0 ]= new Sq_35_36 ; + element[ 1 ]= new Sq_35_36 ; + element[ 2 ]= new Sq_35_36 ; + element[ 3 ]= new Sq_35_36 ; + element[ 4 ]= new Sq_35_36 ; + } +};// end class Ct_83_84 + +//---- 20 ---- +class Ct_85_86 : public AND_node_producer_container { +public: // constructor + Ct_85_86 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 6 ]; + element[ 0 ]= new Sq_35_36 ; + element[ 1 ]= new Sq_35_36 ; + element[ 2 ]= new Sq_35_36 ; + element[ 3 ]= new Sq_35_36 ; + element[ 4 ]= new Sq_35_36 ; + element[ 5 ]= new Sq_35_36 ; + } +};// end class Ct_85_86 + +//---- 21 ---- +class Itr_37_38 : public OR_node_producer_container { +public: // constructor + Itr_37_38 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 6 ]; + element[ 0 ]= new Sq_35_36 ; + element[ 1 ]= new Ct_77_78 ; + element[ 2 ]= new Ct_79_80 ; + element[ 3 ]= new Ct_81_82 ; + element[ 4 ]= new Ct_83_84 ; + element[ 5 ]= new Ct_85_86 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 1.666667E-01; + alternative_probability[ 1 ]= 1.666667E-01; + alternative_probability[ 2 ]= 1.666667E-01; + alternative_probability[ 3 ]= 1.666667E-01; + alternative_probability[ 4 ]= 1.666667E-01; + alternative_probability[ 5 ]= 1.666667E-01; + } +};// end class Itr_37_38 + +//---- 22 ---- +class Sq_39_40 : public AND_node_producer_container { +public: // constructor + Sq_39_40 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_requests_password_from_Alice); + element[ 1 ]= new Atomic_producer(Event_receives_password_from_Alice); + element[ 2 ]= new Itr_37_38 ; + } +};// end class Sq_39_40 + +//---- 23 ---- +class Comp_7_8 : public Composite_producer { +public: // constructor + Comp_7_8 (): Composite_producer(Event_Alice){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_5_6 ; + } +};// end class Comp_7_8 + +//---- 24 ---- +class Comp_9_10 : public Composite_producer { +public: // constructor + Comp_9_10 (): Composite_producer(Event_Network){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Atomic_producer(Event_message_in_transit); + } +};// end class Comp_9_10 + +//---- 25 ---- +class Comp_25_26 : public Composite_producer { +public: // constructor + Comp_25_26 (): Composite_producer(Event_Eve){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_23_24 ; + } +};// end class Comp_25_26 + +//---- 26 ---- +class Comp_41_42 : public Composite_producer { +public: // constructor + Comp_41_42 (): Composite_producer(Event_Bob){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_39_40 ; + } +};// end class Comp_41_42 + +//---- 27 ---- +class SCHEMA_Replay_Attack: public Composite_producer { +public: // constructor + SCHEMA_Replay_Attack(): Composite_producer(Event_Replay_Attack){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 7 ]; + element[0]= new Composite_secondary_producer(Event_Alice); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Network); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_17_18_ob(Event_SIMPLE_LIST_17_18); + element[3]= new Composite_secondary_producer(Event_Eve); + // for Root_table update in Composite_secondary_producer::traverse() + element[3] -> type = ROOT_node; + element[4]= new SIMPLE_LIST_33_34_ob(Event_SIMPLE_LIST_33_34); + element[5]= new Composite_secondary_producer(Event_Bob); + // for Root_table update in Composite_secondary_producer::traverse() + element[5] -> type = ROOT_node; + element[6]= new SIMPLE_LIST_67_68_ob(Event_SIMPLE_LIST_67_68); + } +};// end class SCHEMA_Replay_Attack + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example41_Replay_Attack.json"); + global_flag = false; + // add tab names to table objects + // add tab names to chart objects + cout<< "generating traces for scope 3 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_7_8 temp_28; temp_28.harvest(); + Comp_9_10 temp_29; temp_29.harvest(); + Comp_25_26 temp_30; temp_30.harvest(); + Comp_41_42 temp_31; temp_31.harvest(); + // harvesting traces for main schema + SCHEMA_Replay_Attack temp_32; temp_32.harvest(); + temp_32.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Replay_Attack"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.mp new file mode 100644 index 0000000..5749bbe --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.mp @@ -0,0 +1,63 @@ +/* Example 41. The description of Replay Attack + is available at + https://en.wikipedia.org/wiki/Replay_attack + + run scope up to 5 +======================================*/ + +SCHEMA Replay_Attack + +ROOT Alice: + sends_password_to_Bob + + (* presents_Alice_password + talks *) +; + +/*---------------------------------------*/ +ROOT Network: + message_in_transit +; + +COORDINATE $a: sends_password_to_Bob FROM Alice, + $n: message_in_transit FROM Network + DO ADD $a PRECEDES $n; OD; + +/*---------------------------------------*/ +/* Eavesdropper */ +ROOT Eve: + eavesesdrops_message + (+ presents_Alice_password + talks +) +; + +COORDINATE $n: message_in_transit FROM Network, + $e: eavesesdrops_message FROM Eve + DO ADD $n PRECEDES $e; OD; + +/*---------------------------------------*/ + +ROOT Bob: + requests_password_from_Alice + receives_password_from_Alice + + (*<1.. 2 * $$scope> asks_for_password + talks *) +; + +COORDINATE $a1: requests_password_from_Alice FROM Bob, + $r1: sends_password_to_Bob FROM Alice + DO ADD $a1 PRECEDES $r1; OD; + +COORDINATE $n: message_in_transit FROM Network, + $b: receives_password_from_Alice FROM Bob + DO ADD $n PRECEDES $b; OD; + +COORDINATE $a: asks_for_password FROM Bob, + $p: presents_Alice_password /* not necessary to give the FROM owner, + just the event name is sufficient */ + DO ADD $a PRECEDES $p; OD; + +COORDINATE $t1: talks SUCH THAT NOT $t1 FROM Bob, + $t2: talks FROM Bob + DO SHARE $t1 $t2; OD; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.temp.txt new file mode 100644 index 0000000..9c275b0 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example41_Replay_Attack tree 3 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.tree new file mode 100644 index 0000000000000000000000000000000000000000..43cc53fc56b25e0c20da5b7af8b8eeef65a0ede8 GIT binary patch literal 12288 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 Y{O+)$Pk7rv-}=7ZzU>I4|I6e59|PcMLjV8( literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.txt new file mode 100644 index 0000000..e2d7a66 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.txt @@ -0,0 +1,17 @@ +generating traces for scope 3 +completed Alice: 4 traces (0 MARKed) 20 events + average 5 ev/trace min 2 max 8 + +completed Network: 1 traces (0 MARKed) 2 events + +completed Eve: 3 traces (0 MARKed) 18 events + average 6 ev/trace min 4 max 8 + +completed Bob: 6 traces (0 MARKed) 60 events + average 10 ev/trace min 5 max 15 + +completed Replay_Attack: 12 traces (0 MARKed) 288 events + average 24 ev/trace min 14 max 34 + +Elapsed time 0.063658 sec, Speed: 6095.07 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.cpp new file mode 100644 index 0000000..d5363d4 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.cpp @@ -0,0 +1,409 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Example trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, float > count_number_attribute; +//-- node attributes -- + map<int, float > NODE_count_number_attribute; +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( count_number_attribute[event1] != count_number_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + count_number_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!count_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("count",count_number_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + + if(p1_num_attr->first == "count"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + count_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +class tuple_type_TABLE_7_trace_stats{ public: + string tab_event_name; + float tab_total_number; + tuple_type_TABLE_7_trace_stats(){ + tab_event_name= ""; + tab_total_number= 0;}; +}; +table_object TABLE_7_trace_stats; +chart_object CHART_10_chart_states; +graph_object GRAPH_13_event_counters; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_a + , Event_b + , Event_c + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_14_15 + , Event_SIMPLE_LIST_36_37 + // ADD operations + // ROOT events + , Event_A + // main schema event + , Event_Example }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "a" + , "b" + , "c" + , "SIMPLE_LIST_14_15" + , "SIMPLE_LIST_36_37" + , "A" + , "Example" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_14_15_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_14_15_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + { // trace_stats title generation + ostringstream convert; + convert <<"Trace "; + convert << + trace_id_attribute ; + TABLE_7_trace_stats.title = convert.str();} + { // chart_states title generation + ostringstream convert; + convert <<"Trace "; + convert << + trace_id_attribute ; + convert <<" chart"; + CHART_10_chart_states.title = convert.str();} + { // event_counters title generation + ostringstream convert; + convert <<" "; + GRAPH_13_event_counters.title = convert.str();} + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_14_15_ob class + +//---- 2 ---- +class SIMPLE_LIST_36_37_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_36_37_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + // WITHIN event_counters + int a_16_node_var = -1; + { // COORDINATE operation + int thread_length = -1; + int e_variable; // thread variable + vector<int> e_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for e_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + e_variable = i; + if( e_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->type == Atom || Stack[i]->type == ROOT_node || +Stack[i]->type == Composite_event_instance_node) ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = e_variable_list.begin(); s != e_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) e_variable_list.push_back(i); + } + } }; + // no processing needed for the default source e_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = e_variable_list.size(); + if(thread_length != e_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + e_variable= e_variable_list[i]; + {// LAST_NODE + ostringstream convert; + convert << event_name_string[Stack[ e_variable ]->name]; + a_16_node_var = GRAPH_13_event_counters.find_or_create_new_node(convert.str());} + // attribute count assignment + NODE_count_number_attribute[a_16_node_var]+=1 ; + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + // loop_over_graph for GRAPH_13_event_counters + { // loop over graph GRAPH_13_event_counters + int n_24_node_var ; + int end_limit_1 = GRAPH_13_event_counters .nodes.size(); + for(int temp = 0; temp < end_limit_1 ; temp++){ + n_24_node_var = temp; + { // add tuple to table trace_stats + tuple_type_TABLE_7_trace_stats temp; + { // string tab assignment + ostringstream convert; + if( n_24_node_var >= 0 && n_24_node_var < GRAPH_13_event_counters +.nodes.size()) + convert << GRAPH_13_event_counters .nodes[ n_24_node_var ]; + else convert << "Undefined node"; + temp.tab_event_name= convert.str();} + temp.tab_total_number= + NODE_count_number_attribute[n_24_node_var] ; + ostringstream row; char comma= 32; + row << comma <<"\""<< temp.tab_event_name<<"\""; comma= 44; + row << comma << temp.tab_total_number; comma= 44; + TABLE_7_trace_stats.table_rows.push_back(row.str()); + // add tab strings for charts in table trace_stats + // add string to chart chart_states + { ostringstream row; char comma= 32; + row << comma <<"\""<< temp.tab_event_name<<"\""; comma= 44; + row << comma << temp.tab_total_number; comma= 44; + CHART_10_chart_states.chart_rows.push_back(row.str()); } // end adding to chart chart_states + } // end of add tuple + } } // end GRAPH_13_event_counters loop + // SHOW trace_stats + table_container.insert(pair<int, table_object>( 2,TABLE_7_trace_stats)); + // SHOW chart_states + chart_container.insert(pair<int, chart_object>( 3,CHART_10_chart_states)); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_36_37_ob class + +//---- 3 ---- +class Sq_1_2 : public AND_node_producer_container { +public: // constructor + Sq_1_2 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 4 ]; + element[ 0 ]= new Atomic_producer(Event_a); + element[ 1 ]= new Atomic_producer(Event_b); + element[ 2 ]= new Atomic_producer(Event_c); + element[ 3 ]= new Atomic_producer(Event_a); + } +};// end class Sq_1_2 + +//---- 4 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_A){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_1_2 ; + } +};// end class Comp_3_4 + +//---- 5 ---- +class SCHEMA_Example: public Composite_producer { +public: // constructor + SCHEMA_Example(): Composite_producer(Event_Example){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_A); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new SIMPLE_LIST_14_15_ob(Event_SIMPLE_LIST_14_15); + element[2]= new SIMPLE_LIST_36_37_ob(Event_SIMPLE_LIST_36_37); + } +};// end class SCHEMA_Example + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example42_Bar_Chart.json"); + global_flag = false; + // add tab names to table objects + TABLE_7_trace_stats.tab_names.push_back("event_name"); + TABLE_7_trace_stats.tab_names.push_back("total_number"); + // add tab names to chart objects + // bar chart for table trace_stats + CHART_10_chart_states.x_axis_tab_name= "event_name"; + CHART_10_chart_states.tab_names.push_back("event_name"); + CHART_10_chart_states.tab_names.push_back("total_number"); + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_6; temp_6.harvest(); + // harvesting traces for main schema + SCHEMA_Example temp_7; temp_7.harvest(); + temp_7.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Example"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.mp new file mode 100644 index 0000000..dade7ed --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.mp @@ -0,0 +1,53 @@ +/* + Example42 + Assembling statistics about a current trace in a TABLE and rendering it. + Table and bar chart example, run for scope 1 +*/ + +SCHEMA Example +ROOT A: a b c a; + +TABLE trace_stats { + TITLE ("Trace " trace_id); +TABS string event_name, +number total_number; +}; + +BAR CHART chart_states { + TITLE( "Trace " trace_id " chart"); + FROM trace_stats; +/* contents of the bar chart is derived from + the table trace_stats */ + X_AXIS event_name; +}; + +GRAPH event_counters { }; +/* This graph container is used as an associative array + data structure to accumulate event count + for each event in the trace via node attributes */ +ATTRIBUTES {number count;}; + +/* Collect event data and store it in the graph container */ +WITHIN event_counters{ + COORDINATE $e: $$EVENT /* loop over all events within the trace */ + DO Node$a: LAST ($e); + Node$a.count +:=1; /* increment node’s attribute value */ + OD; + /* Second loop - now fill the table, see loop_over_graph (105) */ + FOR Node$n /* variable Node$n is traversing event_counters node set */ + DO + trace_stats <| /* store tuple in the table trace_stats */ + event_name : SAY(Node$n), + /* here (Node$n) is a string_constructor(87) + converting node’s name (label) into a character string */ + total_number: Node$n.count ; + OD; +}; /* end WITHIN */ + +SHOW trace_stats; +SHOW chart_states; +/* contents of the related table provides data source for the bar chart */ + + + + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.temp.txt new file mode 100644 index 0000000..6b5c7c4 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example42_Bar_Chart tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.tree new file mode 100644 index 0000000000000000000000000000000000000000..daf645817055f6266804c5b2fad87a9165329862 GIT binary patch literal 6656 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 a{Qj9kSPMpZc6VA}bkpsN#O;4O|NjOT{9*0@ literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.txt new file mode 100644 index 0000000..b5117e9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.txt @@ -0,0 +1,7 @@ +generating traces for scope 1 +completed A: 1 traces (0 MARKed) 5 events + +completed Example: 1 traces (0 MARKed) 6 events + +Elapsed time 0.000216 sec, Speed: 50925.9 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.cpp new file mode 100644 index 0000000..82a347a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.cpp @@ -0,0 +1,373 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Example trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* + map<int, float > count_number_attribute; +//-- node attributes -- + map<int, float > NODE_count_number_attribute; +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + if( count_number_attribute[event1] != count_number_attribute[event2]) + return false; + return true; +} +// numeric variables in FOR_loops + float t_10_num_var ; + float n_11_num_var ; +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + count_number_attribute.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!count_number_attribute.empty()) + number_attr_container.insert(pair<string, map<int, float> >("count",count_number_attribute)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + + if(p1_num_attr->first == "count"){ + for(p_float = (p1_num_attr->second).begin(); + p_float != (p1_num_attr->second).end(); p_float++) + count_number_attribute.insert(pair<int, float>(p_float->first + base, p_float->second));} + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** +graph_object GRAPH_9_Data; + +class tuple_type_TABLE_31_probability_histogram{ public: + string tab_probability_interval; + float tab_trace_count; + tuple_type_TABLE_31_probability_histogram(){ + tab_probability_interval= ""; + tab_trace_count= 0;}; +}; +table_object TABLE_31_probability_histogram; +chart_object CHART_34_probability_chart; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_a1 + , Event_a2 + , Event_a3 + // composite events + // top coordination operations + // top conditional and simple action operations + // ADD operations + // ROOT events + , Event_A + // main schema event + , Event_Example }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "a1" + , "a2" + , "a3" + , "A" + , "Example" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class Itr_1_2 : public OR_node_producer_container { +public: // constructor + Itr_1_2 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_a3); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_1_2 + +//---- 2 ---- +class Alt_3_4 : public OR_node_producer_container { +public: // constructor + Alt_3_4 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_a1); + element[ 1 ]= new Atomic_producer(Event_a2); + element[ 2 ]= new Itr_1_2 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 2.000000E-01; + alternative_probability[ 1 ]= 3.000000E-01; + alternative_probability[ 2 ]= 5.000000E-01; + } +};// end class Alt_3_4 + +//---- 3 ---- +class Comp_5_6 : public Composite_producer { +public: // constructor + Comp_5_6 (): Composite_producer(Event_A){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Alt_3_4 ; + } +};// end class Comp_5_6 + +//---- 4 ---- +class SCHEMA_Example: public Composite_producer { +public: // constructor + SCHEMA_Example(): Composite_producer(Event_Example){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 1 ]; + element[0]= new Composite_secondary_producer(Event_A); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + } +};// end class SCHEMA_Example + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + { // Data title generation + ostringstream convert; + convert <<" "; + GRAPH_9_Data.title = convert.str();} + // WITHIN Data + int x_12_node_var = -1; + // FOR_loop + Interval temp_FOR_loop_25 ( Interval(1 ,total_segments )); + t_10_num_var = temp_FOR_loop_25 .smallest; + float temp_FOR_loop_25_upper= temp_FOR_loop_25.largest; + while( t_10_num_var <= temp_FOR_loop_25_upper){ + // FOR_loop + Interval temp_FOR_loop_22 ( Interval(0 ,1 )); + n_11_num_var = temp_FOR_loop_22 .smallest; + float temp_FOR_loop_22_upper= temp_FOR_loop_22.largest; + while( n_11_num_var <= temp_FOR_loop_22_upper){ + {// LAST_NODE + ostringstream convert; + convert <<"["; + convert << n_11_num_var ; + convert <<".."; + convert << ( n_11_num_var + 1.000000E-01); + convert <<")"; + x_12_node_var = GRAPH_9_Data.find_or_create_new_node(convert.str());} + if( ( ( ( n_11_num_var <= get_trace_probability(m, (int) t_10_num_var ) )&& ( + get_trace_probability(m, (int) t_10_num_var ) < ( n_11_num_var + 1.000000E-01))) +|| ( ( total_segments == 1 )&& ( n_11_num_var == 9.000000E-01)))){ + // attribute count assignment + NODE_count_number_attribute[x_12_node_var]+=1 ; + }// end THEN + n_11_num_var += 1.000000E-01; }; + // end FOR_loop + t_10_num_var += 1 ; }; + // end FOR_loop + { // probability_histogram title generation + ostringstream convert; + convert <<" "; + TABLE_31_probability_histogram.title = convert.str();} + { // probability_chart title generation + ostringstream convert; + convert <<"Trace probabilities"; + CHART_34_probability_chart.title = convert.str();} + // WITHIN Data + // loop_over_graph for GRAPH_9_Data + { // loop over graph GRAPH_9_Data + int n_35_node_var ; + int end_limit_1 = GRAPH_9_Data .nodes.size(); + for(int temp = 0; temp < end_limit_1 ; temp++){ + n_35_node_var = temp; + { // add tuple to table probability_histogram + tuple_type_TABLE_31_probability_histogram temp; + { // string tab assignment + ostringstream convert; + if( n_35_node_var >= 0 && n_35_node_var < GRAPH_9_Data .nodes.size()) + convert << GRAPH_9_Data .nodes[ n_35_node_var ]; + else convert << "Undefined node"; + temp.tab_probability_interval= convert.str();} + temp.tab_trace_count= + NODE_count_number_attribute[n_35_node_var] ; + ostringstream row; char comma= 32; + row << comma <<"\""<< temp.tab_probability_interval<<"\""; comma= 44; + row << comma << temp.tab_trace_count; comma= 44; + TABLE_31_probability_histogram.table_rows.push_back(row.str()); + // add tab strings for charts in table probability_histogram + // add string to chart probability_chart + { ostringstream row; char comma= 32; + row << comma <<"\""<< temp.tab_probability_interval<<"\""; comma= 44; + row << comma << temp.tab_trace_count; comma= 44; + CHART_34_probability_chart.chart_rows.push_back(row.str()); } // end adding to chart probability_chart + } // end of add tuple + } } // end GRAPH_9_Data loop + // SHOW probability_chart + // sort it by X_AXIS before printing + sort( CHART_34_probability_chart.chart_rows.begin(),CHART_34_probability_chart.chart_rows.end()); + chart_container.insert(pair<int, chart_object>( 2,CHART_34_probability_chart)); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example43_Histogram.json"); + global_flag = true; + // add tab names to table objects + TABLE_31_probability_histogram.tab_names.push_back("probability_interval"); + TABLE_31_probability_histogram.tab_names.push_back("trace_count"); + // add tab names to chart objects + // bar chart for table probability_histogram + CHART_34_probability_chart.x_axis_tab_name= "probability_interval"; + CHART_34_probability_chart.tab_names.push_back("probability_interval"); + CHART_34_probability_chart.tab_names.push_back("trace_count"); + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_5_6 temp_5; temp_5.harvest(); + // harvesting traces for main schema + SCHEMA_Example temp_6; temp_6.harvest(); + temp_6.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Example"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.mp new file mode 100644 index 0000000..c40bdfa --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.mp @@ -0,0 +1,48 @@ +/* Example 43 + Histogram example, run for scopes 1, 2, 3, and up +*/ +SCHEMA Example +ROOT A: (<<0.2>> a1 | <<0.3>> a2 | (* a3 *)); +ATTRIBUTES { number count; }; + +GLOBAL +/* This GRAPH is used as a container to collect data about valid trace probabilities. + The following MP code can be reused for any MP model just by Copy/Paste. */ +GRAPH Data { }; + +WITHIN Data{ + /* numerical_loop_header(40) is used to perform required interval calculations. */ + FOR Num$t: [1.. #$$TRACE] STEP 1 + DO FOR Num$n: [0 .. 1] STEP 0.1 + DO + Node$x: LAST("[" Num$n ".." Num$n + 0.1 ")"); + /* p - pre-defined trace probability attribute */ + IF ( Num$n <= #$$TP(Num$t) AND + #$$TP(Num$t) < Num$n + 0.1) OR + /* special case when the only single trace with probability 1 exists */ + ( #$$TRACE == 1 AND Num$n == 0.9 ) THEN + Node$x.count +:= 1; + FI; + OD; + OD; +}; /* end of WITHIN Data */ + +TABLE probability_histogram { +TABS string probability_interval, + number trace_count; }; + +BAR CHART probability_chart { TITLE("Trace probabilities"); + FROM probability_histogram; + X_AXIS probability_interval; }; +WITHIN Data{ + FOR Node$n + DO probability_histogram <| + probability_interval: SAY(Node$n), + trace_count: Node$n.count; + OD; +}; + +SHOW probability_chart SORT; +/* The contents of the chart is sorted by X_AXIS string values, since the order of adding rows to the + TABLE may be arbitrary */ + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.temp.txt new file mode 100644 index 0000000..a916609 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example43_Histogram tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.tree new file mode 100644 index 0000000000000000000000000000000000000000..df9c572f728d444b77cc27c0973a0d8fdc774b84 GIT binary patch literal 8704 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 IVwU{>2eR?zO#lD@ literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.txt new file mode 100644 index 0000000..642efb6 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.txt @@ -0,0 +1,9 @@ +generating traces for scope 1 +completed A: 4 traces (0 MARKed) 7 events + average 1.75 ev/trace min 1 max 2 + +completed Example: 4 traces (0 MARKed) 11 events + average 2.75 ev/trace min 2 max 3 + +Elapsed time 0.000278 sec, Speed: 64748.2 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.cpp new file mode 100644 index 0000000..094815a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.cpp @@ -0,0 +1,558 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA S trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + +} + +//***** VIEW object containers ***** + +class tuple_type_TABLE_25_gantt_1{ public: + string tab_event_name; + float tab_start_time; + float tab_duration_time; + tuple_type_TABLE_25_gantt_1(){ + tab_event_name= ""; + tab_start_time= 0; + tab_duration_time= 0;}; +}; +table_object TABLE_25_gantt_1; +chart_object CHART_28_gantt_2; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_a1 + , Event_a2 + , Event_b1 + , Event_b2 + // composite events + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_36_37 + // ADD operations + // ROOT events + , Event_A + , Event_B + // main schema event + , Event_S }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "a1" + , "a2" + , "b1" + , "b2" + , "SIMPLE_LIST_36_37" + , "A" + , "B" + , "S" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** +//*************************** +//==== generated classes ==== +//*************************** + +//---- 1 ---- +class SIMPLE_LIST_36_37_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_36_37_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int A_source = Root_table[Event_A]; + // lists of shared events for A + vector<int> A_a2_list; + + int B_source = Root_table[Event_B]; + // lists of shared events for B + vector<int> B_a2_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + A_source ]){ + if( Stack[i]->name == Event_a2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = A_a2_list.begin(); + s != A_a2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) A_a2_list.push_back(i); + } + }; + if(in_matrix[i * len + B_source ]){ + if( Stack[i]->name == Event_a2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = B_a2_list.begin(); + s != B_a2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) B_a2_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = B_a2_list.size(); + if(A_a2_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = B_a2_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(A_a2_list[i], B_a2_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int a1_variable; // thread variable + vector<int> a1_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + int a2_variable; // thread variable + vector<int> a2_variable_list; // list of coordinated events + int b1_variable; // thread variable + vector<int> b1_variable_list; // list of coordinated events + int b2_variable; // thread variable + vector<int> b2_variable_list; // list of coordinated events + + // create lists of coordinated events + // preparing thread for a1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a1_variable = i; + if( a1_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_a1)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a1_variable_list.begin(); s != a1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a1_variable_list.size(); + if(thread_length != a1_variable_list.size()) throw failed; + + // preparing thread for a2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a2_variable = i; + if( a2_variable_list.size() == thread_length){ + a1_variable = 0; } + else{ + a1_variable = a1_variable_list[a2_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_a2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a2_variable_list.begin(); s != a2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a2_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a2_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a2_variable_list.size(); + if(thread_length != a2_variable_list.size()) throw failed; + + // preparing thread for b1_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b1_variable = i; + if( b1_variable_list.size() == thread_length){ + a1_variable = 0; + a2_variable = 0; } + else{ + a1_variable = a1_variable_list[b1_variable_list.size()]; + a2_variable = a2_variable_list[b1_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_b1)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b1_variable_list.begin(); s != b1_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b1_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b1_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b1_variable_list.size(); + if(thread_length != b1_variable_list.size()) throw failed; + + // preparing thread for b2_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + b2_variable = i; + if( b2_variable_list.size() == thread_length){ + a1_variable = 0; + a2_variable = 0; + b1_variable = 0; } + else{ + a1_variable = a1_variable_list[b2_variable_list.size()]; + a2_variable = a2_variable_list[b2_variable_list.size()]; + b1_variable = b1_variable_list[b2_variable_list.size()];}; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_b2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = b2_variable_list.begin(); s != b2_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) b2_variable_list.push_back(i); + } + } }; + // no processing needed for the default source b2_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = b2_variable_list.size(); + if(thread_length != b2_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a1_variable= a1_variable_list[i]; + a2_variable= a2_variable_list[i]; + b1_variable= b1_variable_list[i]; + b2_variable= b2_variable_list[i]; + SET_duration(a1_variable,3 ); + SET_duration(a2_variable,5 ); + SET_duration(b1_variable,1 ); + SET_duration(b2_variable,2 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // gantt_1 title generation + ostringstream convert; + convert <<" "; + TABLE_25_gantt_1.title = convert.str();} + { // gantt_2 title generation + ostringstream convert; + convert <<"Example of Gantt Chart"; + CHART_28_gantt_2.title = convert.str();} + { // COORDINATE operation + int thread_length = -1; + int e_variable; // thread variable + vector<int> e_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for e_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + e_variable = i; + if( e_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->type == Atom || Stack[i]->type == ROOT_node || +Stack[i]->type == Composite_event_instance_node) ) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = e_variable_list.begin(); s != e_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) e_variable_list.push_back(i); + } + } }; + // no processing needed for the default source e_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = e_variable_list.size(); + if(thread_length != e_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + e_variable= e_variable_list[i]; + { // add tuple to table gantt_1 + tuple_type_TABLE_25_gantt_1 temp; + { // string tab assignment + ostringstream convert; + convert << event_name_string[Stack[ e_variable ]->name]; + temp.tab_event_name= convert.str();} + temp.tab_start_time= (recalculate_timing_attributes(), + time_start_attributes[e_variable] .smallest) ; + temp.tab_duration_time= (recalculate_timing_attributes(), + time_duration_attributes[e_variable] .largest) ; + ostringstream row; char comma= 32; + row << comma <<"\""<< temp.tab_event_name<<"\""; comma= 44; + row << comma << temp.tab_start_time; comma= 44; + row << comma << temp.tab_duration_time; comma= 44; + TABLE_25_gantt_1.table_rows.push_back(row.str()); + // add tab strings for charts in table gantt_1 + // add string to chart gantt_2 + { ostringstream row; char comma= 32; + row << comma <<"\""<< temp.tab_event_name<<"\""; comma= 44; + row << comma << temp.tab_start_time; comma= 44; + row << comma << temp.tab_duration_time; comma= 44; + CHART_28_gantt_2.chart_rows.push_back(row.str()); } // end adding to chart gantt_2 + } // end of add tuple + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + // SHOW gantt_2 + chart_container.insert(pair<int, chart_object>( 1,CHART_28_gantt_2)); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_36_37_ob class + +//---- 2 ---- +class Sq_1_2 : public AND_node_producer_container { +public: // constructor + Sq_1_2 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_a1); + element[ 1 ]= new Atomic_producer(Event_a2); + } +};// end class Sq_1_2 + +//---- 3 ---- +class Sq_5_6 : public AND_node_producer_container { +public: // constructor + Sq_5_6 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_b1); + element[ 1 ]= new Atomic_producer(Event_a2); + element[ 2 ]= new Atomic_producer(Event_b2); + } +};// end class Sq_5_6 + +//---- 4 ---- +class Comp_3_4 : public Composite_producer { +public: // constructor + Comp_3_4 (): Composite_producer(Event_A){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_1_2 ; + } +};// end class Comp_3_4 + +//---- 5 ---- +class Comp_7_8 : public Composite_producer { +public: // constructor + Comp_7_8 (): Composite_producer(Event_B){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_5_6 ; + } +};// end class Comp_7_8 + +//---- 6 ---- +class SCHEMA_S: public Composite_producer { +public: // constructor + SCHEMA_S(): Composite_producer(Event_S){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 3 ]; + element[0]= new Composite_secondary_producer(Event_A); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_B); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new SIMPLE_LIST_36_37_ob(Event_SIMPLE_LIST_36_37); + } +};// end class SCHEMA_S + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example44_Gantt_Chart.json"); + global_flag = false; + // add tab names to table objects + TABLE_25_gantt_1.tab_names.push_back("event_name"); + TABLE_25_gantt_1.tab_names.push_back("start_time"); + TABLE_25_gantt_1.tab_names.push_back("duration_time"); + // add tab names to chart objects + // bar chart for table gantt_1 + CHART_28_gantt_2.x_axis_tab_name= "event_name"; + CHART_28_gantt_2.tab_names.push_back("event_name"); + CHART_28_gantt_2.tab_names.push_back("start_time"); + CHART_28_gantt_2.tab_names.push_back("duration_time"); + CHART_28_gantt_2.rotate= true; + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + // harvesting traces for ROOT events + Comp_3_4 temp_7; temp_7.harvest(); + Comp_7_8 temp_8; temp_8.harvest(); + // harvesting traces for main schema + SCHEMA_S temp_9; temp_9.harvest(); + temp_9.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"S"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.mp new file mode 100644 index 0000000..fe4483d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.mp @@ -0,0 +1,39 @@ +/* Example44 + Gantt chart example +*/ +SCHEMA S +ROOT A: a1 a2; + +ROOT B: b1 a2 b2; + +A, B SHARE ALL a2; + +COORDINATE $a1: a1, $a2: a2, $b1: b1, $b2: b2 + DO + SET $a1.duration AT LEAST 3; + SET $a2.duration AT LEAST 5; + SET $b1.duration AT LEAST 1; + SET $b2.duration AT LEAST 2; + OD; + +TABLE gantt_1{ + TABS string event_name, + number start_time, + number duration_time; +}; + +BAR CHART gantt_2 { TITLE("Example of Gantt Chart"); + FROM gantt_1; + X_AXIS event_name; + ROTATE; /* to place the X_AXIS vertical */ +}; + +COORDINATE $e: $$EVENT + DO /* add this event to the Table */ + gantt_1 <| + event_name: SAY($e), + start_time: $e.start.smallest, + duration_time: $e.duration.largest; + OD; + +SHOW gantt_2; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.temp.txt new file mode 100644 index 0000000..d8e2c46 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example44_Gantt_Chart tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.tree new file mode 100644 index 0000000000000000000000000000000000000000..ebf9db514796e2a4a5427fb50b70e9b6d3d74603 GIT binary patch literal 7680 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 I|MU3&7pZ8(HUIzs literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.txt new file mode 100644 index 0000000..8db3bca --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.txt @@ -0,0 +1,9 @@ +generating traces for scope 1 +completed A: 1 traces (0 MARKed) 3 events + +completed B: 1 traces (0 MARKed) 4 events + +completed S: 1 traces (0 MARKed) 8 events + +Elapsed time 0.000251 sec, Speed: 59761 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.cpp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.cpp new file mode 100644 index 0000000..d97347e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.cpp @@ -0,0 +1,1433 @@ + +/* Monterey Phoenix-> C++ compiler, v.4.0, March 2018 + Mikhail Auguston, NPS, CS Dept, Monterey, CA, USA + +SCHEMA Martian_Lander trace generator for scope 1 + +***************************************************************** +*** generated constants are visible in the mp2_print_etc.h +*****************************************************************/ +#include "Interval.h" // for interval attributes +#include "mp2.h" // the permanent part +//********************************************* +//== event attribute sets and infrastructure == +//********************************************* +//-- node attributes -- +//-- GLOBAL attributes -- + +inline bool shared_event_attribute_comparison (int event1, int event2){ + return true; +} +// numeric variables in FOR_loops +//************************************************ +//==== UDR sets, matrices, and infrastructure ==== +//************************************************ +// sets of User-Defined Relations similar to Follows, Inside, Equals + pair_list alert_UDR_set; +// matrices for User-Defined Relations used by Coordinate objects + +// clear UDR and attribute sets preparing for next trace assembly by harvest() +inline void clear_UDR_sets(){ + alert_UDR_set.clear(); +} + +// assembly of UDRs and attribute tables +// preparing to store in segment storage by harvest() +inline void assemble_UDRs(){ + if(!alert_UDR_set.empty()) + UDRs.insert(pair<string, pair_list>("alert",alert_UDR_set)); +} + +// adjust and add UDRs from the segment storage +// called by Composite_secondary_producer ::traverse() +// restore original timing attributes in the segment +inline void add_adjusted_UDRs(int base, UDR_set &UDR_list, + map<string, map<int, float> > &num_attr_container, + map<string, map<int, bool> > &bool_attr_container, + map<string, map<int, Interval> > &Interval_attr_container, + vector<Interval> &start_attribute_list, + vector<Interval> &duration_attribute_list, + vector<Interval> &end_attribute_list ){ + + // restore timing attribute tables + time_start_attributes.insert( time_start_attributes.end(), + start_attribute_list.begin(), start_attribute_list.end()); + time_duration_attributes.insert( time_duration_attributes.end(), + duration_attribute_list.begin(), duration_attribute_list.end()); + time_end_attributes.insert( time_end_attributes.end(), + end_attribute_list.begin(), end_attribute_list.end()); + + // for UDR_list traversal + UDR_set:: iterator p1; + pair_list:: iterator p; + + for(p1 = UDR_list.begin(); p1 != UDR_list.end(); p1++ ){ + + if(p1->first == "alert"){ + for(p = (p1->second).begin(); p != (p1->second).end(); p++) + alert_UDR_set.insert(pair<int, int>(p->first + base, p->second + base));} + } + + // for num_attr_container traversal + map<string, map<int, float> >:: iterator p1_num_attr; + map<int, float>:: iterator p_float; + + for(p1_num_attr = num_attr_container.begin(); + p1_num_attr != num_attr_container.end(); p1_num_attr++ ){ + } + + // for bool_attr_container traversal + map<string, map<int, bool> >:: iterator p1_bool_attr; + map<int, bool>:: iterator p_bool; + + for(p1_bool_attr = bool_attr_container.begin(); + p1_bool_attr != bool_attr_container.end(); p1_bool_attr++ ){ + } + + // for interval_attr_container traversal + map<string, map<int, Interval> >:: iterator p1_interval_attr; + map<int, Interval>:: iterator p_interval; + + for(p1_interval_attr = Interval_attr_container.begin(); + p1_interval_attr != Interval_attr_container.end(); p1_interval_attr++ ){ + } +} + +// map IN, PRECEDES, and UDRs from the segment storage by Composite_secondary_producer::traverse() +// copies all relations IN, PRECEDES, UDRs from "from" to "to" +inline void map_relations(int from, int to){ + pair_list:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // mapping from Inside + temp_list.clear(); + for(p = Inside.begin(); p != Inside.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Inside.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from Follows + temp_list.clear(); + for(p = Follows.begin(); p != Follows.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + Follows.insert(temp_list.begin(), temp_list.end());// merge + + // mapping from alert_UDR_set + temp_list.clear(); + for(p = alert_UDR_set.begin(); p != alert_UDR_set.end(); p++){ + if(p->first == from) temp_list.insert(pair<int, int>(to, p->second)); + if(p->second == from) temp_list.insert(pair<int, int>(p->first, to)); + } + alert_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + + } + +inline void merge_UDRs_for_shared_events(int a, int b){ + multimap<int, int>:: iterator p; + pair_list temp_list; // to assemble pairs to be copied + + // merging from alert_UDR_set + // doing all adjustments to both a and b + temp_list.clear(); + for(p = alert_UDR_set.begin(); p != alert_UDR_set.end(); p++) { + if(p->second == b) + temp_list.insert(pair<int, int>(p->first, a)); + if(p->first == b) + temp_list.insert(pair<int, int>(a, p->second)); + if(p->second == a) + temp_list.insert(pair<int, int>(p->first, b)); + if(p->first == a) + temp_list.insert(pair<int, int>(b, p->second)); + }; + alert_UDR_set.insert(temp_list.begin(), temp_list.end());// merge + +} + +//***** VIEW object containers ***** + +class tuple_type_TABLE_150_Time_table{ public: + string tab_event_name; + float tab_start_time; + float tab_event_duration; + float tab_end_time; + tuple_type_TABLE_150_Time_table(){ + tab_event_name= ""; + tab_start_time= 0; + tab_event_duration= 0; + tab_end_time= 0;}; +}; +table_object TABLE_150_Time_table; +chart_object CHART_162_Timing; + +vector<string> global_SAY_list_999999; + +enum Event_name {Dummy_event, GenericContainer, Message_event + // atomic events + , Event_STMR1 + , Event_IVEL + , Event_IALT + , Event_CKDT + , Event_TDP + , Event_stop_Timer1 + , Event_START + , Event_RACC + , Event_STMR2 + , Event_ADJM + , Event_ETC + , Event_IOINT + , Event_TMRINT + , Event_IEM + , Event_Lands + , Event_stop_Timer2 + , Event_fire_RRM + // composite events + , Event_Emergency_Landing + // top coordination operations + // top conditional and simple action operations + , Event_SIMPLE_LIST_165_166 + // ADD operations + // ROOT events + , Event_Measure_and_display + , Event_Landing + , Event_Timer2 + // main schema event + , Event_Martian_Lander }; + +string event_name_string[] = {"Dummy", "GenericContainer", "Message_event" + , "STMR1" + , "IVEL" + , "IALT" + , "CKDT" + , "TDP" + , "stop_Timer1" + , "START" + , "RACC" + , "STMR2" + , "ADJM" + , "ETC" + , "IOINT" + , "TMRINT" + , "IEM" + , "Lands" + , "stop_Timer2" + , "fire_RRM" + , "Emergency_Landing" + , "SIMPLE_LIST_165_166" + , "Measure_and_display" + , "Landing" + , "Timer2" + , "Martian_Lander" }; + +#include "mp2_print_etc.h" // print methods +// for view object .json printing +//******************************* +inline void generate_AD_json_list (char & comma, AD_flag_set s){ +AD_flag_set::iterator AD_flag_iterator; +} +//********************************************** +// # special functions, aggregate operations +// quantifiers, event comparison +//********************************************** + +//---- 1 ---- +bool Quantified_expr_134_135(Coordinate * current_host, int a_variable){ + //===================================== + // quantifier EXISTS with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= false; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int b_variable; + int pivot_b_variable = 0; + + // loop 1 for b_variable + for( b_variable = 0; b_variable < len; b_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ b_variable * len + pivot_b_variable +]) && + ( + (Stack[b_variable]-> name == Event_IVEL) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for EXISTS + if( find_pair_in_table( b_variable , a_variable , Follows) ) + {result = true; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 2 ---- +bool Quantified_expr_136_137(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int a_variable; + int pivot_a_variable = 0; + + // loop 1 for a_variable + for( a_variable = 0; a_variable < len; a_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ a_variable * len + pivot_a_variable +]) && + ( + (Stack[a_variable]-> name == Event_IVEL) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( (! ( ( (recalculate_timing_attributes(), + time_start_attributes[Root_table[Event_Measure_and_display]] ) - +(recalculate_timing_attributes(), + time_start_attributes[a_variable] ) )>= 40 )|| Quantified_expr_134_135(current_host, a_variable +) )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} + +//---- 3 ---- +bool Quantified_expr_142_143(Coordinate * current_host){ + //===================================== + // quantifier FOREACH with 1 variables + //===================================== + current_host->create_matrices(); + int len = current_host->len; + bool result= true; + + // declarations for variables under quantifiers + // and pivot assignments + // event under quantifier should be IN pivot event (the source) + int a_variable; + int pivot_a_variable = 0; + + // loop 1 for a_variable + for( a_variable = 0; a_variable < len; a_variable ++){ + // selection condition for 1 FROM + if( (current_host-> in_matrix [ a_variable * len + pivot_a_variable +]) && + ( + (Stack[a_variable]-> name == Event_IOINT) ) + ) // end of if(selection condition) + { // branch for 1 + + // evaluate the body bool_expr for FOREACH + if( ( (recalculate_timing_attributes(), + time_start_attributes[a_variable] ) <= 100 )) {} + else {result = false; goto end_of_story;}; + }; // end of branch for 1 + }; // end for loop 1 + + end_of_story: + return result; +} +//*************************** +//==== generated classes ==== +//*************************** + +//---- 4 ---- +class SIMPLE_LIST_165_166_ob: public Coordinate { +public: // constructor + SIMPLE_LIST_165_166_ob(int n): Coordinate(n){type = simple_or_IF_op;} + + Traversal_result traverse(){ + try{ create_matrices(); + + { // SHARE ALL operation + create_matrices(); + + int Landing_source = Root_table[Event_Landing]; + // lists of shared events for Landing + vector<int> Landing_STMR1_list; + vector<int> Landing_stop_Timer1_list; + + int Measure_and_display_source = Root_table[Event_Measure_and_display]; + // lists of shared events for Measure_and_display + vector<int> Measure_and_display_STMR1_list; + vector<int> Measure_and_display_stop_Timer1_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Landing_source ]){ + if( Stack[i]->name == Event_STMR1 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Landing_STMR1_list.begin(); + s != Landing_STMR1_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Landing_STMR1_list.push_back(i); + } + if( Stack[i]->name == Event_stop_Timer1 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Landing_stop_Timer1_list.begin(); + s != Landing_stop_Timer1_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Landing_stop_Timer1_list.push_back(i); + } + }; + if(in_matrix[i * len + Measure_and_display_source ]){ + if( Stack[i]->name == Event_STMR1 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Measure_and_display_STMR1_list.begin(); + s != Measure_and_display_STMR1_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Measure_and_display_STMR1_list.push_back(i); + } + if( Stack[i]->name == Event_stop_Timer1 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Measure_and_display_stop_Timer1_list.begin(); + s != Measure_and_display_stop_Timer1_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Measure_and_display_stop_Timer1_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Measure_and_display_STMR1_list.size(); + if(Landing_STMR1_list.size() != len_to_compare) throw failed ; + len_to_compare = Measure_and_display_stop_Timer1_list.size(); + if(Landing_stop_Timer1_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Measure_and_display_STMR1_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Landing_STMR1_list[i], Measure_and_display_STMR1_list[i]); + } + len_to_compare = Measure_and_display_stop_Timer1_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Landing_stop_Timer1_list[i], Measure_and_display_stop_Timer1_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + + { // SHARE ALL operation + create_matrices(); + + int Landing_source = Root_table[Event_Landing]; + // lists of shared events for Landing + vector<int> Landing_STMR2_list; + vector<int> Landing_TMRINT_list; + vector<int> Landing_stop_Timer2_list; + + int Timer2_source = Root_table[Event_Timer2]; + // lists of shared events for Timer2 + vector<int> Timer2_STMR2_list; + vector<int> Timer2_TMRINT_list; + vector<int> Timer2_stop_Timer2_list; + + // create lists of shared events + for(int i = 0; i < len; i++){ + if(in_matrix[i * len + Landing_source ]){ + if( Stack[i]->name == Event_STMR2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Landing_STMR2_list.begin(); + s != Landing_STMR2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Landing_STMR2_list.push_back(i); + } + if( Stack[i]->name == Event_TMRINT ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Landing_TMRINT_list.begin(); + s != Landing_TMRINT_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Landing_TMRINT_list.push_back(i); + } + if( Stack[i]->name == Event_stop_Timer2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Landing_stop_Timer2_list.begin(); + s != Landing_stop_Timer2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Landing_stop_Timer2_list.push_back(i); + } + }; + if(in_matrix[i * len + Timer2_source ]){ + if( Stack[i]->name == Event_STMR2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Timer2_STMR2_list.begin(); + s != Timer2_STMR2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Timer2_STMR2_list.push_back(i); + } + if( Stack[i]->name == Event_TMRINT ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Timer2_TMRINT_list.begin(); + s != Timer2_TMRINT_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Timer2_TMRINT_list.push_back(i); + } + if( Stack[i]->name == Event_stop_Timer2 ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = Timer2_stop_Timer2_list.begin(); + s != Timer2_stop_Timer2_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) Timer2_stop_Timer2_list.push_back(i); + } + }; + } // finished creating lists of shared events + + // check that selected lists are of the same length + int len_to_compare; + len_to_compare = Timer2_STMR2_list.size(); + if(Landing_STMR2_list.size() != len_to_compare) throw failed ; + len_to_compare = Timer2_TMRINT_list.size(); + if(Landing_TMRINT_list.size() != len_to_compare) throw failed ; + len_to_compare = Timer2_stop_Timer2_list.size(); + if(Landing_stop_Timer2_list.size() != len_to_compare) throw failed ; + + // do the SHARE ALL + len_to_compare = Timer2_STMR2_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Landing_STMR2_list[i], Timer2_STMR2_list[i]); + } + len_to_compare = Timer2_TMRINT_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Landing_TMRINT_list[i], Timer2_TMRINT_list[i]); + } + len_to_compare = Timer2_stop_Timer2_list.size(); + for(int i = 0; i < len_to_compare; i++){ + make_equality_complete(Landing_stop_Timer2_list[i], Timer2_stop_Timer2_list[i]); + } + + create_matrices(); // to check for axiom violation + } // end of SHARE ALL + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_RACC)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,10 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_STMR1)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,10 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_STMR2)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,10 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_ADJM)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,20 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_TDP)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,10 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_IEM)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,10 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_ETC)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,10 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_IVEL)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,20 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_IALT)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,20 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_CKDT)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,10 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_fire_RRM)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_duration(a_variable,10 ); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + // ADD operation + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Running Timer1"; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + int temp_109 = Stack.size() - 1; + alert_UDR_set.insert(pair<int, int>(temp_109,Root_table[Event_Measure_and_display])); + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_TMRINT)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + SET_start(a_variable,101 ); + // ADD operation + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Emergency landing started at "; + Interval temp_1 = (recalculate_timing_attributes(), + time_start_attributes[a_variable] ) ; + if( temp_1 .smallest != temp_1 .largest) + convert <<"["<< temp_1 .smallest << " .. "<< temp_1 .largest << "]"; + else convert << temp_1 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + int temp_116 = Stack.size() - 1; + alert_UDR_set.insert(pair<int, int>(temp_116,a_variable)); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + { // COORDINATE operation + int thread_length = -1; + int a_variable; // thread variable + vector<int> a_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for a_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + a_variable = i; + if( a_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_Lands)) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = a_variable_list.begin(); s != a_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) a_variable_list.push_back(i); + } + } }; + // no processing needed for the default source a_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = a_variable_list.size(); + if(thread_length != a_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + a_variable= a_variable_list[i]; + // ADD operation + { // SAY_event generation + string message; + ostringstream convert; + convert <<"Landing complete at "; + Interval temp_2 = (recalculate_timing_attributes(), + time_end_attributes[a_variable] ) ; + if( temp_2 .smallest != temp_2 .largest) + convert <<"["<< temp_2 .smallest << " .. "<< temp_2 .largest << "]"; + else convert << temp_2 .smallest; + message = convert.str(); + + SAY_event * e; + map<string, SAY_event *>::iterator p = message_table.find(message); + if( p != message_table.end()) e = p-> second; + else{ // create new SAY_event + e = new SAY_event(Message_event, message); + message_table[message] = e; + } + // add e to the Stack and add e IN THIS + Inside.insert(pair<int, int>(Stack.size(), 0)); + Stack.push_back(e); + time_start_attributes.push_back(Interval()); + time_duration_attributes.push_back(Interval()); + time_end_attributes.push_back(Interval()); + create_matrices();// since Stack and relation table have been modified + } + int temp_125 = Stack.size() - 1; + alert_UDR_set.insert(pair<int, int>(temp_125,a_variable)); + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + if( Quantified_expr_136_137(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + if( Quantified_expr_142_143(current_host) ){} + else{ + throw failed; // REJECT + }// end IF + { // Time_table title generation + ostringstream convert; + convert <<"Event timings"; + TABLE_150_Time_table.title = convert.str();} + // CLEAR Time_table + CHART_162_Timing.clean(); // clear chart for the table Time_table + TABLE_150_Time_table.clean(); + { // COORDINATE operation + int thread_length = -1; + int x_variable; // thread variable + vector<int> x_variable_list; // list of coordinated events + int THIS_source = 0 ; // source of coordination + + // create lists of coordinated events + // preparing thread for x_variable + for(int i = 0; i < len; i++){ + // preparing loop variables for use in SUCH THAT and FROM + x_variable = i; + if( x_variable_list.size() == thread_length){} + else{ }; + if(in_matrix[i * len + THIS_source ]){ + if( ( (Stack[i]->name == Event_IVEL)|| (Stack[i]->name == Event_IALT)|| (Stack[i]->name == Event_TDP)|| (Stack[i]->name == Event_ADJM)|| (Stack[i]->name == Event_fire_RRM)|| (Stack[i]->name == Event_Emergency_Landing)|| (Stack[i]->name == Event_Lands)|| (Stack[i]->name == Event_stop_Timer1) +) ){ + // make sure this is fresh event not yet shared + int found = 0; + for(vector<int>:: iterator s = x_variable_list.begin(); s != x_variable_list.end(); s++){ + if((found = eq_matrix[i * len + *s])) break; + } + if(!found) x_variable_list.push_back(i); + } + } }; + // no processing needed for the default source x_variable_list + // finally check the thread length + if(thread_length < 0) thread_length = x_variable_list.size(); + if(thread_length != x_variable_list.size()) throw failed; + + // do the COORDINATE + for(int i = 0; i < thread_length; i++){ + x_variable= x_variable_list[i]; + { // add tuple to table Time_table + tuple_type_TABLE_150_Time_table temp; + { // string tab assignment + ostringstream convert; + convert << event_name_string[Stack[ x_variable ]->name]; + temp.tab_event_name= convert.str();} + temp.tab_start_time= (recalculate_timing_attributes(), + time_start_attributes[x_variable] .smallest) ; + temp.tab_event_duration= (recalculate_timing_attributes(), + time_duration_attributes[x_variable] .smallest) ; + temp.tab_end_time= (recalculate_timing_attributes(), + time_end_attributes[x_variable] .smallest) ; + ostringstream row; char comma= 32; + row << comma <<"\""<< temp.tab_event_name<<"\""; comma= 44; + row << comma << temp.tab_start_time; comma= 44; + row << comma << temp.tab_event_duration; comma= 44; + row << comma << temp.tab_end_time; comma= 44; + TABLE_150_Time_table.table_rows.push_back(row.str()); + // add tab strings for charts in table Time_table + // add string to chart Timing + { ostringstream row; char comma= 32; + row << comma <<"\""<< temp.tab_event_name<<"\""; comma= 44; + row << comma << temp.tab_start_time; comma= 44; + row << comma << temp.tab_event_duration; comma= 44; + CHART_162_Timing.chart_rows.push_back(row.str()); } // end adding to chart Timing + } // end of add tuple + }// end for + create_matrices(); // to check for axiom violation +} // end of COORDINATE + // SHOW Time_table + table_container.insert(pair<int, table_object>( 1,TABLE_150_Time_table)); + { // Timing title generation + ostringstream convert; + convert <<"Event timings"; + CHART_162_Timing.title = convert.str();} + // SHOW Timing + chart_container.insert(pair<int, chart_object>( 2,CHART_162_Timing)); + } // end of try + catch(Traversal_result t){ + return failed; + } + return success_and_completed; + } // end traverse() +}; // end SIMPLE_LIST_165_166_ob class + +//---- 5 ---- +class Itr_27_28 : public OR_node_producer_container { +public: // constructor + Itr_27_28 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_fire_RRM); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Itr_27_28 + +//---- 6 ---- +class Set_1_2 : public SET_node_producer_container { +public: // constructor + Set_1_2 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_IVEL); + element[ 1 ]= new Atomic_producer(Event_IALT); + } +};// end class Set_1_2 + +//---- 7 ---- +class Sq_3_4 : public AND_node_producer_container { +public: // constructor + Sq_3_4 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Set_1_2 ; + element[ 1 ]= new Atomic_producer(Event_CKDT); + element[ 2 ]= new Atomic_producer(Event_TDP); + } +};// end class Sq_3_4 + +//---- 8 ---- +class Sq_7_8 : public AND_node_producer_container { +public: // constructor + Sq_7_8 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_STMR1); + element[ 1 ]= new Sq_3_4 ; + element[ 2 ]= new Atomic_producer(Event_stop_Timer1); + } +};// end class Sq_7_8 + +//---- 9 ---- +class Set_11_12 : public SET_node_producer_container { +public: // constructor + Set_11_12 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_RACC); + element[ 1 ]= new Atomic_producer(Event_STMR1); + element[ 2 ]= new Atomic_producer(Event_STMR2); + } +};// end class Set_11_12 + +//---- 10 ---- +class Set_13_14 : public SET_node_producer_container { +public: // constructor + Set_13_14 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_ADJM); + element[ 1 ]= new Atomic_producer(Event_ETC); + } +};// end class Set_13_14 + +//---- 11 ---- +class Sq_17_18 : public AND_node_producer_container { +public: // constructor + Sq_17_18 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_TMRINT); + element[ 1 ]= new Atomic_producer(Event_IEM); + element[ 2 ]= new Composite_secondary_producer(Event_Emergency_Landing); + } +};// end class Sq_17_18 + +//---- 12 ---- +class Alt_19_20 : public OR_node_producer_container { +public: // constructor + Alt_19_20 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_IOINT); + element[ 1 ]= new Sq_17_18 ; + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Alt_19_20 + +//---- 13 ---- +class Set_21_22 : public SET_node_producer_container { +public: // constructor + Set_21_22 (): SET_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= new Atomic_producer(Event_stop_Timer1); + element[ 1 ]= new Atomic_producer(Event_stop_Timer2); + } +};// end class Set_21_22 + +//---- 14 ---- +class Sq_23_24 : public AND_node_producer_container { +public: // constructor + Sq_23_24 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 6 ]; + element[ 0 ]= new Atomic_producer(Event_START); + element[ 1 ]= new Set_11_12 ; + element[ 2 ]= new Set_13_14 ; + element[ 3 ]= new Alt_19_20 ; + element[ 4 ]= new Atomic_producer(Event_Lands); + element[ 5 ]= new Set_21_22 ; + } +};// end class Sq_23_24 + +//---- 15 ---- +class Opt_31_32 : public OR_node_producer_container { +public: // constructor + Opt_31_32 (): OR_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 2 ]; + element[ 0 ]= &Dummy ; + element[ 1 ]= new Atomic_producer(Event_TMRINT); + alternative_probability = new float[ element_count ]; + alternative_probability[ 0 ]= 5.000000E-01; + alternative_probability[ 1 ]= 5.000000E-01; + } +};// end class Opt_31_32 + +//---- 16 ---- +class Sq_33_34 : public AND_node_producer_container { +public: // constructor + Sq_33_34 (): AND_node_producer_container (GenericContainer){ + element = new Event_producer_ref[ element_count = 3 ]; + element[ 0 ]= new Atomic_producer(Event_STMR2); + element[ 1 ]= new Opt_31_32 ; + element[ 2 ]= new Atomic_producer(Event_stop_Timer2); + } +};// end class Sq_33_34 + +//---- 17 ---- +class Comp_29_30 : public Composite_producer { +public: // constructor + Comp_29_30 (): Composite_producer(Event_Emergency_Landing){ + target_event = Composite_event_instance_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Itr_27_28 ; + } +};// end class Comp_29_30 + +//---- 18 ---- +class Comp_9_10 : public Composite_producer { +public: // constructor + Comp_9_10 (): Composite_producer(Event_Measure_and_display){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_7_8 ; + } +};// end class Comp_9_10 + +//---- 19 ---- +class Comp_25_26 : public Composite_producer { +public: // constructor + Comp_25_26 (): Composite_producer(Event_Landing){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_23_24 ; + } +};// end class Comp_25_26 + +//---- 20 ---- +class Comp_35_36 : public Composite_producer { +public: // constructor + Comp_35_36 (): Composite_producer(Event_Timer2){ + target_event = ROOT_node ; + element = new Event_producer_ref[ element_count = 1 ]; + element[ 0 ]= new Sq_33_34 ; + } +};// end class Comp_35_36 + +//---- 21 ---- +class SCHEMA_Martian_Lander: public Composite_producer { +public: // constructor + SCHEMA_Martian_Lander(): Composite_producer(Event_Martian_Lander){ + target_event = Schema_node; + element = new Event_producer_ref[ element_count = 4 ]; + element[0]= new Composite_secondary_producer(Event_Measure_and_display); + // for Root_table update in Composite_secondary_producer::traverse() + element[0] -> type = ROOT_node; + element[1]= new Composite_secondary_producer(Event_Landing); + // for Root_table update in Composite_secondary_producer::traverse() + element[1] -> type = ROOT_node; + element[2]= new Composite_secondary_producer(Event_Timer2); + // for Root_table update in Composite_secondary_producer::traverse() + element[2] -> type = ROOT_node; + element[3]= new SIMPLE_LIST_165_166_ob(Event_SIMPLE_LIST_165_166); + } +};// end class SCHEMA_Martian_Lander + +//*************************** +inline void harvest_GLOBAL_view(Composite_producer * m){ + char comma= 32;// space + map<int, report_object>::iterator p; + AD_flags.clear(); + +//*** start generating .json contents + JSON<< ",\"GLOBAL\":[\"U\""; +//****** output view objects +//*** generate all global Reports + {map<int, report_object>::iterator p1; + for(p1 = report_container.begin(); p1 != report_container.end(); p1++){ + JSON<< ","; + (p1 -> second).print_report_json();} } +//*** generate all global Graphs + {map<int, graph_object>::iterator p2; + for(p2 = graph_container.begin(); p2 != graph_container.end(); p2++){ + JSON<< ","; + (p2 -> second).print_graph_json();} } +//*** generate all global Tables + {map<int, table_object>::iterator p3; + for(p3 = table_container.begin(); p3 != table_container.end(); p3++){ + JSON<< ","; + (p3 -> second).print_table_json();} } +//*** generate all global Charts + {map<int, chart_object>::iterator p4; + for(p4 = chart_container.begin(); p4 != chart_container.end(); p4++){ + JSON<< ","; + (p4 -> second).print_chart_json();} } +//*** generate all requested ADs + comma = 44; + generate_AD_json_list(comma, AD_flags); + JSON<<"]"; +} // end of harvest_GLOBAL_view() +//****************************************** +// main +//****************************************** +int main(){ + gen_start = clock(); + unique_num = 0; derivation_path_mark = -1; + JSON.open("Example45_Martian_Lander.json"); + global_flag = false; + // add tab names to table objects + TABLE_150_Time_table.tab_names.push_back("event_name"); + TABLE_150_Time_table.tab_names.push_back("start_time"); + TABLE_150_Time_table.tab_names.push_back("event_duration"); + TABLE_150_Time_table.tab_names.push_back("end_time"); + // add tab names to chart objects + // bar chart for table Time_table + CHART_162_Timing.x_axis_tab_name= "event_name"; + CHART_162_Timing.tab_names.push_back("event_name"); + CHART_162_Timing.tab_names.push_back("start_time"); + CHART_162_Timing.tab_names.push_back("event_duration"); + CHART_162_Timing.rotate= true; + cout<< "generating traces for scope 1 "<<endl; +//---------------------------- + try{ + // harvesting traces for composite events + Comp_29_30 temp_22; temp_22.harvest(); + // harvesting traces for ROOT events + Comp_9_10 temp_23; temp_23.harvest(); + Comp_25_26 temp_24; temp_24.harvest(); + Comp_35_36 temp_25; temp_25.harvest(); + // harvesting traces for main schema + SCHEMA_Martian_Lander temp_26; temp_26.harvest(); + temp_26.output_JSON(); + gen_end = clock(); + } + catch(int n){ + cout<< "no traces found for schema "<<"Martian_Lander"<<endl; } +//---------------------------- + show_statistics(); +return 0; +} // end main() diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.mp b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.mp new file mode 100644 index 0000000..10b3b3a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.mp @@ -0,0 +1,163 @@ +/* Example 45. Real time system behavior modeling. + Landing system for Martian Lander. + + MP model written by M.Auguston following example 1 and Appendix B from + Farnam Jahanian, Aloysius Ka-Lau Mok + "Safety analysis of timing properties in real-time systems", + IEEE Transactions on Software Engineering + Year: 1986, Volume SE-12, Issue 9, pp.890-904 + +The landing system operates in one of two modes: normal or emergency. +When the system is turned on (an external event), it operates in the +normal mode. While in the normal landing mode, the pilot can control +acceleration, velocity, and position by adjusting the downward thrust +generated by the rocket motor, thus bringing the space vehicle to a +safe landing. This task is continually performed in two phases. + +In phase 1, an I/O device is started to read the acceleration set +by the pilot, and a hardware timer is started which generates a timer +interrupt (i.e., external event TMRINT) after 100 ms. In phase 2, +when the I/O operation is completed (i.e., external event IOINT), +the motor thrust is adjusted appropriately. However, if for some +reason the I/O operation is not done within 100 ms, the timer interrupt +initiates the emergency landing mode. While in the emergency mode, +the altitude and velocity is periodically sampled and a retro-rocket +is automatically fired to bring the vehicle to a safe landing. + +Events and actions: +RACC Starts IO device to read acceleration +STMR Start hardware watchdog timer, this model has two timers +ADJM Adjust motor thrust +TDP Transmit info to display panel +IEM Initiate emergency mode +ETC Other housekeeping function, +IVEL Input measured velocity +IALT Input measured altitude +CKDT Check input data for consistency +RRM Retro-rocket module +START Systems start up, +IOINT I/O device signals completion +TMRINT Timer Interrupt, occurs at least 100 ms after start of STMR + +Action Time in ms +RACC 10 +STMR 10 +ADJM 20 +TDP 10 +IEM 10 +ETC 10 +IVEL 20 +IALT 20 +CKDT 10 +RRM 10 + + run for scope 1 and up. +*/ +SCHEMA Martian_Lander + +ROOT Measure_and_display: + /* runs Timer1 */ + STMR1 + (+ {IVEL, IALT} + CKDT + TDP + +) + stop_Timer1 +; + +ROOT Landing: + START +/* Phase 1 */ + { RACC, + STMR1, /* starts Timer1 */ + STMR2 /* starts Timer2 */ + } + + (+ { ADJM, ETC } +) + +/* Phase 2 */ + (IOINT | /* normal landing */ + + TMRINT /* Timer2 sets interrupt */ + IEM /* initiate emergency mode */ + Emergency_Landing ) + + Lands + {stop_Timer1, stop_Timer2} +; + +Emergency_Landing: + (* fire_RRM *) +; + +ROOT Timer2: +/* responsible for switching on Emergency_landing after 100 msec */ + STMR2 + [ TMRINT ] + stop_Timer2 +; + +Landing, Measure_and_display SHARE ALL STMR1, stop_Timer1; +Landing, Timer2 SHARE ALL STMR2, TMRINT, stop_Timer2; + +/*=== set timing for events, in ms ===*/ +COORDINATE $a: RACC DO SET $a.duration AT LEAST 10; OD; +COORDINATE $a: STMR1 DO SET $a.duration AT LEAST 10; OD; +COORDINATE $a: STMR2 DO SET $a.duration AT LEAST 10; OD; +COORDINATE $a: ADJM DO SET $a.duration AT LEAST 20; OD; +COORDINATE $a: TDP DO SET $a.duration AT LEAST 10; OD; +COORDINATE $a: IEM DO SET $a.duration AT LEAST 10; OD; +COORDINATE $a: ETC DO SET $a.duration AT LEAST 10; OD; +COORDINATE $a: IVEL DO SET $a.duration AT LEAST 20; OD; +COORDINATE $a: IALT DO SET $a.duration AT LEAST 20; OD; +COORDINATE $a: CKDT DO SET $a.duration AT LEAST 10; OD; +COORDINATE $a: fire_RRM DO SET $a.duration AT LEAST 10; OD; + +/*=== arrange trace annotations ===*/ +ADD SAY("Running Timer1") alert Measure_and_display; + +COORDINATE $a: TMRINT DO + SET $a.start AT LEAST 101; + ADD SAY("Emergency landing started at " $a.start) alert $a; +OD; + +COORDINATE $a: Lands DO + ADD SAY("Landing complete at " $a.end) alert $a; +OD; + +/* measurement and display continue till the landing is complete */ +ENSURE FOREACH $a: IVEL (Measure_and_display.start - $a.start) >= 40 -> + EXISTS $b: IVEL $a PRECEDES $b; + +/*====== main timing constraint ======*/ +/* normal landing completes before the deadline 100 msec. */ +ENSURE FOREACH $a: IOINT $a.start <= 100; + +/*===== table for some event timings =====*/ +TABLE Time_table{ TITLE("Event timings"); + TABS string event_name, number start_time, + number event_duration, number end_time; + }; + +CLEAR Time_table; /* prepare for the new event trace */ + +/* pick up timing for some events */ +COORDINATE $x: (IVEL | IALT | TDP | ADJM | fire_RRM | + Emergency_Landing | Lands | stop_Timer1) DO + Time_table <| event_name: SAY($x), + start_time: $x.start.smallest, + event_duration: $x.duration.smallest, + end_time: $x.end.smallest; +OD; + +SHOW Time_table; + +/* show Gantt Chart for some event timing */ +BAR CHART Timing{ TITLE("Event timings"); + FROM Time_table; + X_AXIS event_name; + TABS start_time, event_duration; /* show these values only */ + ROTATE; /* show as Gantt chart */ +}; + +SHOW Timing; diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.temp.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.temp.txt new file mode 100644 index 0000000..02f85b9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.temp.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + Example45_Martian_Lander tree 1 + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.temp2.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.temp2.txt new file mode 100644 index 0000000..1f0d7db --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.temp2.txt @@ -0,0 +1,5 @@ +=========Start of execution ========== + tree + + +========== End of execution ========== diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.tree b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.tree new file mode 100644 index 0000000000000000000000000000000000000000..510ed76f63feacd4323f88eb05a178e2013f0629 GIT binary patch literal 24576 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 literal 0 HcmV?d00001 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.txt b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.txt new file mode 100644 index 0000000..4116642 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.txt @@ -0,0 +1,17 @@ +generating traces for scope 1 +completed Emergency_Landing: 2 traces (0 MARKed) 3 events + average 1.5 ev/trace min 1 max 2 + +completed Measure_and_display: 1 traces (0 MARKed) 7 events + +completed Landing: 3 traces (0 MARKed) 38 events + average 12.6667 ev/trace min 11 max 14 + +completed Timer2: 2 traces (0 MARKed) 7 events + average 3.5 ev/trace min 3 max 4 + +completed Martian_Lander: 3 traces (0 MARKed) 81 events + average 27 ev/trace min 24 max 29 + +Elapsed time 0.013218 sec, Speed: 10289 events/sec + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example01_simple_message_flow.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example01_simple_message_flow.json new file mode 100644 index 0000000..56fc55d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example01_simple_message_flow.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.5, +[ ["Sender","R",1,0,0],["Receiver","R",2,1,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.5, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example01a_unreliable_message_flow.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example01a_unreliable_message_flow.json new file mode 100644 index 0000000..d6375f0 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example01a_unreliable_message_flow.json @@ -0,0 +1,27 @@ +{"traces":[ + +["U", 0.5, +[ ["Sender","R",1,0,0],["Receiver","R",2,1,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["does_not_receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example02_Data_flow.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example02_Data_flow.json new file mode 100644 index 0000000..f432e1e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example02_Data_flow.json @@ -0,0 +1,27 @@ +{"traces":[ + +["U", 0.5, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0] ], + +[[2,1],[2,3]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0],["working","A",6,2,1] ], + +[[2,1],[2,3],[6,5]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["Reader","R",6,2,0] ], + +[[2,1],[2,3],[5,3],[5,6]], +[[5,2]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example03_ATM_withdrawal.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example03_ATM_withdrawal.json new file mode 100644 index 0000000..0385577 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example03_ATM_withdrawal.json @@ -0,0 +1,35 @@ +{"traces":[ + +["U", 0.842105, +[ ["Customer","R",1,0,0],["ATM_system","R",2,1,0],["Data_Base","R",3,2,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0263158, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["get_money","A",5,0,6],["ATM_system","R",6,1,0],["read_card","A",7,1,1],["validate_id","A",8,1,2],["id_successful","A",9,1,3],["check_balance","A",10,1,4],["sufficient_balance","A",11,1,5],["dispense_money","A",12,1,6],["Data_Base","R",13,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[8,13],[9,6],[10,6],[10,13],[11,6],[12,6]], +[[3,2],[3,9],[4,3],[5,4],[5,12],[7,2],[8,7],[9,8],[10,9],[10,8],[10,4],[11,10],[12,11]] +,{"VIEWS":[ ]} +], + +["U", 0.0263158, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["not_sufficient_funds","A",5,0,5],["ATM_system","R",6,1,0],["read_card","A",7,1,1],["validate_id","A",8,1,2],["id_successful","A",9,1,3],["check_balance","A",10,1,4],["unsufficient_balance","A",11,1,5],["Data_Base","R",12,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[8,12],[9,6],[10,6],[10,12],[11,6]], +[[3,2],[3,9],[4,3],[5,4],[5,11],[7,2],[8,7],[9,8],[10,9],[10,8],[10,4],[11,10]] +,{"VIEWS":[ ]} +], + +["U", 0.105263, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,3],["ATM_system","R",4,1,0],["read_card","A",5,1,1],["validate_id","A",6,1,2],["id_failed","A",7,1,3],["Data_Base","R",8,2,0] ], + +[[2,1],[3,1],[5,4],[6,4],[6,8],[7,4]], +[[3,2],[3,7],[5,2],[6,5],[7,6]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example04_Stack_behavior.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example04_Stack_behavior.json new file mode 100644 index 0000000..62cd0d9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example04_Stack_behavior.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.666667, +[ ["Stack","R",1,0,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.333333, +[ ["Stack","R",1,0,0],["push","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example04a_Queue_behavior.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example04a_Queue_behavior.json new file mode 100644 index 0000000..96afc5e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example04a_Queue_behavior.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.666667, +[ ["Queue","R",1,0,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.333333, +[ ["Queue","R",1,0,0],["enqueue","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example05_Car_Race.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example05_Car_Race.json new file mode 100644 index 0000000..bf97d51 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example05_Car_Race.json @@ -0,0 +1,35 @@ +{"traces":[ + +["U", 0.166667, +[ ["All cars have finished","T",10,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["finish","A",4,1,3],["winner","A",5,1,4],["Judge","R",6,2,0],["provide_start_signal","A",7,2,1],["watch","A",8,2,2] ], + +[[2,1],[3,2],[4,2],[4,6],[5,2],[7,6],[8,6]], +[[3,7],[4,3],[4,8],[5,4],[8,7]] +,{"VIEWS":[ ]} +], + +["U", 0.333333, +[ ["0 cars from 1 have finished","T",8,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["break","A",4,1,3],["Judge","R",5,2,0],["provide_start_signal","A",6,2,1],["watch","A",7,2,2] ], + +[[2,1],[3,2],[4,2],[6,5],[7,5]], +[[3,6],[4,3],[7,6]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["All cars have finished","T",11,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["finish","A",5,1,4],["winner","A",6,1,5],["Judge","R",7,2,0],["provide_start_signal","A",8,2,1],["watch","A",9,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,7],[6,2],[8,7],[9,7]], +[[3,8],[4,3],[5,4],[5,9],[6,5],[9,8]] +,{"VIEWS":[ ]} +], + +["U", 0.333333, +[ ["0 cars from 1 have finished","T",9,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["break","A",5,1,4],["Judge","R",6,2,0],["provide_start_signal","A",7,2,1],["watch","A",8,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[7,6],[8,6]], +[[3,7],[4,3],[5,4],[8,7]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example06_Assertion_Checking.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example06_Assertion_Checking.json new file mode 100644 index 0000000..d7756e9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example06_Assertion_Checking.json @@ -0,0 +1,35 @@ +{"traces":[ + +["U", 0.666667, +[ ["TaskA","R",1,0,0],["Connector_A_to_B","R",2,1,0],["TaskB","R",3,2,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["TaskA","R",1,0,0],["A_sends_request_to_B","A",2,0,1],["A_receives_data_from_B","A",3,0,2],["Connector_A_to_B","R",4,1,0],["B_receives_request_from_A","A",6,1,1],["B_sends_data_to_A","A",7,1,2],["TaskB","R",9,2,0] ], + +[[2,1],[2,4],[3,1],[3,4],[6,4],[6,9],[7,4],[7,9]], +[[3,2],[3,7],[6,2],[7,6]] +,{"VIEWS":[ ]} +], + +["M", 0.0833333, +[ ["loss of reception detected","T",12,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["Connector_A_to_B","R",4,2,0],["B_receives_request_from_A","A",6,2,1],["B_sends_data_to_A","A",7,2,2],["TaskB","R",9,3,0] ], + +[[2,1],[2,4],[3,1],[3,4],[6,4],[6,9],[7,4],[7,9]], +[[3,2],[3,7],[6,2],[7,6]] +,{"VIEWS":[ ]} +], + +["M", 0.166667, +[ ["loss of reception detected","T",8,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["Connector_A_to_B","R",4,2,0],["TaskB","R",7,3,0] ], + +[[2,1],[2,4],[3,1],[3,4]], +[[3,2]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example07_Unconstrained_Stack.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example07_Unconstrained_Stack.json new file mode 100644 index 0000000..9b7375e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example07_Unconstrained_Stack.json @@ -0,0 +1,27 @@ +{"traces":[ + +["U", 0.571429, +[ ["Stack","R",1,0,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.285714, +[ ["Stack","R",1,0,0],["push","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["M", 0.142857, +[ ["Stack","R",1,0,0],["pop","A",2,0,1],["bang","A",3,0,2],["This event tries to pop empty Stack","T",4,1,1] ], + +[[2,1],[3,1],[4,1]], +[[2,4],[3,2]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example08_Operational_Process.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example08_Operational_Process.json new file mode 100644 index 0000000..603295a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example08_Operational_Process.json @@ -0,0 +1,11 @@ +{"traces":[ + +["U", 1, +[ ["Command_and_Control","R",1,0,0],["Receive_distress_signal","A",2,0,2],["Pass_mission_information","A",3,0,3],["Acknowledge_search_plan","A",4,0,9],["Receive_relayed_survivor_location_and_situation","A",5,0,19],["On_Scene_Commander","R",6,1,0],["Receive_mission_information","A",7,1,3],["Relay_mission_information","A",8,1,4],["Attempt_contact_with_PID","A",9,1,5],["Assess_environmental_conditions","A",10,1,6],["Receive_environmental_conditions","A",11,1,8],["Provide_search_plan","A",12,1,9],["Communicate_search_plan_and_responsibilities","A",13,1,10],["Scan_environment_for_signs_of_PID","A",14,1,12],["Receive_updates_for_OSC","A",15,1,14],["Receive_PID_location_and_situation","A",16,1,18],["Relay_survivor_location_and_situation","A",17,1,19],["PID","R",18,2,0],["Send_distress_signal","A",19,2,1],["Identify_self_as_PID","A",20,2,15],["Present_for_rescue","A",21,2,17],["Physical_Environment","R",22,3,0],["Provide_environmental_conditions","A",23,3,7],["SAR_Assets","R",24,4,0],["Receive_relayed_mission_information","A",25,4,5],["Confirm_search_plan_and_responsibilities","A",26,4,11],["Provide_updates_to_OSC","A",28,4,13],["Spot_object_of_interest","A",29,4,14],["Maneuver_to_rescue_PID","A",30,4,16],["Notify_OSC_of_PID_location_and_situation","A",31,4,17] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[9,6],[10,6],[11,6],[12,6],[13,6],[14,6],[14,24],[15,6],[16,6],[17,6],[19,18],[20,18],[21,18],[23,22],[25,24],[26,24],[28,24],[29,24],[30,24],[31,24]], +[[2,19],[3,2],[4,3],[4,12],[5,4],[5,17],[7,3],[8,7],[9,8],[10,9],[11,10],[11,23],[12,11],[13,12],[13,4],[14,13],[14,26],[15,14],[15,28],[16,15],[16,31],[17,16],[20,19],[20,29],[21,20],[21,30],[23,10],[25,8],[26,25],[26,13],[28,14],[29,28],[30,29],[30,20],[31,30]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example09_Employee_Employer.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example09_Employee_Employer.json new file mode 100644 index 0000000..c4b0c22 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example09_Employee_Employer.json @@ -0,0 +1,11 @@ +{"traces":[ + +["U", 1, +[ ["Employee","R",1,0,0],["SendArrivalDate","A",2,0,1],["MedicalCheck","A",3,0,2],["ReadyToWork","A",4,0,3],["Employer","R",5,1,0],["EmployeeArrival","A",6,1,1],["Fill_HR_DB","A",7,1,2],["ProvideComputer","A",10,1,3],["ProvideOffice","A",9,2,1] ], + +[[2,1],[3,1],[3,5],[4,1],[4,5],[6,5],[7,5],[9,5],[10,5]], +[[3,2],[3,7],[4,3],[4,10],[4,3],[6,2],[7,6],[9,6],[10,9],[10,7]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example10_Pipe_Filter.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example10_Pipe_Filter.json new file mode 100644 index 0000000..9e2b3d9 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example10_Pipe_Filter.json @@ -0,0 +1,35 @@ +{"traces":[ + +["U", 0.5, +[ ["Producer","R",1,0,0],["Filter1","R",2,1,0],["Filter2","R",3,2,0],["Consumer","R",4,3,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["M", 0.25, +[ ["1 messages did not reach Consumer","T",8,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["Filter1","R",3,2,0],["receive","A",4,2,1],["some messages have been lost in Filter1","T",5,2,2],["Filter2","R",6,3,0],["Consumer","R",7,4,0] ], + +[[2,1],[4,3],[5,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["M", 0.125, +[ ["1 messages did not reach Consumer","T",10,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["Filter1","R",3,2,0],["receive","A",4,2,1],["send","A",5,2,2],["Filter2","R",6,3,0],["receive","A",7,3,2],["some messages have been lost in Filter2","T",8,3,3],["Consumer","R",9,4,0] ], + +[[2,1],[4,3],[5,3],[7,6],[8,6]], +[[4,2],[5,4],[7,5]] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ ["Producer","R",1,0,0],["send","A",2,0,1],["Filter1","R",3,1,0],["receive","A",4,1,1],["send","A",5,1,2],["Filter2","R",6,2,0],["receive","A",7,2,2],["send","A",8,2,3],["Consumer","R",9,3,0],["receive","A",10,3,3] ], + +[[2,1],[4,3],[5,3],[7,6],[8,6],[10,9]], +[[4,2],[5,4],[7,5],[8,7],[10,8]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example11_Publish_Subscribe.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example11_Publish_Subscribe.json new file mode 100644 index 0000000..7813f9a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example11_Publish_Subscribe.json @@ -0,0 +1,11 @@ +{"traces":[ + +["U", 1, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Unsubscribe","A",4,0,4],["Subscribers","R",5,1,0],["Client","C",6,1,1],["Receive","A",8,1,3] ], + +[[2,1],[2,6],[3,1],[4,1],[4,6],[6,5],[8,6]], +[[3,2],[4,3],[4,8],[8,2],[8,3]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example12_network_topology_ring.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example12_network_topology_ring.json new file mode 100644 index 0000000..da8a613 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example12_network_topology_ring.json @@ -0,0 +1,13 @@ +{"traces":[ + +["U", 1, +[ ["Ring","R",1,0,0],["Node","C",2,0,1] ], + +[[2,1]], +[], +["left_neighbor_of", [2,2]], +["right_neighbor_of", [2,2]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example13_FiniteStateDiagram.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example13_FiniteStateDiagram.json new file mode 100644 index 0000000..01d41ed --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example13_FiniteStateDiagram.json @@ -0,0 +1,35 @@ +{"traces":[ + +["U", 0.333333, +[ ["The path: ","T",23,0,0],["Start","T",24,0,1],["S1","T",25,0,2],["a","T",26,0,3],["S3","T",27,0,4],["b","T",28,0,5],["S4","T",29,0,6],["a","T",30,0,7],["S2","T",31,0,8],["End","T",32,0,9],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_behavior","R",6,2,0],["S4_to_S2","C",7,2,6],["a","A",8,2,7],["S2","A",9,2,8],["End","A",10,2,9],["S3_behavior","R",11,3,0],["S3","A",14,3,4],["S3_to_S4","C",15,3,5],["b","A",16,3,6],["S4_behavior","R",17,4,0],["S4","A",20,4,5] ], + +[[2,1],[3,1],[4,1],[4,11],[5,4],[7,6],[7,17],[8,7],[9,6],[10,6],[14,11],[15,11],[15,17],[16,15],[20,17]], +[[3,2],[4,3],[7,20],[9,7],[10,9],[14,4],[15,14],[20,15]] +,{"VIEWS":[ ]} +], + +["U", 0.333333, +[ ["The path: ","T",26,0,0],["Start","T",27,0,1],["S1","T",28,0,2],["a","T",29,0,3],["S3","T",30,0,4],["a","T",31,0,5],["S3","T",32,0,6],["b","T",33,0,7],["S4","T",34,0,8],["a","T",35,0,9],["S2","T",36,0,10],["End","T",37,0,11],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_behavior","R",6,2,0],["S4_to_S2","C",7,2,9],["a","A",8,2,10],["S2","A",9,2,11],["End","A",10,2,12],["S3_behavior","R",11,3,0],["S3","A",14,3,4],["S3_to_S3","C",15,3,5],["a","A",16,3,6],["S3","A",17,3,7],["S3_to_S4","C",18,3,8],["b","A",19,3,9],["S4_behavior","R",20,4,0],["S4","A",23,4,8] ], + +[[2,1],[3,1],[4,1],[4,11],[5,4],[7,6],[7,20],[8,7],[9,6],[10,6],[14,11],[15,11],[16,15],[17,11],[18,11],[18,20],[19,18],[23,20]], +[[3,2],[4,3],[7,23],[9,7],[10,9],[14,4],[15,14],[17,15],[18,17],[23,18]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["The path: ","T",18,0,0],["Start","T",19,0,1],["S1","T",20,0,2],["a","T",21,0,3],["S4","T",22,0,4],["a","T",23,0,5],["S2","T",24,0,6],["End","T",25,0,7],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["a","A",5,1,4],["S2_behavior","R",6,2,0],["S4_to_S2","C",7,2,5],["a","A",8,2,6],["S2","A",9,2,7],["End","A",10,2,8],["S3_behavior","R",11,3,0],["S4_behavior","R",12,4,0],["S4","A",15,4,4] ], + +[[2,1],[3,1],[4,1],[4,12],[5,4],[7,6],[7,12],[8,7],[9,6],[10,6],[15,12]], +[[3,2],[4,3],[7,15],[9,7],[10,9],[15,4]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["The path: ","T",18,0,0],["Start","T",19,0,1],["S1","T",20,0,2],["b","T",21,0,3],["S4","T",22,0,4],["a","T",23,0,5],["S2","T",24,0,6],["End","T",25,0,7],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["b","A",5,1,4],["S2_behavior","R",6,2,0],["S4_to_S2","C",7,2,5],["a","A",8,2,6],["S2","A",9,2,7],["End","A",10,2,8],["S3_behavior","R",11,3,0],["S4_behavior","R",12,4,0],["S4","A",15,4,4] ], + +[[2,1],[3,1],[4,1],[4,12],[5,4],[7,6],[7,12],[8,7],[9,6],[10,6],[15,12]], +[[3,2],[4,3],[7,15],[9,7],[10,9],[15,4]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example15_Petri_net.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example15_Petri_net.json new file mode 100644 index 0000000..3b71bfa --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example15_Petri_net.json @@ -0,0 +1,23 @@ +{"traces":[ + +["U", 0.941176, +[ ["At the end of simulation place P1_behavior has 1 tokens","T",11,0,0],["At the end of simulation place P2_behavior has 0 tokens","T",12,0,1],["At the end of simulation place P3_behavior has 2 tokens","T",13,0,2],["At the end of simulation place P4_behavior has 1 tokens","T",14,0,3],["P1_behavior","R",1,1,0],["get_token","A",2,1,1],["T1_behavior","R",3,2,0],["P2_behavior","R",4,3,0],["P3_behavior","R",5,4,0],["get_token","A",6,4,1],["get_token","A",7,4,2],["T2_behavior","R",8,5,0],["P4_behavior","R",9,6,0],["get_token","A",10,6,1] ], + +[[2,1],[6,5],[7,5],[10,9]], +[[7,6]] +,{"VIEWS":[ ]} +], + +["U", 0.0588235, +[ ["At the end of simulation place P1_behavior has 0 tokens","T",30,0,0],["At the end of simulation place P2_behavior has 0 tokens","T",31,0,1],["At the end of simulation place P3_behavior has 2 tokens","T",32,0,2],["At the end of simulation place P4_behavior has 1 tokens","T",33,0,3],["P1_behavior","R",1,1,0],["get_token","A",2,1,1],["P1_sends_to_T1","C",3,1,2],["send_token","A",4,1,3],["T1_behavior","R",5,2,0],["T1_receives_from_P1","A",6,2,2],["T1_fires","A",7,2,3],["T1_sends_to_P2","C",8,2,4],["send_token","A",9,2,5],["T1_sends_to_P3","C",10,3,3],["send_token","A",11,3,4],["P2_behavior","R",12,4,0],["P2_receives_from_T1","C",13,4,5],["get_token","A",14,4,6],["P2_sends_to_T2","C",15,4,7],["send_token","A",16,4,8],["P3_behavior","R",17,5,0],["get_token","A",18,5,1],["get_token","A",19,5,2],["P3_receives_from_T1","C",20,5,4],["get_token","A",21,5,5],["P3_sends_to_T2","C",22,5,6],["send_token","A",23,5,7],["T2_behavior","R",24,6,0],["T2_receives_from_P2","A",25,6,8],["T2_fires","A",27,6,9],["T2_receives_from_P3","A",26,7,7],["P4_behavior","R",28,8,0],["get_token","A",29,8,1] ], + +[[2,1],[3,1],[4,3],[6,5],[7,5],[8,5],[9,8],[10,5],[11,10],[13,12],[14,13],[15,12],[16,15],[18,17],[19,17],[20,17],[21,20],[22,17],[23,22],[25,24],[26,24],[27,24],[29,28]], +[[3,2],[6,3],[7,6],[8,7],[10,7],[13,8],[15,13],[19,18],[20,19],[20,10],[22,20],[25,15],[26,22],[27,25],[27,26]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U", +{"GRAPH":["Petri net diagram", + [ [0, "P1_behavior"] ,[1, "Start"] ,[2, "T1_behavior"] ,[3, "P2_behavior"] ,[4, "P3_behavior"] ,[5, "T2_behavior"] ,[6, "P4_behavior"] ], + [ [0,2,"1"],[1,0,"initial 1 tokens"],[1,4,"initial 2 tokens"],[1,6,"initial 1 tokens"],[2,3,"1"],[2,4,"1"],[3,5,"1"],[4,5,"1"]], + [] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example16_software_spiral_process.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example16_software_spiral_process.json new file mode 100644 index 0000000..197273d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example16_software_spiral_process.json @@ -0,0 +1,27 @@ +{"traces":[ + +["U", 0.666667, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_satisfied","A",4,0,5],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Spiral_process","R",5,1,0],["Initial_requirements","A",7,1,2],["Initial_design","C",8,1,3],["Architecture_design","A",9,1,4],["Detailed_design","A",10,1,6],["Coding","A",11,1,7],["Testing","A",12,1,8],["Delivery_of_the_system","A",15,1,9],["Architect","R",16,2,0],["Developers","R",21,3,0] ], + +[[2,1],[2,5],[2,16],[3,1],[3,5],[3,16],[4,1],[4,5],[7,5],[7,16],[8,5],[9,8],[9,16],[10,8],[10,21],[11,8],[11,21],[12,8],[12,21],[15,5]], +[[3,2],[3,8],[3,9],[4,3],[7,2],[8,7],[9,7],[10,9],[11,10],[12,11],[15,4]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_not_satisfied","A",4,0,10],["Stakeholders_are_satisfied","A",6,0,12],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Prototype_demonstration_to_stakeholders","A",5,1,12],["Spiral_process","R",7,1,0],["Initial_requirements","A",9,1,2],["Initial_design","C",10,1,3],["Architecture_design","A",11,1,4],["Detailed_design","A",12,1,6],["Coding","A",13,1,7],["Testing","A",14,1,8],["One_iteration","C",16,1,9],["Adjust_requirements","A",18,1,10],["Redesign","C",19,1,11],["Detailed_redesign","A",20,1,13],["Coding","A",21,1,14],["Testing","A",22,1,15],["Delivery_of_the_system","A",25,1,16],["Architect","R",26,2,0],["Developers","R",33,3,0] ], + +[[2,1],[2,7],[2,26],[3,1],[3,7],[3,26],[4,1],[4,16],[5,1],[5,16],[5,26],[6,1],[6,7],[9,7],[9,26],[10,7],[11,10],[11,26],[12,10],[12,33],[13,10],[13,33],[14,10],[14,33],[16,7],[18,16],[18,26],[19,16],[20,19],[20,33],[21,19],[21,33],[22,19],[22,33],[25,7]], +[[3,2],[3,10],[3,11],[4,3],[5,4],[5,19],[5,18],[6,5],[6,16],[9,2],[10,9],[11,9],[12,11],[13,12],[14,13],[16,3],[18,4],[18,3],[19,18],[20,14],[21,20],[22,21],[25,6]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_not_satisfied","A",4,0,10],["Stakeholders_are_satisfied","A",6,0,13],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Prototype_demonstration_to_stakeholders","A",5,1,13],["Spiral_process","R",7,1,0],["Initial_requirements","A",9,1,2],["Initial_design","C",10,1,3],["Architecture_design","A",11,1,4],["Detailed_design","A",12,1,6],["Coding","A",13,1,7],["Testing","A",14,1,8],["One_iteration","C",16,1,9],["Adjust_requirements","A",18,1,10],["Redesign","C",19,1,11],["Architecture_redesign","A",20,1,12],["Detailed_redesign","A",21,1,14],["Coding","A",22,1,15],["Testing","A",23,1,16],["Delivery_of_the_system","A",26,1,17],["Architect","R",27,2,0],["Developers","R",35,3,0] ], + +[[2,1],[2,7],[2,27],[3,1],[3,7],[3,27],[4,1],[4,16],[5,1],[5,16],[5,27],[6,1],[6,7],[9,7],[9,27],[10,7],[11,10],[11,27],[12,10],[12,35],[13,10],[13,35],[14,10],[14,35],[16,7],[18,16],[18,27],[19,16],[20,19],[20,27],[21,19],[21,35],[22,19],[22,35],[23,19],[23,35],[26,7]], +[[3,2],[3,10],[3,11],[4,3],[5,4],[5,19],[5,20],[6,5],[6,16],[9,2],[10,9],[11,9],[12,11],[13,12],[14,13],[16,3],[18,4],[18,3],[19,18],[20,18],[21,20],[21,14],[22,21],[23,22],[26,6]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example17_Dining_Philosophers.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example17_Dining_Philosophers.json new file mode 100644 index 0000000..e69de29 diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example18_Workflow_pattern.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example18_Workflow_pattern.json new file mode 100644 index 0000000..5b4c632 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example18_Workflow_pattern.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.5, +[ ["Phase1","R",1,0,0],["check_breathing","A",2,0,1],["check_pulse","A",3,1,1],["finish_first","A",4,1,2],["Triage","R",5,2,0],["identify_the_patient","A",6,2,2],["record_assessment_findings","A",7,2,3],["identify_the_priority","A",8,2,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[8,5]], +[[4,3],[6,4],[7,6],[8,7]] +,{"VIEWS":[ ]} +], + +["U", 0.5, +[ ["Phase1","R",1,0,0],["check_breathing","A",2,0,1],["finish_first","A",3,0,2],["check_pulse","A",4,1,1],["Triage","R",5,2,0],["identify_the_patient","A",6,2,3],["record_assessment_findings","A",7,2,4],["identify_the_priority","A",8,2,5] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[8,5]], +[[3,2],[6,3],[7,6],[8,7]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example19_Consumers_Suppliers.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example19_Consumers_Suppliers.json new file mode 100644 index 0000000..98b4b9a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example19_Consumers_Suppliers.json @@ -0,0 +1,22 @@ +{"traces":[ + +["U", 0.5, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Supply_Office","R",5,1,0],["Receive_order_and_buy","A",6,1,2],["Producers","R",7,2,0],["Producer","C",8,2,1],["Sell","A",9,2,2] ], + +[[2,1],[3,2],[4,2],[6,5],[8,7],[9,8]], +[[4,3],[4,9],[6,3],[9,6]], +["Is_supplier_for", [8,2]], +["related_to", [3,6],[6,9],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.5, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,3],["Supply_Office","R",5,1,0],["Receive_order_and_buy","A",6,1,2],["Producers","R",7,2,0],["Producer","C",8,2,1] ], + +[[2,1],[3,2],[4,2],[4,8],[6,5],[8,7]], +[[4,3],[4,6],[6,3]], +["related_to", [3,6],[6,4]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example20_MP_model__reuse.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example20_MP_model__reuse.json new file mode 100644 index 0000000..76bcb84 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example20_MP_model__reuse.json @@ -0,0 +1,27 @@ +{"traces":[ + +["U", 0.333333, +[ ["Data_Base","R",1,0,0],["check_ID","A",2,0,2],["Authentication_Service","R",3,1,0],["request_ID","C",4,1,1],["cancel_access_request","A",7,1,3],["creds_invalid","A",6,2,3],["Requester","R",8,2,0],["request_access","A",9,2,1],["provide_ID","A",10,2,2],["abandon_access_request","A",12,2,4],["User","R",13,3,0],["login_fails","A",14,3,1] ], + +[[2,1],[2,4],[4,3],[6,3],[6,8],[6,13],[7,3],[9,8],[9,13],[10,8],[10,13],[12,8],[12,13],[14,13]], +[[4,9],[6,4],[6,10],[7,6],[10,9],[10,4],[12,6]] +,{"VIEWS":[ ]} +], + +["U", 0.333333, +[ ["Data_Base","R",1,0,0],["check_ID","A",2,0,2],["Authentication_Service","R",3,1,0],["request_ID","C",4,1,1],["creds_valid","A",6,2,3],["access_granted","A",7,2,4],["Requester","R",8,2,0],["request_access","A",9,2,1],["provide_ID","A",10,2,2],["User","R",13,3,0],["login_succeeds","A",14,3,4],["work","A",15,3,5] ], + +[[2,1],[2,4],[4,3],[6,3],[6,8],[6,13],[7,3],[7,8],[7,13],[9,8],[9,13],[10,8],[10,13],[14,13],[15,13]], +[[4,9],[6,4],[6,10],[7,6],[10,9],[10,4],[14,7],[15,14]] +,{"VIEWS":[ ]} +], + +["U", 0.333333, +[ ["Data_Base","R",1,0,0],["check_ID","A",2,0,2],["Authentication_Service","R",3,1,0],["request_ID","C",4,1,1],["creds_valid","A",6,2,3],["access_granted","A",7,2,4],["Requester","R",8,2,0],["request_access","A",9,2,1],["provide_ID","A",10,2,2],["User","R",13,3,0],["login_succeeds","A",14,3,4],["cancel","A",15,3,5] ], + +[[2,1],[2,4],[4,3],[6,3],[6,8],[6,13],[7,3],[7,8],[7,13],[9,8],[9,13],[10,8],[10,13],[14,13],[15,13]], +[[4,9],[6,4],[6,10],[7,6],[10,9],[10,4],[14,7],[15,14]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example21_compiler1.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example21_compiler1.json new file mode 100644 index 0000000..a537d80 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example21_compiler1.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.111111, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Token_list","R",12,2,0],["get_token","A",14,2,5],["Parser","R",15,3,0],["Shift_Reduce","C",16,3,1],["Push","A",17,3,2],["Reduce","C",19,3,5],["Pop","A",20,3,6],["Push","A",21,3,7],["Put_node","A",22,3,8],["Reduce","C",23,3,9],["Pop","A",24,3,10],["Push","A",25,3,11],["Put_node","A",26,3,12],["Parsing_complete","A",27,3,13],["Stack","C",28,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,12],[14,12],[14,16],[16,15],[17,16],[17,28],[19,16],[20,19],[20,28],[21,19],[21,28],[22,16],[23,16],[24,23],[24,28],[25,23],[25,28],[26,16],[27,16],[28,15]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[14,10],[14,17],[19,14],[20,17],[21,20],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.888889, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Token_list","R",12,2,0],["get_token","A",14,2,5],["Parser","R",15,3,0],["Shift_Reduce","C",16,3,1],["Push","A",17,3,2],["Reduce","C",19,3,5],["Pop","A",20,3,6],["Push","A",21,3,7],["Put_node","A",22,3,8],["Report_syntax_error","A",23,3,9],["Stack","C",24,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,12],[14,12],[14,16],[16,15],[17,16],[17,24],[19,16],[20,19],[20,24],[21,19],[21,24],[22,16],[23,16],[24,15]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[14,10],[14,17],[19,14],[20,17],[21,20],[22,19],[23,22]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example22_compiler2.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example22_compiler2.json new file mode 100644 index 0000000..2fd3fc8 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example22_compiler2.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.111111, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Parser","R",12,2,0],["Shift_Reduce","C",13,2,1],["Push","A",14,2,2],["get_token","A",15,2,5],["Reduce","C",16,2,6],["Pop","A",17,2,7],["Push","A",18,2,8],["Put_node","A",19,2,9],["Reduce","C",20,2,10],["Pop","A",21,2,11],["Push","A",22,2,12],["Put_node","A",23,2,13],["Parsing_complete","A",24,2,14],["Stack","C",25,3,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[13,12],[14,13],[14,25],[15,13],[16,13],[17,16],[17,25],[18,16],[18,25],[19,13],[20,13],[21,20],[21,25],[22,20],[22,25],[23,13],[24,13],[25,12]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[15,14],[15,10],[16,15],[17,14],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23]] +,{"VIEWS":[ ]} +], + +["U", 0.888889, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Parser","R",12,2,0],["Shift_Reduce","C",13,2,1],["Push","A",14,2,2],["get_token","A",15,2,5],["Reduce","C",16,2,6],["Pop","A",17,2,7],["Push","A",18,2,8],["Put_node","A",19,2,9],["Report_syntax_error","A",20,2,10],["Stack","C",21,3,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[13,12],[14,13],[14,21],[15,13],[16,13],[17,16],[17,21],[18,16],[18,21],[19,13],[20,13],[21,12]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[15,14],[15,10],[16,15],[17,14],[18,17],[19,16],[20,19]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example23_number_attributes.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example23_number_attributes.json new file mode 100644 index 0000000..33e6757 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example23_number_attributes.json @@ -0,0 +1,75 @@ +{"traces":[ + +["U", 0.25, +[ [" Trace #1","T",4,0,0],["Bought 0 items. Total purchase cost is: 0 average cost: -nan","T",5,0,1],["Buyer","R",1,1,0],["Shop_A","R",2,2,0],["Shop_B","R",3,3,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ [" Trace #2","T",6,0,0],["Bought 1 items. Total purchase cost is: 22 average cost: 22","T",7,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Shop_A","R",3,2,0],["Shop_B","R",4,3,0],["Sell_Item_2","A",5,3,2] ], + +[[2,1],[5,4]], +[[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ [" Trace #3","T",6,0,0],["Bought 1 items. Total purchase cost is: 30 average cost: 30","T",7,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Shop_A","R",3,2,0],["Shop_B","R",4,3,0],["Sell_Item_3","A",5,3,2] ], + +[[2,1],[5,4]], +[[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ [" Trace #4","T",6,0,0],["Bought 1 items. Total purchase cost is: 8 average cost: 8","T",7,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Shop_A","R",3,2,0],["Sell_Item_1","A",4,2,1],["Shop_B","R",5,3,0] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ [" Trace #5","T",6,0,0],["Bought 1 items. Total purchase cost is: 20 average cost: 20","T",7,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Shop_A","R",3,2,0],["Sell_Item_2","A",4,2,1],["Shop_B","R",5,3,0] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Trace #6","T",8,0,0],["Bought 2 items. Total purchase cost is: 30 average cost: 15","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_1","A",5,2,1],["Shop_B","R",6,3,0],["Sell_Item_2","A",7,3,3] ], + +[[2,1],[3,1],[5,4],[7,6]], +[[3,2],[5,2],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Trace #7","T",8,0,0],["Bought 2 items. Total purchase cost is: 38 average cost: 19","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_1","A",5,2,1],["Shop_B","R",6,3,0],["Sell_Item_3","A",7,3,3] ], + +[[2,1],[3,1],[5,4],[7,6]], +[[3,2],[5,2],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Trace #8","T",8,0,0],["Bought 2 items. Total purchase cost is: 42 average cost: 21","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_2","A",5,2,1],["Shop_B","R",6,3,0],["Sell_Item_2","A",7,3,3] ], + +[[2,1],[3,1],[5,4],[7,6]], +[[3,2],[5,2],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Trace #9","T",8,0,0],["Bought 2 items. Total purchase cost is: 50 average cost: 25","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_2","A",5,2,1],["Shop_B","R",6,3,0],["Sell_Item_3","A",7,3,3] ], + +[[2,1],[3,1],[5,4],[7,6]], +[[3,2],[5,2],[7,3]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example24_Bayesian_probability.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example24_Bayesian_probability.json new file mode 100644 index 0000000..0430a1d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example24_Bayesian_probability.json @@ -0,0 +1,59 @@ +{"traces":[ + +["U", 0.142857, +[ ["Probability of result RRR was 0.1","T",6,0,0],["Selection","R",1,1,0],["Select_Red","A",2,1,1],["Select_Red","A",3,1,2],["Select_Red","A",4,1,3],["RRR","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RRG was 0.2","T",6,0,0],["Selection","R",1,1,0],["Select_Red","A",2,1,1],["Select_Red","A",3,1,2],["Select_Green","A",4,1,3],["RRG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RRG was 0.2","T",6,0,0],["Selection","R",1,1,0],["Select_Red","A",2,1,1],["Select_Green","A",3,1,2],["Select_Red","A",4,1,3],["RRG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RGG was 0.1","T",6,0,0],["Selection","R",1,1,0],["Select_Red","A",2,1,1],["Select_Green","A",3,1,2],["Select_Green","A",4,1,3],["RGG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RRG was 0.2","T",6,0,0],["Selection","R",1,1,0],["Select_Green","A",2,1,1],["Select_Red","A",3,1,2],["Select_Red","A",4,1,3],["RRG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RGG was 0.1","T",6,0,0],["Selection","R",1,1,0],["Select_Green","A",2,1,1],["Select_Red","A",3,1,2],["Select_Green","A",4,1,3],["RGG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RGG was 0.1","T",6,0,0],["Selection","R",1,1,0],["Select_Green","A",2,1,1],["Select_Green","A",3,1,2],["Select_Red","A",4,1,3],["RGG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example25_interval_attributes.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example25_interval_attributes.json new file mode 100644 index 0000000..b6ac592 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example25_interval_attributes.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.5, +[ ["selected 1 items","T",4,0,0],["backpack weight is within interval [2 .. 5]","T",5,0,1],["Backpack","R",1,1,0],["item1","C",2,1,1],["selected item1 with weight [2 .. 5]","T",3,1,2] ], + +[[2,1],[3,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.5, +[ ["selected 1 items","T",4,0,0],["backpack weight is within interval [10 .. 16]","T",5,0,1],["Backpack","R",1,1,0],["item2","C",2,1,1],["selected item2 with weight [10 .. 16]","T",3,1,2] ], + +[[2,1],[3,1]], +[] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example26_timing_attributes.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example26_timing_attributes.json new file mode 100644 index 0000000..d30766e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example26_timing_attributes.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.5, +[ [" Worker start 0 duration 1 end 1","T",3,0,0],[" Work start 0 duration 1 end 1","T",4,0,1],[" Delay created by 0 visitors is 0","T",5,0,2],["Worker","R",1,1,0],["Work","C",2,1,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.5, +[ [" Worker start 0 duration [2 .. 3] end [2 .. 3]","T",4,0,0],[" Get_distracted start 0 duration [2 .. 3] end [2 .. 3]","T",5,0,1],[" Visitor start 0 duration [2 .. 3] end [2 .. 3]","T",6,0,2],[" Delay created by 1 visitors is [2 .. 3]","T",7,0,3],["Worker","R",1,1,0],["Get_distracted","C",2,1,1],["Visitor","C",3,1,2] ], + +[[2,1],[3,2]], +[] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example27_Railroad_Crossing.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example27_Railroad_Crossing.json new file mode 100644 index 0000000..4013056 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example27_Railroad_Crossing.json @@ -0,0 +1,11 @@ +{"traces":[ + +["U", 1, +[ ["Bar moved down by 5","T",12,0,0],["Train starts go through crossing at 5","T",13,0,1],["Train ends go through crossing at 15","T",14,0,2],["Bar starts go up at 15","T",15,0,3],["Crossing was successfully closed","T",16,0,4],["Train","R",1,1,0],["Enter_Restricted_Region","A",2,1,1],["Goes_through_Restricted_Region","A",3,1,2],["Enter_Crossing_Region","A",4,1,3],["Goes_through_Crossing_Region","C",5,1,4],["Leaves_Crossing_Region","A",6,1,5],["Crossing","R",7,2,0],["Move_Down","C",8,2,1],["Down","A",9,2,2],["Move_Up","C",10,2,5],["Up","A",11,2,6] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[8,7],[9,7],[10,7],[11,7]], +[[3,2],[4,3],[4,9],[5,4],[6,5],[8,2],[9,8],[10,9],[10,6],[11,10]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example28_MP_model_of_MP_architecture.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example28_MP_model_of_MP_architecture.json new file mode 100644 index 0000000..0fbcab2 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example28_MP_model_of_MP_architecture.json @@ -0,0 +1,135 @@ +{"traces":[ + +["U", 0.0625, +[ [" Scope 1 Trace #1","T",26,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["end_of_session","A",5,1,11],["MP_code_editor","R",6,2,0],["MP_GUI","R",8,3,0],["input_MP_code","A",10,3,3],["receive_json_file","A",11,3,8],["visualize_trace","A",12,3,9],["MP_parser","R",13,4,0],["perform_syntax_analysis","A",15,4,3],["write_abstract_syntax_tree","A",16,4,4],["Abstract_syntax_tree","R",17,5,0],["read_abstract_syntax_tree","A",19,5,4],["Trace_generator","R",20,6,0],["generate_Cpp_file","A",22,6,4],["run_Cpp_compiler","A",23,6,5],["run_executable","A",24,6,6],["produce_json_file","A",25,6,7] ], + +[[2,1],[2,6],[3,1],[3,8],[4,1],[5,1],[10,8],[10,13],[11,8],[12,8],[15,13],[16,13],[16,17],[19,17],[19,20],[22,20],[23,20],[24,20],[25,20]], +[[3,2],[4,3],[4,12],[5,4],[10,3],[11,10],[11,25],[12,11],[15,10],[16,15],[19,16],[22,19],[23,22],[24,23],[25,24]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #2","T",28,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["end_of_session","A",6,1,12],["MP_code_editor","R",7,2,0],["MP_GUI","R",9,3,0],["input_MP_code","A",11,3,3],["receive_json_file","A",12,3,8],["visualize_trace","A",13,3,9],["MP_parser","R",15,4,0],["perform_syntax_analysis","A",17,4,3],["write_abstract_syntax_tree","A",18,4,4],["Abstract_syntax_tree","R",19,5,0],["read_abstract_syntax_tree","A",21,5,4],["Trace_generator","R",22,6,0],["generate_Cpp_file","A",24,6,4],["run_Cpp_compiler","A",25,6,5],["run_executable","A",26,6,6],["produce_json_file","A",27,6,7] ], + +[[2,1],[2,7],[3,1],[3,9],[4,1],[5,1],[5,9],[6,1],[11,9],[11,15],[12,9],[13,9],[17,15],[18,15],[18,19],[21,19],[21,22],[24,22],[25,22],[26,22],[27,22]], +[[3,2],[4,3],[4,13],[5,4],[5,13],[6,5],[11,3],[12,11],[12,27],[13,12],[17,11],[18,17],[21,18],[24,21],[25,24],[26,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #3","T",18,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["end_of_session","A",5,1,5],["MP_code_editor","R",6,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",8,4,0],["input_MP_code","A",10,4,3],["MP_parser","R",12,5,0],["perform_syntax_analysis","A",14,5,3],["Abstract_syntax_tree","R",16,6,0],["Trace_generator","R",17,7,0] ], + +[[2,1],[2,6],[3,1],[3,8],[4,1],[4,12],[4,8],[5,1],[10,8],[10,12],[14,12]], +[[3,2],[4,3],[4,14],[4,10],[5,4],[10,3],[14,10]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #4","T",20,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["end_of_session","A",6,1,6],["MP_code_editor","R",7,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",9,4,0],["input_MP_code","A",11,4,3],["MP_parser","R",14,5,0],["perform_syntax_analysis","A",16,5,3],["Abstract_syntax_tree","R",18,6,0],["Trace_generator","R",19,7,0] ], + +[[2,1],[2,7],[3,1],[3,9],[4,1],[4,14],[4,9],[5,1],[5,9],[6,1],[11,9],[11,14],[16,14]], +[[3,2],[4,3],[4,16],[4,11],[5,4],[6,5],[11,3],[16,11]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #5","T",26,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["end_of_session","A",5,1,11],["MP_code_editor","R",6,2,0],["MP_GUI","R",8,3,0],["input_MP_code","A",10,3,3],["receive_json_file","A",11,3,8],["visualize_trace","A",12,3,9],["MP_parser","R",13,4,0],["perform_syntax_analysis","A",15,4,3],["write_abstract_syntax_tree","A",16,4,4],["Abstract_syntax_tree","R",17,5,0],["read_abstract_syntax_tree","A",19,5,4],["Trace_generator","R",20,6,0],["generate_Cpp_file","A",22,6,4],["run_Cpp_compiler","A",23,6,5],["run_executable","A",24,6,6],["produce_json_file","A",25,6,7] ], + +[[2,1],[2,6],[3,1],[3,8],[4,1],[5,1],[10,8],[10,13],[11,8],[12,8],[15,13],[16,13],[16,17],[19,17],[19,20],[22,20],[23,20],[24,20],[25,20]], +[[3,2],[4,3],[4,12],[5,4],[10,3],[11,10],[11,25],[12,11],[15,10],[16,15],[19,16],[22,19],[23,22],[24,23],[25,24]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #6","T",28,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["end_of_session","A",6,1,12],["MP_code_editor","R",7,2,0],["MP_GUI","R",9,3,0],["input_MP_code","A",11,3,3],["receive_json_file","A",12,3,8],["visualize_trace","A",13,3,9],["MP_parser","R",15,4,0],["perform_syntax_analysis","A",17,4,3],["write_abstract_syntax_tree","A",18,4,4],["Abstract_syntax_tree","R",19,5,0],["read_abstract_syntax_tree","A",21,5,4],["Trace_generator","R",22,6,0],["generate_Cpp_file","A",24,6,4],["run_Cpp_compiler","A",25,6,5],["run_executable","A",26,6,6],["produce_json_file","A",27,6,7] ], + +[[2,1],[2,7],[3,1],[3,9],[4,1],[5,1],[5,9],[6,1],[11,9],[11,15],[12,9],[13,9],[17,15],[18,15],[18,19],[21,19],[21,22],[24,22],[25,22],[26,22],[27,22]], +[[3,2],[4,3],[4,13],[5,4],[5,13],[6,5],[11,3],[12,11],[12,27],[13,12],[17,11],[18,17],[21,18],[24,21],[25,24],[26,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #7","T",18,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["end_of_session","A",5,1,5],["MP_code_editor","R",6,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",8,4,0],["input_MP_code","A",10,4,3],["MP_parser","R",12,5,0],["perform_syntax_analysis","A",14,5,3],["Abstract_syntax_tree","R",16,6,0],["Trace_generator","R",17,7,0] ], + +[[2,1],[2,6],[3,1],[3,8],[4,1],[4,12],[4,8],[5,1],[10,8],[10,12],[14,12]], +[[3,2],[4,3],[4,14],[4,10],[5,4],[10,3],[14,10]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #8","T",20,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["end_of_session","A",6,1,6],["MP_code_editor","R",7,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",9,4,0],["input_MP_code","A",11,4,3],["MP_parser","R",14,5,0],["perform_syntax_analysis","A",16,5,3],["Abstract_syntax_tree","R",18,6,0],["Trace_generator","R",19,7,0] ], + +[[2,1],[2,7],[3,1],[3,9],[4,1],[4,14],[4,9],[5,1],[5,9],[6,1],[11,9],[11,14],[16,14]], +[[3,2],[4,3],[4,16],[4,11],[5,4],[6,5],[11,3],[16,11]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #9","T",28,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["end_of_session","A",6,1,12],["MP_code_editor","R",7,2,0],["MP_GUI","R",9,3,0],["input_MP_code","A",12,3,4],["receive_json_file","A",13,3,9],["visualize_trace","A",14,3,10],["MP_parser","R",15,4,0],["perform_syntax_analysis","A",17,4,4],["write_abstract_syntax_tree","A",18,4,5],["Abstract_syntax_tree","R",19,5,0],["read_abstract_syntax_tree","A",21,5,5],["Trace_generator","R",22,6,0],["generate_Cpp_file","A",24,6,5],["run_Cpp_compiler","A",25,6,6],["run_executable","A",26,6,7],["produce_json_file","A",27,6,8] ], + +[[2,1],[2,9],[3,1],[3,7],[4,1],[4,9],[5,1],[6,1],[12,9],[12,15],[13,9],[14,9],[17,15],[18,15],[18,19],[21,19],[21,22],[24,22],[25,22],[26,22],[27,22]], +[[3,2],[4,3],[4,2],[5,4],[5,14],[6,5],[12,4],[13,12],[13,27],[14,13],[17,12],[18,17],[21,18],[24,21],[25,24],[26,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #10","T",30,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["end_of_session","A",7,1,13],["MP_code_editor","R",8,2,0],["MP_GUI","R",10,3,0],["input_MP_code","A",13,3,4],["receive_json_file","A",14,3,9],["visualize_trace","A",15,3,10],["MP_parser","R",17,4,0],["perform_syntax_analysis","A",19,4,4],["write_abstract_syntax_tree","A",20,4,5],["Abstract_syntax_tree","R",21,5,0],["read_abstract_syntax_tree","A",23,5,5],["Trace_generator","R",24,6,0],["generate_Cpp_file","A",26,6,5],["run_Cpp_compiler","A",27,6,6],["run_executable","A",28,6,7],["produce_json_file","A",29,6,8] ], + +[[2,1],[2,10],[3,1],[3,8],[4,1],[4,10],[5,1],[6,1],[6,10],[7,1],[13,10],[13,17],[14,10],[15,10],[19,17],[20,17],[20,21],[23,21],[23,24],[26,24],[27,24],[28,24],[29,24]], +[[3,2],[4,3],[4,2],[5,4],[5,15],[6,5],[6,15],[7,6],[13,4],[14,13],[14,29],[15,14],[19,13],[20,19],[23,20],[26,23],[27,26],[28,27],[29,28]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #11","T",20,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["end_of_session","A",6,1,6],["MP_code_editor","R",7,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",9,4,0],["input_MP_code","A",12,4,4],["MP_parser","R",14,5,0],["perform_syntax_analysis","A",16,5,4],["Abstract_syntax_tree","R",18,6,0],["Trace_generator","R",19,7,0] ], + +[[2,1],[2,9],[3,1],[3,7],[4,1],[4,9],[5,1],[5,14],[5,9],[6,1],[12,9],[12,14],[16,14]], +[[3,2],[4,3],[4,2],[5,4],[5,16],[5,12],[6,5],[12,4],[16,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #12","T",22,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["end_of_session","A",7,1,7],["MP_code_editor","R",8,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",10,4,0],["input_MP_code","A",13,4,4],["MP_parser","R",16,5,0],["perform_syntax_analysis","A",18,5,4],["Abstract_syntax_tree","R",20,6,0],["Trace_generator","R",21,7,0] ], + +[[2,1],[2,10],[3,1],[3,8],[4,1],[4,10],[5,1],[5,16],[5,10],[6,1],[6,10],[7,1],[13,10],[13,16],[18,16]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[5,13],[6,5],[7,6],[13,4],[18,13]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #13","T",28,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["end_of_session","A",6,1,12],["MP_code_editor","R",7,2,0],["MP_GUI","R",9,3,0],["input_MP_code","A",12,3,4],["receive_json_file","A",13,3,9],["visualize_trace","A",14,3,10],["MP_parser","R",15,4,0],["perform_syntax_analysis","A",17,4,4],["write_abstract_syntax_tree","A",18,4,5],["Abstract_syntax_tree","R",19,5,0],["read_abstract_syntax_tree","A",21,5,5],["Trace_generator","R",22,6,0],["generate_Cpp_file","A",24,6,5],["run_Cpp_compiler","A",25,6,6],["run_executable","A",26,6,7],["produce_json_file","A",27,6,8] ], + +[[2,1],[2,9],[3,1],[3,7],[4,1],[4,9],[5,1],[6,1],[12,9],[12,15],[13,9],[14,9],[17,15],[18,15],[18,19],[21,19],[21,22],[24,22],[25,22],[26,22],[27,22]], +[[3,2],[4,3],[4,2],[5,4],[5,14],[6,5],[12,4],[13,12],[13,27],[14,13],[17,12],[18,17],[21,18],[24,21],[25,24],[26,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #14","T",30,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["end_of_session","A",7,1,13],["MP_code_editor","R",8,2,0],["MP_GUI","R",10,3,0],["input_MP_code","A",13,3,4],["receive_json_file","A",14,3,9],["visualize_trace","A",15,3,10],["MP_parser","R",17,4,0],["perform_syntax_analysis","A",19,4,4],["write_abstract_syntax_tree","A",20,4,5],["Abstract_syntax_tree","R",21,5,0],["read_abstract_syntax_tree","A",23,5,5],["Trace_generator","R",24,6,0],["generate_Cpp_file","A",26,6,5],["run_Cpp_compiler","A",27,6,6],["run_executable","A",28,6,7],["produce_json_file","A",29,6,8] ], + +[[2,1],[2,10],[3,1],[3,8],[4,1],[4,10],[5,1],[6,1],[6,10],[7,1],[13,10],[13,17],[14,10],[15,10],[19,17],[20,17],[20,21],[23,21],[23,24],[26,24],[27,24],[28,24],[29,24]], +[[3,2],[4,3],[4,2],[5,4],[5,15],[6,5],[6,15],[7,6],[13,4],[14,13],[14,29],[15,14],[19,13],[20,19],[23,20],[26,23],[27,26],[28,27],[29,28]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #15","T",20,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["end_of_session","A",6,1,6],["MP_code_editor","R",7,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",9,4,0],["input_MP_code","A",12,4,4],["MP_parser","R",14,5,0],["perform_syntax_analysis","A",16,5,4],["Abstract_syntax_tree","R",18,6,0],["Trace_generator","R",19,7,0] ], + +[[2,1],[2,9],[3,1],[3,7],[4,1],[4,9],[5,1],[5,14],[5,9],[6,1],[12,9],[12,14],[16,14]], +[[3,2],[4,3],[4,2],[5,4],[5,16],[5,12],[6,5],[12,4],[16,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Scope 1 Trace #16","T",22,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["end_of_session","A",7,1,7],["MP_code_editor","R",8,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",10,4,0],["input_MP_code","A",13,4,4],["MP_parser","R",16,5,0],["perform_syntax_analysis","A",18,5,4],["Abstract_syntax_tree","R",20,6,0],["Trace_generator","R",21,7,0] ], + +[[2,1],[2,10],[3,1],[3,8],[4,1],[4,10],[5,1],[5,16],[5,10],[6,1],[6,10],[7,1],[13,10],[13,16],[18,16]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[5,13],[6,5],[7,6],[13,4],[18,13]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U", +{"GRAPH":["main component interactions", + [ [0, "User"] ,[1, "MP_code_editor"] ,[2, "MP_GUI"] ,[3, "MP_parser"] ,[4, "Abstract_syntax_tree"] ,[5, "Trace_generator"] ], + [], + [ [0,1,"interacts with"],[0,2,"interacts with"],[0,3,"interacts with"],[1,2,"interacts with"],[2,3,"interacts with"],[2,5,"interacts with"],[3,4,"interacts with"],[3,5,"interacts with"],[4,5,"interacts with"]] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example29_stack1_Bayesian_probability.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example29_stack1_Bayesian_probability.json new file mode 100644 index 0000000..e17c044 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example29_stack1_Bayesian_probability.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.571429, +[ ["Trace 1 for scope 1 has probability 0.5","T",2,0,0],["Stack","R",1,1,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.428571, +[ ["push with probability 0.5","T",3,0,0],["Trace 2 for scope 1 has probability 0.5","T",4,0,1],["Stack","R",1,1,0],["push","A",2,1,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example30_Local_Report.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example30_Local_Report.json new file mode 100644 index 0000000..b3a9401 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example30_Local_Report.json @@ -0,0 +1,33 @@ +{"traces":[ + +["U", 0.5, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0] ], + +[[2,1],[2,3]], +[] +,{"VIEWS":[ +{"REPORT":["scope= 1 trace 1","#writing= 1","#reading= 0","#working= 0"]} + ]} +], + +["U", 0.25, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0],["working","A",6,2,1] ], + +[[2,1],[2,3],[6,5]], +[] +,{"VIEWS":[ +{"REPORT":["scope= 1 trace 2","#writing= 1","#reading= 0","#working= 1"]} + ]} +], + +["U", 0.25, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["Reader","R",6,2,0] ], + +[[2,1],[2,3],[5,3],[5,6]], +[[5,2]] +,{"VIEWS":[ +{"REPORT":["scope= 1 trace 3","#writing= 1","#reading= 1","#working= 0"]} + ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example31_Global_report.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example31_Global_report.json new file mode 100644 index 0000000..6c19a21 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example31_Global_report.json @@ -0,0 +1,29 @@ +{"traces":[ + +["U", 0.5, +[ ["Sender","R",1,0,0],["Receiver","R",2,1,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["does_not_receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U",{"SAY":[]}, +{"REPORT":["scope= 1","trace 3 sent 1 received 0 ratio 0","total traces 3"]} +]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example32_Local_graph.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example32_Local_graph.json new file mode 100644 index 0000000..9257a99 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example32_Local_graph.json @@ -0,0 +1,51 @@ +{"traces":[ + +["U", 0.166667, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["finish","A",4,0,3],["winner","A",5,0,4],["Judge","R",6,1,0],["provide_start_signal","A",7,1,1],["watch","A",8,1,2] ], + +[[2,1],[3,2],[4,2],[4,6],[5,2],[7,6],[8,6]], +[[3,7],[4,3],[4,8],[5,4],[8,7]] +,{"VIEWS":[ +{"GRAPH":["winner trace 1 for scope 1", + [ [0, "0 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.333333, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["break","A",4,0,3],["Judge","R",5,1,0],["provide_start_signal","A",6,1,1],["watch","A",7,1,2] ], + +[[2,1],[3,2],[4,2],[6,5],[7,5]], +[[3,6],[4,3],[7,6]] +,{"VIEWS":[ +{"GRAPH":["winner trace 2 for scope 1", + [], + [], + [] ]} ]} +], + +["U", 0.166667, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["finish","A",5,0,4],["winner","A",6,0,5],["Judge","R",7,1,0],["provide_start_signal","A",8,1,1],["watch","A",9,1,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,7],[6,2],[8,7],[9,7]], +[[3,8],[4,3],[5,4],[5,9],[6,5],[9,8]] +,{"VIEWS":[ +{"GRAPH":["winner trace 3 for scope 1", + [ [0, "1 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.333333, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["break","A",5,0,4],["Judge","R",6,1,0],["provide_start_signal","A",7,1,1],["watch","A",8,1,2] ], + +[[2,1],[3,2],[4,2],[5,2],[7,6],[8,6]], +[[3,7],[4,3],[5,4],[8,7]] +,{"VIEWS":[ +{"GRAPH":["winner trace 4 for scope 1", + [], + [], + [] ]} ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example34_Graph_as_data_structure.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example34_Graph_as_data_structure.json new file mode 100644 index 0000000..4c0993d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example34_Graph_as_data_structure.json @@ -0,0 +1,33 @@ +{"traces":[ + +["U", 0.5, +[ ["A","R",1,0,0],["B","R",2,1,0],["c","A",3,1,1] ], + +[[3,2]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["A","R",1,0,0],["a","A",2,0,1],["B","R",3,1,0],["c","A",4,1,1] ], + +[[2,1],[4,3]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["A","R",1,0,0],["b","A",2,0,1],["B","R",3,1,0],["c","A",4,1,1] ], + +[[2,1],[4,3]], +[] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U",{"SAY":[]}, +{"REPORT":["Total event count as Report","A event count: 3","B event count: 3","c event count: 3","a event count: 1","b event count: 1"]} +, +{"GRAPH":["Total event count as graph for scope 1", + [ [0, "A"] ,[1, "trace 1"] ,[2, "B"] ,[3, "c"] ,[4, "trace 2"] ,[5, "a"] ,[6, "trace 3"] ,[7, "b"] ,[8, "3"] ,[9, "3"] ,[10, "3"] ,[11, "1"] ,[12, "1"] ], + [ [0,1,"in trace"],[0,4,"in trace"],[0,6,"in trace"],[0,8,"total count"],[2,1,"in trace"],[2,4,"in trace"],[2,6,"in trace"],[2,9,"total count"],[3,1,"in trace"],[3,4,"in trace"],[3,6,"in trace"],[3,10,"total count"],[5,4,"in trace"],[5,11,"total count"],[7,6,"in trace"],[7,12,"total count"]], + [] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example35_Finite_State_Diagram.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example35_Finite_State_Diagram.json new file mode 100644 index 0000000..0f8ce65 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example35_Finite_State_Diagram.json @@ -0,0 +1,55 @@ +{"traces":[ + +["U", 0.333333, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_behavior","R",8,1,0],["S4_to_S2","C",9,1,8],["a","A",10,1,9],["S2","A",11,1,10],["S2_to_End","C",12,1,11],["empty","A",13,1,12],["End","A",14,1,13],["S3_behavior","R",15,2,0],["S3","A",18,2,6],["S3_to_S4","C",19,2,7],["b","A",20,2,8],["S4_behavior","R",21,3,0],["S4","A",24,3,7] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,15],[7,6],[9,8],[9,21],[10,9],[11,8],[12,8],[13,12],[14,8],[18,15],[19,15],[19,21],[20,19],[24,21]], +[[3,2],[5,3],[6,5],[9,24],[11,9],[12,11],[14,12],[18,6],[19,18],[24,19]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S4"] ,[4, "S2"] ,[5, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"b"],[3,4,"a"],[4,5,"empty"]], + [] ]} ]} +], + +["U", 0.333333, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_behavior","R",8,1,0],["S4_to_S2","C",9,1,11],["a","A",10,1,12],["S2","A",11,1,13],["S2_to_End","C",12,1,14],["empty","A",13,1,15],["End","A",14,1,16],["S3_behavior","R",15,2,0],["S3","A",18,2,6],["S3_to_S3","C",19,2,7],["a","A",20,2,8],["S3","A",21,2,9],["S3_to_S4","C",22,2,10],["b","A",23,2,11],["S4_behavior","R",24,3,0],["S4","A",27,3,10] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,15],[7,6],[9,8],[9,24],[10,9],[11,8],[12,8],[13,12],[14,8],[18,15],[19,15],[20,19],[21,15],[22,15],[22,24],[23,22],[27,24]], +[[3,2],[5,3],[6,5],[9,27],[11,9],[12,11],[14,12],[18,6],[19,18],[21,19],[22,21],[27,22]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S4"] ,[5, "S2"] ,[6, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"empty"]], + [] ]} ]} +], + +["U", 0.166667, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["a","A",7,0,6],["S2_behavior","R",8,1,0],["S4_to_S2","C",9,1,7],["a","A",10,1,8],["S2","A",11,1,9],["S2_to_End","C",12,1,10],["empty","A",13,1,11],["End","A",14,1,12],["S3_behavior","R",15,2,0],["S4_behavior","R",16,3,0],["S4","A",19,3,6] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,16],[7,6],[9,8],[9,16],[10,9],[11,8],[12,8],[13,12],[14,8],[19,16]], +[[3,2],[5,3],[6,5],[9,19],[11,9],[12,11],[14,12],[19,6]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"empty"]], + [] ]} ]} +], + +["U", 0.166667, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["b","A",7,0,6],["S2_behavior","R",8,1,0],["S4_to_S2","C",9,1,7],["a","A",10,1,8],["S2","A",11,1,9],["S2_to_End","C",12,1,10],["empty","A",13,1,11],["End","A",14,1,12],["S3_behavior","R",15,2,0],["S4_behavior","R",16,3,0],["S4","A",19,3,6] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,16],[7,6],[9,8],[9,16],[10,9],[11,8],[12,8],[13,12],[14,8],[19,16]], +[[3,2],[5,3],[6,5],[9,19],[11,9],[12,11],[14,12],[19,6]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "End"] ], + [ [0,1,"empty"],[1,2,"b"],[2,3,"a"],[3,4,"empty"]], + [] ]} ]} +] +] +,"GLOBAL":["U", +{"GRAPH":["State transition diagram", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S4"] ,[4, "S2"] ,[5, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[1,3,"a"],[1,3,"b"],[2,3,"b"],[2,2,"a"],[3,4,"a"],[4,5,"empty"]], + [] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example36_Statechart.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example36_Statechart.json new file mode 100644 index 0000000..8c4ae6f --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example36_Statechart.json @@ -0,0 +1,39 @@ +{"traces":[ + +["U", 0.842105, +[ ["Customer","R",1,0,0],["ATM_system","R",2,1,0],["Idle","A",3,1,1],["Data_Base","R",4,2,0] ], + +[[3,2]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0263158, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["get_money","A",5,0,7],["retrieve_card","A",6,0,8],["ATM_system","R",7,1,0],["Idle","A",8,1,1],["read_card","A",9,1,2],["validate_id","A",10,1,3],["id_successful","A",11,1,4],["check_balance","A",12,1,5],["sufficient_balance","A",13,1,6],["dispense_money","A",14,1,7],["Idle","A",15,1,8],["Data_Base","R",16,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[8,7],[9,7],[10,7],[10,16],[11,7],[12,7],[12,16],[13,7],[14,7],[15,7]], +[[3,2],[3,11],[4,3],[5,4],[5,14],[6,5],[9,8],[9,2],[10,9],[11,10],[12,11],[12,10],[12,4],[13,12],[14,13],[15,14]] +,{"VIEWS":[ ]} +], + +["U", 0.0263158, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["not_sufficient_funds","A",5,0,6],["retrieve_card","A",6,0,7],["ATM_system","R",7,1,0],["Idle","A",8,1,1],["read_card","A",9,1,2],["validate_id","A",10,1,3],["id_successful","A",11,1,4],["check_balance","A",12,1,5],["unsufficient_balance","A",13,1,6],["Idle","A",14,1,7],["Data_Base","R",15,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[8,7],[9,7],[10,7],[10,15],[11,7],[12,7],[12,15],[13,7],[14,7]], +[[3,2],[3,11],[4,3],[5,4],[5,13],[6,5],[9,8],[9,2],[10,9],[11,10],[12,11],[12,10],[12,4],[13,12],[14,13]] +,{"VIEWS":[ ]} +], + +["U", 0.105263, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,4],["retrieve_card","A",4,0,5],["ATM_system","R",5,1,0],["Idle","A",6,1,1],["read_card","A",7,1,2],["validate_id","A",8,1,3],["id_failed","A",9,1,4],["Idle","A",10,1,5],["Data_Base","R",11,2,0] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[8,5],[8,11],[9,5],[10,5]], +[[3,2],[3,9],[4,3],[7,6],[7,2],[8,7],[9,8],[10,9]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U", +{"GRAPH":["ATM state transition diagram", + [ [0, "Idle"] ,[1, "id_successful"] ,[2, "sufficient_balance"] ,[3, "unsufficient_balance"] ,[4, "id_failed"] ], + [ [0,1,"insert_card"],[0,4,"insert_card"],[1,2,"request_withdrawal"],[1,3,"request_withdrawal"],[2,0,"retrieve_card"],[3,0,"retrieve_card"],[4,0,"retrieve_card"]], + [] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example37_GLOBAL_query.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example37_GLOBAL_query.json new file mode 100644 index 0000000..8b31576 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example37_GLOBAL_query.json @@ -0,0 +1,21 @@ +{"traces":[ + +["M", 0.8, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.2, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["does_not_receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U",{"SAY":[]}, +{"REPORT":["Scope 1","Total 2 traces","In 1 of traces at least 75% of sent messages have been received","At the given scope probability for at least 75% messages to pass through is 0.8"]} +]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example38_knapsack.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example38_knapsack.json new file mode 100644 index 0000000..00cb209 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example38_knapsack.json @@ -0,0 +1,37 @@ +{"traces":[ + +["U", 0.25, +[ ["Best result so far: 0","T",4,0,0],["A","R",1,1,0],["B","R",2,2,0],["C","R",3,3,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Best result so far: 5","T",5,0,0],["A","R",1,1,0],["B","R",2,2,0],["C","R",3,3,0],["Item_C","A",4,3,1] ], + +[[4,3]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Best result so far: 8","T",6,0,0],["A","R",1,1,0],["B","R",2,2,0],["Item_B","A",3,2,1],["C","R",4,3,0],["Item_C","A",5,3,1] ], + +[[3,2],[5,4]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Best result so far: 10","T",7,0,0],["A","R",1,1,0],["Item_A","A",2,1,1],["B","R",3,2,0],["Item_B","A",4,2,1],["C","R",5,3,0],["Item_C","A",6,3,1] ], + +[[2,1],[4,3],[6,5]], +[] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U",{"SAY":[]}, +{"REPORT":["Best knapsack","Weight limit 11","Single item's weight: A= 2 B= 3 C= 5","For scope 1 best packing is 10","Pack 1 of A, 1 of B, 1 of C"]} +]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example39_turtles.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example39_turtles.json new file mode 100644 index 0000000..0149492 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example39_turtles.json @@ -0,0 +1,107 @@ +{"traces":[ + +["U", 0.0769231, +[ ["moving parallel","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork upward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Lying","A",5,1,3],["one_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["one_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["two_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork upward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Lying","A",5,1,3],["one_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["two_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["one_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork downward","T",16,0,0],["2 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Telling_the_truth","A",5,1,3],["two_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["one_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["one_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["1 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Telling_the_truth","A",5,1,3],["two_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["one_before","A",8,3,2],["Telling_the_truth","A",10,3,3],["one_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["two_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["1 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Telling_the_truth","A",5,1,3],["two_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["two_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["one_before","A",13,5,2],["Telling_the_truth","A",15,5,3],["one_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork downward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["one_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["two_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["one_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork downward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["one_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["one_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["two_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["one_before","A",3,1,2],["Lying","A",5,1,3],["one_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["two_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["two_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["one_before","A",3,1,2],["Lying","A",5,1,3],["one_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["two_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["two_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork upward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["two_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["one_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["one_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["2 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["two_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["two_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["one_before","A",13,5,2],["Telling_the_truth","A",15,5,3],["one_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["2 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["two_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["one_before","A",8,3,2],["Telling_the_truth","A",10,3,3],["one_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["two_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example40_web_browsers.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example40_web_browsers.json new file mode 100644 index 0000000..4a0670c --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example40_web_browsers.json @@ -0,0 +1,33 @@ +{"traces":[ + +["U", 0.964286, +[ ["Client","R",1,0,0],["Request","A",2,0,1],["Process_Response","A",3,0,2],["Good_Server","R",4,1,0],["Response","C",5,1,1],["Send_Response","A",6,1,2],["Bad_Server","R",7,2,0] ], + +[[2,1],[3,1],[5,4],[6,5]], +[[3,2],[3,6],[5,2]], +["causes", [2,5],[6,3]], +["is_response_to", [5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.00892857, +[ ["Client","R",1,0,0],["Request","A",2,0,1],["Process_Response","A",3,0,2],["Good_Server","R",4,1,0],["Response","C",5,1,1],["Send_Response","A",6,1,2],["Response","C",7,1,3],["Send_Response","A",8,1,4],["Bad_Server","R",9,2,0],["Request","A",10,2,1],["Process_Response","A",11,2,4] ], + +[[2,1],[3,1],[5,4],[6,5],[7,4],[8,7],[10,9],[11,9]], +[[3,2],[3,6],[5,2],[7,5],[7,10],[11,10],[11,8]], +["causes", [2,5],[6,3],[8,11],[10,7]], +["is_response_to", [5,2],[7,10]] +,{"VIEWS":[ ]} +], + +["U", 0.0267857, +[ ["Client","R",1,0,0],["Request","A",2,0,1],["Process_Response","A",3,0,3],["Good_Server","R",4,1,0],["Response","C",5,1,1],["Request","A",6,1,2],["Send_Response","A",7,1,3],["Process_Response","A",8,1,4],["Bad_Server","R",9,2,0],["Response","C",10,2,2],["Redirect","A",11,2,3],["Send_Response","A",12,2,4] ], + +[[2,1],[3,1],[5,4],[6,5],[7,5],[8,4],[10,9],[11,10],[12,10]], +[[3,2],[3,7],[5,2],[7,6],[8,5],[8,12],[10,6],[12,11]], +["causes", [2,5],[5,6],[6,10],[7,3],[12,8]], +["is_response_to", [5,2],[10,6]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example41_Replay_Attack.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example41_Replay_Attack.json new file mode 100644 index 0000000..888350e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example41_Replay_Attack.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.5, +[ ["Alice","R",1,0,0],["sends_password_to_Bob","A",2,0,2],["Network","R",3,1,0],["message_in_transit","A",4,1,2],["Eve","R",5,2,0],["eavesesdrops_message","A",6,2,2],["presents_Alice_password","A",7,2,4],["talks","A",8,2,5],["Bob","R",9,3,0],["requests_password_from_Alice","A",10,3,1],["receives_password_from_Alice","A",11,3,3],["asks_for_password","A",12,3,4] ], + +[[2,1],[4,3],[6,5],[7,5],[8,5],[8,9],[10,9],[11,9],[12,9]], +[[2,10],[4,2],[6,4],[7,6],[7,12],[8,7],[8,12],[11,10],[11,4],[12,11]] +,{"VIEWS":[ ]} +], + +["U", 0.5, +[ ["Alice","R",1,0,0],["sends_password_to_Bob","A",2,0,2],["presents_Alice_password","A",3,0,5],["talks","A",4,0,6],["Network","R",5,1,0],["message_in_transit","A",6,1,2],["Eve","R",7,2,0],["eavesesdrops_message","A",8,2,2],["presents_Alice_password","A",9,2,7],["talks","A",10,2,8],["Bob","R",11,3,0],["requests_password_from_Alice","A",12,3,1],["receives_password_from_Alice","A",13,3,3],["asks_for_password","A",14,3,4],["asks_for_password","A",16,3,7] ], + +[[2,1],[3,1],[4,1],[4,11],[6,5],[8,7],[9,7],[10,7],[10,11],[12,11],[13,11],[14,11],[16,11]], +[[2,12],[3,2],[3,14],[4,3],[4,14],[6,2],[8,6],[9,8],[9,16],[10,9],[10,16],[13,12],[13,6],[14,13],[16,4]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example42_Bar_Chart.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example42_Bar_Chart.json new file mode 100644 index 0000000..63cc0f5 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example42_Bar_Chart.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 1, +[ ["A","R",1,0,0],["a","A",2,0,1],["b","A",3,0,2],["c","A",4,0,3],["a","A",5,0,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ +{"TABLE": { "title": "Trace 1", +"tabs": [ "event_name","total_number"], + "rows": [ [ "A",1],[ "a",2],[ "b",1],[ "c",1]] } } +, +{"BAR_CHART": { "title": "Trace 1 chart", +"tabs": [ "event_name","total_number"], "X_AXIS": "event_name","ROTATE": 0, + "rows": [ [ "A",1],[ "a",2],[ "b",1],[ "c",1]] } } + ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example43_Histogram.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example43_Histogram.json new file mode 100644 index 0000000..330822b --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example43_Histogram.json @@ -0,0 +1,39 @@ +{"traces":[ + +["U", 0.2, +[ ["A","R",1,0,0],["a1","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.3, +[ ["A","R",1,0,0],["a2","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["A","R",1,0,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["A","R",1,0,0],["a3","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U", +{"BAR_CHART": { "title": "Trace probabilities", +"tabs": [ "probability_interval","trace_count"], "X_AXIS": "probability_interval","ROTATE": 0, + "rows": [ [ "[0..0.1)",0],[ "[0.1..0.2)",0],[ "[0.2..0.3)",3],[ "[0.3..0.4)",1],[ "[0.4..0.5)",0],[ "[0.5..0.6)",0],[ "[0.6..0.7)",0],[ "[0.7..0.8)",0],[ "[0.8..0.9)",0],[ "[0.9..1)",0]] } } +]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example44_Gantt_Chart.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example44_Gantt_Chart.json new file mode 100644 index 0000000..f5bf362 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example44_Gantt_Chart.json @@ -0,0 +1,15 @@ +{"traces":[ + +["U", 1, +[ ["A","R",1,0,0],["a1","A",2,0,1],["a2","A",3,0,2],["B","R",4,1,0],["b1","A",5,1,1],["b2","A",7,1,2] ], + +[[2,1],[3,1],[3,4],[5,4],[7,4]], +[[3,2],[3,5],[7,3]] +,{"VIEWS":[ +{"BAR_CHART": { "title": "Example of Gantt Chart", +"tabs": [ "event_name","start_time","duration_time"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "A",0,8],[ "a1",0,3],[ "a2",3,5],[ "B",0,10],[ "b1",0,1],[ "b2",8,2]] } } + ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example45_Martian_Lander.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example45_Martian_Lander.json new file mode 100644 index 0000000..a38fa48 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_1/Example45_Martian_Lander.json @@ -0,0 +1,54 @@ +{"traces":[ + +["U", 0.5, +[ ["Running Timer1","T",22,0,0],["Landing complete at 30","T",23,0,1],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,6],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["IOINT","A",15,3,4],["Lands","A",16,3,5],["stop_Timer2","A",18,3,6],["STMR2","A",12,4,1],["ETC","A",14,4,3],["Timer2","R",19,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,19],[13,8],[14,8],[15,8],[16,8],[18,8],[18,19]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,16],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[16,15],[18,16],[18,12]], +["alert", [22,1],[23,16]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",50,0,50],[ "ADJM",10,20,30],[ "Lands",30,0,30]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",50,0],[ "ADJM",10,20],[ "Lands",30,0]] } } + ]} +], + +["U", 0.25, +[ ["Running Timer1","T",25,0,0],["Emergency landing started at 101","T",26,0,1],["Landing complete at 111","T",27,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,8],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["TMRINT","A",15,3,4],["IEM","A",16,3,5],["Emergency_Landing","C",17,3,6],["Lands","A",18,3,7],["stop_Timer2","A",20,3,8],["STMR2","A",12,4,1],["ETC","A",14,4,3],["Timer2","R",21,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,21],[13,8],[14,8],[15,8],[15,21],[16,8],[17,8],[18,8],[20,8],[20,21]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,18],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[15,12],[16,15],[17,16],[18,17],[20,18],[20,15]], +["alert", [25,1],[26,15],[27,18]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",111,0,111],[ "ADJM",10,20,30],[ "Emergency_Landing",111,0,111],[ "Lands",111,0,111]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",111,0],[ "ADJM",10,20],[ "Emergency_Landing",111,0],[ "Lands",111,0]] } } + ]} +], + +["U", 0.25, +[ ["Running Timer1","T",26,0,0],["Emergency landing started at 101","T",27,0,1],["Landing complete at 121","T",28,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,9],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["TMRINT","A",15,3,4],["IEM","A",16,3,5],["Emergency_Landing","C",17,3,6],["fire_RRM","A",18,3,7],["Lands","A",19,3,8],["stop_Timer2","A",21,3,9],["STMR2","A",12,4,1],["ETC","A",14,4,3],["Timer2","R",22,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,22],[13,8],[14,8],[15,8],[15,22],[16,8],[17,8],[18,17],[19,8],[21,8],[21,22]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,19],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[15,12],[16,15],[17,16],[19,17],[21,19],[21,15]], +["alert", [26,1],[27,15],[28,19]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",121,0,121],[ "ADJM",10,20,30],[ "Emergency_Landing",111,10,121],[ "fire_RRM",111,10,121],[ "Lands",121,0,121]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",121,0],[ "ADJM",10,20],[ "Emergency_Landing",111,10],[ "fire_RRM",111,10],[ "Lands",121,0]] } } + ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example01_simple_message_flow.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example01_simple_message_flow.json new file mode 100644 index 0000000..45c5744 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example01_simple_message_flow.json @@ -0,0 +1,27 @@ +{"traces":[ + +["U", 0.333333, +[ ["Sender","R",1,0,0],["Receiver","R",2,1,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.333333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.333333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["receive","A",5,1,1],["receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example01a_unreliable_message_flow.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example01a_unreliable_message_flow.json new file mode 100644 index 0000000..2887f72 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example01a_unreliable_message_flow.json @@ -0,0 +1,59 @@ +{"traces":[ + +["U", 0.333333, +[ ["Sender","R",1,0,0],["Receiver","R",2,1,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["does_not_receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["receive","A",5,1,1],["receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["receive","A",5,1,1],["does_not_receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["does_not_receive","A",5,1,1],["receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["does_not_receive","A",5,1,1],["does_not_receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example02_Data_flow.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example02_Data_flow.json new file mode 100644 index 0000000..867e720 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example02_Data_flow.json @@ -0,0 +1,227 @@ +{"traces":[ + +["U", 0.133333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0] ], + +[[2,1],[2,3]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0],["working","A",6,2,1] ], + +[[2,1],[2,3],[6,5]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0],["working","A",6,2,1],["working","A",7,2,2] ], + +[[2,1],[2,3],[6,5],[7,5]], +[[7,6]] +,{"VIEWS":[ ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["Reader","R",6,2,0] ], + +[[2,1],[2,3],[5,3],[5,6]], +[[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["Reader","R",6,2,0],["working","A",8,2,1] ], + +[[2,1],[2,3],[5,3],[5,6],[8,6]], +[[5,2],[8,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["Reader","R",6,2,0],["working","A",7,2,1] ], + +[[2,1],[2,3],[5,3],[5,6],[7,6]], +[[5,2],[5,7]] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["reading","A",6,1,2],["Reader","R",7,2,0] ], + +[[2,1],[2,3],[5,3],[5,7],[6,3],[6,7]], +[[5,2],[6,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0] ], + +[[2,1],[3,1],[3,4]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0],["working","A",7,2,1] ], + +[[2,1],[3,1],[3,4],[7,6]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0],["working","A",7,2,1],["working","A",8,2,2] ], + +[[2,1],[3,1],[3,4],[7,6],[8,6]], +[[3,2],[8,7]] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,2],["Reader","R",7,2,0] ], + +[[2,1],[3,1],[3,4],[6,4],[6,7]], +[[3,2],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,2],["Reader","R",7,2,0],["working","A",9,2,2] ], + +[[2,1],[3,1],[3,4],[6,4],[6,7],[9,7]], +[[3,2],[6,3],[9,6]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,2],["Reader","R",7,2,0],["working","A",8,2,1] ], + +[[2,1],[3,1],[3,4],[6,4],[6,7],[8,7]], +[[3,2],[6,3],[6,8]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,2],["reading","A",7,1,3],["Reader","R",8,2,0] ], + +[[2,1],[3,1],[3,4],[6,4],[6,8],[7,4],[7,8]], +[[3,2],[6,3],[7,6]] +,{"VIEWS":[ ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0] ], + +[[2,1],[2,4],[3,1]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0],["working","A",7,2,1] ], + +[[2,1],[2,4],[3,1],[7,6]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0],["working","A",7,2,1],["working","A",8,2,2] ], + +[[2,1],[2,4],[3,1],[7,6],[8,6]], +[[3,2],[8,7]] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,1],["Reader","R",7,2,0] ], + +[[2,1],[2,4],[3,1],[6,4],[6,7]], +[[3,2],[6,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,1],["Reader","R",7,2,0],["working","A",9,2,1] ], + +[[2,1],[2,4],[3,1],[6,4],[6,7],[9,7]], +[[3,2],[6,2],[9,6]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,1],["Reader","R",7,2,0],["working","A",8,2,1] ], + +[[2,1],[2,4],[3,1],[6,4],[6,7],[8,7]], +[[3,2],[6,2],[6,8]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,1],["reading","A",7,1,2],["Reader","R",8,2,0] ], + +[[2,1],[2,4],[3,1],[6,4],[6,8],[7,4],[7,8]], +[[3,2],[6,2],[7,6]] +,{"VIEWS":[ ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",7,2,0] ], + +[[2,1],[2,4],[3,1],[3,4]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",7,2,0],["working","A",8,2,1] ], + +[[2,1],[2,4],[3,1],[3,4],[8,7]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",7,2,0],["working","A",8,2,1],["working","A",9,2,2] ], + +[[2,1],[2,4],[3,1],[3,4],[8,7],[9,7]], +[[3,2],[9,8]] +,{"VIEWS":[ ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",7,1,2],["Reader","R",8,2,0] ], + +[[2,1],[2,4],[3,1],[3,4],[7,4],[7,8]], +[[3,2],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",7,1,2],["Reader","R",8,2,0],["working","A",10,2,2] ], + +[[2,1],[2,4],[3,1],[3,4],[7,4],[7,8],[10,8]], +[[3,2],[7,3],[10,7]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",7,1,2],["Reader","R",8,2,0],["working","A",9,2,1] ], + +[[2,1],[2,4],[3,1],[3,4],[7,4],[7,8],[9,8]], +[[3,2],[7,3],[7,9]] +,{"VIEWS":[ ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",7,1,2],["reading","A",8,1,3],["Reader","R",9,2,0] ], + +[[2,1],[2,4],[3,1],[3,4],[7,4],[7,9],[8,4],[8,9]], +[[3,2],[7,3],[8,7]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example03_ATM_withdrawal.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example03_ATM_withdrawal.json new file mode 100644 index 0000000..aa0fc03 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example03_ATM_withdrawal.json @@ -0,0 +1,107 @@ +{"traces":[ + +["U", 0.817891, +[ ["Customer","R",1,0,0],["ATM_system","R",2,1,0],["Data_Base","R",3,2,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0255591, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["get_money","A",5,0,6],["ATM_system","R",6,1,0],["read_card","A",7,1,1],["validate_id","A",8,1,2],["id_successful","A",9,1,3],["check_balance","A",10,1,4],["sufficient_balance","A",11,1,5],["dispense_money","A",12,1,6],["Data_Base","R",13,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[8,13],[9,6],[10,6],[10,13],[11,6],[12,6]], +[[3,2],[3,9],[4,3],[5,4],[5,12],[7,2],[8,7],[9,8],[10,9],[10,8],[10,4],[11,10],[12,11]] +,{"VIEWS":[ ]} +], + +["U", 0.0255591, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["not_sufficient_funds","A",5,0,5],["ATM_system","R",6,1,0],["read_card","A",7,1,1],["validate_id","A",8,1,2],["id_successful","A",9,1,3],["check_balance","A",10,1,4],["unsufficient_balance","A",11,1,5],["Data_Base","R",12,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[8,12],[9,6],[10,6],[10,12],[11,6]], +[[3,2],[3,9],[4,3],[5,4],[5,11],[7,2],[8,7],[9,8],[10,9],[10,8],[10,4],[11,10]] +,{"VIEWS":[ ]} +], + +["U", 0.102236, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,3],["ATM_system","R",4,1,0],["read_card","A",5,1,1],["validate_id","A",6,1,2],["id_failed","A",7,1,3],["Data_Base","R",8,2,0] ], + +[[2,1],[3,1],[5,4],[6,4],[6,8],[7,4]], +[[3,2],[3,7],[5,2],[6,5],[7,6]] +,{"VIEWS":[ ]} +], + +["U", 0.000798722, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["get_money","A",5,0,6],["insert_card","A",6,0,7],["identification_succeeds","A",7,0,9],["request_withdrawal","A",8,0,10],["get_money","A",9,0,12],["ATM_system","R",10,1,0],["read_card","A",11,1,1],["validate_id","A",12,1,2],["id_successful","A",13,1,3],["check_balance","A",14,1,4],["sufficient_balance","A",15,1,5],["dispense_money","A",16,1,6],["read_card","A",17,1,7],["validate_id","A",18,1,8],["id_successful","A",19,1,9],["check_balance","A",20,1,10],["sufficient_balance","A",21,1,11],["dispense_money","A",22,1,12],["Data_Base","R",23,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[11,10],[12,10],[12,23],[13,10],[14,10],[14,23],[15,10],[16,10],[17,10],[18,10],[18,23],[19,10],[20,10],[20,23],[21,10],[22,10]], +[[3,2],[3,13],[4,3],[5,4],[5,16],[6,5],[7,6],[7,19],[8,7],[9,8],[9,22],[11,2],[12,11],[13,12],[14,13],[14,12],[14,4],[15,14],[16,15],[17,16],[17,6],[18,17],[18,14],[19,18],[20,19],[20,18],[20,8],[21,20],[22,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000798722, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["get_money","A",5,0,6],["insert_card","A",6,0,7],["identification_succeeds","A",7,0,9],["request_withdrawal","A",8,0,10],["not_sufficient_funds","A",9,0,11],["ATM_system","R",10,1,0],["read_card","A",11,1,1],["validate_id","A",12,1,2],["id_successful","A",13,1,3],["check_balance","A",14,1,4],["sufficient_balance","A",15,1,5],["dispense_money","A",16,1,6],["read_card","A",17,1,7],["validate_id","A",18,1,8],["id_successful","A",19,1,9],["check_balance","A",20,1,10],["unsufficient_balance","A",21,1,11],["Data_Base","R",22,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[11,10],[12,10],[12,22],[13,10],[14,10],[14,22],[15,10],[16,10],[17,10],[18,10],[18,22],[19,10],[20,10],[20,22],[21,10]], +[[3,2],[3,13],[4,3],[5,4],[5,16],[6,5],[7,6],[7,19],[8,7],[9,8],[9,21],[11,2],[12,11],[13,12],[14,13],[14,12],[14,4],[15,14],[16,15],[17,16],[17,6],[18,17],[18,14],[19,18],[20,19],[20,18],[20,8],[21,20]] +,{"VIEWS":[ ]} +], + +["U", 0.00319489, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["get_money","A",5,0,6],["insert_card","A",6,0,7],["identification_fails","A",7,0,9],["ATM_system","R",8,1,0],["read_card","A",9,1,1],["validate_id","A",10,1,2],["id_successful","A",11,1,3],["check_balance","A",12,1,4],["sufficient_balance","A",13,1,5],["dispense_money","A",14,1,6],["read_card","A",15,1,7],["validate_id","A",16,1,8],["id_failed","A",17,1,9],["Data_Base","R",18,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[9,8],[10,8],[10,18],[11,8],[12,8],[12,18],[13,8],[14,8],[15,8],[16,8],[16,18],[17,8]], +[[3,2],[3,11],[4,3],[5,4],[5,14],[6,5],[7,6],[7,17],[9,2],[10,9],[11,10],[12,11],[12,10],[12,4],[13,12],[14,13],[15,14],[15,6],[16,15],[16,12],[17,16]] +,{"VIEWS":[ ]} +], + +["U", 0.000798722, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["not_sufficient_funds","A",5,0,5],["insert_card","A",6,0,6],["identification_succeeds","A",7,0,8],["request_withdrawal","A",8,0,9],["get_money","A",9,0,11],["ATM_system","R",10,1,0],["read_card","A",11,1,1],["validate_id","A",12,1,2],["id_successful","A",13,1,3],["check_balance","A",14,1,4],["unsufficient_balance","A",15,1,5],["read_card","A",16,1,6],["validate_id","A",17,1,7],["id_successful","A",18,1,8],["check_balance","A",19,1,9],["sufficient_balance","A",20,1,10],["dispense_money","A",21,1,11],["Data_Base","R",22,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[11,10],[12,10],[12,22],[13,10],[14,10],[14,22],[15,10],[16,10],[17,10],[17,22],[18,10],[19,10],[19,22],[20,10],[21,10]], +[[3,2],[3,13],[4,3],[5,4],[5,15],[6,5],[7,6],[7,18],[8,7],[9,8],[9,21],[11,2],[12,11],[13,12],[14,13],[14,12],[14,4],[15,14],[16,15],[16,6],[17,16],[17,14],[18,17],[19,18],[19,17],[19,8],[20,19],[21,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000798722, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["not_sufficient_funds","A",5,0,5],["insert_card","A",6,0,6],["identification_succeeds","A",7,0,8],["request_withdrawal","A",8,0,9],["not_sufficient_funds","A",9,0,10],["ATM_system","R",10,1,0],["read_card","A",11,1,1],["validate_id","A",12,1,2],["id_successful","A",13,1,3],["check_balance","A",14,1,4],["unsufficient_balance","A",15,1,5],["read_card","A",16,1,6],["validate_id","A",17,1,7],["id_successful","A",18,1,8],["check_balance","A",19,1,9],["unsufficient_balance","A",20,1,10],["Data_Base","R",21,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[11,10],[12,10],[12,21],[13,10],[14,10],[14,21],[15,10],[16,10],[17,10],[17,21],[18,10],[19,10],[19,21],[20,10]], +[[3,2],[3,13],[4,3],[5,4],[5,15],[6,5],[7,6],[7,18],[8,7],[9,8],[9,20],[11,2],[12,11],[13,12],[14,13],[14,12],[14,4],[15,14],[16,15],[16,6],[17,16],[17,14],[18,17],[19,18],[19,17],[19,8],[20,19]] +,{"VIEWS":[ ]} +], + +["U", 0.00319489, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,3],["request_withdrawal","A",4,0,4],["not_sufficient_funds","A",5,0,5],["insert_card","A",6,0,6],["identification_fails","A",7,0,8],["ATM_system","R",8,1,0],["read_card","A",9,1,1],["validate_id","A",10,1,2],["id_successful","A",11,1,3],["check_balance","A",12,1,4],["unsufficient_balance","A",13,1,5],["read_card","A",14,1,6],["validate_id","A",15,1,7],["id_failed","A",16,1,8],["Data_Base","R",17,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[9,8],[10,8],[10,17],[11,8],[12,8],[12,17],[13,8],[14,8],[15,8],[15,17],[16,8]], +[[3,2],[3,11],[4,3],[5,4],[5,13],[6,5],[7,6],[7,16],[9,2],[10,9],[11,10],[12,11],[12,10],[12,4],[13,12],[14,13],[14,6],[15,14],[15,12],[16,15]] +,{"VIEWS":[ ]} +], + +["U", 0.00319489, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,3],["insert_card","A",4,0,4],["identification_succeeds","A",5,0,6],["request_withdrawal","A",6,0,7],["get_money","A",7,0,9],["ATM_system","R",8,1,0],["read_card","A",9,1,1],["validate_id","A",10,1,2],["id_failed","A",11,1,3],["read_card","A",12,1,4],["validate_id","A",13,1,5],["id_successful","A",14,1,6],["check_balance","A",15,1,7],["sufficient_balance","A",16,1,8],["dispense_money","A",17,1,9],["Data_Base","R",18,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[9,8],[10,8],[10,18],[11,8],[12,8],[13,8],[13,18],[14,8],[15,8],[15,18],[16,8],[17,8]], +[[3,2],[3,11],[4,3],[5,4],[5,14],[6,5],[7,6],[7,17],[9,2],[10,9],[11,10],[12,11],[12,4],[13,12],[13,10],[14,13],[15,14],[15,13],[15,6],[16,15],[17,16]] +,{"VIEWS":[ ]} +], + +["U", 0.00319489, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,3],["insert_card","A",4,0,4],["identification_succeeds","A",5,0,6],["request_withdrawal","A",6,0,7],["not_sufficient_funds","A",7,0,8],["ATM_system","R",8,1,0],["read_card","A",9,1,1],["validate_id","A",10,1,2],["id_failed","A",11,1,3],["read_card","A",12,1,4],["validate_id","A",13,1,5],["id_successful","A",14,1,6],["check_balance","A",15,1,7],["unsufficient_balance","A",16,1,8],["Data_Base","R",17,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[9,8],[10,8],[10,17],[11,8],[12,8],[13,8],[13,17],[14,8],[15,8],[15,17],[16,8]], +[[3,2],[3,11],[4,3],[5,4],[5,14],[6,5],[7,6],[7,16],[9,2],[10,9],[11,10],[12,11],[12,4],[13,12],[13,10],[14,13],[15,14],[15,13],[15,6],[16,15]] +,{"VIEWS":[ ]} +], + +["U", 0.0127796, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,3],["insert_card","A",4,0,4],["identification_fails","A",5,0,6],["ATM_system","R",6,1,0],["read_card","A",7,1,1],["validate_id","A",8,1,2],["id_failed","A",9,1,3],["read_card","A",10,1,4],["validate_id","A",11,1,5],["id_failed","A",12,1,6],["Data_Base","R",13,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[8,13],[9,6],[10,6],[11,6],[11,13],[12,6]], +[[3,2],[3,9],[4,3],[5,4],[5,12],[7,2],[8,7],[9,8],[10,9],[10,4],[11,10],[11,8],[12,11]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example04_Stack_behavior.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example04_Stack_behavior.json new file mode 100644 index 0000000..9409812 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example04_Stack_behavior.json @@ -0,0 +1,36 @@ +{"traces":[ + +["U", 0.5, +[ ["Stack","R",1,0,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Stack","R",1,0,0],["push","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ ["Stack","R",1,0,0],["push","A",2,0,1],["push","A",3,0,2] ], + +[[2,1],[3,1]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ ["Stack","R",1,0,0],["push","A",2,0,1],["pop","A",3,0,2] ], + +[[2,1],[3,1]], +[[3,2]], +["Paired_with", [2,3]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example04a_Queue_behavior.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example04a_Queue_behavior.json new file mode 100644 index 0000000..1c741d8 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example04a_Queue_behavior.json @@ -0,0 +1,36 @@ +{"traces":[ + +["U", 0.5, +[ ["Queue","R",1,0,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Queue","R",1,0,0],["enqueue","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ ["Queue","R",1,0,0],["enqueue","A",2,0,1],["enqueue","A",3,0,2] ], + +[[2,1],[3,1]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ ["Queue","R",1,0,0],["enqueue","A",2,0,1],["dequeue","A",3,0,2] ], + +[[2,1],[3,1]], +[[3,2]], +["Paired_with", [2,3]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example05_Car_Race.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example05_Car_Race.json new file mode 100644 index 0000000..0aafa71 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example05_Car_Race.json @@ -0,0 +1,243 @@ +{"traces":[ + +["U", 0.0701754, +[ ["All cars have finished","T",10,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["finish","A",4,1,3],["winner","A",5,1,4],["Judge","R",6,2,0],["provide_start_signal","A",7,2,1],["watch","A",8,2,2] ], + +[[2,1],[3,2],[4,2],[4,6],[5,2],[7,6],[8,6]], +[[3,7],[4,3],[4,8],[5,4],[8,7]] +,{"VIEWS":[ ]} +], + +["U", 0.140351, +[ ["0 cars from 1 have finished","T",8,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["break","A",4,1,3],["Judge","R",5,2,0],["provide_start_signal","A",6,2,1],["watch","A",7,2,2] ], + +[[2,1],[3,2],[4,2],[6,5],[7,5]], +[[3,6],[4,3],[7,6]] +,{"VIEWS":[ ]} +], + +["U", 0.0701754, +[ ["All cars have finished","T",11,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["finish","A",5,1,4],["winner","A",6,1,5],["Judge","R",7,2,0],["provide_start_signal","A",8,2,1],["watch","A",9,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,7],[6,2],[8,7],[9,7]], +[[3,8],[4,3],[5,4],[5,9],[6,5],[9,8]] +,{"VIEWS":[ ]} +], + +["U", 0.140351, +[ ["0 cars from 1 have finished","T",9,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["break","A",5,1,4],["Judge","R",6,2,0],["provide_start_signal","A",7,2,1],["watch","A",8,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[7,6],[8,6]], +[[3,7],[4,3],[5,4],[8,7]] +,{"VIEWS":[ ]} +], + +["U", 0.0701754, +[ ["All cars have finished","T",12,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["finish","A",6,1,5],["winner","A",7,1,6],["Judge","R",8,2,0],["provide_start_signal","A",9,2,1],["watch","A",10,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,8],[7,2],[9,8],[10,8]], +[[3,9],[4,3],[5,4],[6,5],[6,10],[7,6],[10,9]] +,{"VIEWS":[ ]} +], + +["U", 0.140351, +[ ["0 cars from 1 have finished","T",10,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["break","A",6,1,5],["Judge","R",7,2,0],["provide_start_signal","A",8,2,1],["watch","A",9,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[8,7],[9,7]], +[[3,8],[4,3],[5,4],[6,5],[9,8]] +,{"VIEWS":[ ]} +], + +["U", 0.00584795, +[ ["All cars have finished","T",14,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["finish","A",4,1,3],["winner","A",5,1,4],["Car","C",6,2,1],["Start","A",7,2,2],["finish","A",8,2,3],["Judge","R",9,3,0],["provide_start_signal","A",10,3,1],["watch","A",11,3,2] ], + +[[2,1],[3,2],[4,2],[4,9],[5,2],[6,1],[7,6],[8,6],[8,9],[10,9],[11,9]], +[[3,10],[4,3],[4,11],[5,4],[7,10],[8,7],[8,4],[11,10]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",13,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["finish","A",4,1,3],["winner","A",5,1,4],["Car","C",6,2,1],["Start","A",7,2,2],["break","A",8,2,3],["Judge","R",9,3,0],["provide_start_signal","A",10,3,1],["watch","A",11,3,2] ], + +[[2,1],[3,2],[4,2],[4,9],[5,2],[6,1],[7,6],[8,6],[10,9],[11,9]], +[[3,10],[4,3],[4,11],[5,4],[7,10],[8,7],[11,10]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",13,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["break","A",4,1,3],["Car","C",5,2,1],["Start","A",6,2,2],["finish","A",7,2,3],["winner","A",8,2,4],["Judge","R",9,3,0],["provide_start_signal","A",10,3,1],["watch","A",11,3,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[7,9],[8,5],[10,9],[11,9]], +[[3,10],[4,3],[6,10],[7,6],[7,11],[8,7],[11,10]] +,{"VIEWS":[ ]} +], + +["U", 0.0233918, +[ ["0 cars from 2 have finished","T",11,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["break","A",4,1,3],["Car","C",5,2,1],["Start","A",6,2,2],["break","A",7,2,3],["Judge","R",8,3,0],["provide_start_signal","A",9,3,1],["watch","A",10,3,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[9,8],[10,8]], +[[3,9],[4,3],[6,9],[7,6],[10,9]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",14,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["break","A",4,1,3],["Car","C",5,2,1],["Start","A",6,2,2],["drive_lap","A",7,2,3],["finish","A",8,2,4],["winner","A",9,2,5],["Judge","R",10,3,0],["provide_start_signal","A",11,3,1],["watch","A",12,3,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[8,10],[9,5],[11,10],[12,10]], +[[3,11],[4,3],[6,11],[7,6],[8,7],[8,12],[9,8],[12,11]] +,{"VIEWS":[ ]} +], + +["U", 0.0233918, +[ ["0 cars from 2 have finished","T",12,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["break","A",4,1,3],["Car","C",5,2,1],["Start","A",6,2,2],["drive_lap","A",7,2,3],["break","A",8,2,4],["Judge","R",9,3,0],["provide_start_signal","A",10,3,1],["watch","A",11,3,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[10,9],[11,9]], +[[3,10],[4,3],[6,10],[7,6],[8,7],[11,10]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",15,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["break","A",4,1,3],["Car","C",5,2,1],["Start","A",6,2,2],["drive_lap","A",7,2,3],["drive_lap","A",8,2,4],["finish","A",9,2,5],["winner","A",10,2,6],["Judge","R",11,3,0],["provide_start_signal","A",12,3,1],["watch","A",13,3,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[9,11],[10,5],[12,11],[13,11]], +[[3,12],[4,3],[6,12],[7,6],[8,7],[9,8],[9,13],[10,9],[13,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0233918, +[ ["0 cars from 2 have finished","T",13,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["break","A",4,1,3],["Car","C",5,2,1],["Start","A",6,2,2],["drive_lap","A",7,2,3],["drive_lap","A",8,2,4],["break","A",9,2,5],["Judge","R",10,3,0],["provide_start_signal","A",11,3,1],["watch","A",12,3,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10]], +[[3,11],[4,3],[6,11],[7,6],[8,7],[9,8],[12,11]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",14,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["finish","A",5,1,4],["winner","A",6,1,5],["Car","C",7,2,1],["Start","A",8,2,2],["break","A",9,2,3],["Judge","R",10,3,0],["provide_start_signal","A",11,3,1],["watch","A",12,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,10],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10]], +[[3,11],[4,3],[5,4],[5,12],[6,5],[8,11],[9,8],[12,11]] +,{"VIEWS":[ ]} +], + +["U", 0.00584795, +[ ["All cars have finished","T",16,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["finish","A",5,1,4],["winner","A",6,1,5],["Car","C",7,2,1],["Start","A",8,2,2],["drive_lap","A",9,2,3],["finish","A",10,2,4],["Judge","R",11,3,0],["provide_start_signal","A",12,3,1],["watch","A",13,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,11],[6,2],[7,1],[8,7],[9,7],[10,7],[10,11],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[5,13],[6,5],[8,12],[9,8],[10,9],[10,5],[13,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",15,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["finish","A",5,1,4],["winner","A",6,1,5],["Car","C",7,2,1],["Start","A",8,2,2],["drive_lap","A",9,2,3],["break","A",10,2,4],["Judge","R",11,3,0],["provide_start_signal","A",12,3,1],["watch","A",13,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,11],[6,2],[7,1],[8,7],[9,7],[10,7],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[5,13],[6,5],[8,12],[9,8],[10,9],[13,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0233918, +[ ["0 cars from 2 have finished","T",12,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["break","A",5,1,4],["Car","C",6,2,1],["Start","A",7,2,2],["break","A",8,2,3],["Judge","R",9,3,0],["provide_start_signal","A",10,3,1],["watch","A",11,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[10,9],[11,9]], +[[3,10],[4,3],[5,4],[7,10],[8,7],[11,10]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",15,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["break","A",5,1,4],["Car","C",6,2,1],["Start","A",7,2,2],["drive_lap","A",8,2,3],["finish","A",9,2,4],["winner","A",10,2,5],["Judge","R",11,3,0],["provide_start_signal","A",12,3,1],["watch","A",13,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[9,6],[9,11],[10,6],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[7,12],[8,7],[9,8],[9,13],[10,9],[13,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0233918, +[ ["0 cars from 2 have finished","T",13,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["break","A",5,1,4],["Car","C",6,2,1],["Start","A",7,2,2],["drive_lap","A",8,2,3],["break","A",9,2,4],["Judge","R",10,3,0],["provide_start_signal","A",11,3,1],["watch","A",12,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[9,6],[11,10],[12,10]], +[[3,11],[4,3],[5,4],[7,11],[8,7],[9,8],[12,11]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",16,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["break","A",5,1,4],["Car","C",6,2,1],["Start","A",7,2,2],["drive_lap","A",8,2,3],["drive_lap","A",9,2,4],["finish","A",10,2,5],["winner","A",11,2,6],["Judge","R",12,3,0],["provide_start_signal","A",13,3,1],["watch","A",14,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[9,6],[10,6],[10,12],[11,6],[13,12],[14,12]], +[[3,13],[4,3],[5,4],[7,13],[8,7],[9,8],[10,9],[10,14],[11,10],[14,13]] +,{"VIEWS":[ ]} +], + +["U", 0.0233918, +[ ["0 cars from 2 have finished","T",14,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["break","A",5,1,4],["Car","C",6,2,1],["Start","A",7,2,2],["drive_lap","A",8,2,3],["drive_lap","A",9,2,4],["break","A",10,2,5],["Judge","R",11,3,0],["provide_start_signal","A",12,3,1],["watch","A",13,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[9,6],[10,6],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[7,12],[8,7],[9,8],[10,9],[13,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",15,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["finish","A",6,1,5],["winner","A",7,1,6],["Car","C",8,2,1],["Start","A",9,2,2],["break","A",10,2,3],["Judge","R",11,3,0],["provide_start_signal","A",12,3,1],["watch","A",13,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,11],[7,2],[8,1],[9,8],[10,8],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[6,5],[6,13],[7,6],[9,12],[10,9],[13,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",16,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["finish","A",6,1,5],["winner","A",7,1,6],["Car","C",8,2,1],["Start","A",9,2,2],["drive_lap","A",10,2,3],["break","A",11,2,4],["Judge","R",12,3,0],["provide_start_signal","A",13,3,1],["watch","A",14,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,12],[7,2],[8,1],[9,8],[10,8],[11,8],[13,12],[14,12]], +[[3,13],[4,3],[5,4],[6,5],[6,14],[7,6],[9,13],[10,9],[11,10],[14,13]] +,{"VIEWS":[ ]} +], + +["U", 0.00584795, +[ ["All cars have finished","T",18,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["finish","A",6,1,5],["winner","A",7,1,6],["Car","C",8,2,1],["Start","A",9,2,2],["drive_lap","A",10,2,3],["drive_lap","A",11,2,4],["finish","A",12,2,5],["Judge","R",13,3,0],["provide_start_signal","A",14,3,1],["watch","A",15,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,13],[7,2],[8,1],[9,8],[10,8],[11,8],[12,8],[12,13],[14,13],[15,13]], +[[3,14],[4,3],[5,4],[6,5],[6,15],[7,6],[9,14],[10,9],[11,10],[12,11],[12,6],[15,14]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",17,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["finish","A",6,1,5],["winner","A",7,1,6],["Car","C",8,2,1],["Start","A",9,2,2],["drive_lap","A",10,2,3],["drive_lap","A",11,2,4],["break","A",12,2,5],["Judge","R",13,3,0],["provide_start_signal","A",14,3,1],["watch","A",15,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,13],[7,2],[8,1],[9,8],[10,8],[11,8],[12,8],[14,13],[15,13]], +[[3,14],[4,3],[5,4],[6,5],[6,15],[7,6],[9,14],[10,9],[11,10],[12,11],[15,14]] +,{"VIEWS":[ ]} +], + +["U", 0.0233918, +[ ["0 cars from 2 have finished","T",13,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["break","A",6,1,5],["Car","C",7,2,1],["Start","A",8,2,2],["break","A",9,2,3],["Judge","R",10,3,0],["provide_start_signal","A",11,3,1],["watch","A",12,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10]], +[[3,11],[4,3],[5,4],[6,5],[8,11],[9,8],[12,11]] +,{"VIEWS":[ ]} +], + +["U", 0.0233918, +[ ["0 cars from 2 have finished","T",14,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["break","A",6,1,5],["Car","C",7,2,1],["Start","A",8,2,2],["drive_lap","A",9,2,3],["break","A",10,2,4],["Judge","R",11,3,0],["provide_start_signal","A",12,3,1],["watch","A",13,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[6,5],[8,12],[9,8],[10,9],[13,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0116959, +[ ["1 cars from 2 have finished","T",17,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["break","A",6,1,5],["Car","C",7,2,1],["Start","A",8,2,2],["drive_lap","A",9,2,3],["drive_lap","A",10,2,4],["finish","A",11,2,5],["winner","A",12,2,6],["Judge","R",13,3,0],["provide_start_signal","A",14,3,1],["watch","A",15,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[11,13],[12,7],[14,13],[15,13]], +[[3,14],[4,3],[5,4],[6,5],[8,14],[9,8],[10,9],[11,10],[11,15],[12,11],[15,14]] +,{"VIEWS":[ ]} +], + +["U", 0.0233918, +[ ["0 cars from 2 have finished","T",15,0,0],["Cars","R",1,1,0],["Car","C",2,1,1],["Start","A",3,1,2],["drive_lap","A",4,1,3],["drive_lap","A",5,1,4],["break","A",6,1,5],["Car","C",7,2,1],["Start","A",8,2,2],["drive_lap","A",9,2,3],["drive_lap","A",10,2,4],["break","A",11,2,5],["Judge","R",12,3,0],["provide_start_signal","A",13,3,1],["watch","A",14,3,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12]], +[[3,13],[4,3],[5,4],[6,5],[8,13],[9,8],[10,9],[11,10],[14,13]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example06_Assertion_Checking.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example06_Assertion_Checking.json new file mode 100644 index 0000000..ac8d2a1 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example06_Assertion_Checking.json @@ -0,0 +1,107 @@ +{"traces":[ + +["U", 0.571429, +[ ["TaskA","R",1,0,0],["Connector_A_to_B","R",2,1,0],["TaskB","R",3,2,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0714286, +[ ["TaskA","R",1,0,0],["A_sends_request_to_B","A",2,0,1],["A_receives_data_from_B","A",3,0,2],["Connector_A_to_B","R",4,1,0],["B_receives_request_from_A","A",6,1,1],["B_sends_data_to_A","A",7,1,2],["TaskB","R",9,2,0] ], + +[[2,1],[2,4],[3,1],[3,4],[6,4],[6,9],[7,4],[7,9]], +[[3,2],[3,7],[6,2],[7,6]] +,{"VIEWS":[ ]} +], + +["M", 0.0714286, +[ ["loss of reception detected","T",12,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["Connector_A_to_B","R",4,2,0],["B_receives_request_from_A","A",6,2,1],["B_sends_data_to_A","A",7,2,2],["TaskB","R",9,3,0] ], + +[[2,1],[2,4],[3,1],[3,4],[6,4],[6,9],[7,4],[7,9]], +[[3,2],[3,7],[6,2],[7,6]] +,{"VIEWS":[ ]} +], + +["M", 0.142857, +[ ["loss of reception detected","T",8,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["Connector_A_to_B","R",4,2,0],["TaskB","R",7,3,0] ], + +[[2,1],[2,4],[3,1],[3,4]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.00892857, +[ ["TaskA","R",1,0,0],["A_sends_request_to_B","A",2,0,1],["A_receives_data_from_B","A",3,0,2],["A_sends_request_to_B","A",4,0,3],["A_receives_data_from_B","A",5,0,4],["Connector_A_to_B","R",6,1,0],["B_receives_request_from_A","A",8,1,1],["B_sends_data_to_A","A",9,1,2],["B_receives_request_from_A","A",12,1,3],["B_sends_data_to_A","A",13,1,4],["TaskB","R",15,2,0] ], + +[[2,1],[2,6],[3,1],[3,6],[4,1],[4,6],[5,1],[5,6],[8,6],[8,15],[9,6],[9,15],[12,6],[12,15],[13,6],[13,15]], +[[3,2],[3,9],[4,3],[5,4],[5,13],[8,2],[9,8],[12,4],[12,9],[13,12]] +,{"VIEWS":[ ]} +], + +["M", 0.00892857, +[ ["loss of reception detected","T",20,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_receives_data_from_B","A",3,1,2],["A_sends_request_to_B","A",4,1,3],["A_timeout_waiting_from_B","A",5,1,4],["Connector_A_to_B","R",6,2,0],["B_receives_request_from_A","A",8,2,1],["B_sends_data_to_A","A",9,2,2],["B_receives_request_from_A","A",12,2,3],["B_sends_data_to_A","A",13,2,4],["TaskB","R",15,3,0] ], + +[[2,1],[2,6],[3,1],[3,6],[4,1],[4,6],[5,1],[5,6],[8,6],[8,15],[9,6],[9,15],[12,6],[12,15],[13,6],[13,15]], +[[3,2],[3,9],[4,3],[5,4],[5,13],[8,2],[9,8],[12,4],[12,9],[13,12]] +,{"VIEWS":[ ]} +], + +["M", 0.0178571, +[ ["loss of reception detected","T",16,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_receives_data_from_B","A",3,1,2],["A_sends_request_to_B","A",4,1,3],["A_timeout_waiting_from_B","A",5,1,4],["Connector_A_to_B","R",6,2,0],["B_receives_request_from_A","A",8,2,1],["B_sends_data_to_A","A",9,2,2],["TaskB","R",13,3,0] ], + +[[2,1],[2,6],[3,1],[3,6],[4,1],[4,6],[5,1],[5,6],[8,6],[8,13],[9,6],[9,13]], +[[3,2],[3,9],[4,3],[5,4],[8,2],[9,8]] +,{"VIEWS":[ ]} +], + +["M", 0.00892857, +[ ["loss of reception detected","T",20,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["A_sends_request_to_B","A",4,1,3],["A_receives_data_from_B","A",5,1,4],["Connector_A_to_B","R",6,2,0],["B_receives_request_from_A","A",8,2,1],["B_sends_data_to_A","A",9,2,2],["B_receives_request_from_A","A",12,2,3],["B_sends_data_to_A","A",13,2,4],["TaskB","R",15,3,0] ], + +[[2,1],[2,6],[3,1],[3,6],[4,1],[4,6],[5,1],[5,6],[8,6],[8,15],[9,6],[9,15],[12,6],[12,15],[13,6],[13,15]], +[[3,2],[3,9],[4,3],[5,4],[5,13],[8,2],[9,8],[12,4],[12,9],[13,12]] +,{"VIEWS":[ ]} +], + +["M", 0.0178571, +[ ["loss of reception detected","T",16,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["A_sends_request_to_B","A",4,1,3],["A_receives_data_from_B","A",5,1,4],["Connector_A_to_B","R",6,2,0],["B_receives_request_from_A","A",10,2,3],["B_sends_data_to_A","A",11,2,4],["TaskB","R",13,3,0] ], + +[[2,1],[2,6],[3,1],[3,6],[4,1],[4,6],[5,1],[5,6],[10,6],[10,13],[11,6],[11,13]], +[[3,2],[4,3],[5,4],[5,11],[10,4],[11,10]] +,{"VIEWS":[ ]} +], + +["M", 0.00892857, +[ ["loss of reception detected","T",20,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["A_sends_request_to_B","A",4,1,3],["A_timeout_waiting_from_B","A",5,1,4],["Connector_A_to_B","R",6,2,0],["B_receives_request_from_A","A",8,2,1],["B_sends_data_to_A","A",9,2,2],["B_receives_request_from_A","A",12,2,3],["B_sends_data_to_A","A",13,2,4],["TaskB","R",15,3,0] ], + +[[2,1],[2,6],[3,1],[3,6],[4,1],[4,6],[5,1],[5,6],[8,6],[8,15],[9,6],[9,15],[12,6],[12,15],[13,6],[13,15]], +[[3,2],[3,9],[4,3],[5,4],[5,13],[8,2],[9,8],[12,4],[12,9],[13,12]] +,{"VIEWS":[ ]} +], + +["M", 0.0178571, +[ ["loss of reception detected","T",16,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["A_sends_request_to_B","A",4,1,3],["A_timeout_waiting_from_B","A",5,1,4],["Connector_A_to_B","R",6,2,0],["B_receives_request_from_A","A",8,2,1],["B_sends_data_to_A","A",9,2,2],["TaskB","R",13,3,0] ], + +[[2,1],[2,6],[3,1],[3,6],[4,1],[4,6],[5,1],[5,6],[8,6],[8,13],[9,6],[9,13]], +[[3,2],[3,9],[4,3],[5,4],[8,2],[9,8]] +,{"VIEWS":[ ]} +], + +["M", 0.0178571, +[ ["loss of reception detected","T",16,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["A_sends_request_to_B","A",4,1,3],["A_timeout_waiting_from_B","A",5,1,4],["Connector_A_to_B","R",6,2,0],["B_receives_request_from_A","A",10,2,3],["B_sends_data_to_A","A",11,2,4],["TaskB","R",13,3,0] ], + +[[2,1],[2,6],[3,1],[3,6],[4,1],[4,6],[5,1],[5,6],[10,6],[10,13],[11,6],[11,13]], +[[3,2],[4,3],[5,4],[5,11],[10,4],[11,10]] +,{"VIEWS":[ ]} +], + +["M", 0.0357143, +[ ["loss of reception detected","T",12,0,0],["TaskA","R",1,1,0],["A_sends_request_to_B","A",2,1,1],["A_timeout_waiting_from_B","A",3,1,2],["A_sends_request_to_B","A",4,1,3],["A_timeout_waiting_from_B","A",5,1,4],["Connector_A_to_B","R",6,2,0],["TaskB","R",11,3,0] ], + +[[2,1],[2,6],[3,1],[3,6],[4,1],[4,6],[5,1],[5,6]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example07_Unconstrained_Stack.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example07_Unconstrained_Stack.json new file mode 100644 index 0000000..a5cff10 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example07_Unconstrained_Stack.json @@ -0,0 +1,59 @@ +{"traces":[ + +["U", 0.432432, +[ ["Stack","R",1,0,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.216216, +[ ["Stack","R",1,0,0],["push","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["M", 0.108108, +[ ["Stack","R",1,0,0],["pop","A",2,0,1],["bang","A",3,0,2],["This event tries to pop empty Stack","T",4,1,1] ], + +[[2,1],[3,1],[4,1]], +[[2,4],[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.108108, +[ ["Stack","R",1,0,0],["push","A",2,0,1],["push","A",3,0,2] ], + +[[2,1],[3,1]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0540541, +[ ["Stack","R",1,0,0],["push","A",2,0,1],["pop","A",3,0,2] ], + +[[2,1],[3,1]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["M", 0.0540541, +[ ["Stack","R",1,0,0],["pop","A",2,0,1],["bang","A",3,0,2],["push","A",4,0,3],["This event tries to pop empty Stack","T",5,1,1] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[2,5],[3,2],[4,3]] +,{"VIEWS":[ ]} +], + +["M", 0.027027, +[ ["Stack","R",1,0,0],["pop","A",2,0,1],["bang","A",3,0,2],["pop","A",4,0,3],["bang","A",5,0,4],["This event tries to pop empty Stack","T",6,1,1],["This event tries to pop empty Stack","T",7,1,2] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1]], +[[2,6],[3,2],[4,3],[4,7],[5,4]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example08_Operational_Process.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example08_Operational_Process.json new file mode 100644 index 0000000..603295a --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example08_Operational_Process.json @@ -0,0 +1,11 @@ +{"traces":[ + +["U", 1, +[ ["Command_and_Control","R",1,0,0],["Receive_distress_signal","A",2,0,2],["Pass_mission_information","A",3,0,3],["Acknowledge_search_plan","A",4,0,9],["Receive_relayed_survivor_location_and_situation","A",5,0,19],["On_Scene_Commander","R",6,1,0],["Receive_mission_information","A",7,1,3],["Relay_mission_information","A",8,1,4],["Attempt_contact_with_PID","A",9,1,5],["Assess_environmental_conditions","A",10,1,6],["Receive_environmental_conditions","A",11,1,8],["Provide_search_plan","A",12,1,9],["Communicate_search_plan_and_responsibilities","A",13,1,10],["Scan_environment_for_signs_of_PID","A",14,1,12],["Receive_updates_for_OSC","A",15,1,14],["Receive_PID_location_and_situation","A",16,1,18],["Relay_survivor_location_and_situation","A",17,1,19],["PID","R",18,2,0],["Send_distress_signal","A",19,2,1],["Identify_self_as_PID","A",20,2,15],["Present_for_rescue","A",21,2,17],["Physical_Environment","R",22,3,0],["Provide_environmental_conditions","A",23,3,7],["SAR_Assets","R",24,4,0],["Receive_relayed_mission_information","A",25,4,5],["Confirm_search_plan_and_responsibilities","A",26,4,11],["Provide_updates_to_OSC","A",28,4,13],["Spot_object_of_interest","A",29,4,14],["Maneuver_to_rescue_PID","A",30,4,16],["Notify_OSC_of_PID_location_and_situation","A",31,4,17] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[9,6],[10,6],[11,6],[12,6],[13,6],[14,6],[14,24],[15,6],[16,6],[17,6],[19,18],[20,18],[21,18],[23,22],[25,24],[26,24],[28,24],[29,24],[30,24],[31,24]], +[[2,19],[3,2],[4,3],[4,12],[5,4],[5,17],[7,3],[8,7],[9,8],[10,9],[11,10],[11,23],[12,11],[13,12],[13,4],[14,13],[14,26],[15,14],[15,28],[16,15],[16,31],[17,16],[20,19],[20,29],[21,20],[21,30],[23,10],[25,8],[26,25],[26,13],[28,14],[29,28],[30,29],[30,20],[31,30]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example09_Employee_Employer.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example09_Employee_Employer.json new file mode 100644 index 0000000..c4b0c22 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example09_Employee_Employer.json @@ -0,0 +1,11 @@ +{"traces":[ + +["U", 1, +[ ["Employee","R",1,0,0],["SendArrivalDate","A",2,0,1],["MedicalCheck","A",3,0,2],["ReadyToWork","A",4,0,3],["Employer","R",5,1,0],["EmployeeArrival","A",6,1,1],["Fill_HR_DB","A",7,1,2],["ProvideComputer","A",10,1,3],["ProvideOffice","A",9,2,1] ], + +[[2,1],[3,1],[3,5],[4,1],[4,5],[6,5],[7,5],[9,5],[10,5]], +[[3,2],[3,7],[4,3],[4,10],[4,3],[6,2],[7,6],[9,6],[10,9],[10,7]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example10_Pipe_Filter.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example10_Pipe_Filter.json new file mode 100644 index 0000000..bf8d948 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example10_Pipe_Filter.json @@ -0,0 +1,155 @@ +{"traces":[ + +["U", 0.515924, +[ ["Producer","R",1,0,0],["Filter1","R",2,1,0],["Filter2","R",3,2,0],["Consumer","R",4,3,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["M", 0.171975, +[ ["1 messages did not reach Consumer","T",8,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["Filter1","R",3,2,0],["receive","A",4,2,1],["some messages have been lost in Filter1","T",5,2,2],["Filter2","R",6,3,0],["Consumer","R",7,4,0] ], + +[[2,1],[4,3],[5,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["M", 0.0573248, +[ ["1 messages did not reach Consumer","T",10,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["Filter1","R",3,2,0],["receive","A",4,2,1],["send","A",5,2,2],["Filter2","R",6,3,0],["receive","A",7,3,2],["some messages have been lost in Filter2","T",8,3,3],["Consumer","R",9,4,0] ], + +[[2,1],[4,3],[5,3],[7,6],[8,6]], +[[4,2],[5,4],[7,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0573248, +[ ["Producer","R",1,0,0],["send","A",2,0,1],["Filter1","R",3,1,0],["receive","A",4,1,1],["send","A",5,1,2],["Filter2","R",6,2,0],["receive","A",7,2,2],["send","A",8,2,3],["Consumer","R",9,3,0],["receive","A",10,3,3] ], + +[[2,1],[4,3],[5,3],[7,6],[8,6],[10,9]], +[[4,2],[5,4],[7,5],[8,7],[10,8]] +,{"VIEWS":[ ]} +], + +["M", 0.0573248, +[ ["2 messages did not reach Consumer","T",10,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["receive","A",6,2,2],["some messages have been lost in Filter1","T",7,2,3],["Filter2","R",8,3,0],["Consumer","R",9,4,0] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["M", 0.0191083, +[ ["2 messages did not reach Consumer","T",13,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["receive","A",6,2,2],["send","A",7,2,3],["some messages have been lost in Filter1","T",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,3],["some messages have been lost in Filter2","T",11,3,2],["Consumer","R",12,4,0] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9]], +[[3,2],[5,2],[6,5],[6,3],[7,6],[10,7]] +,{"VIEWS":[ ]} +], + +["M", 0.0191083, +[ ["1 messages did not reach Consumer","T",14,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["receive","A",6,2,2],["send","A",7,2,3],["some messages have been lost in Filter1","T",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,3],["send","A",11,3,4],["Consumer","R",12,4,0],["receive","A",13,4,4] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[13,12]], +[[3,2],[5,2],[6,5],[6,3],[7,6],[10,7],[11,10],[13,11]] +,{"VIEWS":[ ]} +], + +["M", 0.00636943, +[ ["2 messages did not reach Consumer","T",14,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["receive","A",6,2,2],["send","A",7,2,3],["send","A",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,3],["receive","A",11,3,4],["some messages have been lost in Filter2","T",12,3,5],["Consumer","R",13,4,0] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9]], +[[3,2],[5,2],[6,5],[6,3],[7,6],[8,7],[10,7],[11,10],[11,8]] +,{"VIEWS":[ ]} +], + +["M", 0.00636943, +[ ["1 messages did not reach Consumer","T",16,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["receive","A",6,2,2],["send","A",7,2,3],["send","A",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,3],["receive","A",11,3,4],["send","A",12,3,5],["some messages have been lost in Filter2","T",13,3,6],["Consumer","R",14,4,0],["receive","A",15,4,5] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9],[13,9],[15,14]], +[[3,2],[5,2],[6,5],[6,3],[7,6],[8,7],[10,7],[11,10],[11,8],[12,11],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.00636943, +[ ["Producer","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Filter1","R",4,1,0],["receive","A",5,1,1],["receive","A",6,1,2],["send","A",7,1,3],["send","A",8,1,4],["Filter2","R",9,2,0],["receive","A",10,2,3],["receive","A",11,2,4],["send","A",12,2,5],["send","A",13,2,6],["Consumer","R",14,3,0],["receive","A",15,3,5],["receive","A",16,3,6] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9],[13,9],[15,14],[16,14]], +[[3,2],[5,2],[6,5],[6,3],[7,6],[8,7],[10,7],[11,10],[11,8],[12,11],[13,12],[15,12],[16,15],[16,13]] +,{"VIEWS":[ ]} +], + +["M", 0.00636943, +[ ["1 messages did not reach Consumer","T",16,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["receive","A",6,2,2],["send","A",7,2,3],["send","A",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,3],["send","A",11,3,4],["receive","A",12,3,5],["some messages have been lost in Filter2","T",13,3,6],["Consumer","R",14,4,0],["receive","A",15,4,4] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9],[13,9],[15,14]], +[[3,2],[5,2],[6,5],[6,3],[7,6],[8,7],[10,7],[11,10],[12,11],[12,8],[15,11]] +,{"VIEWS":[ ]} +], + +["U", 0.00636943, +[ ["Producer","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Filter1","R",4,1,0],["receive","A",5,1,1],["receive","A",6,1,2],["send","A",7,1,3],["send","A",8,1,4],["Filter2","R",9,2,0],["receive","A",10,2,3],["send","A",11,2,4],["receive","A",12,2,5],["send","A",13,2,6],["Consumer","R",14,3,0],["receive","A",15,3,4],["receive","A",16,3,6] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9],[13,9],[15,14],[16,14]], +[[3,2],[5,2],[6,5],[6,3],[7,6],[8,7],[10,7],[11,10],[12,11],[12,8],[13,12],[15,11],[16,15],[16,13]] +,{"VIEWS":[ ]} +], + +["M", 0.0191083, +[ ["2 messages did not reach Consumer","T",13,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["send","A",6,2,2],["receive","A",7,2,3],["some messages have been lost in Filter1","T",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,2],["some messages have been lost in Filter2","T",11,3,3],["Consumer","R",12,4,0] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9]], +[[3,2],[5,2],[6,5],[7,6],[7,3],[10,6]] +,{"VIEWS":[ ]} +], + +["M", 0.0191083, +[ ["1 messages did not reach Consumer","T",14,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["send","A",6,2,2],["receive","A",7,2,3],["some messages have been lost in Filter1","T",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,2],["send","A",11,3,3],["Consumer","R",12,4,0],["receive","A",13,4,3] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[13,12]], +[[3,2],[5,2],[6,5],[7,6],[7,3],[10,6],[11,10],[13,11]] +,{"VIEWS":[ ]} +], + +["M", 0.00636943, +[ ["2 messages did not reach Consumer","T",14,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["send","A",6,2,2],["receive","A",7,2,3],["send","A",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,2],["receive","A",11,3,4],["some messages have been lost in Filter2","T",12,3,3],["Consumer","R",13,4,0] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9]], +[[3,2],[5,2],[6,5],[7,6],[7,3],[8,7],[10,6],[11,10],[11,8]] +,{"VIEWS":[ ]} +], + +["M", 0.00636943, +[ ["1 messages did not reach Consumer","T",16,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["send","A",6,2,2],["receive","A",7,2,3],["send","A",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,2],["receive","A",11,3,4],["send","A",12,3,5],["some messages have been lost in Filter2","T",13,3,6],["Consumer","R",14,4,0],["receive","A",15,4,5] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9],[13,9],[15,14]], +[[3,2],[5,2],[6,5],[7,6],[7,3],[8,7],[10,6],[11,10],[11,8],[12,11],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.00636943, +[ ["Producer","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Filter1","R",4,1,0],["receive","A",5,1,1],["send","A",6,1,2],["receive","A",7,1,3],["send","A",8,1,4],["Filter2","R",9,2,0],["receive","A",10,2,2],["receive","A",11,2,4],["send","A",12,2,5],["send","A",13,2,6],["Consumer","R",14,3,0],["receive","A",15,3,5],["receive","A",16,3,6] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9],[13,9],[15,14],[16,14]], +[[3,2],[5,2],[6,5],[7,6],[7,3],[8,7],[10,6],[11,10],[11,8],[12,11],[13,12],[15,12],[16,15],[16,13]] +,{"VIEWS":[ ]} +], + +["M", 0.00636943, +[ ["1 messages did not reach Consumer","T",16,0,0],["Producer","R",1,1,0],["send","A",2,1,1],["send","A",3,1,2],["Filter1","R",4,2,0],["receive","A",5,2,1],["send","A",6,2,2],["receive","A",7,2,3],["send","A",8,2,4],["Filter2","R",9,3,0],["receive","A",10,3,2],["send","A",11,3,3],["receive","A",12,3,4],["some messages have been lost in Filter2","T",13,3,5],["Consumer","R",14,4,0],["receive","A",15,4,3] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9],[13,9],[15,14]], +[[3,2],[5,2],[6,5],[7,6],[7,3],[8,7],[10,6],[11,10],[12,11],[12,8],[15,11]] +,{"VIEWS":[ ]} +], + +["U", 0.00636943, +[ ["Producer","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Filter1","R",4,1,0],["receive","A",5,1,1],["send","A",6,1,2],["receive","A",7,1,3],["send","A",8,1,4],["Filter2","R",9,2,0],["receive","A",10,2,2],["send","A",11,2,3],["receive","A",12,2,4],["send","A",13,2,5],["Consumer","R",14,3,0],["receive","A",15,3,3],["receive","A",16,3,5] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,4],[10,9],[11,9],[12,9],[13,9],[15,14],[16,14]], +[[3,2],[5,2],[6,5],[7,6],[7,3],[8,7],[10,6],[11,10],[12,11],[12,8],[13,12],[15,11],[16,15],[16,13]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example11_Publish_Subscribe.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example11_Publish_Subscribe.json new file mode 100644 index 0000000..2a5156b --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example11_Publish_Subscribe.json @@ -0,0 +1,411 @@ +{"traces":[ + +["U", 0.376355, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Unsubscribe","A",4,0,4],["Subscribers","R",5,1,0],["Client","C",6,1,1],["Receive","A",8,1,3] ], + +[[2,1],[2,6],[3,1],[4,1],[4,6],[6,5],[8,6]], +[[3,2],[4,3],[4,8],[8,2],[8,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0418172, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Unsubscribe","A",5,0,5],["Subscribers","R",6,1,0],["Client","C",7,1,1],["Client","C",10,2,1] ], + +[[2,1],[2,10],[3,1],[3,7],[4,1],[4,10],[5,1],[5,7],[7,6],[10,6]], +[[3,2],[4,3],[4,2],[5,4],[5,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0418172, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Unsubscribe","A",5,0,5],["Subscribers","R",6,1,0],["Client","C",7,1,1],["Client","C",10,2,1] ], + +[[2,1],[2,10],[3,1],[3,7],[4,1],[4,7],[5,1],[5,10],[7,6],[10,6]], +[[3,2],[4,3],[5,4],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0418172, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Unsubscribe","A",5,0,5],["Subscribers","R",6,1,0],["Client","C",7,1,1],["Client","C",10,2,1] ], + +[[2,1],[2,7],[3,1],[3,10],[4,1],[4,10],[5,1],[5,7],[7,6],[10,6]], +[[3,2],[4,3],[5,4],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0418172, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Unsubscribe","A",5,0,5],["Subscribers","R",6,1,0],["Client","C",7,1,1],["Client","C",10,2,1] ], + +[[2,1],[2,7],[3,1],[3,10],[4,1],[4,7],[5,1],[5,10],[7,6],[10,6]], +[[3,2],[4,3],[4,2],[5,4],[5,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0418172, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Unsubscribe","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Subscribers","R",6,1,0],["Client","C",7,1,1],["Client","C",10,2,1] ], + +[[2,1],[2,10],[3,1],[3,10],[4,1],[4,7],[5,1],[5,7],[7,6],[10,6]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.125452, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Send","A",4,0,4],["Unsubscribe","A",5,0,5],["Subscribers","R",6,1,0],["Client","C",7,1,1],["Receive","A",9,1,3],["Receive","A",10,1,4] ], + +[[2,1],[2,7],[3,1],[4,1],[5,1],[5,7],[7,6],[9,7],[10,7]], +[[3,2],[4,3],[5,4],[5,10],[9,2],[9,3],[10,9],[10,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0139391, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Send","A",5,0,5],["Unsubscribe","A",6,0,7],["Subscribers","R",7,1,0],["Client","C",8,1,1],["Client","C",11,2,1],["Receive","A",13,2,6] ], + +[[2,1],[2,11],[3,1],[3,8],[4,1],[4,8],[5,1],[6,1],[6,11],[8,7],[11,7],[13,11]], +[[3,2],[4,3],[5,4],[6,5],[6,13],[13,2],[13,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0139391, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Send","A",5,0,5],["Unsubscribe","A",6,0,7],["Subscribers","R",7,1,0],["Client","C",8,1,1],["Client","C",11,2,1],["Receive","A",13,2,6] ], + +[[2,1],[2,8],[3,1],[3,11],[4,1],[4,8],[5,1],[6,1],[6,11],[8,7],[11,7],[13,11]], +[[3,2],[4,3],[4,2],[5,4],[6,5],[6,13],[13,3],[13,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0139391, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Send","A",5,0,5],["Unsubscribe","A",6,0,6],["Subscribers","R",7,1,0],["Client","C",8,1,1],["Receive","A",10,1,5],["Client","C",12,2,1] ], + +[[2,1],[2,12],[3,1],[3,8],[4,1],[4,12],[5,1],[6,1],[6,8],[8,7],[10,8],[12,7]], +[[3,2],[4,3],[4,2],[5,4],[6,5],[6,10],[10,3],[10,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0139391, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Send","A",5,0,5],["Unsubscribe","A",6,0,6],["Subscribers","R",7,1,0],["Client","C",8,1,1],["Receive","A",10,1,5],["Client","C",12,2,1] ], + +[[2,1],[2,8],[3,1],[3,12],[4,1],[4,12],[5,1],[6,1],[6,8],[8,7],[10,8],[12,7]], +[[3,2],[4,3],[5,4],[6,5],[6,10],[10,2],[10,5]] +,{"VIEWS":[ ]} +], + +["M", 0.0139391, +[ ["this Send is received by 2 Clients","T",16,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Unsubscribe","A",5,1,6],["Unsubscribe","A",6,1,7],["Subscribers","R",7,2,0],["Client","C",8,2,1],["Receive","A",10,2,4],["Client","C",12,3,1],["Receive","A",14,3,5] ], + +[[2,1],[2,12],[3,1],[3,8],[4,1],[5,1],[5,12],[6,1],[6,8],[8,7],[10,8],[12,7],[14,12]], +[[3,2],[4,3],[4,16],[5,4],[5,14],[6,5],[6,10],[10,3],[10,4],[14,2],[14,4]] +,{"VIEWS":[ ]} +], + +["M", 0.0139391, +[ ["this Send is received by 2 Clients","T",16,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Unsubscribe","A",5,1,5],["Unsubscribe","A",6,1,6],["Subscribers","R",7,2,0],["Client","C",8,2,1],["Receive","A",10,2,4],["Client","C",12,3,1],["Receive","A",14,3,5] ], + +[[2,1],[2,12],[3,1],[3,8],[4,1],[5,1],[5,8],[6,1],[6,12],[8,7],[10,8],[12,7],[14,12]], +[[3,2],[4,3],[4,16],[5,4],[5,10],[6,5],[6,14],[10,3],[10,4],[14,2],[14,4]] +,{"VIEWS":[ ]} +], + +["M", 0.0139391, +[ ["this Send is received by 2 Clients","T",16,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Unsubscribe","A",5,1,6],["Unsubscribe","A",6,1,7],["Subscribers","R",7,2,0],["Client","C",8,2,1],["Receive","A",10,2,4],["Client","C",12,3,1],["Receive","A",14,3,5] ], + +[[2,1],[2,8],[3,1],[3,12],[4,1],[5,1],[5,12],[6,1],[6,8],[8,7],[10,8],[12,7],[14,12]], +[[3,2],[4,3],[4,16],[5,4],[5,14],[6,5],[6,10],[10,2],[10,4],[14,3],[14,4]] +,{"VIEWS":[ ]} +], + +["M", 0.0139391, +[ ["this Send is received by 2 Clients","T",16,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Unsubscribe","A",5,1,5],["Unsubscribe","A",6,1,6],["Subscribers","R",7,2,0],["Client","C",8,2,1],["Receive","A",10,2,4],["Client","C",12,3,1],["Receive","A",14,3,5] ], + +[[2,1],[2,8],[3,1],[3,12],[4,1],[5,1],[5,8],[6,1],[6,12],[8,7],[10,8],[12,7],[14,12]], +[[3,2],[4,3],[4,16],[5,4],[5,10],[6,5],[6,14],[10,2],[10,4],[14,3],[14,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0139391, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Unsubscribe","A",6,0,6],["Subscribers","R",7,1,0],["Client","C",8,1,1],["Client","C",11,2,1],["Receive","A",13,2,4] ], + +[[2,1],[2,11],[3,1],[4,1],[4,8],[5,1],[5,11],[6,1],[6,8],[8,7],[11,7],[13,11]], +[[3,2],[4,3],[5,4],[5,13],[6,5],[6,4],[13,2],[13,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0139391, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Unsubscribe","A",6,0,6],["Subscribers","R",7,1,0],["Client","C",8,1,1],["Client","C",11,2,1],["Receive","A",13,2,4] ], + +[[2,1],[2,11],[3,1],[4,1],[4,8],[5,1],[5,8],[6,1],[6,11],[8,7],[11,7],[13,11]], +[[3,2],[4,3],[5,4],[6,5],[6,13],[13,2],[13,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0139391, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Unsubscribe","A",6,0,6],["Subscribers","R",7,1,0],["Client","C",8,1,1],["Receive","A",10,1,3],["Client","C",12,2,1] ], + +[[2,1],[2,8],[3,1],[4,1],[4,12],[5,1],[5,12],[6,1],[6,8],[8,7],[10,8],[12,7]], +[[3,2],[4,3],[5,4],[6,5],[6,10],[10,2],[10,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0139391, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Unsubscribe","A",6,0,6],["Subscribers","R",7,1,0],["Client","C",8,1,1],["Receive","A",10,1,3],["Client","C",12,2,1] ], + +[[2,1],[2,8],[3,1],[4,1],[4,12],[5,1],[5,8],[6,1],[6,12],[8,7],[10,8],[12,7]], +[[3,2],[4,3],[5,4],[5,10],[6,5],[6,4],[10,2],[10,3]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Send","A",5,0,5],["Send","A",6,0,6],["Unsubscribe","A",7,0,8],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Client","C",12,2,1],["Receive","A",14,2,6],["Receive","A",15,2,7] ], + +[[2,1],[2,12],[3,1],[3,9],[4,1],[4,9],[5,1],[6,1],[7,1],[7,12],[9,8],[12,8],[14,12],[15,12]], +[[3,2],[4,3],[5,4],[6,5],[7,6],[7,15],[14,2],[14,5],[15,14],[15,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Send","A",5,0,5],["Send","A",6,0,6],["Unsubscribe","A",7,0,8],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Client","C",12,2,1],["Receive","A",14,2,6],["Receive","A",15,2,7] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[4,9],[5,1],[6,1],[7,1],[7,12],[9,8],[12,8],[14,12],[15,12]], +[[3,2],[4,3],[4,2],[5,4],[6,5],[7,6],[7,15],[14,3],[14,5],[15,14],[15,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Send","A",5,0,5],["Send","A",6,0,6],["Unsubscribe","A",7,0,7],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Receive","A",11,1,5],["Receive","A",12,1,6],["Client","C",14,2,1] ], + +[[2,1],[2,14],[3,1],[3,9],[4,1],[4,14],[5,1],[6,1],[7,1],[7,9],[9,8],[11,9],[12,9],[14,8]], +[[3,2],[4,3],[4,2],[5,4],[6,5],[7,6],[7,12],[11,3],[11,5],[12,11],[12,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Register","A",3,0,3],["Unsubscribe","A",4,0,4],["Send","A",5,0,5],["Send","A",6,0,6],["Unsubscribe","A",7,0,7],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Receive","A",11,1,5],["Receive","A",12,1,6],["Client","C",14,2,1] ], + +[[2,1],[2,9],[3,1],[3,14],[4,1],[4,14],[5,1],[6,1],[7,1],[7,9],[9,8],[11,9],[12,9],[14,8]], +[[3,2],[4,3],[5,4],[6,5],[7,6],[7,12],[11,2],[11,5],[12,11],[12,6]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",18,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Unsubscribe","A",5,1,5],["Send","A",6,1,6],["Unsubscribe","A",7,1,8],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,4],["Client","C",13,3,1],["Receive","A",15,3,5],["Receive","A",16,3,7] ], + +[[2,1],[2,13],[3,1],[3,9],[4,1],[5,1],[5,9],[6,1],[7,1],[7,13],[9,8],[11,9],[13,8],[15,13],[16,13]], +[[3,2],[4,3],[4,18],[5,4],[5,11],[6,5],[7,6],[7,16],[11,3],[11,4],[15,2],[15,4],[16,15],[16,6]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",18,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Unsubscribe","A",5,1,5],["Send","A",6,1,6],["Unsubscribe","A",7,1,8],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,4],["Client","C",13,3,1],["Receive","A",15,3,5],["Receive","A",16,3,7] ], + +[[2,1],[2,9],[3,1],[3,13],[4,1],[5,1],[5,9],[6,1],[7,1],[7,13],[9,8],[11,9],[13,8],[15,13],[16,13]], +[[3,2],[4,3],[4,18],[5,4],[5,11],[6,5],[7,6],[7,16],[11,2],[11,4],[15,3],[15,4],[16,15],[16,6]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",18,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Unsubscribe","A",5,1,6],["Send","A",6,1,7],["Unsubscribe","A",7,1,8],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,4],["Receive","A",12,2,7],["Client","C",14,3,1],["Receive","A",16,3,5] ], + +[[2,1],[2,14],[3,1],[3,9],[4,1],[5,1],[5,14],[6,1],[7,1],[7,9],[9,8],[11,9],[12,9],[14,8],[16,14]], +[[3,2],[4,3],[4,18],[5,4],[5,16],[6,5],[7,6],[7,12],[11,3],[11,4],[12,11],[12,6],[16,2],[16,4]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",18,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Unsubscribe","A",5,1,6],["Send","A",6,1,7],["Unsubscribe","A",7,1,8],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,4],["Receive","A",12,2,7],["Client","C",14,3,1],["Receive","A",16,3,5] ], + +[[2,1],[2,9],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[7,1],[7,9],[9,8],[11,9],[12,9],[14,8],[16,14]], +[[3,2],[4,3],[4,18],[5,4],[5,16],[6,5],[7,6],[7,12],[11,2],[11,4],[12,11],[12,6],[16,3],[16,4]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",19,0,0],["this Send is received by 2 Clients","T",20,0,1],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,7],["Unsubscribe","A",7,1,8],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,4],["Receive","A",12,2,5],["Client","C",14,3,1],["Receive","A",16,3,5],["Receive","A",17,3,6] ], + +[[2,1],[2,14],[3,1],[3,9],[4,1],[5,1],[6,1],[6,14],[7,1],[7,9],[9,8],[11,9],[12,9],[14,8],[16,14],[17,14]], +[[3,2],[4,3],[4,19],[5,4],[5,20],[6,5],[6,17],[7,6],[7,12],[11,3],[11,4],[12,11],[12,5],[16,2],[16,4],[17,16],[17,5]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",19,0,0],["this Send is received by 2 Clients","T",20,0,1],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,6],["Unsubscribe","A",7,1,7],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,4],["Receive","A",12,2,5],["Client","C",14,3,1],["Receive","A",16,3,5],["Receive","A",17,3,6] ], + +[[2,1],[2,14],[3,1],[3,9],[4,1],[5,1],[6,1],[6,9],[7,1],[7,14],[9,8],[11,9],[12,9],[14,8],[16,14],[17,14]], +[[3,2],[4,3],[4,19],[5,4],[5,20],[6,5],[6,12],[7,6],[7,17],[11,3],[11,4],[12,11],[12,5],[16,2],[16,4],[17,16],[17,5]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",19,0,0],["this Send is received by 2 Clients","T",20,0,1],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,7],["Unsubscribe","A",7,1,8],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,4],["Receive","A",12,2,5],["Client","C",14,3,1],["Receive","A",16,3,5],["Receive","A",17,3,6] ], + +[[2,1],[2,9],[3,1],[3,14],[4,1],[5,1],[6,1],[6,14],[7,1],[7,9],[9,8],[11,9],[12,9],[14,8],[16,14],[17,14]], +[[3,2],[4,3],[4,19],[5,4],[5,20],[6,5],[6,17],[7,6],[7,12],[11,2],[11,4],[12,11],[12,5],[16,3],[16,4],[17,16],[17,5]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",19,0,0],["this Send is received by 2 Clients","T",20,0,1],["Publisher","R",1,1,0],["Register","A",2,1,2],["Register","A",3,1,3],["Send","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,6],["Unsubscribe","A",7,1,7],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,4],["Receive","A",12,2,5],["Client","C",14,3,1],["Receive","A",16,3,5],["Receive","A",17,3,6] ], + +[[2,1],[2,9],[3,1],[3,14],[4,1],[5,1],[6,1],[6,9],[7,1],[7,14],[9,8],[11,9],[12,9],[14,8],[16,14],[17,14]], +[[3,2],[4,3],[4,19],[5,4],[5,20],[6,5],[6,12],[7,6],[7,17],[11,2],[11,4],[12,11],[12,5],[16,3],[16,4],[17,16],[17,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Send","A",6,0,6],["Unsubscribe","A",7,0,8],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Client","C",12,2,1],["Receive","A",14,2,4],["Receive","A",15,2,7] ], + +[[2,1],[2,12],[3,1],[4,1],[4,9],[5,1],[5,9],[6,1],[7,1],[7,12],[9,8],[12,8],[14,12],[15,12]], +[[3,2],[4,3],[5,4],[6,5],[7,6],[7,15],[14,2],[14,3],[15,14],[15,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Send","A",6,0,6],["Unsubscribe","A",7,0,7],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Receive","A",11,1,6],["Client","C",13,2,1],["Receive","A",15,2,4] ], + +[[2,1],[2,13],[3,1],[4,1],[4,9],[5,1],[5,13],[6,1],[7,1],[7,9],[9,8],[11,9],[13,8],[15,13]], +[[3,2],[4,3],[5,4],[5,15],[6,5],[7,6],[7,11],[11,4],[11,6],[15,2],[15,3]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Send","A",6,0,6],["Unsubscribe","A",7,0,8],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Receive","A",11,1,3],["Client","C",13,2,1],["Receive","A",15,2,7] ], + +[[2,1],[2,9],[3,1],[4,1],[4,13],[5,1],[5,9],[6,1],[7,1],[7,13],[9,8],[11,9],[13,8],[15,13]], +[[3,2],[4,3],[5,4],[5,11],[6,5],[7,6],[7,15],[11,2],[11,3],[15,4],[15,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Send","A",6,0,6],["Unsubscribe","A",7,0,7],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Receive","A",11,1,3],["Receive","A",12,1,6],["Client","C",14,2,1] ], + +[[2,1],[2,9],[3,1],[4,1],[4,14],[5,1],[5,14],[6,1],[7,1],[7,9],[9,8],[11,9],[12,9],[14,8]], +[[3,2],[4,3],[5,4],[6,5],[7,6],[7,12],[11,2],[11,3],[12,11],[12,6]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",18,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Send","A",3,1,3],["Register","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,7],["Unsubscribe","A",7,1,8],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,5],["Client","C",13,3,1],["Receive","A",15,3,4],["Receive","A",16,3,6] ], + +[[2,1],[2,13],[3,1],[4,1],[4,9],[5,1],[6,1],[6,13],[7,1],[7,9],[9,8],[11,9],[13,8],[15,13],[16,13]], +[[3,2],[4,3],[5,4],[5,18],[6,5],[6,16],[7,6],[7,11],[11,4],[11,5],[15,2],[15,3],[16,15],[16,5]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",18,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Send","A",3,1,3],["Register","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,6],["Unsubscribe","A",7,1,7],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,5],["Client","C",13,3,1],["Receive","A",15,3,4],["Receive","A",16,3,6] ], + +[[2,1],[2,13],[3,1],[4,1],[4,9],[5,1],[6,1],[6,9],[7,1],[7,13],[9,8],[11,9],[13,8],[15,13],[16,13]], +[[3,2],[4,3],[5,4],[5,18],[6,5],[6,11],[7,6],[7,16],[11,4],[11,5],[15,2],[15,3],[16,15],[16,5]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",18,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Send","A",3,1,3],["Register","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,7],["Unsubscribe","A",7,1,8],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,3],["Receive","A",12,2,5],["Client","C",14,3,1],["Receive","A",16,3,6] ], + +[[2,1],[2,9],[3,1],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,9],[9,8],[11,9],[12,9],[14,8],[16,14]], +[[3,2],[4,3],[5,4],[5,18],[6,5],[6,16],[7,6],[7,12],[11,2],[11,3],[12,11],[12,5],[16,4],[16,5]] +,{"VIEWS":[ ]} +], + +["M", 0.00464636, +[ ["this Send is received by 2 Clients","T",18,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Send","A",3,1,3],["Register","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,6],["Unsubscribe","A",7,1,7],["Subscribers","R",8,2,0],["Client","C",9,2,1],["Receive","A",11,2,3],["Receive","A",12,2,5],["Client","C",14,3,1],["Receive","A",16,3,6] ], + +[[2,1],[2,9],[3,1],[4,1],[4,14],[5,1],[6,1],[6,9],[7,1],[7,14],[9,8],[11,9],[12,9],[14,8],[16,14]], +[[3,2],[4,3],[5,4],[5,18],[6,5],[6,12],[7,6],[7,16],[11,2],[11,3],[12,11],[12,5],[16,4],[16,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Send","A",4,0,4],["Register","A",5,0,5],["Unsubscribe","A",6,0,6],["Unsubscribe","A",7,0,7],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Client","C",12,2,1],["Receive","A",14,2,4],["Receive","A",15,2,5] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[5,9],[6,1],[6,12],[7,1],[7,9],[9,8],[12,8],[14,12],[15,12]], +[[3,2],[4,3],[5,4],[6,5],[6,15],[7,6],[7,5],[14,2],[14,3],[15,14],[15,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Send","A",4,0,4],["Register","A",5,0,5],["Unsubscribe","A",6,0,6],["Unsubscribe","A",7,0,7],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Client","C",12,2,1],["Receive","A",14,2,4],["Receive","A",15,2,5] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[5,9],[6,1],[6,9],[7,1],[7,12],[9,8],[12,8],[14,12],[15,12]], +[[3,2],[4,3],[5,4],[6,5],[7,6],[7,15],[14,2],[14,3],[15,14],[15,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Send","A",4,0,4],["Register","A",5,0,5],["Unsubscribe","A",6,0,6],["Unsubscribe","A",7,0,7],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Receive","A",11,1,3],["Receive","A",12,1,4],["Client","C",14,2,1] ], + +[[2,1],[2,9],[3,1],[4,1],[5,1],[5,14],[6,1],[6,14],[7,1],[7,9],[9,8],[11,9],[12,9],[14,8]], +[[3,2],[4,3],[5,4],[6,5],[7,6],[7,12],[11,2],[11,3],[12,11],[12,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00464636, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Send","A",4,0,4],["Register","A",5,0,5],["Unsubscribe","A",6,0,6],["Unsubscribe","A",7,0,7],["Subscribers","R",8,1,0],["Client","C",9,1,1],["Receive","A",11,1,3],["Receive","A",12,1,4],["Client","C",14,2,1] ], + +[[2,1],[2,9],[3,1],[4,1],[5,1],[5,14],[6,1],[6,9],[7,1],[7,14],[9,8],[11,9],[12,9],[14,8]], +[[3,2],[4,3],[5,4],[6,5],[6,12],[7,6],[7,5],[11,2],[11,3],[12,11],[12,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00154879, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Send","A",6,0,6],["Send","A",7,0,7],["Unsubscribe","A",8,0,9],["Subscribers","R",9,1,0],["Client","C",10,1,1],["Receive","A",12,1,3],["Client","C",14,2,1],["Receive","A",16,2,7],["Receive","A",17,2,8] ], + +[[2,1],[2,10],[3,1],[4,1],[4,14],[5,1],[5,10],[6,1],[7,1],[8,1],[8,14],[10,9],[12,10],[14,9],[16,14],[17,14]], +[[3,2],[4,3],[5,4],[5,12],[6,5],[7,6],[8,7],[8,17],[12,2],[12,3],[16,4],[16,6],[17,16],[17,7]] +,{"VIEWS":[ ]} +], + +["U", 0.00154879, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Register","A",4,0,4],["Unsubscribe","A",5,0,5],["Send","A",6,0,6],["Send","A",7,0,7],["Unsubscribe","A",8,0,8],["Subscribers","R",9,1,0],["Client","C",10,1,1],["Receive","A",12,1,6],["Receive","A",13,1,7],["Client","C",15,2,1],["Receive","A",17,2,4] ], + +[[2,1],[2,15],[3,1],[4,1],[4,10],[5,1],[5,15],[6,1],[7,1],[8,1],[8,10],[10,9],[12,10],[13,10],[15,9],[17,15]], +[[3,2],[4,3],[5,4],[5,17],[6,5],[7,6],[8,7],[8,13],[12,4],[12,6],[13,12],[13,7],[17,2],[17,3]] +,{"VIEWS":[ ]} +], + +["M", 0.00154879, +[ ["this Send is received by 2 Clients","T",20,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Send","A",3,1,3],["Register","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,7],["Send","A",7,1,8],["Unsubscribe","A",8,1,9],["Subscribers","R",9,2,0],["Client","C",10,2,1],["Receive","A",12,2,5],["Receive","A",13,2,8],["Client","C",15,3,1],["Receive","A",17,3,4],["Receive","A",18,3,6] ], + +[[2,1],[2,15],[3,1],[4,1],[4,10],[5,1],[6,1],[6,15],[7,1],[8,1],[8,10],[10,9],[12,10],[13,10],[15,9],[17,15],[18,15]], +[[3,2],[4,3],[5,4],[5,20],[6,5],[6,18],[7,6],[8,7],[8,13],[12,4],[12,5],[13,12],[13,7],[17,2],[17,3],[18,17],[18,5]] +,{"VIEWS":[ ]} +], + +["M", 0.00154879, +[ ["this Send is received by 2 Clients","T",20,0,0],["Publisher","R",1,1,0],["Register","A",2,1,2],["Send","A",3,1,3],["Register","A",4,1,4],["Send","A",5,1,5],["Unsubscribe","A",6,1,6],["Send","A",7,1,7],["Unsubscribe","A",8,1,9],["Subscribers","R",9,2,0],["Client","C",10,2,1],["Receive","A",12,2,3],["Receive","A",13,2,5],["Client","C",15,3,1],["Receive","A",17,3,6],["Receive","A",18,3,8] ], + +[[2,1],[2,10],[3,1],[4,1],[4,15],[5,1],[6,1],[6,10],[7,1],[8,1],[8,15],[10,9],[12,10],[13,10],[15,9],[17,15],[18,15]], +[[3,2],[4,3],[5,4],[5,20],[6,5],[6,13],[7,6],[8,7],[8,18],[12,2],[12,3],[13,12],[13,5],[17,4],[17,5],[18,17],[18,7]] +,{"VIEWS":[ ]} +], + +["U", 0.00154879, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Send","A",4,0,4],["Register","A",5,0,5],["Unsubscribe","A",6,0,6],["Send","A",7,0,7],["Unsubscribe","A",8,0,8],["Subscribers","R",9,1,0],["Client","C",10,1,1],["Receive","A",12,1,7],["Client","C",14,2,1],["Receive","A",16,2,4],["Receive","A",17,2,5] ], + +[[2,1],[2,14],[3,1],[4,1],[5,1],[5,10],[6,1],[6,14],[7,1],[8,1],[8,10],[10,9],[12,10],[14,9],[16,14],[17,14]], +[[3,2],[4,3],[5,4],[6,5],[6,17],[7,6],[8,7],[8,12],[12,5],[12,7],[16,2],[16,3],[17,16],[17,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00154879, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Send","A",4,0,4],["Register","A",5,0,5],["Unsubscribe","A",6,0,6],["Send","A",7,0,7],["Unsubscribe","A",8,0,9],["Subscribers","R",9,1,0],["Client","C",10,1,1],["Receive","A",12,1,3],["Receive","A",13,1,4],["Client","C",15,2,1],["Receive","A",17,2,8] ], + +[[2,1],[2,10],[3,1],[4,1],[5,1],[5,15],[6,1],[6,10],[7,1],[8,1],[8,15],[10,9],[12,10],[13,10],[15,9],[17,15]], +[[3,2],[4,3],[5,4],[6,5],[6,13],[7,6],[8,7],[8,17],[12,2],[12,3],[13,12],[13,4],[17,5],[17,7]] +,{"VIEWS":[ ]} +], + +["U", 0.000516262, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Send","A",4,0,4],["Register","A",5,0,5],["Unsubscribe","A",6,0,6],["Send","A",7,0,7],["Send","A",8,0,8],["Unsubscribe","A",9,0,9],["Subscribers","R",10,1,0],["Client","C",11,1,1],["Receive","A",13,1,7],["Receive","A",14,1,8],["Client","C",16,2,1],["Receive","A",18,2,4],["Receive","A",19,2,5] ], + +[[2,1],[2,16],[3,1],[4,1],[5,1],[5,11],[6,1],[6,16],[7,1],[8,1],[9,1],[9,11],[11,10],[13,11],[14,11],[16,10],[18,16],[19,16]], +[[3,2],[4,3],[5,4],[6,5],[6,19],[7,6],[8,7],[9,8],[9,14],[13,5],[13,7],[14,13],[14,8],[18,2],[18,3],[19,18],[19,4]] +,{"VIEWS":[ ]} +], + +["U", 0.000516262, +[ ["Publisher","R",1,0,0],["Register","A",2,0,2],["Send","A",3,0,3],["Send","A",4,0,4],["Register","A",5,0,5],["Unsubscribe","A",6,0,6],["Send","A",7,0,7],["Send","A",8,0,8],["Unsubscribe","A",9,0,10],["Subscribers","R",10,1,0],["Client","C",11,1,1],["Receive","A",13,1,3],["Receive","A",14,1,4],["Client","C",16,2,1],["Receive","A",18,2,8],["Receive","A",19,2,9] ], + +[[2,1],[2,11],[3,1],[4,1],[5,1],[5,16],[6,1],[6,11],[7,1],[8,1],[9,1],[9,16],[11,10],[13,11],[14,11],[16,10],[18,16],[19,16]], +[[3,2],[4,3],[5,4],[6,5],[6,14],[7,6],[8,7],[9,8],[9,19],[13,2],[13,3],[14,13],[14,4],[18,5],[18,7],[19,18],[19,8]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example12_network_topology_ring.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example12_network_topology_ring.json new file mode 100644 index 0000000..613ab7f --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example12_network_topology_ring.json @@ -0,0 +1,323 @@ +{"traces":[ + +["U", 0.635762, +[ ["Ring","R",1,0,0],["Node","C",2,0,1] ], + +[[2,1]], +[], +["left_neighbor_of", [2,2]], +["right_neighbor_of", [2,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0397351, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_left","A",3,0,2],["receive_from_right","A",4,0,3] ], + +[[2,1],[3,2],[4,2]], +[[4,3]], +["left_neighbor_of", [2,2]], +["right_neighbor_of", [2,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0397351, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_right","A",3,0,2],["receive_from_left","A",4,0,3] ], + +[[2,1],[3,2],[4,2]], +[[4,3]], +["left_neighbor_of", [2,2]], +["right_neighbor_of", [2,2]] +,{"VIEWS":[ ]} +], + +["U", 0.211921, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["Node","C",3,1,1] ], + +[[2,1],[3,1]], +[], +["left_neighbor_of", [2,3],[3,2]], +["right_neighbor_of", [2,3],[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.013245, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_left","A",3,0,2],["Node","C",4,1,1],["receive_from_right","A",5,1,2] ], + +[[2,1],[3,2],[4,1],[5,4]], +[[5,3]], +["left_neighbor_of", [2,4],[4,2]], +["right_neighbor_of", [2,4],[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.013245, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_right","A",3,0,2],["Node","C",4,1,1],["receive_from_left","A",5,1,2] ], + +[[2,1],[3,2],[4,1],[5,4]], +[[5,3]], +["left_neighbor_of", [2,4],[4,2]], +["right_neighbor_of", [2,4],[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.013245, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_left","A",3,0,2],["Node","C",4,1,1],["send_right","A",5,1,2] ], + +[[2,1],[3,2],[4,1],[5,4]], +[[3,5]], +["left_neighbor_of", [2,4],[4,2]], +["right_neighbor_of", [2,4],[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.013245, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_right","A",3,0,2],["Node","C",4,1,1],["send_left","A",5,1,2] ], + +[[2,1],[3,2],[4,1],[5,4]], +[[3,5]], +["left_neighbor_of", [2,4],[4,2]], +["right_neighbor_of", [2,4],[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_left","A",3,0,2],["send_left","A",4,0,3],["Node","C",5,1,1],["receive_from_right","A",6,1,2],["receive_from_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[6,3],[7,6],[7,4]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_left","A",3,0,2],["send_right","A",4,0,3],["Node","C",5,1,1],["receive_from_left","A",6,1,3],["receive_from_right","A",7,1,4] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[6,4],[7,6],[7,3]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_left","A",3,0,2],["send_right","A",4,0,3],["Node","C",5,1,1],["receive_from_right","A",6,1,2],["receive_from_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[6,3],[7,6],[7,4]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_left","A",3,0,2],["receive_from_left","A",4,0,3],["Node","C",5,1,1],["send_right","A",6,1,2],["receive_from_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[4,6],[7,6],[7,3]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_left","A",3,0,2],["receive_from_left","A",4,0,3],["Node","C",5,1,1],["receive_from_right","A",6,1,2],["send_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[4,7],[6,3],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_left","A",3,0,2],["receive_from_right","A",4,0,3],["Node","C",5,1,1],["send_left","A",6,1,2],["receive_from_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[4,6],[7,6],[7,3]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_left","A",3,0,2],["receive_from_right","A",4,0,3],["Node","C",5,1,1],["receive_from_right","A",6,1,2],["send_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[4,7],[6,3],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_right","A",3,0,2],["send_left","A",4,0,3],["Node","C",5,1,1],["receive_from_left","A",6,1,2],["receive_from_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[6,3],[7,6],[7,4]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_right","A",3,0,2],["send_left","A",4,0,3],["Node","C",5,1,1],["receive_from_right","A",6,1,3],["receive_from_left","A",7,1,4] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[6,4],[7,6],[7,3]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_right","A",3,0,2],["send_right","A",4,0,3],["Node","C",5,1,1],["receive_from_left","A",6,1,2],["receive_from_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[6,3],[7,6],[7,4]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_right","A",3,0,2],["receive_from_left","A",4,0,3],["Node","C",5,1,1],["send_right","A",6,1,2],["receive_from_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[4,6],[7,6],[7,3]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_right","A",3,0,2],["receive_from_left","A",4,0,3],["Node","C",5,1,1],["receive_from_left","A",6,1,2],["send_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[4,7],[6,3],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_right","A",3,0,2],["receive_from_right","A",4,0,3],["Node","C",5,1,1],["send_left","A",6,1,2],["receive_from_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[4,6],[7,6],[7,3]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["send_right","A",3,0,2],["receive_from_right","A",4,0,3],["Node","C",5,1,1],["receive_from_left","A",6,1,2],["send_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[4,7],[6,3],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_left","A",3,0,2],["send_left","A",4,0,3],["Node","C",5,1,1],["send_right","A",6,1,2],["receive_from_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,6],[4,3],[7,6],[7,4]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_left","A",3,0,2],["send_right","A",4,0,3],["Node","C",5,1,1],["send_right","A",6,1,2],["receive_from_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,6],[4,3],[7,6],[7,4]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_left","A",3,0,2],["receive_from_left","A",4,0,3],["Node","C",5,1,1],["send_right","A",6,1,2],["send_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,6],[4,3],[4,7],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_left","A",3,0,3],["receive_from_right","A",4,0,4],["Node","C",5,1,1],["send_left","A",6,1,2],["send_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,7],[4,3],[4,6],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_left","A",3,0,2],["receive_from_right","A",4,0,3],["Node","C",5,1,1],["send_right","A",6,1,2],["send_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,6],[4,3],[4,7],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_right","A",3,0,2],["send_left","A",4,0,3],["Node","C",5,1,1],["send_left","A",6,1,2],["receive_from_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,6],[4,3],[7,6],[7,4]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_right","A",3,0,2],["send_right","A",4,0,3],["Node","C",5,1,1],["send_left","A",6,1,2],["receive_from_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,6],[4,3],[7,6],[7,4]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_right","A",3,0,2],["receive_from_left","A",4,0,3],["Node","C",5,1,1],["send_left","A",6,1,2],["send_right","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,6],[4,3],[4,7],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_right","A",3,0,3],["receive_from_left","A",4,0,4],["Node","C",5,1,1],["send_right","A",6,1,2],["send_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,7],[4,3],[4,6],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.000827815, +[ ["Ring","R",1,0,0],["Node","C",2,0,1],["receive_from_right","A",3,0,2],["receive_from_right","A",4,0,3],["Node","C",5,1,1],["send_left","A",6,1,2],["send_left","A",7,1,3] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[3,6],[4,3],[4,7],[7,6]], +["left_neighbor_of", [2,5],[5,2]], +["right_neighbor_of", [2,5],[5,2]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example13_FiniteStateDiagram.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example13_FiniteStateDiagram.json new file mode 100644 index 0000000..8bdb86c --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example13_FiniteStateDiagram.json @@ -0,0 +1,243 @@ +{"traces":[ + +["U", 0.161616, +[ ["The path: ","T",23,0,0],["Start","T",24,0,1],["S1","T",25,0,2],["a","T",26,0,3],["S3","T",27,0,4],["b","T",28,0,5],["S4","T",29,0,6],["a","T",30,0,7],["S2","T",31,0,8],["End","T",32,0,9],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_behavior","R",6,2,0],["S4_to_S2","C",7,2,6],["a","A",8,2,7],["S2","A",9,2,8],["End","A",10,2,9],["S3_behavior","R",11,3,0],["S3","A",14,3,4],["S3_to_S4","C",15,3,5],["b","A",16,3,6],["S4_behavior","R",17,4,0],["S4","A",20,4,5] ], + +[[2,1],[3,1],[4,1],[4,11],[5,4],[7,6],[7,17],[8,7],[9,6],[10,6],[14,11],[15,11],[15,17],[16,15],[20,17]], +[[3,2],[4,3],[7,20],[9,7],[10,9],[14,4],[15,14],[20,15]] +,{"VIEWS":[ ]} +], + +["U", 0.161616, +[ ["The path: ","T",26,0,0],["Start","T",27,0,1],["S1","T",28,0,2],["a","T",29,0,3],["S3","T",30,0,4],["a","T",31,0,5],["S3","T",32,0,6],["b","T",33,0,7],["S4","T",34,0,8],["a","T",35,0,9],["S2","T",36,0,10],["End","T",37,0,11],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_behavior","R",6,2,0],["S4_to_S2","C",7,2,9],["a","A",8,2,10],["S2","A",9,2,11],["End","A",10,2,12],["S3_behavior","R",11,3,0],["S3","A",14,3,4],["S3_to_S3","C",15,3,5],["a","A",16,3,6],["S3","A",17,3,7],["S3_to_S4","C",18,3,8],["b","A",19,3,9],["S4_behavior","R",20,4,0],["S4","A",23,4,8] ], + +[[2,1],[3,1],[4,1],[4,11],[5,4],[7,6],[7,20],[8,7],[9,6],[10,6],[14,11],[15,11],[16,15],[17,11],[18,11],[18,20],[19,18],[23,20]], +[[3,2],[4,3],[7,23],[9,7],[10,9],[14,4],[15,14],[17,15],[18,17],[23,18]] +,{"VIEWS":[ ]} +], + +["U", 0.161616, +[ ["The path: ","T",29,0,0],["Start","T",30,0,1],["S1","T",31,0,2],["a","T",32,0,3],["S3","T",33,0,4],["a","T",34,0,5],["S3","T",35,0,6],["a","T",36,0,7],["S3","T",37,0,8],["b","T",38,0,9],["S4","T",39,0,10],["a","T",40,0,11],["S2","T",41,0,12],["End","T",42,0,13],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_behavior","R",6,2,0],["S4_to_S2","C",7,2,12],["a","A",8,2,13],["S2","A",9,2,14],["End","A",10,2,15],["S3_behavior","R",11,3,0],["S3","A",14,3,4],["S3_to_S3","C",15,3,5],["a","A",16,3,6],["S3","A",17,3,7],["S3_to_S3","C",18,3,8],["a","A",19,3,9],["S3","A",20,3,10],["S3_to_S4","C",21,3,11],["b","A",22,3,12],["S4_behavior","R",23,4,0],["S4","A",26,4,11] ], + +[[2,1],[3,1],[4,1],[4,11],[5,4],[7,6],[7,23],[8,7],[9,6],[10,6],[14,11],[15,11],[16,15],[17,11],[18,11],[19,18],[20,11],[21,11],[21,23],[22,21],[26,23]], +[[3,2],[4,3],[7,26],[9,7],[10,9],[14,4],[15,14],[17,15],[18,17],[20,18],[21,20],[26,21]] +,{"VIEWS":[ ]} +], + +["U", 0.121212, +[ ["The path: ","T",18,0,0],["Start","T",19,0,1],["S1","T",20,0,2],["a","T",21,0,3],["S4","T",22,0,4],["a","T",23,0,5],["S2","T",24,0,6],["End","T",25,0,7],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["a","A",5,1,4],["S2_behavior","R",6,2,0],["S4_to_S2","C",7,2,5],["a","A",8,2,6],["S2","A",9,2,7],["End","A",10,2,8],["S3_behavior","R",11,3,0],["S4_behavior","R",12,4,0],["S4","A",15,4,4] ], + +[[2,1],[3,1],[4,1],[4,12],[5,4],[7,6],[7,12],[8,7],[9,6],[10,6],[15,12]], +[[3,2],[4,3],[7,15],[9,7],[10,9],[15,4]] +,{"VIEWS":[ ]} +], + +["U", 0.121212, +[ ["The path: ","T",18,0,0],["Start","T",19,0,1],["S1","T",20,0,2],["b","T",21,0,3],["S4","T",22,0,4],["a","T",23,0,5],["S2","T",24,0,6],["End","T",25,0,7],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["b","A",5,1,4],["S2_behavior","R",6,2,0],["S4_to_S2","C",7,2,5],["a","A",8,2,6],["S2","A",9,2,7],["End","A",10,2,8],["S3_behavior","R",11,3,0],["S4_behavior","R",12,4,0],["S4","A",15,4,4] ], + +[[2,1],[3,1],[4,1],[4,12],[5,4],[7,6],[7,12],[8,7],[9,6],[10,6],[15,12]], +[[3,2],[4,3],[7,15],[9,7],[10,9],[15,4]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["The path: ","T",43,0,0],["Start","T",44,0,1],["S1","T",45,0,2],["a","T",46,0,3],["S3","T",47,0,4],["b","T",48,0,5],["S4","T",49,0,6],["a","T",50,0,7],["S2","T",51,0,8],["b","T",52,0,9],["S1","T",53,0,10],["a","T",54,0,11],["S3","T",55,0,12],["b","T",56,0,13],["S4","T",57,0,14],["a","T",58,0,15],["S2","T",59,0,16],["End","T",60,0,17],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,8],["b","A",7,1,9],["S1","A",8,1,10],["S1_to_S3","C",9,1,11],["a","A",10,1,12],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,6],["a","A",13,2,7],["S2","A",14,2,8],["S4_to_S2","C",17,2,14],["a","A",18,2,15],["S2","A",19,2,16],["End","A",20,2,17],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S4","C",25,3,5],["b","A",26,3,6],["S3","A",29,3,12],["S3_to_S4","C",30,3,13],["b","A",31,3,14],["S4_behavior","R",32,4,0],["S4","A",35,4,5],["S4","A",40,4,13] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,32],[13,12],[14,11],[17,11],[17,32],[18,17],[19,11],[20,11],[24,21],[25,21],[25,32],[26,25],[29,21],[30,21],[30,32],[31,30],[35,32],[40,32]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,25],[12,35],[14,12],[17,6],[17,40],[19,17],[20,19],[24,4],[25,24],[29,9],[30,29],[30,12],[35,25],[40,30]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["The path: ","T",46,0,0],["Start","T",47,0,1],["S1","T",48,0,2],["a","T",49,0,3],["S3","T",50,0,4],["b","T",51,0,5],["S4","T",52,0,6],["a","T",53,0,7],["S2","T",54,0,8],["b","T",55,0,9],["S1","T",56,0,10],["a","T",57,0,11],["S3","T",58,0,12],["a","T",59,0,13],["S3","T",60,0,14],["b","T",61,0,15],["S4","T",62,0,16],["a","T",63,0,17],["S2","T",64,0,18],["End","T",65,0,19],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,8],["b","A",7,1,9],["S1","A",8,1,10],["S1_to_S3","C",9,1,11],["a","A",10,1,12],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,6],["a","A",13,2,7],["S2","A",14,2,8],["S4_to_S2","C",17,2,17],["a","A",18,2,18],["S2","A",19,2,19],["End","A",20,2,20],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S4","C",25,3,5],["b","A",26,3,6],["S3","A",29,3,12],["S3_to_S3","C",30,3,13],["a","A",31,3,14],["S3","A",32,3,15],["S3_to_S4","C",33,3,16],["b","A",34,3,17],["S4_behavior","R",35,4,0],["S4","A",38,4,5],["S4","A",43,4,16] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,35],[13,12],[14,11],[17,11],[17,35],[18,17],[19,11],[20,11],[24,21],[25,21],[25,35],[26,25],[29,21],[30,21],[31,30],[32,21],[33,21],[33,35],[34,33],[38,35],[43,35]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,25],[12,38],[14,12],[17,6],[17,43],[19,17],[20,19],[24,4],[25,24],[29,9],[30,29],[32,30],[33,32],[33,12],[38,25],[43,33]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["The path: ","T",49,0,0],["Start","T",50,0,1],["S1","T",51,0,2],["a","T",52,0,3],["S3","T",53,0,4],["b","T",54,0,5],["S4","T",55,0,6],["a","T",56,0,7],["S2","T",57,0,8],["b","T",58,0,9],["S1","T",59,0,10],["a","T",60,0,11],["S3","T",61,0,12],["a","T",62,0,13],["S3","T",63,0,14],["a","T",64,0,15],["S3","T",65,0,16],["b","T",66,0,17],["S4","T",67,0,18],["a","T",68,0,19],["S2","T",69,0,20],["End","T",70,0,21],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,8],["b","A",7,1,9],["S1","A",8,1,10],["S1_to_S3","C",9,1,11],["a","A",10,1,12],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,6],["a","A",13,2,7],["S2","A",14,2,8],["S4_to_S2","C",17,2,20],["a","A",18,2,21],["S2","A",19,2,22],["End","A",20,2,23],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S4","C",25,3,5],["b","A",26,3,6],["S3","A",29,3,12],["S3_to_S3","C",30,3,13],["a","A",31,3,14],["S3","A",32,3,15],["S3_to_S3","C",33,3,16],["a","A",34,3,17],["S3","A",35,3,18],["S3_to_S4","C",36,3,19],["b","A",37,3,20],["S4_behavior","R",38,4,0],["S4","A",41,4,5],["S4","A",46,4,19] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,38],[13,12],[14,11],[17,11],[17,38],[18,17],[19,11],[20,11],[24,21],[25,21],[25,38],[26,25],[29,21],[30,21],[31,30],[32,21],[33,21],[34,33],[35,21],[36,21],[36,38],[37,36],[41,38],[46,38]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,25],[12,41],[14,12],[17,6],[17,46],[19,17],[20,19],[24,4],[25,24],[29,9],[30,29],[32,30],[33,32],[35,33],[36,35],[36,12],[41,25],[46,36]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["The path: ","T",46,0,0],["Start","T",47,0,1],["S1","T",48,0,2],["a","T",49,0,3],["S3","T",50,0,4],["a","T",51,0,5],["S3","T",52,0,6],["b","T",53,0,7],["S4","T",54,0,8],["a","T",55,0,9],["S2","T",56,0,10],["b","T",57,0,11],["S1","T",58,0,12],["a","T",59,0,13],["S3","T",60,0,14],["b","T",61,0,15],["S4","T",62,0,16],["a","T",63,0,17],["S2","T",64,0,18],["End","T",65,0,19],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,11],["b","A",7,1,12],["S1","A",8,1,13],["S1_to_S3","C",9,1,14],["a","A",10,1,15],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,9],["a","A",13,2,10],["S2","A",14,2,11],["S4_to_S2","C",17,2,17],["a","A",18,2,18],["S2","A",19,2,19],["End","A",20,2,20],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S4","C",28,3,8],["b","A",29,3,9],["S3","A",32,3,15],["S3_to_S4","C",33,3,16],["b","A",34,3,17],["S4_behavior","R",35,4,0],["S4","A",38,4,8],["S4","A",43,4,16] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,35],[13,12],[14,11],[17,11],[17,35],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[28,35],[29,28],[32,21],[33,21],[33,35],[34,33],[38,35],[43,35]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,28],[12,38],[14,12],[17,6],[17,43],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[32,9],[33,32],[33,12],[38,28],[43,33]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["The path: ","T",49,0,0],["Start","T",50,0,1],["S1","T",51,0,2],["a","T",52,0,3],["S3","T",53,0,4],["a","T",54,0,5],["S3","T",55,0,6],["b","T",56,0,7],["S4","T",57,0,8],["a","T",58,0,9],["S2","T",59,0,10],["b","T",60,0,11],["S1","T",61,0,12],["a","T",62,0,13],["S3","T",63,0,14],["a","T",64,0,15],["S3","T",65,0,16],["b","T",66,0,17],["S4","T",67,0,18],["a","T",68,0,19],["S2","T",69,0,20],["End","T",70,0,21],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,11],["b","A",7,1,12],["S1","A",8,1,13],["S1_to_S3","C",9,1,14],["a","A",10,1,15],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,9],["a","A",13,2,10],["S2","A",14,2,11],["S4_to_S2","C",17,2,20],["a","A",18,2,21],["S2","A",19,2,22],["End","A",20,2,23],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S4","C",28,3,8],["b","A",29,3,9],["S3","A",32,3,15],["S3_to_S3","C",33,3,16],["a","A",34,3,17],["S3","A",35,3,18],["S3_to_S4","C",36,3,19],["b","A",37,3,20],["S4_behavior","R",38,4,0],["S4","A",41,4,8],["S4","A",46,4,19] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,38],[13,12],[14,11],[17,11],[17,38],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[28,38],[29,28],[32,21],[33,21],[34,33],[35,21],[36,21],[36,38],[37,36],[41,38],[46,38]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,28],[12,41],[14,12],[17,6],[17,46],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[32,9],[33,32],[35,33],[36,35],[36,12],[41,28],[46,36]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["The path: ","T",52,0,0],["Start","T",53,0,1],["S1","T",54,0,2],["a","T",55,0,3],["S3","T",56,0,4],["a","T",57,0,5],["S3","T",58,0,6],["b","T",59,0,7],["S4","T",60,0,8],["a","T",61,0,9],["S2","T",62,0,10],["b","T",63,0,11],["S1","T",64,0,12],["a","T",65,0,13],["S3","T",66,0,14],["a","T",67,0,15],["S3","T",68,0,16],["a","T",69,0,17],["S3","T",70,0,18],["b","T",71,0,19],["S4","T",72,0,20],["a","T",73,0,21],["S2","T",74,0,22],["End","T",75,0,23],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,11],["b","A",7,1,12],["S1","A",8,1,13],["S1_to_S3","C",9,1,14],["a","A",10,1,15],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,9],["a","A",13,2,10],["S2","A",14,2,11],["S4_to_S2","C",17,2,23],["a","A",18,2,24],["S2","A",19,2,25],["End","A",20,2,26],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S4","C",28,3,8],["b","A",29,3,9],["S3","A",32,3,15],["S3_to_S3","C",33,3,16],["a","A",34,3,17],["S3","A",35,3,18],["S3_to_S3","C",36,3,19],["a","A",37,3,20],["S3","A",38,3,21],["S3_to_S4","C",39,3,22],["b","A",40,3,23],["S4_behavior","R",41,4,0],["S4","A",44,4,8],["S4","A",49,4,22] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,41],[13,12],[14,11],[17,11],[17,41],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[28,41],[29,28],[32,21],[33,21],[34,33],[35,21],[36,21],[37,36],[38,21],[39,21],[39,41],[40,39],[44,41],[49,41]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,28],[12,44],[14,12],[17,6],[17,49],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[32,9],[33,32],[35,33],[36,35],[38,36],[39,38],[39,12],[44,28],[49,39]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["The path: ","T",49,0,0],["Start","T",50,0,1],["S1","T",51,0,2],["a","T",52,0,3],["S3","T",53,0,4],["a","T",54,0,5],["S3","T",55,0,6],["a","T",56,0,7],["S3","T",57,0,8],["b","T",58,0,9],["S4","T",59,0,10],["a","T",60,0,11],["S2","T",61,0,12],["b","T",62,0,13],["S1","T",63,0,14],["a","T",64,0,15],["S3","T",65,0,16],["b","T",66,0,17],["S4","T",67,0,18],["a","T",68,0,19],["S2","T",69,0,20],["End","T",70,0,21],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,14],["b","A",7,1,15],["S1","A",8,1,16],["S1_to_S3","C",9,1,17],["a","A",10,1,18],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,12],["a","A",13,2,13],["S2","A",14,2,14],["S4_to_S2","C",17,2,20],["a","A",18,2,21],["S2","A",19,2,22],["End","A",20,2,23],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S3","C",28,3,8],["a","A",29,3,9],["S3","A",30,3,10],["S3_to_S4","C",31,3,11],["b","A",32,3,12],["S3","A",35,3,18],["S3_to_S4","C",36,3,19],["b","A",37,3,20],["S4_behavior","R",38,4,0],["S4","A",41,4,11],["S4","A",46,4,19] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,38],[13,12],[14,11],[17,11],[17,38],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[29,28],[30,21],[31,21],[31,38],[32,31],[35,21],[36,21],[36,38],[37,36],[41,38],[46,38]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,31],[12,41],[14,12],[17,6],[17,46],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[30,28],[31,30],[35,9],[36,35],[36,12],[41,31],[46,36]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["The path: ","T",52,0,0],["Start","T",53,0,1],["S1","T",54,0,2],["a","T",55,0,3],["S3","T",56,0,4],["a","T",57,0,5],["S3","T",58,0,6],["a","T",59,0,7],["S3","T",60,0,8],["b","T",61,0,9],["S4","T",62,0,10],["a","T",63,0,11],["S2","T",64,0,12],["b","T",65,0,13],["S1","T",66,0,14],["a","T",67,0,15],["S3","T",68,0,16],["a","T",69,0,17],["S3","T",70,0,18],["b","T",71,0,19],["S4","T",72,0,20],["a","T",73,0,21],["S2","T",74,0,22],["End","T",75,0,23],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,14],["b","A",7,1,15],["S1","A",8,1,16],["S1_to_S3","C",9,1,17],["a","A",10,1,18],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,12],["a","A",13,2,13],["S2","A",14,2,14],["S4_to_S2","C",17,2,23],["a","A",18,2,24],["S2","A",19,2,25],["End","A",20,2,26],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S3","C",28,3,8],["a","A",29,3,9],["S3","A",30,3,10],["S3_to_S4","C",31,3,11],["b","A",32,3,12],["S3","A",35,3,18],["S3_to_S3","C",36,3,19],["a","A",37,3,20],["S3","A",38,3,21],["S3_to_S4","C",39,3,22],["b","A",40,3,23],["S4_behavior","R",41,4,0],["S4","A",44,4,11],["S4","A",49,4,22] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,41],[13,12],[14,11],[17,11],[17,41],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[29,28],[30,21],[31,21],[31,41],[32,31],[35,21],[36,21],[37,36],[38,21],[39,21],[39,41],[40,39],[44,41],[49,41]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,31],[12,44],[14,12],[17,6],[17,49],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[30,28],[31,30],[35,9],[36,35],[38,36],[39,38],[39,12],[44,31],[49,39]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["The path: ","T",55,0,0],["Start","T",56,0,1],["S1","T",57,0,2],["a","T",58,0,3],["S3","T",59,0,4],["a","T",60,0,5],["S3","T",61,0,6],["a","T",62,0,7],["S3","T",63,0,8],["b","T",64,0,9],["S4","T",65,0,10],["a","T",66,0,11],["S2","T",67,0,12],["b","T",68,0,13],["S1","T",69,0,14],["a","T",70,0,15],["S3","T",71,0,16],["a","T",72,0,17],["S3","T",73,0,18],["a","T",74,0,19],["S3","T",75,0,20],["b","T",76,0,21],["S4","T",77,0,22],["a","T",78,0,23],["S2","T",79,0,24],["End","T",80,0,25],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,14],["b","A",7,1,15],["S1","A",8,1,16],["S1_to_S3","C",9,1,17],["a","A",10,1,18],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,12],["a","A",13,2,13],["S2","A",14,2,14],["S4_to_S2","C",17,2,26],["a","A",18,2,27],["S2","A",19,2,28],["End","A",20,2,29],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S3","C",28,3,8],["a","A",29,3,9],["S3","A",30,3,10],["S3_to_S4","C",31,3,11],["b","A",32,3,12],["S3","A",35,3,18],["S3_to_S3","C",36,3,19],["a","A",37,3,20],["S3","A",38,3,21],["S3_to_S3","C",39,3,22],["a","A",40,3,23],["S3","A",41,3,24],["S3_to_S4","C",42,3,25],["b","A",43,3,26],["S4_behavior","R",44,4,0],["S4","A",47,4,11],["S4","A",52,4,25] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,44],[13,12],[14,11],[17,11],[17,44],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[29,28],[30,21],[31,21],[31,44],[32,31],[35,21],[36,21],[37,36],[38,21],[39,21],[40,39],[41,21],[42,21],[42,44],[43,42],[47,44],[52,44]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,31],[12,47],[14,12],[17,6],[17,52],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[30,28],[31,30],[35,9],[36,35],[38,36],[39,38],[41,39],[42,41],[42,12],[47,31],[52,42]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",38,0,0],["Start","T",39,0,1],["S1","T",40,0,2],["a","T",41,0,3],["S3","T",42,0,4],["b","T",43,0,5],["S4","T",44,0,6],["a","T",45,0,7],["S2","T",46,0,8],["b","T",47,0,9],["S1","T",48,0,10],["a","T",49,0,11],["S4","T",50,0,12],["a","T",51,0,13],["S2","T",52,0,14],["End","T",53,0,15],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,8],["b","A",7,1,9],["S1","A",8,1,10],["S1_to_S4","C",9,1,11],["a","A",10,1,12],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,6],["a","A",13,2,7],["S2","A",14,2,8],["S4_to_S2","C",17,2,13],["a","A",18,2,14],["S2","A",19,2,15],["End","A",20,2,16],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S4","C",25,3,5],["b","A",26,3,6],["S4_behavior","R",27,4,0],["S4","A",30,4,5],["S4","A",35,4,12] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,27],[10,9],[12,11],[12,27],[13,12],[14,11],[17,11],[17,27],[18,17],[19,11],[20,11],[24,21],[25,21],[25,27],[26,25],[30,27],[35,27]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,30],[14,12],[17,6],[17,35],[19,17],[20,19],[24,4],[25,24],[30,25],[35,9]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",41,0,0],["Start","T",42,0,1],["S1","T",43,0,2],["a","T",44,0,3],["S3","T",45,0,4],["a","T",46,0,5],["S3","T",47,0,6],["b","T",48,0,7],["S4","T",49,0,8],["a","T",50,0,9],["S2","T",51,0,10],["b","T",52,0,11],["S1","T",53,0,12],["a","T",54,0,13],["S4","T",55,0,14],["a","T",56,0,15],["S2","T",57,0,16],["End","T",58,0,17],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,11],["b","A",7,1,12],["S1","A",8,1,13],["S1_to_S4","C",9,1,14],["a","A",10,1,15],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,9],["a","A",13,2,10],["S2","A",14,2,11],["S4_to_S2","C",17,2,16],["a","A",18,2,17],["S2","A",19,2,18],["End","A",20,2,19],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S4","C",28,3,8],["b","A",29,3,9],["S4_behavior","R",30,4,0],["S4","A",33,4,8],["S4","A",38,4,15] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,30],[10,9],[12,11],[12,30],[13,12],[14,11],[17,11],[17,30],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[28,30],[29,28],[33,30],[38,30]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,33],[14,12],[17,6],[17,38],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[33,28],[38,9]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",44,0,0],["Start","T",45,0,1],["S1","T",46,0,2],["a","T",47,0,3],["S3","T",48,0,4],["a","T",49,0,5],["S3","T",50,0,6],["a","T",51,0,7],["S3","T",52,0,8],["b","T",53,0,9],["S4","T",54,0,10],["a","T",55,0,11],["S2","T",56,0,12],["b","T",57,0,13],["S1","T",58,0,14],["a","T",59,0,15],["S4","T",60,0,16],["a","T",61,0,17],["S2","T",62,0,18],["End","T",63,0,19],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,14],["b","A",7,1,15],["S1","A",8,1,16],["S1_to_S4","C",9,1,17],["a","A",10,1,18],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,12],["a","A",13,2,13],["S2","A",14,2,14],["S4_to_S2","C",17,2,19],["a","A",18,2,20],["S2","A",19,2,21],["End","A",20,2,22],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S3","C",28,3,8],["a","A",29,3,9],["S3","A",30,3,10],["S3_to_S4","C",31,3,11],["b","A",32,3,12],["S4_behavior","R",33,4,0],["S4","A",36,4,11],["S4","A",41,4,18] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,33],[10,9],[12,11],[12,33],[13,12],[14,11],[17,11],[17,33],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[29,28],[30,21],[31,21],[31,33],[32,31],[36,33],[41,33]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,36],[14,12],[17,6],[17,41],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[30,28],[31,30],[36,31],[41,9]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",38,0,0],["Start","T",39,0,1],["S1","T",40,0,2],["a","T",41,0,3],["S3","T",42,0,4],["b","T",43,0,5],["S4","T",44,0,6],["a","T",45,0,7],["S2","T",46,0,8],["b","T",47,0,9],["S1","T",48,0,10],["b","T",49,0,11],["S4","T",50,0,12],["a","T",51,0,13],["S2","T",52,0,14],["End","T",53,0,15],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,8],["b","A",7,1,9],["S1","A",8,1,10],["S1_to_S4","C",9,1,11],["b","A",10,1,12],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,6],["a","A",13,2,7],["S2","A",14,2,8],["S4_to_S2","C",17,2,13],["a","A",18,2,14],["S2","A",19,2,15],["End","A",20,2,16],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S4","C",25,3,5],["b","A",26,3,6],["S4_behavior","R",27,4,0],["S4","A",30,4,5],["S4","A",35,4,12] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,27],[10,9],[12,11],[12,27],[13,12],[14,11],[17,11],[17,27],[18,17],[19,11],[20,11],[24,21],[25,21],[25,27],[26,25],[30,27],[35,27]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,30],[14,12],[17,6],[17,35],[19,17],[20,19],[24,4],[25,24],[30,25],[35,9]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",41,0,0],["Start","T",42,0,1],["S1","T",43,0,2],["a","T",44,0,3],["S3","T",45,0,4],["a","T",46,0,5],["S3","T",47,0,6],["b","T",48,0,7],["S4","T",49,0,8],["a","T",50,0,9],["S2","T",51,0,10],["b","T",52,0,11],["S1","T",53,0,12],["b","T",54,0,13],["S4","T",55,0,14],["a","T",56,0,15],["S2","T",57,0,16],["End","T",58,0,17],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,11],["b","A",7,1,12],["S1","A",8,1,13],["S1_to_S4","C",9,1,14],["b","A",10,1,15],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,9],["a","A",13,2,10],["S2","A",14,2,11],["S4_to_S2","C",17,2,16],["a","A",18,2,17],["S2","A",19,2,18],["End","A",20,2,19],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S4","C",28,3,8],["b","A",29,3,9],["S4_behavior","R",30,4,0],["S4","A",33,4,8],["S4","A",38,4,15] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,30],[10,9],[12,11],[12,30],[13,12],[14,11],[17,11],[17,30],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[28,30],[29,28],[33,30],[38,30]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,33],[14,12],[17,6],[17,38],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[33,28],[38,9]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",44,0,0],["Start","T",45,0,1],["S1","T",46,0,2],["a","T",47,0,3],["S3","T",48,0,4],["a","T",49,0,5],["S3","T",50,0,6],["a","T",51,0,7],["S3","T",52,0,8],["b","T",53,0,9],["S4","T",54,0,10],["a","T",55,0,11],["S2","T",56,0,12],["b","T",57,0,13],["S1","T",58,0,14],["b","T",59,0,15],["S4","T",60,0,16],["a","T",61,0,17],["S2","T",62,0,18],["End","T",63,0,19],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S3","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,14],["b","A",7,1,15],["S1","A",8,1,16],["S1_to_S4","C",9,1,17],["b","A",10,1,18],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,12],["a","A",13,2,13],["S2","A",14,2,14],["S4_to_S2","C",17,2,19],["a","A",18,2,20],["S2","A",19,2,21],["End","A",20,2,22],["S3_behavior","R",21,3,0],["S3","A",24,3,4],["S3_to_S3","C",25,3,5],["a","A",26,3,6],["S3","A",27,3,7],["S3_to_S3","C",28,3,8],["a","A",29,3,9],["S3","A",30,3,10],["S3_to_S4","C",31,3,11],["b","A",32,3,12],["S4_behavior","R",33,4,0],["S4","A",36,4,11],["S4","A",41,4,18] ], + +[[2,1],[3,1],[4,1],[4,21],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,33],[10,9],[12,11],[12,33],[13,12],[14,11],[17,11],[17,33],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[29,28],[30,21],[31,21],[31,33],[32,31],[36,33],[41,33]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,36],[14,12],[17,6],[17,41],[19,17],[20,19],[24,4],[25,24],[27,25],[28,27],[30,28],[31,30],[36,31],[41,9]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",38,0,0],["Start","T",39,0,1],["S1","T",40,0,2],["a","T",41,0,3],["S4","T",42,0,4],["a","T",43,0,5],["S2","T",44,0,6],["b","T",45,0,7],["S1","T",46,0,8],["a","T",47,0,9],["S3","T",48,0,10],["b","T",49,0,11],["S4","T",50,0,12],["a","T",51,0,13],["S2","T",52,0,14],["End","T",53,0,15],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S3","C",9,1,10],["a","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,13],["a","A",18,2,14],["S2","A",19,2,15],["End","A",20,2,16],["S3_behavior","R",21,3,0],["S3","A",24,3,11],["S3_to_S4","C",25,3,12],["b","A",26,3,13],["S4_behavior","R",27,4,0],["S4","A",30,4,4],["S4","A",35,4,12] ], + +[[2,1],[3,1],[4,1],[4,27],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,27],[13,12],[14,11],[17,11],[17,27],[18,17],[19,11],[20,11],[24,21],[25,21],[25,27],[26,25],[30,27],[35,27]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[12,30],[14,12],[17,6],[17,35],[19,17],[20,19],[24,9],[25,24],[25,12],[30,4],[35,25]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",41,0,0],["Start","T",42,0,1],["S1","T",43,0,2],["a","T",44,0,3],["S4","T",45,0,4],["a","T",46,0,5],["S2","T",47,0,6],["b","T",48,0,7],["S1","T",49,0,8],["a","T",50,0,9],["S3","T",51,0,10],["a","T",52,0,11],["S3","T",53,0,12],["b","T",54,0,13],["S4","T",55,0,14],["a","T",56,0,15],["S2","T",57,0,16],["End","T",58,0,17],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S3","C",9,1,10],["a","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,16],["a","A",18,2,17],["S2","A",19,2,18],["End","A",20,2,19],["S3_behavior","R",21,3,0],["S3","A",24,3,11],["S3_to_S3","C",25,3,12],["a","A",26,3,13],["S3","A",27,3,14],["S3_to_S4","C",28,3,15],["b","A",29,3,16],["S4_behavior","R",30,4,0],["S4","A",33,4,4],["S4","A",38,4,15] ], + +[[2,1],[3,1],[4,1],[4,30],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,30],[13,12],[14,11],[17,11],[17,30],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[28,30],[29,28],[33,30],[38,30]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[12,33],[14,12],[17,6],[17,38],[19,17],[20,19],[24,9],[25,24],[27,25],[28,27],[28,12],[33,4],[38,28]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",44,0,0],["Start","T",45,0,1],["S1","T",46,0,2],["a","T",47,0,3],["S4","T",48,0,4],["a","T",49,0,5],["S2","T",50,0,6],["b","T",51,0,7],["S1","T",52,0,8],["a","T",53,0,9],["S3","T",54,0,10],["a","T",55,0,11],["S3","T",56,0,12],["a","T",57,0,13],["S3","T",58,0,14],["b","T",59,0,15],["S4","T",60,0,16],["a","T",61,0,17],["S2","T",62,0,18],["End","T",63,0,19],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S3","C",9,1,10],["a","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,19],["a","A",18,2,20],["S2","A",19,2,21],["End","A",20,2,22],["S3_behavior","R",21,3,0],["S3","A",24,3,11],["S3_to_S3","C",25,3,12],["a","A",26,3,13],["S3","A",27,3,14],["S3_to_S3","C",28,3,15],["a","A",29,3,16],["S3","A",30,3,17],["S3_to_S4","C",31,3,18],["b","A",32,3,19],["S4_behavior","R",33,4,0],["S4","A",36,4,4],["S4","A",41,4,18] ], + +[[2,1],[3,1],[4,1],[4,33],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,33],[13,12],[14,11],[17,11],[17,33],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[29,28],[30,21],[31,21],[31,33],[32,31],[36,33],[41,33]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[12,36],[14,12],[17,6],[17,41],[19,17],[20,19],[24,9],[25,24],[27,25],[28,27],[30,28],[31,30],[31,12],[36,4],[41,31]] +,{"VIEWS":[ ]} +], + +["U", 0.00757576, +[ ["The path: ","T",33,0,0],["Start","T",34,0,1],["S1","T",35,0,2],["a","T",36,0,3],["S4","T",37,0,4],["a","T",38,0,5],["S2","T",39,0,6],["b","T",40,0,7],["S1","T",41,0,8],["a","T",42,0,9],["S4","T",43,0,10],["a","T",44,0,11],["S2","T",45,0,12],["End","T",46,0,13],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S4","C",9,1,10],["a","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,12],["a","A",18,2,13],["S2","A",19,2,14],["End","A",20,2,15],["S3_behavior","R",21,3,0],["S4_behavior","R",22,4,0],["S4","A",25,4,4],["S4","A",30,4,11] ], + +[[2,1],[3,1],[4,1],[4,22],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,22],[10,9],[12,11],[12,22],[13,12],[14,11],[17,11],[17,22],[18,17],[19,11],[20,11],[25,22],[30,22]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,25],[14,12],[17,6],[17,30],[19,17],[20,19],[25,4],[30,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00757576, +[ ["The path: ","T",33,0,0],["Start","T",34,0,1],["S1","T",35,0,2],["a","T",36,0,3],["S4","T",37,0,4],["a","T",38,0,5],["S2","T",39,0,6],["b","T",40,0,7],["S1","T",41,0,8],["b","T",42,0,9],["S4","T",43,0,10],["a","T",44,0,11],["S2","T",45,0,12],["End","T",46,0,13],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["a","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S4","C",9,1,10],["b","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,12],["a","A",18,2,13],["S2","A",19,2,14],["End","A",20,2,15],["S3_behavior","R",21,3,0],["S4_behavior","R",22,4,0],["S4","A",25,4,4],["S4","A",30,4,11] ], + +[[2,1],[3,1],[4,1],[4,22],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,22],[10,9],[12,11],[12,22],[13,12],[14,11],[17,11],[17,22],[18,17],[19,11],[20,11],[25,22],[30,22]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,25],[14,12],[17,6],[17,30],[19,17],[20,19],[25,4],[30,9]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",38,0,0],["Start","T",39,0,1],["S1","T",40,0,2],["b","T",41,0,3],["S4","T",42,0,4],["a","T",43,0,5],["S2","T",44,0,6],["b","T",45,0,7],["S1","T",46,0,8],["a","T",47,0,9],["S3","T",48,0,10],["b","T",49,0,11],["S4","T",50,0,12],["a","T",51,0,13],["S2","T",52,0,14],["End","T",53,0,15],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["b","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S3","C",9,1,10],["a","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,13],["a","A",18,2,14],["S2","A",19,2,15],["End","A",20,2,16],["S3_behavior","R",21,3,0],["S3","A",24,3,11],["S3_to_S4","C",25,3,12],["b","A",26,3,13],["S4_behavior","R",27,4,0],["S4","A",30,4,4],["S4","A",35,4,12] ], + +[[2,1],[3,1],[4,1],[4,27],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,27],[13,12],[14,11],[17,11],[17,27],[18,17],[19,11],[20,11],[24,21],[25,21],[25,27],[26,25],[30,27],[35,27]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[12,30],[14,12],[17,6],[17,35],[19,17],[20,19],[24,9],[25,24],[25,12],[30,4],[35,25]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",41,0,0],["Start","T",42,0,1],["S1","T",43,0,2],["b","T",44,0,3],["S4","T",45,0,4],["a","T",46,0,5],["S2","T",47,0,6],["b","T",48,0,7],["S1","T",49,0,8],["a","T",50,0,9],["S3","T",51,0,10],["a","T",52,0,11],["S3","T",53,0,12],["b","T",54,0,13],["S4","T",55,0,14],["a","T",56,0,15],["S2","T",57,0,16],["End","T",58,0,17],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["b","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S3","C",9,1,10],["a","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,16],["a","A",18,2,17],["S2","A",19,2,18],["End","A",20,2,19],["S3_behavior","R",21,3,0],["S3","A",24,3,11],["S3_to_S3","C",25,3,12],["a","A",26,3,13],["S3","A",27,3,14],["S3_to_S4","C",28,3,15],["b","A",29,3,16],["S4_behavior","R",30,4,0],["S4","A",33,4,4],["S4","A",38,4,15] ], + +[[2,1],[3,1],[4,1],[4,30],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,30],[13,12],[14,11],[17,11],[17,30],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[28,30],[29,28],[33,30],[38,30]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[12,33],[14,12],[17,6],[17,38],[19,17],[20,19],[24,9],[25,24],[27,25],[28,27],[28,12],[33,4],[38,28]] +,{"VIEWS":[ ]} +], + +["U", 0.010101, +[ ["The path: ","T",44,0,0],["Start","T",45,0,1],["S1","T",46,0,2],["b","T",47,0,3],["S4","T",48,0,4],["a","T",49,0,5],["S2","T",50,0,6],["b","T",51,0,7],["S1","T",52,0,8],["a","T",53,0,9],["S3","T",54,0,10],["a","T",55,0,11],["S3","T",56,0,12],["a","T",57,0,13],["S3","T",58,0,14],["b","T",59,0,15],["S4","T",60,0,16],["a","T",61,0,17],["S2","T",62,0,18],["End","T",63,0,19],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["b","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S3","C",9,1,10],["a","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,19],["a","A",18,2,20],["S2","A",19,2,21],["End","A",20,2,22],["S3_behavior","R",21,3,0],["S3","A",24,3,11],["S3_to_S3","C",25,3,12],["a","A",26,3,13],["S3","A",27,3,14],["S3_to_S3","C",28,3,15],["a","A",29,3,16],["S3","A",30,3,17],["S3_to_S4","C",31,3,18],["b","A",32,3,19],["S4_behavior","R",33,4,0],["S4","A",36,4,4],["S4","A",41,4,18] ], + +[[2,1],[3,1],[4,1],[4,33],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,21],[10,9],[12,11],[12,33],[13,12],[14,11],[17,11],[17,33],[18,17],[19,11],[20,11],[24,21],[25,21],[26,25],[27,21],[28,21],[29,28],[30,21],[31,21],[31,33],[32,31],[36,33],[41,33]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[12,36],[14,12],[17,6],[17,41],[19,17],[20,19],[24,9],[25,24],[27,25],[28,27],[30,28],[31,30],[31,12],[36,4],[41,31]] +,{"VIEWS":[ ]} +], + +["U", 0.00757576, +[ ["The path: ","T",33,0,0],["Start","T",34,0,1],["S1","T",35,0,2],["b","T",36,0,3],["S4","T",37,0,4],["a","T",38,0,5],["S2","T",39,0,6],["b","T",40,0,7],["S1","T",41,0,8],["a","T",42,0,9],["S4","T",43,0,10],["a","T",44,0,11],["S2","T",45,0,12],["End","T",46,0,13],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["b","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S4","C",9,1,10],["a","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,12],["a","A",18,2,13],["S2","A",19,2,14],["End","A",20,2,15],["S3_behavior","R",21,3,0],["S4_behavior","R",22,4,0],["S4","A",25,4,4],["S4","A",30,4,11] ], + +[[2,1],[3,1],[4,1],[4,22],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,22],[10,9],[12,11],[12,22],[13,12],[14,11],[17,11],[17,22],[18,17],[19,11],[20,11],[25,22],[30,22]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,25],[14,12],[17,6],[17,30],[19,17],[20,19],[25,4],[30,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00757576, +[ ["The path: ","T",33,0,0],["Start","T",34,0,1],["S1","T",35,0,2],["b","T",36,0,3],["S4","T",37,0,4],["a","T",38,0,5],["S2","T",39,0,6],["b","T",40,0,7],["S1","T",41,0,8],["b","T",42,0,9],["S4","T",43,0,10],["a","T",44,0,11],["S2","T",45,0,12],["End","T",46,0,13],["S1_behavior","R",1,1,0],["Start","A",2,1,1],["S1","A",3,1,2],["S1_to_S4","C",4,1,3],["b","A",5,1,4],["S2_to_S1","C",6,1,7],["b","A",7,1,8],["S1","A",8,1,9],["S1_to_S4","C",9,1,10],["b","A",10,1,11],["S2_behavior","R",11,2,0],["S4_to_S2","C",12,2,5],["a","A",13,2,6],["S2","A",14,2,7],["S4_to_S2","C",17,2,12],["a","A",18,2,13],["S2","A",19,2,14],["End","A",20,2,15],["S3_behavior","R",21,3,0],["S4_behavior","R",22,4,0],["S4","A",25,4,4],["S4","A",30,4,11] ], + +[[2,1],[3,1],[4,1],[4,22],[5,4],[6,1],[6,11],[7,6],[8,1],[9,1],[9,22],[10,9],[12,11],[12,22],[13,12],[14,11],[17,11],[17,22],[18,17],[19,11],[20,11],[25,22],[30,22]], +[[3,2],[4,3],[6,4],[6,14],[8,6],[9,8],[9,12],[12,25],[14,12],[17,6],[17,30],[19,17],[20,19],[25,4],[30,9]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example15_Petri_net.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example15_Petri_net.json new file mode 100644 index 0000000..5e68f03 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example15_Petri_net.json @@ -0,0 +1,39 @@ +{"traces":[ + +["U", 0.981157, +[ ["At the end of simulation place P1_behavior has 1 tokens","T",11,0,0],["At the end of simulation place P2_behavior has 0 tokens","T",12,0,1],["At the end of simulation place P3_behavior has 2 tokens","T",13,0,2],["At the end of simulation place P4_behavior has 1 tokens","T",14,0,3],["P1_behavior","R",1,1,0],["get_token","A",2,1,1],["T1_behavior","R",3,2,0],["P2_behavior","R",4,3,0],["P3_behavior","R",5,4,0],["get_token","A",6,4,1],["get_token","A",7,4,2],["T2_behavior","R",8,5,0],["P4_behavior","R",9,6,0],["get_token","A",10,6,1] ], + +[[2,1],[6,5],[7,5],[10,9]], +[[7,6]] +,{"VIEWS":[ ]} +], + +["U", 0.0181696, +[ ["At the end of simulation place P1_behavior has 0 tokens","T",30,0,0],["At the end of simulation place P2_behavior has 0 tokens","T",31,0,1],["At the end of simulation place P3_behavior has 2 tokens","T",32,0,2],["At the end of simulation place P4_behavior has 1 tokens","T",33,0,3],["P1_behavior","R",1,1,0],["get_token","A",2,1,1],["P1_sends_to_T1","C",3,1,2],["send_token","A",4,1,3],["T1_behavior","R",5,2,0],["T1_receives_from_P1","A",6,2,2],["T1_fires","A",7,2,3],["T1_sends_to_P2","C",8,2,4],["send_token","A",9,2,5],["T1_sends_to_P3","C",10,3,3],["send_token","A",11,3,4],["P2_behavior","R",12,4,0],["P2_receives_from_T1","C",13,4,5],["get_token","A",14,4,6],["P2_sends_to_T2","C",15,4,7],["send_token","A",16,4,8],["P3_behavior","R",17,5,0],["get_token","A",18,5,1],["get_token","A",19,5,2],["P3_receives_from_T1","C",20,5,4],["get_token","A",21,5,5],["P3_sends_to_T2","C",22,5,6],["send_token","A",23,5,7],["T2_behavior","R",24,6,0],["T2_receives_from_P2","A",25,6,8],["T2_fires","A",27,6,9],["T2_receives_from_P3","A",26,7,7],["P4_behavior","R",28,8,0],["get_token","A",29,8,1] ], + +[[2,1],[3,1],[4,3],[6,5],[7,5],[8,5],[9,8],[10,5],[11,10],[13,12],[14,13],[15,12],[16,15],[18,17],[19,17],[20,17],[21,20],[22,17],[23,22],[25,24],[26,24],[27,24],[29,28]], +[[3,2],[6,3],[7,6],[8,7],[10,7],[13,8],[15,13],[19,18],[20,19],[20,10],[22,20],[25,15],[26,22],[27,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.000336474, +[ ["At the end of simulation place P1_behavior has 0 tokens","T",57,0,0],["At the end of simulation place P2_behavior has 0 tokens","T",58,0,1],["At the end of simulation place P3_behavior has 2 tokens","T",59,0,2],["At the end of simulation place P4_behavior has 2 tokens","T",60,0,3],["P1_behavior","R",1,1,0],["get_token","A",2,1,1],["P1_sends_to_T1","C",3,1,2],["send_token","A",4,1,3],["P1_receives_from_T2","C",5,1,11],["get_token","A",6,1,12],["P1_sends_to_T1","C",7,1,13],["send_token","A",8,1,14],["T1_behavior","R",9,2,0],["T1_receives_from_P1","A",10,2,2],["T1_fires","A",11,2,3],["T1_sends_to_P2","C",12,2,4],["send_token","A",13,2,5],["T1_receives_from_P1","A",16,2,13],["T1_fires","A",17,2,14],["T1_sends_to_P2","C",18,2,15],["send_token","A",19,2,16],["T1_sends_to_P3","C",14,3,3],["send_token","A",15,3,4],["T1_sends_to_P3","C",20,3,14],["send_token","A",21,3,15],["P2_behavior","R",22,4,0],["P2_receives_from_T1","C",23,4,5],["get_token","A",24,4,6],["P2_sends_to_T2","C",25,4,7],["send_token","A",26,4,8],["P2_receives_from_T1","C",27,4,16],["get_token","A",28,4,17],["P2_sends_to_T2","C",29,4,18],["send_token","A",30,4,19],["P3_behavior","R",31,5,0],["get_token","A",32,5,1],["get_token","A",33,5,2],["P3_sends_to_T2","C",34,5,3],["send_token","A",35,5,4],["P3_receives_from_T1","C",36,5,5],["get_token","A",37,5,6],["P3_receives_from_T1","C",38,5,15],["get_token","A",39,5,16],["P3_sends_to_T2","C",40,5,17],["send_token","A",41,5,18],["T2_behavior","R",42,6,0],["T2_receives_from_P2","A",43,6,8],["T2_fires","A",45,6,9],["T2_sends_to_P1","C",46,6,10],["send_token","A",47,6,11],["T2_receives_from_P2","A",50,6,19],["T2_fires","A",52,6,20],["T2_receives_from_P3","A",44,7,4],["T2_sends_to_P4","C",48,7,9],["send_token","A",49,7,10],["T2_receives_from_P3","A",51,7,18],["P4_behavior","R",53,8,0],["get_token","A",54,8,1],["P4_receives_from_T2","C",55,8,9],["get_token","A",56,8,10] ], + +[[2,1],[3,1],[4,3],[5,1],[6,5],[7,1],[8,7],[10,9],[11,9],[12,9],[13,12],[14,9],[15,14],[16,9],[17,9],[18,9],[19,18],[20,9],[21,20],[23,22],[24,23],[25,22],[26,25],[27,22],[28,27],[29,22],[30,29],[32,31],[33,31],[34,31],[35,34],[36,31],[37,36],[38,31],[39,38],[40,31],[41,40],[43,42],[44,42],[45,42],[46,42],[47,46],[48,42],[49,48],[50,42],[51,42],[52,42],[54,53],[55,53],[56,55]], +[[3,2],[5,3],[5,46],[7,5],[10,3],[11,10],[12,11],[14,11],[16,12],[16,14],[16,7],[17,16],[18,17],[20,17],[23,12],[25,23],[27,25],[27,18],[29,27],[33,32],[34,33],[36,34],[36,14],[38,36],[38,20],[40,38],[43,25],[44,34],[45,43],[45,44],[46,45],[48,45],[50,46],[50,48],[50,29],[51,46],[51,48],[51,40],[52,50],[52,51],[55,54],[55,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000336474, +[ ["At the end of simulation place P1_behavior has 0 tokens","T",57,0,0],["At the end of simulation place P2_behavior has 0 tokens","T",58,0,1],["At the end of simulation place P3_behavior has 2 tokens","T",59,0,2],["At the end of simulation place P4_behavior has 2 tokens","T",60,0,3],["P1_behavior","R",1,1,0],["get_token","A",2,1,1],["P1_sends_to_T1","C",3,1,2],["send_token","A",4,1,3],["P1_receives_from_T2","C",5,1,11],["get_token","A",6,1,12],["P1_sends_to_T1","C",7,1,13],["send_token","A",8,1,14],["T1_behavior","R",9,2,0],["T1_receives_from_P1","A",10,2,2],["T1_fires","A",11,2,3],["T1_sends_to_P2","C",12,2,4],["send_token","A",13,2,5],["T1_receives_from_P1","A",16,2,13],["T1_fires","A",17,2,14],["T1_sends_to_P2","C",18,2,15],["send_token","A",19,2,16],["T1_sends_to_P3","C",14,3,3],["send_token","A",15,3,4],["T1_sends_to_P3","C",20,3,14],["send_token","A",21,3,15],["P2_behavior","R",22,4,0],["P2_receives_from_T1","C",23,4,5],["get_token","A",24,4,6],["P2_sends_to_T2","C",25,4,7],["send_token","A",26,4,8],["P2_receives_from_T1","C",27,4,16],["get_token","A",28,4,17],["P2_sends_to_T2","C",29,4,18],["send_token","A",30,4,19],["P3_behavior","R",31,5,0],["get_token","A",32,5,1],["get_token","A",33,5,2],["P3_receives_from_T1","C",34,5,4],["get_token","A",35,5,5],["P3_sends_to_T2","C",36,5,6],["send_token","A",37,5,7],["P3_receives_from_T1","C",38,5,15],["get_token","A",39,5,16],["P3_sends_to_T2","C",40,5,17],["send_token","A",41,5,18],["T2_behavior","R",42,6,0],["T2_receives_from_P2","A",43,6,8],["T2_fires","A",45,6,9],["T2_sends_to_P1","C",46,6,10],["send_token","A",47,6,11],["T2_receives_from_P2","A",50,6,19],["T2_fires","A",52,6,20],["T2_receives_from_P3","A",44,7,7],["T2_sends_to_P4","C",48,7,9],["send_token","A",49,7,10],["T2_receives_from_P3","A",51,7,18],["P4_behavior","R",53,8,0],["get_token","A",54,8,1],["P4_receives_from_T2","C",55,8,9],["get_token","A",56,8,10] ], + +[[2,1],[3,1],[4,3],[5,1],[6,5],[7,1],[8,7],[10,9],[11,9],[12,9],[13,12],[14,9],[15,14],[16,9],[17,9],[18,9],[19,18],[20,9],[21,20],[23,22],[24,23],[25,22],[26,25],[27,22],[28,27],[29,22],[30,29],[32,31],[33,31],[34,31],[35,34],[36,31],[37,36],[38,31],[39,38],[40,31],[41,40],[43,42],[44,42],[45,42],[46,42],[47,46],[48,42],[49,48],[50,42],[51,42],[52,42],[54,53],[55,53],[56,55]], +[[3,2],[5,3],[5,46],[7,5],[10,3],[11,10],[12,11],[14,11],[16,12],[16,14],[16,7],[17,16],[18,17],[20,17],[23,12],[25,23],[27,25],[27,18],[29,27],[33,32],[34,33],[34,14],[36,34],[38,36],[38,20],[40,38],[43,25],[44,36],[45,43],[45,44],[46,45],[48,45],[50,46],[50,48],[50,29],[51,46],[51,48],[51,40],[52,50],[52,51],[55,54],[55,48]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U", +{"GRAPH":["Petri net diagram", + [ [0, "P1_behavior"] ,[1, "Start"] ,[2, "T1_behavior"] ,[3, "P2_behavior"] ,[4, "P3_behavior"] ,[5, "T2_behavior"] ,[6, "P4_behavior"] ], + [ [0,2,"1"],[1,0,"initial 1 tokens"],[1,4,"initial 2 tokens"],[1,6,"initial 1 tokens"],[2,3,"1"],[2,4,"1"],[3,5,"1"],[4,5,"1"],[5,0,"1"],[5,6,"1"]], + [] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example16_software_spiral_process.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example16_software_spiral_process.json new file mode 100644 index 0000000..77e5c92 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example16_software_spiral_process.json @@ -0,0 +1,59 @@ +{"traces":[ + +["U", 0.571429, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_satisfied","A",4,0,5],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Spiral_process","R",5,1,0],["Initial_requirements","A",7,1,2],["Initial_design","C",8,1,3],["Architecture_design","A",9,1,4],["Detailed_design","A",10,1,6],["Coding","A",11,1,7],["Testing","A",12,1,8],["Delivery_of_the_system","A",15,1,9],["Architect","R",16,2,0],["Developers","R",21,3,0] ], + +[[2,1],[2,5],[2,16],[3,1],[3,5],[3,16],[4,1],[4,5],[7,5],[7,16],[8,5],[9,8],[9,16],[10,8],[10,21],[11,8],[11,21],[12,8],[12,21],[15,5]], +[[3,2],[3,8],[3,9],[4,3],[7,2],[8,7],[9,7],[10,9],[11,10],[12,11],[15,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_not_satisfied","A",4,0,10],["Stakeholders_are_satisfied","A",6,0,12],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Prototype_demonstration_to_stakeholders","A",5,1,12],["Spiral_process","R",7,1,0],["Initial_requirements","A",9,1,2],["Initial_design","C",10,1,3],["Architecture_design","A",11,1,4],["Detailed_design","A",12,1,6],["Coding","A",13,1,7],["Testing","A",14,1,8],["One_iteration","C",16,1,9],["Adjust_requirements","A",18,1,10],["Redesign","C",19,1,11],["Detailed_redesign","A",20,1,13],["Coding","A",21,1,14],["Testing","A",22,1,15],["Delivery_of_the_system","A",25,1,16],["Architect","R",26,2,0],["Developers","R",33,3,0] ], + +[[2,1],[2,7],[2,26],[3,1],[3,7],[3,26],[4,1],[4,16],[5,1],[5,16],[5,26],[6,1],[6,7],[9,7],[9,26],[10,7],[11,10],[11,26],[12,10],[12,33],[13,10],[13,33],[14,10],[14,33],[16,7],[18,16],[18,26],[19,16],[20,19],[20,33],[21,19],[21,33],[22,19],[22,33],[25,7]], +[[3,2],[3,10],[3,11],[4,3],[5,4],[5,19],[5,18],[6,5],[6,16],[9,2],[10,9],[11,9],[12,11],[13,12],[14,13],[16,3],[18,4],[18,3],[19,18],[20,14],[21,20],[22,21],[25,6]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_not_satisfied","A",4,0,10],["Stakeholders_are_satisfied","A",6,0,13],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Prototype_demonstration_to_stakeholders","A",5,1,13],["Spiral_process","R",7,1,0],["Initial_requirements","A",9,1,2],["Initial_design","C",10,1,3],["Architecture_design","A",11,1,4],["Detailed_design","A",12,1,6],["Coding","A",13,1,7],["Testing","A",14,1,8],["One_iteration","C",16,1,9],["Adjust_requirements","A",18,1,10],["Redesign","C",19,1,11],["Architecture_redesign","A",20,1,12],["Detailed_redesign","A",21,1,14],["Coding","A",22,1,15],["Testing","A",23,1,16],["Delivery_of_the_system","A",26,1,17],["Architect","R",27,2,0],["Developers","R",35,3,0] ], + +[[2,1],[2,7],[2,27],[3,1],[3,7],[3,27],[4,1],[4,16],[5,1],[5,16],[5,27],[6,1],[6,7],[9,7],[9,27],[10,7],[11,10],[11,27],[12,10],[12,35],[13,10],[13,35],[14,10],[14,35],[16,7],[18,16],[18,27],[19,16],[20,19],[20,27],[21,19],[21,35],[22,19],[22,35],[23,19],[23,35],[26,7]], +[[3,2],[3,10],[3,11],[4,3],[5,4],[5,19],[5,20],[6,5],[6,16],[9,2],[10,9],[11,9],[12,11],[13,12],[14,13],[16,3],[18,4],[18,3],[19,18],[20,18],[21,20],[21,14],[22,21],[23,22],[26,6]] +,{"VIEWS":[ ]} +], + +["U", 0.0357143, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_not_satisfied","A",4,0,10],["Stakeholders_are_not_satisfied","A",6,0,17],["Stakeholders_are_satisfied","A",8,0,19],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Prototype_demonstration_to_stakeholders","A",5,1,12],["Prototype_demonstration_to_stakeholders","A",7,1,19],["Spiral_process","R",9,1,0],["Initial_requirements","A",11,1,2],["Initial_design","C",12,1,3],["Architecture_design","A",13,1,4],["Detailed_design","A",14,1,6],["Coding","A",15,1,7],["Testing","A",16,1,8],["One_iteration","C",18,1,9],["Adjust_requirements","A",20,1,10],["Redesign","C",21,1,11],["Detailed_redesign","A",22,1,13],["Coding","A",23,1,14],["Testing","A",24,1,15],["One_iteration","C",26,1,16],["Adjust_requirements","A",28,1,17],["Redesign","C",29,1,18],["Detailed_redesign","A",30,1,20],["Coding","A",31,1,21],["Testing","A",32,1,22],["Delivery_of_the_system","A",35,1,23],["Architect","R",36,2,0],["Developers","R",45,3,0] ], + +[[2,1],[2,9],[2,36],[3,1],[3,9],[3,36],[4,1],[4,18],[5,1],[5,18],[5,36],[6,1],[6,26],[7,1],[7,26],[7,36],[8,1],[8,9],[11,9],[11,36],[12,9],[13,12],[13,36],[14,12],[14,45],[15,12],[15,45],[16,12],[16,45],[18,9],[20,18],[20,36],[21,18],[22,21],[22,45],[23,21],[23,45],[24,21],[24,45],[26,9],[28,26],[28,36],[29,26],[30,29],[30,45],[31,29],[31,45],[32,29],[32,45],[35,9]], +[[3,2],[3,12],[3,13],[4,3],[5,4],[5,21],[5,20],[6,5],[7,6],[7,29],[7,28],[8,7],[8,26],[11,2],[12,11],[13,11],[14,13],[15,14],[16,15],[18,3],[20,4],[20,3],[21,20],[22,16],[23,22],[24,23],[26,18],[28,6],[28,5],[29,28],[30,24],[31,30],[32,31],[35,8]] +,{"VIEWS":[ ]} +], + +["U", 0.0357143, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_not_satisfied","A",4,0,10],["Stakeholders_are_not_satisfied","A",6,0,17],["Stakeholders_are_satisfied","A",8,0,20],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Prototype_demonstration_to_stakeholders","A",5,1,12],["Prototype_demonstration_to_stakeholders","A",7,1,20],["Spiral_process","R",9,1,0],["Initial_requirements","A",11,1,2],["Initial_design","C",12,1,3],["Architecture_design","A",13,1,4],["Detailed_design","A",14,1,6],["Coding","A",15,1,7],["Testing","A",16,1,8],["One_iteration","C",18,1,9],["Adjust_requirements","A",20,1,10],["Redesign","C",21,1,11],["Detailed_redesign","A",22,1,13],["Coding","A",23,1,14],["Testing","A",24,1,15],["One_iteration","C",26,1,16],["Adjust_requirements","A",28,1,17],["Redesign","C",29,1,18],["Architecture_redesign","A",30,1,19],["Detailed_redesign","A",31,1,21],["Coding","A",32,1,22],["Testing","A",33,1,23],["Delivery_of_the_system","A",36,1,24],["Architect","R",37,2,0],["Developers","R",47,3,0] ], + +[[2,1],[2,9],[2,37],[3,1],[3,9],[3,37],[4,1],[4,18],[5,1],[5,18],[5,37],[6,1],[6,26],[7,1],[7,26],[7,37],[8,1],[8,9],[11,9],[11,37],[12,9],[13,12],[13,37],[14,12],[14,47],[15,12],[15,47],[16,12],[16,47],[18,9],[20,18],[20,37],[21,18],[22,21],[22,47],[23,21],[23,47],[24,21],[24,47],[26,9],[28,26],[28,37],[29,26],[30,29],[30,37],[31,29],[31,47],[32,29],[32,47],[33,29],[33,47],[36,9]], +[[3,2],[3,12],[3,13],[4,3],[5,4],[5,21],[5,20],[6,5],[7,6],[7,29],[7,30],[8,7],[8,26],[11,2],[12,11],[13,11],[14,13],[15,14],[16,15],[18,3],[20,4],[20,3],[21,20],[22,16],[23,22],[24,23],[26,18],[28,6],[28,5],[29,28],[30,28],[31,30],[31,24],[32,31],[33,32],[36,8]] +,{"VIEWS":[ ]} +], + +["U", 0.0357143, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_not_satisfied","A",4,0,10],["Stakeholders_are_not_satisfied","A",6,0,18],["Stakeholders_are_satisfied","A",8,0,20],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Prototype_demonstration_to_stakeholders","A",5,1,13],["Prototype_demonstration_to_stakeholders","A",7,1,20],["Spiral_process","R",9,1,0],["Initial_requirements","A",11,1,2],["Initial_design","C",12,1,3],["Architecture_design","A",13,1,4],["Detailed_design","A",14,1,6],["Coding","A",15,1,7],["Testing","A",16,1,8],["One_iteration","C",18,1,9],["Adjust_requirements","A",20,1,10],["Redesign","C",21,1,11],["Architecture_redesign","A",22,1,12],["Detailed_redesign","A",23,1,14],["Coding","A",24,1,15],["Testing","A",25,1,16],["One_iteration","C",27,1,17],["Adjust_requirements","A",29,1,18],["Redesign","C",30,1,19],["Detailed_redesign","A",31,1,21],["Coding","A",32,1,22],["Testing","A",33,1,23],["Delivery_of_the_system","A",36,1,24],["Architect","R",37,2,0],["Developers","R",47,3,0] ], + +[[2,1],[2,9],[2,37],[3,1],[3,9],[3,37],[4,1],[4,18],[5,1],[5,18],[5,37],[6,1],[6,27],[7,1],[7,27],[7,37],[8,1],[8,9],[11,9],[11,37],[12,9],[13,12],[13,37],[14,12],[14,47],[15,12],[15,47],[16,12],[16,47],[18,9],[20,18],[20,37],[21,18],[22,21],[22,37],[23,21],[23,47],[24,21],[24,47],[25,21],[25,47],[27,9],[29,27],[29,37],[30,27],[31,30],[31,47],[32,30],[32,47],[33,30],[33,47],[36,9]], +[[3,2],[3,12],[3,13],[4,3],[5,4],[5,21],[5,22],[6,5],[7,6],[7,30],[7,29],[8,7],[8,27],[11,2],[12,11],[13,11],[14,13],[15,14],[16,15],[18,3],[20,4],[20,3],[21,20],[22,20],[23,22],[23,16],[24,23],[25,24],[27,18],[29,6],[29,5],[30,29],[31,25],[32,31],[33,32],[36,8]] +,{"VIEWS":[ ]} +], + +["U", 0.0357143, +[ ["Stakeholders","R",1,0,0],["Stakeholders_are_not_satisfied","A",4,0,10],["Stakeholders_are_not_satisfied","A",6,0,18],["Stakeholders_are_satisfied","A",8,0,21],["Initial_communication_with_stakeholders","A",2,1,1],["Prototype_demonstration_to_stakeholders","A",3,1,5],["Prototype_demonstration_to_stakeholders","A",5,1,13],["Prototype_demonstration_to_stakeholders","A",7,1,21],["Spiral_process","R",9,1,0],["Initial_requirements","A",11,1,2],["Initial_design","C",12,1,3],["Architecture_design","A",13,1,4],["Detailed_design","A",14,1,6],["Coding","A",15,1,7],["Testing","A",16,1,8],["One_iteration","C",18,1,9],["Adjust_requirements","A",20,1,10],["Redesign","C",21,1,11],["Architecture_redesign","A",22,1,12],["Detailed_redesign","A",23,1,14],["Coding","A",24,1,15],["Testing","A",25,1,16],["One_iteration","C",27,1,17],["Adjust_requirements","A",29,1,18],["Redesign","C",30,1,19],["Architecture_redesign","A",31,1,20],["Detailed_redesign","A",32,1,22],["Coding","A",33,1,23],["Testing","A",34,1,24],["Delivery_of_the_system","A",37,1,25],["Architect","R",38,2,0],["Developers","R",49,3,0] ], + +[[2,1],[2,9],[2,38],[3,1],[3,9],[3,38],[4,1],[4,18],[5,1],[5,18],[5,38],[6,1],[6,27],[7,1],[7,27],[7,38],[8,1],[8,9],[11,9],[11,38],[12,9],[13,12],[13,38],[14,12],[14,49],[15,12],[15,49],[16,12],[16,49],[18,9],[20,18],[20,38],[21,18],[22,21],[22,38],[23,21],[23,49],[24,21],[24,49],[25,21],[25,49],[27,9],[29,27],[29,38],[30,27],[31,30],[31,38],[32,30],[32,49],[33,30],[33,49],[34,30],[34,49],[37,9]], +[[3,2],[3,12],[3,13],[4,3],[5,4],[5,21],[5,22],[6,5],[7,6],[7,30],[7,31],[8,7],[8,27],[11,2],[12,11],[13,11],[14,13],[15,14],[16,15],[18,3],[20,4],[20,3],[21,20],[22,20],[23,22],[23,16],[24,23],[25,24],[27,18],[29,6],[29,5],[30,29],[31,29],[32,31],[32,25],[33,32],[34,33],[37,8]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example17_Dining_Philosophers.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example17_Dining_Philosophers.json new file mode 100644 index 0000000..69660a1 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example17_Dining_Philosophers.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.5, +[ ["Philosophers","R",1,0,0],["Philosopher","C",2,0,1],["think","A",3,0,2],["eat","C",4,0,4],["left_fork","A",5,0,5],["right_fork","A",6,1,5],["Philosopher","C",7,2,1],["think","A",8,2,2],["eat","C",9,2,3],["left_fork","A",10,2,4],["right_fork","A",11,3,4],["Forks","R",12,4,0],["Fork","C",13,4,1],["Fork","C",16,5,1] ], + +[[2,1],[3,2],[4,2],[5,4],[5,16],[6,4],[6,13],[7,1],[8,7],[9,7],[10,9],[10,13],[11,9],[11,16],[13,12],[16,12]], +[[4,3],[4,9],[5,11],[6,10],[9,8]] +,{"VIEWS":[ ]} +], + +["U", 0.5, +[ ["Philosophers","R",1,0,0],["Philosopher","C",2,0,1],["think","A",3,0,2],["eat","C",4,0,3],["left_fork","A",5,0,4],["right_fork","A",6,1,4],["Philosopher","C",7,2,1],["think","A",8,2,2],["eat","C",9,2,4],["left_fork","A",10,2,5],["right_fork","A",11,3,5],["Forks","R",12,4,0],["Fork","C",13,4,1],["Fork","C",16,5,1] ], + +[[2,1],[3,2],[4,2],[5,4],[5,16],[6,4],[6,13],[7,1],[8,7],[9,7],[10,9],[10,13],[11,9],[11,16],[13,12],[16,12]], +[[4,3],[9,8],[9,4],[10,6],[11,5]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example18_Workflow_pattern.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example18_Workflow_pattern.json new file mode 100644 index 0000000..5b4c632 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example18_Workflow_pattern.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.5, +[ ["Phase1","R",1,0,0],["check_breathing","A",2,0,1],["check_pulse","A",3,1,1],["finish_first","A",4,1,2],["Triage","R",5,2,0],["identify_the_patient","A",6,2,2],["record_assessment_findings","A",7,2,3],["identify_the_priority","A",8,2,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[8,5]], +[[4,3],[6,4],[7,6],[8,7]] +,{"VIEWS":[ ]} +], + +["U", 0.5, +[ ["Phase1","R",1,0,0],["check_breathing","A",2,0,1],["finish_first","A",3,0,2],["check_pulse","A",4,1,1],["Triage","R",5,2,0],["identify_the_patient","A",6,2,3],["record_assessment_findings","A",7,2,4],["identify_the_priority","A",8,2,5] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[8,5]], +[[3,2],[6,3],[7,6],[8,7]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example19_Consumers_Suppliers.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example19_Consumers_Suppliers.json new file mode 100644 index 0000000..01ddf93 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example19_Consumers_Suppliers.json @@ -0,0 +1,1083 @@ +{"traces":[ + +["U", 0.161616, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Supply_Office","R",5,1,0],["Receive_order_and_buy","A",6,1,2],["Producers","R",7,2,0],["Producer","C",8,2,1],["Sell","A",9,2,2] ], + +[[2,1],[3,2],[4,2],[6,5],[8,7],[9,8]], +[[4,3],[4,9],[6,3],[9,6]], +["Is_supplier_for", [8,2]], +["related_to", [3,6],[6,9],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.053872, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Supply_Office","R",5,1,0],["Receive_order_and_buy","A",6,1,2],["Producers","R",7,2,0],["Producer","C",8,2,1],["Producer","C",9,3,1],["Sell","A",10,3,3] ], + +[[2,1],[3,2],[4,2],[6,5],[8,7],[9,7],[10,9]], +[[4,3],[4,10],[6,3],[10,6]], +["Is_supplier_for", [9,2]], +["related_to", [3,6],[6,10],[10,4]] +,{"VIEWS":[ ]} +], + +["U", 0.053872, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Supply_Office","R",5,1,0],["Receive_order_and_buy","A",6,1,2],["Producers","R",7,2,0],["Producer","C",8,2,1],["Sell","A",9,2,2],["Producer","C",10,3,1] ], + +[[2,1],[3,2],[4,2],[6,5],[8,7],[9,8],[10,7]], +[[4,3],[4,9],[6,3],[9,6]], +["Is_supplier_for", [8,2]], +["related_to", [3,6],[6,9],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.161616, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,3],["Supply_Office","R",5,1,0],["Receive_order_and_buy","A",6,1,2],["Producers","R",7,2,0],["Producer","C",8,2,1] ], + +[[2,1],[3,2],[4,2],[4,8],[6,5],[8,7]], +[[4,3],[4,6],[6,3]], +["related_to", [3,6],[6,4]] +,{"VIEWS":[ ]} +], + +["U", 0.053872, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,3],["Supply_Office","R",5,1,0],["Receive_order_and_buy","A",6,1,2],["Producers","R",7,2,0],["Producer","C",8,2,1],["Producer","C",9,3,1] ], + +[[2,1],[3,2],[4,2],[4,9],[6,5],[8,7],[9,7]], +[[4,3],[4,6],[6,3]], +["related_to", [3,6],[6,4]] +,{"VIEWS":[ ]} +], + +["U", 0.053872, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,3],["Supply_Office","R",5,1,0],["Receive_order_and_buy","A",6,1,2],["Producers","R",7,2,0],["Producer","C",8,2,1],["Producer","C",10,3,1] ], + +[[2,1],[3,2],[4,2],[4,8],[6,5],[8,7],[10,7]], +[[4,3],[4,6],[6,3]], +["related_to", [3,6],[6,4]] +,{"VIEWS":[ ]} +], + +["U", 0.053872, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Consumer","C",3,1,1],["Request_delivery","A",4,1,2],["Receive_supply","A",5,1,3],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,2],["Producers","R",8,3,0],["Producer","C",9,3,1],["Sell","A",10,3,2] ], + +[[2,1],[3,1],[4,3],[5,3],[7,6],[9,8],[10,9]], +[[5,4],[5,10],[7,4],[10,7]], +["Is_supplier_for", [9,3]], +["related_to", [4,7],[7,10],[10,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0179573, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Consumer","C",3,1,1],["Request_delivery","A",4,1,2],["Receive_supply","A",5,1,4],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,2],["Producers","R",8,3,0],["Producer","C",9,3,1],["Producer","C",10,4,1],["Sell","A",11,4,3] ], + +[[2,1],[3,1],[4,3],[5,3],[7,6],[9,8],[10,8],[11,10]], +[[5,4],[5,11],[7,4],[11,7]], +["Is_supplier_for", [10,3]], +["related_to", [4,7],[7,11],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0179573, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Consumer","C",3,1,1],["Request_delivery","A",4,1,2],["Receive_supply","A",5,1,3],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,2],["Producers","R",8,3,0],["Producer","C",9,3,1],["Sell","A",10,3,2],["Producer","C",11,4,1] ], + +[[2,1],[3,1],[4,3],[5,3],[7,6],[9,8],[10,9],[11,8]], +[[5,4],[5,10],[7,4],[10,7]], +["Is_supplier_for", [9,3]], +["related_to", [4,7],[7,10],[10,5]] +,{"VIEWS":[ ]} +], + +["U", 0.053872, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Consumer","C",3,1,1],["Request_delivery","A",4,1,2],["Not_available","A",5,1,3],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,2],["Producers","R",8,3,0],["Producer","C",9,3,1] ], + +[[2,1],[3,1],[4,3],[5,3],[5,9],[7,6],[9,8]], +[[5,4],[5,7],[7,4]], +["related_to", [4,7],[7,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0179573, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Consumer","C",3,1,1],["Request_delivery","A",4,1,2],["Not_available","A",5,1,3],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,2],["Producers","R",8,3,0],["Producer","C",9,3,1],["Producer","C",10,4,1] ], + +[[2,1],[3,1],[4,3],[5,3],[5,10],[7,6],[9,8],[10,8]], +[[5,4],[5,7],[7,4]], +["related_to", [4,7],[7,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0179573, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Consumer","C",3,1,1],["Request_delivery","A",4,1,2],["Not_available","A",5,1,3],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,2],["Producers","R",8,3,0],["Producer","C",9,3,1],["Producer","C",11,4,1] ], + +[[2,1],[3,1],[4,3],[5,3],[5,9],[7,6],[9,8],[11,8]], +[[5,4],[5,7],[7,4]], +["related_to", [4,7],[7,5]] +,{"VIEWS":[ ]} +], + +["U", 0.053872, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Consumer","C",5,1,1],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,3],["Producers","R",8,3,0],["Producer","C",9,3,1],["Sell","A",10,3,3] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[9,8],[10,9]], +[[4,3],[4,10],[7,3],[10,7]], +["Is_supplier_for", [9,2]], +["related_to", [3,7],[7,10],[10,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0179573, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Consumer","C",5,1,1],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,3],["Producers","R",8,3,0],["Producer","C",9,3,1],["Producer","C",10,4,1],["Sell","A",11,4,4] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[9,8],[10,8],[11,10]], +[[4,3],[4,11],[7,3],[11,7]], +["Is_supplier_for", [10,2]], +["related_to", [3,7],[7,11],[11,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0179573, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Consumer","C",5,1,1],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,3],["Producers","R",8,3,0],["Producer","C",9,3,1],["Sell","A",10,3,3],["Producer","C",11,4,1] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[9,8],[10,9],[11,8]], +[[4,3],[4,10],[7,3],[10,7]], +["Is_supplier_for", [9,2]], +["related_to", [3,7],[7,10],[10,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,4],["Request_delivery","A",8,1,5],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,5],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,5],["Producer","C",17,4,1],["Sell","A",18,4,3],["Sell","A",19,4,4] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17],[19,17]], +[[4,3],[4,19],[7,6],[7,18],[8,7],[9,8],[9,16],[11,6],[12,11],[12,3],[13,12],[13,8],[16,13],[18,11],[19,18],[19,12]], +["Is_supplier_for", [15,5],[17,2],[17,5]], +["related_to", [3,12],[6,11],[8,13],[11,18],[12,19],[13,16],[16,9],[18,7],[19,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,3],["Request_delivery","A",8,1,4],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,4],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,2],["Not_available","A",17,3,4],["Producer","C",18,4,1],["Not_available","A",19,4,4] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[7,6],[8,7],[9,8],[11,6],[12,11],[12,3],[13,12],[13,8],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,12],[6,11],[8,13],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,3],["Request_delivery","A",8,1,4],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,5],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,2],["Not_available","A",17,3,5],["Producer","C",18,4,1],["Not_available","A",19,4,5] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[7,6],[8,7],[9,8],[11,6],[12,11],[12,8],[13,12],[13,3],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,13],[6,11],[8,12],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,3],["Request_delivery","A",8,1,4],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,4],["Receive_order_and_buy","A",12,2,5],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,4],["Not_available","A",17,3,6],["Producer","C",18,4,1],["Not_available","A",19,4,6] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[7,6],[8,7],[9,8],[11,8],[12,11],[12,3],[13,12],[13,6],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,12],[6,13],[8,11],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,3],["Request_delivery","A",8,1,4],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,4],["Receive_order_and_buy","A",12,2,5],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,4],["Not_available","A",17,3,6],["Producer","C",18,4,1],["Not_available","A",19,4,6] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[7,6],[8,7],[9,8],[11,8],[12,11],[12,6],[13,12],[13,3],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,13],[6,12],[8,11],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,9],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,5],["Request_delivery","A",8,1,6],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,4],["Producer","C",17,4,1],["Sell","A",18,4,7],["Sell","A",19,4,8] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17],[19,17]], +[[4,3],[4,19],[7,6],[7,16],[8,7],[9,8],[9,18],[11,3],[12,11],[12,6],[13,12],[13,8],[16,12],[18,13],[19,18],[19,11]], +["Is_supplier_for", [15,5],[17,2],[17,5]], +["related_to", [3,11],[6,12],[8,13],[11,19],[12,16],[13,18],[16,7],[18,9],[19,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,7],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,6],["Request_delivery","A",8,1,7],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,7],["Producer","C",17,4,1],["Sell","A",18,4,5],["Sell","A",19,4,6] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17],[19,17]], +[[4,3],[4,19],[7,6],[7,18],[8,7],[9,8],[9,16],[11,3],[12,11],[12,6],[13,12],[13,8],[16,13],[18,12],[19,18],[19,11]], +["Is_supplier_for", [15,5],[17,2],[17,5]], +["related_to", [3,11],[6,12],[8,13],[11,19],[12,18],[13,16],[16,9],[18,7],[19,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,3],["Request_delivery","A",8,1,4],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,5],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,3],["Not_available","A",17,3,5],["Producer","C",18,4,1],["Not_available","A",19,4,5] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[7,6],[8,7],[9,8],[11,3],[12,11],[12,6],[13,12],[13,8],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,11],[6,12],[8,13],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.053872, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Consumer","C",5,1,1],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,3],["Producers","R",8,3,0],["Producer","C",9,3,1] ], + +[[2,1],[3,2],[4,2],[4,9],[5,1],[7,6],[9,8]], +[[4,3],[4,7],[7,3]], +["related_to", [3,7],[7,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0179573, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Consumer","C",5,1,1],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,3],["Producers","R",8,3,0],["Producer","C",9,3,1],["Producer","C",10,4,1] ], + +[[2,1],[3,2],[4,2],[4,10],[5,1],[7,6],[9,8],[10,8]], +[[4,3],[4,7],[7,3]], +["related_to", [3,7],[7,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0179573, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Consumer","C",5,1,1],["Supply_Office","R",6,2,0],["Receive_order_and_buy","A",7,2,3],["Producers","R",8,3,0],["Producer","C",9,3,1],["Producer","C",11,4,1] ], + +[[2,1],[3,2],[4,2],[4,9],[5,1],[7,6],[9,8],[11,8]], +[[4,3],[4,7],[7,3]], +["related_to", [3,7],[7,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,4],["Request_delivery","A",8,1,5],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,5],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,5],["Producer","C",17,4,1],["Sell","A",18,4,3] ], + +[[2,1],[3,2],[4,2],[4,17],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17]], +[[4,3],[4,18],[4,12],[7,6],[7,18],[8,7],[9,8],[9,16],[11,6],[12,11],[12,3],[13,12],[13,8],[16,13],[18,11]], +["Is_supplier_for", [15,5],[17,5]], +["related_to", [3,12],[6,11],[8,13],[11,18],[12,4],[13,16],[16,9],[18,7]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,7],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,4],["Request_delivery","A",8,1,5],["Receive_supply","A",9,1,7],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,5],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,3],["Sell","A",19,4,6] ], + +[[2,1],[3,2],[4,2],[4,15],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17],[19,17]], +[[4,3],[4,13],[7,6],[7,18],[8,7],[9,8],[9,19],[11,6],[12,11],[12,8],[13,12],[13,3],[18,11],[19,18],[19,12]], +["Is_supplier_for", [17,5]], +["related_to", [3,13],[6,11],[8,12],[11,18],[12,19],[13,4],[18,7],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,5],["Request_delivery","A",8,1,6],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,4],["Producer","C",17,4,1],["Sell","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[4,17],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[19,17]], +[[4,3],[4,11],[7,6],[7,16],[8,7],[9,8],[9,19],[11,3],[12,11],[12,6],[13,12],[13,8],[16,12],[19,13],[19,4]], +["Is_supplier_for", [15,5],[17,5]], +["related_to", [3,11],[6,12],[8,13],[11,4],[12,16],[13,19],[16,7],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,6],["Request_delivery","A",8,1,7],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,7],["Producer","C",17,4,1],["Sell","A",19,4,5] ], + +[[2,1],[3,2],[4,2],[4,17],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[19,17]], +[[4,3],[4,11],[7,6],[7,19],[8,7],[9,8],[9,16],[11,3],[12,11],[12,6],[13,12],[13,8],[16,13],[19,12],[19,4]], +["Is_supplier_for", [15,5],[17,5]], +["related_to", [3,11],[6,12],[8,13],[11,4],[12,19],[13,16],[16,9],[19,7]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Consumer","C",5,1,1],["Request_delivery","A",6,1,2],["Receive_supply","A",7,1,5],["Request_delivery","A",8,1,6],["Receive_supply","A",9,1,7],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,4],["Sell","A",17,3,6],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,11],[7,6],[7,16],[8,7],[9,8],[9,17],[11,3],[12,11],[12,6],[13,12],[13,8],[16,12],[17,16],[17,13]], +["Is_supplier_for", [15,5]], +["related_to", [3,11],[6,12],[8,13],[11,4],[12,16],[13,17],[16,7],[17,9]] +,{"VIEWS":[ ]} +], + +["U", 0.013468, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Supply_Office","R",8,2,0],["Receive_order_and_buy","A",9,2,3],["Receive_order_and_buy","A",10,2,6],["Producers","R",11,3,0],["Producer","C",12,3,1],["Sell","A",13,3,3],["Sell","A",14,3,6] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[9,8],[10,8],[12,11],[13,12],[14,12]], +[[4,3],[4,13],[5,4],[6,5],[6,14],[9,3],[10,9],[10,5],[13,9],[14,13],[14,10]], +["Is_supplier_for", [12,2]], +["related_to", [3,9],[5,10],[9,13],[10,14],[13,4],[14,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00448934, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Receive_supply","A",6,0,9],["Consumer","C",7,1,1],["Supply_Office","R",8,2,0],["Receive_order_and_buy","A",9,2,3],["Receive_order_and_buy","A",10,2,7],["Producers","R",11,3,0],["Producer","C",12,3,1],["Producer","C",13,4,1],["Sell","A",14,4,4],["Sell","A",15,4,8] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[9,8],[10,8],[12,11],[13,11],[14,13],[15,13]], +[[4,3],[4,14],[5,4],[6,5],[6,15],[9,3],[10,9],[10,5],[14,9],[15,14],[15,10]], +["Is_supplier_for", [13,2]], +["related_to", [3,9],[5,10],[9,14],[10,15],[14,4],[15,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00448934, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Supply_Office","R",8,2,0],["Receive_order_and_buy","A",9,2,3],["Receive_order_and_buy","A",10,2,7],["Producers","R",11,3,0],["Producer","C",12,3,1],["Sell","A",13,3,7],["Producer","C",14,4,1],["Sell","A",15,4,4] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[9,8],[10,8],[12,11],[13,12],[14,11],[15,14]], +[[4,3],[4,15],[5,4],[6,5],[6,13],[9,3],[10,9],[10,5],[13,10],[15,9]], +["Is_supplier_for", [12,2],[14,2]], +["related_to", [3,9],[5,10],[9,15],[10,13],[13,6],[15,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00448934, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Request_delivery","A",5,0,4],["Receive_supply","A",6,0,5],["Consumer","C",7,1,1],["Supply_Office","R",8,2,0],["Receive_order_and_buy","A",9,2,3],["Receive_order_and_buy","A",10,2,5],["Producers","R",11,3,0],["Producer","C",12,3,1],["Not_available","A",13,3,5],["Not_available","A",14,3,6],["Producer","C",15,4,1] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[9,8],[10,8],[12,11],[13,12],[14,12],[15,11]], +[[4,3],[5,4],[6,5],[9,3],[10,9],[10,5],[13,10],[14,13],[14,9]], +["related_to", [3,9],[5,10],[9,14],[10,13]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,7],["Request_delivery","A",5,0,8],["Receive_supply","A",6,0,10],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,9],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,9],["Producer","C",17,4,1],["Sell","A",18,4,5],["Sell","A",19,4,6] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17],[19,17]], +[[4,3],[4,19],[5,4],[6,5],[6,16],[9,8],[9,18],[11,3],[12,11],[12,8],[13,12],[13,5],[16,13],[18,12],[19,18],[19,11]], +["Is_supplier_for", [15,2],[17,2],[17,7]], +["related_to", [3,11],[5,13],[8,12],[11,19],[12,18],[13,16],[16,6],[18,9],[19,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,3],["Producer","C",17,4,1],["Sell","A",18,4,5],["Sell","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17],[19,17]], +[[4,3],[4,16],[5,4],[6,5],[6,19],[9,8],[9,18],[11,3],[12,11],[12,8],[13,12],[13,5],[16,11],[18,12],[19,18],[19,13]], +["Is_supplier_for", [15,2],[17,2],[17,7]], +["related_to", [3,11],[5,13],[8,12],[11,16],[12,18],[13,19],[16,4],[18,9],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Request_delivery","A",5,0,4],["Receive_supply","A",6,0,5],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,5],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,3],["Not_available","A",17,3,5],["Producer","C",18,4,1],["Not_available","A",19,4,5] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[5,4],[6,5],[9,8],[11,3],[12,11],[12,8],[13,12],[13,5],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,11],[5,13],[8,12],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Request_delivery","A",5,0,4],["Receive_supply","A",6,0,5],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,5],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,5],["Not_available","A",17,3,7],["Producer","C",18,4,1],["Not_available","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[5,4],[6,5],[9,8],[11,5],[12,11],[12,3],[13,12],[13,8],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,12],[5,11],[8,13],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Request_delivery","A",5,0,4],["Receive_supply","A",6,0,5],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,5],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,5],["Not_available","A",17,3,7],["Producer","C",18,4,1],["Not_available","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[5,4],[6,5],[9,8],[11,5],[12,11],[12,8],[13,12],[13,3],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,13],[5,11],[8,12],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,4],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,3],["Producer","C",17,4,1],["Sell","A",18,4,3],["Sell","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17],[19,17]], +[[4,3],[4,16],[5,4],[6,5],[6,19],[9,8],[9,18],[11,8],[12,11],[12,3],[13,12],[13,5],[16,12],[18,11],[19,18],[19,13]], +["Is_supplier_for", [15,2],[17,2],[17,7]], +["related_to", [3,12],[5,13],[8,11],[11,18],[12,16],[13,19],[16,4],[18,9],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Request_delivery","A",5,0,4],["Receive_supply","A",6,0,5],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,5],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,2],["Not_available","A",17,3,5],["Producer","C",18,4,1],["Not_available","A",19,4,4] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[5,4],[6,5],[9,8],[11,8],[12,11],[12,3],[13,12],[13,5],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,12],[5,13],[8,11],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,10],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,3],["Producer","C",17,4,1],["Sell","A",18,4,8],["Sell","A",19,4,9] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17],[19,17]], +[[4,3],[4,16],[5,4],[6,5],[6,19],[9,8],[9,18],[11,3],[12,11],[12,5],[13,12],[13,8],[16,11],[18,13],[19,18],[19,12]], +["Is_supplier_for", [15,2],[17,2],[17,7]], +["related_to", [3,11],[5,12],[8,13],[11,16],[12,19],[13,18],[16,4],[18,9],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Receive_supply","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,7],["Receive_order_and_buy","A",13,2,8],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,8],["Producer","C",17,4,1],["Sell","A",18,4,4],["Sell","A",19,4,8] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17],[19,17]], +[[4,3],[4,18],[5,4],[6,5],[6,19],[9,8],[9,16],[11,3],[12,11],[12,5],[13,12],[13,8],[16,13],[18,11],[19,18],[19,12]], +["Is_supplier_for", [15,7],[17,2]], +["related_to", [3,11],[5,12],[8,13],[11,18],[12,19],[13,16],[16,9],[18,4],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,3],["Request_delivery","A",5,0,4],["Receive_supply","A",6,0,5],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,5],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Not_available","A",16,3,3],["Not_available","A",17,3,6],["Producer","C",18,4,1],["Not_available","A",19,4,6] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14],[19,18]], +[[4,3],[5,4],[6,5],[9,8],[11,3],[12,11],[12,5],[13,12],[13,8],[16,11],[17,16],[17,13],[19,12]], +["related_to", [3,11],[5,12],[8,13],[11,16],[12,19],[13,17]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,4],["Producer","C",17,4,1],["Sell","A",18,4,4] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,17],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17]], +[[4,3],[4,18],[5,4],[6,5],[6,18],[6,13],[9,8],[9,16],[11,3],[12,11],[12,8],[13,12],[13,5],[16,12],[18,11]], +["Is_supplier_for", [15,7],[17,2]], +["related_to", [3,11],[5,13],[8,12],[11,18],[12,16],[13,6],[16,9],[18,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,3],["Producer","C",17,4,1],["Sell","A",18,4,5] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,17],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17]], +[[4,3],[4,16],[5,4],[6,5],[6,18],[6,13],[9,8],[9,18],[11,3],[12,11],[12,8],[13,12],[13,5],[16,11],[18,12]], +["Is_supplier_for", [15,2],[17,7]], +["related_to", [3,11],[5,13],[8,12],[11,16],[12,18],[13,6],[16,4],[18,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,4],["Sell","A",19,4,5] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,15],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17],[19,17]], +[[4,3],[4,18],[5,4],[6,5],[6,13],[9,8],[9,19],[11,3],[12,11],[12,8],[13,12],[13,5],[18,11],[19,18],[19,12]], +["Is_supplier_for", [17,2],[17,7]], +["related_to", [3,11],[5,13],[8,12],[11,18],[12,19],[13,6],[18,4],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,6],["Request_delivery","A",5,0,7],["Not_available","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,8],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,4],["Sell","A",17,3,5],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,17],[5,4],[6,5],[6,13],[9,8],[9,16],[11,3],[12,11],[12,8],[13,12],[13,5],[16,12],[17,16],[17,11]], +["Is_supplier_for", [15,2],[15,7]], +["related_to", [3,11],[5,13],[8,12],[11,17],[12,16],[13,6],[16,9],[17,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,3],["Sell","A",17,3,4],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,16],[5,4],[6,5],[6,13],[9,8],[9,17],[11,3],[12,11],[12,8],[13,12],[13,5],[16,11],[17,16],[17,12]], +["Is_supplier_for", [15,2],[15,7]], +["related_to", [3,11],[5,13],[8,12],[11,16],[12,17],[13,6],[16,4],[17,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,4],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,3],["Producer","C",17,4,1],["Sell","A",18,4,3] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,17],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17]], +[[4,3],[4,16],[5,4],[6,5],[6,18],[6,13],[9,8],[9,18],[11,8],[12,11],[12,3],[13,12],[13,5],[16,12],[18,11]], +["Is_supplier_for", [15,2],[17,7]], +["related_to", [3,12],[5,13],[8,11],[11,18],[12,16],[13,6],[16,4],[18,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,2],["Producer","C",17,4,1],["Sell","A",18,4,4] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,17],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17]], +[[4,3],[4,18],[5,4],[6,5],[6,18],[6,13],[9,8],[9,16],[11,8],[12,11],[12,3],[13,12],[13,5],[16,11],[18,12]], +["Is_supplier_for", [15,7],[17,2]], +["related_to", [3,12],[5,13],[8,11],[11,16],[12,18],[13,6],[16,9],[18,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,4],["Sell","A",19,4,5] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,15],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17],[19,17]], +[[4,3],[4,18],[5,4],[6,5],[6,13],[9,8],[9,19],[11,8],[12,11],[12,3],[13,12],[13,5],[18,12],[19,18],[19,11]], +["Is_supplier_for", [17,2],[17,7]], +["related_to", [3,12],[5,13],[8,11],[11,19],[12,18],[13,6],[18,4],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,3],["Sell","A",17,3,4],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,16],[5,4],[6,5],[6,13],[9,8],[9,17],[11,8],[12,11],[12,3],[13,12],[13,5],[16,12],[17,16],[17,11]], +["Is_supplier_for", [15,2],[15,7]], +["related_to", [3,12],[5,13],[8,11],[11,17],[12,16],[13,6],[16,4],[17,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,7],["Receive_order_and_buy","A",13,2,8],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,8],["Producer","C",17,4,1],["Sell","A",18,4,4] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,17],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17]], +[[4,3],[4,18],[5,4],[6,5],[6,18],[6,12],[9,8],[9,16],[11,3],[12,11],[12,5],[13,12],[13,8],[16,13],[18,11]], +["Is_supplier_for", [15,7],[17,2]], +["related_to", [3,11],[5,12],[8,13],[11,18],[12,6],[13,16],[16,9],[18,4]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,7],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,3],["Sell","A",20,3,7],["Producer","C",21,4,1],["Sell","A",22,4,5] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,21],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[22,21]], +[[4,3],[4,19],[5,4],[6,5],[6,22],[6,16],[9,8],[9,22],[10,9],[11,10],[11,20],[13,3],[14,13],[14,8],[15,14],[15,10],[16,15],[16,5],[19,13],[20,19],[20,15],[22,14]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,13],[5,16],[8,14],[10,15],[13,19],[14,22],[15,20],[16,6],[19,4],[20,11],[22,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Request_delivery","A",10,1,6],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,7],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,3],["Sell","A",20,3,4],["Producer","C",21,4,1],["Sell","A",22,4,7] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,21],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[22,21]], +[[4,3],[4,19],[5,4],[6,5],[6,22],[6,16],[9,8],[9,20],[10,9],[11,10],[11,22],[13,3],[14,13],[14,8],[15,14],[15,10],[16,15],[16,5],[19,13],[20,19],[20,14],[22,15]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,13],[5,16],[8,14],[10,15],[13,19],[14,20],[15,22],[16,6],[19,4],[20,9],[22,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,6],["Request_delivery","A",5,0,7],["Not_available","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Request_delivery","A",10,1,6],["Receive_supply","A",11,1,11],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,4],["Sell","A",20,3,5],["Producer","C",21,4,1],["Sell","A",23,4,10] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,21],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[23,21]], +[[4,3],[4,20],[5,4],[6,5],[6,16],[9,8],[9,19],[10,9],[11,10],[11,23],[13,3],[14,13],[14,8],[15,14],[15,10],[16,15],[16,5],[19,14],[20,19],[20,13],[23,15],[23,6]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,13],[5,16],[8,14],[10,15],[13,20],[14,19],[15,23],[16,6],[19,9],[20,4],[23,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,9],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,7],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Sell","A",20,3,8],["Producer","C",21,4,1],["Sell","A",22,4,4] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,21],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[22,21]], +[[4,3],[4,22],[5,4],[6,5],[6,22],[6,15],[9,8],[9,19],[10,9],[11,10],[11,20],[13,8],[14,13],[14,3],[15,14],[15,5],[16,15],[16,10],[19,13],[20,19],[20,16],[22,14]], +["Is_supplier_for", [18,7],[21,2]], +["related_to", [3,14],[5,15],[8,13],[10,16],[13,19],[14,22],[15,6],[16,20],[19,9],[20,11],[22,4]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Request_delivery","A",10,1,10],["Receive_supply","A",11,1,11],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,10],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,3],["Sell","A",20,3,10],["Producer","C",21,4,1],["Sell","A",23,4,8] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,21],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[23,21]], +[[4,3],[4,19],[5,4],[6,5],[6,15],[9,8],[9,23],[10,9],[11,10],[11,20],[13,8],[14,13],[14,3],[15,14],[15,5],[16,15],[16,10],[19,14],[20,19],[20,16],[23,13],[23,6]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,14],[5,15],[8,13],[10,16],[13,23],[14,19],[15,6],[16,20],[19,4],[20,11],[23,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,5],["Request_delivery","A",5,0,6],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,5],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,4],["Receive_order_and_buy","A",16,2,7],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Sell","A",20,3,4],["Producer","C",21,4,1],["Sell","A",22,4,4] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,21],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[22,21]], +[[4,3],[4,22],[5,4],[6,5],[6,22],[6,16],[9,8],[9,19],[10,9],[11,10],[11,20],[13,8],[14,13],[14,3],[15,14],[15,10],[16,15],[16,5],[19,13],[20,19],[20,15],[22,14]], +["Is_supplier_for", [18,7],[21,2]], +["related_to", [3,14],[5,16],[8,13],[10,15],[13,19],[14,22],[15,20],[16,6],[19,9],[20,11],[22,4]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Receive_supply","A",4,0,6],["Request_delivery","A",5,0,7],["Not_available","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,6],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,5],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Sell","A",20,3,5],["Producer","C",21,4,1],["Sell","A",22,4,5] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,21],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[22,21]], +[[4,3],[4,20],[5,4],[6,5],[6,22],[6,16],[9,8],[9,19],[10,9],[11,10],[11,22],[13,8],[14,13],[14,10],[15,14],[15,3],[16,15],[16,5],[19,13],[20,19],[20,15],[22,14]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,15],[5,16],[8,13],[10,14],[13,19],[14,22],[15,20],[16,6],[19,9],[20,4],[22,11]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,6],["Request_delivery","A",5,0,7],["Receive_supply","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,8],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,8],["Producer","C",17,4,1],["Sell","A",18,4,5] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17]], +[[4,3],[4,18],[4,11],[5,4],[6,5],[6,16],[9,8],[9,18],[11,3],[12,11],[12,8],[13,12],[13,5],[16,13],[18,12]], +["Is_supplier_for", [15,2],[17,7]], +["related_to", [3,11],[5,13],[8,12],[11,4],[12,18],[13,16],[16,6],[18,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,4],["Producer","C",17,4,1],["Sell","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,19],[9,8],[9,16],[11,3],[12,11],[12,8],[13,12],[13,5],[16,12],[19,13],[19,4]], +["Is_supplier_for", [15,7],[17,2]], +["related_to", [3,11],[5,13],[8,12],[11,4],[12,16],[13,19],[16,9],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,6],["Producer","C",17,4,1],["Sell","A",19,4,5] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,16],[9,8],[9,19],[11,3],[12,11],[12,8],[13,12],[13,5],[16,13],[19,12],[19,4]], +["Is_supplier_for", [15,2],[17,7]], +["related_to", [3,11],[5,13],[8,12],[11,4],[12,19],[13,16],[16,6],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,7],["Sell","A",19,4,8] ], + +[[2,1],[3,2],[4,2],[4,15],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,18],[9,8],[9,19],[11,3],[12,11],[12,8],[13,12],[13,5],[18,13],[19,18],[19,12]], +["Is_supplier_for", [17,2],[17,7]], +["related_to", [3,11],[5,13],[8,12],[11,4],[12,19],[13,18],[18,6],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,5],["Sell","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[4,15],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,19],[9,8],[9,18],[11,3],[12,11],[12,8],[13,12],[13,5],[18,12],[19,18],[19,13]], +["Is_supplier_for", [17,2],[17,7]], +["related_to", [3,11],[5,13],[8,12],[11,4],[12,18],[13,19],[18,9],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,4],["Sell","A",17,3,6],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,11],[5,4],[6,5],[6,17],[9,8],[9,16],[11,3],[12,11],[12,8],[13,12],[13,5],[16,12],[17,16],[17,13]], +["Is_supplier_for", [15,2],[15,7]], +["related_to", [3,11],[5,13],[8,12],[11,4],[12,16],[13,17],[16,9],[17,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,6],["Sell","A",17,3,7],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,11],[5,4],[6,5],[6,16],[9,8],[9,17],[11,3],[12,11],[12,8],[13,12],[13,5],[16,13],[17,16],[17,12]], +["Is_supplier_for", [15,2],[15,7]], +["related_to", [3,11],[5,13],[8,12],[11,4],[12,17],[13,16],[16,6],[17,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,4],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,6],["Producer","C",17,4,1],["Sell","A",18,4,3] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[18,17]], +[[4,3],[4,18],[4,12],[5,4],[6,5],[6,16],[9,8],[9,18],[11,8],[12,11],[12,3],[13,12],[13,5],[16,13],[18,11]], +["Is_supplier_for", [15,2],[17,7]], +["related_to", [3,12],[5,13],[8,11],[11,18],[12,4],[13,16],[16,6],[18,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,6],["Producer","C",17,4,1],["Sell","A",19,4,5] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[19,17]], +[[4,3],[4,12],[5,4],[6,5],[6,16],[9,8],[9,19],[11,8],[12,11],[12,3],[13,12],[13,5],[16,13],[19,11],[19,4]], +["Is_supplier_for", [15,2],[17,7]], +["related_to", [3,12],[5,13],[8,11],[11,19],[12,4],[13,16],[16,6],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,2],["Producer","C",17,4,1],["Sell","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[19,17]], +[[4,3],[4,12],[5,4],[6,5],[6,19],[9,8],[9,16],[11,8],[12,11],[12,3],[13,12],[13,5],[16,11],[19,13],[19,4]], +["Is_supplier_for", [15,7],[17,2]], +["related_to", [3,12],[5,13],[8,11],[11,16],[12,4],[13,19],[16,9],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,4],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,3],["Sell","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[4,15],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17],[19,17]], +[[4,3],[4,12],[5,4],[6,5],[6,19],[9,8],[9,18],[11,8],[12,11],[12,3],[13,12],[13,5],[18,11],[19,18],[19,13]], +["Is_supplier_for", [17,2],[17,7]], +["related_to", [3,12],[5,13],[8,11],[11,18],[12,4],[13,19],[18,9],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,7],["Sell","A",19,4,8] ], + +[[2,1],[3,2],[4,2],[4,15],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17],[19,17]], +[[4,3],[4,12],[5,4],[6,5],[6,18],[9,8],[9,19],[11,8],[12,11],[12,3],[13,12],[13,5],[18,13],[19,18],[19,11]], +["Is_supplier_for", [17,2],[17,7]], +["related_to", [3,12],[5,13],[8,11],[11,19],[12,4],[13,18],[18,6],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,2],["Sell","A",17,3,6],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,12],[5,4],[6,5],[6,17],[9,8],[9,16],[11,8],[12,11],[12,3],[13,12],[13,5],[16,11],[17,16],[17,13]], +["Is_supplier_for", [15,2],[15,7]], +["related_to", [3,12],[5,13],[8,11],[11,16],[12,4],[13,17],[16,9],[17,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,6],["Sell","A",17,3,7],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,12],[5,4],[6,5],[6,16],[9,8],[9,17],[11,8],[12,11],[12,3],[13,12],[13,5],[16,13],[17,16],[17,11]], +["Is_supplier_for", [15,2],[15,7]], +["related_to", [3,12],[5,13],[8,11],[11,17],[12,4],[13,16],[16,6],[17,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,6],["Producer","C",17,4,1],["Sell","A",19,4,8] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,16],[9,8],[9,19],[11,3],[12,11],[12,5],[13,12],[13,8],[16,12],[19,13],[19,4]], +["Is_supplier_for", [15,2],[17,7]], +["related_to", [3,11],[5,12],[8,13],[11,4],[12,16],[13,19],[16,6],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,7],["Producer","C",17,4,1],["Sell","A",19,4,7] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,14],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,19],[9,8],[9,16],[11,3],[12,11],[12,5],[13,12],[13,8],[16,13],[19,12],[19,4]], +["Is_supplier_for", [15,7],[17,2]], +["related_to", [3,11],[5,12],[8,13],[11,4],[12,19],[13,16],[16,9],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,10],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,8],["Sell","A",19,4,9] ], + +[[2,1],[3,2],[4,2],[4,15],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,19],[9,8],[9,18],[11,3],[12,11],[12,5],[13,12],[13,8],[18,13],[19,18],[19,12]], +["Is_supplier_for", [17,2],[17,7]], +["related_to", [3,11],[5,12],[8,13],[11,4],[12,19],[13,18],[18,9],[19,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,7],["Sell","A",19,4,8] ], + +[[2,1],[3,2],[4,2],[4,15],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,18],[9,8],[9,19],[11,3],[12,11],[12,5],[13,12],[13,8],[18,12],[19,18],[19,13]], +["Is_supplier_for", [17,2],[17,7]], +["related_to", [3,11],[5,12],[8,13],[11,4],[12,18],[13,19],[18,6],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,6],["Sell","A",17,3,7],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,11],[5,4],[6,5],[6,16],[9,8],[9,17],[11,3],[12,11],[12,5],[13,12],[13,8],[16,12],[17,16],[17,13]], +["Is_supplier_for", [15,2],[15,7]], +["related_to", [3,11],[5,12],[8,13],[11,4],[12,16],[13,17],[16,6],[17,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,7],["Sell","A",17,3,8],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[17,15],[18,14]], +[[4,3],[4,11],[5,4],[6,5],[6,17],[9,8],[9,16],[11,3],[12,11],[12,5],[13,12],[13,8],[16,13],[17,16],[17,12]], +["Is_supplier_for", [15,2],[15,7]], +["related_to", [3,11],[5,12],[8,13],[11,4],[12,17],[13,16],[16,9],[17,6]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,8],["Request_delivery","A",10,1,9],["Receive_supply","A",11,1,11],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,9],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,6],["Sell","A",20,3,7],["Producer","C",21,4,1],["Sell","A",23,4,10] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[23,21]], +[[4,3],[4,13],[5,4],[6,5],[6,19],[9,8],[9,20],[10,9],[11,10],[11,23],[13,3],[14,13],[14,8],[15,14],[15,5],[16,15],[16,10],[19,15],[20,19],[20,14],[23,16],[23,4]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,13],[5,15],[8,14],[10,16],[13,4],[14,20],[15,19],[16,23],[19,6],[20,9],[23,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,6],["Request_delivery","A",5,0,7],["Receive_supply","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,7],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,7],["Sell","A",20,3,8],["Producer","C",21,4,1],["Sell","A",22,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[22,21]], +[[4,3],[4,22],[4,13],[5,4],[6,5],[6,20],[9,8],[9,22],[10,9],[11,10],[11,19],[13,3],[14,13],[14,8],[15,14],[15,10],[16,15],[16,5],[19,15],[20,19],[20,16],[22,14]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,13],[5,16],[8,14],[10,15],[13,4],[14,22],[15,19],[16,20],[19,11],[20,6],[22,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Request_delivery","A",10,1,6],["Receive_supply","A",11,1,7],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,7],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,4],["Sell","A",20,3,6],["Producer","C",21,4,1],["Sell","A",23,4,8] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[23,21]], +[[4,3],[4,13],[5,4],[6,5],[6,23],[9,8],[9,19],[10,9],[11,10],[11,20],[13,3],[14,13],[14,8],[15,14],[15,10],[16,15],[16,5],[19,14],[20,19],[20,15],[23,16],[23,4]], +["Is_supplier_for", [18,7],[21,2]], +["related_to", [3,13],[5,16],[8,14],[10,15],[13,4],[14,19],[15,20],[16,23],[19,9],[20,11],[23,6]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,9],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,7],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Sell","A",20,3,6],["Producer","C",21,4,1],["Sell","A",23,4,8] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[23,21]], +[[4,3],[4,14],[5,4],[6,5],[6,20],[9,8],[9,19],[10,9],[11,10],[11,23],[13,8],[14,13],[14,3],[15,14],[15,5],[16,15],[16,10],[19,13],[20,19],[20,15],[23,16],[23,4]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,14],[5,15],[8,13],[10,16],[13,19],[14,4],[15,20],[16,23],[19,9],[20,6],[23,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,6],["Request_delivery","A",5,0,7],["Receive_supply","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,6],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,4],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Sell","A",20,3,8],["Producer","C",21,4,1],["Sell","A",22,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[22,21]], +[[4,3],[4,22],[4,14],[5,4],[6,5],[6,20],[9,8],[9,19],[10,9],[11,10],[11,22],[13,8],[14,13],[14,3],[15,14],[15,10],[16,15],[16,5],[19,13],[20,19],[20,16],[22,15]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,14],[5,16],[8,13],[10,15],[13,19],[14,4],[15,22],[16,20],[19,9],[20,6],[22,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,6],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,4],["Receive_order_and_buy","A",16,2,6],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Sell","A",20,3,6],["Producer","C",21,4,1],["Sell","A",23,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[23,21]], +[[4,3],[4,14],[5,4],[6,5],[6,20],[9,8],[9,19],[10,9],[11,10],[11,23],[13,8],[14,13],[14,3],[15,14],[15,10],[16,15],[16,5],[19,13],[20,19],[20,16],[23,15],[23,4]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,14],[5,16],[8,13],[10,15],[13,19],[14,4],[15,23],[16,20],[19,9],[20,6],[23,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,6],["Request_delivery","A",5,0,7],["Receive_supply","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,6],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,5],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Sell","A",20,3,8],["Producer","C",21,4,1],["Sell","A",22,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[22,21]], +[[4,3],[4,22],[4,15],[5,4],[6,5],[6,20],[9,8],[9,19],[10,9],[11,10],[11,22],[13,8],[14,13],[14,10],[15,14],[15,3],[16,15],[16,5],[19,13],[20,19],[20,16],[22,14]], +["Is_supplier_for", [18,2],[18,7],[21,7]], +["related_to", [3,15],[5,16],[8,13],[10,14],[13,19],[14,22],[15,4],[16,20],[19,9],[20,6],[22,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Receive_supply","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,8],["Request_delivery","A",10,1,9],["Receive_supply","A",11,1,10],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,6],["Receive_order_and_buy","A",15,2,7],["Receive_order_and_buy","A",16,2,9],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,7],["Sell","A",20,3,9],["Producer","C",21,4,1],["Sell","A",23,4,7] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[20,18],[21,17],[23,21]], +[[4,3],[4,13],[5,4],[6,5],[6,23],[9,8],[9,19],[10,9],[11,10],[11,20],[13,3],[14,13],[14,5],[15,14],[15,8],[16,15],[16,10],[19,15],[20,19],[20,16],[23,14],[23,4]], +["Is_supplier_for", [18,7],[21,2]], +["related_to", [3,13],[5,14],[8,15],[10,16],[13,4],[14,23],[15,19],[16,20],[19,9],[20,11],[23,6]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",19,4,5] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[6,15],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,13],[9,8],[9,19],[11,3],[12,11],[12,8],[13,12],[13,5],[19,12],[19,4]], +["Is_supplier_for", [17,7]], +["related_to", [3,11],[5,13],[8,12],[11,4],[12,19],[13,6],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,4],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",17,3,8],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[6,15],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,15],[18,14]], +[[4,3],[4,11],[5,4],[6,5],[6,13],[9,8],[9,17],[11,3],[12,11],[12,8],[13,12],[13,5],[17,12],[17,6]], +["Is_supplier_for", [15,7]], +["related_to", [3,11],[5,13],[8,12],[11,4],[12,17],[13,6],[17,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,4],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",18,4,3] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[6,15],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[18,17]], +[[4,3],[4,18],[4,12],[5,4],[6,5],[6,13],[9,8],[9,18],[11,8],[12,11],[12,3],[13,12],[13,5],[18,11]], +["Is_supplier_for", [17,7]], +["related_to", [3,12],[5,13],[8,11],[11,18],[12,4],[13,6],[18,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,2],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[6,15],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[18,14]], +[[4,3],[4,12],[5,4],[6,5],[6,16],[6,13],[9,8],[9,16],[11,8],[12,11],[12,3],[13,12],[13,5],[16,11]], +["Is_supplier_for", [15,7]], +["related_to", [3,12],[5,13],[8,11],[11,16],[12,4],[13,6],[16,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,2],["Receive_order_and_buy","A",12,2,3],["Receive_order_and_buy","A",13,2,6],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",17,3,8],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[6,15],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,15],[18,14]], +[[4,3],[4,12],[5,4],[6,5],[6,13],[9,8],[9,17],[11,8],[12,11],[12,3],[13,12],[13,5],[17,11],[17,6]], +["Is_supplier_for", [15,7]], +["related_to", [3,12],[5,13],[8,11],[11,17],[12,4],[13,6],[17,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,9],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Producer","C",17,4,1],["Sell","A",19,4,8] ], + +[[2,1],[3,2],[4,2],[4,17],[5,2],[6,2],[6,15],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[17,14],[19,17]], +[[4,3],[4,11],[5,4],[6,5],[6,12],[9,8],[9,19],[11,3],[12,11],[12,5],[13,12],[13,8],[19,13],[19,4]], +["Is_supplier_for", [17,7]], +["related_to", [3,11],[5,12],[8,13],[11,4],[12,6],[13,19],[19,9]] +,{"VIEWS":[ ]} +], + +["U", 0.00112233, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,8],["Supply_Office","R",10,2,0],["Receive_order_and_buy","A",11,2,3],["Receive_order_and_buy","A",12,2,6],["Receive_order_and_buy","A",13,2,7],["Producers","R",14,3,0],["Producer","C",15,3,1],["Sell","A",16,3,7],["Producer","C",18,4,1] ], + +[[2,1],[3,2],[4,2],[4,18],[5,2],[6,2],[6,15],[7,1],[8,7],[9,7],[11,10],[12,10],[13,10],[15,14],[16,15],[18,14]], +[[4,3],[4,11],[5,4],[6,5],[6,16],[6,12],[9,8],[9,16],[11,3],[12,11],[12,5],[13,12],[13,8],[16,13]], +["Is_supplier_for", [15,7]], +["related_to", [3,11],[5,12],[8,13],[11,4],[12,6],[13,16],[16,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,6],["Request_delivery","A",5,0,7],["Not_available","A",6,0,10],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,10],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,8],["Receive_order_and_buy","A",16,2,9],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,9],["Producer","C",21,4,1],["Sell","A",22,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[22,21]], +[[4,3],[4,22],[4,13],[5,4],[6,5],[6,19],[6,15],[9,8],[9,22],[10,9],[11,10],[11,19],[13,3],[14,13],[14,8],[15,14],[15,5],[16,15],[16,10],[19,16],[22,14]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,13],[5,15],[8,14],[10,16],[13,4],[14,22],[15,6],[16,19],[19,11],[22,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,7],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,7],["Producer","C",21,4,1],["Sell","A",23,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[23,21]], +[[4,3],[4,13],[5,4],[6,5],[6,19],[6,15],[9,8],[9,23],[10,9],[11,10],[11,19],[13,3],[14,13],[14,8],[15,14],[15,5],[16,15],[16,10],[19,16],[23,14],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,13],[5,15],[8,14],[10,16],[13,4],[14,23],[15,6],[16,19],[19,11],[23,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,9],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,7],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",20,3,8],["Producer","C",21,4,1],["Sell","A",23,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[20,18],[21,17],[23,21]], +[[4,3],[4,13],[5,4],[6,5],[6,15],[9,8],[9,23],[10,9],[11,10],[11,20],[13,3],[14,13],[14,8],[15,14],[15,5],[16,15],[16,10],[20,16],[20,6],[23,14],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,13],[5,15],[8,14],[10,16],[13,4],[14,23],[15,6],[16,20],[20,11],[23,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,8],["Request_delivery","A",5,0,9],["Not_available","A",6,0,11],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,5],["Request_delivery","A",10,1,6],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,10],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,4],["Producer","C",21,4,1],["Sell","A",22,4,7] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[22,21]], +[[4,3],[4,22],[4,13],[5,4],[6,5],[6,19],[6,16],[9,8],[9,19],[10,9],[11,10],[11,22],[13,3],[14,13],[14,8],[15,14],[15,10],[16,15],[16,5],[19,14],[22,15]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,13],[5,16],[8,14],[10,15],[13,4],[14,19],[15,22],[16,6],[19,9],[22,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,6],["Request_delivery","A",5,0,7],["Not_available","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,7],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,7],["Producer","C",21,4,1],["Sell","A",22,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[22,21]], +[[4,3],[4,22],[4,13],[5,4],[6,5],[6,19],[6,16],[9,8],[9,22],[10,9],[11,10],[11,19],[13,3],[14,13],[14,8],[15,14],[15,10],[16,15],[16,5],[19,15],[22,14]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,13],[5,16],[8,14],[10,15],[13,4],[14,22],[15,19],[16,6],[19,11],[22,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,7],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,7],["Producer","C",21,4,1],["Sell","A",23,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[23,21]], +[[4,3],[4,13],[5,4],[6,5],[6,19],[6,16],[9,8],[9,23],[10,9],[11,10],[11,19],[13,3],[14,13],[14,8],[15,14],[15,10],[16,15],[16,5],[19,15],[23,14],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,13],[5,16],[8,14],[10,15],[13,4],[14,23],[15,19],[16,6],[19,11],[23,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,11],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,3],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,7],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",20,3,10],["Producer","C",21,4,1],["Sell","A",23,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[20,18],[21,17],[23,21]], +[[4,3],[4,13],[5,4],[6,5],[6,16],[9,8],[9,23],[10,9],[11,10],[11,20],[13,3],[14,13],[14,8],[15,14],[15,10],[16,15],[16,5],[20,15],[20,6],[23,14],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,13],[5,16],[8,14],[10,15],[13,4],[14,23],[15,20],[16,6],[20,11],[23,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,9],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,7],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Producer","C",21,4,1],["Sell","A",23,4,8] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[23,21]], +[[4,3],[4,14],[5,4],[6,5],[6,19],[6,15],[9,8],[9,19],[10,9],[11,10],[11,23],[13,8],[14,13],[14,3],[15,14],[15,5],[16,15],[16,10],[19,13],[23,16],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,14],[5,15],[8,13],[10,16],[13,19],[14,4],[15,6],[16,23],[19,9],[23,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,8],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,7],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,7],["Producer","C",21,4,1],["Sell","A",23,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[23,21]], +[[4,3],[4,14],[5,4],[6,5],[6,19],[6,15],[9,8],[9,23],[10,9],[11,10],[11,19],[13,8],[14,13],[14,3],[15,14],[15,5],[16,15],[16,10],[19,16],[23,13],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,14],[5,15],[8,13],[10,16],[13,23],[14,4],[15,6],[16,19],[19,11],[23,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,9],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,6],["Receive_order_and_buy","A",16,2,7],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",20,3,8],["Producer","C",21,4,1],["Sell","A",23,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[20,18],[21,17],[23,21]], +[[4,3],[4,14],[5,4],[6,5],[6,15],[9,8],[9,23],[10,9],[11,10],[11,20],[13,8],[14,13],[14,3],[15,14],[15,5],[16,15],[16,10],[20,16],[20,6],[23,13],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,14],[5,15],[8,13],[10,16],[13,23],[14,4],[15,6],[16,20],[20,11],[23,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,7],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,6],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,4],["Receive_order_and_buy","A",16,2,6],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Producer","C",21,4,1],["Sell","A",23,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[23,21]], +[[4,3],[4,14],[5,4],[6,5],[6,19],[6,16],[9,8],[9,19],[10,9],[11,10],[11,23],[13,8],[14,13],[14,3],[15,14],[15,10],[16,15],[16,5],[19,13],[23,15],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,14],[5,16],[8,13],[10,15],[13,19],[14,4],[15,23],[16,6],[19,9],[23,11]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,4],["Request_delivery","A",5,0,5],["Not_available","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,6],["Request_delivery","A",10,1,7],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,3],["Receive_order_and_buy","A",15,2,7],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,7],["Producer","C",21,4,1],["Sell","A",23,4,5] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[23,21]], +[[4,3],[4,14],[5,4],[6,5],[6,19],[6,16],[9,8],[9,23],[10,9],[11,10],[11,19],[13,8],[14,13],[14,3],[15,14],[15,10],[16,15],[16,5],[19,15],[23,13],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,14],[5,16],[8,13],[10,15],[13,23],[14,4],[15,19],[16,6],[19,11],[23,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000280584, +[ ["Consumers","R",1,0,0],["Consumer","C",2,0,1],["Request_delivery","A",3,0,2],["Not_available","A",4,0,6],["Request_delivery","A",5,0,7],["Not_available","A",6,0,9],["Consumer","C",7,1,1],["Request_delivery","A",8,1,2],["Receive_supply","A",9,1,3],["Request_delivery","A",10,1,4],["Receive_supply","A",11,1,8],["Supply_Office","R",12,2,0],["Receive_order_and_buy","A",13,2,2],["Receive_order_and_buy","A",14,2,4],["Receive_order_and_buy","A",15,2,5],["Receive_order_and_buy","A",16,2,8],["Producers","R",17,3,0],["Producer","C",18,3,1],["Sell","A",19,3,2],["Producer","C",21,4,1],["Sell","A",23,4,7] ], + +[[2,1],[3,2],[4,2],[4,21],[5,2],[6,2],[6,18],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12],[15,12],[16,12],[18,17],[19,18],[21,17],[23,21]], +[[4,3],[4,15],[5,4],[6,5],[6,19],[6,16],[9,8],[9,19],[10,9],[11,10],[11,23],[13,8],[14,13],[14,10],[15,14],[15,3],[16,15],[16,5],[19,13],[23,14],[23,4]], +["Is_supplier_for", [18,7],[21,7]], +["related_to", [3,15],[5,16],[8,13],[10,14],[13,19],[14,23],[15,4],[16,6],[19,9],[23,11]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example20_MP_model__reuse.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example20_MP_model__reuse.json new file mode 100644 index 0000000..cd519da --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example20_MP_model__reuse.json @@ -0,0 +1,51 @@ +{"traces":[ + +["U", 0.166667, +[ ["Data_Base","R",1,0,0],["check_ID","A",2,0,2],["Authentication_Service","R",3,1,0],["request_ID","C",4,1,1],["cancel_access_request","A",7,1,3],["creds_invalid","A",6,2,3],["Requester","R",8,2,0],["request_access","A",9,2,1],["provide_ID","A",10,2,2],["abandon_access_request","A",12,2,4],["User","R",13,3,0],["login_fails","A",14,3,1] ], + +[[2,1],[2,4],[4,3],[6,3],[6,8],[6,13],[7,3],[9,8],[9,13],[10,8],[10,13],[12,8],[12,13],[14,13]], +[[4,9],[6,4],[6,10],[7,6],[10,9],[10,4],[12,6]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Data_Base","R",1,0,0],["check_ID","A",2,0,2],["Authentication_Service","R",3,1,0],["request_ID","C",4,1,1],["creds_valid","A",6,2,3],["access_granted","A",7,2,4],["Requester","R",8,2,0],["request_access","A",9,2,1],["provide_ID","A",10,2,2],["User","R",13,3,0],["login_succeeds","A",14,3,4],["work","A",15,3,5] ], + +[[2,1],[2,4],[4,3],[6,3],[6,8],[6,13],[7,3],[7,8],[7,13],[9,8],[9,13],[10,8],[10,13],[14,13],[15,13]], +[[4,9],[6,4],[6,10],[7,6],[10,9],[10,4],[14,7],[15,14]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Data_Base","R",1,0,0],["check_ID","A",2,0,2],["Authentication_Service","R",3,1,0],["request_ID","C",4,1,1],["creds_valid","A",6,2,3],["access_granted","A",7,2,4],["Requester","R",8,2,0],["request_access","A",9,2,1],["provide_ID","A",10,2,2],["User","R",13,3,0],["login_succeeds","A",14,3,4],["cancel","A",15,3,5] ], + +[[2,1],[2,4],[4,3],[6,3],[6,8],[6,13],[7,3],[7,8],[7,13],[9,8],[9,13],[10,8],[10,13],[14,13],[15,13]], +[[4,9],[6,4],[6,10],[7,6],[10,9],[10,4],[14,7],[15,14]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Data_Base","R",1,0,0],["check_ID","A",2,0,2],["check_ID","A",3,0,6],["Authentication_Service","R",4,1,0],["request_ID","C",5,1,1],["request_ID","C",8,1,5],["cancel_access_request","A",11,1,7],["creds_invalid","A",7,2,3],["creds_invalid","A",10,2,7],["Requester","R",12,2,0],["request_access","A",13,2,1],["provide_ID","A",14,2,2],["request_access","A",16,2,5],["provide_ID","A",17,2,6],["abandon_access_request","A",19,2,8],["User","R",20,3,0],["login_fails","A",21,3,1] ], + +[[2,1],[2,5],[3,1],[3,8],[5,4],[7,4],[7,12],[7,20],[8,4],[10,4],[10,12],[10,20],[11,4],[13,12],[13,20],[14,12],[14,20],[16,12],[16,20],[17,12],[17,20],[19,12],[19,20],[21,20]], +[[3,2],[5,13],[7,5],[7,14],[8,7],[8,16],[10,8],[10,17],[11,10],[14,13],[14,5],[16,7],[17,16],[17,8],[19,10]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Data_Base","R",1,0,0],["check_ID","A",2,0,2],["check_ID","A",3,0,7],["Authentication_Service","R",4,1,0],["request_ID","C",5,1,1],["request_ID","C",8,1,6],["creds_invalid","A",7,2,3],["creds_valid","A",10,2,8],["access_granted","A",11,2,9],["Requester","R",12,2,0],["request_access","A",13,2,1],["provide_ID","A",14,2,2],["request_access","A",16,2,6],["provide_ID","A",17,2,7],["User","R",20,3,0],["login_succeeds","A",21,3,9],["work","A",22,3,10] ], + +[[2,1],[2,5],[3,1],[3,8],[5,4],[7,4],[7,12],[7,20],[8,4],[10,4],[10,12],[10,20],[11,4],[11,12],[11,20],[13,12],[13,20],[14,12],[14,20],[16,12],[16,20],[17,12],[17,20],[21,20],[22,20]], +[[3,2],[5,13],[7,5],[7,14],[8,7],[8,16],[10,8],[10,17],[11,10],[14,13],[14,5],[16,7],[17,16],[17,8],[21,11],[22,21]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Data_Base","R",1,0,0],["check_ID","A",2,0,2],["check_ID","A",3,0,7],["Authentication_Service","R",4,1,0],["request_ID","C",5,1,1],["request_ID","C",8,1,6],["creds_invalid","A",7,2,3],["creds_valid","A",10,2,8],["access_granted","A",11,2,9],["Requester","R",12,2,0],["request_access","A",13,2,1],["provide_ID","A",14,2,2],["request_access","A",16,2,6],["provide_ID","A",17,2,7],["User","R",20,3,0],["login_succeeds","A",21,3,9],["cancel","A",22,3,10] ], + +[[2,1],[2,5],[3,1],[3,8],[5,4],[7,4],[7,12],[7,20],[8,4],[10,4],[10,12],[10,20],[11,4],[11,12],[11,20],[13,12],[13,20],[14,12],[14,20],[16,12],[16,20],[17,12],[17,20],[21,20],[22,20]], +[[3,2],[5,13],[7,5],[7,14],[8,7],[8,16],[10,8],[10,17],[11,10],[14,13],[14,5],[16,7],[17,16],[17,8],[21,11],[22,21]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example21_compiler1.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example21_compiler1.json new file mode 100644 index 0000000..a012a25 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example21_compiler1.json @@ -0,0 +1,1179 @@ +{"traces":[ + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Token_list","R",12,2,0],["get_token","A",14,2,5],["Parser","R",15,3,0],["Shift_Reduce","C",16,3,1],["Push","A",17,3,2],["Reduce","C",19,3,5],["Pop","A",20,3,6],["Push","A",21,3,7],["Put_node","A",22,3,8],["Reduce","C",23,3,9],["Pop","A",24,3,10],["Push","A",25,3,11],["Put_node","A",26,3,12],["Parsing_complete","A",27,3,13],["Stack","C",28,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,12],[14,12],[14,16],[16,15],[17,16],[17,28],[19,16],[20,19],[20,28],[21,19],[21,28],[22,16],[23,16],[24,23],[24,28],[25,23],[25,28],[26,16],[27,16],[28,15]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[14,10],[14,17],[19,14],[20,17],[21,20],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.0634921, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Token_list","R",12,2,0],["get_token","A",14,2,5],["Parser","R",15,3,0],["Shift_Reduce","C",16,3,1],["Push","A",17,3,2],["Reduce","C",19,3,5],["Pop","A",20,3,6],["Push","A",21,3,7],["Put_node","A",22,3,8],["Report_syntax_error","A",23,3,9],["Stack","C",24,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,12],[14,12],[14,16],[16,15],[17,16],[17,24],[19,16],[20,19],[20,24],[21,19],[21,24],[22,16],[23,16],[24,15]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[14,10],[14,17],[19,14],[20,17],[21,20],[22,19],[23,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Token_list","R",12,2,0],["get_token","A",14,2,5],["Parser","R",15,3,0],["Shift_Reduce","C",16,3,1],["Push","A",17,3,2],["Reduce","C",19,3,5],["Pop","A",20,3,6],["Push","A",21,3,7],["Put_node","A",22,3,8],["Reduce","C",23,3,9],["Pop","A",24,3,10],["Push","A",25,3,11],["Put_node","A",26,3,12],["Reduce","C",27,3,13],["Pop","A",28,3,14],["Push","A",29,3,15],["Put_node","A",30,3,16],["Parsing_complete","A",31,3,17],["Stack","C",32,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,12],[14,12],[14,16],[16,15],[17,16],[17,32],[19,16],[20,19],[20,32],[21,19],[21,32],[22,16],[23,16],[24,23],[24,32],[25,23],[25,32],[26,16],[27,16],[28,27],[28,32],[29,27],[29,32],[30,16],[31,16],[32,15]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[14,10],[14,17],[19,14],[20,17],[21,20],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26],[28,25],[29,28],[30,27],[31,30]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Token_list","R",12,2,0],["get_token","A",14,2,5],["Parser","R",15,3,0],["Shift_Reduce","C",16,3,1],["Push","A",17,3,2],["Reduce","C",19,3,5],["Pop","A",20,3,6],["Push","A",21,3,7],["Put_node","A",22,3,8],["Reduce","C",23,3,9],["Pop","A",24,3,10],["Push","A",25,3,11],["Put_node","A",26,3,12],["Report_syntax_error","A",27,3,13],["Stack","C",28,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,12],[14,12],[14,16],[16,15],[17,16],[17,28],[19,16],[20,19],[20,28],[21,19],[21,28],[22,16],[23,16],[24,23],[24,28],[25,23],[25,28],[26,16],[27,16],[28,15]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[14,10],[14,17],[19,14],[20,17],[21,20],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["RegExpr_match","C",9,2,3],["match_string","A",10,2,4],["largest_successful_match","A",11,2,5],["put_token","A",12,2,6],["Token_list","R",14,3,0],["get_token","A",16,3,6],["Parser","R",17,4,0],["Shift_Reduce","C",18,4,1],["Push","A",19,4,2],["Reduce","C",21,4,6],["Pop","A",22,4,7],["Push","A",23,4,8],["Put_node","A",24,4,9],["Reduce","C",25,4,10],["Pop","A",26,4,11],["Push","A",27,4,12],["Put_node","A",28,4,13],["Parsing_complete","A",29,4,14],["Stack","C",30,5,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,5],[10,9],[11,9],[12,9],[12,14],[16,14],[16,18],[18,17],[19,18],[19,30],[21,18],[22,21],[22,30],[23,21],[23,30],[24,18],[25,18],[26,25],[26,30],[27,25],[27,30],[28,18],[29,18],[30,17]], +[[3,2],[3,7],[3,9],[7,2],[9,2],[11,10],[12,11],[16,12],[16,19],[21,16],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26],[28,25],[29,28]] +,{"VIEWS":[ ]} +], + +["U", 0.031746, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["RegExpr_match","C",9,2,3],["match_string","A",10,2,4],["largest_successful_match","A",11,2,5],["put_token","A",12,2,6],["Token_list","R",14,3,0],["get_token","A",16,3,6],["Parser","R",17,4,0],["Shift_Reduce","C",18,4,1],["Push","A",19,4,2],["Reduce","C",21,4,6],["Pop","A",22,4,7],["Push","A",23,4,8],["Put_node","A",24,4,9],["Report_syntax_error","A",25,4,10],["Stack","C",26,5,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,5],[10,9],[11,9],[12,9],[12,14],[16,14],[16,18],[18,17],[19,18],[19,26],[21,18],[22,21],[22,26],[23,21],[23,26],[24,18],[25,18],[26,17]], +[[3,2],[3,7],[3,9],[7,2],[9,2],[11,10],[12,11],[16,12],[16,19],[21,16],[22,19],[23,22],[24,21],[25,24]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["RegExpr_match","C",9,2,3],["match_string","A",10,2,4],["largest_successful_match","A",11,2,5],["put_token","A",12,2,6],["Token_list","R",14,3,0],["get_token","A",16,3,6],["Parser","R",17,4,0],["Shift_Reduce","C",18,4,1],["Push","A",19,4,2],["Reduce","C",21,4,6],["Pop","A",22,4,7],["Push","A",23,4,8],["Put_node","A",24,4,9],["Reduce","C",25,4,10],["Pop","A",26,4,11],["Push","A",27,4,12],["Put_node","A",28,4,13],["Reduce","C",29,4,14],["Pop","A",30,4,15],["Push","A",31,4,16],["Put_node","A",32,4,17],["Parsing_complete","A",33,4,18],["Stack","C",34,5,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,5],[10,9],[11,9],[12,9],[12,14],[16,14],[16,18],[18,17],[19,18],[19,34],[21,18],[22,21],[22,34],[23,21],[23,34],[24,18],[25,18],[26,25],[26,34],[27,25],[27,34],[28,18],[29,18],[30,29],[30,34],[31,29],[31,34],[32,18],[33,18],[34,17]], +[[3,2],[3,7],[3,9],[7,2],[9,2],[11,10],[12,11],[16,12],[16,19],[21,16],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["RegExpr_match","C",9,2,3],["match_string","A",10,2,4],["largest_successful_match","A",11,2,5],["put_token","A",12,2,6],["Token_list","R",14,3,0],["get_token","A",16,3,6],["Parser","R",17,4,0],["Shift_Reduce","C",18,4,1],["Push","A",19,4,2],["Reduce","C",21,4,6],["Pop","A",22,4,7],["Push","A",23,4,8],["Put_node","A",24,4,9],["Reduce","C",25,4,10],["Pop","A",26,4,11],["Push","A",27,4,12],["Put_node","A",28,4,13],["Report_syntax_error","A",29,4,14],["Stack","C",30,5,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,5],[10,9],[11,9],[12,9],[12,14],[16,14],[16,18],[18,17],[19,18],[19,30],[21,18],[22,21],[22,30],[23,21],[23,30],[24,18],[25,18],[26,25],[26,30],[27,25],[27,30],[28,18],[29,18],[30,17]], +[[3,2],[3,7],[3,9],[7,2],[9,2],[11,10],[12,11],[16,12],[16,19],[21,16],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26],[28,25],[29,28]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["Token_list","R",14,3,0],["get_token","A",16,3,6],["Parser","R",17,4,0],["Shift_Reduce","C",18,4,1],["Push","A",19,4,2],["Reduce","C",21,4,6],["Pop","A",22,4,7],["Push","A",23,4,8],["Put_node","A",24,4,9],["Reduce","C",25,4,10],["Pop","A",26,4,11],["Push","A",27,4,12],["Put_node","A",28,4,13],["Parsing_complete","A",29,4,14],["Stack","C",30,5,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,14],[11,5],[12,11],[16,14],[16,18],[18,17],[19,18],[19,30],[21,18],[22,21],[22,30],[23,21],[23,30],[24,18],[25,18],[26,25],[26,30],[27,25],[27,30],[28,18],[29,18],[30,17]], +[[3,2],[3,7],[3,11],[7,2],[9,8],[10,9],[11,2],[16,10],[16,19],[21,16],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26],[28,25],[29,28]] +,{"VIEWS":[ ]} +], + +["U", 0.031746, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["Token_list","R",14,3,0],["get_token","A",16,3,6],["Parser","R",17,4,0],["Shift_Reduce","C",18,4,1],["Push","A",19,4,2],["Reduce","C",21,4,6],["Pop","A",22,4,7],["Push","A",23,4,8],["Put_node","A",24,4,9],["Report_syntax_error","A",25,4,10],["Stack","C",26,5,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,14],[11,5],[12,11],[16,14],[16,18],[18,17],[19,18],[19,26],[21,18],[22,21],[22,26],[23,21],[23,26],[24,18],[25,18],[26,17]], +[[3,2],[3,7],[3,11],[7,2],[9,8],[10,9],[11,2],[16,10],[16,19],[21,16],[22,19],[23,22],[24,21],[25,24]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["Token_list","R",14,3,0],["get_token","A",16,3,6],["Parser","R",17,4,0],["Shift_Reduce","C",18,4,1],["Push","A",19,4,2],["Reduce","C",21,4,6],["Pop","A",22,4,7],["Push","A",23,4,8],["Put_node","A",24,4,9],["Reduce","C",25,4,10],["Pop","A",26,4,11],["Push","A",27,4,12],["Put_node","A",28,4,13],["Reduce","C",29,4,14],["Pop","A",30,4,15],["Push","A",31,4,16],["Put_node","A",32,4,17],["Parsing_complete","A",33,4,18],["Stack","C",34,5,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,14],[11,5],[12,11],[16,14],[16,18],[18,17],[19,18],[19,34],[21,18],[22,21],[22,34],[23,21],[23,34],[24,18],[25,18],[26,25],[26,34],[27,25],[27,34],[28,18],[29,18],[30,29],[30,34],[31,29],[31,34],[32,18],[33,18],[34,17]], +[[3,2],[3,7],[3,11],[7,2],[9,8],[10,9],[11,2],[16,10],[16,19],[21,16],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["Token_list","R",14,3,0],["get_token","A",16,3,6],["Parser","R",17,4,0],["Shift_Reduce","C",18,4,1],["Push","A",19,4,2],["Reduce","C",21,4,6],["Pop","A",22,4,7],["Push","A",23,4,8],["Put_node","A",24,4,9],["Reduce","C",25,4,10],["Pop","A",26,4,11],["Push","A",27,4,12],["Put_node","A",28,4,13],["Report_syntax_error","A",29,4,14],["Stack","C",30,5,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[10,14],[11,5],[12,11],[16,14],[16,18],[18,17],[19,18],[19,30],[21,18],[22,21],[22,30],[23,21],[23,30],[24,18],[25,18],[26,25],[26,30],[27,25],[27,30],[28,18],[29,18],[30,17]], +[[3,2],[3,7],[3,11],[7,2],[9,8],[10,9],[11,2],[16,10],[16,19],[21,16],[22,19],[23,22],[24,21],[25,24],[26,23],[27,26],[28,25],[29,28]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["Reduce","C",29,3,10],["Pop","A",30,3,11],["Push","A",31,3,12],["Put_node","A",32,3,13],["Reduce","C",33,3,14],["Pop","A",34,3,15],["Push","A",35,3,16],["Put_node","A",36,3,17],["Parsing_complete","A",37,3,18],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,26],[26,25],[27,26],[27,38],[29,26],[30,29],[30,38],[31,29],[31,38],[32,26],[33,26],[34,33],[34,38],[35,33],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,27],[29,24],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.031746, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["Reduce","C",29,3,10],["Pop","A",30,3,11],["Push","A",31,3,12],["Put_node","A",32,3,13],["Report_syntax_error","A",33,3,14],["Stack","C",34,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,26],[26,25],[27,26],[27,34],[29,26],[30,29],[30,34],[31,29],[31,34],[32,26],[33,26],[34,25]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,27],[29,24],[30,27],[31,30],[32,29],[33,32]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["Reduce","C",29,3,10],["Pop","A",30,3,11],["Push","A",31,3,12],["Put_node","A",32,3,13],["Reduce","C",33,3,14],["Pop","A",34,3,15],["Push","A",35,3,16],["Put_node","A",36,3,17],["Reduce","C",37,3,18],["Pop","A",38,3,19],["Push","A",39,3,20],["Put_node","A",40,3,21],["Parsing_complete","A",41,3,22],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,26],[26,25],[27,26],[27,42],[29,26],[30,29],[30,42],[31,29],[31,42],[32,26],[33,26],[34,33],[34,42],[35,33],[35,42],[36,26],[37,26],[38,37],[38,42],[39,37],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,27],[29,24],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["Reduce","C",29,3,10],["Pop","A",30,3,11],["Push","A",31,3,12],["Put_node","A",32,3,13],["Reduce","C",33,3,14],["Pop","A",34,3,15],["Push","A",35,3,16],["Put_node","A",36,3,17],["Report_syntax_error","A",37,3,18],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,26],[26,25],[27,26],[27,38],[29,26],[30,29],[30,38],[31,29],[31,38],[32,26],[33,26],[34,33],[34,38],[35,33],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,27],[29,24],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.015873, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,11],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Shift","C",30,3,10],["Push","A",31,3,11],["Reduce","C",33,3,12],["Pop","A",34,3,13],["Push","A",35,3,14],["Put_node","A",36,3,15],["Parsing_complete","A",37,3,16],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,30],[27,26],[28,27],[28,38],[30,27],[31,30],[31,38],[33,27],[34,33],[34,38],[35,33],[35,38],[36,27],[37,27],[38,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,31],[30,24],[31,28],[33,30],[34,31],[35,34],[36,33],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,11],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Shift","C",30,3,10],["Push","A",31,3,11],["Reduce","C",33,3,12],["Pop","A",34,3,13],["Pop","A",35,3,14],["Push","A",36,3,15],["Put_node","A",37,3,16],["Parsing_complete","A",38,3,17],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,30],[27,26],[28,27],[28,39],[30,27],[31,30],[31,39],[33,27],[34,33],[34,39],[35,33],[35,39],[36,33],[36,39],[37,27],[38,27],[39,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,31],[30,24],[31,28],[33,30],[34,31],[35,34],[36,35],[37,33],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.126984, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,11],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Shift","C",30,3,10],["Push","A",31,3,11],["Report_syntax_error","A",33,3,12],["Stack","C",34,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,30],[27,26],[28,27],[28,34],[30,27],[31,30],[31,34],[33,27],[34,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,31],[30,24],[31,28],[33,30]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,11],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Shift","C",30,3,10],["Push","A",31,3,11],["Reduce","C",33,3,12],["Pop","A",34,3,13],["Push","A",35,3,14],["Put_node","A",36,3,15],["Reduce","C",37,3,16],["Pop","A",38,3,17],["Push","A",39,3,18],["Put_node","A",40,3,19],["Parsing_complete","A",41,3,20],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,30],[27,26],[28,27],[28,42],[30,27],[31,30],[31,42],[33,27],[34,33],[34,42],[35,33],[35,42],[36,27],[37,27],[38,37],[38,42],[39,37],[39,42],[40,27],[41,27],[42,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,31],[30,24],[31,28],[33,30],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,11],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Shift","C",30,3,10],["Push","A",31,3,11],["Reduce","C",33,3,12],["Pop","A",34,3,13],["Push","A",35,3,14],["Put_node","A",36,3,15],["Reduce","C",37,3,16],["Pop","A",38,3,17],["Pop","A",39,3,18],["Push","A",40,3,19],["Put_node","A",41,3,20],["Parsing_complete","A",42,3,21],["Stack","C",43,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,30],[27,26],[28,27],[28,43],[30,27],[31,30],[31,43],[33,27],[34,33],[34,43],[35,33],[35,43],[36,27],[37,27],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,27],[42,27],[43,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,31],[30,24],[31,28],[33,30],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,11],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Shift","C",30,3,10],["Push","A",31,3,11],["Reduce","C",33,3,12],["Pop","A",34,3,13],["Push","A",35,3,14],["Put_node","A",36,3,15],["Report_syntax_error","A",37,3,16],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,30],[27,26],[28,27],[28,38],[30,27],[31,30],[31,38],[33,27],[34,33],[34,38],[35,33],[35,38],[36,27],[37,27],[38,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,31],[30,24],[31,28],[33,30],[34,31],[35,34],[36,33],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,11],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Shift","C",30,3,10],["Push","A",31,3,11],["Reduce","C",33,3,12],["Pop","A",34,3,13],["Pop","A",35,3,14],["Push","A",36,3,15],["Put_node","A",37,3,16],["Reduce","C",38,3,17],["Pop","A",39,3,18],["Push","A",40,3,19],["Put_node","A",41,3,20],["Parsing_complete","A",42,3,21],["Stack","C",43,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,30],[27,26],[28,27],[28,43],[30,27],[31,30],[31,43],[33,27],[34,33],[34,43],[35,33],[35,43],[36,33],[36,43],[37,27],[38,27],[39,38],[39,43],[40,38],[40,43],[41,27],[42,27],[43,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,31],[30,24],[31,28],[33,30],[34,31],[35,34],[36,35],[37,33],[38,37],[39,36],[40,39],[41,38],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,11],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Shift","C",30,3,10],["Push","A",31,3,11],["Reduce","C",33,3,12],["Pop","A",34,3,13],["Pop","A",35,3,14],["Push","A",36,3,15],["Put_node","A",37,3,16],["Report_syntax_error","A",38,3,17],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,30],[27,26],[28,27],[28,39],[30,27],[31,30],[31,39],[33,27],[34,33],[34,39],[35,33],[35,39],[36,33],[36,39],[37,27],[38,27],[39,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,31],[30,24],[31,28],[33,30],[34,31],[35,34],[36,35],[37,33],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,15],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Push","A",32,3,12],["Put_node","A",33,3,13],["Shift","C",34,3,14],["Push","A",35,3,15],["Reduce","C",37,3,16],["Pop","A",38,3,17],["Push","A",39,3,18],["Put_node","A",40,3,19],["Parsing_complete","A",41,3,20],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,34],[27,26],[28,27],[28,42],[30,27],[31,30],[31,42],[32,30],[32,42],[33,27],[34,27],[35,34],[35,42],[37,27],[38,37],[38,42],[39,37],[39,42],[40,27],[41,27],[42,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,35],[30,24],[31,28],[32,31],[33,30],[34,33],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,15],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Push","A",32,3,12],["Put_node","A",33,3,13],["Shift","C",34,3,14],["Push","A",35,3,15],["Reduce","C",37,3,16],["Pop","A",38,3,17],["Pop","A",39,3,18],["Push","A",40,3,19],["Put_node","A",41,3,20],["Parsing_complete","A",42,3,21],["Stack","C",43,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,34],[27,26],[28,27],[28,43],[30,27],[31,30],[31,43],[32,30],[32,43],[33,27],[34,27],[35,34],[35,43],[37,27],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,27],[42,27],[43,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,35],[30,24],[31,28],[32,31],[33,30],[34,33],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Token_list","R",21,2,0],["get_token","A",24,2,10],["get_token","A",25,2,15],["Parser","R",26,3,0],["Shift_Reduce","C",27,3,1],["Push","A",28,3,2],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Push","A",32,3,12],["Put_node","A",33,3,13],["Shift","C",34,3,14],["Push","A",35,3,15],["Report_syntax_error","A",37,3,16],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,21],[14,6],[16,14],[17,16],[18,16],[19,16],[19,21],[24,21],[24,27],[25,21],[25,34],[27,26],[28,27],[28,38],[30,27],[31,30],[31,38],[32,30],[32,38],[33,27],[34,27],[35,34],[35,38],[37,27],[38,26]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[24,19],[24,28],[25,24],[25,35],[30,24],[31,28],[32,31],[33,30],[34,33],[35,32],[37,34]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Reduce","C",35,4,15],["Pop","A",36,4,16],["Push","A",37,4,17],["Put_node","A",38,4,18],["Parsing_complete","A",39,4,19],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,40],[31,28],[32,31],[32,40],[33,31],[33,40],[34,28],[35,28],[36,35],[36,40],[37,35],[37,40],[38,28],[39,28],[40,27]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.015873, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Report_syntax_error","A",35,4,15],["Stack","C",36,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,36],[31,28],[32,31],[32,36],[33,31],[33,36],[34,28],[35,28],[36,27]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Reduce","C",35,4,15],["Pop","A",36,4,16],["Push","A",37,4,17],["Put_node","A",38,4,18],["Reduce","C",39,4,19],["Pop","A",40,4,20],["Push","A",41,4,21],["Put_node","A",42,4,22],["Parsing_complete","A",43,4,23],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,44],[31,28],[32,31],[32,44],[33,31],[33,44],[34,28],[35,28],[36,35],[36,44],[37,35],[37,44],[38,28],[39,28],[40,39],[40,44],[41,39],[41,44],[42,28],[43,28],[44,27]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Reduce","C",35,4,15],["Pop","A",36,4,16],["Push","A",37,4,17],["Put_node","A",38,4,18],["Report_syntax_error","A",39,4,19],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,40],[31,28],[32,31],[32,40],[33,31],[33,40],[34,28],[35,28],[36,35],[36,40],[37,35],[37,40],[38,28],[39,28],[40,27]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Parsing_complete","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[35,29],[36,35],[36,40],[37,35],[37,40],[38,29],[39,29],[40,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Pop","A",37,4,15],["Push","A",38,4,16],["Put_node","A",39,4,17],["Parsing_complete","A",40,4,18],["Stack","C",41,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,41],[32,29],[33,32],[33,41],[35,29],[36,35],[36,41],[37,35],[37,41],[38,35],[38,41],[39,29],[40,29],[41,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.0634921, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Report_syntax_error","A",35,4,13],["Stack","C",36,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,36],[32,29],[33,32],[33,36],[35,29],[36,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Push","A",41,4,19],["Put_node","A",42,4,20],["Parsing_complete","A",43,4,21],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,44],[32,29],[33,32],[33,44],[35,29],[36,35],[36,44],[37,35],[37,44],[38,29],[39,29],[40,39],[40,44],[41,39],[41,44],[42,29],[43,29],[44,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Pop","A",41,4,19],["Push","A",42,4,20],["Put_node","A",43,4,21],["Parsing_complete","A",44,4,22],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[35,29],[36,35],[36,45],[37,35],[37,45],[38,29],[39,29],[40,39],[40,45],[41,39],[41,45],[42,39],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,41],[43,39],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Report_syntax_error","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[35,29],[36,35],[36,40],[37,35],[37,40],[38,29],[39,29],[40,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Pop","A",37,4,15],["Push","A",38,4,16],["Put_node","A",39,4,17],["Reduce","C",40,4,18],["Pop","A",41,4,19],["Push","A",42,4,20],["Put_node","A",43,4,21],["Parsing_complete","A",44,4,22],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[35,29],[36,35],[36,45],[37,35],[37,45],[38,35],[38,45],[39,29],[40,29],[41,40],[41,45],[42,40],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39],[41,38],[42,41],[43,40],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Pop","A",37,4,15],["Push","A",38,4,16],["Put_node","A",39,4,17],["Report_syntax_error","A",40,4,18],["Stack","C",41,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,41],[32,29],[33,32],[33,41],[35,29],[36,35],[36,41],[37,35],[37,41],[38,35],[38,41],[39,29],[40,29],[41,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,16],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,11],["Pop","A",33,4,12],["Push","A",34,4,13],["Put_node","A",35,4,14],["Shift","C",36,4,15],["Push","A",37,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Push","A",41,4,19],["Put_node","A",42,4,20],["Parsing_complete","A",43,4,21],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,44],[32,29],[33,32],[33,44],[34,32],[34,44],[35,29],[36,29],[37,36],[37,44],[39,29],[40,39],[40,44],[41,39],[41,44],[42,29],[43,29],[44,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,16],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,11],["Pop","A",33,4,12],["Push","A",34,4,13],["Put_node","A",35,4,14],["Shift","C",36,4,15],["Push","A",37,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Pop","A",41,4,19],["Push","A",42,4,20],["Put_node","A",43,4,21],["Parsing_complete","A",44,4,22],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[34,32],[34,45],[35,29],[36,29],[37,36],[37,45],[39,29],[40,39],[40,45],[41,39],[41,45],[42,39],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36],[40,37],[41,40],[42,41],[43,39],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,16],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,11],["Pop","A",33,4,12],["Push","A",34,4,13],["Put_node","A",35,4,14],["Shift","C",36,4,15],["Push","A",37,4,16],["Report_syntax_error","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[34,32],[34,40],[35,29],[36,29],[37,36],[37,40],[39,29],[40,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Reduce","C",35,4,15],["Pop","A",36,4,16],["Push","A",37,4,17],["Put_node","A",38,4,18],["Parsing_complete","A",39,4,19],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,28],[28,27],[29,28],[29,40],[31,28],[32,31],[32,40],[33,31],[33,40],[34,28],[35,28],[36,35],[36,40],[37,35],[37,40],[38,28],[39,28],[40,27]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.015873, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Report_syntax_error","A",35,4,15],["Stack","C",36,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,28],[28,27],[29,28],[29,36],[31,28],[32,31],[32,36],[33,31],[33,36],[34,28],[35,28],[36,27]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Reduce","C",35,4,15],["Pop","A",36,4,16],["Push","A",37,4,17],["Put_node","A",38,4,18],["Reduce","C",39,4,19],["Pop","A",40,4,20],["Push","A",41,4,21],["Put_node","A",42,4,22],["Parsing_complete","A",43,4,23],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,28],[28,27],[29,28],[29,44],[31,28],[32,31],[32,44],[33,31],[33,44],[34,28],[35,28],[36,35],[36,44],[37,35],[37,44],[38,28],[39,28],[40,39],[40,44],[41,39],[41,44],[42,28],[43,28],[44,27]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Reduce","C",35,4,15],["Pop","A",36,4,16],["Push","A",37,4,17],["Put_node","A",38,4,18],["Report_syntax_error","A",39,4,19],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,28],[28,27],[29,28],[29,40],[31,28],[32,31],[32,40],[33,31],[33,40],[34,28],[35,28],[36,35],[36,40],[37,35],[37,40],[38,28],[39,28],[40,27]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Parsing_complete","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[35,29],[36,35],[36,40],[37,35],[37,40],[38,29],[39,29],[40,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Pop","A",37,4,15],["Push","A",38,4,16],["Put_node","A",39,4,17],["Parsing_complete","A",40,4,18],["Stack","C",41,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,41],[32,29],[33,32],[33,41],[35,29],[36,35],[36,41],[37,35],[37,41],[38,35],[38,41],[39,29],[40,29],[41,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.0634921, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Report_syntax_error","A",35,4,13],["Stack","C",36,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,36],[32,29],[33,32],[33,36],[35,29],[36,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Push","A",41,4,19],["Put_node","A",42,4,20],["Parsing_complete","A",43,4,21],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,44],[32,29],[33,32],[33,44],[35,29],[36,35],[36,44],[37,35],[37,44],[38,29],[39,29],[40,39],[40,44],[41,39],[41,44],[42,29],[43,29],[44,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Pop","A",41,4,19],["Push","A",42,4,20],["Put_node","A",43,4,21],["Parsing_complete","A",44,4,22],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[35,29],[36,35],[36,45],[37,35],[37,45],[38,29],[39,29],[40,39],[40,45],[41,39],[41,45],[42,39],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,41],[43,39],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Report_syntax_error","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[35,29],[36,35],[36,40],[37,35],[37,40],[38,29],[39,29],[40,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Pop","A",37,4,15],["Push","A",38,4,16],["Put_node","A",39,4,17],["Reduce","C",40,4,18],["Pop","A",41,4,19],["Push","A",42,4,20],["Put_node","A",43,4,21],["Parsing_complete","A",44,4,22],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[35,29],[36,35],[36,45],[37,35],[37,45],[38,35],[38,45],[39,29],[40,29],[41,40],[41,45],[42,40],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39],[41,38],[42,41],[43,40],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Pop","A",37,4,15],["Push","A",38,4,16],["Put_node","A",39,4,17],["Report_syntax_error","A",40,4,18],["Stack","C",41,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,41],[32,29],[33,32],[33,41],[35,29],[36,35],[36,41],[37,35],[37,41],[38,35],[38,41],[39,29],[40,29],[41,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,16],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,11],["Pop","A",33,4,12],["Push","A",34,4,13],["Put_node","A",35,4,14],["Shift","C",36,4,15],["Push","A",37,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Push","A",41,4,19],["Put_node","A",42,4,20],["Parsing_complete","A",43,4,21],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,44],[32,29],[33,32],[33,44],[34,32],[34,44],[35,29],[36,29],[37,36],[37,44],[39,29],[40,39],[40,44],[41,39],[41,44],[42,29],[43,29],[44,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,16],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,11],["Pop","A",33,4,12],["Push","A",34,4,13],["Put_node","A",35,4,14],["Shift","C",36,4,15],["Push","A",37,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Pop","A",41,4,19],["Push","A",42,4,20],["Put_node","A",43,4,21],["Parsing_complete","A",44,4,22],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[34,32],[34,45],[35,29],[36,29],[37,36],[37,45],[39,29],[40,39],[40,45],[41,39],[41,45],[42,39],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36],[40,37],[41,40],[42,41],[43,39],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,16],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,11],["Pop","A",33,4,12],["Push","A",34,4,13],["Put_node","A",35,4,14],["Shift","C",36,4,15],["Push","A",37,4,16],["Report_syntax_error","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[14,6],[16,14],[17,16],[18,16],[19,16],[19,23],[20,14],[21,20],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[34,32],[34,40],[35,29],[36,29],[37,36],[37,40],[39,29],[40,28]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[19,12],[20,4],[26,19],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,9],["Pop","A",32,4,10],["Push","A",33,4,11],["Put_node","A",34,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Parsing_complete","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,40],[31,28],[32,31],[32,40],[33,31],[33,40],[34,28],[35,28],[36,35],[36,40],[37,35],[37,40],[38,28],[39,28],[40,27]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.015873, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,9],["Pop","A",32,4,10],["Push","A",33,4,11],["Put_node","A",34,4,12],["Report_syntax_error","A",35,4,13],["Stack","C",36,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,36],[31,28],[32,31],[32,36],[33,31],[33,36],[34,28],[35,28],[36,27]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,9],["Pop","A",32,4,10],["Push","A",33,4,11],["Put_node","A",34,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Push","A",41,4,19],["Put_node","A",42,4,20],["Parsing_complete","A",43,4,21],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,44],[31,28],[32,31],[32,44],[33,31],[33,44],[34,28],[35,28],[36,35],[36,44],[37,35],[37,44],[38,28],[39,28],[40,39],[40,44],[41,39],[41,44],[42,28],[43,28],[44,27]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,9],["Pop","A",32,4,10],["Push","A",33,4,11],["Put_node","A",34,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Report_syntax_error","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,40],[31,28],[32,31],[32,40],[33,31],[33,40],[34,28],[35,28],[36,35],[36,40],[37,35],[37,40],[38,28],[39,28],[40,27]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,10],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,9],["Push","A",33,4,10],["Reduce","C",35,4,11],["Pop","A",36,4,12],["Push","A",37,4,13],["Put_node","A",38,4,14],["Parsing_complete","A",39,4,15],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[35,29],[36,35],[36,40],[37,35],[37,40],[38,29],[39,29],[40,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,10],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,9],["Push","A",33,4,10],["Reduce","C",35,4,11],["Pop","A",36,4,12],["Pop","A",37,4,13],["Push","A",38,4,14],["Put_node","A",39,4,15],["Parsing_complete","A",40,4,16],["Stack","C",41,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,41],[32,29],[33,32],[33,41],[35,29],[36,35],[36,41],[37,35],[37,41],[38,35],[38,41],[39,29],[40,29],[41,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.0634921, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,10],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,9],["Push","A",33,4,10],["Report_syntax_error","A",35,4,11],["Stack","C",36,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,36],[32,29],[33,32],[33,36],[35,29],[36,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,10],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,9],["Push","A",33,4,10],["Reduce","C",35,4,11],["Pop","A",36,4,12],["Push","A",37,4,13],["Put_node","A",38,4,14],["Reduce","C",39,4,15],["Pop","A",40,4,16],["Push","A",41,4,17],["Put_node","A",42,4,18],["Parsing_complete","A",43,4,19],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,44],[32,29],[33,32],[33,44],[35,29],[36,35],[36,44],[37,35],[37,44],[38,29],[39,29],[40,39],[40,44],[41,39],[41,44],[42,29],[43,29],[44,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,10],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,9],["Push","A",33,4,10],["Reduce","C",35,4,11],["Pop","A",36,4,12],["Push","A",37,4,13],["Put_node","A",38,4,14],["Reduce","C",39,4,15],["Pop","A",40,4,16],["Pop","A",41,4,17],["Push","A",42,4,18],["Put_node","A",43,4,19],["Parsing_complete","A",44,4,20],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[35,29],[36,35],[36,45],[37,35],[37,45],[38,29],[39,29],[40,39],[40,45],[41,39],[41,45],[42,39],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,41],[43,39],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,10],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,9],["Push","A",33,4,10],["Reduce","C",35,4,11],["Pop","A",36,4,12],["Push","A",37,4,13],["Put_node","A",38,4,14],["Report_syntax_error","A",39,4,15],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[35,29],[36,35],[36,40],[37,35],[37,40],[38,29],[39,29],[40,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,10],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,9],["Push","A",33,4,10],["Reduce","C",35,4,11],["Pop","A",36,4,12],["Pop","A",37,4,13],["Push","A",38,4,14],["Put_node","A",39,4,15],["Reduce","C",40,4,16],["Pop","A",41,4,17],["Push","A",42,4,18],["Put_node","A",43,4,19],["Parsing_complete","A",44,4,20],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[35,29],[36,35],[36,45],[37,35],[37,45],[38,35],[38,45],[39,29],[40,29],[41,40],[41,45],[42,40],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39],[41,38],[42,41],[43,40],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,10],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,9],["Push","A",33,4,10],["Reduce","C",35,4,11],["Pop","A",36,4,12],["Pop","A",37,4,13],["Push","A",38,4,14],["Put_node","A",39,4,15],["Report_syntax_error","A",40,4,16],["Stack","C",41,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,41],[32,29],[33,32],[33,41],[35,29],[36,35],[36,41],[37,35],[37,41],[38,35],[38,41],[39,29],[40,29],[41,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,14],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,9],["Pop","A",33,4,10],["Push","A",34,4,11],["Put_node","A",35,4,12],["Shift","C",36,4,13],["Push","A",37,4,14],["Reduce","C",39,4,15],["Pop","A",40,4,16],["Push","A",41,4,17],["Put_node","A",42,4,18],["Parsing_complete","A",43,4,19],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,44],[32,29],[33,32],[33,44],[34,32],[34,44],[35,29],[36,29],[37,36],[37,44],[39,29],[40,39],[40,44],[41,39],[41,44],[42,29],[43,29],[44,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,14],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,9],["Pop","A",33,4,10],["Push","A",34,4,11],["Put_node","A",35,4,12],["Shift","C",36,4,13],["Push","A",37,4,14],["Reduce","C",39,4,15],["Pop","A",40,4,16],["Pop","A",41,4,17],["Push","A",42,4,18],["Put_node","A",43,4,19],["Parsing_complete","A",44,4,20],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[34,32],[34,45],[35,29],[36,29],[37,36],[37,45],[39,29],[40,39],[40,45],[41,39],[41,45],[42,39],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36],[40,37],[41,40],[42,41],[43,39],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Token_list","R",23,3,0],["get_token","A",26,3,9],["get_token","A",27,3,14],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,9],["Pop","A",33,4,10],["Push","A",34,4,11],["Put_node","A",35,4,12],["Shift","C",36,4,13],["Push","A",37,4,14],["Report_syntax_error","A",39,4,15],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,23],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[34,32],[34,40],[35,29],[36,29],[37,36],[37,40],[39,29],[40,28]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[26,21],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,10],["Pop","A",34,4,11],["Push","A",35,4,12],["Put_node","A",36,4,13],["Reduce","C",37,4,14],["Pop","A",38,4,15],["Push","A",39,4,16],["Put_node","A",40,4,17],["Parsing_complete","A",41,4,18],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,30],[30,29],[31,30],[31,42],[33,30],[34,33],[34,42],[35,33],[35,42],[36,30],[37,30],[38,37],[38,42],[39,37],[39,42],[40,30],[41,30],[42,29]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,10],["Pop","A",34,4,11],["Push","A",35,4,12],["Put_node","A",36,4,13],["Report_syntax_error","A",37,4,14],["Stack","C",38,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,30],[30,29],[31,30],[31,38],[33,30],[34,33],[34,38],[35,33],[35,38],[36,30],[37,30],[38,29]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 6.2004e-05, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,10],["Pop","A",34,4,11],["Push","A",35,4,12],["Put_node","A",36,4,13],["Reduce","C",37,4,14],["Pop","A",38,4,15],["Push","A",39,4,16],["Put_node","A",40,4,17],["Reduce","C",41,4,18],["Pop","A",42,4,19],["Push","A",43,4,20],["Put_node","A",44,4,21],["Parsing_complete","A",45,4,22],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,30],[30,29],[31,30],[31,46],[33,30],[34,33],[34,46],[35,33],[35,46],[36,30],[37,30],[38,37],[38,46],[39,37],[39,46],[40,30],[41,30],[42,41],[42,46],[43,41],[43,46],[44,30],[45,30],[46,29]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,10],["Pop","A",34,4,11],["Push","A",35,4,12],["Put_node","A",36,4,13],["Reduce","C",37,4,14],["Pop","A",38,4,15],["Push","A",39,4,16],["Put_node","A",40,4,17],["Report_syntax_error","A",41,4,18],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,30],[30,29],[31,30],[31,42],[33,30],[34,33],[34,42],[35,33],[35,42],[36,30],[37,30],[38,37],[38,42],[39,37],[39,42],[40,30],[41,30],[42,29]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,11],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,10],["Push","A",35,4,11],["Reduce","C",37,4,12],["Pop","A",38,4,13],["Push","A",39,4,14],["Put_node","A",40,4,15],["Parsing_complete","A",41,4,16],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[37,31],[38,37],[38,42],[39,37],[39,42],[40,31],[41,31],[42,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,11],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,10],["Push","A",35,4,11],["Reduce","C",37,4,12],["Pop","A",38,4,13],["Pop","A",39,4,14],["Push","A",40,4,15],["Put_node","A",41,4,16],["Parsing_complete","A",42,4,17],["Stack","C",43,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,43],[34,31],[35,34],[35,43],[37,31],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,31],[42,31],[43,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.031746, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,11],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,10],["Push","A",35,4,11],["Report_syntax_error","A",37,4,12],["Stack","C",38,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,38],[34,31],[35,34],[35,38],[37,31],[38,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,11],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,10],["Push","A",35,4,11],["Reduce","C",37,4,12],["Pop","A",38,4,13],["Push","A",39,4,14],["Put_node","A",40,4,15],["Reduce","C",41,4,16],["Pop","A",42,4,17],["Push","A",43,4,18],["Put_node","A",44,4,19],["Parsing_complete","A",45,4,20],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,46],[34,31],[35,34],[35,46],[37,31],[38,37],[38,46],[39,37],[39,46],[40,31],[41,31],[42,41],[42,46],[43,41],[43,46],[44,31],[45,31],[46,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,11],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,10],["Push","A",35,4,11],["Reduce","C",37,4,12],["Pop","A",38,4,13],["Push","A",39,4,14],["Put_node","A",40,4,15],["Reduce","C",41,4,16],["Pop","A",42,4,17],["Pop","A",43,4,18],["Push","A",44,4,19],["Put_node","A",45,4,20],["Parsing_complete","A",46,4,21],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[37,31],[38,37],[38,47],[39,37],[39,47],[40,31],[41,31],[42,41],[42,47],[43,41],[43,47],[44,41],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,43],[45,41],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,11],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,10],["Push","A",35,4,11],["Reduce","C",37,4,12],["Pop","A",38,4,13],["Push","A",39,4,14],["Put_node","A",40,4,15],["Report_syntax_error","A",41,4,16],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[37,31],[38,37],[38,42],[39,37],[39,42],[40,31],[41,31],[42,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,11],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,10],["Push","A",35,4,11],["Reduce","C",37,4,12],["Pop","A",38,4,13],["Pop","A",39,4,14],["Push","A",40,4,15],["Put_node","A",41,4,16],["Reduce","C",42,4,17],["Pop","A",43,4,18],["Push","A",44,4,19],["Put_node","A",45,4,20],["Parsing_complete","A",46,4,21],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[37,31],[38,37],[38,47],[39,37],[39,47],[40,37],[40,47],[41,31],[42,31],[43,42],[43,47],[44,42],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41],[43,40],[44,43],[45,42],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,11],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,10],["Push","A",35,4,11],["Reduce","C",37,4,12],["Pop","A",38,4,13],["Pop","A",39,4,14],["Push","A",40,4,15],["Put_node","A",41,4,16],["Report_syntax_error","A",42,4,17],["Stack","C",43,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,43],[34,31],[35,34],[35,43],[37,31],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,31],[42,31],[43,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,15],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,10],["Pop","A",35,4,11],["Push","A",36,4,12],["Put_node","A",37,4,13],["Shift","C",38,4,14],["Push","A",39,4,15],["Reduce","C",41,4,16],["Pop","A",42,4,17],["Push","A",43,4,18],["Put_node","A",44,4,19],["Parsing_complete","A",45,4,20],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,46],[34,31],[35,34],[35,46],[36,34],[36,46],[37,31],[38,31],[39,38],[39,46],[41,31],[42,41],[42,46],[43,41],[43,46],[44,31],[45,31],[46,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,15],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,10],["Pop","A",35,4,11],["Push","A",36,4,12],["Put_node","A",37,4,13],["Shift","C",38,4,14],["Push","A",39,4,15],["Reduce","C",41,4,16],["Pop","A",42,4,17],["Pop","A",43,4,18],["Push","A",44,4,19],["Put_node","A",45,4,20],["Parsing_complete","A",46,4,21],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[36,34],[36,47],[37,31],[38,31],[39,38],[39,47],[41,31],[42,41],[42,47],[43,41],[43,47],[44,41],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38],[42,39],[43,42],[44,43],[45,41],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Token_list","R",25,3,0],["get_token","A",28,3,10],["get_token","A",29,3,15],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,10],["Pop","A",35,4,11],["Push","A",36,4,12],["Put_node","A",37,4,13],["Shift","C",38,4,14],["Push","A",39,4,15],["Report_syntax_error","A",41,4,16],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[36,34],[36,42],[37,31],[38,31],[39,38],[39,42],[41,31],[42,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[23,14],[28,23],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,9],["Pop","A",34,4,10],["Push","A",35,4,11],["Put_node","A",36,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Parsing_complete","A",41,4,17],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,30],[30,29],[31,30],[31,42],[33,30],[34,33],[34,42],[35,33],[35,42],[36,30],[37,30],[38,37],[38,42],[39,37],[39,42],[40,30],[41,30],[42,29]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,9],["Pop","A",34,4,10],["Push","A",35,4,11],["Put_node","A",36,4,12],["Report_syntax_error","A",37,4,13],["Stack","C",38,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,30],[30,29],[31,30],[31,38],[33,30],[34,33],[34,38],[35,33],[35,38],[36,30],[37,30],[38,29]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 6.2004e-05, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,9],["Pop","A",34,4,10],["Push","A",35,4,11],["Put_node","A",36,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Reduce","C",41,4,17],["Pop","A",42,4,18],["Push","A",43,4,19],["Put_node","A",44,4,20],["Parsing_complete","A",45,4,21],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,30],[30,29],[31,30],[31,46],[33,30],[34,33],[34,46],[35,33],[35,46],[36,30],[37,30],[38,37],[38,46],[39,37],[39,46],[40,30],[41,30],[42,41],[42,46],[43,41],[43,46],[44,30],[45,30],[46,29]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,9],["Pop","A",34,4,10],["Push","A",35,4,11],["Put_node","A",36,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Report_syntax_error","A",41,4,17],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,30],[30,29],[31,30],[31,42],[33,30],[34,33],[34,42],[35,33],[35,42],[36,30],[37,30],[38,37],[38,42],[39,37],[39,42],[40,30],[41,30],[42,29]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,10],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,9],["Push","A",35,4,10],["Reduce","C",37,4,11],["Pop","A",38,4,12],["Push","A",39,4,13],["Put_node","A",40,4,14],["Parsing_complete","A",41,4,15],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[37,31],[38,37],[38,42],[39,37],[39,42],[40,31],[41,31],[42,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,10],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,9],["Push","A",35,4,10],["Reduce","C",37,4,11],["Pop","A",38,4,12],["Pop","A",39,4,13],["Push","A",40,4,14],["Put_node","A",41,4,15],["Parsing_complete","A",42,4,16],["Stack","C",43,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,43],[34,31],[35,34],[35,43],[37,31],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,31],[42,31],[43,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.031746, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,10],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,9],["Push","A",35,4,10],["Report_syntax_error","A",37,4,11],["Stack","C",38,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,38],[34,31],[35,34],[35,38],[37,31],[38,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,10],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,9],["Push","A",35,4,10],["Reduce","C",37,4,11],["Pop","A",38,4,12],["Push","A",39,4,13],["Put_node","A",40,4,14],["Reduce","C",41,4,15],["Pop","A",42,4,16],["Push","A",43,4,17],["Put_node","A",44,4,18],["Parsing_complete","A",45,4,19],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,46],[34,31],[35,34],[35,46],[37,31],[38,37],[38,46],[39,37],[39,46],[40,31],[41,31],[42,41],[42,46],[43,41],[43,46],[44,31],[45,31],[46,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,10],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,9],["Push","A",35,4,10],["Reduce","C",37,4,11],["Pop","A",38,4,12],["Push","A",39,4,13],["Put_node","A",40,4,14],["Reduce","C",41,4,15],["Pop","A",42,4,16],["Pop","A",43,4,17],["Push","A",44,4,18],["Put_node","A",45,4,19],["Parsing_complete","A",46,4,20],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[37,31],[38,37],[38,47],[39,37],[39,47],[40,31],[41,31],[42,41],[42,47],[43,41],[43,47],[44,41],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,43],[45,41],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,10],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,9],["Push","A",35,4,10],["Reduce","C",37,4,11],["Pop","A",38,4,12],["Push","A",39,4,13],["Put_node","A",40,4,14],["Report_syntax_error","A",41,4,15],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[37,31],[38,37],[38,42],[39,37],[39,42],[40,31],[41,31],[42,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,10],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,9],["Push","A",35,4,10],["Reduce","C",37,4,11],["Pop","A",38,4,12],["Pop","A",39,4,13],["Push","A",40,4,14],["Put_node","A",41,4,15],["Reduce","C",42,4,16],["Pop","A",43,4,17],["Push","A",44,4,18],["Put_node","A",45,4,19],["Parsing_complete","A",46,4,20],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[37,31],[38,37],[38,47],[39,37],[39,47],[40,37],[40,47],[41,31],[42,31],[43,42],[43,47],[44,42],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41],[43,40],[44,43],[45,42],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,10],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,9],["Push","A",35,4,10],["Reduce","C",37,4,11],["Pop","A",38,4,12],["Pop","A",39,4,13],["Push","A",40,4,14],["Put_node","A",41,4,15],["Report_syntax_error","A",42,4,16],["Stack","C",43,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,43],[34,31],[35,34],[35,43],[37,31],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,31],[42,31],[43,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,14],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,9],["Pop","A",35,4,10],["Push","A",36,4,11],["Put_node","A",37,4,12],["Shift","C",38,4,13],["Push","A",39,4,14],["Reduce","C",41,4,15],["Pop","A",42,4,16],["Push","A",43,4,17],["Put_node","A",44,4,18],["Parsing_complete","A",45,4,19],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,46],[34,31],[35,34],[35,46],[36,34],[36,46],[37,31],[38,31],[39,38],[39,46],[41,31],[42,41],[42,46],[43,41],[43,46],[44,31],[45,31],[46,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,14],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,9],["Pop","A",35,4,10],["Push","A",36,4,11],["Put_node","A",37,4,12],["Shift","C",38,4,13],["Push","A",39,4,14],["Reduce","C",41,4,15],["Pop","A",42,4,16],["Pop","A",43,4,17],["Push","A",44,4,18],["Put_node","A",45,4,19],["Parsing_complete","A",46,4,20],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[36,34],[36,47],[37,31],[38,31],[39,38],[39,47],[41,31],[42,41],[42,47],[43,41],[43,47],[44,41],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38],[42,39],[43,42],[44,43],[45,41],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Token_list","R",25,3,0],["get_token","A",28,3,9],["get_token","A",29,3,14],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,9],["Pop","A",35,4,10],["Push","A",36,4,11],["Put_node","A",37,4,12],["Shift","C",38,4,13],["Push","A",39,4,14],["Report_syntax_error","A",41,4,15],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[14,25],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[36,34],[36,42],[37,31],[38,31],[39,38],[39,42],[41,31],[42,30]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[21,14],[22,4],[28,21],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Reduce","C",35,4,15],["Pop","A",36,4,16],["Push","A",37,4,17],["Put_node","A",38,4,18],["Parsing_complete","A",39,4,19],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,40],[31,28],[32,31],[32,40],[33,31],[33,40],[34,28],[35,28],[36,35],[36,40],[37,35],[37,40],[38,28],[39,28],[40,27]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.015873, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Report_syntax_error","A",35,4,15],["Stack","C",36,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,36],[31,28],[32,31],[32,36],[33,31],[33,36],[34,28],[35,28],[36,27]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Reduce","C",35,4,15],["Pop","A",36,4,16],["Push","A",37,4,17],["Put_node","A",38,4,18],["Reduce","C",39,4,19],["Pop","A",40,4,20],["Push","A",41,4,21],["Put_node","A",42,4,22],["Parsing_complete","A",43,4,23],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,44],[31,28],[32,31],[32,44],[33,31],[33,44],[34,28],[35,28],[36,35],[36,44],[37,35],[37,44],[38,28],[39,28],[40,39],[40,44],[41,39],[41,44],[42,28],[43,28],[44,27]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["Parser","R",27,4,0],["Shift_Reduce","C",28,4,1],["Push","A",29,4,2],["Reduce","C",31,4,11],["Pop","A",32,4,12],["Push","A",33,4,13],["Put_node","A",34,4,14],["Reduce","C",35,4,15],["Pop","A",36,4,16],["Push","A",37,4,17],["Put_node","A",38,4,18],["Report_syntax_error","A",39,4,19],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,28],[28,27],[29,28],[29,40],[31,28],[32,31],[32,40],[33,31],[33,40],[34,28],[35,28],[36,35],[36,40],[37,35],[37,40],[38,28],[39,28],[40,27]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,29],[31,26],[32,29],[33,32],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Parsing_complete","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[35,29],[36,35],[36,40],[37,35],[37,40],[38,29],[39,29],[40,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Pop","A",37,4,15],["Push","A",38,4,16],["Put_node","A",39,4,17],["Parsing_complete","A",40,4,18],["Stack","C",41,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,41],[32,29],[33,32],[33,41],[35,29],[36,35],[36,41],[37,35],[37,41],[38,35],[38,41],[39,29],[40,29],[41,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.0634921, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Report_syntax_error","A",35,4,13],["Stack","C",36,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,36],[32,29],[33,32],[33,36],[35,29],[36,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Push","A",41,4,19],["Put_node","A",42,4,20],["Parsing_complete","A",43,4,21],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,44],[32,29],[33,32],[33,44],[35,29],[36,35],[36,44],[37,35],[37,44],[38,29],[39,29],[40,39],[40,44],[41,39],[41,44],[42,29],[43,29],[44,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Pop","A",41,4,19],["Push","A",42,4,20],["Put_node","A",43,4,21],["Parsing_complete","A",44,4,22],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[35,29],[36,35],[36,45],[37,35],[37,45],[38,29],[39,29],[40,39],[40,45],[41,39],[41,45],[42,39],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,41],[43,39],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Push","A",37,4,15],["Put_node","A",38,4,16],["Report_syntax_error","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[35,29],[36,35],[36,40],[37,35],[37,40],[38,29],[39,29],[40,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Pop","A",37,4,15],["Push","A",38,4,16],["Put_node","A",39,4,17],["Reduce","C",40,4,18],["Pop","A",41,4,19],["Push","A",42,4,20],["Put_node","A",43,4,21],["Parsing_complete","A",44,4,22],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[35,29],[36,35],[36,45],[37,35],[37,45],[38,35],[38,45],[39,29],[40,29],[41,40],[41,45],[42,40],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39],[41,38],[42,41],[43,40],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,12],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Shift","C",32,4,11],["Push","A",33,4,12],["Reduce","C",35,4,13],["Pop","A",36,4,14],["Pop","A",37,4,15],["Push","A",38,4,16],["Put_node","A",39,4,17],["Report_syntax_error","A",40,4,18],["Stack","C",41,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,32],[29,28],[30,29],[30,41],[32,29],[33,32],[33,41],[35,29],[36,35],[36,41],[37,35],[37,41],[38,35],[38,41],[39,29],[40,29],[41,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,33],[32,26],[33,30],[35,32],[36,33],[37,36],[38,37],[39,35],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,16],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,11],["Pop","A",33,4,12],["Push","A",34,4,13],["Put_node","A",35,4,14],["Shift","C",36,4,15],["Push","A",37,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Push","A",41,4,19],["Put_node","A",42,4,20],["Parsing_complete","A",43,4,21],["Stack","C",44,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,44],[32,29],[33,32],[33,44],[34,32],[34,44],[35,29],[36,29],[37,36],[37,44],[39,29],[40,39],[40,44],[41,39],[41,44],[42,29],[43,29],[44,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36],[40,37],[41,40],[42,39],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,16],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,11],["Pop","A",33,4,12],["Push","A",34,4,13],["Put_node","A",35,4,14],["Shift","C",36,4,15],["Push","A",37,4,16],["Reduce","C",39,4,17],["Pop","A",40,4,18],["Pop","A",41,4,19],["Push","A",42,4,20],["Put_node","A",43,4,21],["Parsing_complete","A",44,4,22],["Stack","C",45,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,45],[32,29],[33,32],[33,45],[34,32],[34,45],[35,29],[36,29],[37,36],[37,45],[39,29],[40,39],[40,45],[41,39],[41,45],[42,39],[42,45],[43,29],[44,29],[45,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36],[40,37],[41,40],[42,41],[43,39],[44,43]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Token_list","R",23,3,0],["get_token","A",26,3,11],["get_token","A",27,3,16],["Parser","R",28,4,0],["Shift_Reduce","C",29,4,1],["Push","A",30,4,2],["Reduce","C",32,4,11],["Pop","A",33,4,12],["Push","A",34,4,13],["Put_node","A",35,4,14],["Shift","C",36,4,15],["Push","A",37,4,16],["Report_syntax_error","A",39,4,17],["Stack","C",40,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,23],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,23],[26,23],[26,29],[27,23],[27,36],[29,28],[30,29],[30,40],[32,29],[33,32],[33,40],[34,32],[34,40],[35,29],[36,29],[37,36],[37,40],[39,29],[40,28]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[26,21],[26,30],[27,26],[27,37],[32,26],[33,30],[34,33],[35,32],[36,35],[37,34],[39,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,11],["Pop","A",34,4,12],["Push","A",35,4,13],["Put_node","A",36,4,14],["Reduce","C",37,4,15],["Pop","A",38,4,16],["Push","A",39,4,17],["Put_node","A",40,4,18],["Parsing_complete","A",41,4,19],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,30],[30,29],[31,30],[31,42],[33,30],[34,33],[34,42],[35,33],[35,42],[36,30],[37,30],[38,37],[38,42],[39,37],[39,42],[40,30],[41,30],[42,29]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,11],["Pop","A",34,4,12],["Push","A",35,4,13],["Put_node","A",36,4,14],["Report_syntax_error","A",37,4,15],["Stack","C",38,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,30],[30,29],[31,30],[31,38],[33,30],[34,33],[34,38],[35,33],[35,38],[36,30],[37,30],[38,29]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 6.2004e-05, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,11],["Pop","A",34,4,12],["Push","A",35,4,13],["Put_node","A",36,4,14],["Reduce","C",37,4,15],["Pop","A",38,4,16],["Push","A",39,4,17],["Put_node","A",40,4,18],["Reduce","C",41,4,19],["Pop","A",42,4,20],["Push","A",43,4,21],["Put_node","A",44,4,22],["Parsing_complete","A",45,4,23],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,30],[30,29],[31,30],[31,46],[33,30],[34,33],[34,46],[35,33],[35,46],[36,30],[37,30],[38,37],[38,46],[39,37],[39,46],[40,30],[41,30],[42,41],[42,46],[43,41],[43,46],[44,30],[45,30],[46,29]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,11],["Pop","A",34,4,12],["Push","A",35,4,13],["Put_node","A",36,4,14],["Reduce","C",37,4,15],["Pop","A",38,4,16],["Push","A",39,4,17],["Put_node","A",40,4,18],["Report_syntax_error","A",41,4,19],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,30],[30,29],[31,30],[31,42],[33,30],[34,33],[34,42],[35,33],[35,42],[36,30],[37,30],[38,37],[38,42],[39,37],[39,42],[40,30],[41,30],[42,29]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Parsing_complete","A",41,4,17],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[37,31],[38,37],[38,42],[39,37],[39,42],[40,31],[41,31],[42,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Pop","A",39,4,15],["Push","A",40,4,16],["Put_node","A",41,4,17],["Parsing_complete","A",42,4,18],["Stack","C",43,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,43],[34,31],[35,34],[35,43],[37,31],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,31],[42,31],[43,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.031746, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Report_syntax_error","A",37,4,13],["Stack","C",38,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,38],[34,31],[35,34],[35,38],[37,31],[38,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Reduce","C",41,4,17],["Pop","A",42,4,18],["Push","A",43,4,19],["Put_node","A",44,4,20],["Parsing_complete","A",45,4,21],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,46],[34,31],[35,34],[35,46],[37,31],[38,37],[38,46],[39,37],[39,46],[40,31],[41,31],[42,41],[42,46],[43,41],[43,46],[44,31],[45,31],[46,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Reduce","C",41,4,17],["Pop","A",42,4,18],["Pop","A",43,4,19],["Push","A",44,4,20],["Put_node","A",45,4,21],["Parsing_complete","A",46,4,22],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[37,31],[38,37],[38,47],[39,37],[39,47],[40,31],[41,31],[42,41],[42,47],[43,41],[43,47],[44,41],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,43],[45,41],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Report_syntax_error","A",41,4,17],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[37,31],[38,37],[38,42],[39,37],[39,42],[40,31],[41,31],[42,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Pop","A",39,4,15],["Push","A",40,4,16],["Put_node","A",41,4,17],["Reduce","C",42,4,18],["Pop","A",43,4,19],["Push","A",44,4,20],["Put_node","A",45,4,21],["Parsing_complete","A",46,4,22],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[37,31],[38,37],[38,47],[39,37],[39,47],[40,37],[40,47],[41,31],[42,31],[43,42],[43,47],[44,42],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41],[43,40],[44,43],[45,42],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Pop","A",39,4,15],["Push","A",40,4,16],["Put_node","A",41,4,17],["Report_syntax_error","A",42,4,18],["Stack","C",43,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,43],[34,31],[35,34],[35,43],[37,31],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,31],[42,31],[43,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,16],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,11],["Pop","A",35,4,12],["Push","A",36,4,13],["Put_node","A",37,4,14],["Shift","C",38,4,15],["Push","A",39,4,16],["Reduce","C",41,4,17],["Pop","A",42,4,18],["Push","A",43,4,19],["Put_node","A",44,4,20],["Parsing_complete","A",45,4,21],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,46],[34,31],[35,34],[35,46],[36,34],[36,46],[37,31],[38,31],[39,38],[39,46],[41,31],[42,41],[42,46],[43,41],[43,46],[44,31],[45,31],[46,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,16],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,11],["Pop","A",35,4,12],["Push","A",36,4,13],["Put_node","A",37,4,14],["Shift","C",38,4,15],["Push","A",39,4,16],["Reduce","C",41,4,17],["Pop","A",42,4,18],["Pop","A",43,4,19],["Push","A",44,4,20],["Put_node","A",45,4,21],["Parsing_complete","A",46,4,22],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[36,34],[36,47],[37,31],[38,31],[39,38],[39,47],[41,31],[42,41],[42,47],[43,41],[43,47],[44,41],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38],[42,39],[43,42],[44,43],[45,41],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,16],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,11],["Pop","A",35,4,12],["Push","A",36,4,13],["Put_node","A",37,4,14],["Shift","C",38,4,15],["Push","A",39,4,16],["Report_syntax_error","A",41,4,17],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[23,25],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[36,34],[36,42],[37,31],[38,31],[39,38],[39,42],[41,31],[42,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[23,12],[28,23],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,11],["Pop","A",34,4,12],["Push","A",35,4,13],["Put_node","A",36,4,14],["Reduce","C",37,4,15],["Pop","A",38,4,16],["Push","A",39,4,17],["Put_node","A",40,4,18],["Parsing_complete","A",41,4,19],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,30],[30,29],[31,30],[31,42],[33,30],[34,33],[34,42],[35,33],[35,42],[36,30],[37,30],[38,37],[38,42],[39,37],[39,42],[40,30],[41,30],[42,29]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00793651, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,11],["Pop","A",34,4,12],["Push","A",35,4,13],["Put_node","A",36,4,14],["Report_syntax_error","A",37,4,15],["Stack","C",38,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,30],[30,29],[31,30],[31,38],[33,30],[34,33],[34,38],[35,33],[35,38],[36,30],[37,30],[38,29]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 6.2004e-05, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,11],["Pop","A",34,4,12],["Push","A",35,4,13],["Put_node","A",36,4,14],["Reduce","C",37,4,15],["Pop","A",38,4,16],["Push","A",39,4,17],["Put_node","A",40,4,18],["Reduce","C",41,4,19],["Pop","A",42,4,20],["Push","A",43,4,21],["Put_node","A",44,4,22],["Parsing_complete","A",45,4,23],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,30],[30,29],[31,30],[31,46],[33,30],[34,33],[34,46],[35,33],[35,46],[36,30],[37,30],[38,37],[38,46],[39,37],[39,46],[40,30],[41,30],[42,41],[42,46],[43,41],[43,46],[44,30],[45,30],[46,29]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000496032, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["Parser","R",29,4,0],["Shift_Reduce","C",30,4,1],["Push","A",31,4,2],["Reduce","C",33,4,11],["Pop","A",34,4,12],["Push","A",35,4,13],["Put_node","A",36,4,14],["Reduce","C",37,4,15],["Pop","A",38,4,16],["Push","A",39,4,17],["Put_node","A",40,4,18],["Report_syntax_error","A",41,4,19],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,30],[30,29],[31,30],[31,42],[33,30],[34,33],[34,42],[35,33],[35,42],[36,30],[37,30],[38,37],[38,42],[39,37],[39,42],[40,30],[41,30],[42,29]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,31],[33,28],[34,31],[35,34],[36,33],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00396825, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Parsing_complete","A",41,4,17],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[37,31],[38,37],[38,42],[39,37],[39,42],[40,31],[41,31],[42,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Pop","A",39,4,15],["Push","A",40,4,16],["Put_node","A",41,4,17],["Parsing_complete","A",42,4,18],["Stack","C",43,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,43],[34,31],[35,34],[35,43],[37,31],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,31],[42,31],[43,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.031746, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Report_syntax_error","A",37,4,13],["Stack","C",38,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,38],[34,31],[35,34],[35,38],[37,31],[38,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Reduce","C",41,4,17],["Pop","A",42,4,18],["Push","A",43,4,19],["Put_node","A",44,4,20],["Parsing_complete","A",45,4,21],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,46],[34,31],[35,34],[35,46],[37,31],[38,37],[38,46],[39,37],[39,46],[40,31],[41,31],[42,41],[42,46],[43,41],[43,46],[44,31],[45,31],[46,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Reduce","C",41,4,17],["Pop","A",42,4,18],["Pop","A",43,4,19],["Push","A",44,4,20],["Put_node","A",45,4,21],["Parsing_complete","A",46,4,22],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[37,31],[38,37],[38,47],[39,37],[39,47],[40,31],[41,31],[42,41],[42,47],[43,41],[43,47],[44,41],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40],[42,39],[43,42],[44,43],[45,41],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Push","A",39,4,15],["Put_node","A",40,4,16],["Report_syntax_error","A",41,4,17],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[37,31],[38,37],[38,42],[39,37],[39,42],[40,31],[41,31],[42,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Pop","A",39,4,15],["Push","A",40,4,16],["Put_node","A",41,4,17],["Reduce","C",42,4,18],["Pop","A",43,4,19],["Push","A",44,4,20],["Put_node","A",45,4,21],["Parsing_complete","A",46,4,22],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[37,31],[38,37],[38,47],[39,37],[39,47],[40,37],[40,47],[41,31],[42,31],[43,42],[43,47],[44,42],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41],[43,40],[44,43],[45,42],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.000992064, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,12],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Shift","C",34,4,11],["Push","A",35,4,12],["Reduce","C",37,4,13],["Pop","A",38,4,14],["Pop","A",39,4,15],["Push","A",40,4,16],["Put_node","A",41,4,17],["Report_syntax_error","A",42,4,18],["Stack","C",43,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,34],[31,30],[32,31],[32,43],[34,31],[35,34],[35,43],[37,31],[38,37],[38,43],[39,37],[39,43],[40,37],[40,43],[41,31],[42,31],[43,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,35],[34,28],[35,32],[37,34],[38,35],[39,38],[40,39],[41,37],[42,41]] +,{"VIEWS":[ ]} +], + +["U", 0.000248016, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,16],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,11],["Pop","A",35,4,12],["Push","A",36,4,13],["Put_node","A",37,4,14],["Shift","C",38,4,15],["Push","A",39,4,16],["Reduce","C",41,4,17],["Pop","A",42,4,18],["Push","A",43,4,19],["Put_node","A",44,4,20],["Parsing_complete","A",45,4,21],["Stack","C",46,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,46],[34,31],[35,34],[35,46],[36,34],[36,46],[37,31],[38,31],[39,38],[39,46],[41,31],[42,41],[42,46],[43,41],[43,46],[44,31],[45,31],[46,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38],[42,39],[43,42],[44,41],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000124008, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,16],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,11],["Pop","A",35,4,12],["Push","A",36,4,13],["Put_node","A",37,4,14],["Shift","C",38,4,15],["Push","A",39,4,16],["Reduce","C",41,4,17],["Pop","A",42,4,18],["Pop","A",43,4,19],["Push","A",44,4,20],["Put_node","A",45,4,21],["Parsing_complete","A",46,4,22],["Stack","C",47,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,47],[34,31],[35,34],[35,47],[36,34],[36,47],[37,31],[38,31],[39,38],[39,47],[41,31],[42,41],[42,47],[43,41],[43,47],[44,41],[44,47],[45,31],[46,31],[47,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38],[42,39],[43,42],[44,43],[45,41],[46,45]] +,{"VIEWS":[ ]} +], + +["U", 0.00198413, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Token_list","R",25,3,0],["get_token","A",28,3,11],["get_token","A",29,3,16],["Parser","R",30,4,0],["Shift_Reduce","C",31,4,1],["Push","A",32,4,2],["Reduce","C",34,4,11],["Pop","A",35,4,12],["Push","A",36,4,13],["Put_node","A",37,4,14],["Shift","C",38,4,15],["Push","A",39,4,16],["Report_syntax_error","A",41,4,17],["Stack","C",42,5,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[12,25],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[21,25],[22,16],[23,22],[28,25],[28,31],[29,25],[29,38],[31,30],[32,31],[32,42],[34,31],[35,34],[35,42],[36,34],[36,42],[37,31],[38,31],[39,38],[39,42],[41,31],[42,30]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[21,12],[22,4],[28,21],[28,32],[29,28],[29,39],[34,28],[35,32],[36,35],[37,34],[38,37],[39,36],[41,38]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example22_compiler2.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example22_compiler2.json new file mode 100644 index 0000000..7f92cc6 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example22_compiler2.json @@ -0,0 +1,891 @@ +{"traces":[ + +["U", 0.00935673, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Parser","R",12,2,0],["Shift_Reduce","C",13,2,1],["Push","A",14,2,2],["get_token","A",15,2,5],["Reduce","C",16,2,6],["Pop","A",17,2,7],["Push","A",18,2,8],["Put_node","A",19,2,9],["Reduce","C",20,2,10],["Pop","A",21,2,11],["Push","A",22,2,12],["Put_node","A",23,2,13],["Parsing_complete","A",24,2,14],["Stack","C",25,3,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[13,12],[14,13],[14,25],[15,13],[16,13],[17,16],[17,25],[18,16],[18,25],[19,13],[20,13],[21,20],[21,25],[22,20],[22,25],[23,13],[24,13],[25,12]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[15,14],[15,10],[16,15],[17,14],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23]] +,{"VIEWS":[ ]} +], + +["U", 0.0748538, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Parser","R",12,2,0],["Shift_Reduce","C",13,2,1],["Push","A",14,2,2],["get_token","A",15,2,5],["Reduce","C",16,2,6],["Pop","A",17,2,7],["Push","A",18,2,8],["Put_node","A",19,2,9],["Report_syntax_error","A",20,2,10],["Stack","C",21,3,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[13,12],[14,13],[14,21],[15,13],[16,13],[17,16],[17,21],[18,16],[18,21],[19,13],[20,13],[21,12]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[15,14],[15,10],[16,15],[17,14],[18,17],[19,16],[20,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Parser","R",12,2,0],["Shift_Reduce","C",13,2,1],["Push","A",14,2,2],["get_token","A",15,2,5],["Reduce","C",16,2,6],["Pop","A",17,2,7],["Push","A",18,2,8],["Put_node","A",19,2,9],["Reduce","C",20,2,10],["Pop","A",21,2,11],["Push","A",22,2,12],["Put_node","A",23,2,13],["Reduce","C",24,2,14],["Pop","A",25,2,15],["Push","A",26,2,16],["Put_node","A",27,2,17],["Parsing_complete","A",28,2,18],["Stack","C",29,3,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[13,12],[14,13],[14,29],[15,13],[16,13],[17,16],[17,29],[18,16],[18,29],[19,13],[20,13],[21,20],[21,29],[22,20],[22,29],[23,13],[24,13],[25,24],[25,29],[26,24],[26,29],[27,13],[28,13],[29,12]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[15,14],[15,10],[16,15],[17,14],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23],[25,22],[26,25],[27,24],[28,27]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["Parser","R",12,2,0],["Shift_Reduce","C",13,2,1],["Push","A",14,2,2],["get_token","A",15,2,5],["Reduce","C",16,2,6],["Pop","A",17,2,7],["Push","A",18,2,8],["Put_node","A",19,2,9],["Reduce","C",20,2,10],["Pop","A",21,2,11],["Push","A",22,2,12],["Put_node","A",23,2,13],["Report_syntax_error","A",24,2,14],["Stack","C",25,3,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[13,12],[14,13],[14,25],[15,13],[16,13],[17,16],[17,25],[18,16],[18,25],[19,13],[20,13],[21,20],[21,25],[22,20],[22,25],[23,13],[24,13],[25,12]], +[[3,2],[3,7],[7,2],[9,8],[10,9],[15,14],[15,10],[16,15],[17,14],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["RegExpr_match","C",9,2,3],["match_string","A",10,2,4],["largest_successful_match","A",11,2,5],["put_token","A",12,2,6],["Parser","R",14,3,0],["Shift_Reduce","C",15,3,1],["Push","A",16,3,2],["get_token","A",17,3,6],["Reduce","C",18,3,7],["Pop","A",19,3,8],["Push","A",20,3,9],["Put_node","A",21,3,10],["Reduce","C",22,3,11],["Pop","A",23,3,12],["Push","A",24,3,13],["Put_node","A",25,3,14],["Parsing_complete","A",26,3,15],["Stack","C",27,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,5],[10,9],[11,9],[12,9],[15,14],[16,15],[16,27],[17,15],[18,15],[19,18],[19,27],[20,18],[20,27],[21,15],[22,15],[23,22],[23,27],[24,22],[24,27],[25,15],[26,15],[27,14]], +[[3,2],[3,7],[3,9],[7,2],[9,2],[11,10],[12,11],[17,16],[17,12],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23],[25,22],[26,25]] +,{"VIEWS":[ ]} +], + +["U", 0.0374269, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["RegExpr_match","C",9,2,3],["match_string","A",10,2,4],["largest_successful_match","A",11,2,5],["put_token","A",12,2,6],["Parser","R",14,3,0],["Shift_Reduce","C",15,3,1],["Push","A",16,3,2],["get_token","A",17,3,6],["Reduce","C",18,3,7],["Pop","A",19,3,8],["Push","A",20,3,9],["Put_node","A",21,3,10],["Report_syntax_error","A",22,3,11],["Stack","C",23,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,5],[10,9],[11,9],[12,9],[15,14],[16,15],[16,23],[17,15],[18,15],[19,18],[19,23],[20,18],[20,23],[21,15],[22,15],[23,14]], +[[3,2],[3,7],[3,9],[7,2],[9,2],[11,10],[12,11],[17,16],[17,12],[18,17],[19,16],[20,19],[21,18],[22,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["RegExpr_match","C",9,2,3],["match_string","A",10,2,4],["largest_successful_match","A",11,2,5],["put_token","A",12,2,6],["Parser","R",14,3,0],["Shift_Reduce","C",15,3,1],["Push","A",16,3,2],["get_token","A",17,3,6],["Reduce","C",18,3,7],["Pop","A",19,3,8],["Push","A",20,3,9],["Put_node","A",21,3,10],["Reduce","C",22,3,11],["Pop","A",23,3,12],["Push","A",24,3,13],["Put_node","A",25,3,14],["Reduce","C",26,3,15],["Pop","A",27,3,16],["Push","A",28,3,17],["Put_node","A",29,3,18],["Parsing_complete","A",30,3,19],["Stack","C",31,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,5],[10,9],[11,9],[12,9],[15,14],[16,15],[16,31],[17,15],[18,15],[19,18],[19,31],[20,18],[20,31],[21,15],[22,15],[23,22],[23,31],[24,22],[24,31],[25,15],[26,15],[27,26],[27,31],[28,26],[28,31],[29,15],[30,15],[31,14]], +[[3,2],[3,7],[3,9],[7,2],[9,2],[11,10],[12,11],[17,16],[17,12],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23],[25,22],[26,25],[27,24],[28,27],[29,26],[30,29]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["RegExpr_match","C",9,2,3],["match_string","A",10,2,4],["largest_successful_match","A",11,2,5],["put_token","A",12,2,6],["Parser","R",14,3,0],["Shift_Reduce","C",15,3,1],["Push","A",16,3,2],["get_token","A",17,3,6],["Reduce","C",18,3,7],["Pop","A",19,3,8],["Push","A",20,3,9],["Put_node","A",21,3,10],["Reduce","C",22,3,11],["Pop","A",23,3,12],["Push","A",24,3,13],["Put_node","A",25,3,14],["Report_syntax_error","A",26,3,15],["Stack","C",27,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,5],[10,9],[11,9],[12,9],[15,14],[16,15],[16,27],[17,15],[18,15],[19,18],[19,27],[20,18],[20,27],[21,15],[22,15],[23,22],[23,27],[24,22],[24,27],[25,15],[26,15],[27,14]], +[[3,2],[3,7],[3,9],[7,2],[9,2],[11,10],[12,11],[17,16],[17,12],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23],[25,22],[26,25]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["Parser","R",14,3,0],["Shift_Reduce","C",15,3,1],["Push","A",16,3,2],["get_token","A",17,3,6],["Reduce","C",18,3,7],["Pop","A",19,3,8],["Push","A",20,3,9],["Put_node","A",21,3,10],["Reduce","C",22,3,11],["Pop","A",23,3,12],["Push","A",24,3,13],["Put_node","A",25,3,14],["Parsing_complete","A",26,3,15],["Stack","C",27,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[11,5],[12,11],[15,14],[16,15],[16,27],[17,15],[18,15],[19,18],[19,27],[20,18],[20,27],[21,15],[22,15],[23,22],[23,27],[24,22],[24,27],[25,15],[26,15],[27,14]], +[[3,2],[3,7],[3,11],[7,2],[9,8],[10,9],[11,2],[17,16],[17,10],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23],[25,22],[26,25]] +,{"VIEWS":[ ]} +], + +["U", 0.0374269, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["Parser","R",14,3,0],["Shift_Reduce","C",15,3,1],["Push","A",16,3,2],["get_token","A",17,3,6],["Reduce","C",18,3,7],["Pop","A",19,3,8],["Push","A",20,3,9],["Put_node","A",21,3,10],["Report_syntax_error","A",22,3,11],["Stack","C",23,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[11,5],[12,11],[15,14],[16,15],[16,23],[17,15],[18,15],[19,18],[19,23],[20,18],[20,23],[21,15],[22,15],[23,14]], +[[3,2],[3,7],[3,11],[7,2],[9,8],[10,9],[11,2],[17,16],[17,10],[18,17],[19,16],[20,19],[21,18],[22,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["Parser","R",14,3,0],["Shift_Reduce","C",15,3,1],["Push","A",16,3,2],["get_token","A",17,3,6],["Reduce","C",18,3,7],["Pop","A",19,3,8],["Push","A",20,3,9],["Put_node","A",21,3,10],["Reduce","C",22,3,11],["Pop","A",23,3,12],["Push","A",24,3,13],["Put_node","A",25,3,14],["Reduce","C",26,3,15],["Pop","A",27,3,16],["Push","A",28,3,17],["Put_node","A",29,3,18],["Parsing_complete","A",30,3,19],["Stack","C",31,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[11,5],[12,11],[15,14],[16,15],[16,31],[17,15],[18,15],[19,18],[19,31],[20,18],[20,31],[21,15],[22,15],[23,22],[23,31],[24,22],[24,31],[25,15],[26,15],[27,26],[27,31],[28,26],[28,31],[29,15],[30,15],[31,14]], +[[3,2],[3,7],[3,11],[7,2],[9,8],[10,9],[11,2],[17,16],[17,10],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23],[25,22],[26,25],[27,24],[28,27],[29,26],[30,29]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["Lexer","R",4,1,0],["Token_recognition","C",5,1,1],["RegExpr_match","C",7,1,2],["match_string","A",8,1,3],["largest_successful_match","A",9,1,4],["put_token","A",10,1,5],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["Parser","R",14,3,0],["Shift_Reduce","C",15,3,1],["Push","A",16,3,2],["get_token","A",17,3,6],["Reduce","C",18,3,7],["Pop","A",19,3,8],["Push","A",20,3,9],["Put_node","A",21,3,10],["Reduce","C",22,3,11],["Pop","A",23,3,12],["Push","A",24,3,13],["Put_node","A",25,3,14],["Report_syntax_error","A",26,3,15],["Stack","C",27,4,1] ], + +[[2,1],[2,5],[3,1],[3,5],[5,4],[7,5],[8,7],[9,7],[10,7],[11,5],[12,11],[15,14],[16,15],[16,27],[17,15],[18,15],[19,18],[19,27],[20,18],[20,27],[21,15],[22,15],[23,22],[23,27],[24,22],[24,27],[25,15],[26,15],[27,14]], +[[3,2],[3,7],[3,11],[7,2],[9,8],[10,9],[11,2],[17,16],[17,10],[18,17],[19,16],[20,19],[21,18],[22,21],[23,20],[24,23],[25,22],[26,25]] +,{"VIEWS":[ ]} +], + +["U", 0.0187135, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Shift","C",25,2,6],["Push","A",26,2,7],["get_token","A",27,2,10],["Reduce","C",28,2,8],["Pop","A",29,2,9],["Push","A",30,2,11],["Put_node","A",31,2,12],["Parsing_complete","A",32,2,13],["Stack","C",33,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,33],[24,22],[25,22],[26,25],[26,33],[27,25],[28,22],[29,28],[29,33],[30,28],[30,33],[31,22],[32,22],[33,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[27,19],[28,25],[29,26],[30,29],[31,28],[32,31]] +,{"VIEWS":[ ]} +], + +["U", 0.00935673, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Shift","C",25,2,6],["Push","A",26,2,7],["get_token","A",27,2,10],["Reduce","C",28,2,8],["Pop","A",29,2,9],["Pop","A",30,2,11],["Push","A",31,2,12],["Put_node","A",32,2,13],["Parsing_complete","A",33,2,14],["Stack","C",34,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,34],[24,22],[25,22],[26,25],[26,34],[27,25],[28,22],[29,28],[29,34],[30,28],[30,34],[31,28],[31,34],[32,22],[33,22],[34,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[27,19],[28,25],[29,26],[30,29],[31,30],[32,28],[33,32]] +,{"VIEWS":[ ]} +], + +["U", 0.149708, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Shift","C",25,2,6],["Push","A",26,2,7],["get_token","A",27,2,10],["Report_syntax_error","A",28,2,8],["Stack","C",29,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,29],[24,22],[25,22],[26,25],[26,29],[27,25],[28,22],[29,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[27,19],[28,25]] +,{"VIEWS":[ ]} +], + +["U", 0.00116959, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Shift","C",25,2,6],["Push","A",26,2,7],["get_token","A",27,2,10],["Reduce","C",28,2,8],["Pop","A",29,2,9],["Push","A",30,2,11],["Put_node","A",31,2,12],["Reduce","C",32,2,13],["Pop","A",33,2,14],["Push","A",34,2,15],["Put_node","A",35,2,16],["Parsing_complete","A",36,2,17],["Stack","C",37,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,37],[24,22],[25,22],[26,25],[26,37],[27,25],[28,22],[29,28],[29,37],[30,28],[30,37],[31,22],[32,22],[33,32],[33,37],[34,32],[34,37],[35,22],[36,22],[37,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[27,19],[28,25],[29,26],[30,29],[31,28],[32,31],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Shift","C",25,2,6],["Push","A",26,2,7],["get_token","A",27,2,10],["Reduce","C",28,2,8],["Pop","A",29,2,9],["Push","A",30,2,11],["Put_node","A",31,2,12],["Reduce","C",32,2,13],["Pop","A",33,2,14],["Pop","A",34,2,15],["Push","A",35,2,16],["Put_node","A",36,2,17],["Parsing_complete","A",37,2,18],["Stack","C",38,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,38],[24,22],[25,22],[26,25],[26,38],[27,25],[28,22],[29,28],[29,38],[30,28],[30,38],[31,22],[32,22],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,22],[37,22],[38,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[27,19],[28,25],[29,26],[30,29],[31,28],[32,31],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.00935673, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Shift","C",25,2,6],["Push","A",26,2,7],["get_token","A",27,2,10],["Reduce","C",28,2,8],["Pop","A",29,2,9],["Push","A",30,2,11],["Put_node","A",31,2,12],["Report_syntax_error","A",32,2,13],["Stack","C",33,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,33],[24,22],[25,22],[26,25],[26,33],[27,25],[28,22],[29,28],[29,33],[30,28],[30,33],[31,22],[32,22],[33,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[27,19],[28,25],[29,26],[30,29],[31,28],[32,31]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Shift","C",25,2,6],["Push","A",26,2,7],["get_token","A",27,2,10],["Reduce","C",28,2,8],["Pop","A",29,2,9],["Pop","A",30,2,11],["Push","A",31,2,12],["Put_node","A",32,2,13],["Reduce","C",33,2,14],["Pop","A",34,2,15],["Push","A",35,2,16],["Put_node","A",36,2,17],["Parsing_complete","A",37,2,18],["Stack","C",38,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,38],[24,22],[25,22],[26,25],[26,38],[27,25],[28,22],[29,28],[29,38],[30,28],[30,38],[31,28],[31,38],[32,22],[33,22],[34,33],[34,38],[35,33],[35,38],[36,22],[37,22],[38,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[27,19],[28,25],[29,26],[30,29],[31,30],[32,28],[33,32],[34,31],[35,34],[36,33],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Shift","C",25,2,6],["Push","A",26,2,7],["get_token","A",27,2,10],["Reduce","C",28,2,8],["Pop","A",29,2,9],["Pop","A",30,2,11],["Push","A",31,2,12],["Put_node","A",32,2,13],["Report_syntax_error","A",33,2,14],["Stack","C",34,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,34],[24,22],[25,22],[26,25],[26,34],[27,25],[28,22],[29,28],[29,34],[30,28],[30,34],[31,28],[31,34],[32,22],[33,22],[34,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[27,19],[28,25],[29,26],[30,29],[31,30],[32,28],[33,32]] +,{"VIEWS":[ ]} +], + +["U", 0.00116959, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Reduce","C",25,2,6],["Pop","A",26,2,7],["Push","A",27,2,8],["Put_node","A",28,2,9],["Shift","C",29,2,10],["Push","A",30,2,11],["get_token","A",31,2,12],["Reduce","C",32,2,13],["Pop","A",33,2,14],["Push","A",34,2,15],["Put_node","A",35,2,16],["Parsing_complete","A",36,2,17],["Stack","C",37,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,37],[24,22],[25,22],[26,25],[26,37],[27,25],[27,37],[28,22],[29,22],[30,29],[30,37],[31,29],[32,22],[33,32],[33,37],[34,32],[34,37],[35,22],[36,22],[37,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[28,25],[29,28],[30,27],[31,30],[31,19],[32,29],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Reduce","C",25,2,6],["Pop","A",26,2,7],["Push","A",27,2,8],["Put_node","A",28,2,9],["Shift","C",29,2,10],["Push","A",30,2,11],["get_token","A",31,2,12],["Reduce","C",32,2,13],["Pop","A",33,2,14],["Pop","A",34,2,15],["Push","A",35,2,16],["Put_node","A",36,2,17],["Parsing_complete","A",37,2,18],["Stack","C",38,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,38],[24,22],[25,22],[26,25],[26,38],[27,25],[27,38],[28,22],[29,22],[30,29],[30,38],[31,29],[32,22],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,22],[37,22],[38,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[28,25],[29,28],[30,27],[31,30],[31,19],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.00935673, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["Parser","R",21,2,0],["Shift_Reduce","C",22,2,1],["Push","A",23,2,2],["get_token","A",24,2,5],["Reduce","C",25,2,6],["Pop","A",26,2,7],["Push","A",27,2,8],["Put_node","A",28,2,9],["Shift","C",29,2,10],["Push","A",30,2,11],["get_token","A",31,2,12],["Report_syntax_error","A",32,2,13],["Stack","C",33,3,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[22,21],[23,22],[23,33],[24,22],[25,22],[26,25],[26,33],[27,25],[27,33],[28,22],[29,22],[30,29],[30,33],[31,29],[32,22],[33,21]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[24,23],[24,12],[25,24],[26,23],[27,26],[28,25],[29,28],[30,27],[31,30],[31,19],[32,29]] +,{"VIEWS":[ ]} +], + +["U", 0.00935673, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,10],["Pop","A",31,3,12],["Push","A",32,3,13],["Put_node","A",33,3,14],["Parsing_complete","A",34,3,15],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[30,24],[31,30],[31,35],[32,30],[32,35],[33,24],[34,24],[35,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,10],["Pop","A",31,3,12],["Pop","A",32,3,13],["Push","A",33,3,14],["Put_node","A",34,3,15],["Parsing_complete","A",35,3,16],["Stack","C",36,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,36],[26,24],[27,24],[28,27],[28,36],[29,27],[30,24],[31,30],[31,36],[32,30],[32,36],[33,30],[33,36],[34,24],[35,24],[36,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.0748538, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Report_syntax_error","A",30,3,10],["Stack","C",31,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,31],[26,24],[27,24],[28,27],[28,31],[29,27],[30,24],[31,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,10],["Pop","A",31,3,12],["Push","A",32,3,13],["Put_node","A",33,3,14],["Reduce","C",34,3,15],["Pop","A",35,3,16],["Push","A",36,3,17],["Put_node","A",37,3,18],["Parsing_complete","A",38,3,19],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,39],[26,24],[27,24],[28,27],[28,39],[29,27],[30,24],[31,30],[31,39],[32,30],[32,39],[33,24],[34,24],[35,34],[35,39],[36,34],[36,39],[37,24],[38,24],[39,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,10],["Pop","A",31,3,12],["Push","A",32,3,13],["Put_node","A",33,3,14],["Reduce","C",34,3,15],["Pop","A",35,3,16],["Pop","A",36,3,17],["Push","A",37,3,18],["Put_node","A",38,3,19],["Parsing_complete","A",39,3,20],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[30,24],[31,30],[31,40],[32,30],[32,40],[33,24],[34,24],[35,34],[35,40],[36,34],[36,40],[37,34],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33],[35,32],[36,35],[37,36],[38,34],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,10],["Pop","A",31,3,12],["Push","A",32,3,13],["Put_node","A",33,3,14],["Report_syntax_error","A",34,3,15],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[30,24],[31,30],[31,35],[32,30],[32,35],[33,24],[34,24],[35,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,10],["Pop","A",31,3,12],["Pop","A",32,3,13],["Push","A",33,3,14],["Put_node","A",34,3,15],["Reduce","C",35,3,16],["Pop","A",36,3,17],["Push","A",37,3,18],["Put_node","A",38,3,19],["Parsing_complete","A",39,3,20],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[30,24],[31,30],[31,40],[32,30],[32,40],[33,30],[33,40],[34,24],[35,24],[36,35],[36,40],[37,35],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,10],["Pop","A",31,3,12],["Pop","A",32,3,13],["Push","A",33,3,14],["Put_node","A",34,3,15],["Report_syntax_error","A",35,3,16],["Stack","C",36,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,36],[26,24],[27,24],[28,27],[28,36],[29,27],[30,24],[31,30],[31,36],[32,30],[32,36],[33,30],[33,36],[34,24],[35,24],[36,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Push","A",36,3,16],["Put_node","A",37,3,17],["Parsing_complete","A",38,3,18],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,39],[26,24],[27,24],[28,27],[28,39],[29,27],[29,39],[30,24],[31,24],[32,31],[32,39],[33,31],[34,24],[35,34],[35,39],[36,34],[36,39],[37,24],[38,24],[39,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,21],[34,31],[35,32],[36,35],[37,34],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[29,40],[30,24],[31,24],[32,31],[32,40],[33,31],[34,24],[35,34],[35,40],[36,34],[36,40],[37,34],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,21],[34,31],[35,32],[36,35],[37,36],[38,34],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["RegExpr_match","C",18,2,8],["match_string","A",19,2,9],["largest_successful_match","A",20,2,10],["put_token","A",21,2,11],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Report_syntax_error","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,14],[19,18],[20,18],[21,18],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[29,35],[30,24],[31,24],[32,31],[32,35],[33,31],[34,24],[35,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,18],[9,2],[11,10],[12,11],[14,7],[16,4],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,21],[34,31]] +,{"VIEWS":[ ]} +], + +["U", 0.00935673, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Push","A",32,3,12],["Put_node","A",33,3,13],["Parsing_complete","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[30,24],[31,30],[31,35],[32,30],[32,35],[33,24],[34,24],[35,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[29,19],[30,27],[31,28],[32,31],[33,30],[34,33]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Pop","A",32,3,12],["Push","A",33,3,13],["Put_node","A",34,3,14],["Parsing_complete","A",35,3,15],["Stack","C",36,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,36],[26,24],[27,24],[28,27],[28,36],[29,27],[30,24],[31,30],[31,36],[32,30],[32,36],[33,30],[33,36],[34,24],[35,24],[36,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[29,19],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.0748538, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Report_syntax_error","A",30,3,9],["Stack","C",31,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,31],[26,24],[27,24],[28,27],[28,31],[29,27],[30,24],[31,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[29,19],[30,27]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Push","A",32,3,12],["Put_node","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Push","A",36,3,16],["Put_node","A",37,3,17],["Parsing_complete","A",38,3,18],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,39],[26,24],[27,24],[28,27],[28,39],[29,27],[30,24],[31,30],[31,39],[32,30],[32,39],[33,24],[34,24],[35,34],[35,39],[36,34],[36,39],[37,24],[38,24],[39,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[29,19],[30,27],[31,28],[32,31],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Push","A",32,3,12],["Put_node","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[30,24],[31,30],[31,40],[32,30],[32,40],[33,24],[34,24],[35,34],[35,40],[36,34],[36,40],[37,34],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[29,19],[30,27],[31,28],[32,31],[33,30],[34,33],[35,32],[36,35],[37,36],[38,34],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Push","A",32,3,12],["Put_node","A",33,3,13],["Report_syntax_error","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[30,24],[31,30],[31,35],[32,30],[32,35],[33,24],[34,24],[35,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[29,19],[30,27],[31,28],[32,31],[33,30],[34,33]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Pop","A",32,3,12],["Push","A",33,3,13],["Put_node","A",34,3,14],["Reduce","C",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[30,24],[31,30],[31,40],[32,30],[32,40],[33,30],[33,40],[34,24],[35,24],[36,35],[36,40],[37,35],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[29,19],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Pop","A",32,3,12],["Push","A",33,3,13],["Put_node","A",34,3,14],["Report_syntax_error","A",35,3,15],["Stack","C",36,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,36],[26,24],[27,24],[28,27],[28,36],[29,27],[30,24],[31,30],[31,36],[32,30],[32,36],[33,30],[33,36],[34,24],[35,24],[36,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[29,19],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Push","A",36,3,16],["Put_node","A",37,3,17],["Parsing_complete","A",38,3,18],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,39],[26,24],[27,24],[28,27],[28,39],[29,27],[29,39],[30,24],[31,24],[32,31],[32,39],[33,31],[34,24],[35,34],[35,39],[36,34],[36,39],[37,24],[38,24],[39,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,19],[34,31],[35,32],[36,35],[37,34],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[29,40],[30,24],[31,24],[32,31],[32,40],[33,31],[34,24],[35,34],[35,40],[36,34],[36,40],[37,34],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,19],[34,31],[35,32],[36,35],[37,36],[38,34],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,3],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",14,1,6],["RegExpr_match","C",16,1,7],["match_string","A",17,1,8],["largest_successful_match","A",18,1,9],["put_token","A",19,1,10],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Report_syntax_error","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,14],[5,1],[5,14],[7,6],[9,7],[10,9],[11,9],[12,9],[14,6],[16,14],[17,16],[18,16],[19,16],[20,14],[21,20],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[29,35],[30,24],[31,24],[32,31],[32,35],[33,31],[34,24],[35,23]], +[[3,2],[3,9],[4,3],[5,4],[5,16],[5,20],[9,2],[11,10],[12,11],[14,7],[16,4],[18,17],[19,18],[20,4],[26,25],[26,12],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,19],[34,31]] +,{"VIEWS":[ ]} +], + +["U", 0.00935673, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,9],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Push","A",32,3,12],["Put_node","A",33,3,13],["Parsing_complete","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[30,24],[31,30],[31,35],[32,30],[32,35],[33,24],[34,24],[35,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,9],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Pop","A",32,3,12],["Push","A",33,3,13],["Put_node","A",34,3,14],["Parsing_complete","A",35,3,15],["Stack","C",36,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,36],[26,24],[27,24],[28,27],[28,36],[29,27],[30,24],[31,30],[31,36],[32,30],[32,36],[33,30],[33,36],[34,24],[35,24],[36,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.0748538, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,9],["Report_syntax_error","A",30,3,10],["Stack","C",31,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,31],[26,24],[27,24],[28,27],[28,31],[29,27],[30,24],[31,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[29,21],[30,27]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,9],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Push","A",32,3,12],["Put_node","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Push","A",36,3,16],["Put_node","A",37,3,17],["Parsing_complete","A",38,3,18],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,39],[26,24],[27,24],[28,27],[28,39],[29,27],[30,24],[31,30],[31,39],[32,30],[32,39],[33,24],[34,24],[35,34],[35,39],[36,34],[36,39],[37,24],[38,24],[39,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,9],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Push","A",32,3,12],["Put_node","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[30,24],[31,30],[31,40],[32,30],[32,40],[33,24],[34,24],[35,34],[35,40],[36,34],[36,40],[37,34],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33],[35,32],[36,35],[37,36],[38,34],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,9],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Push","A",32,3,12],["Put_node","A",33,3,13],["Report_syntax_error","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[30,24],[31,30],[31,35],[32,30],[32,35],[33,24],[34,24],[35,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,9],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Pop","A",32,3,12],["Push","A",33,3,13],["Put_node","A",34,3,14],["Reduce","C",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[30,24],[31,30],[31,40],[32,30],[32,40],[33,30],[33,40],[34,24],[35,24],[36,35],[36,40],[37,35],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,9],["Reduce","C",30,3,10],["Pop","A",31,3,11],["Pop","A",32,3,12],["Push","A",33,3,13],["Put_node","A",34,3,14],["Report_syntax_error","A",35,3,15],["Stack","C",36,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,36],[26,24],[27,24],[28,27],[28,36],[29,27],[30,24],[31,30],[31,36],[32,30],[32,36],[33,30],[33,36],[34,24],[35,24],[36,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Push","A",36,3,16],["Put_node","A",37,3,17],["Parsing_complete","A",38,3,18],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,39],[26,24],[27,24],[28,27],[28,39],[29,27],[29,39],[30,24],[31,24],[32,31],[32,39],[33,31],[34,24],[35,34],[35,39],[36,34],[36,39],[37,24],[38,24],[39,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,21],[34,31],[35,32],[36,35],[37,34],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[29,40],[30,24],[31,24],[32,31],[32,40],[33,31],[34,24],[35,34],[35,40],[36,34],[36,40],[37,34],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,21],[34,31],[35,32],[36,35],[37,36],[38,34],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,6],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Report_syntax_error","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[29,35],[30,24],[31,24],[32,31],[32,35],[33,31],[34,24],[35,23]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[26,25],[26,14],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,21],[34,31]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,10],["Reduce","C",32,3,9],["Pop","A",33,3,11],["Push","A",34,3,12],["Put_node","A",35,3,13],["Parsing_complete","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[32,26],[33,32],[33,37],[34,32],[34,37],[35,26],[36,26],[37,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,10],["Reduce","C",32,3,9],["Pop","A",33,3,11],["Pop","A",34,3,12],["Push","A",35,3,13],["Put_node","A",36,3,14],["Parsing_complete","A",37,3,15],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,38],[28,26],[29,26],[30,29],[30,38],[31,29],[32,26],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.0374269, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,10],["Report_syntax_error","A",32,3,9],["Stack","C",33,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,33],[28,26],[29,26],[30,29],[30,33],[31,29],[32,26],[33,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[31,23],[32,29]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,10],["Reduce","C",32,3,9],["Pop","A",33,3,11],["Push","A",34,3,12],["Put_node","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Push","A",38,3,16],["Put_node","A",39,3,17],["Parsing_complete","A",40,3,18],["Stack","C",41,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,41],[28,26],[29,26],[30,29],[30,41],[31,29],[32,26],[33,32],[33,41],[34,32],[34,41],[35,26],[36,26],[37,36],[37,41],[38,36],[38,41],[39,26],[40,26],[41,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37],[39,36],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,10],["Reduce","C",32,3,9],["Pop","A",33,3,11],["Push","A",34,3,12],["Put_node","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[32,26],[33,32],[33,42],[34,32],[34,42],[35,26],[36,26],[37,36],[37,42],[38,36],[38,42],[39,36],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37],[39,38],[40,36],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,10],["Reduce","C",32,3,9],["Pop","A",33,3,11],["Push","A",34,3,12],["Put_node","A",35,3,13],["Report_syntax_error","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[32,26],[33,32],[33,37],[34,32],[34,37],[35,26],[36,26],[37,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,10],["Reduce","C",32,3,9],["Pop","A",33,3,11],["Pop","A",34,3,12],["Push","A",35,3,13],["Put_node","A",36,3,14],["Reduce","C",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[32,26],[33,32],[33,42],[34,32],[34,42],[35,32],[35,42],[36,26],[37,26],[38,37],[38,42],[39,37],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00116959, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,10],["Reduce","C",32,3,9],["Pop","A",33,3,11],["Pop","A",34,3,12],["Push","A",35,3,13],["Put_node","A",36,3,14],["Report_syntax_error","A",37,3,15],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,38],[28,26],[29,26],[30,29],[30,38],[31,29],[32,26],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Push","A",38,3,16],["Put_node","A",39,3,17],["Parsing_complete","A",40,3,18],["Stack","C",41,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,41],[28,26],[29,26],[30,29],[30,41],[31,29],[31,41],[32,26],[33,26],[34,33],[34,41],[35,33],[36,26],[37,36],[37,41],[38,36],[38,41],[39,26],[40,26],[41,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,23],[36,33],[37,34],[38,37],[39,36],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[31,42],[32,26],[33,26],[34,33],[34,42],[35,33],[36,26],[37,36],[37,42],[38,36],[38,42],[39,36],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,23],[36,33],[37,34],[38,37],[39,38],[40,36],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",20,2,7],["match_string","A",21,2,8],["largest_successful_match","A",22,2,9],["put_token","A",23,2,10],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Report_syntax_error","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[31,37],[32,26],[33,26],[34,33],[34,37],[35,33],[36,26],[37,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,20],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,14],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,23],[36,33]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,9],["Reduce","C",32,3,10],["Pop","A",33,3,11],["Push","A",34,3,12],["Put_node","A",35,3,13],["Parsing_complete","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[32,26],[33,32],[33,37],[34,32],[34,37],[35,26],[36,26],[37,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,9],["Reduce","C",32,3,10],["Pop","A",33,3,11],["Pop","A",34,3,12],["Push","A",35,3,13],["Put_node","A",36,3,14],["Parsing_complete","A",37,3,15],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,38],[28,26],[29,26],[30,29],[30,38],[31,29],[32,26],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.0374269, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,9],["Report_syntax_error","A",32,3,10],["Stack","C",33,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,33],[28,26],[29,26],[30,29],[30,33],[31,29],[32,26],[33,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[31,21],[32,29]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,9],["Reduce","C",32,3,10],["Pop","A",33,3,11],["Push","A",34,3,12],["Put_node","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Push","A",38,3,16],["Put_node","A",39,3,17],["Parsing_complete","A",40,3,18],["Stack","C",41,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,41],[28,26],[29,26],[30,29],[30,41],[31,29],[32,26],[33,32],[33,41],[34,32],[34,41],[35,26],[36,26],[37,36],[37,41],[38,36],[38,41],[39,26],[40,26],[41,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37],[39,36],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,9],["Reduce","C",32,3,10],["Pop","A",33,3,11],["Push","A",34,3,12],["Put_node","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[32,26],[33,32],[33,42],[34,32],[34,42],[35,26],[36,26],[37,36],[37,42],[38,36],[38,42],[39,36],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37],[39,38],[40,36],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,9],["Reduce","C",32,3,10],["Pop","A",33,3,11],["Push","A",34,3,12],["Put_node","A",35,3,13],["Report_syntax_error","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[32,26],[33,32],[33,37],[34,32],[34,37],[35,26],[36,26],[37,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,9],["Reduce","C",32,3,10],["Pop","A",33,3,11],["Pop","A",34,3,12],["Push","A",35,3,13],["Put_node","A",36,3,14],["Reduce","C",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[32,26],[33,32],[33,42],[34,32],[34,42],[35,32],[35,42],[36,26],[37,26],[38,37],[38,42],[39,37],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00116959, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,9],["Reduce","C",32,3,10],["Pop","A",33,3,11],["Pop","A",34,3,12],["Push","A",35,3,13],["Put_node","A",36,3,14],["Report_syntax_error","A",37,3,15],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,38],[28,26],[29,26],[30,29],[30,38],[31,29],[32,26],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Push","A",38,3,16],["Put_node","A",39,3,17],["Parsing_complete","A",40,3,18],["Stack","C",41,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,41],[28,26],[29,26],[30,29],[30,41],[31,29],[31,41],[32,26],[33,26],[34,33],[34,41],[35,33],[36,26],[37,36],[37,41],[38,36],[38,41],[39,26],[40,26],[41,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,21],[36,33],[37,34],[38,37],[39,36],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[31,42],[32,26],[33,26],[34,33],[34,42],[35,33],[36,26],[37,36],[37,42],[38,36],[38,42],[39,36],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,21],[36,33],[37,34],[38,37],[39,38],[40,36],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,5],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["Token_recognition","C",16,1,4],["RegExpr_match","C",18,1,5],["match_string","A",19,1,6],["largest_successful_match","A",20,1,7],["put_token","A",21,1,8],["RegExpr_match","C",11,2,3],["match_string","A",12,2,4],["largest_successful_match","A",13,2,5],["put_token","A",14,2,6],["RegExpr_match","C",22,2,7],["match_string","A",23,2,8],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Report_syntax_error","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,7],[12,11],[13,11],[14,11],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[31,37],[32,26],[33,26],[34,33],[34,37],[35,33],[36,26],[37,25]], +[[3,2],[3,9],[3,11],[4,3],[5,4],[5,18],[5,22],[9,2],[11,2],[13,12],[14,13],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,14],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,21],[36,33]] +,{"VIEWS":[ ]} +], + +["U", 0.00935673, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Push","A",32,3,12],["Put_node","A",33,3,13],["Parsing_complete","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[30,24],[31,30],[31,35],[32,30],[32,35],[33,24],[34,24],[35,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Pop","A",32,3,12],["Push","A",33,3,13],["Put_node","A",34,3,14],["Parsing_complete","A",35,3,15],["Stack","C",36,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,36],[26,24],[27,24],[28,27],[28,36],[29,27],[30,24],[31,30],[31,36],[32,30],[32,36],[33,30],[33,36],[34,24],[35,24],[36,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.0748538, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Report_syntax_error","A",30,3,9],["Stack","C",31,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,31],[26,24],[27,24],[28,27],[28,31],[29,27],[30,24],[31,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Push","A",32,3,12],["Put_node","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Push","A",36,3,16],["Put_node","A",37,3,17],["Parsing_complete","A",38,3,18],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,39],[26,24],[27,24],[28,27],[28,39],[29,27],[30,24],[31,30],[31,39],[32,30],[32,39],[33,24],[34,24],[35,34],[35,39],[36,34],[36,39],[37,24],[38,24],[39,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Push","A",32,3,12],["Put_node","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[30,24],[31,30],[31,40],[32,30],[32,40],[33,24],[34,24],[35,34],[35,40],[36,34],[36,40],[37,34],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33],[35,32],[36,35],[37,36],[38,34],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Push","A",32,3,12],["Put_node","A",33,3,13],["Report_syntax_error","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[30,24],[31,30],[31,35],[32,30],[32,35],[33,24],[34,24],[35,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,30],[34,33]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Pop","A",32,3,12],["Push","A",33,3,13],["Put_node","A",34,3,14],["Reduce","C",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[30,24],[31,30],[31,40],[32,30],[32,40],[33,30],[33,40],[34,24],[35,24],[36,35],[36,40],[37,35],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34],[36,33],[37,36],[38,35],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Shift","C",27,3,7],["Push","A",28,3,8],["get_token","A",29,3,11],["Reduce","C",30,3,9],["Pop","A",31,3,10],["Pop","A",32,3,12],["Push","A",33,3,13],["Put_node","A",34,3,14],["Report_syntax_error","A",35,3,15],["Stack","C",36,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,36],[26,24],[27,24],[28,27],[28,36],[29,27],[30,24],[31,30],[31,36],[32,30],[32,36],[33,30],[33,36],[34,24],[35,24],[36,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[29,21],[30,27],[31,28],[32,31],[33,32],[34,30],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000584795, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Push","A",36,3,16],["Put_node","A",37,3,17],["Parsing_complete","A",38,3,18],["Stack","C",39,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,39],[26,24],[27,24],[28,27],[28,39],[29,27],[29,39],[30,24],[31,24],[32,31],[32,39],[33,31],[34,24],[35,34],[35,39],[36,34],[36,39],[37,24],[38,24],[39,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,21],[34,31],[35,32],[36,35],[37,34],[38,37]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Reduce","C",34,3,14],["Pop","A",35,3,15],["Pop","A",36,3,16],["Push","A",37,3,17],["Put_node","A",38,3,18],["Parsing_complete","A",39,3,19],["Stack","C",40,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,40],[26,24],[27,24],[28,27],[28,40],[29,27],[29,40],[30,24],[31,24],[32,31],[32,40],[33,31],[34,24],[35,34],[35,40],[36,34],[36,40],[37,34],[37,40],[38,24],[39,24],[40,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,21],[34,31],[35,32],[36,35],[37,36],[38,34],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,8],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["Parser","R",23,3,0],["Shift_Reduce","C",24,3,1],["Push","A",25,3,2],["get_token","A",26,3,6],["Reduce","C",27,3,7],["Pop","A",28,3,8],["Push","A",29,3,9],["Put_node","A",30,3,10],["Shift","C",31,3,11],["Push","A",32,3,12],["get_token","A",33,3,13],["Report_syntax_error","A",34,3,14],["Stack","C",35,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[24,23],[25,24],[25,35],[26,24],[27,24],[28,27],[28,35],[29,27],[29,35],[30,24],[31,24],[32,31],[32,35],[33,31],[34,24],[35,23]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[26,25],[26,12],[27,26],[28,25],[29,28],[30,27],[31,30],[32,29],[33,32],[33,21],[34,31]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,10],["Pop","A",33,3,12],["Push","A",34,3,13],["Put_node","A",35,3,14],["Parsing_complete","A",36,3,15],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[32,26],[33,32],[33,37],[34,32],[34,37],[35,26],[36,26],[37,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,10],["Pop","A",33,3,12],["Pop","A",34,3,13],["Push","A",35,3,14],["Put_node","A",36,3,15],["Parsing_complete","A",37,3,16],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,38],[28,26],[29,26],[30,29],[30,38],[31,29],[32,26],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.0374269, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Report_syntax_error","A",32,3,10],["Stack","C",33,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,33],[28,26],[29,26],[30,29],[30,33],[31,29],[32,26],[33,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[31,23],[32,29]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,10],["Pop","A",33,3,12],["Push","A",34,3,13],["Put_node","A",35,3,14],["Reduce","C",36,3,15],["Pop","A",37,3,16],["Push","A",38,3,17],["Put_node","A",39,3,18],["Parsing_complete","A",40,3,19],["Stack","C",41,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,41],[28,26],[29,26],[30,29],[30,41],[31,29],[32,26],[33,32],[33,41],[34,32],[34,41],[35,26],[36,26],[37,36],[37,41],[38,36],[38,41],[39,26],[40,26],[41,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37],[39,36],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,10],["Pop","A",33,3,12],["Push","A",34,3,13],["Put_node","A",35,3,14],["Reduce","C",36,3,15],["Pop","A",37,3,16],["Pop","A",38,3,17],["Push","A",39,3,18],["Put_node","A",40,3,19],["Parsing_complete","A",41,3,20],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[32,26],[33,32],[33,42],[34,32],[34,42],[35,26],[36,26],[37,36],[37,42],[38,36],[38,42],[39,36],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37],[39,38],[40,36],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,10],["Pop","A",33,3,12],["Push","A",34,3,13],["Put_node","A",35,3,14],["Report_syntax_error","A",36,3,15],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[32,26],[33,32],[33,37],[34,32],[34,37],[35,26],[36,26],[37,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,10],["Pop","A",33,3,12],["Pop","A",34,3,13],["Push","A",35,3,14],["Put_node","A",36,3,15],["Reduce","C",37,3,16],["Pop","A",38,3,17],["Push","A",39,3,18],["Put_node","A",40,3,19],["Parsing_complete","A",41,3,20],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[32,26],[33,32],[33,42],[34,32],[34,42],[35,32],[35,42],[36,26],[37,26],[38,37],[38,42],[39,37],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00116959, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,10],["Pop","A",33,3,12],["Pop","A",34,3,13],["Push","A",35,3,14],["Put_node","A",36,3,15],["Report_syntax_error","A",37,3,16],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,38],[28,26],[29,26],[30,29],[30,38],[31,29],[32,26],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[31,23],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Push","A",38,3,16],["Put_node","A",39,3,17],["Parsing_complete","A",40,3,18],["Stack","C",41,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,41],[28,26],[29,26],[30,29],[30,41],[31,29],[31,41],[32,26],[33,26],[34,33],[34,41],[35,33],[36,26],[37,36],[37,41],[38,36],[38,41],[39,26],[40,26],[41,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,23],[36,33],[37,34],[38,37],[39,36],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[31,42],[32,26],[33,26],[34,33],[34,42],[35,33],[36,26],[37,36],[37,42],[38,36],[38,42],[39,36],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,23],[36,33],[37,34],[38,37],[39,38],[40,36],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",20,2,8],["match_string","A",21,2,9],["largest_successful_match","A",22,2,10],["put_token","A",23,2,11],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Report_syntax_error","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,16],[21,20],[22,20],[23,20],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[31,37],[32,26],[33,26],[34,33],[34,37],[35,33],[36,26],[37,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,20],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,4],[22,21],[23,22],[28,27],[28,12],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,23],[36,33]] +,{"VIEWS":[ ]} +], + +["U", 0.00467836, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,9],["Pop","A",33,3,10],["Push","A",34,3,12],["Put_node","A",35,3,13],["Parsing_complete","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[32,26],[33,32],[33,37],[34,32],[34,37],[35,26],[36,26],[37,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,9],["Pop","A",33,3,10],["Pop","A",34,3,12],["Push","A",35,3,13],["Put_node","A",36,3,14],["Parsing_complete","A",37,3,15],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,38],[28,26],[29,26],[30,29],[30,38],[31,29],[32,26],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.0374269, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Report_syntax_error","A",32,3,9],["Stack","C",33,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,33],[28,26],[29,26],[30,29],[30,33],[31,29],[32,26],[33,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[31,21],[32,29]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,9],["Pop","A",33,3,10],["Push","A",34,3,12],["Put_node","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Push","A",38,3,16],["Put_node","A",39,3,17],["Parsing_complete","A",40,3,18],["Stack","C",41,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,41],[28,26],[29,26],[30,29],[30,41],[31,29],[32,26],[33,32],[33,41],[34,32],[34,41],[35,26],[36,26],[37,36],[37,41],[38,36],[38,41],[39,26],[40,26],[41,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37],[39,36],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,9],["Pop","A",33,3,10],["Push","A",34,3,12],["Put_node","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[32,26],[33,32],[33,42],[34,32],[34,42],[35,26],[36,26],[37,36],[37,42],[38,36],[38,42],[39,36],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,32],[36,35],[37,34],[38,37],[39,38],[40,36],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,9],["Pop","A",33,3,10],["Push","A",34,3,12],["Put_node","A",35,3,13],["Report_syntax_error","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[32,26],[33,32],[33,37],[34,32],[34,37],[35,26],[36,26],[37,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,32],[36,35]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,9],["Pop","A",33,3,10],["Pop","A",34,3,12],["Push","A",35,3,13],["Put_node","A",36,3,14],["Reduce","C",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[32,26],[33,32],[33,42],[34,32],[34,42],[35,32],[35,42],[36,26],[37,26],[38,37],[38,42],[39,37],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36],[38,35],[39,38],[40,37],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00116959, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Shift","C",29,3,7],["Push","A",30,3,8],["get_token","A",31,3,11],["Reduce","C",32,3,9],["Pop","A",33,3,10],["Pop","A",34,3,12],["Push","A",35,3,13],["Put_node","A",36,3,14],["Report_syntax_error","A",37,3,15],["Stack","C",38,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,38],[28,26],[29,26],[30,29],[30,38],[31,29],[32,26],[33,32],[33,38],[34,32],[34,38],[35,32],[35,38],[36,26],[37,26],[38,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[31,21],[32,29],[33,30],[34,33],[35,34],[36,32],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000292398, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Push","A",38,3,16],["Put_node","A",39,3,17],["Parsing_complete","A",40,3,18],["Stack","C",41,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,41],[28,26],[29,26],[30,29],[30,41],[31,29],[31,41],[32,26],[33,26],[34,33],[34,41],[35,33],[36,26],[37,36],[37,41],[38,36],[38,41],[39,26],[40,26],[41,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,21],[36,33],[37,34],[38,37],[39,36],[40,39]] +,{"VIEWS":[ ]} +], + +["U", 0.000146199, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Reduce","C",36,3,14],["Pop","A",37,3,15],["Pop","A",38,3,16],["Push","A",39,3,17],["Put_node","A",40,3,18],["Parsing_complete","A",41,3,19],["Stack","C",42,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,42],[28,26],[29,26],[30,29],[30,42],[31,29],[31,42],[32,26],[33,26],[34,33],[34,42],[35,33],[36,26],[37,36],[37,42],[38,36],[38,42],[39,36],[39,42],[40,26],[41,26],[42,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,21],[36,33],[37,34],[38,37],[39,38],[40,36],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.00233918, +[ ["Source_code","R",1,0,0],["get_characters","A",2,0,2],["unget_some_characters","A",3,0,4],["get_characters","A",4,0,7],["unget_some_characters","A",5,0,9],["Lexer","R",6,1,0],["Token_recognition","C",7,1,1],["RegExpr_match","C",9,1,2],["match_string","A",10,1,3],["largest_successful_match","A",11,1,4],["put_token","A",12,1,5],["Token_recognition","C",16,1,6],["RegExpr_match","C",18,1,7],["match_string","A",19,1,8],["largest_successful_match","A",20,1,9],["put_token","A",21,1,10],["RegExpr_match","C",13,2,3],["match_string","A",14,2,4],["RegExpr_match","C",22,2,8],["match_string","A",23,2,9],["Parser","R",25,3,0],["Shift_Reduce","C",26,3,1],["Push","A",27,3,2],["get_token","A",28,3,6],["Reduce","C",29,3,7],["Pop","A",30,3,8],["Push","A",31,3,9],["Put_node","A",32,3,10],["Shift","C",33,3,11],["Push","A",34,3,12],["get_token","A",35,3,13],["Report_syntax_error","A",36,3,14],["Stack","C",37,4,1] ], + +[[2,1],[2,7],[3,1],[3,7],[4,1],[4,16],[5,1],[5,16],[7,6],[9,7],[10,9],[11,9],[12,9],[13,7],[14,13],[16,6],[18,16],[19,18],[20,18],[21,18],[22,16],[23,22],[26,25],[27,26],[27,37],[28,26],[29,26],[30,29],[30,37],[31,29],[31,37],[32,26],[33,26],[34,33],[34,37],[35,33],[36,26],[37,25]], +[[3,2],[3,9],[3,13],[4,3],[5,4],[5,18],[5,22],[9,2],[11,10],[12,11],[13,2],[16,7],[18,4],[20,19],[21,20],[22,4],[28,27],[28,12],[29,28],[30,27],[31,30],[32,29],[33,32],[34,31],[35,34],[35,21],[36,33]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example23_number_attributes.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example23_number_attributes.json new file mode 100644 index 0000000..2288385 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example23_number_attributes.json @@ -0,0 +1,395 @@ +{"traces":[ + +["U", 0.111111, +[ [" Trace #1","T",4,0,0],["Bought 0 items. Total purchase cost is: 0 average cost: -nan","T",5,0,1],["Buyer","R",1,1,0],["Shop_A","R",2,2,0],["Shop_B","R",3,3,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0555556, +[ [" Trace #2","T",6,0,0],["Bought 1 items. Total purchase cost is: 22 average cost: 22","T",7,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Shop_A","R",3,2,0],["Shop_B","R",4,3,0],["Sell_Item_2","A",5,3,2] ], + +[[2,1],[5,4]], +[[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0555556, +[ [" Trace #3","T",6,0,0],["Bought 1 items. Total purchase cost is: 30 average cost: 30","T",7,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Shop_A","R",3,2,0],["Shop_B","R",4,3,0],["Sell_Item_3","A",5,3,2] ], + +[[2,1],[5,4]], +[[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0555556, +[ [" Trace #4","T",6,0,0],["Bought 1 items. Total purchase cost is: 8 average cost: 8","T",7,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Shop_A","R",3,2,0],["Sell_Item_1","A",4,2,1],["Shop_B","R",5,3,0] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0555556, +[ [" Trace #5","T",6,0,0],["Bought 1 items. Total purchase cost is: 20 average cost: 20","T",7,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Shop_A","R",3,2,0],["Sell_Item_2","A",4,2,1],["Shop_B","R",5,3,0] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #6","T",8,0,0],["Bought 2 items. Total purchase cost is: 44 average cost: 22","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Shop_B","R",5,3,0],["Sell_Item_2","A",6,3,2],["Sell_Item_2","A",7,3,3] ], + +[[2,1],[3,1],[6,5],[7,5]], +[[3,2],[6,2],[7,6],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #7","T",8,0,0],["Bought 2 items. Total purchase cost is: 52 average cost: 26","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Shop_B","R",5,3,0],["Sell_Item_2","A",6,3,2],["Sell_Item_3","A",7,3,3] ], + +[[2,1],[3,1],[6,5],[7,5]], +[[3,2],[6,2],[7,6],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #8","T",8,0,0],["Bought 2 items. Total purchase cost is: 52 average cost: 26","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Shop_B","R",5,3,0],["Sell_Item_3","A",6,3,2],["Sell_Item_2","A",7,3,3] ], + +[[2,1],[3,1],[6,5],[7,5]], +[[3,2],[6,2],[7,6],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #9","T",8,0,0],["Bought 2 items. Total purchase cost is: 60 average cost: 30","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Shop_B","R",5,3,0],["Sell_Item_3","A",6,3,2],["Sell_Item_3","A",7,3,3] ], + +[[2,1],[3,1],[6,5],[7,5]], +[[3,2],[6,2],[7,6],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #10","T",8,0,0],["Bought 2 items. Total purchase cost is: 30 average cost: 15","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_1","A",5,2,1],["Shop_B","R",6,3,0],["Sell_Item_2","A",7,3,3] ], + +[[2,1],[3,1],[5,4],[7,6]], +[[3,2],[5,2],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #11","T",8,0,0],["Bought 2 items. Total purchase cost is: 38 average cost: 19","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_1","A",5,2,1],["Shop_B","R",6,3,0],["Sell_Item_3","A",7,3,3] ], + +[[2,1],[3,1],[5,4],[7,6]], +[[3,2],[5,2],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #12","T",8,0,0],["Bought 2 items. Total purchase cost is: 42 average cost: 21","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_2","A",5,2,1],["Shop_B","R",6,3,0],["Sell_Item_2","A",7,3,3] ], + +[[2,1],[3,1],[5,4],[7,6]], +[[3,2],[5,2],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #13","T",8,0,0],["Bought 2 items. Total purchase cost is: 50 average cost: 25","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_2","A",5,2,1],["Shop_B","R",6,3,0],["Sell_Item_3","A",7,3,3] ], + +[[2,1],[3,1],[5,4],[7,6]], +[[3,2],[5,2],[7,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #14","T",8,0,0],["Bought 2 items. Total purchase cost is: 16 average cost: 8","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_1","A",5,2,1],["Sell_Item_1","A",6,2,2],["Shop_B","R",7,3,0] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #15","T",8,0,0],["Bought 2 items. Total purchase cost is: 28 average cost: 14","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_1","A",5,2,1],["Sell_Item_2","A",6,2,2],["Shop_B","R",7,3,0] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #16","T",8,0,0],["Bought 2 items. Total purchase cost is: 28 average cost: 14","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_2","A",5,2,1],["Sell_Item_1","A",6,2,2],["Shop_B","R",7,3,0] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0277778, +[ [" Trace #17","T",8,0,0],["Bought 2 items. Total purchase cost is: 40 average cost: 20","T",9,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Shop_A","R",4,2,0],["Sell_Item_2","A",5,2,1],["Sell_Item_2","A",6,2,2],["Shop_B","R",7,3,0] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #18","T",10,0,0],["Bought 3 items. Total purchase cost is: 52 average cost: 17.3333","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_1","A",6,2,1],["Shop_B","R",7,3,0],["Sell_Item_2","A",8,3,3],["Sell_Item_2","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[8,7],[9,7]], +[[3,2],[4,3],[6,2],[8,3],[9,8],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #19","T",10,0,0],["Bought 3 items. Total purchase cost is: 60 average cost: 20","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_1","A",6,2,1],["Shop_B","R",7,3,0],["Sell_Item_2","A",8,3,3],["Sell_Item_3","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[8,7],[9,7]], +[[3,2],[4,3],[6,2],[8,3],[9,8],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #20","T",10,0,0],["Bought 3 items. Total purchase cost is: 60 average cost: 20","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_1","A",6,2,1],["Shop_B","R",7,3,0],["Sell_Item_3","A",8,3,3],["Sell_Item_2","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[8,7],[9,7]], +[[3,2],[4,3],[6,2],[8,3],[9,8],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #21","T",10,0,0],["Bought 3 items. Total purchase cost is: 68 average cost: 22.6667","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_1","A",6,2,1],["Shop_B","R",7,3,0],["Sell_Item_3","A",8,3,3],["Sell_Item_3","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[8,7],[9,7]], +[[3,2],[4,3],[6,2],[8,3],[9,8],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #22","T",10,0,0],["Bought 3 items. Total purchase cost is: 64 average cost: 21.3333","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_2","A",6,2,1],["Shop_B","R",7,3,0],["Sell_Item_2","A",8,3,3],["Sell_Item_2","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[8,7],[9,7]], +[[3,2],[4,3],[6,2],[8,3],[9,8],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #23","T",10,0,0],["Bought 3 items. Total purchase cost is: 72 average cost: 24","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_2","A",6,2,1],["Shop_B","R",7,3,0],["Sell_Item_2","A",8,3,3],["Sell_Item_3","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[8,7],[9,7]], +[[3,2],[4,3],[6,2],[8,3],[9,8],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #24","T",10,0,0],["Bought 3 items. Total purchase cost is: 72 average cost: 24","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_2","A",6,2,1],["Shop_B","R",7,3,0],["Sell_Item_3","A",8,3,3],["Sell_Item_2","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[8,7],[9,7]], +[[3,2],[4,3],[6,2],[8,3],[9,8],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #25","T",10,0,0],["Bought 3 items. Total purchase cost is: 80 average cost: 26.6667","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_2","A",6,2,1],["Shop_B","R",7,3,0],["Sell_Item_3","A",8,3,3],["Sell_Item_3","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[8,7],[9,7]], +[[3,2],[4,3],[6,2],[8,3],[9,8],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #26","T",10,0,0],["Bought 3 items. Total purchase cost is: 38 average cost: 12.6667","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_1","A",6,2,1],["Sell_Item_1","A",7,2,2],["Shop_B","R",8,3,0],["Sell_Item_2","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[9,8]], +[[3,2],[4,3],[6,2],[7,6],[7,3],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #27","T",10,0,0],["Bought 3 items. Total purchase cost is: 46 average cost: 15.3333","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_1","A",6,2,1],["Sell_Item_1","A",7,2,2],["Shop_B","R",8,3,0],["Sell_Item_3","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[9,8]], +[[3,2],[4,3],[6,2],[7,6],[7,3],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #28","T",10,0,0],["Bought 3 items. Total purchase cost is: 50 average cost: 16.6667","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_1","A",6,2,1],["Sell_Item_2","A",7,2,2],["Shop_B","R",8,3,0],["Sell_Item_2","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[9,8]], +[[3,2],[4,3],[6,2],[7,6],[7,3],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #29","T",10,0,0],["Bought 3 items. Total purchase cost is: 58 average cost: 19.3333","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_1","A",6,2,1],["Sell_Item_2","A",7,2,2],["Shop_B","R",8,3,0],["Sell_Item_3","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[9,8]], +[[3,2],[4,3],[6,2],[7,6],[7,3],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #30","T",10,0,0],["Bought 3 items. Total purchase cost is: 50 average cost: 16.6667","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_2","A",6,2,1],["Sell_Item_1","A",7,2,2],["Shop_B","R",8,3,0],["Sell_Item_2","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[9,8]], +[[3,2],[4,3],[6,2],[7,6],[7,3],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #31","T",10,0,0],["Bought 3 items. Total purchase cost is: 58 average cost: 19.3333","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_2","A",6,2,1],["Sell_Item_1","A",7,2,2],["Shop_B","R",8,3,0],["Sell_Item_3","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[9,8]], +[[3,2],[4,3],[6,2],[7,6],[7,3],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #32","T",10,0,0],["Bought 3 items. Total purchase cost is: 62 average cost: 20.6667","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_2","A",6,2,1],["Sell_Item_2","A",7,2,2],["Shop_B","R",8,3,0],["Sell_Item_2","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[9,8]], +[[3,2],[4,3],[6,2],[7,6],[7,3],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0138889, +[ [" Trace #33","T",10,0,0],["Bought 3 items. Total purchase cost is: 70 average cost: 23.3333","T",11,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Shop_A","R",5,2,0],["Sell_Item_2","A",6,2,1],["Sell_Item_2","A",7,2,2],["Shop_B","R",8,3,0],["Sell_Item_3","A",9,3,4] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[9,8]], +[[3,2],[4,3],[6,2],[7,6],[7,3],[9,4]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #34","T",12,0,0],["Bought 4 items. Total purchase cost is: 60 average cost: 15","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_1","A",7,2,1],["Sell_Item_1","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_2","A",10,3,4],["Sell_Item_2","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #35","T",12,0,0],["Bought 4 items. Total purchase cost is: 68 average cost: 17","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_1","A",7,2,1],["Sell_Item_1","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_2","A",10,3,4],["Sell_Item_3","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #36","T",12,0,0],["Bought 4 items. Total purchase cost is: 68 average cost: 17","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_1","A",7,2,1],["Sell_Item_1","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_3","A",10,3,4],["Sell_Item_2","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #37","T",12,0,0],["Bought 4 items. Total purchase cost is: 76 average cost: 19","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_1","A",7,2,1],["Sell_Item_1","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_3","A",10,3,4],["Sell_Item_3","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #38","T",12,0,0],["Bought 4 items. Total purchase cost is: 72 average cost: 18","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_1","A",7,2,1],["Sell_Item_2","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_2","A",10,3,4],["Sell_Item_2","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #39","T",12,0,0],["Bought 4 items. Total purchase cost is: 80 average cost: 20","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_1","A",7,2,1],["Sell_Item_2","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_2","A",10,3,4],["Sell_Item_3","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #40","T",12,0,0],["Bought 4 items. Total purchase cost is: 80 average cost: 20","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_1","A",7,2,1],["Sell_Item_2","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_3","A",10,3,4],["Sell_Item_2","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #41","T",12,0,0],["Bought 4 items. Total purchase cost is: 88 average cost: 22","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_1","A",7,2,1],["Sell_Item_2","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_3","A",10,3,4],["Sell_Item_3","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #42","T",12,0,0],["Bought 4 items. Total purchase cost is: 72 average cost: 18","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_2","A",7,2,1],["Sell_Item_1","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_2","A",10,3,4],["Sell_Item_2","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #43","T",12,0,0],["Bought 4 items. Total purchase cost is: 80 average cost: 20","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_2","A",7,2,1],["Sell_Item_1","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_2","A",10,3,4],["Sell_Item_3","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #44","T",12,0,0],["Bought 4 items. Total purchase cost is: 80 average cost: 20","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_2","A",7,2,1],["Sell_Item_1","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_3","A",10,3,4],["Sell_Item_2","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #45","T",12,0,0],["Bought 4 items. Total purchase cost is: 88 average cost: 22","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_2","A",7,2,1],["Sell_Item_1","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_3","A",10,3,4],["Sell_Item_3","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #46","T",12,0,0],["Bought 4 items. Total purchase cost is: 84 average cost: 21","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_2","A",7,2,1],["Sell_Item_2","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_2","A",10,3,4],["Sell_Item_2","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #47","T",12,0,0],["Bought 4 items. Total purchase cost is: 92 average cost: 23","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_2","A",7,2,1],["Sell_Item_2","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_2","A",10,3,4],["Sell_Item_3","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #48","T",12,0,0],["Bought 4 items. Total purchase cost is: 92 average cost: 23","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_2","A",7,2,1],["Sell_Item_2","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_3","A",10,3,4],["Sell_Item_2","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00694444, +[ [" Trace #49","T",12,0,0],["Bought 4 items. Total purchase cost is: 100 average cost: 25","T",13,0,1],["Buyer","R",1,1,0],["Buy","A",2,1,1],["Buy","A",3,1,2],["Buy","A",4,1,3],["Buy","A",5,1,4],["Shop_A","R",6,2,0],["Sell_Item_2","A",7,2,1],["Sell_Item_2","A",8,2,2],["Shop_B","R",9,3,0],["Sell_Item_3","A",10,3,4],["Sell_Item_3","A",11,3,5] ], + +[[2,1],[3,1],[4,1],[5,1],[7,6],[8,6],[10,9],[11,9]], +[[3,2],[4,3],[5,4],[7,2],[8,7],[8,3],[10,4],[11,10],[11,5]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example24_Bayesian_probability.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example24_Bayesian_probability.json new file mode 100644 index 0000000..0430a1d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example24_Bayesian_probability.json @@ -0,0 +1,59 @@ +{"traces":[ + +["U", 0.142857, +[ ["Probability of result RRR was 0.1","T",6,0,0],["Selection","R",1,1,0],["Select_Red","A",2,1,1],["Select_Red","A",3,1,2],["Select_Red","A",4,1,3],["RRR","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RRG was 0.2","T",6,0,0],["Selection","R",1,1,0],["Select_Red","A",2,1,1],["Select_Red","A",3,1,2],["Select_Green","A",4,1,3],["RRG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RRG was 0.2","T",6,0,0],["Selection","R",1,1,0],["Select_Red","A",2,1,1],["Select_Green","A",3,1,2],["Select_Red","A",4,1,3],["RRG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RGG was 0.1","T",6,0,0],["Selection","R",1,1,0],["Select_Red","A",2,1,1],["Select_Green","A",3,1,2],["Select_Green","A",4,1,3],["RGG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RRG was 0.2","T",6,0,0],["Selection","R",1,1,0],["Select_Green","A",2,1,1],["Select_Red","A",3,1,2],["Select_Red","A",4,1,3],["RRG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RGG was 0.1","T",6,0,0],["Selection","R",1,1,0],["Select_Green","A",2,1,1],["Select_Red","A",3,1,2],["Select_Green","A",4,1,3],["RGG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["Probability of result RGG was 0.1","T",6,0,0],["Selection","R",1,1,0],["Select_Green","A",2,1,1],["Select_Green","A",3,1,2],["Select_Red","A",4,1,3],["RGG","A",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example25_interval_attributes.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example25_interval_attributes.json new file mode 100644 index 0000000..d069ca5 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example25_interval_attributes.json @@ -0,0 +1,43 @@ +{"traces":[ + +["U", 0.285714, +[ ["selected 1 items","T",4,0,0],["backpack weight is within interval [2 .. 5]","T",5,0,1],["Backpack","R",1,1,0],["item1","C",2,1,1],["selected item1 with weight [2 .. 5]","T",3,1,2] ], + +[[2,1],[3,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.285714, +[ ["selected 1 items","T",4,0,0],["backpack weight is within interval [10 .. 16]","T",5,0,1],["Backpack","R",1,1,0],["item2","C",2,1,1],["selected item2 with weight [10 .. 16]","T",3,1,2] ], + +[[2,1],[3,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["selected 2 items","T",6,0,0],["backpack weight is within interval [4 .. 10]","T",7,0,1],["Backpack","R",1,1,0],["item1","C",2,1,1],["item1","C",3,1,2],["selected item1 with weight [2 .. 5]","T",4,1,3],["selected item1 with weight [2 .. 5]","T",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["selected 2 items","T",6,0,0],["backpack weight is within interval [12 .. 21]","T",7,0,1],["Backpack","R",1,1,0],["item1","C",2,1,1],["item2","C",3,1,2],["selected item1 with weight [2 .. 5]","T",4,1,3],["selected item2 with weight [10 .. 16]","T",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.142857, +[ ["selected 2 items","T",6,0,0],["backpack weight is within interval [12 .. 21]","T",7,0,1],["Backpack","R",1,1,0],["item2","C",2,1,1],["item1","C",3,1,2],["selected item2 with weight [10 .. 16]","T",4,1,3],["selected item1 with weight [2 .. 5]","T",5,1,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example26_timing_attributes.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example26_timing_attributes.json new file mode 100644 index 0000000..3ef92a4 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example26_timing_attributes.json @@ -0,0 +1,99 @@ +{"traces":[ + +["U", 0.25, +[ [" Worker start 0 duration 1 end 1","T",3,0,0],[" Work start 0 duration 1 end 1","T",4,0,1],[" Delay created by 0 visitors is 0","T",5,0,2],["Worker","R",1,1,0],["Work","C",2,1,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ [" Worker start 0 duration [2 .. 3] end [2 .. 3]","T",4,0,0],[" Get_distracted start 0 duration [2 .. 3] end [2 .. 3]","T",5,0,1],[" Visitor start 0 duration [2 .. 3] end [2 .. 3]","T",6,0,2],[" Delay created by 1 visitors is [2 .. 3]","T",7,0,3],["Worker","R",1,1,0],["Get_distracted","C",2,1,1],["Visitor","C",3,1,2] ], + +[[2,1],[3,2]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ [" Worker start 0 duration [4 .. 6] end [4 .. 6]","T",5,0,0],[" Get_distracted start 0 duration [4 .. 6] end [4 .. 6]","T",6,0,1],[" Visitor start 0 duration [2 .. 3] end [2 .. 3]","T",7,0,2],[" Visitor start [2 .. 3] duration [2 .. 3] end [4 .. 6]","T",8,0,3],[" Delay created by 2 visitors is [4 .. 6]","T",9,0,4],["Worker","R",1,1,0],["Get_distracted","C",2,1,1],["Visitor","C",3,1,2],["Visitor","C",4,1,3] ], + +[[2,1],[3,2],[4,2]], +[[4,3]] +,{"VIEWS":[ ]} +], + +["U", 0.125, +[ [" Worker start 0 duration 2 end 2","T",4,0,0],[" Work start 0 duration 1 end 1","T",5,0,1],[" Work start 1 duration 1 end 2","T",6,0,2],[" Delay created by 0 visitors is 0","T",7,0,3],["Worker","R",1,1,0],["Work","C",2,1,1],["Work","C",3,1,2] ], + +[[2,1],[3,1]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Worker start 0 duration [3 .. 4] end [3 .. 4]","T",5,0,0],[" Work start 0 duration 1 end 1","T",6,0,1],[" Get_distracted start 1 duration [2 .. 3] end [3 .. 4]","T",7,0,2],[" Visitor start 1 duration [2 .. 3] end [3 .. 4]","T",8,0,3],[" Delay created by 1 visitors is [2 .. 3]","T",9,0,4],["Worker","R",1,1,0],["Work","C",2,1,1],["Get_distracted","C",3,1,2],["Visitor","C",4,1,3] ], + +[[2,1],[3,1],[4,3]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Worker start 0 duration [5 .. 7] end [5 .. 7]","T",6,0,0],[" Work start 0 duration 1 end 1","T",7,0,1],[" Get_distracted start 1 duration [4 .. 6] end [5 .. 7]","T",8,0,2],[" Visitor start 1 duration [2 .. 3] end [3 .. 4]","T",9,0,3],[" Visitor start [3 .. 4] duration [2 .. 3] end [5 .. 7]","T",10,0,4],[" Delay created by 2 visitors is [4 .. 6]","T",11,0,5],["Worker","R",1,1,0],["Work","C",2,1,1],["Get_distracted","C",3,1,2],["Visitor","C",4,1,3],["Visitor","C",5,1,4] ], + +[[2,1],[3,1],[4,3],[5,3]], +[[3,2],[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Worker start 0 duration [3 .. 4] end [3 .. 4]","T",5,0,0],[" Get_distracted start 0 duration [2 .. 3] end [2 .. 3]","T",6,0,1],[" Visitor start 0 duration [2 .. 3] end [2 .. 3]","T",7,0,2],[" Work start [2 .. 3] duration 1 end [3 .. 4]","T",8,0,3],[" Delay created by 1 visitors is [2 .. 3]","T",9,0,4],["Worker","R",1,1,0],["Get_distracted","C",2,1,1],["Visitor","C",3,1,2],["Work","C",4,1,3] ], + +[[2,1],[3,2],[4,1]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.03125, +[ [" Worker start 0 duration [4 .. 6] end [4 .. 6]","T",6,0,0],[" Get_distracted start 0 duration [2 .. 3] end [2 .. 3]","T",7,0,1],[" Visitor start 0 duration [2 .. 3] end [2 .. 3]","T",8,0,2],[" Get_distracted start [2 .. 3] duration [2 .. 3] end [4 .. 6]","T",9,0,3],[" Visitor start [2 .. 3] duration [2 .. 3] end [4 .. 6]","T",10,0,4],[" Delay created by 2 visitors is [4 .. 6]","T",11,0,5],["Worker","R",1,1,0],["Get_distracted","C",2,1,1],["Visitor","C",3,1,2],["Get_distracted","C",4,1,3],["Visitor","C",5,1,4] ], + +[[2,1],[3,2],[4,1],[5,4]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.03125, +[ [" Worker start 0 duration [6 .. 9] end [6 .. 9]","T",7,0,0],[" Get_distracted start 0 duration [2 .. 3] end [2 .. 3]","T",8,0,1],[" Visitor start 0 duration [2 .. 3] end [2 .. 3]","T",9,0,2],[" Get_distracted start [2 .. 3] duration [4 .. 6] end [6 .. 9]","T",10,0,3],[" Visitor start [2 .. 3] duration [2 .. 3] end [4 .. 6]","T",11,0,4],[" Visitor start [4 .. 6] duration [2 .. 3] end [6 .. 9]","T",12,0,5],[" Delay created by 3 visitors is [6 .. 9]","T",13,0,6],["Worker","R",1,1,0],["Get_distracted","C",2,1,1],["Visitor","C",3,1,2],["Get_distracted","C",4,1,3],["Visitor","C",5,1,4],["Visitor","C",6,1,5] ], + +[[2,1],[3,2],[4,1],[5,4],[6,4]], +[[4,2],[6,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0625, +[ [" Worker start 0 duration [5 .. 7] end [5 .. 7]","T",6,0,0],[" Get_distracted start 0 duration [4 .. 6] end [4 .. 6]","T",7,0,1],[" Visitor start 0 duration [2 .. 3] end [2 .. 3]","T",8,0,2],[" Visitor start [2 .. 3] duration [2 .. 3] end [4 .. 6]","T",9,0,3],[" Work start [4 .. 6] duration 1 end [5 .. 7]","T",10,0,4],[" Delay created by 2 visitors is [4 .. 6]","T",11,0,5],["Worker","R",1,1,0],["Get_distracted","C",2,1,1],["Visitor","C",3,1,2],["Visitor","C",4,1,3],["Work","C",5,1,4] ], + +[[2,1],[3,2],[4,2],[5,1]], +[[4,3],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.03125, +[ [" Worker start 0 duration [6 .. 9] end [6 .. 9]","T",7,0,0],[" Get_distracted start 0 duration [4 .. 6] end [4 .. 6]","T",8,0,1],[" Visitor start 0 duration [2 .. 3] end [2 .. 3]","T",9,0,2],[" Visitor start [2 .. 3] duration [2 .. 3] end [4 .. 6]","T",10,0,3],[" Get_distracted start [4 .. 6] duration [2 .. 3] end [6 .. 9]","T",11,0,4],[" Visitor start [4 .. 6] duration [2 .. 3] end [6 .. 9]","T",12,0,5],[" Delay created by 3 visitors is [6 .. 9]","T",13,0,6],["Worker","R",1,1,0],["Get_distracted","C",2,1,1],["Visitor","C",3,1,2],["Visitor","C",4,1,3],["Get_distracted","C",5,1,4],["Visitor","C",6,1,5] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5]], +[[4,3],[5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.03125, +[ [" Worker start 0 duration [8 .. 12] end [8 .. 12]","T",8,0,0],[" Get_distracted start 0 duration [4 .. 6] end [4 .. 6]","T",9,0,1],[" Visitor start 0 duration [2 .. 3] end [2 .. 3]","T",10,0,2],[" Visitor start [2 .. 3] duration [2 .. 3] end [4 .. 6]","T",11,0,3],[" Get_distracted start [4 .. 6] duration [4 .. 6] end [8 .. 12]","T",12,0,4],[" Visitor start [4 .. 6] duration [2 .. 3] end [6 .. 9]","T",13,0,5],[" Visitor start [6 .. 9] duration [2 .. 3] end [8 .. 12]","T",14,0,6],[" Delay created by 4 visitors is [8 .. 12]","T",15,0,7],["Worker","R",1,1,0],["Get_distracted","C",2,1,1],["Visitor","C",3,1,2],["Visitor","C",4,1,3],["Get_distracted","C",5,1,4],["Visitor","C",6,1,5],["Visitor","C",7,1,6] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5]], +[[4,3],[5,2],[7,6]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example27_Railroad_Crossing.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example27_Railroad_Crossing.json new file mode 100644 index 0000000..4b6155e --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example27_Railroad_Crossing.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 0.5, +[ ["Bar moved down by 5","T",12,0,0],["Train starts go through crossing at 5","T",13,0,1],["Train ends go through crossing at 15","T",14,0,2],["Bar starts go up at 15","T",15,0,3],["Crossing was successfully closed","T",16,0,4],["Train","R",1,1,0],["Enter_Restricted_Region","A",2,1,1],["Goes_through_Restricted_Region","A",3,1,2],["Enter_Crossing_Region","A",4,1,3],["Goes_through_Crossing_Region","C",5,1,4],["Leaves_Crossing_Region","A",6,1,5],["Crossing","R",7,2,0],["Move_Down","C",8,2,1],["Down","A",9,2,2],["Move_Up","C",10,2,5],["Up","A",11,2,6] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[8,7],[9,7],[10,7],[11,7]], +[[3,2],[4,3],[4,9],[5,4],[6,5],[8,2],[9,8],[10,9],[10,6],[11,10]] +,{"VIEWS":[ ]} +], + +["U", 0.5, +[ ["Bar moved down by 5","T",21,0,0],["Train starts go through crossing at 5","T",22,0,1],["Train ends go through crossing at 15","T",23,0,2],["Bar starts go up at 15","T",24,0,3],["Crossing was successfully closed","T",25,0,4],["Bar moved down by 22","T",26,0,5],["Train starts go through crossing at 22","T",27,0,6],["Train ends go through crossing at 32","T",28,0,7],["Bar starts go up at 32","T",29,0,8],["Crossing was successfully closed","T",30,0,9],["Train","R",1,1,0],["Enter_Restricted_Region","A",2,1,1],["Goes_through_Restricted_Region","A",3,1,2],["Enter_Crossing_Region","A",4,1,3],["Goes_through_Crossing_Region","C",5,1,4],["Leaves_Crossing_Region","A",6,1,5],["Enter_Restricted_Region","A",7,1,6],["Goes_through_Restricted_Region","A",8,1,7],["Enter_Crossing_Region","A",9,1,8],["Goes_through_Crossing_Region","C",10,1,9],["Leaves_Crossing_Region","A",11,1,10],["Crossing","R",12,2,0],["Move_Down","C",13,2,1],["Down","A",14,2,2],["Move_Up","C",15,2,5],["Up","A",16,2,6],["Move_Down","C",17,2,7],["Down","A",18,2,8],["Move_Up","C",19,2,10],["Up","A",20,2,11] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[13,12],[14,12],[15,12],[16,12],[17,12],[18,12],[19,12],[20,12]], +[[3,2],[4,3],[4,14],[5,4],[6,5],[7,6],[8,7],[9,8],[9,18],[10,9],[11,10],[13,2],[14,13],[15,14],[15,6],[16,15],[17,16],[17,7],[18,17],[19,18],[19,11],[20,19]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example28_MP_model_of_MP_architecture.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example28_MP_model_of_MP_architecture.json new file mode 100644 index 0000000..efed25d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example28_MP_model_of_MP_architecture.json @@ -0,0 +1,2183 @@ +{"traces":[ + +["U", 0.060606, +[ [" Scope 2 Trace #1","T",26,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["end_of_session","A",5,1,11],["MP_code_editor","R",6,2,0],["MP_GUI","R",8,3,0],["input_MP_code","A",10,3,3],["receive_json_file","A",11,3,8],["visualize_trace","A",12,3,9],["MP_parser","R",13,4,0],["perform_syntax_analysis","A",15,4,3],["write_abstract_syntax_tree","A",16,4,4],["Abstract_syntax_tree","R",17,5,0],["read_abstract_syntax_tree","A",19,5,4],["Trace_generator","R",20,6,0],["generate_Cpp_file","A",22,6,4],["run_Cpp_compiler","A",23,6,5],["run_executable","A",24,6,6],["produce_json_file","A",25,6,7] ], + +[[2,1],[2,6],[3,1],[3,8],[4,1],[5,1],[10,8],[10,13],[11,8],[12,8],[15,13],[16,13],[16,17],[19,17],[19,20],[22,20],[23,20],[24,20],[25,20]], +[[3,2],[4,3],[4,12],[5,4],[10,3],[11,10],[11,25],[12,11],[15,10],[16,15],[19,16],[22,19],[23,22],[24,23],[25,24]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #2","T",28,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["end_of_session","A",6,1,12],["MP_code_editor","R",7,2,0],["MP_GUI","R",9,3,0],["input_MP_code","A",11,3,3],["receive_json_file","A",12,3,8],["visualize_trace","A",13,3,9],["MP_parser","R",15,4,0],["perform_syntax_analysis","A",17,4,3],["write_abstract_syntax_tree","A",18,4,4],["Abstract_syntax_tree","R",19,5,0],["read_abstract_syntax_tree","A",21,5,4],["Trace_generator","R",22,6,0],["generate_Cpp_file","A",24,6,4],["run_Cpp_compiler","A",25,6,5],["run_executable","A",26,6,6],["produce_json_file","A",27,6,7] ], + +[[2,1],[2,7],[3,1],[3,9],[4,1],[5,1],[5,9],[6,1],[11,9],[11,15],[12,9],[13,9],[17,15],[18,15],[18,19],[21,19],[21,22],[24,22],[25,22],[26,22],[27,22]], +[[3,2],[4,3],[4,13],[5,4],[5,13],[6,5],[11,3],[12,11],[12,27],[13,12],[17,11],[18,17],[21,18],[24,21],[25,24],[26,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #3","T",18,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["end_of_session","A",5,1,5],["MP_code_editor","R",6,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",8,4,0],["input_MP_code","A",10,4,3],["MP_parser","R",12,5,0],["perform_syntax_analysis","A",14,5,3],["Abstract_syntax_tree","R",16,6,0],["Trace_generator","R",17,7,0] ], + +[[2,1],[2,6],[3,1],[3,8],[4,1],[4,12],[4,8],[5,1],[10,8],[10,12],[14,12]], +[[3,2],[4,3],[4,14],[4,10],[5,4],[10,3],[14,10]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #4","T",20,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["end_of_session","A",6,1,6],["MP_code_editor","R",7,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",9,4,0],["input_MP_code","A",11,4,3],["MP_parser","R",14,5,0],["perform_syntax_analysis","A",16,5,3],["Abstract_syntax_tree","R",18,6,0],["Trace_generator","R",19,7,0] ], + +[[2,1],[2,7],[3,1],[3,9],[4,1],[4,14],[4,9],[5,1],[5,9],[6,1],[11,9],[11,14],[16,14]], +[[3,2],[4,3],[4,16],[4,11],[5,4],[6,5],[11,3],[16,11]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #5","T",26,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["end_of_session","A",5,1,11],["MP_code_editor","R",6,2,0],["MP_GUI","R",8,3,0],["input_MP_code","A",10,3,3],["receive_json_file","A",11,3,8],["visualize_trace","A",12,3,9],["MP_parser","R",13,4,0],["perform_syntax_analysis","A",15,4,3],["write_abstract_syntax_tree","A",16,4,4],["Abstract_syntax_tree","R",17,5,0],["read_abstract_syntax_tree","A",19,5,4],["Trace_generator","R",20,6,0],["generate_Cpp_file","A",22,6,4],["run_Cpp_compiler","A",23,6,5],["run_executable","A",24,6,6],["produce_json_file","A",25,6,7] ], + +[[2,1],[2,6],[3,1],[3,8],[4,1],[5,1],[10,8],[10,13],[11,8],[12,8],[15,13],[16,13],[16,17],[19,17],[19,20],[22,20],[23,20],[24,20],[25,20]], +[[3,2],[4,3],[4,12],[5,4],[10,3],[11,10],[11,25],[12,11],[15,10],[16,15],[19,16],[22,19],[23,22],[24,23],[25,24]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #6","T",28,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["end_of_session","A",6,1,12],["MP_code_editor","R",7,2,0],["MP_GUI","R",9,3,0],["input_MP_code","A",11,3,3],["receive_json_file","A",12,3,8],["visualize_trace","A",13,3,9],["MP_parser","R",15,4,0],["perform_syntax_analysis","A",17,4,3],["write_abstract_syntax_tree","A",18,4,4],["Abstract_syntax_tree","R",19,5,0],["read_abstract_syntax_tree","A",21,5,4],["Trace_generator","R",22,6,0],["generate_Cpp_file","A",24,6,4],["run_Cpp_compiler","A",25,6,5],["run_executable","A",26,6,6],["produce_json_file","A",27,6,7] ], + +[[2,1],[2,7],[3,1],[3,9],[4,1],[5,1],[5,9],[6,1],[11,9],[11,15],[12,9],[13,9],[17,15],[18,15],[18,19],[21,19],[21,22],[24,22],[25,22],[26,22],[27,22]], +[[3,2],[4,3],[4,13],[5,4],[5,13],[6,5],[11,3],[12,11],[12,27],[13,12],[17,11],[18,17],[21,18],[24,21],[25,24],[26,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #7","T",18,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["end_of_session","A",5,1,5],["MP_code_editor","R",6,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",8,4,0],["input_MP_code","A",10,4,3],["MP_parser","R",12,5,0],["perform_syntax_analysis","A",14,5,3],["Abstract_syntax_tree","R",16,6,0],["Trace_generator","R",17,7,0] ], + +[[2,1],[2,6],[3,1],[3,8],[4,1],[4,12],[4,8],[5,1],[10,8],[10,12],[14,12]], +[[3,2],[4,3],[4,14],[4,10],[5,4],[10,3],[14,10]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #8","T",20,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["end_of_session","A",6,1,6],["MP_code_editor","R",7,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",9,4,0],["input_MP_code","A",11,4,3],["MP_parser","R",14,5,0],["perform_syntax_analysis","A",16,5,3],["Abstract_syntax_tree","R",18,6,0],["Trace_generator","R",19,7,0] ], + +[[2,1],[2,7],[3,1],[3,9],[4,1],[4,14],[4,9],[5,1],[5,9],[6,1],[11,9],[11,14],[16,14]], +[[3,2],[4,3],[4,16],[4,11],[5,4],[6,5],[11,3],[16,11]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #9","T",28,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["end_of_session","A",6,1,12],["MP_code_editor","R",7,2,0],["MP_GUI","R",9,3,0],["input_MP_code","A",12,3,4],["receive_json_file","A",13,3,9],["visualize_trace","A",14,3,10],["MP_parser","R",15,4,0],["perform_syntax_analysis","A",17,4,4],["write_abstract_syntax_tree","A",18,4,5],["Abstract_syntax_tree","R",19,5,0],["read_abstract_syntax_tree","A",21,5,5],["Trace_generator","R",22,6,0],["generate_Cpp_file","A",24,6,5],["run_Cpp_compiler","A",25,6,6],["run_executable","A",26,6,7],["produce_json_file","A",27,6,8] ], + +[[2,1],[2,9],[3,1],[3,7],[4,1],[4,9],[5,1],[6,1],[12,9],[12,15],[13,9],[14,9],[17,15],[18,15],[18,19],[21,19],[21,22],[24,22],[25,22],[26,22],[27,22]], +[[3,2],[4,3],[4,2],[5,4],[5,14],[6,5],[12,4],[13,12],[13,27],[14,13],[17,12],[18,17],[21,18],[24,21],[25,24],[26,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #10","T",30,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["end_of_session","A",7,1,13],["MP_code_editor","R",8,2,0],["MP_GUI","R",10,3,0],["input_MP_code","A",13,3,4],["receive_json_file","A",14,3,9],["visualize_trace","A",15,3,10],["MP_parser","R",17,4,0],["perform_syntax_analysis","A",19,4,4],["write_abstract_syntax_tree","A",20,4,5],["Abstract_syntax_tree","R",21,5,0],["read_abstract_syntax_tree","A",23,5,5],["Trace_generator","R",24,6,0],["generate_Cpp_file","A",26,6,5],["run_Cpp_compiler","A",27,6,6],["run_executable","A",28,6,7],["produce_json_file","A",29,6,8] ], + +[[2,1],[2,10],[3,1],[3,8],[4,1],[4,10],[5,1],[6,1],[6,10],[7,1],[13,10],[13,17],[14,10],[15,10],[19,17],[20,17],[20,21],[23,21],[23,24],[26,24],[27,24],[28,24],[29,24]], +[[3,2],[4,3],[4,2],[5,4],[5,15],[6,5],[6,15],[7,6],[13,4],[14,13],[14,29],[15,14],[19,13],[20,19],[23,20],[26,23],[27,26],[28,27],[29,28]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #11","T",20,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["end_of_session","A",6,1,6],["MP_code_editor","R",7,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",9,4,0],["input_MP_code","A",12,4,4],["MP_parser","R",14,5,0],["perform_syntax_analysis","A",16,5,4],["Abstract_syntax_tree","R",18,6,0],["Trace_generator","R",19,7,0] ], + +[[2,1],[2,9],[3,1],[3,7],[4,1],[4,9],[5,1],[5,14],[5,9],[6,1],[12,9],[12,14],[16,14]], +[[3,2],[4,3],[4,2],[5,4],[5,16],[5,12],[6,5],[12,4],[16,12]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #12","T",22,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["end_of_session","A",7,1,7],["MP_code_editor","R",8,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",10,4,0],["input_MP_code","A",13,4,4],["MP_parser","R",16,5,0],["perform_syntax_analysis","A",18,5,4],["Abstract_syntax_tree","R",20,6,0],["Trace_generator","R",21,7,0] ], + +[[2,1],[2,10],[3,1],[3,8],[4,1],[4,10],[5,1],[5,16],[5,10],[6,1],[6,10],[7,1],[13,10],[13,16],[18,16]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[5,13],[6,5],[7,6],[13,4],[18,13]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #13","T",28,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["end_of_session","A",6,1,12],["MP_code_editor","R",7,2,0],["MP_GUI","R",9,3,0],["input_MP_code","A",12,3,4],["receive_json_file","A",13,3,9],["visualize_trace","A",14,3,10],["MP_parser","R",15,4,0],["perform_syntax_analysis","A",17,4,4],["write_abstract_syntax_tree","A",18,4,5],["Abstract_syntax_tree","R",19,5,0],["read_abstract_syntax_tree","A",21,5,5],["Trace_generator","R",22,6,0],["generate_Cpp_file","A",24,6,5],["run_Cpp_compiler","A",25,6,6],["run_executable","A",26,6,7],["produce_json_file","A",27,6,8] ], + +[[2,1],[2,9],[3,1],[3,7],[4,1],[4,9],[5,1],[6,1],[12,9],[12,15],[13,9],[14,9],[17,15],[18,15],[18,19],[21,19],[21,22],[24,22],[25,22],[26,22],[27,22]], +[[3,2],[4,3],[4,2],[5,4],[5,14],[6,5],[12,4],[13,12],[13,27],[14,13],[17,12],[18,17],[21,18],[24,21],[25,24],[26,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #14","T",30,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["end_of_session","A",7,1,13],["MP_code_editor","R",8,2,0],["MP_GUI","R",10,3,0],["input_MP_code","A",13,3,4],["receive_json_file","A",14,3,9],["visualize_trace","A",15,3,10],["MP_parser","R",17,4,0],["perform_syntax_analysis","A",19,4,4],["write_abstract_syntax_tree","A",20,4,5],["Abstract_syntax_tree","R",21,5,0],["read_abstract_syntax_tree","A",23,5,5],["Trace_generator","R",24,6,0],["generate_Cpp_file","A",26,6,5],["run_Cpp_compiler","A",27,6,6],["run_executable","A",28,6,7],["produce_json_file","A",29,6,8] ], + +[[2,1],[2,10],[3,1],[3,8],[4,1],[4,10],[5,1],[6,1],[6,10],[7,1],[13,10],[13,17],[14,10],[15,10],[19,17],[20,17],[20,21],[23,21],[23,24],[26,24],[27,24],[28,24],[29,24]], +[[3,2],[4,3],[4,2],[5,4],[5,15],[6,5],[6,15],[7,6],[13,4],[14,13],[14,29],[15,14],[19,13],[20,19],[23,20],[26,23],[27,26],[28,27],[29,28]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #15","T",20,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["end_of_session","A",6,1,6],["MP_code_editor","R",7,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",9,4,0],["input_MP_code","A",12,4,4],["MP_parser","R",14,5,0],["perform_syntax_analysis","A",16,5,4],["Abstract_syntax_tree","R",18,6,0],["Trace_generator","R",19,7,0] ], + +[[2,1],[2,9],[3,1],[3,7],[4,1],[4,9],[5,1],[5,14],[5,9],[6,1],[12,9],[12,14],[16,14]], +[[3,2],[4,3],[4,2],[5,4],[5,16],[5,12],[6,5],[12,4],[16,12]] +,{"VIEWS":[ ]} +], + +["U", 0.060606, +[ [" Scope 2 Trace #16","T",22,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["end_of_session","A",7,1,7],["MP_code_editor","R",8,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",10,4,0],["input_MP_code","A",13,4,4],["MP_parser","R",16,5,0],["perform_syntax_analysis","A",18,5,4],["Abstract_syntax_tree","R",20,6,0],["Trace_generator","R",21,7,0] ], + +[[2,1],[2,10],[3,1],[3,8],[4,1],[4,10],[5,1],[5,16],[5,10],[6,1],[6,10],[7,1],[13,10],[13,16],[18,16]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[5,13],[6,5],[7,6],[13,4],[18,13]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #17","T",44,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["MP_model_editing","A",5,1,11],["press_RUN_button","A",6,1,12],["browse_event_trace","A",7,1,20],["end_of_session","A",8,1,21],["MP_code_editor","R",9,2,0],["MP_GUI","R",12,3,0],["input_MP_code","A",14,3,3],["receive_json_file","A",15,3,8],["visualize_trace","A",16,3,9],["input_MP_code","A",18,3,13],["receive_json_file","A",19,3,18],["visualize_trace","A",20,3,19],["MP_parser","R",21,4,0],["perform_syntax_analysis","A",23,4,3],["write_abstract_syntax_tree","A",24,4,4],["perform_syntax_analysis","A",26,4,13],["write_abstract_syntax_tree","A",27,4,14],["Abstract_syntax_tree","R",28,5,0],["read_abstract_syntax_tree","A",30,5,4],["read_abstract_syntax_tree","A",32,5,14],["Trace_generator","R",33,6,0],["generate_Cpp_file","A",35,6,4],["run_Cpp_compiler","A",36,6,5],["run_executable","A",37,6,6],["produce_json_file","A",38,6,7],["generate_Cpp_file","A",40,6,14],["run_Cpp_compiler","A",41,6,15],["run_executable","A",42,6,16],["produce_json_file","A",43,6,17] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[5,1],[5,9],[6,1],[6,12],[7,1],[8,1],[14,12],[14,21],[15,12],[16,12],[18,12],[18,21],[19,12],[20,12],[23,21],[24,21],[24,28],[26,21],[27,21],[27,28],[30,28],[30,33],[32,28],[32,33],[35,33],[36,33],[37,33],[38,33],[40,33],[41,33],[42,33],[43,33]], +[[3,2],[4,3],[4,16],[5,4],[5,2],[6,5],[6,16],[7,6],[7,20],[8,7],[14,3],[15,14],[15,38],[16,15],[18,6],[18,24],[18,6],[19,18],[19,43],[20,19],[23,14],[24,23],[26,18],[27,26],[27,30],[30,24],[32,27],[32,38],[35,30],[36,35],[37,36],[38,37],[40,32],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #18","T",46,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["MP_model_editing","A",5,1,11],["press_RUN_button","A",6,1,12],["browse_event_trace","A",7,1,20],["save_MP_file","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",19,3,13],["receive_json_file","A",20,3,18],["visualize_trace","A",21,3,19],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,13],["write_abstract_syntax_tree","A",29,4,14],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,14],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,14],["run_Cpp_compiler","A",43,6,15],["run_executable","A",44,6,16],["produce_json_file","A",45,6,17] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,10],[6,1],[6,13],[7,1],[8,1],[8,13],[9,1],[15,13],[15,23],[16,13],[17,13],[19,13],[19,23],[20,13],[21,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,2],[6,5],[6,17],[7,6],[7,21],[8,7],[8,21],[9,8],[15,3],[16,15],[16,40],[17,16],[19,6],[19,26],[19,6],[20,19],[20,45],[21,20],[25,15],[26,25],[28,19],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #19","T",36,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["MP_model_editing","A",5,1,11],["press_RUN_button","A",6,1,12],["end_of_session","A",8,1,15],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",7,3,14],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["receive_json_file","A",15,4,8],["visualize_trace","A",16,4,9],["input_MP_code","A",18,4,13],["MP_parser","R",20,5,0],["perform_syntax_analysis","A",22,5,3],["write_abstract_syntax_tree","A",23,5,4],["perform_syntax_analysis","A",25,5,13],["Abstract_syntax_tree","R",27,6,0],["read_abstract_syntax_tree","A",29,6,4],["Trace_generator","R",30,7,0],["generate_Cpp_file","A",32,7,4],["run_Cpp_compiler","A",33,7,5],["run_executable","A",34,7,6],["produce_json_file","A",35,7,7] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[5,1],[5,9],[6,1],[6,12],[7,1],[7,20],[7,12],[8,1],[14,12],[14,20],[15,12],[16,12],[18,12],[18,20],[22,20],[23,20],[23,27],[25,20],[29,27],[29,30],[32,30],[33,30],[34,30],[35,30]], +[[3,2],[4,3],[4,16],[5,4],[5,2],[6,5],[6,16],[7,6],[7,25],[7,18],[8,7],[14,3],[15,14],[15,35],[16,15],[18,6],[18,23],[18,6],[22,14],[23,22],[25,18],[29,23],[32,29],[33,32],[34,33],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #20","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["MP_model_editing","A",5,1,11],["press_RUN_button","A",6,1,12],["save_MP_file","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",7,3,14],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",19,4,13],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,13],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,10],[6,1],[6,13],[7,1],[7,22],[7,13],[8,1],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[19,13],[19,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,2],[6,5],[6,17],[7,6],[7,27],[7,19],[8,7],[9,8],[15,3],[16,15],[16,37],[17,16],[19,6],[19,25],[19,6],[24,15],[25,24],[27,19],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #21","T",44,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["browsing_MP_code","A",5,1,11],["press_RUN_button","A",6,1,12],["browse_event_trace","A",7,1,20],["end_of_session","A",8,1,21],["MP_code_editor","R",9,2,0],["MP_GUI","R",12,3,0],["input_MP_code","A",14,3,3],["receive_json_file","A",15,3,8],["visualize_trace","A",16,3,9],["input_MP_code","A",18,3,13],["receive_json_file","A",19,3,18],["visualize_trace","A",20,3,19],["MP_parser","R",21,4,0],["perform_syntax_analysis","A",23,4,3],["write_abstract_syntax_tree","A",24,4,4],["perform_syntax_analysis","A",26,4,13],["write_abstract_syntax_tree","A",27,4,14],["Abstract_syntax_tree","R",28,5,0],["read_abstract_syntax_tree","A",30,5,4],["read_abstract_syntax_tree","A",32,5,14],["Trace_generator","R",33,6,0],["generate_Cpp_file","A",35,6,4],["run_Cpp_compiler","A",36,6,5],["run_executable","A",37,6,6],["produce_json_file","A",38,6,7],["generate_Cpp_file","A",40,6,14],["run_Cpp_compiler","A",41,6,15],["run_executable","A",42,6,16],["produce_json_file","A",43,6,17] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[5,1],[5,9],[6,1],[6,12],[7,1],[8,1],[14,12],[14,21],[15,12],[16,12],[18,12],[18,21],[19,12],[20,12],[23,21],[24,21],[24,28],[26,21],[27,21],[27,28],[30,28],[30,33],[32,28],[32,33],[35,33],[36,33],[37,33],[38,33],[40,33],[41,33],[42,33],[43,33]], +[[3,2],[4,3],[4,16],[5,4],[5,2],[6,5],[6,16],[7,6],[7,20],[8,7],[14,3],[15,14],[15,38],[16,15],[18,6],[18,24],[18,6],[19,18],[19,43],[20,19],[23,14],[24,23],[26,18],[27,26],[27,30],[30,24],[32,27],[32,38],[35,30],[36,35],[37,36],[38,37],[40,32],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #22","T",46,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["browsing_MP_code","A",5,1,11],["press_RUN_button","A",6,1,12],["browse_event_trace","A",7,1,20],["save_MP_file","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",19,3,13],["receive_json_file","A",20,3,18],["visualize_trace","A",21,3,19],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,13],["write_abstract_syntax_tree","A",29,4,14],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,14],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,14],["run_Cpp_compiler","A",43,6,15],["run_executable","A",44,6,16],["produce_json_file","A",45,6,17] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,10],[6,1],[6,13],[7,1],[8,1],[8,13],[9,1],[15,13],[15,23],[16,13],[17,13],[19,13],[19,23],[20,13],[21,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,2],[6,5],[6,17],[7,6],[7,21],[8,7],[8,21],[9,8],[15,3],[16,15],[16,40],[17,16],[19,6],[19,26],[19,6],[20,19],[20,45],[21,20],[25,15],[26,25],[28,19],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #23","T",36,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["browsing_MP_code","A",5,1,11],["press_RUN_button","A",6,1,12],["end_of_session","A",8,1,15],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",7,3,14],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["receive_json_file","A",15,4,8],["visualize_trace","A",16,4,9],["input_MP_code","A",18,4,13],["MP_parser","R",20,5,0],["perform_syntax_analysis","A",22,5,3],["write_abstract_syntax_tree","A",23,5,4],["perform_syntax_analysis","A",25,5,13],["Abstract_syntax_tree","R",27,6,0],["read_abstract_syntax_tree","A",29,6,4],["Trace_generator","R",30,7,0],["generate_Cpp_file","A",32,7,4],["run_Cpp_compiler","A",33,7,5],["run_executable","A",34,7,6],["produce_json_file","A",35,7,7] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[5,1],[5,9],[6,1],[6,12],[7,1],[7,20],[7,12],[8,1],[14,12],[14,20],[15,12],[16,12],[18,12],[18,20],[22,20],[23,20],[23,27],[25,20],[29,27],[29,30],[32,30],[33,30],[34,30],[35,30]], +[[3,2],[4,3],[4,16],[5,4],[5,2],[6,5],[6,16],[7,6],[7,25],[7,18],[8,7],[14,3],[15,14],[15,35],[16,15],[18,6],[18,23],[18,6],[22,14],[23,22],[25,18],[29,23],[32,29],[33,32],[34,33],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #24","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["browsing_MP_code","A",5,1,11],["press_RUN_button","A",6,1,12],["save_MP_file","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",7,3,14],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",19,4,13],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,13],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,10],[6,1],[6,13],[7,1],[7,22],[7,13],[8,1],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[19,13],[19,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,2],[6,5],[6,17],[7,6],[7,27],[7,19],[8,7],[9,8],[15,3],[16,15],[16,37],[17,16],[19,6],[19,25],[19,6],[24,15],[25,24],[27,19],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #25","T",46,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,23],[16,13],[17,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[15,3],[16,15],[16,40],[17,16],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,15],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #26","T",48,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,25],[17,14],[18,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,23],[9,8],[9,23],[10,9],[16,3],[17,16],[17,42],[18,17],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,16],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #27","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,27],[8,20],[9,8],[15,3],[16,15],[16,37],[17,16],[20,7],[20,25],[20,7],[24,15],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #28","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,29],[8,21],[9,8],[10,9],[16,3],[17,16],[17,39],[18,17],[21,7],[21,27],[21,7],[26,16],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #29","T",46,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,23],[16,13],[17,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[15,3],[16,15],[16,40],[17,16],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,15],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #30","T",48,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,25],[17,14],[18,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,23],[9,8],[9,23],[10,9],[16,3],[17,16],[17,42],[18,17],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,16],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #31","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,27],[8,20],[9,8],[15,3],[16,15],[16,37],[17,16],[20,7],[20,25],[20,7],[24,15],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #32","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,29],[8,21],[9,8],[10,9],[16,3],[17,16],[17,39],[18,17],[21,7],[21,27],[21,7],[26,16],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #33","T",46,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,23],[16,13],[17,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[15,3],[16,15],[16,40],[17,16],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,15],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #34","T",48,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,25],[17,14],[18,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,23],[9,8],[9,23],[10,9],[16,3],[17,16],[17,42],[18,17],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,16],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #35","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,27],[8,20],[9,8],[15,3],[16,15],[16,37],[17,16],[20,7],[20,25],[20,7],[24,15],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #36","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,29],[8,21],[9,8],[10,9],[16,3],[17,16],[17,39],[18,17],[21,7],[21,27],[21,7],[26,16],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #37","T",46,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,23],[16,13],[17,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[15,3],[16,15],[16,40],[17,16],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,15],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #38","T",48,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,25],[17,14],[18,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,23],[9,8],[9,23],[10,9],[16,3],[17,16],[17,42],[18,17],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,16],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #39","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,27],[8,20],[9,8],[15,3],[16,15],[16,37],[17,16],[20,7],[20,25],[20,7],[24,15],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #40","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,29],[8,21],[9,8],[10,9],[16,3],[17,16],[17,39],[18,17],[21,7],[21,27],[21,7],[26,16],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #41","T",48,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[16,14],[16,25],[17,14],[18,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,24],[10,9],[16,3],[17,16],[17,42],[18,17],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,16],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #42","T",50,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",17,3,3],["receive_json_file","A",18,3,8],["visualize_trace","A",19,3,9],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,3],["write_abstract_syntax_tree","A",30,4,4],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,4],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,4],["run_Cpp_compiler","A",42,6,5],["run_executable","A",43,6,6],["produce_json_file","A",44,6,7],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[17,15],[17,27],[18,15],[19,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,19],[5,4],[5,19],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[17,3],[18,17],[18,44],[19,18],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,17],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #43","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[16,3],[17,16],[17,39],[18,17],[22,8],[22,27],[22,8],[26,16],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #44","T",42,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["receive_json_file","A",18,4,8],["visualize_trace","A",19,4,9],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,3],["write_abstract_syntax_tree","A",29,5,4],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,4],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,4],["run_Cpp_compiler","A",39,7,5],["run_executable","A",40,7,6],["produce_json_file","A",41,7,7] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[17,15],[17,26],[18,15],[19,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,19],[5,4],[5,19],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[17,3],[18,17],[18,41],[19,18],[23,8],[23,29],[23,8],[28,17],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #45","T",48,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[16,14],[16,25],[17,14],[18,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,24],[10,9],[16,3],[17,16],[17,42],[18,17],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,16],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #46","T",50,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",17,3,3],["receive_json_file","A",18,3,8],["visualize_trace","A",19,3,9],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,3],["write_abstract_syntax_tree","A",30,4,4],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,4],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,4],["run_Cpp_compiler","A",42,6,5],["run_executable","A",43,6,6],["produce_json_file","A",44,6,7],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[17,15],[17,27],[18,15],[19,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,19],[5,4],[5,19],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[17,3],[18,17],[18,44],[19,18],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,17],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #47","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[16,3],[17,16],[17,39],[18,17],[22,8],[22,27],[22,8],[26,16],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #48","T",42,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["receive_json_file","A",18,4,8],["visualize_trace","A",19,4,9],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,3],["write_abstract_syntax_tree","A",29,5,4],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,4],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,4],["run_Cpp_compiler","A",39,7,5],["run_executable","A",40,7,6],["produce_json_file","A",41,7,7] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[17,15],[17,26],[18,15],[19,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,19],[5,4],[5,19],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[17,3],[18,17],[18,41],[19,18],[23,8],[23,29],[23,8],[28,17],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #49","T",36,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["MP_model_editing","A",5,1,5],["press_RUN_button","A",6,1,6],["browse_event_trace","A",7,1,14],["end_of_session","A",8,1,15],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["input_MP_code","A",17,4,7],["receive_json_file","A",18,4,12],["visualize_trace","A",19,4,13],["MP_parser","R",20,5,0],["perform_syntax_analysis","A",22,5,3],["perform_syntax_analysis","A",25,5,7],["write_abstract_syntax_tree","A",26,5,8],["Abstract_syntax_tree","R",27,6,0],["read_abstract_syntax_tree","A",29,6,8],["Trace_generator","R",30,7,0],["generate_Cpp_file","A",32,7,8],["run_Cpp_compiler","A",33,7,9],["run_executable","A",34,7,10],["produce_json_file","A",35,7,11] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[4,20],[4,12],[5,1],[5,9],[6,1],[6,12],[7,1],[8,1],[14,12],[14,20],[17,12],[17,20],[18,12],[19,12],[22,20],[25,20],[26,20],[26,27],[29,27],[29,30],[32,30],[33,30],[34,30],[35,30]], +[[3,2],[4,3],[4,22],[4,14],[5,4],[5,2],[6,5],[6,4],[7,6],[7,19],[8,7],[14,3],[17,6],[17,4],[17,6],[18,17],[18,35],[19,18],[22,14],[25,17],[26,25],[29,26],[32,29],[33,32],[34,33],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #50","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["MP_model_editing","A",5,1,5],["press_RUN_button","A",6,1,6],["browse_event_trace","A",7,1,14],["save_MP_file","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",18,4,7],["receive_json_file","A",19,4,12],["visualize_trace","A",20,4,13],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,7],["write_abstract_syntax_tree","A",28,5,8],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,8],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,8],["run_Cpp_compiler","A",35,7,9],["run_executable","A",36,7,10],["produce_json_file","A",37,7,11] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,10],[6,1],[6,13],[7,1],[8,1],[8,13],[9,1],[15,13],[15,22],[18,13],[18,22],[19,13],[20,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[5,2],[6,5],[6,4],[7,6],[7,20],[8,7],[8,20],[9,8],[15,3],[18,6],[18,4],[18,6],[19,18],[19,37],[20,19],[24,15],[27,18],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #51","T",28,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["MP_model_editing","A",5,1,5],["press_RUN_button","A",6,1,6],["end_of_session","A",8,1,9],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",7,3,8],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["input_MP_code","A",17,4,7],["MP_parser","R",19,5,0],["perform_syntax_analysis","A",21,5,3],["perform_syntax_analysis","A",24,5,7],["Abstract_syntax_tree","R",26,6,0],["Trace_generator","R",27,7,0] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[4,19],[4,12],[5,1],[5,9],[6,1],[6,12],[7,1],[7,19],[7,12],[8,1],[14,12],[14,19],[17,12],[17,19],[21,19],[24,19]], +[[3,2],[4,3],[4,21],[4,14],[5,4],[5,2],[6,5],[6,4],[7,6],[7,24],[7,17],[8,7],[14,3],[17,6],[17,4],[17,6],[21,14],[24,17]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #52","T",30,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["MP_model_editing","A",5,1,5],["press_RUN_button","A",6,1,6],["save_MP_file","A",8,1,9],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",7,3,8],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",18,4,7],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,7],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,10],[6,1],[6,13],[7,1],[7,21],[7,13],[8,1],[8,13],[9,1],[15,13],[15,21],[18,13],[18,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[5,2],[6,5],[6,4],[7,6],[7,26],[7,18],[8,7],[9,8],[15,3],[18,6],[18,4],[18,6],[23,15],[26,18]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #53","T",36,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browsing_MP_code","A",5,1,5],["press_RUN_button","A",6,1,6],["browse_event_trace","A",7,1,14],["end_of_session","A",8,1,15],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["input_MP_code","A",17,4,7],["receive_json_file","A",18,4,12],["visualize_trace","A",19,4,13],["MP_parser","R",20,5,0],["perform_syntax_analysis","A",22,5,3],["perform_syntax_analysis","A",25,5,7],["write_abstract_syntax_tree","A",26,5,8],["Abstract_syntax_tree","R",27,6,0],["read_abstract_syntax_tree","A",29,6,8],["Trace_generator","R",30,7,0],["generate_Cpp_file","A",32,7,8],["run_Cpp_compiler","A",33,7,9],["run_executable","A",34,7,10],["produce_json_file","A",35,7,11] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[4,20],[4,12],[5,1],[5,9],[6,1],[6,12],[7,1],[8,1],[14,12],[14,20],[17,12],[17,20],[18,12],[19,12],[22,20],[25,20],[26,20],[26,27],[29,27],[29,30],[32,30],[33,30],[34,30],[35,30]], +[[3,2],[4,3],[4,22],[4,14],[5,4],[5,2],[6,5],[6,4],[7,6],[7,19],[8,7],[14,3],[17,6],[17,4],[17,6],[18,17],[18,35],[19,18],[22,14],[25,17],[26,25],[29,26],[32,29],[33,32],[34,33],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #54","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browsing_MP_code","A",5,1,5],["press_RUN_button","A",6,1,6],["browse_event_trace","A",7,1,14],["save_MP_file","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",18,4,7],["receive_json_file","A",19,4,12],["visualize_trace","A",20,4,13],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,7],["write_abstract_syntax_tree","A",28,5,8],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,8],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,8],["run_Cpp_compiler","A",35,7,9],["run_executable","A",36,7,10],["produce_json_file","A",37,7,11] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,10],[6,1],[6,13],[7,1],[8,1],[8,13],[9,1],[15,13],[15,22],[18,13],[18,22],[19,13],[20,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[5,2],[6,5],[6,4],[7,6],[7,20],[8,7],[8,20],[9,8],[15,3],[18,6],[18,4],[18,6],[19,18],[19,37],[20,19],[24,15],[27,18],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #55","T",28,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browsing_MP_code","A",5,1,5],["press_RUN_button","A",6,1,6],["end_of_session","A",8,1,9],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",7,3,8],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["input_MP_code","A",17,4,7],["MP_parser","R",19,5,0],["perform_syntax_analysis","A",21,5,3],["perform_syntax_analysis","A",24,5,7],["Abstract_syntax_tree","R",26,6,0],["Trace_generator","R",27,7,0] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[4,19],[4,12],[5,1],[5,9],[6,1],[6,12],[7,1],[7,19],[7,12],[8,1],[14,12],[14,19],[17,12],[17,19],[21,19],[24,19]], +[[3,2],[4,3],[4,21],[4,14],[5,4],[5,2],[6,5],[6,4],[7,6],[7,24],[7,17],[8,7],[14,3],[17,6],[17,4],[17,6],[21,14],[24,17]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #56","T",30,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["browsing_MP_code","A",5,1,5],["press_RUN_button","A",6,1,6],["save_MP_file","A",8,1,9],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",7,3,8],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",18,4,7],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,7],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,10],[6,1],[6,13],[7,1],[7,21],[7,13],[8,1],[8,13],[9,1],[15,13],[15,21],[18,13],[18,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[5,2],[6,5],[6,4],[7,6],[7,26],[7,18],[8,7],[9,8],[15,3],[18,6],[18,4],[18,6],[23,15],[26,18]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #57","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,21],[9,8],[15,3],[19,7],[19,4],[19,7],[20,19],[20,37],[21,20],[24,15],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #58","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[16,3],[20,7],[20,4],[20,7],[21,20],[21,39],[22,21],[26,16],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #59","T",30,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[15,13],[15,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[15,3],[19,7],[19,4],[19,7],[23,15],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #60","T",32,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[16,14],[16,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[16,3],[20,7],[20,4],[20,7],[25,16],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #61","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,21],[9,8],[15,3],[19,7],[19,4],[19,7],[20,19],[20,37],[21,20],[24,15],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #62","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[16,3],[20,7],[20,4],[20,7],[21,20],[21,39],[22,21],[26,16],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #63","T",30,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[15,13],[15,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[15,3],[19,7],[19,4],[19,7],[23,15],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #64","T",32,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[16,14],[16,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[16,3],[20,7],[20,4],[20,7],[25,16],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #65","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,21],[9,8],[15,3],[19,7],[19,4],[19,7],[20,19],[20,37],[21,20],[24,15],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #66","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[16,3],[20,7],[20,4],[20,7],[21,20],[21,39],[22,21],[26,16],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #67","T",30,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[15,13],[15,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[15,3],[19,7],[19,4],[19,7],[23,15],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #68","T",32,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[16,14],[16,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[16,3],[20,7],[20,4],[20,7],[25,16],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #69","T",38,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,21],[9,8],[15,3],[19,7],[19,4],[19,7],[20,19],[20,37],[21,20],[24,15],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #70","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[16,3],[20,7],[20,4],[20,7],[21,20],[21,39],[22,21],[26,16],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #71","T",30,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[15,13],[15,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[15,3],[19,7],[19,4],[19,7],[23,15],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #72","T",32,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[16,14],[16,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[16,3],[20,7],[20,4],[20,7],[25,16],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #73","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[16,14],[16,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,23],[10,9],[16,3],[21,8],[21,4],[21,8],[22,21],[22,39],[23,22],[26,16],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #74","T",42,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,3],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[4,26],[4,15],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[17,15],[17,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,28],[4,17],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[17,3],[22,8],[22,4],[22,8],[23,22],[23,41],[24,23],[28,17],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #75","T",32,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[16,14],[16,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[16,3],[21,8],[21,4],[21,8],[25,16],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #76","T",34,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,3],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[4,25],[4,15],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[17,15],[17,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,27],[4,17],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[17,3],[22,8],[22,4],[22,8],[27,17],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #77","T",40,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[16,14],[16,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,23],[10,9],[16,3],[21,8],[21,4],[21,8],[22,21],[22,39],[23,22],[26,16],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #78","T",42,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,3],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[4,26],[4,15],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[17,15],[17,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,28],[4,17],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[17,3],[22,8],[22,4],[22,8],[23,22],[23,41],[24,23],[28,17],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #79","T",32,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[16,14],[16,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[16,3],[21,8],[21,4],[21,8],[25,16],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #80","T",34,0,0],["User","R",1,1,0],["MP_model_editing","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,3],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[4,25],[4,15],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[17,15],[17,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,27],[4,17],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[17,3],[22,8],[22,4],[22,8],[27,17],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #81","T",44,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["MP_model_editing","A",5,1,11],["press_RUN_button","A",6,1,12],["browse_event_trace","A",7,1,20],["end_of_session","A",8,1,21],["MP_code_editor","R",9,2,0],["MP_GUI","R",12,3,0],["input_MP_code","A",14,3,3],["receive_json_file","A",15,3,8],["visualize_trace","A",16,3,9],["input_MP_code","A",18,3,13],["receive_json_file","A",19,3,18],["visualize_trace","A",20,3,19],["MP_parser","R",21,4,0],["perform_syntax_analysis","A",23,4,3],["write_abstract_syntax_tree","A",24,4,4],["perform_syntax_analysis","A",26,4,13],["write_abstract_syntax_tree","A",27,4,14],["Abstract_syntax_tree","R",28,5,0],["read_abstract_syntax_tree","A",30,5,4],["read_abstract_syntax_tree","A",32,5,14],["Trace_generator","R",33,6,0],["generate_Cpp_file","A",35,6,4],["run_Cpp_compiler","A",36,6,5],["run_executable","A",37,6,6],["produce_json_file","A",38,6,7],["generate_Cpp_file","A",40,6,14],["run_Cpp_compiler","A",41,6,15],["run_executable","A",42,6,16],["produce_json_file","A",43,6,17] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[5,1],[5,9],[6,1],[6,12],[7,1],[8,1],[14,12],[14,21],[15,12],[16,12],[18,12],[18,21],[19,12],[20,12],[23,21],[24,21],[24,28],[26,21],[27,21],[27,28],[30,28],[30,33],[32,28],[32,33],[35,33],[36,33],[37,33],[38,33],[40,33],[41,33],[42,33],[43,33]], +[[3,2],[4,3],[4,16],[5,4],[5,2],[6,5],[6,16],[7,6],[7,20],[8,7],[14,3],[15,14],[15,38],[16,15],[18,6],[18,24],[18,6],[19,18],[19,43],[20,19],[23,14],[24,23],[26,18],[27,26],[27,30],[30,24],[32,27],[32,38],[35,30],[36,35],[37,36],[38,37],[40,32],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #82","T",46,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["MP_model_editing","A",5,1,11],["press_RUN_button","A",6,1,12],["browse_event_trace","A",7,1,20],["save_MP_file","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",19,3,13],["receive_json_file","A",20,3,18],["visualize_trace","A",21,3,19],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,13],["write_abstract_syntax_tree","A",29,4,14],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,14],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,14],["run_Cpp_compiler","A",43,6,15],["run_executable","A",44,6,16],["produce_json_file","A",45,6,17] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,10],[6,1],[6,13],[7,1],[8,1],[8,13],[9,1],[15,13],[15,23],[16,13],[17,13],[19,13],[19,23],[20,13],[21,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,2],[6,5],[6,17],[7,6],[7,21],[8,7],[8,21],[9,8],[15,3],[16,15],[16,40],[17,16],[19,6],[19,26],[19,6],[20,19],[20,45],[21,20],[25,15],[26,25],[28,19],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #83","T",36,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["MP_model_editing","A",5,1,11],["press_RUN_button","A",6,1,12],["end_of_session","A",8,1,15],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",7,3,14],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["receive_json_file","A",15,4,8],["visualize_trace","A",16,4,9],["input_MP_code","A",18,4,13],["MP_parser","R",20,5,0],["perform_syntax_analysis","A",22,5,3],["write_abstract_syntax_tree","A",23,5,4],["perform_syntax_analysis","A",25,5,13],["Abstract_syntax_tree","R",27,6,0],["read_abstract_syntax_tree","A",29,6,4],["Trace_generator","R",30,7,0],["generate_Cpp_file","A",32,7,4],["run_Cpp_compiler","A",33,7,5],["run_executable","A",34,7,6],["produce_json_file","A",35,7,7] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[5,1],[5,9],[6,1],[6,12],[7,1],[7,20],[7,12],[8,1],[14,12],[14,20],[15,12],[16,12],[18,12],[18,20],[22,20],[23,20],[23,27],[25,20],[29,27],[29,30],[32,30],[33,30],[34,30],[35,30]], +[[3,2],[4,3],[4,16],[5,4],[5,2],[6,5],[6,16],[7,6],[7,25],[7,18],[8,7],[14,3],[15,14],[15,35],[16,15],[18,6],[18,23],[18,6],[22,14],[23,22],[25,18],[29,23],[32,29],[33,32],[34,33],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #84","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["MP_model_editing","A",5,1,11],["press_RUN_button","A",6,1,12],["save_MP_file","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",7,3,14],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",19,4,13],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,13],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,10],[6,1],[6,13],[7,1],[7,22],[7,13],[8,1],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[19,13],[19,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,2],[6,5],[6,17],[7,6],[7,27],[7,19],[8,7],[9,8],[15,3],[16,15],[16,37],[17,16],[19,6],[19,25],[19,6],[24,15],[25,24],[27,19],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #85","T",44,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["browsing_MP_code","A",5,1,11],["press_RUN_button","A",6,1,12],["browse_event_trace","A",7,1,20],["end_of_session","A",8,1,21],["MP_code_editor","R",9,2,0],["MP_GUI","R",12,3,0],["input_MP_code","A",14,3,3],["receive_json_file","A",15,3,8],["visualize_trace","A",16,3,9],["input_MP_code","A",18,3,13],["receive_json_file","A",19,3,18],["visualize_trace","A",20,3,19],["MP_parser","R",21,4,0],["perform_syntax_analysis","A",23,4,3],["write_abstract_syntax_tree","A",24,4,4],["perform_syntax_analysis","A",26,4,13],["write_abstract_syntax_tree","A",27,4,14],["Abstract_syntax_tree","R",28,5,0],["read_abstract_syntax_tree","A",30,5,4],["read_abstract_syntax_tree","A",32,5,14],["Trace_generator","R",33,6,0],["generate_Cpp_file","A",35,6,4],["run_Cpp_compiler","A",36,6,5],["run_executable","A",37,6,6],["produce_json_file","A",38,6,7],["generate_Cpp_file","A",40,6,14],["run_Cpp_compiler","A",41,6,15],["run_executable","A",42,6,16],["produce_json_file","A",43,6,17] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[5,1],[5,9],[6,1],[6,12],[7,1],[8,1],[14,12],[14,21],[15,12],[16,12],[18,12],[18,21],[19,12],[20,12],[23,21],[24,21],[24,28],[26,21],[27,21],[27,28],[30,28],[30,33],[32,28],[32,33],[35,33],[36,33],[37,33],[38,33],[40,33],[41,33],[42,33],[43,33]], +[[3,2],[4,3],[4,16],[5,4],[5,2],[6,5],[6,16],[7,6],[7,20],[8,7],[14,3],[15,14],[15,38],[16,15],[18,6],[18,24],[18,6],[19,18],[19,43],[20,19],[23,14],[24,23],[26,18],[27,26],[27,30],[30,24],[32,27],[32,38],[35,30],[36,35],[37,36],[38,37],[40,32],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #86","T",46,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["browsing_MP_code","A",5,1,11],["press_RUN_button","A",6,1,12],["browse_event_trace","A",7,1,20],["save_MP_file","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",19,3,13],["receive_json_file","A",20,3,18],["visualize_trace","A",21,3,19],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,13],["write_abstract_syntax_tree","A",29,4,14],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,14],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,14],["run_Cpp_compiler","A",43,6,15],["run_executable","A",44,6,16],["produce_json_file","A",45,6,17] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,10],[6,1],[6,13],[7,1],[8,1],[8,13],[9,1],[15,13],[15,23],[16,13],[17,13],[19,13],[19,23],[20,13],[21,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,2],[6,5],[6,17],[7,6],[7,21],[8,7],[8,21],[9,8],[15,3],[16,15],[16,40],[17,16],[19,6],[19,26],[19,6],[20,19],[20,45],[21,20],[25,15],[26,25],[28,19],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #87","T",36,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["browsing_MP_code","A",5,1,11],["press_RUN_button","A",6,1,12],["end_of_session","A",8,1,15],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",7,3,14],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["receive_json_file","A",15,4,8],["visualize_trace","A",16,4,9],["input_MP_code","A",18,4,13],["MP_parser","R",20,5,0],["perform_syntax_analysis","A",22,5,3],["write_abstract_syntax_tree","A",23,5,4],["perform_syntax_analysis","A",25,5,13],["Abstract_syntax_tree","R",27,6,0],["read_abstract_syntax_tree","A",29,6,4],["Trace_generator","R",30,7,0],["generate_Cpp_file","A",32,7,4],["run_Cpp_compiler","A",33,7,5],["run_executable","A",34,7,6],["produce_json_file","A",35,7,7] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[5,1],[5,9],[6,1],[6,12],[7,1],[7,20],[7,12],[8,1],[14,12],[14,20],[15,12],[16,12],[18,12],[18,20],[22,20],[23,20],[23,27],[25,20],[29,27],[29,30],[32,30],[33,30],[34,30],[35,30]], +[[3,2],[4,3],[4,16],[5,4],[5,2],[6,5],[6,16],[7,6],[7,25],[7,18],[8,7],[14,3],[15,14],[15,35],[16,15],[18,6],[18,23],[18,6],[22,14],[23,22],[25,18],[29,23],[32,29],[33,32],[34,33],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #88","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["browsing_MP_code","A",5,1,11],["press_RUN_button","A",6,1,12],["save_MP_file","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",7,3,14],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",19,4,13],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,13],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,10],[6,1],[6,13],[7,1],[7,22],[7,13],[8,1],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[19,13],[19,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,2],[6,5],[6,17],[7,6],[7,27],[7,19],[8,7],[9,8],[15,3],[16,15],[16,37],[17,16],[19,6],[19,25],[19,6],[24,15],[25,24],[27,19],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #89","T",46,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,23],[16,13],[17,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[15,3],[16,15],[16,40],[17,16],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,15],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #90","T",48,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,25],[17,14],[18,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,23],[9,8],[9,23],[10,9],[16,3],[17,16],[17,42],[18,17],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,16],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #91","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,27],[8,20],[9,8],[15,3],[16,15],[16,37],[17,16],[20,7],[20,25],[20,7],[24,15],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #92","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,29],[8,21],[9,8],[10,9],[16,3],[17,16],[17,39],[18,17],[21,7],[21,27],[21,7],[26,16],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #93","T",46,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,23],[16,13],[17,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[15,3],[16,15],[16,40],[17,16],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,15],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #94","T",48,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,25],[17,14],[18,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,23],[9,8],[9,23],[10,9],[16,3],[17,16],[17,42],[18,17],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,16],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #95","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,27],[8,20],[9,8],[15,3],[16,15],[16,37],[17,16],[20,7],[20,25],[20,7],[24,15],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #96","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["load_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,29],[8,21],[9,8],[10,9],[16,3],[17,16],[17,39],[18,17],[21,7],[21,27],[21,7],[26,16],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #97","T",46,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,23],[16,13],[17,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[15,3],[16,15],[16,40],[17,16],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,15],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #98","T",48,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,25],[17,14],[18,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,23],[9,8],[9,23],[10,9],[16,3],[17,16],[17,42],[18,17],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,16],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #99","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,27],[8,20],[9,8],[15,3],[16,15],[16,37],[17,16],[20,7],[20,25],[20,7],[24,15],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #100","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,29],[8,21],[9,8],[10,9],[16,3],[17,16],[17,39],[18,17],[21,7],[21,27],[21,7],[26,16],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #101","T",46,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",15,3,3],["receive_json_file","A",16,3,8],["visualize_trace","A",17,3,9],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,3],["write_abstract_syntax_tree","A",26,4,4],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,4],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,4],["run_Cpp_compiler","A",38,6,5],["run_executable","A",39,6,6],["produce_json_file","A",40,6,7],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,23],[16,13],[17,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[15,3],[16,15],[16,40],[17,16],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,15],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #102","T",48,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,25],[17,14],[18,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,23],[9,8],[9,23],[10,9],[16,3],[17,16],[17,42],[18,17],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,16],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #103","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["receive_json_file","A",16,4,8],["visualize_trace","A",17,4,9],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["write_abstract_syntax_tree","A",25,5,4],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,4],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,4],["run_Cpp_compiler","A",35,7,5],["run_executable","A",36,7,6],["produce_json_file","A",37,7,7] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[15,13],[15,22],[16,13],[17,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,17],[5,4],[5,17],[6,5],[6,2],[7,6],[7,5],[8,7],[8,27],[8,20],[9,8],[15,3],[16,15],[16,37],[17,16],[20,7],[20,25],[20,7],[24,15],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #104","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[6,2],[7,6],[7,5],[8,7],[8,29],[8,21],[9,8],[10,9],[16,3],[17,16],[17,39],[18,17],[21,7],[21,27],[21,7],[26,16],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #105","T",48,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[16,14],[16,25],[17,14],[18,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,24],[10,9],[16,3],[17,16],[17,42],[18,17],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,16],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #106","T",50,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",17,3,3],["receive_json_file","A",18,3,8],["visualize_trace","A",19,3,9],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,3],["write_abstract_syntax_tree","A",30,4,4],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,4],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,4],["run_Cpp_compiler","A",42,6,5],["run_executable","A",43,6,6],["produce_json_file","A",44,6,7],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[17,15],[17,27],[18,15],[19,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,19],[5,4],[5,19],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[17,3],[18,17],[18,44],[19,18],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,17],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #107","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[16,3],[17,16],[17,39],[18,17],[22,8],[22,27],[22,8],[26,16],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #108","T",42,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["receive_json_file","A",18,4,8],["visualize_trace","A",19,4,9],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,3],["write_abstract_syntax_tree","A",29,5,4],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,4],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,4],["run_Cpp_compiler","A",39,7,5],["run_executable","A",40,7,6],["produce_json_file","A",41,7,7] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[17,15],[17,26],[18,15],[19,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,19],[5,4],[5,19],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[17,3],[18,17],[18,41],[19,18],[23,8],[23,29],[23,8],[28,17],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #109","T",48,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",16,3,3],["receive_json_file","A",17,3,8],["visualize_trace","A",18,3,9],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,3],["write_abstract_syntax_tree","A",28,4,4],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,4],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,4],["run_Cpp_compiler","A",40,6,5],["run_executable","A",41,6,6],["produce_json_file","A",42,6,7],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[16,14],[16,25],[17,14],[18,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,24],[10,9],[16,3],[17,16],[17,42],[18,17],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,16],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #110","T",50,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",17,3,3],["receive_json_file","A",18,3,8],["visualize_trace","A",19,3,9],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,3],["write_abstract_syntax_tree","A",30,4,4],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,4],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,4],["run_Cpp_compiler","A",42,6,5],["run_executable","A",43,6,6],["produce_json_file","A",44,6,7],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[17,15],[17,27],[18,15],[19,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,19],[5,4],[5,19],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[17,3],[18,17],[18,44],[19,18],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,17],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #111","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["receive_json_file","A",17,4,8],["visualize_trace","A",18,4,9],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["write_abstract_syntax_tree","A",27,5,4],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,4],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,4],["run_Cpp_compiler","A",37,7,5],["run_executable","A",38,7,6],["produce_json_file","A",39,7,7] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[16,14],[16,24],[17,14],[18,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,18],[5,4],[5,18],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[16,3],[17,16],[17,39],[18,17],[22,8],[22,27],[22,8],[26,16],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #112","T",42,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browse_event_trace","A",4,1,10],["save_MP_file","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["receive_json_file","A",18,4,8],["visualize_trace","A",19,4,9],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,3],["write_abstract_syntax_tree","A",29,5,4],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,4],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,4],["run_Cpp_compiler","A",39,7,5],["run_executable","A",40,7,6],["produce_json_file","A",41,7,7] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[17,15],[17,26],[18,15],[19,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,19],[5,4],[5,19],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[17,3],[18,17],[18,41],[19,18],[23,8],[23,29],[23,8],[28,17],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #113","T",36,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["MP_model_editing","A",5,1,5],["press_RUN_button","A",6,1,6],["browse_event_trace","A",7,1,14],["end_of_session","A",8,1,15],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["input_MP_code","A",17,4,7],["receive_json_file","A",18,4,12],["visualize_trace","A",19,4,13],["MP_parser","R",20,5,0],["perform_syntax_analysis","A",22,5,3],["perform_syntax_analysis","A",25,5,7],["write_abstract_syntax_tree","A",26,5,8],["Abstract_syntax_tree","R",27,6,0],["read_abstract_syntax_tree","A",29,6,8],["Trace_generator","R",30,7,0],["generate_Cpp_file","A",32,7,8],["run_Cpp_compiler","A",33,7,9],["run_executable","A",34,7,10],["produce_json_file","A",35,7,11] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[4,20],[4,12],[5,1],[5,9],[6,1],[6,12],[7,1],[8,1],[14,12],[14,20],[17,12],[17,20],[18,12],[19,12],[22,20],[25,20],[26,20],[26,27],[29,27],[29,30],[32,30],[33,30],[34,30],[35,30]], +[[3,2],[4,3],[4,22],[4,14],[5,4],[5,2],[6,5],[6,4],[7,6],[7,19],[8,7],[14,3],[17,6],[17,4],[17,6],[18,17],[18,35],[19,18],[22,14],[25,17],[26,25],[29,26],[32,29],[33,32],[34,33],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #114","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["MP_model_editing","A",5,1,5],["press_RUN_button","A",6,1,6],["browse_event_trace","A",7,1,14],["save_MP_file","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",18,4,7],["receive_json_file","A",19,4,12],["visualize_trace","A",20,4,13],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,7],["write_abstract_syntax_tree","A",28,5,8],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,8],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,8],["run_Cpp_compiler","A",35,7,9],["run_executable","A",36,7,10],["produce_json_file","A",37,7,11] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,10],[6,1],[6,13],[7,1],[8,1],[8,13],[9,1],[15,13],[15,22],[18,13],[18,22],[19,13],[20,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[5,2],[6,5],[6,4],[7,6],[7,20],[8,7],[8,20],[9,8],[15,3],[18,6],[18,4],[18,6],[19,18],[19,37],[20,19],[24,15],[27,18],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #115","T",28,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["MP_model_editing","A",5,1,5],["press_RUN_button","A",6,1,6],["end_of_session","A",8,1,9],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",7,3,8],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["input_MP_code","A",17,4,7],["MP_parser","R",19,5,0],["perform_syntax_analysis","A",21,5,3],["perform_syntax_analysis","A",24,5,7],["Abstract_syntax_tree","R",26,6,0],["Trace_generator","R",27,7,0] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[4,19],[4,12],[5,1],[5,9],[6,1],[6,12],[7,1],[7,19],[7,12],[8,1],[14,12],[14,19],[17,12],[17,19],[21,19],[24,19]], +[[3,2],[4,3],[4,21],[4,14],[5,4],[5,2],[6,5],[6,4],[7,6],[7,24],[7,17],[8,7],[14,3],[17,6],[17,4],[17,6],[21,14],[24,17]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #116","T",30,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["MP_model_editing","A",5,1,5],["press_RUN_button","A",6,1,6],["save_MP_file","A",8,1,9],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",7,3,8],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",18,4,7],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,7],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,10],[6,1],[6,13],[7,1],[7,21],[7,13],[8,1],[8,13],[9,1],[15,13],[15,21],[18,13],[18,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[5,2],[6,5],[6,4],[7,6],[7,26],[7,18],[8,7],[9,8],[15,3],[18,6],[18,4],[18,6],[23,15],[26,18]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #117","T",36,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browsing_MP_code","A",5,1,5],["press_RUN_button","A",6,1,6],["browse_event_trace","A",7,1,14],["end_of_session","A",8,1,15],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["input_MP_code","A",17,4,7],["receive_json_file","A",18,4,12],["visualize_trace","A",19,4,13],["MP_parser","R",20,5,0],["perform_syntax_analysis","A",22,5,3],["perform_syntax_analysis","A",25,5,7],["write_abstract_syntax_tree","A",26,5,8],["Abstract_syntax_tree","R",27,6,0],["read_abstract_syntax_tree","A",29,6,8],["Trace_generator","R",30,7,0],["generate_Cpp_file","A",32,7,8],["run_Cpp_compiler","A",33,7,9],["run_executable","A",34,7,10],["produce_json_file","A",35,7,11] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[4,20],[4,12],[5,1],[5,9],[6,1],[6,12],[7,1],[8,1],[14,12],[14,20],[17,12],[17,20],[18,12],[19,12],[22,20],[25,20],[26,20],[26,27],[29,27],[29,30],[32,30],[33,30],[34,30],[35,30]], +[[3,2],[4,3],[4,22],[4,14],[5,4],[5,2],[6,5],[6,4],[7,6],[7,19],[8,7],[14,3],[17,6],[17,4],[17,6],[18,17],[18,35],[19,18],[22,14],[25,17],[26,25],[29,26],[32,29],[33,32],[34,33],[35,34]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #118","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browsing_MP_code","A",5,1,5],["press_RUN_button","A",6,1,6],["browse_event_trace","A",7,1,14],["save_MP_file","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",18,4,7],["receive_json_file","A",19,4,12],["visualize_trace","A",20,4,13],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,7],["write_abstract_syntax_tree","A",28,5,8],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,8],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,8],["run_Cpp_compiler","A",35,7,9],["run_executable","A",36,7,10],["produce_json_file","A",37,7,11] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,10],[6,1],[6,13],[7,1],[8,1],[8,13],[9,1],[15,13],[15,22],[18,13],[18,22],[19,13],[20,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[5,2],[6,5],[6,4],[7,6],[7,20],[8,7],[8,20],[9,8],[15,3],[18,6],[18,4],[18,6],[19,18],[19,37],[20,19],[24,15],[27,18],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #119","T",28,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browsing_MP_code","A",5,1,5],["press_RUN_button","A",6,1,6],["end_of_session","A",8,1,9],["MP_code_editor","R",9,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",7,3,8],["MP_GUI","R",12,4,0],["input_MP_code","A",14,4,3],["input_MP_code","A",17,4,7],["MP_parser","R",19,5,0],["perform_syntax_analysis","A",21,5,3],["perform_syntax_analysis","A",24,5,7],["Abstract_syntax_tree","R",26,6,0],["Trace_generator","R",27,7,0] ], + +[[2,1],[2,9],[3,1],[3,12],[4,1],[4,19],[4,12],[5,1],[5,9],[6,1],[6,12],[7,1],[7,19],[7,12],[8,1],[14,12],[14,19],[17,12],[17,19],[21,19],[24,19]], +[[3,2],[4,3],[4,21],[4,14],[5,4],[5,2],[6,5],[6,4],[7,6],[7,24],[7,17],[8,7],[14,3],[17,6],[17,4],[17,6],[21,14],[24,17]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #120","T",30,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["browsing_MP_code","A",5,1,5],["press_RUN_button","A",6,1,6],["save_MP_file","A",8,1,9],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",7,3,8],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",18,4,7],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,7],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,10],[6,1],[6,13],[7,1],[7,21],[7,13],[8,1],[8,13],[9,1],[15,13],[15,21],[18,13],[18,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[5,2],[6,5],[6,4],[7,6],[7,26],[7,18],[8,7],[9,8],[15,3],[18,6],[18,4],[18,6],[23,15],[26,18]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #121","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,21],[9,8],[15,3],[19,7],[19,4],[19,7],[20,19],[20,37],[21,20],[24,15],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #122","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[16,3],[20,7],[20,4],[20,7],[21,20],[21,39],[22,21],[26,16],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #123","T",30,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[15,13],[15,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[15,3],[19,7],[19,4],[19,7],[23,15],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #124","T",32,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[16,14],[16,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[16,3],[20,7],[20,4],[20,7],[25,16],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #125","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,21],[9,8],[15,3],[19,7],[19,4],[19,7],[20,19],[20,37],[21,20],[24,15],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #126","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[16,3],[20,7],[20,4],[20,7],[21,20],[21,39],[22,21],[26,16],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #127","T",30,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[15,13],[15,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[15,3],[19,7],[19,4],[19,7],[23,15],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #128","T",32,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["load_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[16,14],[16,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[16,3],[20,7],[20,4],[20,7],[25,16],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #129","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,21],[9,8],[15,3],[19,7],[19,4],[19,7],[20,19],[20,37],[21,20],[24,15],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #130","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[16,3],[20,7],[20,4],[20,7],[21,20],[21,39],[22,21],[26,16],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #131","T",30,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[15,13],[15,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[15,3],[19,7],[19,4],[19,7],[23,15],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #132","T",32,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[16,14],[16,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[16,3],[20,7],[20,4],[20,7],[25,16],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #133","T",38,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,3],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,22],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[15,13],[15,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,24],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,21],[9,8],[15,3],[19,7],[19,4],[19,7],[20,19],[20,37],[21,20],[24,15],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #134","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[16,14],[16,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[16,3],[20,7],[20,4],[20,7],[21,20],[21,39],[22,21],[26,16],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #135","T",30,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",15,4,3],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,3],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,10],[3,1],[3,13],[4,1],[4,21],[4,13],[5,1],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[15,13],[15,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,23],[4,15],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[15,3],[19,7],[19,4],[19,7],[23,15],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #136","T",32,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[16,14],[16,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[6,2],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[16,3],[20,7],[20,4],[20,7],[25,16],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #137","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[16,14],[16,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,23],[10,9],[16,3],[21,8],[21,4],[21,8],[22,21],[22,39],[23,22],[26,16],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #138","T",42,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,3],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[4,26],[4,15],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[17,15],[17,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,28],[4,17],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[17,3],[22,8],[22,4],[22,8],[23,22],[23,41],[24,23],[28,17],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #139","T",32,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[16,14],[16,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[16,3],[21,8],[21,4],[21,8],[25,16],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #140","T",34,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,3],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[4,25],[4,15],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[17,15],[17,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,27],[4,17],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[17,3],[22,8],[22,4],[22,8],[27,17],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #141","T",40,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,3],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,24],[4,14],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[16,14],[16,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,26],[4,16],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,23],[10,9],[16,3],[21,8],[21,4],[21,8],[22,21],[22,39],[23,22],[26,16],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #142","T",42,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",4,3,4],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,3],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[4,26],[4,15],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[17,15],[17,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,28],[4,17],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[17,3],[22,8],[22,4],[22,8],[23,22],[23,41],[24,23],[28,17],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #143","T",32,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",16,4,3],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,3],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,11],[3,1],[3,14],[4,1],[4,23],[4,14],[5,1],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[16,14],[16,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,25],[4,16],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[16,3],[21,8],[21,4],[21,8],[25,16],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #144","T",34,0,0],["User","R",1,1,0],["browsing_MP_code","A",2,1,1],["press_RUN_button","A",3,1,2],["save_MP_file","A",5,1,5],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",4,3,4],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",17,4,3],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,3],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,12],[3,1],[3,15],[4,1],[4,25],[4,15],[5,1],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[17,15],[17,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,27],[4,17],[5,4],[6,5],[7,6],[7,2],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[17,3],[22,8],[22,4],[22,8],[27,17],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #145","T",46,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",16,3,4],["receive_json_file","A",17,3,9],["visualize_trace","A",18,3,10],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,4],["write_abstract_syntax_tree","A",26,4,5],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,5],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,5],["run_Cpp_compiler","A",38,6,6],["run_executable","A",39,6,7],["produce_json_file","A",40,6,8],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[16,13],[16,23],[17,13],[18,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[6,5],[6,3],[7,6],[7,18],[8,7],[8,22],[9,8],[16,4],[17,16],[17,40],[18,17],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,16],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #146","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[17,14],[17,25],[18,14],[19,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,3],[7,6],[7,19],[8,7],[8,23],[9,8],[9,23],[10,9],[17,4],[18,17],[18,42],[19,18],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,17],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #147","T",38,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["receive_json_file","A",17,4,9],["visualize_trace","A",18,4,10],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,4],["write_abstract_syntax_tree","A",25,5,5],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,5],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,5],["run_Cpp_compiler","A",35,7,6],["run_executable","A",36,7,7],["produce_json_file","A",37,7,8] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[16,13],[16,22],[17,13],[18,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[6,5],[6,3],[7,6],[7,18],[8,7],[8,27],[8,20],[9,8],[16,4],[17,16],[17,37],[18,17],[20,7],[20,25],[20,7],[24,16],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #148","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,3],[7,6],[7,19],[8,7],[8,29],[8,21],[9,8],[10,9],[17,4],[18,17],[18,39],[19,18],[21,7],[21,27],[21,7],[26,17],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #149","T",46,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",16,3,4],["receive_json_file","A",17,3,9],["visualize_trace","A",18,3,10],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,4],["write_abstract_syntax_tree","A",26,4,5],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,5],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,5],["run_Cpp_compiler","A",38,6,6],["run_executable","A",39,6,7],["produce_json_file","A",40,6,8],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[16,13],[16,23],[17,13],[18,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[6,5],[6,3],[7,6],[7,18],[8,7],[8,22],[9,8],[16,4],[17,16],[17,40],[18,17],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,16],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #150","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[17,14],[17,25],[18,14],[19,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,3],[7,6],[7,19],[8,7],[8,23],[9,8],[9,23],[10,9],[17,4],[18,17],[18,42],[19,18],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,17],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #151","T",38,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["receive_json_file","A",17,4,9],["visualize_trace","A",18,4,10],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,4],["write_abstract_syntax_tree","A",25,5,5],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,5],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,5],["run_Cpp_compiler","A",35,7,6],["run_executable","A",36,7,7],["produce_json_file","A",37,7,8] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[16,13],[16,22],[17,13],[18,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[6,5],[6,3],[7,6],[7,18],[8,7],[8,27],[8,20],[9,8],[16,4],[17,16],[17,37],[18,17],[20,7],[20,25],[20,7],[24,16],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #152","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,3],[7,6],[7,19],[8,7],[8,29],[8,21],[9,8],[10,9],[17,4],[18,17],[18,39],[19,18],[21,7],[21,27],[21,7],[26,17],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #153","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,25],[18,14],[19,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[17,4],[18,17],[18,42],[19,18],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,17],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #154","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,27],[19,15],[20,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[18,4],[19,18],[19,44],[20,19],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,18],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #155","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[17,4],[18,17],[18,39],[19,18],[22,8],[22,27],[22,8],[26,17],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #156","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[18,4],[19,18],[19,41],[20,19],[23,8],[23,29],[23,8],[28,18],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #157","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,25],[18,14],[19,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[17,4],[18,17],[18,42],[19,18],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,17],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #158","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,27],[19,15],[20,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[18,4],[19,18],[19,44],[20,19],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,18],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #159","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[17,4],[18,17],[18,39],[19,18],[22,8],[22,27],[22,8],[26,17],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #160","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[18,4],[19,18],[19,41],[20,19],[23,8],[23,29],[23,8],[28,18],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #161","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,25],[18,14],[19,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[17,4],[18,17],[18,42],[19,18],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,17],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #162","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,27],[19,15],[20,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[18,4],[19,18],[19,44],[20,19],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,18],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #163","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[17,4],[18,17],[18,39],[19,18],[22,8],[22,27],[22,8],[26,17],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #164","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[18,4],[19,18],[19,41],[20,19],[23,8],[23,29],[23,8],[28,18],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #165","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,25],[18,14],[19,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[17,4],[18,17],[18,42],[19,18],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,17],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #166","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,27],[19,15],[20,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[18,4],[19,18],[19,44],[20,19],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,18],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #167","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[17,4],[18,17],[18,39],[19,18],[22,8],[22,27],[22,8],[26,17],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #168","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[18,4],[19,18],[19,41],[20,19],[23,8],[23,29],[23,8],[28,18],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #169","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["MP_model_editing","A",8,1,14],["press_RUN_button","A",9,1,15],["browse_event_trace","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",24,3,16],["receive_json_file","A",25,3,21],["visualize_trace","A",26,3,22],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,16],["write_abstract_syntax_tree","A",33,4,17],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,17],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,17],["run_Cpp_compiler","A",47,6,18],["run_executable","A",48,6,19],["produce_json_file","A",49,6,20] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[11,1],[18,15],[18,27],[19,15],[20,15],[24,15],[24,27],[25,15],[26,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,26],[11,10],[18,4],[19,18],[19,44],[20,19],[24,9],[24,30],[24,9],[25,24],[25,49],[26,25],[29,18],[30,29],[32,24],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #170","T",52,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["MP_model_editing","A",8,1,14],["press_RUN_button","A",9,1,15],["browse_event_trace","A",10,1,23],["save_MP_file","A",11,1,24],["end_of_session","A",12,1,25],["MP_code_editor","R",13,2,0],["MP_GUI","R",16,3,0],["input_MP_code","A",19,3,4],["receive_json_file","A",20,3,9],["visualize_trace","A",21,3,10],["input_MP_code","A",25,3,16],["receive_json_file","A",26,3,21],["visualize_trace","A",27,3,22],["MP_parser","R",29,4,0],["perform_syntax_analysis","A",31,4,4],["write_abstract_syntax_tree","A",32,4,5],["perform_syntax_analysis","A",34,4,16],["write_abstract_syntax_tree","A",35,4,17],["Abstract_syntax_tree","R",36,5,0],["read_abstract_syntax_tree","A",38,5,5],["read_abstract_syntax_tree","A",40,5,17],["Trace_generator","R",41,6,0],["generate_Cpp_file","A",43,6,5],["run_Cpp_compiler","A",44,6,6],["run_executable","A",45,6,7],["produce_json_file","A",46,6,8],["generate_Cpp_file","A",48,6,17],["run_Cpp_compiler","A",49,6,18],["run_executable","A",50,6,19],["produce_json_file","A",51,6,20] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[11,1],[11,16],[12,1],[19,16],[19,29],[20,16],[21,16],[25,16],[25,29],[26,16],[27,16],[31,29],[32,29],[32,36],[34,29],[35,29],[35,36],[38,36],[38,41],[40,36],[40,41],[43,41],[44,41],[45,41],[46,41],[48,41],[49,41],[50,41],[51,41]], +[[3,2],[4,3],[4,2],[5,4],[5,21],[6,5],[6,21],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,27],[11,10],[11,27],[12,11],[19,4],[20,19],[20,46],[21,20],[25,9],[25,32],[25,9],[26,25],[26,51],[27,26],[31,19],[32,31],[34,25],[35,34],[35,38],[38,32],[40,35],[40,46],[43,38],[44,43],[45,44],[46,45],[48,40],[49,48],[50,49],[51,50]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #171","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["MP_model_editing","A",8,1,14],["press_RUN_button","A",9,1,15],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",10,3,17],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",24,4,16],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,16],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[10,26],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[24,15],[24,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,31],[10,24],[11,10],[18,4],[19,18],[19,41],[20,19],[24,9],[24,29],[24,9],[28,18],[29,28],[31,24],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #172","T",44,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["MP_model_editing","A",8,1,14],["press_RUN_button","A",9,1,15],["save_MP_file","A",11,1,18],["end_of_session","A",12,1,19],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",10,3,17],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["receive_json_file","A",20,4,9],["visualize_trace","A",21,4,10],["input_MP_code","A",25,4,16],["MP_parser","R",28,5,0],["perform_syntax_analysis","A",30,5,4],["write_abstract_syntax_tree","A",31,5,5],["perform_syntax_analysis","A",33,5,16],["Abstract_syntax_tree","R",35,6,0],["read_abstract_syntax_tree","A",37,6,5],["Trace_generator","R",38,7,0],["generate_Cpp_file","A",40,7,5],["run_Cpp_compiler","A",41,7,6],["run_executable","A",42,7,7],["produce_json_file","A",43,7,8] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[10,28],[10,16],[11,1],[11,16],[12,1],[19,16],[19,28],[20,16],[21,16],[25,16],[25,28],[30,28],[31,28],[31,35],[33,28],[37,35],[37,38],[40,38],[41,38],[42,38],[43,38]], +[[3,2],[4,3],[4,2],[5,4],[5,21],[6,5],[6,21],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,33],[10,25],[11,10],[12,11],[19,4],[20,19],[20,43],[21,20],[25,9],[25,31],[25,9],[30,19],[31,30],[33,25],[37,31],[40,37],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #173","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["browsing_MP_code","A",8,1,14],["press_RUN_button","A",9,1,15],["browse_event_trace","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",24,3,16],["receive_json_file","A",25,3,21],["visualize_trace","A",26,3,22],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,16],["write_abstract_syntax_tree","A",33,4,17],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,17],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,17],["run_Cpp_compiler","A",47,6,18],["run_executable","A",48,6,19],["produce_json_file","A",49,6,20] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[11,1],[18,15],[18,27],[19,15],[20,15],[24,15],[24,27],[25,15],[26,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,26],[11,10],[18,4],[19,18],[19,44],[20,19],[24,9],[24,30],[24,9],[25,24],[25,49],[26,25],[29,18],[30,29],[32,24],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #174","T",52,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["browsing_MP_code","A",8,1,14],["press_RUN_button","A",9,1,15],["browse_event_trace","A",10,1,23],["save_MP_file","A",11,1,24],["end_of_session","A",12,1,25],["MP_code_editor","R",13,2,0],["MP_GUI","R",16,3,0],["input_MP_code","A",19,3,4],["receive_json_file","A",20,3,9],["visualize_trace","A",21,3,10],["input_MP_code","A",25,3,16],["receive_json_file","A",26,3,21],["visualize_trace","A",27,3,22],["MP_parser","R",29,4,0],["perform_syntax_analysis","A",31,4,4],["write_abstract_syntax_tree","A",32,4,5],["perform_syntax_analysis","A",34,4,16],["write_abstract_syntax_tree","A",35,4,17],["Abstract_syntax_tree","R",36,5,0],["read_abstract_syntax_tree","A",38,5,5],["read_abstract_syntax_tree","A",40,5,17],["Trace_generator","R",41,6,0],["generate_Cpp_file","A",43,6,5],["run_Cpp_compiler","A",44,6,6],["run_executable","A",45,6,7],["produce_json_file","A",46,6,8],["generate_Cpp_file","A",48,6,17],["run_Cpp_compiler","A",49,6,18],["run_executable","A",50,6,19],["produce_json_file","A",51,6,20] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[11,1],[11,16],[12,1],[19,16],[19,29],[20,16],[21,16],[25,16],[25,29],[26,16],[27,16],[31,29],[32,29],[32,36],[34,29],[35,29],[35,36],[38,36],[38,41],[40,36],[40,41],[43,41],[44,41],[45,41],[46,41],[48,41],[49,41],[50,41],[51,41]], +[[3,2],[4,3],[4,2],[5,4],[5,21],[6,5],[6,21],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,27],[11,10],[11,27],[12,11],[19,4],[20,19],[20,46],[21,20],[25,9],[25,32],[25,9],[26,25],[26,51],[27,26],[31,19],[32,31],[34,25],[35,34],[35,38],[38,32],[40,35],[40,46],[43,38],[44,43],[45,44],[46,45],[48,40],[49,48],[50,49],[51,50]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #175","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["browsing_MP_code","A",8,1,14],["press_RUN_button","A",9,1,15],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",10,3,17],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",24,4,16],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,16],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[10,26],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[24,15],[24,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,31],[10,24],[11,10],[18,4],[19,18],[19,41],[20,19],[24,9],[24,29],[24,9],[28,18],[29,28],[31,24],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #176","T",44,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["browsing_MP_code","A",8,1,14],["press_RUN_button","A",9,1,15],["save_MP_file","A",11,1,18],["end_of_session","A",12,1,19],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",10,3,17],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["receive_json_file","A",20,4,9],["visualize_trace","A",21,4,10],["input_MP_code","A",25,4,16],["MP_parser","R",28,5,0],["perform_syntax_analysis","A",30,5,4],["write_abstract_syntax_tree","A",31,5,5],["perform_syntax_analysis","A",33,5,16],["Abstract_syntax_tree","R",35,6,0],["read_abstract_syntax_tree","A",37,6,5],["Trace_generator","R",38,7,0],["generate_Cpp_file","A",40,7,5],["run_Cpp_compiler","A",41,7,6],["run_executable","A",42,7,7],["produce_json_file","A",43,7,8] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[10,28],[10,16],[11,1],[11,16],[12,1],[19,16],[19,28],[20,16],[21,16],[25,16],[25,28],[30,28],[31,28],[31,35],[33,28],[37,35],[37,38],[40,38],[41,38],[42,38],[43,38]], +[[3,2],[4,3],[4,2],[5,4],[5,21],[6,5],[6,21],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,33],[10,25],[11,10],[12,11],[19,4],[20,19],[20,43],[21,20],[25,9],[25,31],[25,9],[30,19],[31,30],[33,25],[37,31],[40,37],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #177","T",38,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,4],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[5,22],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[16,13],[16,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,2],[5,4],[5,24],[5,16],[6,5],[6,3],[7,6],[7,5],[8,7],[8,21],[9,8],[16,4],[19,7],[19,5],[19,7],[20,19],[20,37],[21,20],[24,16],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #178","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[17,14],[17,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[6,3],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[17,4],[20,7],[20,5],[20,7],[21,20],[21,39],[22,21],[26,17],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #179","T",30,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,4],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[5,21],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[16,13],[16,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,2],[5,4],[5,23],[5,16],[6,5],[6,3],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[16,4],[19,7],[19,5],[19,7],[23,16],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #180","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[17,14],[17,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[6,3],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[17,4],[20,7],[20,5],[20,7],[25,17],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #181","T",38,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,4],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[5,22],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[16,13],[16,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,2],[5,4],[5,24],[5,16],[6,5],[6,3],[7,6],[7,5],[8,7],[8,21],[9,8],[16,4],[19,7],[19,5],[19,7],[20,19],[20,37],[21,20],[24,16],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #182","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[17,14],[17,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[6,3],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[17,4],[20,7],[20,5],[20,7],[21,20],[21,39],[22,21],[26,17],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #183","T",30,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,4],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[5,21],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[16,13],[16,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,2],[5,4],[5,23],[5,16],[6,5],[6,3],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[16,4],[19,7],[19,5],[19,7],[23,16],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #184","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[17,14],[17,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[6,3],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[17,4],[20,7],[20,5],[20,7],[25,17],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #185","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,23],[10,9],[17,4],[21,8],[21,5],[21,8],[22,21],[22,39],[23,22],[26,17],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #186","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[18,4],[22,8],[22,5],[22,8],[23,22],[23,41],[24,23],[28,18],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #187","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[17,14],[17,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[17,4],[21,8],[21,5],[21,8],[25,17],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #188","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[18,15],[18,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[18,4],[22,8],[22,5],[22,8],[27,18],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #189","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,23],[10,9],[17,4],[21,8],[21,5],[21,8],[22,21],[22,39],[23,22],[26,17],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #190","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[18,4],[22,8],[22,5],[22,8],[23,22],[23,41],[24,23],[28,18],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #191","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[17,14],[17,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[17,4],[21,8],[21,5],[21,8],[25,17],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #192","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[18,15],[18,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[18,4],[22,8],[22,5],[22,8],[27,18],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #193","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,23],[10,9],[17,4],[21,8],[21,5],[21,8],[22,21],[22,39],[23,22],[26,17],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #194","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[18,4],[22,8],[22,5],[22,8],[23,22],[23,41],[24,23],[28,18],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #195","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[17,14],[17,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[17,4],[21,8],[21,5],[21,8],[25,17],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #196","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[18,15],[18,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[18,4],[22,8],[22,5],[22,8],[27,18],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #197","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,23],[10,9],[17,4],[21,8],[21,5],[21,8],[22,21],[22,39],[23,22],[26,17],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #198","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[18,4],[22,8],[22,5],[22,8],[23,22],[23,41],[24,23],[28,18],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #199","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[17,14],[17,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[17,4],[21,8],[21,5],[21,8],[25,17],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #200","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[18,15],[18,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[18,4],[22,8],[22,5],[22,8],[27,18],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #201","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["MP_model_editing","A",8,1,8],["press_RUN_button","A",9,1,9],["browse_event_trace","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",23,4,10],["receive_json_file","A",24,4,15],["visualize_trace","A",25,4,16],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,10],["write_abstract_syntax_tree","A",32,5,11],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,11],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,11],["run_Cpp_compiler","A",39,7,12],["run_executable","A",40,7,13],["produce_json_file","A",41,7,14] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[11,1],[18,15],[18,26],[23,15],[23,26],[24,15],[25,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,25],[11,10],[18,4],[23,9],[23,5],[23,9],[24,23],[24,41],[25,24],[28,18],[31,23],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #202","T",44,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["MP_model_editing","A",8,1,8],["press_RUN_button","A",9,1,9],["browse_event_trace","A",10,1,17],["save_MP_file","A",11,1,18],["end_of_session","A",12,1,19],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["input_MP_code","A",24,4,10],["receive_json_file","A",25,4,15],["visualize_trace","A",26,4,16],["MP_parser","R",28,5,0],["perform_syntax_analysis","A",30,5,4],["perform_syntax_analysis","A",33,5,10],["write_abstract_syntax_tree","A",34,5,11],["Abstract_syntax_tree","R",35,6,0],["read_abstract_syntax_tree","A",37,6,11],["Trace_generator","R",38,7,0],["generate_Cpp_file","A",40,7,11],["run_Cpp_compiler","A",41,7,12],["run_executable","A",42,7,13],["produce_json_file","A",43,7,14] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[5,28],[5,16],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[11,1],[11,16],[12,1],[19,16],[19,28],[24,16],[24,28],[25,16],[26,16],[30,28],[33,28],[34,28],[34,35],[37,35],[37,38],[40,38],[41,38],[42,38],[43,38]], +[[3,2],[4,3],[4,2],[5,4],[5,30],[5,19],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,26],[11,10],[11,26],[12,11],[19,4],[24,9],[24,5],[24,9],[25,24],[25,43],[26,25],[30,19],[33,24],[34,33],[37,34],[40,37],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #203","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["MP_model_editing","A",8,1,8],["press_RUN_button","A",9,1,9],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",10,3,11],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",23,4,10],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,10],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[10,25],[10,15],[11,1],[18,15],[18,25],[23,15],[23,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,30],[10,23],[11,10],[18,4],[23,9],[23,5],[23,9],[27,18],[30,23]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #204","T",36,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["MP_model_editing","A",8,1,8],["press_RUN_button","A",9,1,9],["save_MP_file","A",11,1,12],["end_of_session","A",12,1,13],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",10,3,11],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["input_MP_code","A",24,4,10],["MP_parser","R",27,5,0],["perform_syntax_analysis","A",29,5,4],["perform_syntax_analysis","A",32,5,10],["Abstract_syntax_tree","R",34,6,0],["Trace_generator","R",35,7,0] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[5,27],[5,16],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[10,27],[10,16],[11,1],[11,16],[12,1],[19,16],[19,27],[24,16],[24,27],[29,27],[32,27]], +[[3,2],[4,3],[4,2],[5,4],[5,29],[5,19],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,32],[10,24],[11,10],[12,11],[19,4],[24,9],[24,5],[24,9],[29,19],[32,24]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #205","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["browsing_MP_code","A",8,1,8],["press_RUN_button","A",9,1,9],["browse_event_trace","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",23,4,10],["receive_json_file","A",24,4,15],["visualize_trace","A",25,4,16],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,10],["write_abstract_syntax_tree","A",32,5,11],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,11],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,11],["run_Cpp_compiler","A",39,7,12],["run_executable","A",40,7,13],["produce_json_file","A",41,7,14] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[11,1],[18,15],[18,26],[23,15],[23,26],[24,15],[25,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,25],[11,10],[18,4],[23,9],[23,5],[23,9],[24,23],[24,41],[25,24],[28,18],[31,23],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #206","T",44,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["browsing_MP_code","A",8,1,8],["press_RUN_button","A",9,1,9],["browse_event_trace","A",10,1,17],["save_MP_file","A",11,1,18],["end_of_session","A",12,1,19],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["input_MP_code","A",24,4,10],["receive_json_file","A",25,4,15],["visualize_trace","A",26,4,16],["MP_parser","R",28,5,0],["perform_syntax_analysis","A",30,5,4],["perform_syntax_analysis","A",33,5,10],["write_abstract_syntax_tree","A",34,5,11],["Abstract_syntax_tree","R",35,6,0],["read_abstract_syntax_tree","A",37,6,11],["Trace_generator","R",38,7,0],["generate_Cpp_file","A",40,7,11],["run_Cpp_compiler","A",41,7,12],["run_executable","A",42,7,13],["produce_json_file","A",43,7,14] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[5,28],[5,16],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[11,1],[11,16],[12,1],[19,16],[19,28],[24,16],[24,28],[25,16],[26,16],[30,28],[33,28],[34,28],[34,35],[37,35],[37,38],[40,38],[41,38],[42,38],[43,38]], +[[3,2],[4,3],[4,2],[5,4],[5,30],[5,19],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,26],[11,10],[11,26],[12,11],[19,4],[24,9],[24,5],[24,9],[25,24],[25,43],[26,25],[30,19],[33,24],[34,33],[37,34],[40,37],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #207","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["browsing_MP_code","A",8,1,8],["press_RUN_button","A",9,1,9],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",10,3,11],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",23,4,10],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,10],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[10,25],[10,15],[11,1],[18,15],[18,25],[23,15],[23,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,30],[10,23],[11,10],[18,4],[23,9],[23,5],[23,9],[27,18],[30,23]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #208","T",36,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["MP_model_editing","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["browsing_MP_code","A",8,1,8],["press_RUN_button","A",9,1,9],["save_MP_file","A",11,1,12],["end_of_session","A",12,1,13],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",10,3,11],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["input_MP_code","A",24,4,10],["MP_parser","R",27,5,0],["perform_syntax_analysis","A",29,5,4],["perform_syntax_analysis","A",32,5,10],["Abstract_syntax_tree","R",34,6,0],["Trace_generator","R",35,7,0] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[5,27],[5,16],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[10,27],[10,16],[11,1],[11,16],[12,1],[19,16],[19,27],[24,16],[24,27],[29,27],[32,27]], +[[3,2],[4,3],[4,2],[5,4],[5,29],[5,19],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,32],[10,24],[11,10],[12,11],[19,4],[24,9],[24,5],[24,9],[29,19],[32,24]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #209","T",46,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",16,3,4],["receive_json_file","A",17,3,9],["visualize_trace","A",18,3,10],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,4],["write_abstract_syntax_tree","A",26,4,5],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,5],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,5],["run_Cpp_compiler","A",38,6,6],["run_executable","A",39,6,7],["produce_json_file","A",40,6,8],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[16,13],[16,23],[17,13],[18,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[6,5],[6,3],[7,6],[7,18],[8,7],[8,22],[9,8],[16,4],[17,16],[17,40],[18,17],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,16],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #210","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[17,14],[17,25],[18,14],[19,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,3],[7,6],[7,19],[8,7],[8,23],[9,8],[9,23],[10,9],[17,4],[18,17],[18,42],[19,18],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,17],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #211","T",38,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["receive_json_file","A",17,4,9],["visualize_trace","A",18,4,10],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,4],["write_abstract_syntax_tree","A",25,5,5],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,5],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,5],["run_Cpp_compiler","A",35,7,6],["run_executable","A",36,7,7],["produce_json_file","A",37,7,8] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[16,13],[16,22],[17,13],[18,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[6,5],[6,3],[7,6],[7,18],[8,7],[8,27],[8,20],[9,8],[16,4],[17,16],[17,37],[18,17],[20,7],[20,25],[20,7],[24,16],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #212","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["MP_model_editing","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,3],[7,6],[7,19],[8,7],[8,29],[8,21],[9,8],[10,9],[17,4],[18,17],[18,39],[19,18],[21,7],[21,27],[21,7],[26,17],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #213","T",46,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["end_of_session","A",9,1,22],["MP_code_editor","R",10,2,0],["MP_GUI","R",13,3,0],["input_MP_code","A",16,3,4],["receive_json_file","A",17,3,9],["visualize_trace","A",18,3,10],["input_MP_code","A",20,3,14],["receive_json_file","A",21,3,19],["visualize_trace","A",22,3,20],["MP_parser","R",23,4,0],["perform_syntax_analysis","A",25,4,4],["write_abstract_syntax_tree","A",26,4,5],["perform_syntax_analysis","A",28,4,14],["write_abstract_syntax_tree","A",29,4,15],["Abstract_syntax_tree","R",30,5,0],["read_abstract_syntax_tree","A",32,5,5],["read_abstract_syntax_tree","A",34,5,15],["Trace_generator","R",35,6,0],["generate_Cpp_file","A",37,6,5],["run_Cpp_compiler","A",38,6,6],["run_executable","A",39,6,7],["produce_json_file","A",40,6,8],["generate_Cpp_file","A",42,6,15],["run_Cpp_compiler","A",43,6,16],["run_executable","A",44,6,17],["produce_json_file","A",45,6,18] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[16,13],[16,23],[17,13],[18,13],[20,13],[20,23],[21,13],[22,13],[25,23],[26,23],[26,30],[28,23],[29,23],[29,30],[32,30],[32,35],[34,30],[34,35],[37,35],[38,35],[39,35],[40,35],[42,35],[43,35],[44,35],[45,35]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[6,5],[6,3],[7,6],[7,18],[8,7],[8,22],[9,8],[16,4],[17,16],[17,40],[18,17],[20,7],[20,26],[20,7],[21,20],[21,45],[22,21],[25,16],[26,25],[28,20],[29,28],[29,32],[32,26],[34,29],[34,40],[37,32],[38,37],[39,38],[40,39],[42,34],[43,42],[44,43],[45,44]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #214","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["browse_event_trace","A",8,1,21],["save_MP_file","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",21,3,14],["receive_json_file","A",22,3,19],["visualize_trace","A",23,3,20],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,14],["write_abstract_syntax_tree","A",31,4,15],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,15],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,15],["run_Cpp_compiler","A",45,6,16],["run_executable","A",46,6,17],["produce_json_file","A",47,6,18] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[17,14],[17,25],[18,14],[19,14],[21,14],[21,25],[22,14],[23,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,3],[7,6],[7,19],[8,7],[8,23],[9,8],[9,23],[10,9],[17,4],[18,17],[18,42],[19,18],[21,7],[21,28],[21,7],[22,21],[22,47],[23,22],[27,17],[28,27],[30,21],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #215","T",38,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["receive_json_file","A",17,4,9],["visualize_trace","A",18,4,10],["input_MP_code","A",20,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,4],["write_abstract_syntax_tree","A",25,5,5],["perform_syntax_analysis","A",27,5,14],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,5],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,5],["run_Cpp_compiler","A",35,7,6],["run_executable","A",36,7,7],["produce_json_file","A",37,7,8] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[6,1],[6,10],[7,1],[7,13],[8,1],[8,22],[8,13],[9,1],[16,13],[16,22],[17,13],[18,13],[20,13],[20,22],[24,22],[25,22],[25,29],[27,22],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,2],[5,4],[5,18],[6,5],[6,3],[7,6],[7,18],[8,7],[8,27],[8,20],[9,8],[16,4],[17,16],[17,37],[18,17],[20,7],[20,25],[20,7],[24,16],[25,24],[27,20],[31,25],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #216","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["browsing_MP_code","A",6,1,12],["press_RUN_button","A",7,1,13],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",8,3,15],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",21,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,14],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,11],[7,1],[7,14],[8,1],[8,24],[8,14],[9,1],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[21,14],[21,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,3],[7,6],[7,19],[8,7],[8,29],[8,21],[9,8],[10,9],[17,4],[18,17],[18,39],[19,18],[21,7],[21,27],[21,7],[26,17],[27,26],[29,21],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #217","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,25],[18,14],[19,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[17,4],[18,17],[18,42],[19,18],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,17],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #218","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,27],[19,15],[20,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[18,4],[19,18],[19,44],[20,19],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,18],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #219","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[17,4],[18,17],[18,39],[19,18],[22,8],[22,27],[22,8],[26,17],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #220","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[18,4],[19,18],[19,41],[20,19],[23,8],[23,29],[23,8],[28,18],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #221","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,25],[18,14],[19,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[17,4],[18,17],[18,42],[19,18],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,17],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #222","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,27],[19,15],[20,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[18,4],[19,18],[19,44],[20,19],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,18],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #223","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[17,4],[18,17],[18,39],[19,18],[22,8],[22,27],[22,8],[26,17],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #224","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["load_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[18,4],[19,18],[19,41],[20,19],[23,8],[23,29],[23,8],[28,18],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #225","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,25],[18,14],[19,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[17,4],[18,17],[18,42],[19,18],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,17],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #226","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,27],[19,15],[20,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[18,4],[19,18],[19,44],[20,19],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,18],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #227","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[17,4],[18,17],[18,39],[19,18],[22,8],[22,27],[22,8],[26,17],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #228","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["MP_model_editing","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[18,4],[19,18],[19,41],[20,19],[23,8],[23,29],[23,8],[28,18],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #229","T",48,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["end_of_session","A",10,1,23],["MP_code_editor","R",11,2,0],["MP_GUI","R",14,3,0],["input_MP_code","A",17,3,4],["receive_json_file","A",18,3,9],["visualize_trace","A",19,3,10],["input_MP_code","A",22,3,15],["receive_json_file","A",23,3,20],["visualize_trace","A",24,3,21],["MP_parser","R",25,4,0],["perform_syntax_analysis","A",27,4,4],["write_abstract_syntax_tree","A",28,4,5],["perform_syntax_analysis","A",30,4,15],["write_abstract_syntax_tree","A",31,4,16],["Abstract_syntax_tree","R",32,5,0],["read_abstract_syntax_tree","A",34,5,5],["read_abstract_syntax_tree","A",36,5,16],["Trace_generator","R",37,6,0],["generate_Cpp_file","A",39,6,5],["run_Cpp_compiler","A",40,6,6],["run_executable","A",41,6,7],["produce_json_file","A",42,6,8],["generate_Cpp_file","A",44,6,16],["run_Cpp_compiler","A",45,6,17],["run_executable","A",46,6,18],["produce_json_file","A",47,6,19] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,25],[18,14],[19,14],[22,14],[22,25],[23,14],[24,14],[27,25],[28,25],[28,32],[30,25],[31,25],[31,32],[34,32],[34,37],[36,32],[36,37],[39,37],[40,37],[41,37],[42,37],[44,37],[45,37],[46,37],[47,37]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[17,4],[18,17],[18,42],[19,18],[22,8],[22,28],[22,8],[23,22],[23,47],[24,23],[27,17],[28,27],[30,22],[31,30],[31,34],[34,28],[36,31],[36,42],[39,34],[40,39],[41,40],[42,41],[44,36],[45,44],[46,45],[47,46]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #230","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["browse_event_trace","A",9,1,22],["save_MP_file","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",23,3,15],["receive_json_file","A",24,3,20],["visualize_trace","A",25,3,21],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,15],["write_abstract_syntax_tree","A",33,4,16],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,16],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,16],["run_Cpp_compiler","A",47,6,17],["run_executable","A",48,6,18],["produce_json_file","A",49,6,19] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,27],[19,15],[20,15],[23,15],[23,27],[24,15],[25,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,25],[10,9],[10,25],[11,10],[18,4],[19,18],[19,44],[20,19],[23,8],[23,30],[23,8],[24,23],[24,49],[25,24],[29,18],[30,29],[32,23],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #231","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["receive_json_file","A",18,4,9],["visualize_trace","A",19,4,10],["input_MP_code","A",22,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["write_abstract_syntax_tree","A",27,5,5],["perform_syntax_analysis","A",29,5,15],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,5],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,5],["run_Cpp_compiler","A",37,7,6],["run_executable","A",38,7,7],["produce_json_file","A",39,7,8] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,24],[9,14],[10,1],[17,14],[17,24],[18,14],[19,14],[22,14],[22,24],[26,24],[27,24],[27,31],[29,24],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,19],[6,5],[6,19],[7,6],[7,3],[8,7],[8,6],[9,8],[9,29],[9,22],[10,9],[17,4],[18,17],[18,39],[19,18],[22,8],[22,27],[22,8],[26,17],[27,26],[29,22],[33,27],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #232","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["browsing_MP_code","A",7,1,13],["press_RUN_button","A",8,1,14],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",9,3,16],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",23,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,15],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,26],[9,15],[10,1],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[23,15],[23,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[7,3],[8,7],[8,6],[9,8],[9,31],[9,23],[10,9],[11,10],[18,4],[19,18],[19,41],[20,19],[23,8],[23,29],[23,8],[28,18],[29,28],[31,23],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #233","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["MP_model_editing","A",8,1,14],["press_RUN_button","A",9,1,15],["browse_event_trace","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",24,3,16],["receive_json_file","A",25,3,21],["visualize_trace","A",26,3,22],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,16],["write_abstract_syntax_tree","A",33,4,17],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,17],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,17],["run_Cpp_compiler","A",47,6,18],["run_executable","A",48,6,19],["produce_json_file","A",49,6,20] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[11,1],[18,15],[18,27],[19,15],[20,15],[24,15],[24,27],[25,15],[26,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,26],[11,10],[18,4],[19,18],[19,44],[20,19],[24,9],[24,30],[24,9],[25,24],[25,49],[26,25],[29,18],[30,29],[32,24],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #234","T",52,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["MP_model_editing","A",8,1,14],["press_RUN_button","A",9,1,15],["browse_event_trace","A",10,1,23],["save_MP_file","A",11,1,24],["end_of_session","A",12,1,25],["MP_code_editor","R",13,2,0],["MP_GUI","R",16,3,0],["input_MP_code","A",19,3,4],["receive_json_file","A",20,3,9],["visualize_trace","A",21,3,10],["input_MP_code","A",25,3,16],["receive_json_file","A",26,3,21],["visualize_trace","A",27,3,22],["MP_parser","R",29,4,0],["perform_syntax_analysis","A",31,4,4],["write_abstract_syntax_tree","A",32,4,5],["perform_syntax_analysis","A",34,4,16],["write_abstract_syntax_tree","A",35,4,17],["Abstract_syntax_tree","R",36,5,0],["read_abstract_syntax_tree","A",38,5,5],["read_abstract_syntax_tree","A",40,5,17],["Trace_generator","R",41,6,0],["generate_Cpp_file","A",43,6,5],["run_Cpp_compiler","A",44,6,6],["run_executable","A",45,6,7],["produce_json_file","A",46,6,8],["generate_Cpp_file","A",48,6,17],["run_Cpp_compiler","A",49,6,18],["run_executable","A",50,6,19],["produce_json_file","A",51,6,20] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[11,1],[11,16],[12,1],[19,16],[19,29],[20,16],[21,16],[25,16],[25,29],[26,16],[27,16],[31,29],[32,29],[32,36],[34,29],[35,29],[35,36],[38,36],[38,41],[40,36],[40,41],[43,41],[44,41],[45,41],[46,41],[48,41],[49,41],[50,41],[51,41]], +[[3,2],[4,3],[4,2],[5,4],[5,21],[6,5],[6,21],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,27],[11,10],[11,27],[12,11],[19,4],[20,19],[20,46],[21,20],[25,9],[25,32],[25,9],[26,25],[26,51],[27,26],[31,19],[32,31],[34,25],[35,34],[35,38],[38,32],[40,35],[40,46],[43,38],[44,43],[45,44],[46,45],[48,40],[49,48],[50,49],[51,50]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #235","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["MP_model_editing","A",8,1,14],["press_RUN_button","A",9,1,15],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",10,3,17],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",24,4,16],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,16],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[10,26],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[24,15],[24,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,31],[10,24],[11,10],[18,4],[19,18],[19,41],[20,19],[24,9],[24,29],[24,9],[28,18],[29,28],[31,24],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #236","T",44,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["MP_model_editing","A",8,1,14],["press_RUN_button","A",9,1,15],["save_MP_file","A",11,1,18],["end_of_session","A",12,1,19],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",10,3,17],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["receive_json_file","A",20,4,9],["visualize_trace","A",21,4,10],["input_MP_code","A",25,4,16],["MP_parser","R",28,5,0],["perform_syntax_analysis","A",30,5,4],["write_abstract_syntax_tree","A",31,5,5],["perform_syntax_analysis","A",33,5,16],["Abstract_syntax_tree","R",35,6,0],["read_abstract_syntax_tree","A",37,6,5],["Trace_generator","R",38,7,0],["generate_Cpp_file","A",40,7,5],["run_Cpp_compiler","A",41,7,6],["run_executable","A",42,7,7],["produce_json_file","A",43,7,8] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[10,28],[10,16],[11,1],[11,16],[12,1],[19,16],[19,28],[20,16],[21,16],[25,16],[25,28],[30,28],[31,28],[31,35],[33,28],[37,35],[37,38],[40,38],[41,38],[42,38],[43,38]], +[[3,2],[4,3],[4,2],[5,4],[5,21],[6,5],[6,21],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,33],[10,25],[11,10],[12,11],[19,4],[20,19],[20,43],[21,20],[25,9],[25,31],[25,9],[30,19],[31,30],[33,25],[37,31],[40,37],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #237","T",50,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["browsing_MP_code","A",8,1,14],["press_RUN_button","A",9,1,15],["browse_event_trace","A",10,1,23],["end_of_session","A",11,1,24],["MP_code_editor","R",12,2,0],["MP_GUI","R",15,3,0],["input_MP_code","A",18,3,4],["receive_json_file","A",19,3,9],["visualize_trace","A",20,3,10],["input_MP_code","A",24,3,16],["receive_json_file","A",25,3,21],["visualize_trace","A",26,3,22],["MP_parser","R",27,4,0],["perform_syntax_analysis","A",29,4,4],["write_abstract_syntax_tree","A",30,4,5],["perform_syntax_analysis","A",32,4,16],["write_abstract_syntax_tree","A",33,4,17],["Abstract_syntax_tree","R",34,5,0],["read_abstract_syntax_tree","A",36,5,5],["read_abstract_syntax_tree","A",38,5,17],["Trace_generator","R",39,6,0],["generate_Cpp_file","A",41,6,5],["run_Cpp_compiler","A",42,6,6],["run_executable","A",43,6,7],["produce_json_file","A",44,6,8],["generate_Cpp_file","A",46,6,17],["run_Cpp_compiler","A",47,6,18],["run_executable","A",48,6,19],["produce_json_file","A",49,6,20] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[11,1],[18,15],[18,27],[19,15],[20,15],[24,15],[24,27],[25,15],[26,15],[29,27],[30,27],[30,34],[32,27],[33,27],[33,34],[36,34],[36,39],[38,34],[38,39],[41,39],[42,39],[43,39],[44,39],[46,39],[47,39],[48,39],[49,39]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,26],[11,10],[18,4],[19,18],[19,44],[20,19],[24,9],[24,30],[24,9],[25,24],[25,49],[26,25],[29,18],[30,29],[32,24],[33,32],[33,36],[36,30],[38,33],[38,44],[41,36],[42,41],[43,42],[44,43],[46,38],[47,46],[48,47],[49,48]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #238","T",52,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["browsing_MP_code","A",8,1,14],["press_RUN_button","A",9,1,15],["browse_event_trace","A",10,1,23],["save_MP_file","A",11,1,24],["end_of_session","A",12,1,25],["MP_code_editor","R",13,2,0],["MP_GUI","R",16,3,0],["input_MP_code","A",19,3,4],["receive_json_file","A",20,3,9],["visualize_trace","A",21,3,10],["input_MP_code","A",25,3,16],["receive_json_file","A",26,3,21],["visualize_trace","A",27,3,22],["MP_parser","R",29,4,0],["perform_syntax_analysis","A",31,4,4],["write_abstract_syntax_tree","A",32,4,5],["perform_syntax_analysis","A",34,4,16],["write_abstract_syntax_tree","A",35,4,17],["Abstract_syntax_tree","R",36,5,0],["read_abstract_syntax_tree","A",38,5,5],["read_abstract_syntax_tree","A",40,5,17],["Trace_generator","R",41,6,0],["generate_Cpp_file","A",43,6,5],["run_Cpp_compiler","A",44,6,6],["run_executable","A",45,6,7],["produce_json_file","A",46,6,8],["generate_Cpp_file","A",48,6,17],["run_Cpp_compiler","A",49,6,18],["run_executable","A",50,6,19],["produce_json_file","A",51,6,20] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[11,1],[11,16],[12,1],[19,16],[19,29],[20,16],[21,16],[25,16],[25,29],[26,16],[27,16],[31,29],[32,29],[32,36],[34,29],[35,29],[35,36],[38,36],[38,41],[40,36],[40,41],[43,41],[44,41],[45,41],[46,41],[48,41],[49,41],[50,41],[51,41]], +[[3,2],[4,3],[4,2],[5,4],[5,21],[6,5],[6,21],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,27],[11,10],[11,27],[12,11],[19,4],[20,19],[20,46],[21,20],[25,9],[25,32],[25,9],[26,25],[26,51],[27,26],[31,19],[32,31],[34,25],[35,34],[35,38],[38,32],[40,35],[40,46],[43,38],[44,43],[45,44],[46,45],[48,40],[49,48],[50,49],[51,50]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #239","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["browsing_MP_code","A",8,1,14],["press_RUN_button","A",9,1,15],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",10,3,17],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["receive_json_file","A",19,4,9],["visualize_trace","A",20,4,10],["input_MP_code","A",24,4,16],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["write_abstract_syntax_tree","A",29,5,5],["perform_syntax_analysis","A",31,5,16],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,5],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,5],["run_Cpp_compiler","A",39,7,6],["run_executable","A",40,7,7],["produce_json_file","A",41,7,8] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[10,26],[10,15],[11,1],[18,15],[18,26],[19,15],[20,15],[24,15],[24,26],[28,26],[29,26],[29,33],[31,26],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,20],[6,5],[6,20],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,31],[10,24],[11,10],[18,4],[19,18],[19,41],[20,19],[24,9],[24,29],[24,9],[28,18],[29,28],[31,24],[35,29],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #240","T",44,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browse_event_trace","A",5,1,11],["save_MP_file","A",6,1,12],["load_MP_file","A",7,1,13],["browsing_MP_code","A",8,1,14],["press_RUN_button","A",9,1,15],["save_MP_file","A",11,1,18],["end_of_session","A",12,1,19],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",10,3,17],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["receive_json_file","A",20,4,9],["visualize_trace","A",21,4,10],["input_MP_code","A",25,4,16],["MP_parser","R",28,5,0],["perform_syntax_analysis","A",30,5,4],["write_abstract_syntax_tree","A",31,5,5],["perform_syntax_analysis","A",33,5,16],["Abstract_syntax_tree","R",35,6,0],["read_abstract_syntax_tree","A",37,6,5],["Trace_generator","R",38,7,0],["generate_Cpp_file","A",40,7,5],["run_Cpp_compiler","A",41,7,6],["run_executable","A",42,7,7],["produce_json_file","A",43,7,8] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[10,28],[10,16],[11,1],[11,16],[12,1],[19,16],[19,28],[20,16],[21,16],[25,16],[25,28],[30,28],[31,28],[31,35],[33,28],[37,35],[37,38],[40,38],[41,38],[42,38],[43,38]], +[[3,2],[4,3],[4,2],[5,4],[5,21],[6,5],[6,21],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,33],[10,25],[11,10],[12,11],[19,4],[20,19],[20,43],[21,20],[25,9],[25,31],[25,9],[30,19],[31,30],[33,25],[37,31],[40,37],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #241","T",38,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,4],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[5,22],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[16,13],[16,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,2],[5,4],[5,24],[5,16],[6,5],[6,3],[7,6],[7,5],[8,7],[8,21],[9,8],[16,4],[19,7],[19,5],[19,7],[20,19],[20,37],[21,20],[24,16],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #242","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[17,14],[17,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[6,3],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[17,4],[20,7],[20,5],[20,7],[21,20],[21,39],[22,21],[26,17],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #243","T",30,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,4],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[5,21],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[16,13],[16,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,2],[5,4],[5,23],[5,16],[6,5],[6,3],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[16,4],[19,7],[19,5],[19,7],[23,16],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #244","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["MP_model_editing","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[17,14],[17,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[6,3],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[17,4],[20,7],[20,5],[20,7],[25,17],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #245","T",38,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["end_of_session","A",9,1,16],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["input_MP_code","A",19,4,8],["receive_json_file","A",20,4,13],["visualize_trace","A",21,4,14],["MP_parser","R",22,5,0],["perform_syntax_analysis","A",24,5,4],["perform_syntax_analysis","A",27,5,8],["write_abstract_syntax_tree","A",28,5,9],["Abstract_syntax_tree","R",29,6,0],["read_abstract_syntax_tree","A",31,6,9],["Trace_generator","R",32,7,0],["generate_Cpp_file","A",34,7,9],["run_Cpp_compiler","A",35,7,10],["run_executable","A",36,7,11],["produce_json_file","A",37,7,12] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[5,22],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[9,1],[16,13],[16,22],[19,13],[19,22],[20,13],[21,13],[24,22],[27,22],[28,22],[28,29],[31,29],[31,32],[34,32],[35,32],[36,32],[37,32]], +[[3,2],[4,3],[4,2],[5,4],[5,24],[5,16],[6,5],[6,3],[7,6],[7,5],[8,7],[8,21],[9,8],[16,4],[19,7],[19,5],[19,7],[20,19],[20,37],[21,20],[24,16],[27,19],[28,27],[31,28],[34,31],[35,34],[36,35],[37,36]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #246","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["browse_event_trace","A",8,1,15],["save_MP_file","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",20,4,8],["receive_json_file","A",21,4,13],["visualize_trace","A",22,4,14],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,8],["write_abstract_syntax_tree","A",30,5,9],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,9],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,9],["run_Cpp_compiler","A",37,7,10],["run_executable","A",38,7,11],["produce_json_file","A",39,7,12] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[9,1],[9,14],[10,1],[17,14],[17,24],[20,14],[20,24],[21,14],[22,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[6,3],[7,6],[7,5],[8,7],[8,22],[9,8],[9,22],[10,9],[17,4],[20,7],[20,5],[20,7],[21,20],[21,39],[22,21],[26,17],[29,20],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #247","T",30,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["end_of_session","A",9,1,10],["MP_code_editor","R",10,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",13,4,0],["input_MP_code","A",16,4,4],["input_MP_code","A",19,4,8],["MP_parser","R",21,5,0],["perform_syntax_analysis","A",23,5,4],["perform_syntax_analysis","A",26,5,8],["Abstract_syntax_tree","R",28,6,0],["Trace_generator","R",29,7,0] ], + +[[2,1],[2,13],[3,1],[3,10],[4,1],[4,13],[5,1],[5,21],[5,13],[6,1],[6,10],[7,1],[7,13],[8,1],[8,21],[8,13],[9,1],[16,13],[16,21],[19,13],[19,21],[23,21],[26,21]], +[[3,2],[4,3],[4,2],[5,4],[5,23],[5,16],[6,5],[6,3],[7,6],[7,5],[8,7],[8,26],[8,19],[9,8],[16,4],[19,7],[19,5],[19,7],[23,16],[26,19]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #248","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["browsing_MP_code","A",6,1,6],["press_RUN_button","A",7,1,7],["save_MP_file","A",9,1,10],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",8,3,9],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",20,4,8],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,8],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,11],[7,1],[7,14],[8,1],[8,23],[8,14],[9,1],[9,14],[10,1],[17,14],[17,23],[20,14],[20,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[6,3],[7,6],[7,5],[8,7],[8,28],[8,20],[9,8],[10,9],[17,4],[20,7],[20,5],[20,7],[25,17],[28,20]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #249","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,23],[10,9],[17,4],[21,8],[21,5],[21,8],[22,21],[22,39],[23,22],[26,17],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #250","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[18,4],[22,8],[22,5],[22,8],[23,22],[23,41],[24,23],[28,18],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #251","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[17,14],[17,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[17,4],[21,8],[21,5],[21,8],[25,17],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #252","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[18,15],[18,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[18,4],[22,8],[22,5],[22,8],[27,18],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #253","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,23],[10,9],[17,4],[21,8],[21,5],[21,8],[22,21],[22,39],[23,22],[26,17],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #254","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[18,4],[22,8],[22,5],[22,8],[23,22],[23,41],[24,23],[28,18],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #255","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[17,14],[17,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[17,4],[21,8],[21,5],[21,8],[25,17],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #256","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["load_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[18,15],[18,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[18,4],[22,8],[22,5],[22,8],[27,18],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #257","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,23],[10,9],[17,4],[21,8],[21,5],[21,8],[22,21],[22,39],[23,22],[26,17],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #258","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[18,4],[22,8],[22,5],[22,8],[23,22],[23,41],[24,23],[28,18],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #259","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[17,14],[17,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[17,4],[21,8],[21,5],[21,8],[25,17],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #260","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["MP_model_editing","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[18,15],[18,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[18,4],[22,8],[22,5],[22,8],[27,18],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #261","T",40,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["end_of_session","A",10,1,17],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["receive_json_file","A",22,4,14],["visualize_trace","A",23,4,15],["MP_parser","R",24,5,0],["perform_syntax_analysis","A",26,5,4],["perform_syntax_analysis","A",29,5,9],["write_abstract_syntax_tree","A",30,5,10],["Abstract_syntax_tree","R",31,6,0],["read_abstract_syntax_tree","A",33,6,10],["Trace_generator","R",34,7,0],["generate_Cpp_file","A",36,7,10],["run_Cpp_compiler","A",37,7,11],["run_executable","A",38,7,12],["produce_json_file","A",39,7,13] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,24],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[10,1],[17,14],[17,24],[21,14],[21,24],[22,14],[23,14],[26,24],[29,24],[30,24],[30,31],[33,31],[33,34],[36,34],[37,34],[38,34],[39,34]], +[[3,2],[4,3],[4,2],[5,4],[5,26],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,23],[10,9],[17,4],[21,8],[21,5],[21,8],[22,21],[22,39],[23,22],[26,17],[29,21],[30,29],[33,30],[36,33],[37,36],[38,37],[39,38]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #262","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["browse_event_trace","A",9,1,16],["save_MP_file","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["receive_json_file","A",23,4,14],["visualize_trace","A",24,4,15],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,9],["write_abstract_syntax_tree","A",32,5,10],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,10],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,10],["run_Cpp_compiler","A",39,7,11],["run_executable","A",40,7,12],["produce_json_file","A",41,7,13] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[10,1],[10,15],[11,1],[18,15],[18,26],[22,15],[22,26],[23,15],[24,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,24],[10,9],[10,24],[11,10],[18,4],[22,8],[22,5],[22,8],[23,22],[23,41],[24,23],[28,18],[31,22],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #263","T",32,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["end_of_session","A",10,1,11],["MP_code_editor","R",11,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",14,4,0],["input_MP_code","A",17,4,4],["input_MP_code","A",21,4,9],["MP_parser","R",23,5,0],["perform_syntax_analysis","A",25,5,4],["perform_syntax_analysis","A",28,5,9],["Abstract_syntax_tree","R",30,6,0],["Trace_generator","R",31,7,0] ], + +[[2,1],[2,14],[3,1],[3,11],[4,1],[4,14],[5,1],[5,23],[5,14],[6,1],[6,14],[7,1],[7,11],[8,1],[8,14],[9,1],[9,23],[9,14],[10,1],[17,14],[17,23],[21,14],[21,23],[25,23],[28,23]], +[[3,2],[4,3],[4,2],[5,4],[5,25],[5,17],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,28],[9,21],[10,9],[17,4],[21,8],[21,5],[21,8],[25,17],[28,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #264","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["browsing_MP_code","A",7,1,7],["press_RUN_button","A",8,1,8],["save_MP_file","A",10,1,11],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",9,3,10],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",22,4,9],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,9],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,12],[8,1],[8,15],[9,1],[9,25],[9,15],[10,1],[10,15],[11,1],[18,15],[18,25],[22,15],[22,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[7,3],[8,7],[8,6],[9,8],[9,30],[9,22],[10,9],[11,10],[18,4],[22,8],[22,5],[22,8],[27,18],[30,22]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #265","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["MP_model_editing","A",8,1,8],["press_RUN_button","A",9,1,9],["browse_event_trace","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",23,4,10],["receive_json_file","A",24,4,15],["visualize_trace","A",25,4,16],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,10],["write_abstract_syntax_tree","A",32,5,11],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,11],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,11],["run_Cpp_compiler","A",39,7,12],["run_executable","A",40,7,13],["produce_json_file","A",41,7,14] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[11,1],[18,15],[18,26],[23,15],[23,26],[24,15],[25,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,25],[11,10],[18,4],[23,9],[23,5],[23,9],[24,23],[24,41],[25,24],[28,18],[31,23],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #266","T",44,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["MP_model_editing","A",8,1,8],["press_RUN_button","A",9,1,9],["browse_event_trace","A",10,1,17],["save_MP_file","A",11,1,18],["end_of_session","A",12,1,19],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["input_MP_code","A",24,4,10],["receive_json_file","A",25,4,15],["visualize_trace","A",26,4,16],["MP_parser","R",28,5,0],["perform_syntax_analysis","A",30,5,4],["perform_syntax_analysis","A",33,5,10],["write_abstract_syntax_tree","A",34,5,11],["Abstract_syntax_tree","R",35,6,0],["read_abstract_syntax_tree","A",37,6,11],["Trace_generator","R",38,7,0],["generate_Cpp_file","A",40,7,11],["run_Cpp_compiler","A",41,7,12],["run_executable","A",42,7,13],["produce_json_file","A",43,7,14] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[5,28],[5,16],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[11,1],[11,16],[12,1],[19,16],[19,28],[24,16],[24,28],[25,16],[26,16],[30,28],[33,28],[34,28],[34,35],[37,35],[37,38],[40,38],[41,38],[42,38],[43,38]], +[[3,2],[4,3],[4,2],[5,4],[5,30],[5,19],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,26],[11,10],[11,26],[12,11],[19,4],[24,9],[24,5],[24,9],[25,24],[25,43],[26,25],[30,19],[33,24],[34,33],[37,34],[40,37],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #267","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["MP_model_editing","A",8,1,8],["press_RUN_button","A",9,1,9],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",10,3,11],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",23,4,10],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,10],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[10,25],[10,15],[11,1],[18,15],[18,25],[23,15],[23,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,30],[10,23],[11,10],[18,4],[23,9],[23,5],[23,9],[27,18],[30,23]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #268","T",36,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["MP_model_editing","A",8,1,8],["press_RUN_button","A",9,1,9],["save_MP_file","A",11,1,12],["end_of_session","A",12,1,13],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",10,3,11],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["input_MP_code","A",24,4,10],["MP_parser","R",27,5,0],["perform_syntax_analysis","A",29,5,4],["perform_syntax_analysis","A",32,5,10],["Abstract_syntax_tree","R",34,6,0],["Trace_generator","R",35,7,0] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[5,27],[5,16],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[10,27],[10,16],[11,1],[11,16],[12,1],[19,16],[19,27],[24,16],[24,27],[29,27],[32,27]], +[[3,2],[4,3],[4,2],[5,4],[5,29],[5,19],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,32],[10,24],[11,10],[12,11],[19,4],[24,9],[24,5],[24,9],[29,19],[32,24]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #269","T",42,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["browsing_MP_code","A",8,1,8],["press_RUN_button","A",9,1,9],["browse_event_trace","A",10,1,17],["end_of_session","A",11,1,18],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",23,4,10],["receive_json_file","A",24,4,15],["visualize_trace","A",25,4,16],["MP_parser","R",26,5,0],["perform_syntax_analysis","A",28,5,4],["perform_syntax_analysis","A",31,5,10],["write_abstract_syntax_tree","A",32,5,11],["Abstract_syntax_tree","R",33,6,0],["read_abstract_syntax_tree","A",35,6,11],["Trace_generator","R",36,7,0],["generate_Cpp_file","A",38,7,11],["run_Cpp_compiler","A",39,7,12],["run_executable","A",40,7,13],["produce_json_file","A",41,7,14] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,26],[5,15],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[11,1],[18,15],[18,26],[23,15],[23,26],[24,15],[25,15],[28,26],[31,26],[32,26],[32,33],[35,33],[35,36],[38,36],[39,36],[40,36],[41,36]], +[[3,2],[4,3],[4,2],[5,4],[5,28],[5,18],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,25],[11,10],[18,4],[23,9],[23,5],[23,9],[24,23],[24,41],[25,24],[28,18],[31,23],[32,31],[35,32],[38,35],[39,38],[40,39],[41,40]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #270","T",44,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["browsing_MP_code","A",8,1,8],["press_RUN_button","A",9,1,9],["browse_event_trace","A",10,1,17],["save_MP_file","A",11,1,18],["end_of_session","A",12,1,19],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",5,3,5],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["input_MP_code","A",24,4,10],["receive_json_file","A",25,4,15],["visualize_trace","A",26,4,16],["MP_parser","R",28,5,0],["perform_syntax_analysis","A",30,5,4],["perform_syntax_analysis","A",33,5,10],["write_abstract_syntax_tree","A",34,5,11],["Abstract_syntax_tree","R",35,6,0],["read_abstract_syntax_tree","A",37,6,11],["Trace_generator","R",38,7,0],["generate_Cpp_file","A",40,7,11],["run_Cpp_compiler","A",41,7,12],["run_executable","A",42,7,13],["produce_json_file","A",43,7,14] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[5,28],[5,16],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[11,1],[11,16],[12,1],[19,16],[19,28],[24,16],[24,28],[25,16],[26,16],[30,28],[33,28],[34,28],[34,35],[37,35],[37,38],[40,38],[41,38],[42,38],[43,38]], +[[3,2],[4,3],[4,2],[5,4],[5,30],[5,19],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,26],[11,10],[11,26],[12,11],[19,4],[24,9],[24,5],[24,9],[25,24],[25,43],[26,25],[30,19],[33,24],[34,33],[37,34],[40,37],[41,40],[42,41],[43,42]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #271","T",34,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["browsing_MP_code","A",8,1,8],["press_RUN_button","A",9,1,9],["end_of_session","A",11,1,12],["MP_code_editor","R",12,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",10,3,11],["MP_GUI","R",15,4,0],["input_MP_code","A",18,4,4],["input_MP_code","A",23,4,10],["MP_parser","R",25,5,0],["perform_syntax_analysis","A",27,5,4],["perform_syntax_analysis","A",30,5,10],["Abstract_syntax_tree","R",32,6,0],["Trace_generator","R",33,7,0] ], + +[[2,1],[2,15],[3,1],[3,12],[4,1],[4,15],[5,1],[5,25],[5,15],[6,1],[6,15],[7,1],[7,15],[8,1],[8,12],[9,1],[9,15],[10,1],[10,25],[10,15],[11,1],[18,15],[18,25],[23,15],[23,25],[27,25],[30,25]], +[[3,2],[4,3],[4,2],[5,4],[5,27],[5,18],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,30],[10,23],[11,10],[18,4],[23,9],[23,5],[23,9],[27,18],[30,23]] +,{"VIEWS":[ ]} +], + +["U", 0.000118371, +[ [" Scope 2 Trace #272","T",36,0,0],["User","R",1,1,0],["load_MP_file","A",2,1,1],["browsing_MP_code","A",3,1,2],["press_RUN_button","A",4,1,3],["save_MP_file","A",6,1,6],["load_MP_file","A",7,1,7],["browsing_MP_code","A",8,1,8],["press_RUN_button","A",9,1,9],["save_MP_file","A",11,1,12],["end_of_session","A",12,1,13],["MP_code_editor","R",13,2,0],["syntax_errors_detected","A",5,3,5],["syntax_errors_detected","A",10,3,11],["MP_GUI","R",16,4,0],["input_MP_code","A",19,4,4],["input_MP_code","A",24,4,10],["MP_parser","R",27,5,0],["perform_syntax_analysis","A",29,5,4],["perform_syntax_analysis","A",32,5,10],["Abstract_syntax_tree","R",34,6,0],["Trace_generator","R",35,7,0] ], + +[[2,1],[2,16],[3,1],[3,13],[4,1],[4,16],[5,1],[5,27],[5,16],[6,1],[6,16],[7,1],[7,16],[8,1],[8,13],[9,1],[9,16],[10,1],[10,27],[10,16],[11,1],[11,16],[12,1],[19,16],[19,27],[24,16],[24,27],[29,27],[32,27]], +[[3,2],[4,3],[4,2],[5,4],[5,29],[5,19],[6,5],[7,6],[8,7],[8,3],[9,8],[9,7],[10,9],[10,32],[10,24],[11,10],[12,11],[19,4],[24,9],[24,5],[24,9],[29,19],[32,24]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U", +{"GRAPH":["main component interactions", + [ [0, "User"] ,[1, "MP_code_editor"] ,[2, "MP_GUI"] ,[3, "MP_parser"] ,[4, "Abstract_syntax_tree"] ,[5, "Trace_generator"] ], + [], + [ [0,1,"interacts with"],[0,2,"interacts with"],[0,3,"interacts with"],[1,2,"interacts with"],[1,3,"interacts with"],[2,3,"interacts with"],[2,5,"interacts with"],[2,4,"interacts with"],[3,4,"interacts with"],[3,5,"interacts with"],[4,5,"interacts with"]] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example29_stack1_Bayesian_probability.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example29_stack1_Bayesian_probability.json new file mode 100644 index 0000000..bdbbf72 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example29_stack1_Bayesian_probability.json @@ -0,0 +1,35 @@ +{"traces":[ + +["U", 0.4, +[ ["Trace 1 for scope 2 has probability 0.333333","T",2,0,0],["Stack","R",1,1,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.3, +[ ["push with probability 0.333333","T",3,0,0],["Trace 2 for scope 2 has probability 0.333333","T",4,0,1],["Stack","R",1,1,0],["push","A",2,1,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.225, +[ ["push with probability 0.333333","T",4,0,0],["push with probability 0.25","T",5,0,1],["Trace 3 for scope 2 has probability 0.25","T",6,0,2],["Stack","R",1,1,0],["push","A",2,1,1],["push","A",3,1,2] ], + +[[2,1],[3,1]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.075, +[ ["push with probability 0.333333","T",4,0,0],["pop with probability 0.0833333","T",5,0,1],["Trace 4 for scope 2 has probability 0.0833333","T",6,0,2],["Stack","R",1,1,0],["push","A",2,1,1],["pop","A",3,1,2] ], + +[[2,1],[3,1]], +[[3,2]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example30_Local_Report.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example30_Local_Report.json new file mode 100644 index 0000000..c93a778 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example30_Local_Report.json @@ -0,0 +1,283 @@ +{"traces":[ + +["U", 0.133333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0] ], + +[[2,1],[2,3]], +[] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 1","#writing= 1","#reading= 0","#working= 0"]} + ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0],["working","A",6,2,1] ], + +[[2,1],[2,3],[6,5]], +[] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 2","#writing= 1","#reading= 0","#working= 1"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["Reader","R",5,2,0],["working","A",6,2,1],["working","A",7,2,2] ], + +[[2,1],[2,3],[6,5],[7,5]], +[[7,6]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 3","#writing= 1","#reading= 0","#working= 2"]} + ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["Reader","R",6,2,0] ], + +[[2,1],[2,3],[5,3],[5,6]], +[[5,2]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 4","#writing= 1","#reading= 1","#working= 0"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["Reader","R",6,2,0],["working","A",8,2,1] ], + +[[2,1],[2,3],[5,3],[5,6],[8,6]], +[[5,2],[8,5]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 5","#writing= 1","#reading= 1","#working= 1"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["Reader","R",6,2,0],["working","A",7,2,1] ], + +[[2,1],[2,3],[5,3],[5,6],[7,6]], +[[5,2],[5,7]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 6","#writing= 1","#reading= 1","#working= 1"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["File","R",3,1,0],["reading","A",5,1,1],["reading","A",6,1,2],["Reader","R",7,2,0] ], + +[[2,1],[2,3],[5,3],[5,7],[6,3],[6,7]], +[[5,2],[6,5]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 7","#writing= 1","#reading= 2","#working= 0"]} + ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0] ], + +[[2,1],[3,1],[3,4]], +[[3,2]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 8","#writing= 1","#reading= 0","#working= 1"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0],["working","A",7,2,1] ], + +[[2,1],[3,1],[3,4],[7,6]], +[[3,2]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 9","#writing= 1","#reading= 0","#working= 2"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0],["working","A",7,2,1],["working","A",8,2,2] ], + +[[2,1],[3,1],[3,4],[7,6],[8,6]], +[[3,2],[8,7]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 10","#writing= 1","#reading= 0","#working= 3"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,2],["Reader","R",7,2,0] ], + +[[2,1],[3,1],[3,4],[6,4],[6,7]], +[[3,2],[6,3]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 11","#writing= 1","#reading= 1","#working= 1"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,2],["Reader","R",7,2,0],["working","A",9,2,2] ], + +[[2,1],[3,1],[3,4],[6,4],[6,7],[9,7]], +[[3,2],[6,3],[9,6]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 12","#writing= 1","#reading= 1","#working= 2"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,2],["Reader","R",7,2,0],["working","A",8,2,1] ], + +[[2,1],[3,1],[3,4],[6,4],[6,7],[8,7]], +[[3,2],[6,3],[6,8]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 13","#writing= 1","#reading= 1","#working= 2"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["working","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,2],["reading","A",7,1,3],["Reader","R",8,2,0] ], + +[[2,1],[3,1],[3,4],[6,4],[6,8],[7,4],[7,8]], +[[3,2],[6,3],[7,6]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 14","#writing= 1","#reading= 2","#working= 1"]} + ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0] ], + +[[2,1],[2,4],[3,1]], +[[3,2]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 15","#writing= 1","#reading= 0","#working= 1"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0],["working","A",7,2,1] ], + +[[2,1],[2,4],[3,1],[7,6]], +[[3,2]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 16","#writing= 1","#reading= 0","#working= 2"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["Reader","R",6,2,0],["working","A",7,2,1],["working","A",8,2,2] ], + +[[2,1],[2,4],[3,1],[7,6],[8,6]], +[[3,2],[8,7]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 17","#writing= 1","#reading= 0","#working= 3"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,1],["Reader","R",7,2,0] ], + +[[2,1],[2,4],[3,1],[6,4],[6,7]], +[[3,2],[6,2]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 18","#writing= 1","#reading= 1","#working= 1"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,1],["Reader","R",7,2,0],["working","A",9,2,1] ], + +[[2,1],[2,4],[3,1],[6,4],[6,7],[9,7]], +[[3,2],[6,2],[9,6]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 19","#writing= 1","#reading= 1","#working= 2"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,1],["Reader","R",7,2,0],["working","A",8,2,1] ], + +[[2,1],[2,4],[3,1],[6,4],[6,7],[8,7]], +[[3,2],[6,2],[6,8]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 20","#writing= 1","#reading= 1","#working= 2"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["working","A",3,0,2],["File","R",4,1,0],["reading","A",6,1,1],["reading","A",7,1,2],["Reader","R",8,2,0] ], + +[[2,1],[2,4],[3,1],[6,4],[6,8],[7,4],[7,8]], +[[3,2],[6,2],[7,6]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 21","#writing= 1","#reading= 2","#working= 1"]} + ]} +], + +["U", 0.0666667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",7,2,0] ], + +[[2,1],[2,4],[3,1],[3,4]], +[[3,2]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 22","#writing= 2","#reading= 0","#working= 0"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",7,2,0],["working","A",8,2,1] ], + +[[2,1],[2,4],[3,1],[3,4],[8,7]], +[[3,2]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 23","#writing= 2","#reading= 0","#working= 1"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["Reader","R",7,2,0],["working","A",8,2,1],["working","A",9,2,2] ], + +[[2,1],[2,4],[3,1],[3,4],[8,7],[9,7]], +[[3,2],[9,8]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 24","#writing= 2","#reading= 0","#working= 2"]} + ]} +], + +["U", 0.0333333, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",7,1,2],["Reader","R",8,2,0] ], + +[[2,1],[2,4],[3,1],[3,4],[7,4],[7,8]], +[[3,2],[7,3]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 25","#writing= 2","#reading= 1","#working= 0"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",7,1,2],["Reader","R",8,2,0],["working","A",10,2,2] ], + +[[2,1],[2,4],[3,1],[3,4],[7,4],[7,8],[10,8]], +[[3,2],[7,3],[10,7]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 26","#writing= 2","#reading= 1","#working= 1"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",7,1,2],["Reader","R",8,2,0],["working","A",9,2,1] ], + +[[2,1],[2,4],[3,1],[3,4],[7,4],[7,8],[9,8]], +[[3,2],[7,3],[7,9]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 27","#writing= 2","#reading= 1","#working= 1"]} + ]} +], + +["U", 0.0166667, +[ ["Writer","R",1,0,0],["writing","A",2,0,1],["writing","A",3,0,2],["File","R",4,1,0],["reading","A",7,1,2],["reading","A",8,1,3],["Reader","R",9,2,0] ], + +[[2,1],[2,4],[3,1],[3,4],[7,4],[7,9],[8,4],[8,9]], +[[3,2],[7,3],[8,7]] +,{"VIEWS":[ +{"REPORT":["scope= 2 trace 28","#writing= 2","#reading= 2","#working= 0"]} + ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example31_Global_report.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example31_Global_report.json new file mode 100644 index 0000000..c895328 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example31_Global_report.json @@ -0,0 +1,61 @@ +{"traces":[ + +["U", 0.333333, +[ ["Sender","R",1,0,0],["Receiver","R",2,1,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["does_not_receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["receive","A",5,1,1],["receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["receive","A",5,1,1],["does_not_receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["does_not_receive","A",5,1,1],["receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["does_not_receive","A",5,1,1],["does_not_receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U",{"SAY":[]}, +{"REPORT":["scope= 2","trace 3 sent 1 received 0 ratio 0","trace 5 sent 2 received 1 ratio 0.5","trace 6 sent 2 received 1 ratio 0.5","trace 7 sent 2 received 0 ratio 0","total traces 7"]} +]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example32_Local_graph.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example32_Local_graph.json new file mode 100644 index 0000000..0e17551 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example32_Local_graph.json @@ -0,0 +1,363 @@ +{"traces":[ + +["U", 0.0701754, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["finish","A",4,0,3],["winner","A",5,0,4],["Judge","R",6,1,0],["provide_start_signal","A",7,1,1],["watch","A",8,1,2] ], + +[[2,1],[3,2],[4,2],[4,6],[5,2],[7,6],[8,6]], +[[3,7],[4,3],[4,8],[5,4],[8,7]] +,{"VIEWS":[ +{"GRAPH":["winner trace 1 for scope 2", + [ [0, "0 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.140351, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["break","A",4,0,3],["Judge","R",5,1,0],["provide_start_signal","A",6,1,1],["watch","A",7,1,2] ], + +[[2,1],[3,2],[4,2],[6,5],[7,5]], +[[3,6],[4,3],[7,6]] +,{"VIEWS":[ +{"GRAPH":["winner trace 2 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0701754, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["finish","A",5,0,4],["winner","A",6,0,5],["Judge","R",7,1,0],["provide_start_signal","A",8,1,1],["watch","A",9,1,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,7],[6,2],[8,7],[9,7]], +[[3,8],[4,3],[5,4],[5,9],[6,5],[9,8]] +,{"VIEWS":[ +{"GRAPH":["winner trace 3 for scope 2", + [ [0, "1 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.140351, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["break","A",5,0,4],["Judge","R",6,1,0],["provide_start_signal","A",7,1,1],["watch","A",8,1,2] ], + +[[2,1],[3,2],[4,2],[5,2],[7,6],[8,6]], +[[3,7],[4,3],[5,4],[8,7]] +,{"VIEWS":[ +{"GRAPH":["winner trace 4 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0701754, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["finish","A",6,0,5],["winner","A",7,0,6],["Judge","R",8,1,0],["provide_start_signal","A",9,1,1],["watch","A",10,1,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,8],[7,2],[9,8],[10,8]], +[[3,9],[4,3],[5,4],[6,5],[6,10],[7,6],[10,9]] +,{"VIEWS":[ +{"GRAPH":["winner trace 5 for scope 2", + [ [0, "2 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.140351, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["break","A",6,0,5],["Judge","R",7,1,0],["provide_start_signal","A",8,1,1],["watch","A",9,1,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[8,7],[9,7]], +[[3,8],[4,3],[5,4],[6,5],[9,8]] +,{"VIEWS":[ +{"GRAPH":["winner trace 6 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.00584795, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["finish","A",4,0,3],["winner","A",5,0,4],["Car","C",6,1,1],["Start","A",7,1,2],["finish","A",8,1,3],["Judge","R",9,2,0],["provide_start_signal","A",10,2,1],["watch","A",11,2,2] ], + +[[2,1],[3,2],[4,2],[4,9],[5,2],[6,1],[7,6],[8,6],[8,9],[10,9],[11,9]], +[[3,10],[4,3],[4,11],[5,4],[7,10],[8,7],[8,4],[11,10]] +,{"VIEWS":[ +{"GRAPH":["winner trace 7 for scope 2", + [ [0, "0 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["finish","A",4,0,3],["winner","A",5,0,4],["Car","C",6,1,1],["Start","A",7,1,2],["break","A",8,1,3],["Judge","R",9,2,0],["provide_start_signal","A",10,2,1],["watch","A",11,2,2] ], + +[[2,1],[3,2],[4,2],[4,9],[5,2],[6,1],[7,6],[8,6],[10,9],[11,9]], +[[3,10],[4,3],[4,11],[5,4],[7,10],[8,7],[11,10]] +,{"VIEWS":[ +{"GRAPH":["winner trace 8 for scope 2", + [ [0, "0 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["break","A",4,0,3],["Car","C",5,1,1],["Start","A",6,1,2],["finish","A",7,1,3],["winner","A",8,1,4],["Judge","R",9,2,0],["provide_start_signal","A",10,2,1],["watch","A",11,2,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[7,9],[8,5],[10,9],[11,9]], +[[3,10],[4,3],[6,10],[7,6],[7,11],[8,7],[11,10]] +,{"VIEWS":[ +{"GRAPH":["winner trace 9 for scope 2", + [ [0, "0 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0233918, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["break","A",4,0,3],["Car","C",5,1,1],["Start","A",6,1,2],["break","A",7,1,3],["Judge","R",8,2,0],["provide_start_signal","A",9,2,1],["watch","A",10,2,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[9,8],[10,8]], +[[3,9],[4,3],[6,9],[7,6],[10,9]] +,{"VIEWS":[ +{"GRAPH":["winner trace 10 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["break","A",4,0,3],["Car","C",5,1,1],["Start","A",6,1,2],["drive_lap","A",7,1,3],["finish","A",8,1,4],["winner","A",9,1,5],["Judge","R",10,2,0],["provide_start_signal","A",11,2,1],["watch","A",12,2,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[8,10],[9,5],[11,10],[12,10]], +[[3,11],[4,3],[6,11],[7,6],[8,7],[8,12],[9,8],[12,11]] +,{"VIEWS":[ +{"GRAPH":["winner trace 11 for scope 2", + [ [0, "1 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0233918, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["break","A",4,0,3],["Car","C",5,1,1],["Start","A",6,1,2],["drive_lap","A",7,1,3],["break","A",8,1,4],["Judge","R",9,2,0],["provide_start_signal","A",10,2,1],["watch","A",11,2,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[10,9],[11,9]], +[[3,10],[4,3],[6,10],[7,6],[8,7],[11,10]] +,{"VIEWS":[ +{"GRAPH":["winner trace 12 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["break","A",4,0,3],["Car","C",5,1,1],["Start","A",6,1,2],["drive_lap","A",7,1,3],["drive_lap","A",8,1,4],["finish","A",9,1,5],["winner","A",10,1,6],["Judge","R",11,2,0],["provide_start_signal","A",12,2,1],["watch","A",13,2,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[9,11],[10,5],[12,11],[13,11]], +[[3,12],[4,3],[6,12],[7,6],[8,7],[9,8],[9,13],[10,9],[13,12]] +,{"VIEWS":[ +{"GRAPH":["winner trace 13 for scope 2", + [ [0, "2 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0233918, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["break","A",4,0,3],["Car","C",5,1,1],["Start","A",6,1,2],["drive_lap","A",7,1,3],["drive_lap","A",8,1,4],["break","A",9,1,5],["Judge","R",10,2,0],["provide_start_signal","A",11,2,1],["watch","A",12,2,2] ], + +[[2,1],[3,2],[4,2],[5,1],[6,5],[7,5],[8,5],[9,5],[11,10],[12,10]], +[[3,11],[4,3],[6,11],[7,6],[8,7],[9,8],[12,11]] +,{"VIEWS":[ +{"GRAPH":["winner trace 14 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["finish","A",5,0,4],["winner","A",6,0,5],["Car","C",7,1,1],["Start","A",8,1,2],["break","A",9,1,3],["Judge","R",10,2,0],["provide_start_signal","A",11,2,1],["watch","A",12,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,10],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10]], +[[3,11],[4,3],[5,4],[5,12],[6,5],[8,11],[9,8],[12,11]] +,{"VIEWS":[ +{"GRAPH":["winner trace 15 for scope 2", + [ [0, "1 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.00584795, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["finish","A",5,0,4],["winner","A",6,0,5],["Car","C",7,1,1],["Start","A",8,1,2],["drive_lap","A",9,1,3],["finish","A",10,1,4],["Judge","R",11,2,0],["provide_start_signal","A",12,2,1],["watch","A",13,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,11],[6,2],[7,1],[8,7],[9,7],[10,7],[10,11],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[5,13],[6,5],[8,12],[9,8],[10,9],[10,5],[13,12]] +,{"VIEWS":[ +{"GRAPH":["winner trace 16 for scope 2", + [ [0, "1 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["finish","A",5,0,4],["winner","A",6,0,5],["Car","C",7,1,1],["Start","A",8,1,2],["drive_lap","A",9,1,3],["break","A",10,1,4],["Judge","R",11,2,0],["provide_start_signal","A",12,2,1],["watch","A",13,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[5,11],[6,2],[7,1],[8,7],[9,7],[10,7],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[5,13],[6,5],[8,12],[9,8],[10,9],[13,12]] +,{"VIEWS":[ +{"GRAPH":["winner trace 17 for scope 2", + [ [0, "1 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0233918, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["break","A",5,0,4],["Car","C",6,1,1],["Start","A",7,1,2],["break","A",8,1,3],["Judge","R",9,2,0],["provide_start_signal","A",10,2,1],["watch","A",11,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[10,9],[11,9]], +[[3,10],[4,3],[5,4],[7,10],[8,7],[11,10]] +,{"VIEWS":[ +{"GRAPH":["winner trace 18 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["break","A",5,0,4],["Car","C",6,1,1],["Start","A",7,1,2],["drive_lap","A",8,1,3],["finish","A",9,1,4],["winner","A",10,1,5],["Judge","R",11,2,0],["provide_start_signal","A",12,2,1],["watch","A",13,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[9,6],[9,11],[10,6],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[7,12],[8,7],[9,8],[9,13],[10,9],[13,12]] +,{"VIEWS":[ +{"GRAPH":["winner trace 19 for scope 2", + [ [0, "1 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0233918, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["break","A",5,0,4],["Car","C",6,1,1],["Start","A",7,1,2],["drive_lap","A",8,1,3],["break","A",9,1,4],["Judge","R",10,2,0],["provide_start_signal","A",11,2,1],["watch","A",12,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[9,6],[11,10],[12,10]], +[[3,11],[4,3],[5,4],[7,11],[8,7],[9,8],[12,11]] +,{"VIEWS":[ +{"GRAPH":["winner trace 20 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["break","A",5,0,4],["Car","C",6,1,1],["Start","A",7,1,2],["drive_lap","A",8,1,3],["drive_lap","A",9,1,4],["finish","A",10,1,5],["winner","A",11,1,6],["Judge","R",12,2,0],["provide_start_signal","A",13,2,1],["watch","A",14,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[9,6],[10,6],[10,12],[11,6],[13,12],[14,12]], +[[3,13],[4,3],[5,4],[7,13],[8,7],[9,8],[10,9],[10,14],[11,10],[14,13]] +,{"VIEWS":[ +{"GRAPH":["winner trace 21 for scope 2", + [ [0, "2 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0233918, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["break","A",5,0,4],["Car","C",6,1,1],["Start","A",7,1,2],["drive_lap","A",8,1,3],["drive_lap","A",9,1,4],["break","A",10,1,5],["Judge","R",11,2,0],["provide_start_signal","A",12,2,1],["watch","A",13,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,1],[7,6],[8,6],[9,6],[10,6],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[7,12],[8,7],[9,8],[10,9],[13,12]] +,{"VIEWS":[ +{"GRAPH":["winner trace 22 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["finish","A",6,0,5],["winner","A",7,0,6],["Car","C",8,1,1],["Start","A",9,1,2],["break","A",10,1,3],["Judge","R",11,2,0],["provide_start_signal","A",12,2,1],["watch","A",13,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,11],[7,2],[8,1],[9,8],[10,8],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[6,5],[6,13],[7,6],[9,12],[10,9],[13,12]] +,{"VIEWS":[ +{"GRAPH":["winner trace 23 for scope 2", + [ [0, "2 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["finish","A",6,0,5],["winner","A",7,0,6],["Car","C",8,1,1],["Start","A",9,1,2],["drive_lap","A",10,1,3],["break","A",11,1,4],["Judge","R",12,2,0],["provide_start_signal","A",13,2,1],["watch","A",14,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,12],[7,2],[8,1],[9,8],[10,8],[11,8],[13,12],[14,12]], +[[3,13],[4,3],[5,4],[6,5],[6,14],[7,6],[9,13],[10,9],[11,10],[14,13]] +,{"VIEWS":[ +{"GRAPH":["winner trace 24 for scope 2", + [ [0, "2 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.00584795, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["finish","A",6,0,5],["winner","A",7,0,6],["Car","C",8,1,1],["Start","A",9,1,2],["drive_lap","A",10,1,3],["drive_lap","A",11,1,4],["finish","A",12,1,5],["Judge","R",13,2,0],["provide_start_signal","A",14,2,1],["watch","A",15,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,13],[7,2],[8,1],[9,8],[10,8],[11,8],[12,8],[12,13],[14,13],[15,13]], +[[3,14],[4,3],[5,4],[6,5],[6,15],[7,6],[9,14],[10,9],[11,10],[12,11],[12,6],[15,14]] +,{"VIEWS":[ +{"GRAPH":["winner trace 25 for scope 2", + [ [0, "2 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["finish","A",6,0,5],["winner","A",7,0,6],["Car","C",8,1,1],["Start","A",9,1,2],["drive_lap","A",10,1,3],["drive_lap","A",11,1,4],["break","A",12,1,5],["Judge","R",13,2,0],["provide_start_signal","A",14,2,1],["watch","A",15,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[6,13],[7,2],[8,1],[9,8],[10,8],[11,8],[12,8],[14,13],[15,13]], +[[3,14],[4,3],[5,4],[6,5],[6,15],[7,6],[9,14],[10,9],[11,10],[12,11],[15,14]] +,{"VIEWS":[ +{"GRAPH":["winner trace 26 for scope 2", + [ [0, "2 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0233918, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["break","A",6,0,5],["Car","C",7,1,1],["Start","A",8,1,2],["break","A",9,1,3],["Judge","R",10,2,0],["provide_start_signal","A",11,2,1],["watch","A",12,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[11,10],[12,10]], +[[3,11],[4,3],[5,4],[6,5],[8,11],[9,8],[12,11]] +,{"VIEWS":[ +{"GRAPH":["winner trace 27 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0233918, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["break","A",6,0,5],["Car","C",7,1,1],["Start","A",8,1,2],["drive_lap","A",9,1,3],["break","A",10,1,4],["Judge","R",11,2,0],["provide_start_signal","A",12,2,1],["watch","A",13,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[12,11],[13,11]], +[[3,12],[4,3],[5,4],[6,5],[8,12],[9,8],[10,9],[13,12]] +,{"VIEWS":[ +{"GRAPH":["winner trace 28 for scope 2", + [], + [], + [] ]} ]} +], + +["U", 0.0116959, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["break","A",6,0,5],["Car","C",7,1,1],["Start","A",8,1,2],["drive_lap","A",9,1,3],["drive_lap","A",10,1,4],["finish","A",11,1,5],["winner","A",12,1,6],["Judge","R",13,2,0],["provide_start_signal","A",14,2,1],["watch","A",15,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[11,13],[12,7],[14,13],[15,13]], +[[3,14],[4,3],[5,4],[6,5],[8,14],[9,8],[10,9],[11,10],[11,15],[12,11],[15,14]] +,{"VIEWS":[ +{"GRAPH":["winner trace 29 for scope 2", + [ [0, "2 laps"] ,[1, "Start"] ,[2, "finish"] ,[3, "winner"] ], + [ [0,2,"followed by"],[1,0,"followed by"],[2,3,"followed by"]], + [] ]} ]} +], + +["U", 0.0233918, +[ ["Cars","R",1,0,0],["Car","C",2,0,1],["Start","A",3,0,2],["drive_lap","A",4,0,3],["drive_lap","A",5,0,4],["break","A",6,0,5],["Car","C",7,1,1],["Start","A",8,1,2],["drive_lap","A",9,1,3],["drive_lap","A",10,1,4],["break","A",11,1,5],["Judge","R",12,2,0],["provide_start_signal","A",13,2,1],["watch","A",14,2,2] ], + +[[2,1],[3,2],[4,2],[5,2],[6,2],[7,1],[8,7],[9,7],[10,7],[11,7],[13,12],[14,12]], +[[3,13],[4,3],[5,4],[6,5],[8,13],[9,8],[10,9],[11,10],[14,13]] +,{"VIEWS":[ +{"GRAPH":["winner trace 30 for scope 2", + [], + [], + [] ]} ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example34_Graph_as_data_structure.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example34_Graph_as_data_structure.json new file mode 100644 index 0000000..fceb949 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example34_Graph_as_data_structure.json @@ -0,0 +1,121 @@ +{"traces":[ + +["U", 0.166667, +[ ["A","R",1,0,0],["B","R",2,1,0],["c","A",3,1,1] ], + +[[3,2]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["A","R",1,0,0],["B","R",2,1,0],["c","A",3,1,1],["c","A",4,1,2] ], + +[[3,2],[4,2]], +[[4,3]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["A","R",1,0,0],["a","A",2,0,1],["B","R",3,1,0],["c","A",4,1,1] ], + +[[2,1],[4,3]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["A","R",1,0,0],["a","A",2,0,1],["B","R",3,1,0],["c","A",4,1,1],["c","A",5,1,2] ], + +[[2,1],[4,3],[5,3]], +[[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["A","R",1,0,0],["b","A",2,0,1],["B","R",3,1,0],["c","A",4,1,1] ], + +[[2,1],[4,3]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0833333, +[ ["A","R",1,0,0],["b","A",2,0,1],["B","R",3,1,0],["c","A",4,1,1],["c","A",5,1,2] ], + +[[2,1],[4,3],[5,3]], +[[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.0416667, +[ ["A","R",1,0,0],["a","A",2,0,1],["a","A",3,0,2],["B","R",4,1,0],["c","A",5,1,1] ], + +[[2,1],[3,1],[5,4]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0416667, +[ ["A","R",1,0,0],["a","A",2,0,1],["a","A",3,0,2],["B","R",4,1,0],["c","A",5,1,1],["c","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[6,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0416667, +[ ["A","R",1,0,0],["a","A",2,0,1],["b","A",3,0,2],["B","R",4,1,0],["c","A",5,1,1] ], + +[[2,1],[3,1],[5,4]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0416667, +[ ["A","R",1,0,0],["a","A",2,0,1],["b","A",3,0,2],["B","R",4,1,0],["c","A",5,1,1],["c","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[6,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0416667, +[ ["A","R",1,0,0],["b","A",2,0,1],["a","A",3,0,2],["B","R",4,1,0],["c","A",5,1,1] ], + +[[2,1],[3,1],[5,4]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0416667, +[ ["A","R",1,0,0],["b","A",2,0,1],["a","A",3,0,2],["B","R",4,1,0],["c","A",5,1,1],["c","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[6,5]] +,{"VIEWS":[ ]} +], + +["U", 0.0416667, +[ ["A","R",1,0,0],["b","A",2,0,1],["b","A",3,0,2],["B","R",4,1,0],["c","A",5,1,1] ], + +[[2,1],[3,1],[5,4]], +[[3,2]] +,{"VIEWS":[ ]} +], + +["U", 0.0416667, +[ ["A","R",1,0,0],["b","A",2,0,1],["b","A",3,0,2],["B","R",4,1,0],["c","A",5,1,1],["c","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[6,5]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U",{"SAY":[]}, +{"REPORT":["Total event count as Report","A event count: 14","B event count: 14","c event count: 21","a event count: 10","b event count: 10"]} +, +{"GRAPH":["Total event count as graph for scope 2", + [ [0, "A"] ,[1, "trace 1"] ,[2, "B"] ,[3, "c"] ,[4, "trace 2"] ,[5, "trace 3"] ,[6, "a"] ,[7, "trace 4"] ,[8, "trace 5"] ,[9, "b"] ,[10, "trace 6"] ,[11, "trace 7"] ,[12, "trace 8"] ,[13, "trace 9"] ,[14, "trace 10"] ,[15, "trace 11"] ,[16, "trace 12"] ,[17, "trace 13"] ,[18, "trace 14"] ,[19, "14"] ,[20, "14"] ,[21, "21"] ,[22, "10"] ,[23, "10"] ], + [ [0,1,"in trace"],[0,4,"in trace"],[0,5,"in trace"],[0,7,"in trace"],[0,8,"in trace"],[0,10,"in trace"],[0,11,"in trace"],[0,12,"in trace"],[0,13,"in trace"],[0,14,"in trace"],[0,15,"in trace"],[0,16,"in trace"],[0,17,"in trace"],[0,18,"in trace"],[0,19,"total count"],[2,1,"in trace"],[2,4,"in trace"],[2,5,"in trace"],[2,7,"in trace"],[2,8,"in trace"],[2,10,"in trace"],[2,11,"in trace"],[2,12,"in trace"],[2,13,"in trace"],[2,14,"in trace"],[2,15,"in trace"],[2,16,"in trace"],[2,17,"in trace"],[2,18,"in trace"],[2,20,"total count"],[3,1,"in trace"],[3,4,"in trace"],[3,5,"in trace"],[3,7,"in trace"],[3,8,"in trace"],[3,10,"in trace"],[3,11,"in trace"],[3,12,"in trace"],[3,13,"in trace"],[3,14,"in trace"],[3,15,"in trace"],[3,16,"in trace"],[3,17,"in trace"],[3,18,"in trace"],[3,21,"total count"],[6,5,"in trace"],[6,7,"in trace"],[6,11,"in trace"],[6,12,"in trace"],[6,13,"in trace"],[6,14,"in trace"],[6,15,"in trace"],[6,16,"in trace"],[6,22,"total count"],[9,8,"in trace"],[9,10,"in trace"],[9,13,"in trace"],[9,14,"in trace"],[9,15,"in trace"],[9,16,"in trace"],[9,17,"in trace"],[9,18,"in trace"],[9,23,"total count"]], + [] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example35_Finite_State_Diagram.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example35_Finite_State_Diagram.json new file mode 100644 index 0000000..6c20020 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example35_Finite_State_Diagram.json @@ -0,0 +1,367 @@ +{"traces":[ + +["U", 0.161616, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_behavior","R",8,1,0],["S4_to_S2","C",9,1,8],["a","A",10,1,9],["S2","A",11,1,10],["S2_to_End","C",12,1,11],["empty","A",13,1,12],["End","A",14,1,13],["S3_behavior","R",15,2,0],["S3","A",18,2,6],["S3_to_S4","C",19,2,7],["b","A",20,2,8],["S4_behavior","R",21,3,0],["S4","A",24,3,7] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,15],[7,6],[9,8],[9,21],[10,9],[11,8],[12,8],[13,12],[14,8],[18,15],[19,15],[19,21],[20,19],[24,21]], +[[3,2],[5,3],[6,5],[9,24],[11,9],[12,11],[14,12],[18,6],[19,18],[24,19]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S4"] ,[4, "S2"] ,[5, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"b"],[3,4,"a"],[4,5,"empty"]], + [] ]} ]} +], + +["U", 0.161616, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_behavior","R",8,1,0],["S4_to_S2","C",9,1,11],["a","A",10,1,12],["S2","A",11,1,13],["S2_to_End","C",12,1,14],["empty","A",13,1,15],["End","A",14,1,16],["S3_behavior","R",15,2,0],["S3","A",18,2,6],["S3_to_S3","C",19,2,7],["a","A",20,2,8],["S3","A",21,2,9],["S3_to_S4","C",22,2,10],["b","A",23,2,11],["S4_behavior","R",24,3,0],["S4","A",27,3,10] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,15],[7,6],[9,8],[9,24],[10,9],[11,8],[12,8],[13,12],[14,8],[18,15],[19,15],[20,19],[21,15],[22,15],[22,24],[23,22],[27,24]], +[[3,2],[5,3],[6,5],[9,27],[11,9],[12,11],[14,12],[18,6],[19,18],[21,19],[22,21],[27,22]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S4"] ,[5, "S2"] ,[6, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"empty"]], + [] ]} ]} +], + +["U", 0.161616, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_behavior","R",8,1,0],["S4_to_S2","C",9,1,14],["a","A",10,1,15],["S2","A",11,1,16],["S2_to_End","C",12,1,17],["empty","A",13,1,18],["End","A",14,1,19],["S3_behavior","R",15,2,0],["S3","A",18,2,6],["S3_to_S3","C",19,2,7],["a","A",20,2,8],["S3","A",21,2,9],["S3_to_S3","C",22,2,10],["a","A",23,2,11],["S3","A",24,2,12],["S3_to_S4","C",25,2,13],["b","A",26,2,14],["S4_behavior","R",27,3,0],["S4","A",30,3,13] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,15],[7,6],[9,8],[9,27],[10,9],[11,8],[12,8],[13,12],[14,8],[18,15],[19,15],[20,19],[21,15],[22,15],[23,22],[24,15],[25,15],[25,27],[26,25],[30,27]], +[[3,2],[5,3],[6,5],[9,30],[11,9],[12,11],[14,12],[18,6],[19,18],[21,19],[22,21],[24,22],[25,24],[30,25]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S3"] ,[5, "S4"] ,[6, "S2"] ,[7, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"empty"]], + [] ]} ]} +], + +["U", 0.121212, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["a","A",7,0,6],["S2_behavior","R",8,1,0],["S4_to_S2","C",9,1,7],["a","A",10,1,8],["S2","A",11,1,9],["S2_to_End","C",12,1,10],["empty","A",13,1,11],["End","A",14,1,12],["S3_behavior","R",15,2,0],["S4_behavior","R",16,3,0],["S4","A",19,3,6] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,16],[7,6],[9,8],[9,16],[10,9],[11,8],[12,8],[13,12],[14,8],[19,16]], +[[3,2],[5,3],[6,5],[9,19],[11,9],[12,11],[14,12],[19,6]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"empty"]], + [] ]} ]} +], + +["U", 0.121212, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["b","A",7,0,6],["S2_behavior","R",8,1,0],["S4_to_S2","C",9,1,7],["a","A",10,1,8],["S2","A",11,1,9],["S2_to_End","C",12,1,10],["empty","A",13,1,11],["End","A",14,1,12],["S3_behavior","R",15,2,0],["S4_behavior","R",16,3,0],["S4","A",19,3,6] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,16],[7,6],[9,8],[9,16],[10,9],[11,8],[12,8],[13,12],[14,8],[19,16]], +[[3,2],[5,3],[6,5],[9,19],[11,9],[12,11],[14,12],[19,6]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "End"] ], + [ [0,1,"empty"],[1,2,"b"],[2,3,"a"],[3,4,"empty"]], + [] ]} ]} +], + +["U", 0.013468, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,10],["b","A",9,0,11],["S1","A",10,0,12],["S1_to_S3","C",11,0,13],["a","A",12,0,14],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,8],["a","A",15,1,9],["S2","A",16,1,10],["S4_to_S2","C",19,1,16],["a","A",20,1,17],["S2","A",21,1,18],["S2_to_End","C",22,1,19],["empty","A",23,1,20],["End","A",24,1,21],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S4","C",29,2,7],["b","A",30,2,8],["S3","A",33,2,14],["S3_to_S4","C",34,2,15],["b","A",35,2,16],["S4_behavior","R",36,3,0],["S4","A",39,3,7],["S4","A",44,3,15] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,36],[15,14],[16,13],[19,13],[19,36],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[29,36],[30,29],[33,25],[34,25],[34,36],[35,34],[39,36],[44,36]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,29],[14,39],[16,14],[19,8],[19,44],[21,19],[22,21],[24,22],[28,6],[29,28],[33,11],[34,33],[34,14],[39,29],[44,34]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S4"] ,[4, "S2"] ,[5, "S1"] ,[6, "S3"] ,[7, "S4"] ,[8, "S2"] ,[9, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"b"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"b"],[7,8,"a"],[8,9,"empty"]], + [] ]} ]} +], + +["U", 0.013468, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,10],["b","A",9,0,11],["S1","A",10,0,12],["S1_to_S3","C",11,0,13],["a","A",12,0,14],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,8],["a","A",15,1,9],["S2","A",16,1,10],["S4_to_S2","C",19,1,19],["a","A",20,1,20],["S2","A",21,1,21],["S2_to_End","C",22,1,22],["empty","A",23,1,23],["End","A",24,1,24],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S4","C",29,2,7],["b","A",30,2,8],["S3","A",33,2,14],["S3_to_S3","C",34,2,15],["a","A",35,2,16],["S3","A",36,2,17],["S3_to_S4","C",37,2,18],["b","A",38,2,19],["S4_behavior","R",39,3,0],["S4","A",42,3,7],["S4","A",47,3,18] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,39],[15,14],[16,13],[19,13],[19,39],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[29,39],[30,29],[33,25],[34,25],[35,34],[36,25],[37,25],[37,39],[38,37],[42,39],[47,39]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,29],[14,42],[16,14],[19,8],[19,47],[21,19],[22,21],[24,22],[28,6],[29,28],[33,11],[34,33],[36,34],[37,36],[37,14],[42,29],[47,37]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S4"] ,[4, "S2"] ,[5, "S1"] ,[6, "S3"] ,[7, "S3"] ,[8, "S4"] ,[9, "S2"] ,[10, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"b"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"a"],[7,8,"b"],[8,9,"a"],[9,10,"empty"]], + [] ]} ]} +], + +["U", 0.013468, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,10],["b","A",9,0,11],["S1","A",10,0,12],["S1_to_S3","C",11,0,13],["a","A",12,0,14],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,8],["a","A",15,1,9],["S2","A",16,1,10],["S4_to_S2","C",19,1,22],["a","A",20,1,23],["S2","A",21,1,24],["S2_to_End","C",22,1,25],["empty","A",23,1,26],["End","A",24,1,27],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S4","C",29,2,7],["b","A",30,2,8],["S3","A",33,2,14],["S3_to_S3","C",34,2,15],["a","A",35,2,16],["S3","A",36,2,17],["S3_to_S3","C",37,2,18],["a","A",38,2,19],["S3","A",39,2,20],["S3_to_S4","C",40,2,21],["b","A",41,2,22],["S4_behavior","R",42,3,0],["S4","A",45,3,7],["S4","A",50,3,21] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,42],[15,14],[16,13],[19,13],[19,42],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[29,42],[30,29],[33,25],[34,25],[35,34],[36,25],[37,25],[38,37],[39,25],[40,25],[40,42],[41,40],[45,42],[50,42]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,29],[14,45],[16,14],[19,8],[19,50],[21,19],[22,21],[24,22],[28,6],[29,28],[33,11],[34,33],[36,34],[37,36],[39,37],[40,39],[40,14],[45,29],[50,40]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S4"] ,[4, "S2"] ,[5, "S1"] ,[6, "S3"] ,[7, "S3"] ,[8, "S3"] ,[9, "S4"] ,[10, "S2"] ,[11, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"b"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"a"],[7,8,"a"],[8,9,"b"],[9,10,"a"],[10,11,"empty"]], + [] ]} ]} +], + +["U", 0.013468, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,13],["b","A",9,0,14],["S1","A",10,0,15],["S1_to_S3","C",11,0,16],["a","A",12,0,17],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,11],["a","A",15,1,12],["S2","A",16,1,13],["S4_to_S2","C",19,1,19],["a","A",20,1,20],["S2","A",21,1,21],["S2_to_End","C",22,1,22],["empty","A",23,1,23],["End","A",24,1,24],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S4","C",32,2,10],["b","A",33,2,11],["S3","A",36,2,17],["S3_to_S4","C",37,2,18],["b","A",38,2,19],["S4_behavior","R",39,3,0],["S4","A",42,3,10],["S4","A",47,3,18] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,39],[15,14],[16,13],[19,13],[19,39],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[32,39],[33,32],[36,25],[37,25],[37,39],[38,37],[42,39],[47,39]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,32],[14,42],[16,14],[19,8],[19,47],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[36,11],[37,36],[37,14],[42,32],[47,37]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S4"] ,[5, "S2"] ,[6, "S1"] ,[7, "S3"] ,[8, "S4"] ,[9, "S2"] ,[10, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"b"],[6,7,"a"],[7,8,"b"],[8,9,"a"],[9,10,"empty"]], + [] ]} ]} +], + +["U", 0.013468, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,13],["b","A",9,0,14],["S1","A",10,0,15],["S1_to_S3","C",11,0,16],["a","A",12,0,17],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,11],["a","A",15,1,12],["S2","A",16,1,13],["S4_to_S2","C",19,1,22],["a","A",20,1,23],["S2","A",21,1,24],["S2_to_End","C",22,1,25],["empty","A",23,1,26],["End","A",24,1,27],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S4","C",32,2,10],["b","A",33,2,11],["S3","A",36,2,17],["S3_to_S3","C",37,2,18],["a","A",38,2,19],["S3","A",39,2,20],["S3_to_S4","C",40,2,21],["b","A",41,2,22],["S4_behavior","R",42,3,0],["S4","A",45,3,10],["S4","A",50,3,21] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,42],[15,14],[16,13],[19,13],[19,42],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[32,42],[33,32],[36,25],[37,25],[38,37],[39,25],[40,25],[40,42],[41,40],[45,42],[50,42]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,32],[14,45],[16,14],[19,8],[19,50],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[36,11],[37,36],[39,37],[40,39],[40,14],[45,32],[50,40]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S4"] ,[5, "S2"] ,[6, "S1"] ,[7, "S3"] ,[8, "S3"] ,[9, "S4"] ,[10, "S2"] ,[11, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"b"],[6,7,"a"],[7,8,"a"],[8,9,"b"],[9,10,"a"],[10,11,"empty"]], + [] ]} ]} +], + +["U", 0.013468, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,13],["b","A",9,0,14],["S1","A",10,0,15],["S1_to_S3","C",11,0,16],["a","A",12,0,17],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,11],["a","A",15,1,12],["S2","A",16,1,13],["S4_to_S2","C",19,1,25],["a","A",20,1,26],["S2","A",21,1,27],["S2_to_End","C",22,1,28],["empty","A",23,1,29],["End","A",24,1,30],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S4","C",32,2,10],["b","A",33,2,11],["S3","A",36,2,17],["S3_to_S3","C",37,2,18],["a","A",38,2,19],["S3","A",39,2,20],["S3_to_S3","C",40,2,21],["a","A",41,2,22],["S3","A",42,2,23],["S3_to_S4","C",43,2,24],["b","A",44,2,25],["S4_behavior","R",45,3,0],["S4","A",48,3,10],["S4","A",53,3,24] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,45],[15,14],[16,13],[19,13],[19,45],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[32,45],[33,32],[36,25],[37,25],[38,37],[39,25],[40,25],[41,40],[42,25],[43,25],[43,45],[44,43],[48,45],[53,45]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,32],[14,48],[16,14],[19,8],[19,53],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[36,11],[37,36],[39,37],[40,39],[42,40],[43,42],[43,14],[48,32],[53,43]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S4"] ,[5, "S2"] ,[6, "S1"] ,[7, "S3"] ,[8, "S3"] ,[9, "S3"] ,[10, "S4"] ,[11, "S2"] ,[12, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"b"],[6,7,"a"],[7,8,"a"],[8,9,"a"],[9,10,"b"],[10,11,"a"],[11,12,"empty"]], + [] ]} ]} +], + +["U", 0.013468, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,16],["b","A",9,0,17],["S1","A",10,0,18],["S1_to_S3","C",11,0,19],["a","A",12,0,20],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,14],["a","A",15,1,15],["S2","A",16,1,16],["S4_to_S2","C",19,1,22],["a","A",20,1,23],["S2","A",21,1,24],["S2_to_End","C",22,1,25],["empty","A",23,1,26],["End","A",24,1,27],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S3","C",32,2,10],["a","A",33,2,11],["S3","A",34,2,12],["S3_to_S4","C",35,2,13],["b","A",36,2,14],["S3","A",39,2,20],["S3_to_S4","C",40,2,21],["b","A",41,2,22],["S4_behavior","R",42,3,0],["S4","A",45,3,13],["S4","A",50,3,21] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,42],[15,14],[16,13],[19,13],[19,42],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[33,32],[34,25],[35,25],[35,42],[36,35],[39,25],[40,25],[40,42],[41,40],[45,42],[50,42]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,35],[14,45],[16,14],[19,8],[19,50],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[34,32],[35,34],[39,11],[40,39],[40,14],[45,35],[50,40]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S3"] ,[5, "S4"] ,[6, "S2"] ,[7, "S1"] ,[8, "S3"] ,[9, "S4"] ,[10, "S2"] ,[11, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"b"],[7,8,"a"],[8,9,"b"],[9,10,"a"],[10,11,"empty"]], + [] ]} ]} +], + +["U", 0.013468, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,16],["b","A",9,0,17],["S1","A",10,0,18],["S1_to_S3","C",11,0,19],["a","A",12,0,20],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,14],["a","A",15,1,15],["S2","A",16,1,16],["S4_to_S2","C",19,1,25],["a","A",20,1,26],["S2","A",21,1,27],["S2_to_End","C",22,1,28],["empty","A",23,1,29],["End","A",24,1,30],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S3","C",32,2,10],["a","A",33,2,11],["S3","A",34,2,12],["S3_to_S4","C",35,2,13],["b","A",36,2,14],["S3","A",39,2,20],["S3_to_S3","C",40,2,21],["a","A",41,2,22],["S3","A",42,2,23],["S3_to_S4","C",43,2,24],["b","A",44,2,25],["S4_behavior","R",45,3,0],["S4","A",48,3,13],["S4","A",53,3,24] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,45],[15,14],[16,13],[19,13],[19,45],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[33,32],[34,25],[35,25],[35,45],[36,35],[39,25],[40,25],[41,40],[42,25],[43,25],[43,45],[44,43],[48,45],[53,45]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,35],[14,48],[16,14],[19,8],[19,53],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[34,32],[35,34],[39,11],[40,39],[42,40],[43,42],[43,14],[48,35],[53,43]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S3"] ,[5, "S4"] ,[6, "S2"] ,[7, "S1"] ,[8, "S3"] ,[9, "S3"] ,[10, "S4"] ,[11, "S2"] ,[12, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"b"],[7,8,"a"],[8,9,"a"],[9,10,"b"],[10,11,"a"],[11,12,"empty"]], + [] ]} ]} +], + +["U", 0.013468, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,16],["b","A",9,0,17],["S1","A",10,0,18],["S1_to_S3","C",11,0,19],["a","A",12,0,20],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,14],["a","A",15,1,15],["S2","A",16,1,16],["S4_to_S2","C",19,1,28],["a","A",20,1,29],["S2","A",21,1,30],["S2_to_End","C",22,1,31],["empty","A",23,1,32],["End","A",24,1,33],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S3","C",32,2,10],["a","A",33,2,11],["S3","A",34,2,12],["S3_to_S4","C",35,2,13],["b","A",36,2,14],["S3","A",39,2,20],["S3_to_S3","C",40,2,21],["a","A",41,2,22],["S3","A",42,2,23],["S3_to_S3","C",43,2,24],["a","A",44,2,25],["S3","A",45,2,26],["S3_to_S4","C",46,2,27],["b","A",47,2,28],["S4_behavior","R",48,3,0],["S4","A",51,3,13],["S4","A",56,3,27] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,48],[15,14],[16,13],[19,13],[19,48],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[33,32],[34,25],[35,25],[35,48],[36,35],[39,25],[40,25],[41,40],[42,25],[43,25],[44,43],[45,25],[46,25],[46,48],[47,46],[51,48],[56,48]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,35],[14,51],[16,14],[19,8],[19,56],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[34,32],[35,34],[39,11],[40,39],[42,40],[43,42],[45,43],[46,45],[46,14],[51,35],[56,46]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S3"] ,[5, "S4"] ,[6, "S2"] ,[7, "S1"] ,[8, "S3"] ,[9, "S3"] ,[10, "S3"] ,[11, "S4"] ,[12, "S2"] ,[13, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"b"],[7,8,"a"],[8,9,"a"],[9,10,"a"],[10,11,"b"],[11,12,"a"],[12,13,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,10],["b","A",9,0,11],["S1","A",10,0,12],["S1_to_S4","C",11,0,13],["a","A",12,0,14],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,8],["a","A",15,1,9],["S2","A",16,1,10],["S4_to_S2","C",19,1,15],["a","A",20,1,16],["S2","A",21,1,17],["S2_to_End","C",22,1,18],["empty","A",23,1,19],["End","A",24,1,20],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S4","C",29,2,7],["b","A",30,2,8],["S4_behavior","R",31,3,0],["S4","A",34,3,7],["S4","A",39,3,14] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,31],[12,11],[14,13],[14,31],[15,14],[16,13],[19,13],[19,31],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[29,31],[30,29],[34,31],[39,31]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,34],[16,14],[19,8],[19,39],[21,19],[22,21],[24,22],[28,6],[29,28],[34,29],[39,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S4"] ,[4, "S2"] ,[5, "S1"] ,[6, "S4"] ,[7, "S2"] ,[8, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"b"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"a"],[7,8,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,13],["b","A",9,0,14],["S1","A",10,0,15],["S1_to_S4","C",11,0,16],["a","A",12,0,17],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,11],["a","A",15,1,12],["S2","A",16,1,13],["S4_to_S2","C",19,1,18],["a","A",20,1,19],["S2","A",21,1,20],["S2_to_End","C",22,1,21],["empty","A",23,1,22],["End","A",24,1,23],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S4","C",32,2,10],["b","A",33,2,11],["S4_behavior","R",34,3,0],["S4","A",37,3,10],["S4","A",42,3,17] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,34],[12,11],[14,13],[14,34],[15,14],[16,13],[19,13],[19,34],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[32,34],[33,32],[37,34],[42,34]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,37],[16,14],[19,8],[19,42],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[37,32],[42,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S4"] ,[5, "S2"] ,[6, "S1"] ,[7, "S4"] ,[8, "S2"] ,[9, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"b"],[6,7,"a"],[7,8,"a"],[8,9,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,16],["b","A",9,0,17],["S1","A",10,0,18],["S1_to_S4","C",11,0,19],["a","A",12,0,20],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,14],["a","A",15,1,15],["S2","A",16,1,16],["S4_to_S2","C",19,1,21],["a","A",20,1,22],["S2","A",21,1,23],["S2_to_End","C",22,1,24],["empty","A",23,1,25],["End","A",24,1,26],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S3","C",32,2,10],["a","A",33,2,11],["S3","A",34,2,12],["S3_to_S4","C",35,2,13],["b","A",36,2,14],["S4_behavior","R",37,3,0],["S4","A",40,3,13],["S4","A",45,3,20] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,37],[12,11],[14,13],[14,37],[15,14],[16,13],[19,13],[19,37],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[33,32],[34,25],[35,25],[35,37],[36,35],[40,37],[45,37]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,40],[16,14],[19,8],[19,45],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[34,32],[35,34],[40,35],[45,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S3"] ,[5, "S4"] ,[6, "S2"] ,[7, "S1"] ,[8, "S4"] ,[9, "S2"] ,[10, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"b"],[7,8,"a"],[8,9,"a"],[9,10,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,10],["b","A",9,0,11],["S1","A",10,0,12],["S1_to_S4","C",11,0,13],["b","A",12,0,14],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,8],["a","A",15,1,9],["S2","A",16,1,10],["S4_to_S2","C",19,1,15],["a","A",20,1,16],["S2","A",21,1,17],["S2_to_End","C",22,1,18],["empty","A",23,1,19],["End","A",24,1,20],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S4","C",29,2,7],["b","A",30,2,8],["S4_behavior","R",31,3,0],["S4","A",34,3,7],["S4","A",39,3,14] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,31],[12,11],[14,13],[14,31],[15,14],[16,13],[19,13],[19,31],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[29,31],[30,29],[34,31],[39,31]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,34],[16,14],[19,8],[19,39],[21,19],[22,21],[24,22],[28,6],[29,28],[34,29],[39,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S4"] ,[4, "S2"] ,[5, "S1"] ,[6, "S4"] ,[7, "S2"] ,[8, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"b"],[3,4,"a"],[4,5,"b"],[5,6,"b"],[6,7,"a"],[7,8,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,13],["b","A",9,0,14],["S1","A",10,0,15],["S1_to_S4","C",11,0,16],["b","A",12,0,17],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,11],["a","A",15,1,12],["S2","A",16,1,13],["S4_to_S2","C",19,1,18],["a","A",20,1,19],["S2","A",21,1,20],["S2_to_End","C",22,1,21],["empty","A",23,1,22],["End","A",24,1,23],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S4","C",32,2,10],["b","A",33,2,11],["S4_behavior","R",34,3,0],["S4","A",37,3,10],["S4","A",42,3,17] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,34],[12,11],[14,13],[14,34],[15,14],[16,13],[19,13],[19,34],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[32,34],[33,32],[37,34],[42,34]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,37],[16,14],[19,8],[19,42],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[37,32],[42,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S4"] ,[5, "S2"] ,[6, "S1"] ,[7, "S4"] ,[8, "S2"] ,[9, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"b"],[6,7,"b"],[7,8,"a"],[8,9,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S3","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,16],["b","A",9,0,17],["S1","A",10,0,18],["S1_to_S4","C",11,0,19],["b","A",12,0,20],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,14],["a","A",15,1,15],["S2","A",16,1,16],["S4_to_S2","C",19,1,21],["a","A",20,1,22],["S2","A",21,1,23],["S2_to_End","C",22,1,24],["empty","A",23,1,25],["End","A",24,1,26],["S3_behavior","R",25,2,0],["S3","A",28,2,6],["S3_to_S3","C",29,2,7],["a","A",30,2,8],["S3","A",31,2,9],["S3_to_S3","C",32,2,10],["a","A",33,2,11],["S3","A",34,2,12],["S3_to_S4","C",35,2,13],["b","A",36,2,14],["S4_behavior","R",37,3,0],["S4","A",40,3,13],["S4","A",45,3,20] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,25],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,37],[12,11],[14,13],[14,37],[15,14],[16,13],[19,13],[19,37],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[33,32],[34,25],[35,25],[35,37],[36,35],[40,37],[45,37]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,40],[16,14],[19,8],[19,45],[21,19],[22,21],[24,22],[28,6],[29,28],[31,29],[32,31],[34,32],[35,34],[40,35],[45,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S3"] ,[4, "S3"] ,[5, "S4"] ,[6, "S2"] ,[7, "S1"] ,[8, "S4"] ,[9, "S2"] ,[10, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"a"],[4,5,"b"],[5,6,"a"],[6,7,"b"],[7,8,"b"],[8,9,"a"],[9,10,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S3","C",11,0,12],["a","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,15],["a","A",20,1,16],["S2","A",21,1,17],["S2_to_End","C",22,1,18],["empty","A",23,1,19],["End","A",24,1,20],["S3_behavior","R",25,2,0],["S3","A",28,2,13],["S3_to_S4","C",29,2,14],["b","A",30,2,15],["S4_behavior","R",31,3,0],["S4","A",34,3,6],["S4","A",39,3,14] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,31],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,31],[15,14],[16,13],[19,13],[19,31],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[29,31],[30,29],[34,31],[39,31]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[14,34],[16,14],[19,8],[19,39],[21,19],[22,21],[24,22],[28,11],[29,28],[29,14],[34,6],[39,29]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S3"] ,[6, "S4"] ,[7, "S2"] ,[8, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"b"],[6,7,"a"],[7,8,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S3","C",11,0,12],["a","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,18],["a","A",20,1,19],["S2","A",21,1,20],["S2_to_End","C",22,1,21],["empty","A",23,1,22],["End","A",24,1,23],["S3_behavior","R",25,2,0],["S3","A",28,2,13],["S3_to_S3","C",29,2,14],["a","A",30,2,15],["S3","A",31,2,16],["S3_to_S4","C",32,2,17],["b","A",33,2,18],["S4_behavior","R",34,3,0],["S4","A",37,3,6],["S4","A",42,3,17] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,34],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,34],[15,14],[16,13],[19,13],[19,34],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[32,34],[33,32],[37,34],[42,34]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[14,37],[16,14],[19,8],[19,42],[21,19],[22,21],[24,22],[28,11],[29,28],[31,29],[32,31],[32,14],[37,6],[42,32]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S3"] ,[6, "S3"] ,[7, "S4"] ,[8, "S2"] ,[9, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"a"],[6,7,"b"],[7,8,"a"],[8,9,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S3","C",11,0,12],["a","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,21],["a","A",20,1,22],["S2","A",21,1,23],["S2_to_End","C",22,1,24],["empty","A",23,1,25],["End","A",24,1,26],["S3_behavior","R",25,2,0],["S3","A",28,2,13],["S3_to_S3","C",29,2,14],["a","A",30,2,15],["S3","A",31,2,16],["S3_to_S3","C",32,2,17],["a","A",33,2,18],["S3","A",34,2,19],["S3_to_S4","C",35,2,20],["b","A",36,2,21],["S4_behavior","R",37,3,0],["S4","A",40,3,6],["S4","A",45,3,20] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,37],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,37],[15,14],[16,13],[19,13],[19,37],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[33,32],[34,25],[35,25],[35,37],[36,35],[40,37],[45,37]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[14,40],[16,14],[19,8],[19,45],[21,19],[22,21],[24,22],[28,11],[29,28],[31,29],[32,31],[34,32],[35,34],[35,14],[40,6],[45,35]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S3"] ,[6, "S3"] ,[7, "S3"] ,[8, "S4"] ,[9, "S2"] ,[10, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"a"],[6,7,"a"],[7,8,"b"],[8,9,"a"],[9,10,"empty"]], + [] ]} ]} +], + +["U", 0.00757576, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S4","C",11,0,12],["a","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,14],["a","A",20,1,15],["S2","A",21,1,16],["S2_to_End","C",22,1,17],["empty","A",23,1,18],["End","A",24,1,19],["S3_behavior","R",25,2,0],["S4_behavior","R",26,3,0],["S4","A",29,3,6],["S4","A",34,3,13] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,26],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,26],[12,11],[14,13],[14,26],[15,14],[16,13],[19,13],[19,26],[20,19],[21,13],[22,13],[23,22],[24,13],[29,26],[34,26]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,29],[16,14],[19,8],[19,34],[21,19],[22,21],[24,22],[29,6],[34,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S4"] ,[6, "S2"] ,[7, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"a"],[6,7,"empty"]], + [] ]} ]} +], + +["U", 0.00757576, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["a","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S4","C",11,0,12],["b","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,14],["a","A",20,1,15],["S2","A",21,1,16],["S2_to_End","C",22,1,17],["empty","A",23,1,18],["End","A",24,1,19],["S3_behavior","R",25,2,0],["S4_behavior","R",26,3,0],["S4","A",29,3,6],["S4","A",34,3,13] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,26],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,26],[12,11],[14,13],[14,26],[15,14],[16,13],[19,13],[19,26],[20,19],[21,13],[22,13],[23,22],[24,13],[29,26],[34,26]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,29],[16,14],[19,8],[19,34],[21,19],[22,21],[24,22],[29,6],[34,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S4"] ,[6, "S2"] ,[7, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[2,3,"a"],[3,4,"b"],[4,5,"b"],[5,6,"a"],[6,7,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["b","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S3","C",11,0,12],["a","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,15],["a","A",20,1,16],["S2","A",21,1,17],["S2_to_End","C",22,1,18],["empty","A",23,1,19],["End","A",24,1,20],["S3_behavior","R",25,2,0],["S3","A",28,2,13],["S3_to_S4","C",29,2,14],["b","A",30,2,15],["S4_behavior","R",31,3,0],["S4","A",34,3,6],["S4","A",39,3,14] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,31],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,31],[15,14],[16,13],[19,13],[19,31],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[29,31],[30,29],[34,31],[39,31]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[14,34],[16,14],[19,8],[19,39],[21,19],[22,21],[24,22],[28,11],[29,28],[29,14],[34,6],[39,29]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S3"] ,[6, "S4"] ,[7, "S2"] ,[8, "End"] ], + [ [0,1,"empty"],[1,2,"b"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"b"],[6,7,"a"],[7,8,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["b","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S3","C",11,0,12],["a","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,18],["a","A",20,1,19],["S2","A",21,1,20],["S2_to_End","C",22,1,21],["empty","A",23,1,22],["End","A",24,1,23],["S3_behavior","R",25,2,0],["S3","A",28,2,13],["S3_to_S3","C",29,2,14],["a","A",30,2,15],["S3","A",31,2,16],["S3_to_S4","C",32,2,17],["b","A",33,2,18],["S4_behavior","R",34,3,0],["S4","A",37,3,6],["S4","A",42,3,17] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,34],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,34],[15,14],[16,13],[19,13],[19,34],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[32,34],[33,32],[37,34],[42,34]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[14,37],[16,14],[19,8],[19,42],[21,19],[22,21],[24,22],[28,11],[29,28],[31,29],[32,31],[32,14],[37,6],[42,32]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S3"] ,[6, "S3"] ,[7, "S4"] ,[8, "S2"] ,[9, "End"] ], + [ [0,1,"empty"],[1,2,"b"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"a"],[6,7,"b"],[7,8,"a"],[8,9,"empty"]], + [] ]} ]} +], + +["U", 0.010101, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["b","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S3","C",11,0,12],["a","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,21],["a","A",20,1,22],["S2","A",21,1,23],["S2_to_End","C",22,1,24],["empty","A",23,1,25],["End","A",24,1,26],["S3_behavior","R",25,2,0],["S3","A",28,2,13],["S3_to_S3","C",29,2,14],["a","A",30,2,15],["S3","A",31,2,16],["S3_to_S3","C",32,2,17],["a","A",33,2,18],["S3","A",34,2,19],["S3_to_S4","C",35,2,20],["b","A",36,2,21],["S4_behavior","R",37,3,0],["S4","A",40,3,6],["S4","A",45,3,20] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,37],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,25],[12,11],[14,13],[14,37],[15,14],[16,13],[19,13],[19,37],[20,19],[21,13],[22,13],[23,22],[24,13],[28,25],[29,25],[30,29],[31,25],[32,25],[33,32],[34,25],[35,25],[35,37],[36,35],[40,37],[45,37]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[14,40],[16,14],[19,8],[19,45],[21,19],[22,21],[24,22],[28,11],[29,28],[31,29],[32,31],[34,32],[35,34],[35,14],[40,6],[45,35]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S3"] ,[6, "S3"] ,[7, "S3"] ,[8, "S4"] ,[9, "S2"] ,[10, "End"] ], + [ [0,1,"empty"],[1,2,"b"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"a"],[6,7,"a"],[7,8,"b"],[8,9,"a"],[9,10,"empty"]], + [] ]} ]} +], + +["U", 0.00757576, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["b","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S4","C",11,0,12],["a","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,14],["a","A",20,1,15],["S2","A",21,1,16],["S2_to_End","C",22,1,17],["empty","A",23,1,18],["End","A",24,1,19],["S3_behavior","R",25,2,0],["S4_behavior","R",26,3,0],["S4","A",29,3,6],["S4","A",34,3,13] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,26],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,26],[12,11],[14,13],[14,26],[15,14],[16,13],[19,13],[19,26],[20,19],[21,13],[22,13],[23,22],[24,13],[29,26],[34,26]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,29],[16,14],[19,8],[19,34],[21,19],[22,21],[24,22],[29,6],[34,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S4"] ,[6, "S2"] ,[7, "End"] ], + [ [0,1,"empty"],[1,2,"b"],[2,3,"a"],[3,4,"b"],[4,5,"a"],[5,6,"a"],[6,7,"empty"]], + [] ]} ]} +], + +["U", 0.00757576, +[ ["S1_behavior","R",1,0,0],["Start","A",2,0,1],["Start_to_S1","C",3,0,2],["empty","A",4,0,3],["S1","A",5,0,4],["S1_to_S4","C",6,0,5],["b","A",7,0,6],["S2_to_S1","C",8,0,9],["b","A",9,0,10],["S1","A",10,0,11],["S1_to_S4","C",11,0,12],["b","A",12,0,13],["S2_behavior","R",13,1,0],["S4_to_S2","C",14,1,7],["a","A",15,1,8],["S2","A",16,1,9],["S4_to_S2","C",19,1,14],["a","A",20,1,15],["S2","A",21,1,16],["S2_to_End","C",22,1,17],["empty","A",23,1,18],["End","A",24,1,19],["S3_behavior","R",25,2,0],["S4_behavior","R",26,3,0],["S4","A",29,3,6],["S4","A",34,3,13] ], + +[[2,1],[3,1],[4,3],[5,1],[6,1],[6,26],[7,6],[8,1],[8,13],[9,8],[10,1],[11,1],[11,26],[12,11],[14,13],[14,26],[15,14],[16,13],[19,13],[19,26],[20,19],[21,13],[22,13],[23,22],[24,13],[29,26],[34,26]], +[[3,2],[5,3],[6,5],[8,6],[8,16],[10,8],[11,10],[11,14],[14,29],[16,14],[19,8],[19,34],[21,19],[22,21],[24,22],[29,6],[34,11]] +,{"VIEWS":[ +{"GRAPH":["Path for the event trace", + [ [0, "Start"] ,[1, "S1"] ,[2, "S4"] ,[3, "S2"] ,[4, "S1"] ,[5, "S4"] ,[6, "S2"] ,[7, "End"] ], + [ [0,1,"empty"],[1,2,"b"],[2,3,"a"],[3,4,"b"],[4,5,"b"],[5,6,"a"],[6,7,"empty"]], + [] ]} ]} +] +] +,"GLOBAL":["U", +{"GRAPH":["State transition diagram", + [ [0, "Start"] ,[1, "S1"] ,[2, "S3"] ,[3, "S4"] ,[4, "S2"] ,[5, "End"] ], + [ [0,1,"empty"],[1,2,"a"],[1,3,"a"],[1,3,"b"],[2,3,"b"],[2,2,"a"],[3,4,"a"],[4,5,"empty"],[4,1,"b"]], + [] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example36_Statechart.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example36_Statechart.json new file mode 100644 index 0000000..cadae96 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example36_Statechart.json @@ -0,0 +1,111 @@ +{"traces":[ + +["U", 0.817891, +[ ["Customer","R",1,0,0],["ATM_system","R",2,1,0],["Idle","A",3,1,1],["Data_Base","R",4,2,0] ], + +[[3,2]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.0255591, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["get_money","A",5,0,7],["retrieve_card","A",6,0,8],["ATM_system","R",7,1,0],["Idle","A",8,1,1],["read_card","A",9,1,2],["validate_id","A",10,1,3],["id_successful","A",11,1,4],["check_balance","A",12,1,5],["sufficient_balance","A",13,1,6],["dispense_money","A",14,1,7],["Idle","A",15,1,8],["Data_Base","R",16,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[8,7],[9,7],[10,7],[10,16],[11,7],[12,7],[12,16],[13,7],[14,7],[15,7]], +[[3,2],[3,11],[4,3],[5,4],[5,14],[6,5],[9,8],[9,2],[10,9],[11,10],[12,11],[12,10],[12,4],[13,12],[14,13],[15,14]] +,{"VIEWS":[ ]} +], + +["U", 0.0255591, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["not_sufficient_funds","A",5,0,6],["retrieve_card","A",6,0,7],["ATM_system","R",7,1,0],["Idle","A",8,1,1],["read_card","A",9,1,2],["validate_id","A",10,1,3],["id_successful","A",11,1,4],["check_balance","A",12,1,5],["unsufficient_balance","A",13,1,6],["Idle","A",14,1,7],["Data_Base","R",15,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[8,7],[9,7],[10,7],[10,15],[11,7],[12,7],[12,15],[13,7],[14,7]], +[[3,2],[3,11],[4,3],[5,4],[5,13],[6,5],[9,8],[9,2],[10,9],[11,10],[12,11],[12,10],[12,4],[13,12],[14,13]] +,{"VIEWS":[ ]} +], + +["U", 0.102236, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,4],["retrieve_card","A",4,0,5],["ATM_system","R",5,1,0],["Idle","A",6,1,1],["read_card","A",7,1,2],["validate_id","A",8,1,3],["id_failed","A",9,1,4],["Idle","A",10,1,5],["Data_Base","R",11,2,0] ], + +[[2,1],[3,1],[4,1],[6,5],[7,5],[8,5],[8,11],[9,5],[10,5]], +[[3,2],[3,9],[4,3],[7,6],[7,2],[8,7],[9,8],[10,9]] +,{"VIEWS":[ ]} +], + +["U", 0.000798722, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["get_money","A",5,0,7],["retrieve_card","A",6,0,8],["insert_card","A",7,0,9],["identification_succeeds","A",8,0,11],["request_withdrawal","A",9,0,12],["get_money","A",10,0,14],["retrieve_card","A",11,0,15],["ATM_system","R",12,1,0],["Idle","A",13,1,1],["read_card","A",14,1,2],["validate_id","A",15,1,3],["id_successful","A",16,1,4],["check_balance","A",17,1,5],["sufficient_balance","A",18,1,6],["dispense_money","A",19,1,7],["Idle","A",20,1,8],["read_card","A",21,1,9],["validate_id","A",22,1,10],["id_successful","A",23,1,11],["check_balance","A",24,1,12],["sufficient_balance","A",25,1,13],["dispense_money","A",26,1,14],["Idle","A",27,1,15],["Data_Base","R",28,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[13,12],[14,12],[15,12],[15,28],[16,12],[17,12],[17,28],[18,12],[19,12],[20,12],[21,12],[22,12],[22,28],[23,12],[24,12],[24,28],[25,12],[26,12],[27,12]], +[[3,2],[3,16],[4,3],[5,4],[5,19],[6,5],[7,6],[8,7],[8,23],[9,8],[10,9],[10,26],[11,10],[14,13],[14,2],[15,14],[16,15],[17,16],[17,15],[17,4],[18,17],[19,18],[20,19],[21,20],[21,7],[22,21],[22,17],[23,22],[24,23],[24,22],[24,9],[25,24],[26,25],[27,26]] +,{"VIEWS":[ ]} +], + +["U", 0.000798722, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["get_money","A",5,0,7],["retrieve_card","A",6,0,8],["insert_card","A",7,0,9],["identification_succeeds","A",8,0,11],["request_withdrawal","A",9,0,12],["not_sufficient_funds","A",10,0,13],["retrieve_card","A",11,0,14],["ATM_system","R",12,1,0],["Idle","A",13,1,1],["read_card","A",14,1,2],["validate_id","A",15,1,3],["id_successful","A",16,1,4],["check_balance","A",17,1,5],["sufficient_balance","A",18,1,6],["dispense_money","A",19,1,7],["Idle","A",20,1,8],["read_card","A",21,1,9],["validate_id","A",22,1,10],["id_successful","A",23,1,11],["check_balance","A",24,1,12],["unsufficient_balance","A",25,1,13],["Idle","A",26,1,14],["Data_Base","R",27,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[13,12],[14,12],[15,12],[15,27],[16,12],[17,12],[17,27],[18,12],[19,12],[20,12],[21,12],[22,12],[22,27],[23,12],[24,12],[24,27],[25,12],[26,12]], +[[3,2],[3,16],[4,3],[5,4],[5,19],[6,5],[7,6],[8,7],[8,23],[9,8],[10,9],[10,25],[11,10],[14,13],[14,2],[15,14],[16,15],[17,16],[17,15],[17,4],[18,17],[19,18],[20,19],[21,20],[21,7],[22,21],[22,17],[23,22],[24,23],[24,22],[24,9],[25,24],[26,25]] +,{"VIEWS":[ ]} +], + +["U", 0.00319489, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["get_money","A",5,0,7],["retrieve_card","A",6,0,8],["insert_card","A",7,0,9],["identification_fails","A",8,0,11],["retrieve_card","A",9,0,12],["ATM_system","R",10,1,0],["Idle","A",11,1,1],["read_card","A",12,1,2],["validate_id","A",13,1,3],["id_successful","A",14,1,4],["check_balance","A",15,1,5],["sufficient_balance","A",16,1,6],["dispense_money","A",17,1,7],["Idle","A",18,1,8],["read_card","A",19,1,9],["validate_id","A",20,1,10],["id_failed","A",21,1,11],["Idle","A",22,1,12],["Data_Base","R",23,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[11,10],[12,10],[13,10],[13,23],[14,10],[15,10],[15,23],[16,10],[17,10],[18,10],[19,10],[20,10],[20,23],[21,10],[22,10]], +[[3,2],[3,14],[4,3],[5,4],[5,17],[6,5],[7,6],[8,7],[8,21],[9,8],[12,11],[12,2],[13,12],[14,13],[15,14],[15,13],[15,4],[16,15],[17,16],[18,17],[19,18],[19,7],[20,19],[20,15],[21,20],[22,21]] +,{"VIEWS":[ ]} +], + +["U", 0.000798722, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["not_sufficient_funds","A",5,0,6],["retrieve_card","A",6,0,7],["insert_card","A",7,0,8],["identification_succeeds","A",8,0,10],["request_withdrawal","A",9,0,11],["get_money","A",10,0,13],["retrieve_card","A",11,0,14],["ATM_system","R",12,1,0],["Idle","A",13,1,1],["read_card","A",14,1,2],["validate_id","A",15,1,3],["id_successful","A",16,1,4],["check_balance","A",17,1,5],["unsufficient_balance","A",18,1,6],["Idle","A",19,1,7],["read_card","A",20,1,8],["validate_id","A",21,1,9],["id_successful","A",22,1,10],["check_balance","A",23,1,11],["sufficient_balance","A",24,1,12],["dispense_money","A",25,1,13],["Idle","A",26,1,14],["Data_Base","R",27,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[13,12],[14,12],[15,12],[15,27],[16,12],[17,12],[17,27],[18,12],[19,12],[20,12],[21,12],[21,27],[22,12],[23,12],[23,27],[24,12],[25,12],[26,12]], +[[3,2],[3,16],[4,3],[5,4],[5,18],[6,5],[7,6],[8,7],[8,22],[9,8],[10,9],[10,25],[11,10],[14,13],[14,2],[15,14],[16,15],[17,16],[17,15],[17,4],[18,17],[19,18],[20,19],[20,7],[21,20],[21,17],[22,21],[23,22],[23,21],[23,9],[24,23],[25,24],[26,25]] +,{"VIEWS":[ ]} +], + +["U", 0.000798722, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["not_sufficient_funds","A",5,0,6],["retrieve_card","A",6,0,7],["insert_card","A",7,0,8],["identification_succeeds","A",8,0,10],["request_withdrawal","A",9,0,11],["not_sufficient_funds","A",10,0,12],["retrieve_card","A",11,0,13],["ATM_system","R",12,1,0],["Idle","A",13,1,1],["read_card","A",14,1,2],["validate_id","A",15,1,3],["id_successful","A",16,1,4],["check_balance","A",17,1,5],["unsufficient_balance","A",18,1,6],["Idle","A",19,1,7],["read_card","A",20,1,8],["validate_id","A",21,1,9],["id_successful","A",22,1,10],["check_balance","A",23,1,11],["unsufficient_balance","A",24,1,12],["Idle","A",25,1,13],["Data_Base","R",26,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[13,12],[14,12],[15,12],[15,26],[16,12],[17,12],[17,26],[18,12],[19,12],[20,12],[21,12],[21,26],[22,12],[23,12],[23,26],[24,12],[25,12]], +[[3,2],[3,16],[4,3],[5,4],[5,18],[6,5],[7,6],[8,7],[8,22],[9,8],[10,9],[10,24],[11,10],[14,13],[14,2],[15,14],[16,15],[17,16],[17,15],[17,4],[18,17],[19,18],[20,19],[20,7],[21,20],[21,17],[22,21],[23,22],[23,21],[23,9],[24,23],[25,24]] +,{"VIEWS":[ ]} +], + +["U", 0.00319489, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_succeeds","A",3,0,4],["request_withdrawal","A",4,0,5],["not_sufficient_funds","A",5,0,6],["retrieve_card","A",6,0,7],["insert_card","A",7,0,8],["identification_fails","A",8,0,10],["retrieve_card","A",9,0,11],["ATM_system","R",10,1,0],["Idle","A",11,1,1],["read_card","A",12,1,2],["validate_id","A",13,1,3],["id_successful","A",14,1,4],["check_balance","A",15,1,5],["unsufficient_balance","A",16,1,6],["Idle","A",17,1,7],["read_card","A",18,1,8],["validate_id","A",19,1,9],["id_failed","A",20,1,10],["Idle","A",21,1,11],["Data_Base","R",22,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[11,10],[12,10],[13,10],[13,22],[14,10],[15,10],[15,22],[16,10],[17,10],[18,10],[19,10],[19,22],[20,10],[21,10]], +[[3,2],[3,14],[4,3],[5,4],[5,16],[6,5],[7,6],[8,7],[8,20],[9,8],[12,11],[12,2],[13,12],[14,13],[15,14],[15,13],[15,4],[16,15],[17,16],[18,17],[18,7],[19,18],[19,15],[20,19],[21,20]] +,{"VIEWS":[ ]} +], + +["U", 0.00319489, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,4],["retrieve_card","A",4,0,5],["insert_card","A",5,0,6],["identification_succeeds","A",6,0,8],["request_withdrawal","A",7,0,9],["get_money","A",8,0,11],["retrieve_card","A",9,0,12],["ATM_system","R",10,1,0],["Idle","A",11,1,1],["read_card","A",12,1,2],["validate_id","A",13,1,3],["id_failed","A",14,1,4],["Idle","A",15,1,5],["read_card","A",16,1,6],["validate_id","A",17,1,7],["id_successful","A",18,1,8],["check_balance","A",19,1,9],["sufficient_balance","A",20,1,10],["dispense_money","A",21,1,11],["Idle","A",22,1,12],["Data_Base","R",23,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[11,10],[12,10],[13,10],[13,23],[14,10],[15,10],[16,10],[17,10],[17,23],[18,10],[19,10],[19,23],[20,10],[21,10],[22,10]], +[[3,2],[3,14],[4,3],[5,4],[6,5],[6,18],[7,6],[8,7],[8,21],[9,8],[12,11],[12,2],[13,12],[14,13],[15,14],[16,15],[16,5],[17,16],[17,13],[18,17],[19,18],[19,17],[19,7],[20,19],[21,20],[22,21]] +,{"VIEWS":[ ]} +], + +["U", 0.00319489, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,4],["retrieve_card","A",4,0,5],["insert_card","A",5,0,6],["identification_succeeds","A",6,0,8],["request_withdrawal","A",7,0,9],["not_sufficient_funds","A",8,0,10],["retrieve_card","A",9,0,11],["ATM_system","R",10,1,0],["Idle","A",11,1,1],["read_card","A",12,1,2],["validate_id","A",13,1,3],["id_failed","A",14,1,4],["Idle","A",15,1,5],["read_card","A",16,1,6],["validate_id","A",17,1,7],["id_successful","A",18,1,8],["check_balance","A",19,1,9],["unsufficient_balance","A",20,1,10],["Idle","A",21,1,11],["Data_Base","R",22,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[11,10],[12,10],[13,10],[13,22],[14,10],[15,10],[16,10],[17,10],[17,22],[18,10],[19,10],[19,22],[20,10],[21,10]], +[[3,2],[3,14],[4,3],[5,4],[6,5],[6,18],[7,6],[8,7],[8,20],[9,8],[12,11],[12,2],[13,12],[14,13],[15,14],[16,15],[16,5],[17,16],[17,13],[18,17],[19,18],[19,17],[19,7],[20,19],[21,20]] +,{"VIEWS":[ ]} +], + +["U", 0.0127796, +[ ["Customer","R",1,0,0],["insert_card","A",2,0,1],["identification_fails","A",3,0,4],["retrieve_card","A",4,0,5],["insert_card","A",5,0,6],["identification_fails","A",6,0,8],["retrieve_card","A",7,0,9],["ATM_system","R",8,1,0],["Idle","A",9,1,1],["read_card","A",10,1,2],["validate_id","A",11,1,3],["id_failed","A",12,1,4],["Idle","A",13,1,5],["read_card","A",14,1,6],["validate_id","A",15,1,7],["id_failed","A",16,1,8],["Idle","A",17,1,9],["Data_Base","R",18,2,0] ], + +[[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[9,8],[10,8],[11,8],[11,18],[12,8],[13,8],[14,8],[15,8],[15,18],[16,8],[17,8]], +[[3,2],[3,12],[4,3],[5,4],[6,5],[6,16],[7,6],[10,9],[10,2],[11,10],[12,11],[13,12],[14,13],[14,5],[15,14],[15,11],[16,15],[17,16]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U", +{"GRAPH":["ATM state transition diagram", + [ [0, "Idle"] ,[1, "id_successful"] ,[2, "sufficient_balance"] ,[3, "unsufficient_balance"] ,[4, "id_failed"] ], + [ [0,1,"insert_card"],[0,4,"insert_card"],[1,2,"request_withdrawal"],[1,3,"request_withdrawal"],[2,0,"retrieve_card"],[3,0,"retrieve_card"],[4,0,"retrieve_card"]], + [] ]}]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example37_GLOBAL_query.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example37_GLOBAL_query.json new file mode 100644 index 0000000..4148cba --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example37_GLOBAL_query.json @@ -0,0 +1,53 @@ +{"traces":[ + +["M", 0.4, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["U", 0.1, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["Receiver","R",3,1,0],["does_not_receive","A",4,1,1] ], + +[[2,1],[4,3]], +[[4,2]] +,{"VIEWS":[ ]} +], + +["M", 0.32, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["receive","A",5,1,1],["receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.08, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["receive","A",5,1,1],["does_not_receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.08, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["does_not_receive","A",5,1,1],["receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +], + +["U", 0.02, +[ ["Sender","R",1,0,0],["send","A",2,0,1],["send","A",3,0,2],["Receiver","R",4,1,0],["does_not_receive","A",5,1,1],["does_not_receive","A",6,1,2] ], + +[[2,1],[3,1],[5,4],[6,4]], +[[3,2],[5,2],[6,5],[6,3]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U",{"SAY":[]}, +{"REPORT":["Scope 2","Total 6 traces","In 2 of traces at least 75% of sent messages have been received","At the given scope probability for at least 75% messages to pass through is 0.72"]} +]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example38_knapsack.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example38_knapsack.json new file mode 100644 index 0000000..7af69c8 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example38_knapsack.json @@ -0,0 +1,37 @@ +{"traces":[ + +["U", 0.25, +[ ["Best result so far: 0","T",4,0,0],["A","R",1,1,0],["B","R",2,2,0],["C","R",3,3,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Best result so far: 5","T",5,0,0],["A","R",1,1,0],["B","R",2,2,0],["C","R",3,3,0],["Item_C","A",4,3,1] ], + +[[4,3]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Best result so far: 10","T",6,0,0],["A","R",1,1,0],["B","R",2,2,0],["C","R",3,3,0],["Item_C","A",4,3,1],["Item_C","A",5,3,2] ], + +[[4,3],[5,3]], +[[5,4]] +,{"VIEWS":[ ]} +], + +["U", 0.25, +[ ["Best result so far: 11","T",7,0,0],["A","R",1,1,0],["B","R",2,2,0],["Item_B","A",3,2,1],["Item_B","A",4,2,2],["C","R",5,3,0],["Item_C","A",6,3,1] ], + +[[3,2],[4,2],[6,5]], +[[4,3]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U",{"SAY":[]}, +{"REPORT":["Best knapsack","Weight limit 11","Single item's weight: A= 2 B= 3 C= 5","For scope 2 best packing is 11","Pack 0 of A, 2 of B, 1 of C"]} +]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example39_turtles.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example39_turtles.json new file mode 100644 index 0000000..0149492 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example39_turtles.json @@ -0,0 +1,107 @@ +{"traces":[ + +["U", 0.0769231, +[ ["moving parallel","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork upward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Lying","A",5,1,3],["one_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["one_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["two_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork upward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Lying","A",5,1,3],["one_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["two_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["one_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork downward","T",16,0,0],["2 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Telling_the_truth","A",5,1,3],["two_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["one_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["one_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["1 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Telling_the_truth","A",5,1,3],["two_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["one_before","A",8,3,2],["Telling_the_truth","A",10,3,3],["one_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["two_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["1 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["nobody_before","A",3,1,2],["Telling_the_truth","A",5,1,3],["two_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["two_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["one_before","A",13,5,2],["Telling_the_truth","A",15,5,3],["one_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork downward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["one_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["two_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["one_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork downward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["one_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["one_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["two_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["one_before","A",3,1,2],["Lying","A",5,1,3],["one_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["two_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["two_before","A",13,5,2],["Lying","A",15,5,3],["nobody_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["one_before","A",3,1,2],["Lying","A",5,1,3],["one_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["two_before","A",8,3,2],["Lying","A",10,3,3],["nobody_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["two_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form fork upward","T",16,0,0],["3 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["two_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["one_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["one_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["2 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["two_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["nobody_before","A",8,3,2],["Lying","A",10,3,3],["two_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["one_before","A",13,5,2],["Telling_the_truth","A",15,5,3],["one_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +], + +["U", 0.0769231, +[ ["form vertical line","T",16,0,0],["2 are lying","T",17,0,1],["Turtle_1","R",1,1,0],["neighbors","C",2,1,1],["two_before","A",3,1,2],["Lying","A",5,1,3],["nobody_behinds","A",4,2,2],["Turtle_2","R",6,3,0],["neighbors","C",7,3,1],["one_before","A",8,3,2],["Telling_the_truth","A",10,3,3],["one_behinds","A",9,4,2],["Turtle_3","R",11,5,0],["neighbors","C",12,5,1],["nobody_before","A",13,5,2],["Lying","A",15,5,3],["two_behinds","A",14,6,2] ], + +[[2,1],[3,2],[4,2],[5,1],[7,6],[8,7],[9,7],[10,6],[12,11],[13,12],[14,12],[15,11]], +[[5,2],[10,7],[15,12]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example40_web_browsers.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example40_web_browsers.json new file mode 100644 index 0000000..c5c021f --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example40_web_browsers.json @@ -0,0 +1,73 @@ +{"traces":[ + +["U", 0.958265, +[ ["Client","R",1,0,0],["Request","A",2,0,1],["Process_Response","A",3,0,2],["Good_Server","R",4,1,0],["Response","C",5,1,1],["Send_Response","A",6,1,2],["Bad_Server","R",7,2,0] ], + +[[2,1],[3,1],[5,4],[6,5]], +[[3,2],[3,6],[5,2]], +["causes", [2,5],[6,3]], +["is_response_to", [5,2]] +,{"VIEWS":[ ]} +], + +["U", 0.00591521, +[ ["Client","R",1,0,0],["Request","A",2,0,1],["Process_Response","A",3,0,2],["Good_Server","R",4,1,0],["Response","C",5,1,1],["Send_Response","A",6,1,2],["Response","C",7,1,3],["Send_Response","A",8,1,4],["Bad_Server","R",9,2,0],["Request","A",10,2,1],["Process_Response","A",11,2,4] ], + +[[2,1],[3,1],[5,4],[6,5],[7,4],[8,7],[10,9],[11,9]], +[[3,2],[3,6],[5,2],[7,5],[7,10],[11,10],[11,8]], +["causes", [2,5],[6,3],[8,11],[10,7]], +["is_response_to", [5,2],[7,10]] +,{"VIEWS":[ ]} +], + +["U", 0.0177456, +[ ["Client","R",1,0,0],["Request","A",2,0,1],["Process_Response","A",3,0,3],["Good_Server","R",4,1,0],["Response","C",5,1,1],["Request","A",6,1,2],["Send_Response","A",7,1,3],["Process_Response","A",8,1,4],["Bad_Server","R",9,2,0],["Response","C",10,2,2],["Redirect","A",11,2,3],["Send_Response","A",12,2,4] ], + +[[2,1],[3,1],[5,4],[6,5],[7,5],[8,4],[10,9],[11,10],[12,10]], +[[3,2],[3,7],[5,2],[7,6],[8,5],[8,12],[10,6],[12,11]], +["causes", [2,5],[5,6],[6,10],[7,3],[12,8]], +["is_response_to", [5,2],[10,6]] +,{"VIEWS":[ ]} +], + +["M", 0.00591521, +[ ["Response to Client may be affected by Bad Server","T",13,0,0],["Client","R",1,1,0],["Request","A",2,1,1],["Process_Response","A",3,1,5],["Good_Server","R",4,2,0],["Request","A",5,2,1],["Process_Response","A",6,2,3],["Response","C",7,2,4],["Send_Response","A",8,2,5],["Bad_Server","R",9,3,0],["Response","C",10,3,1],["Redirect","A",11,3,2],["Send_Response","A",12,3,3] ], + +[[2,1],[3,1],[5,4],[6,4],[7,4],[8,7],[10,9],[11,10],[12,10]], +[[3,2],[3,8],[6,5],[6,12],[7,6],[7,2],[10,5],[12,11]], +["causes", [2,7],[5,10],[8,3],[12,6]], +["is_response_to", [7,2],[10,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00591521, +[ ["Client","R",1,0,0],["Request","A",2,0,1],["Process_Response","A",3,0,3],["Good_Server","R",4,1,0],["Request","A",5,1,1],["Response","C",6,1,2],["Send_Response","A",7,1,3],["Process_Response","A",8,1,4],["Bad_Server","R",9,2,0],["Response","C",10,2,1],["Redirect","A",11,2,2],["Send_Response","A",12,2,3] ], + +[[2,1],[3,1],[5,4],[6,4],[7,6],[8,4],[10,9],[11,10],[12,10]], +[[3,2],[3,7],[6,5],[6,2],[8,6],[8,12],[10,5],[12,11]], +["causes", [2,6],[5,10],[7,3],[12,8]], +["is_response_to", [6,2],[10,5]] +,{"VIEWS":[ ]} +], + +["U", 0.00591521, +[ ["Client","R",1,0,0],["Request","A",2,0,1],["Process_Response","A",3,0,2],["Good_Server","R",4,1,0],["Response","C",5,1,1],["Send_Response","A",6,1,2],["Request","A",7,1,3],["Process_Response","A",8,1,5],["Bad_Server","R",9,2,0],["Response","C",10,2,3],["Redirect","A",11,2,4],["Send_Response","A",12,2,5] ], + +[[2,1],[3,1],[5,4],[6,5],[7,4],[8,4],[10,9],[11,10],[12,10]], +[[3,2],[3,6],[5,2],[7,5],[8,7],[8,12],[10,7],[12,11]], +["causes", [2,5],[6,3],[7,10],[12,8]], +["is_response_to", [5,2],[10,7]] +,{"VIEWS":[ ]} +], + +["U", 0.000328623, +[ ["Client","R",1,0,0],["Request","A",2,0,1],["Process_Response","A",3,0,3],["Good_Server","R",4,1,0],["Response","C",5,1,1],["Request","A",6,1,2],["Send_Response","A",8,1,3],["Process_Response","A",9,1,6],["Process_Response","A",10,1,9],["Request","A",7,2,2],["Bad_Server","R",11,3,0],["Response","C",12,3,3],["Redirect","A",13,3,4],["Send_Response","A",14,3,5],["Response","C",15,3,6],["Redirect","A",16,3,7],["Send_Response","A",17,3,8] ], + +[[2,1],[3,1],[5,4],[6,5],[7,5],[8,5],[9,4],[10,4],[12,11],[13,12],[14,12],[15,11],[16,15],[17,15]], +[[3,2],[3,8],[5,2],[8,6],[8,7],[9,5],[9,14],[10,9],[10,17],[12,6],[14,13],[15,12],[15,7],[17,16]], +["causes", [2,5],[5,6],[5,7],[6,12],[7,15],[8,3],[14,9],[17,10]], +["is_response_to", [5,2],[12,6],[15,7]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example41_Replay_Attack.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example41_Replay_Attack.json new file mode 100644 index 0000000..e5cf279 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example41_Replay_Attack.json @@ -0,0 +1,51 @@ +{"traces":[ + +["U", 0.166667, +[ ["Alice","R",1,0,0],["sends_password_to_Bob","A",2,0,2],["Network","R",3,1,0],["message_in_transit","A",4,1,2],["Eve","R",5,2,0],["eavesesdrops_message","A",6,2,2],["presents_Alice_password","A",7,2,4],["talks","A",8,2,5],["Bob","R",9,3,0],["requests_password_from_Alice","A",10,3,1],["receives_password_from_Alice","A",11,3,3],["asks_for_password","A",12,3,4] ], + +[[2,1],[4,3],[6,5],[7,5],[8,5],[8,9],[10,9],[11,9],[12,9]], +[[2,10],[4,2],[6,4],[7,6],[7,12],[8,7],[8,12],[11,10],[11,4],[12,11]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Alice","R",1,0,0],["sends_password_to_Bob","A",2,0,2],["Network","R",3,1,0],["message_in_transit","A",4,1,2],["Eve","R",5,2,0],["eavesesdrops_message","A",6,2,2],["presents_Alice_password","A",7,2,4],["talks","A",8,2,5],["presents_Alice_password","A",9,2,6],["talks","A",10,2,7],["Bob","R",11,3,0],["requests_password_from_Alice","A",12,3,1],["receives_password_from_Alice","A",13,3,3],["asks_for_password","A",14,3,4],["asks_for_password","A",16,3,5] ], + +[[2,1],[4,3],[6,5],[7,5],[8,5],[8,11],[9,5],[10,5],[10,11],[12,11],[13,11],[14,11],[16,11]], +[[2,12],[4,2],[6,4],[7,6],[7,14],[8,7],[8,14],[9,8],[9,16],[10,9],[10,16],[13,12],[13,4],[14,13],[16,8]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Alice","R",1,0,0],["sends_password_to_Bob","A",2,0,2],["presents_Alice_password","A",3,0,5],["talks","A",4,0,6],["Network","R",5,1,0],["message_in_transit","A",6,1,2],["Eve","R",7,2,0],["eavesesdrops_message","A",8,2,2],["presents_Alice_password","A",9,2,7],["talks","A",10,2,8],["Bob","R",11,3,0],["requests_password_from_Alice","A",12,3,1],["receives_password_from_Alice","A",13,3,3],["asks_for_password","A",14,3,4],["asks_for_password","A",16,3,7] ], + +[[2,1],[3,1],[4,1],[4,11],[6,5],[8,7],[9,7],[10,7],[10,11],[12,11],[13,11],[14,11],[16,11]], +[[2,12],[3,2],[3,14],[4,3],[4,14],[6,2],[8,6],[9,8],[9,16],[10,9],[10,16],[13,12],[13,6],[14,13],[16,4]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Alice","R",1,0,0],["sends_password_to_Bob","A",2,0,2],["presents_Alice_password","A",3,0,5],["talks","A",4,0,6],["Network","R",5,1,0],["message_in_transit","A",6,1,2],["Eve","R",7,2,0],["eavesesdrops_message","A",8,2,2],["presents_Alice_password","A",9,2,7],["talks","A",10,2,8],["presents_Alice_password","A",11,2,9],["talks","A",12,2,10],["Bob","R",13,3,0],["requests_password_from_Alice","A",14,3,1],["receives_password_from_Alice","A",15,3,3],["asks_for_password","A",16,3,4],["asks_for_password","A",18,3,7],["asks_for_password","A",20,3,8] ], + +[[2,1],[3,1],[4,1],[4,13],[6,5],[8,7],[9,7],[10,7],[10,13],[11,7],[12,7],[12,13],[14,13],[15,13],[16,13],[18,13],[20,13]], +[[2,14],[3,2],[3,16],[4,3],[4,16],[6,2],[8,6],[9,8],[9,18],[10,9],[10,18],[11,10],[11,20],[12,11],[12,20],[15,14],[15,6],[16,15],[18,4],[20,10]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Alice","R",1,0,0],["sends_password_to_Bob","A",2,0,2],["presents_Alice_password","A",3,0,5],["talks","A",4,0,6],["presents_Alice_password","A",5,0,8],["talks","A",6,0,9],["Network","R",7,1,0],["message_in_transit","A",8,1,2],["Eve","R",9,2,0],["eavesesdrops_message","A",10,2,2],["presents_Alice_password","A",11,2,10],["talks","A",12,2,11],["Bob","R",13,3,0],["requests_password_from_Alice","A",14,3,1],["receives_password_from_Alice","A",15,3,3],["asks_for_password","A",16,3,4],["asks_for_password","A",18,3,7],["asks_for_password","A",20,3,10] ], + +[[2,1],[3,1],[4,1],[4,13],[5,1],[6,1],[6,13],[8,7],[10,9],[11,9],[12,9],[12,13],[14,13],[15,13],[16,13],[18,13],[20,13]], +[[2,14],[3,2],[3,16],[4,3],[4,16],[5,4],[5,18],[6,5],[6,18],[8,2],[10,8],[11,10],[11,20],[12,11],[12,20],[15,14],[15,8],[16,15],[18,4],[20,6]] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["Alice","R",1,0,0],["sends_password_to_Bob","A",2,0,2],["presents_Alice_password","A",3,0,5],["talks","A",4,0,6],["presents_Alice_password","A",5,0,8],["talks","A",6,0,9],["Network","R",7,1,0],["message_in_transit","A",8,1,2],["Eve","R",9,2,0],["eavesesdrops_message","A",10,2,2],["presents_Alice_password","A",11,2,10],["talks","A",12,2,11],["presents_Alice_password","A",13,2,12],["talks","A",14,2,13],["Bob","R",15,3,0],["requests_password_from_Alice","A",16,3,1],["receives_password_from_Alice","A",17,3,3],["asks_for_password","A",18,3,4],["asks_for_password","A",20,3,7],["asks_for_password","A",22,3,10],["asks_for_password","A",24,3,11] ], + +[[2,1],[3,1],[4,1],[4,15],[5,1],[6,1],[6,15],[8,7],[10,9],[11,9],[12,9],[12,15],[13,9],[14,9],[14,15],[16,15],[17,15],[18,15],[20,15],[22,15],[24,15]], +[[2,16],[3,2],[3,18],[4,3],[4,18],[5,4],[5,20],[6,5],[6,20],[8,2],[10,8],[11,10],[11,22],[12,11],[12,22],[13,12],[13,24],[14,13],[14,24],[17,16],[17,8],[18,17],[20,4],[22,6],[24,12]] +,{"VIEWS":[ ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example42_Bar_Chart.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example42_Bar_Chart.json new file mode 100644 index 0000000..63cc0f5 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example42_Bar_Chart.json @@ -0,0 +1,19 @@ +{"traces":[ + +["U", 1, +[ ["A","R",1,0,0],["a","A",2,0,1],["b","A",3,0,2],["c","A",4,0,3],["a","A",5,0,4] ], + +[[2,1],[3,1],[4,1],[5,1]], +[[3,2],[4,3],[5,4]] +,{"VIEWS":[ +{"TABLE": { "title": "Trace 1", +"tabs": [ "event_name","total_number"], + "rows": [ [ "A",1],[ "a",2],[ "b",1],[ "c",1]] } } +, +{"BAR_CHART": { "title": "Trace 1 chart", +"tabs": [ "event_name","total_number"], "X_AXIS": "event_name","ROTATE": 0, + "rows": [ [ "A",1],[ "a",2],[ "b",1],[ "c",1]] } } + ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example43_Histogram.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example43_Histogram.json new file mode 100644 index 0000000..8be71aa --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example43_Histogram.json @@ -0,0 +1,47 @@ +{"traces":[ + +["U", 0.2, +[ ["A","R",1,0,0],["a1","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.3, +[ ["A","R",1,0,0],["a2","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["A","R",1,0,0] ], + +[], +[] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["A","R",1,0,0],["a3","A",2,0,1] ], + +[[2,1]], +[] +,{"VIEWS":[ ]} +], + +["U", 0.166667, +[ ["A","R",1,0,0],["a3","A",2,0,1],["a3","A",3,0,2] ], + +[[2,1],[3,1]], +[[3,2]] +,{"VIEWS":[ ]} +] +] +,"GLOBAL":["U", +{"BAR_CHART": { "title": "Trace probabilities", +"tabs": [ "probability_interval","trace_count"], "X_AXIS": "probability_interval","ROTATE": 0, + "rows": [ [ "[0..0.1)",0],[ "[0.1..0.2)",3],[ "[0.2..0.3)",1],[ "[0.3..0.4)",1],[ "[0.4..0.5)",0],[ "[0.5..0.6)",0],[ "[0.6..0.7)",0],[ "[0.7..0.8)",0],[ "[0.8..0.9)",0],[ "[0.9..1)",0]] } } +]} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example44_Gantt_Chart.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example44_Gantt_Chart.json new file mode 100644 index 0000000..f5bf362 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example44_Gantt_Chart.json @@ -0,0 +1,15 @@ +{"traces":[ + +["U", 1, +[ ["A","R",1,0,0],["a1","A",2,0,1],["a2","A",3,0,2],["B","R",4,1,0],["b1","A",5,1,1],["b2","A",7,1,2] ], + +[[2,1],[3,1],[3,4],[5,4],[7,4]], +[[3,2],[3,5],[7,3]] +,{"VIEWS":[ +{"BAR_CHART": { "title": "Example of Gantt Chart", +"tabs": [ "event_name","start_time","duration_time"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "A",0,8],[ "a1",0,3],[ "a2",3,5],[ "B",0,10],[ "b1",0,1],[ "b2",8,2]] } } + ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example45_Martian_Lander.json b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example45_Martian_Lander.json new file mode 100644 index 0000000..0e2beb4 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_output_2/Example45_Martian_Lander.json @@ -0,0 +1,275 @@ +{"traces":[ + +["U", 0.125, +[ ["Running Timer1","T",22,0,0],["Landing complete at 30","T",23,0,1],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,6],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["IOINT","A",15,3,4],["Lands","A",16,3,5],["stop_Timer2","A",18,3,6],["STMR2","A",12,4,1],["ETC","A",14,4,3],["Timer2","R",19,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,19],[13,8],[14,8],[15,8],[16,8],[18,8],[18,19]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,16],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[16,15],[18,16],[18,12]], +["alert", [22,1],[23,16]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",50,0,50],[ "ADJM",10,20,30],[ "Lands",30,0,30]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",50,0],[ "ADJM",10,20],[ "Lands",30,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",25,0,0],["Emergency landing started at 101","T",26,0,1],["Landing complete at 111","T",27,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,8],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["TMRINT","A",15,3,4],["IEM","A",16,3,5],["Emergency_Landing","C",17,3,6],["Lands","A",18,3,7],["stop_Timer2","A",20,3,8],["STMR2","A",12,4,1],["ETC","A",14,4,3],["Timer2","R",21,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,21],[13,8],[14,8],[15,8],[15,21],[16,8],[17,8],[18,8],[20,8],[20,21]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,18],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[15,12],[16,15],[17,16],[18,17],[20,18],[20,15]], +["alert", [25,1],[26,15],[27,18]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",111,0,111],[ "ADJM",10,20,30],[ "Emergency_Landing",111,0,111],[ "Lands",111,0,111]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",111,0],[ "ADJM",10,20],[ "Emergency_Landing",111,0],[ "Lands",111,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",26,0,0],["Emergency landing started at 101","T",27,0,1],["Landing complete at 121","T",28,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,9],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["TMRINT","A",15,3,4],["IEM","A",16,3,5],["Emergency_Landing","C",17,3,6],["fire_RRM","A",18,3,7],["Lands","A",19,3,8],["stop_Timer2","A",21,3,9],["STMR2","A",12,4,1],["ETC","A",14,4,3],["Timer2","R",22,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,22],[13,8],[14,8],[15,8],[15,22],[16,8],[17,8],[18,17],[19,8],[21,8],[21,22]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,19],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[15,12],[16,15],[17,16],[19,17],[21,19],[21,15]], +["alert", [26,1],[27,15],[28,19]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",121,0,121],[ "ADJM",10,20,30],[ "Emergency_Landing",111,10,121],[ "fire_RRM",111,10,121],[ "Lands",121,0,121]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",121,0],[ "ADJM",10,20],[ "Emergency_Landing",111,10],[ "fire_RRM",111,10],[ "Lands",121,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",27,0,0],["Emergency landing started at 101","T",28,0,1],["Landing complete at 131","T",29,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,10],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["TMRINT","A",15,3,4],["IEM","A",16,3,5],["Emergency_Landing","C",17,3,6],["fire_RRM","A",18,3,7],["fire_RRM","A",19,3,8],["Lands","A",20,3,9],["stop_Timer2","A",22,3,10],["STMR2","A",12,4,1],["ETC","A",14,4,3],["Timer2","R",23,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,23],[13,8],[14,8],[15,8],[15,23],[16,8],[17,8],[18,17],[19,17],[20,8],[22,8],[22,23]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,20],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[15,12],[16,15],[17,16],[19,18],[20,17],[22,20],[22,15]], +["alert", [27,1],[28,15],[29,20]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",131,0,131],[ "ADJM",10,20,30],[ "Emergency_Landing",111,20,131],[ "fire_RRM",111,10,121],[ "fire_RRM",121,10,131],[ "Lands",131,0,131]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",131,0],[ "ADJM",10,20],[ "Emergency_Landing",111,20],[ "fire_RRM",111,10],[ "fire_RRM",121,10],[ "Lands",131,0]] } } + ]} +], + +["U", 0.125, +[ ["Running Timer1","T",24,0,0],["Landing complete at 50","T",25,0,1],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,7],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["ADJM","A",15,3,4],["IOINT","A",17,3,5],["Lands","A",18,3,6],["stop_Timer2","A",20,3,7],["STMR2","A",12,4,1],["ETC","A",14,4,3],["ETC","A",16,4,4],["Timer2","R",21,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,21],[13,8],[14,8],[15,8],[16,8],[17,8],[18,8],[20,8],[20,21]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,18],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[16,13],[16,14],[17,15],[17,16],[18,17],[20,18],[20,12]], +["alert", [24,1],[25,18]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",50,0,50],[ "ADJM",10,20,30],[ "ADJM",30,20,50],[ "Lands",50,0,50]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",50,0],[ "ADJM",10,20],[ "ADJM",30,20],[ "Lands",50,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",27,0,0],["Emergency landing started at 101","T",28,0,1],["Landing complete at 111","T",29,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,9],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["ADJM","A",15,3,4],["TMRINT","A",17,3,5],["IEM","A",18,3,6],["Emergency_Landing","C",19,3,7],["Lands","A",20,3,8],["stop_Timer2","A",22,3,9],["STMR2","A",12,4,1],["ETC","A",14,4,3],["ETC","A",16,4,4],["Timer2","R",23,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,23],[13,8],[14,8],[15,8],[16,8],[17,8],[17,23],[18,8],[19,8],[20,8],[22,8],[22,23]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,20],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[16,13],[16,14],[17,15],[17,16],[17,12],[18,17],[19,18],[20,19],[22,20],[22,17]], +["alert", [27,1],[28,17],[29,20]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",111,0,111],[ "ADJM",10,20,30],[ "ADJM",30,20,50],[ "Emergency_Landing",111,0,111],[ "Lands",111,0,111]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",111,0],[ "ADJM",10,20],[ "ADJM",30,20],[ "Emergency_Landing",111,0],[ "Lands",111,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",28,0,0],["Emergency landing started at 101","T",29,0,1],["Landing complete at 121","T",30,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,10],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["ADJM","A",15,3,4],["TMRINT","A",17,3,5],["IEM","A",18,3,6],["Emergency_Landing","C",19,3,7],["fire_RRM","A",20,3,8],["Lands","A",21,3,9],["stop_Timer2","A",23,3,10],["STMR2","A",12,4,1],["ETC","A",14,4,3],["ETC","A",16,4,4],["Timer2","R",24,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,24],[13,8],[14,8],[15,8],[16,8],[17,8],[17,24],[18,8],[19,8],[20,19],[21,8],[23,8],[23,24]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,21],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[16,13],[16,14],[17,15],[17,16],[17,12],[18,17],[19,18],[21,19],[23,21],[23,17]], +["alert", [28,1],[29,17],[30,21]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",121,0,121],[ "ADJM",10,20,30],[ "ADJM",30,20,50],[ "Emergency_Landing",111,10,121],[ "fire_RRM",111,10,121],[ "Lands",121,0,121]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",121,0],[ "ADJM",10,20],[ "ADJM",30,20],[ "Emergency_Landing",111,10],[ "fire_RRM",111,10],[ "Lands",121,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",29,0,0],["Emergency landing started at 101","T",30,0,1],["Landing complete at 131","T",31,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["stop_Timer1","A",7,1,11],["IALT","A",4,2,2],["Landing","R",8,3,0],["START","A",9,3,1],["RACC","A",10,3,2],["ADJM","A",13,3,3],["ADJM","A",15,3,4],["TMRINT","A",17,3,5],["IEM","A",18,3,6],["Emergency_Landing","C",19,3,7],["fire_RRM","A",20,3,8],["fire_RRM","A",21,3,9],["Lands","A",22,3,10],["stop_Timer2","A",24,3,11],["STMR2","A",12,4,1],["ETC","A",14,4,3],["ETC","A",16,4,4],["Timer2","R",25,5,0] ], + +[[2,1],[2,8],[3,1],[4,1],[5,1],[6,1],[7,1],[7,8],[9,8],[10,8],[12,8],[12,25],[13,8],[14,8],[15,8],[16,8],[17,8],[17,25],[18,8],[19,8],[20,19],[21,19],[22,8],[24,8],[24,25]], +[[2,9],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[7,22],[10,9],[12,9],[13,10],[13,12],[13,2],[14,10],[14,12],[14,2],[15,13],[15,14],[16,13],[16,14],[17,15],[17,16],[17,12],[18,17],[19,18],[21,20],[22,19],[24,22],[24,17]], +["alert", [29,1],[30,17],[31,22]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "stop_Timer1",131,0,131],[ "ADJM",10,20,30],[ "ADJM",30,20,50],[ "Emergency_Landing",111,20,131],[ "fire_RRM",111,10,121],[ "fire_RRM",121,10,131],[ "Lands",131,0,131]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "stop_Timer1",131,0],[ "ADJM",10,20],[ "ADJM",30,20],[ "Emergency_Landing",111,20],[ "fire_RRM",111,10],[ "fire_RRM",121,10],[ "Lands",131,0]] } } + ]} +], + +["U", 0.125, +[ ["Running Timer1","T",26,0,0],["Landing complete at 30","T",27,0,1],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["IVEL","A",7,1,6],["CKDT","A",9,1,7],["TDP","A",10,1,8],["stop_Timer1","A",11,1,9],["IALT","A",4,2,2],["IALT","A",8,2,5],["Landing","R",12,3,0],["START","A",13,3,1],["RACC","A",14,3,2],["ADJM","A",17,3,3],["IOINT","A",19,3,4],["Lands","A",20,3,5],["stop_Timer2","A",22,3,6],["STMR2","A",16,4,1],["ETC","A",18,4,3],["Timer2","R",23,5,0] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[11,12],[13,12],[14,12],[16,12],[16,23],[17,12],[18,12],[19,12],[20,12],[22,12],[22,23]], +[[2,13],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[8,6],[9,7],[9,8],[10,9],[11,10],[11,20],[14,13],[16,13],[17,14],[17,16],[17,2],[18,14],[18,16],[18,2],[19,17],[19,18],[20,19],[22,20],[22,16]], +["alert", [26,1],[27,20]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "IVEL",50,20,70],[ "IALT",50,20,70],[ "TDP",80,10,90],[ "stop_Timer1",90,0,90],[ "ADJM",10,20,30],[ "Lands",30,0,30]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "IVEL",50,20],[ "IALT",50,20],[ "TDP",80,10],[ "stop_Timer1",90,0],[ "ADJM",10,20],[ "Lands",30,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",29,0,0],["Emergency landing started at 101","T",30,0,1],["Landing complete at 111","T",31,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["IVEL","A",7,1,6],["CKDT","A",9,1,7],["TDP","A",10,1,8],["stop_Timer1","A",11,1,9],["IALT","A",4,2,2],["IALT","A",8,2,5],["Landing","R",12,3,0],["START","A",13,3,1],["RACC","A",14,3,2],["ADJM","A",17,3,3],["TMRINT","A",19,3,4],["IEM","A",20,3,5],["Emergency_Landing","C",21,3,6],["Lands","A",22,3,7],["stop_Timer2","A",24,3,8],["STMR2","A",16,4,1],["ETC","A",18,4,3],["Timer2","R",25,5,0] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[11,12],[13,12],[14,12],[16,12],[16,25],[17,12],[18,12],[19,12],[19,25],[20,12],[21,12],[22,12],[24,12],[24,25]], +[[2,13],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[8,6],[9,7],[9,8],[10,9],[11,10],[11,22],[14,13],[16,13],[17,14],[17,16],[17,2],[18,14],[18,16],[18,2],[19,17],[19,18],[19,16],[20,19],[21,20],[22,21],[24,22],[24,19]], +["alert", [29,1],[30,19],[31,22]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "IVEL",50,20,70],[ "IALT",50,20,70],[ "TDP",80,10,90],[ "stop_Timer1",111,0,111],[ "ADJM",10,20,30],[ "Emergency_Landing",111,0,111],[ "Lands",111,0,111]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "IVEL",50,20],[ "IALT",50,20],[ "TDP",80,10],[ "stop_Timer1",111,0],[ "ADJM",10,20],[ "Emergency_Landing",111,0],[ "Lands",111,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",30,0,0],["Emergency landing started at 101","T",31,0,1],["Landing complete at 121","T",32,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["IVEL","A",7,1,6],["CKDT","A",9,1,7],["TDP","A",10,1,8],["stop_Timer1","A",11,1,9],["IALT","A",4,2,2],["IALT","A",8,2,5],["Landing","R",12,3,0],["START","A",13,3,1],["RACC","A",14,3,2],["ADJM","A",17,3,3],["TMRINT","A",19,3,4],["IEM","A",20,3,5],["Emergency_Landing","C",21,3,6],["fire_RRM","A",22,3,7],["Lands","A",23,3,8],["stop_Timer2","A",25,3,9],["STMR2","A",16,4,1],["ETC","A",18,4,3],["Timer2","R",26,5,0] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[11,12],[13,12],[14,12],[16,12],[16,26],[17,12],[18,12],[19,12],[19,26],[20,12],[21,12],[22,21],[23,12],[25,12],[25,26]], +[[2,13],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[8,6],[9,7],[9,8],[10,9],[11,10],[11,23],[14,13],[16,13],[17,14],[17,16],[17,2],[18,14],[18,16],[18,2],[19,17],[19,18],[19,16],[20,19],[21,20],[23,21],[25,23],[25,19]], +["alert", [30,1],[31,19],[32,23]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "IVEL",50,20,70],[ "IALT",50,20,70],[ "TDP",80,10,90],[ "stop_Timer1",121,0,121],[ "ADJM",10,20,30],[ "Emergency_Landing",111,10,121],[ "fire_RRM",111,10,121],[ "Lands",121,0,121]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "IVEL",50,20],[ "IALT",50,20],[ "TDP",80,10],[ "stop_Timer1",121,0],[ "ADJM",10,20],[ "Emergency_Landing",111,10],[ "fire_RRM",111,10],[ "Lands",121,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",31,0,0],["Emergency landing started at 101","T",32,0,1],["Landing complete at 131","T",33,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["IVEL","A",7,1,6],["CKDT","A",9,1,7],["TDP","A",10,1,8],["stop_Timer1","A",11,1,10],["IALT","A",4,2,2],["IALT","A",8,2,5],["Landing","R",12,3,0],["START","A",13,3,1],["RACC","A",14,3,2],["ADJM","A",17,3,3],["TMRINT","A",19,3,4],["IEM","A",20,3,5],["Emergency_Landing","C",21,3,6],["fire_RRM","A",22,3,7],["fire_RRM","A",23,3,8],["Lands","A",24,3,9],["stop_Timer2","A",26,3,10],["STMR2","A",16,4,1],["ETC","A",18,4,3],["Timer2","R",27,5,0] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[11,12],[13,12],[14,12],[16,12],[16,27],[17,12],[18,12],[19,12],[19,27],[20,12],[21,12],[22,21],[23,21],[24,12],[26,12],[26,27]], +[[2,13],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[8,6],[9,7],[9,8],[10,9],[11,10],[11,24],[14,13],[16,13],[17,14],[17,16],[17,2],[18,14],[18,16],[18,2],[19,17],[19,18],[19,16],[20,19],[21,20],[23,22],[24,21],[26,24],[26,19]], +["alert", [31,1],[32,19],[33,24]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "IVEL",50,20,70],[ "IALT",50,20,70],[ "TDP",80,10,90],[ "stop_Timer1",131,0,131],[ "ADJM",10,20,30],[ "Emergency_Landing",111,20,131],[ "fire_RRM",111,10,121],[ "fire_RRM",121,10,131],[ "Lands",131,0,131]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "IVEL",50,20],[ "IALT",50,20],[ "TDP",80,10],[ "stop_Timer1",131,0],[ "ADJM",10,20],[ "Emergency_Landing",111,20],[ "fire_RRM",111,10],[ "fire_RRM",121,10],[ "Lands",131,0]] } } + ]} +], + +["U", 0.125, +[ ["Running Timer1","T",28,0,0],["Landing complete at 50","T",29,0,1],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["IVEL","A",7,1,6],["CKDT","A",9,1,7],["TDP","A",10,1,8],["stop_Timer1","A",11,1,9],["IALT","A",4,2,2],["IALT","A",8,2,5],["Landing","R",12,3,0],["START","A",13,3,1],["RACC","A",14,3,2],["ADJM","A",17,3,3],["ADJM","A",19,3,4],["IOINT","A",21,3,5],["Lands","A",22,3,6],["stop_Timer2","A",24,3,7],["STMR2","A",16,4,1],["ETC","A",18,4,3],["ETC","A",20,4,4],["Timer2","R",25,5,0] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[11,12],[13,12],[14,12],[16,12],[16,25],[17,12],[18,12],[19,12],[20,12],[21,12],[22,12],[24,12],[24,25]], +[[2,13],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[8,6],[9,7],[9,8],[10,9],[11,10],[11,22],[14,13],[16,13],[17,14],[17,16],[17,2],[18,14],[18,16],[18,2],[19,17],[19,18],[20,17],[20,18],[21,19],[21,20],[22,21],[24,22],[24,16]], +["alert", [28,1],[29,22]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "IVEL",50,20,70],[ "IALT",50,20,70],[ "TDP",80,10,90],[ "stop_Timer1",90,0,90],[ "ADJM",10,20,30],[ "ADJM",30,20,50],[ "Lands",50,0,50]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "IVEL",50,20],[ "IALT",50,20],[ "TDP",80,10],[ "stop_Timer1",90,0],[ "ADJM",10,20],[ "ADJM",30,20],[ "Lands",50,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",31,0,0],["Emergency landing started at 101","T",32,0,1],["Landing complete at 111","T",33,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["IVEL","A",7,1,6],["CKDT","A",9,1,7],["TDP","A",10,1,8],["stop_Timer1","A",11,1,9],["IALT","A",4,2,2],["IALT","A",8,2,5],["Landing","R",12,3,0],["START","A",13,3,1],["RACC","A",14,3,2],["ADJM","A",17,3,3],["ADJM","A",19,3,4],["TMRINT","A",21,3,5],["IEM","A",22,3,6],["Emergency_Landing","C",23,3,7],["Lands","A",24,3,8],["stop_Timer2","A",26,3,9],["STMR2","A",16,4,1],["ETC","A",18,4,3],["ETC","A",20,4,4],["Timer2","R",27,5,0] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[11,12],[13,12],[14,12],[16,12],[16,27],[17,12],[18,12],[19,12],[20,12],[21,12],[21,27],[22,12],[23,12],[24,12],[26,12],[26,27]], +[[2,13],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[8,6],[9,7],[9,8],[10,9],[11,10],[11,24],[14,13],[16,13],[17,14],[17,16],[17,2],[18,14],[18,16],[18,2],[19,17],[19,18],[20,17],[20,18],[21,19],[21,20],[21,16],[22,21],[23,22],[24,23],[26,24],[26,21]], +["alert", [31,1],[32,21],[33,24]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "IVEL",50,20,70],[ "IALT",50,20,70],[ "TDP",80,10,90],[ "stop_Timer1",111,0,111],[ "ADJM",10,20,30],[ "ADJM",30,20,50],[ "Emergency_Landing",111,0,111],[ "Lands",111,0,111]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "IVEL",50,20],[ "IALT",50,20],[ "TDP",80,10],[ "stop_Timer1",111,0],[ "ADJM",10,20],[ "ADJM",30,20],[ "Emergency_Landing",111,0],[ "Lands",111,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",32,0,0],["Emergency landing started at 101","T",33,0,1],["Landing complete at 121","T",34,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["IVEL","A",7,1,6],["CKDT","A",9,1,7],["TDP","A",10,1,8],["stop_Timer1","A",11,1,10],["IALT","A",4,2,2],["IALT","A",8,2,5],["Landing","R",12,3,0],["START","A",13,3,1],["RACC","A",14,3,2],["ADJM","A",17,3,3],["ADJM","A",19,3,4],["TMRINT","A",21,3,5],["IEM","A",22,3,6],["Emergency_Landing","C",23,3,7],["fire_RRM","A",24,3,8],["Lands","A",25,3,9],["stop_Timer2","A",27,3,10],["STMR2","A",16,4,1],["ETC","A",18,4,3],["ETC","A",20,4,4],["Timer2","R",28,5,0] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[11,12],[13,12],[14,12],[16,12],[16,28],[17,12],[18,12],[19,12],[20,12],[21,12],[21,28],[22,12],[23,12],[24,23],[25,12],[27,12],[27,28]], +[[2,13],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[8,6],[9,7],[9,8],[10,9],[11,10],[11,25],[14,13],[16,13],[17,14],[17,16],[17,2],[18,14],[18,16],[18,2],[19,17],[19,18],[20,17],[20,18],[21,19],[21,20],[21,16],[22,21],[23,22],[25,23],[27,25],[27,21]], +["alert", [32,1],[33,21],[34,25]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "IVEL",50,20,70],[ "IALT",50,20,70],[ "TDP",80,10,90],[ "stop_Timer1",121,0,121],[ "ADJM",10,20,30],[ "ADJM",30,20,50],[ "Emergency_Landing",111,10,121],[ "fire_RRM",111,10,121],[ "Lands",121,0,121]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "IVEL",50,20],[ "IALT",50,20],[ "TDP",80,10],[ "stop_Timer1",121,0],[ "ADJM",10,20],[ "ADJM",30,20],[ "Emergency_Landing",111,10],[ "fire_RRM",111,10],[ "Lands",121,0]] } } + ]} +], + +["U", 0.0416667, +[ ["Running Timer1","T",33,0,0],["Emergency landing started at 101","T",34,0,1],["Landing complete at 131","T",35,0,2],["Measure_and_display","R",1,1,0],["STMR1","A",2,1,2],["IVEL","A",3,1,3],["CKDT","A",5,1,4],["TDP","A",6,1,5],["IVEL","A",7,1,6],["CKDT","A",9,1,7],["TDP","A",10,1,8],["stop_Timer1","A",11,1,11],["IALT","A",4,2,2],["IALT","A",8,2,5],["Landing","R",12,3,0],["START","A",13,3,1],["RACC","A",14,3,2],["ADJM","A",17,3,3],["ADJM","A",19,3,4],["TMRINT","A",21,3,5],["IEM","A",22,3,6],["Emergency_Landing","C",23,3,7],["fire_RRM","A",24,3,8],["fire_RRM","A",25,3,9],["Lands","A",26,3,10],["stop_Timer2","A",28,3,11],["STMR2","A",16,4,1],["ETC","A",18,4,3],["ETC","A",20,4,4],["Timer2","R",29,5,0] ], + +[[2,1],[2,12],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[11,1],[11,12],[13,12],[14,12],[16,12],[16,29],[17,12],[18,12],[19,12],[20,12],[21,12],[21,29],[22,12],[23,12],[24,23],[25,23],[26,12],[28,12],[28,29]], +[[2,13],[3,2],[4,2],[5,3],[5,4],[6,5],[7,6],[8,6],[9,7],[9,8],[10,9],[11,10],[11,26],[14,13],[16,13],[17,14],[17,16],[17,2],[18,14],[18,16],[18,2],[19,17],[19,18],[20,17],[20,18],[21,19],[21,20],[21,16],[22,21],[23,22],[25,24],[26,23],[28,26],[28,21]], +["alert", [33,1],[34,21],[35,26]] +,{"VIEWS":[ +{"TABLE": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration","end_time"], + "rows": [ [ "IVEL",10,20,30],[ "IALT",10,20,30],[ "TDP",40,10,50],[ "IVEL",50,20,70],[ "IALT",50,20,70],[ "TDP",80,10,90],[ "stop_Timer1",131,0,131],[ "ADJM",10,20,30],[ "ADJM",30,20,50],[ "Emergency_Landing",111,20,131],[ "fire_RRM",111,10,121],[ "fire_RRM",121,10,131],[ "Lands",131,0,131]] } } +, +{"BAR_CHART": { "title": "Event timings", +"tabs": [ "event_name","start_time","event_duration"], "X_AXIS": "event_name","ROTATE": 1, + "rows": [ [ "IVEL",10,20],[ "IALT",10,20],[ "TDP",40,10],[ "IVEL",50,20],[ "IALT",50,20],[ "TDP",80,10],[ "stop_Timer1",131,0],[ "ADJM",10,20],[ "ADJM",30,20],[ "Emergency_Landing",111,20],[ "fire_RRM",111,10],[ "fire_RRM",121,10],[ "Lands",131,0]] } } + ]} +] +] +} diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/test_mp_given_rc_changes.sh b/RIGAL/rigsc.446/TEST_MP_PRELOADS/test_mp_given_rc_changes.sh new file mode 100755 index 0000000..8c21397 --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/test_mp_given_rc_changes.sh @@ -0,0 +1,13 @@ +#/bin/bash +set -e # stop if any command fails +rm -f ./welcome.output_1 ./welcome.output_2 +./welcome.sh test ../bin ../../../Code/ ../../../Firebird_Pre_loaded_examples/ 1 >> welcome.output_1 2>&1 +./welcome.sh test ../bin ../../../Code/ ../../../Firebird_Pre_loaded_examples/ 2 >> welcome.output_2 2>&1 +tail -2 welcome.output_1 +tail -2 welcome.output_2 + +# we don't try scope three as some files take a very long time to finish. +# if you just want to check without computing +# diff -rq dir1 dir2 + + diff --git a/RIGAL/rigsc.446/TEST_MP_PRELOADS/welcome.sh b/RIGAL/rigsc.446/TEST_MP_PRELOADS/welcome.sh new file mode 100755 index 0000000..6c1b87d --- /dev/null +++ b/RIGAL/rigsc.446/TEST_MP_PRELOADS/welcome.sh @@ -0,0 +1,196 @@ +#!/bin/bash +set -e # stop whenever any command fails. + +usage_function () +{ + echo "Just called as : $1 $2 $3 $4 $5"; + echo + echo "Usage: $0" + echo "first argument: [test or run]" + echo "second argument: [path_to_rigal_c_compiler]" + echo "third argument: [path_to_mp_code]" + echo "fourth argument: [mp_filepath or mp_filename]" + echo "fifth argument: [scope] "; + exit 0 +} + + +compile_and_generate_mp_traces () +{ + echo $rc + echo $ic + cp $mp_code_path/*.rig mp_trace_generator_run_build/. + cp $mp_code_path/*.h mp_trace_generator_run_build/. + +# Copy the mp file into the build folder + echo $a_file + cp $a_file mp_trace_generator_run_build/. + + echo ${a_file##*/} #just the file name with extension included + local mp_filename_with_extension=${a_file##*/} + echo ${a_file%.*} #path to file with filename extension not included + local mp_base_filename=${mp_filename_with_extension%.*} + echo $mp_base_filename +# Switch to build folder and run build scripts + cd mp_trace_generator_run_build +# 1. Compile parser +../$rc MP2-parser +echo "Compiled MP2-Parser" +# 2. Run parser to create tree +../$ic MP2-parser $mp_base_filename tree $mp_scope > temp.txt +local tr="tree" +local new_tree_name="${mp_base_filename}"."${tr}" +echo "new tree name = $new_tree_name" +cp tree $new_tree_name +local new_temp_name="${mp_base_filename}".temp.txt +echo "new temp name = $new_temp_name" +cp temp.txt $new_temp_name +echo "ran Parser on $a_file" +# 3. Compile generator +../$rc MP2-generator +echo "Compiled MP2-generator" +# 4. Run generator to create C++ code +../$ic MP2-generator tree > temp2.txt +local new_temp2_name="${mp_base_filename}".temp2.txt +echo "new temp2 name = $new_temp2_name" +cp temp2.txt $new_temp2_name +echo "Generated CPP code" +rm tree *.rsc +echo "C++ compiler: g++ $mp_base_filename.cpp -o $mp_base_filename -fast" +#time /Developer/usr/bin/g++ "$mp_basename.cpp" -o $mp_basename -fast +# 5. Compile the C++ code +time g++ "${mp_base_filename}.cpp" -o $mp_base_filename -Ofast +echo "$mp_base_filename run: $mp_base_filename>$mp_base_filename.txt" +# 6. Run the compiled C++ program +time ./$mp_base_filename>"${mp_base_filename}.txt" +echo "Completed $mp_base_filename for scope $mp_scope" +mv $mp_base_filename.json ../mp_trace_generator_run_output_"$mp_scope"/ +rm $mp_base_filename xd RIGCOMP.TMP +cd .. + +} + +# Show the help text +if [[ "$1" == "-h" ]] || [[ -z "$*" ]] ; then + usage_function $0 $1 $2 $3 $4 $5 +fi + + +if [[ "$1" != "test" ]] && [[ "$1" != "run" ]]; then + usage_function $0 $1 $2 $3 $4 $5 +fi + +shell_mode=$1 # run to get json or test to compare to known-good files +rc_path=$2 # path to trace-generator bin directory +mp_code_path=$3 # path to .rig and .h code of MP +mp=$4 # might be a path or a filename -- distinguished later. +mp_scope=$5 # can run at any scope, 1,2,3,4,or 5 + +#check rc_path is valid +if test ! -d $rc_path ; then + echo "$rc_path does not exist!" + usage_function $0 $1 $2 $3 $4 $5 +fi +echo "rc_path confirmed: $rc_path " +#check mp_code_path is valid +if test ! -d $mp_code_path ; then + echo "$mp_code_path does not exist!" + usage_function $0 $1 $2 $3 $4 $5 +fi +echo "mp_code_path confirmed: $mp_code_path" + +#check for the executable rc +if test ! -x $rc_path/rc ; then + echo "The executable compiler $rc_path/rc does not exist!" + usage_function $0 $1 $2 $3 $4 $5 +fi +rc=$rc_path/rc +if test ! -x $rc_path/ic ; then + echo "The executable compiler $rc_path/ic does not exist!" + usage_function $0 $1 $2 $3 $4 $5 +fi +ic=$rc_path/ic + +echo "rc executable set: $rc" + +#check whether mp is path or file +if [ ! -e $mp ]; then + echo " $mp is not a file or directory " + usage_function $0 $1 $2 $3 $4 $5 +else + if [ -d $mp ]; then + mp_path=$mp + mp_type="path" + echo "FILE PATH provided" + elif [ -f $mp ]; then + mp_filename=$mp + mp_type="filename" + else + echo " $mp is not a file or directory " + usage_function $0 $1 $2 $3 $4 $5 + fi +fi +echo "mp type is set to $mp_type" + +#check mp_scope is a number greater than 0 default to 1 if not present. +if [ ! "$mp_scope" = "1" ] && + [ ! "$mp_scope" = "2" ] && + [ ! "$mp_scope" = "3" ] && + [ ! "$mp_scope" = "4" ] && + [ ! "$mp_scope" = "5" ] ; then + echo " $mp_scope should one of these numbers: {1,2,3,4,5} " + usage_function $0 $1 $2 $3 $4 $5 +fi; +echo "mp scope is set" + +# Setup the /build folder +if [ ! -d "mp_trace_generator_run_build" ]; then + mkdir mp_trace_generator_run_build +fi +if [ ! -d "mp_trace_generator_run_output_$mp_scope" ]; then + mkdir mp_trace_generator_run_output_"$mp_scope" +fi +echo "setting mp path/filename" +echo "mp_type = $mp_type" +if [ "$mp_type" = "path" ]; then + file_list=$(/usr/bin/find "$mp_path" -type f -maxdepth 2 -name "*.mp"); + echo $file_list + for a_file in $file_list + do + echo "The file to process is:****** ***** : $a_file" + file_info=$(file "$a_file") + echo "File information is: $file_info" + #compute the output + compile_and_generate_mp_traces $a_file + done + if [ $shell_mode = "test" ]; then + #compare all computations to known good + diff_results=$(diff -rq mp_trace_generator_run_output_"$mp_scope" mp_trace_generator_test_output_"$mp_scope") + if [[ -z "$diff_results" ]] ; then + echo "No differences between computed and known good were found!" + else + echo "Differences found are: " + echo $diff_results + fi + + elif [ $shell_mode = "run" ]; then + echo "IN RUN MODE" + echo "Computed results from file: $a_file" + else usage_function $0 $1 $2 $3 $4 $5 + fi + +else + if [ "$mp_type" = "filename" ]; then + file_list=$mp_filename + a_file=$file_list + file_info=$(file $file_list) + echo "File information is: $file_info" + echo "MODE is: $shell_mode" + compile_and_generate_mp_traces + else + usage_function $0 $1 $2 $3 $4 $5 + fi +fi + + + -- GitLab