diff --git a/Code/test_rc_on_preloaded_examples.sh b/Code/test_rc_on_preloaded_examples.sh new file mode 100755 index 0000000000000000000000000000000000000000..364247bec7b5ad444e76bb608ecae8f5a84432f1 --- /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 0000000000000000000000000000000000000000..6e04a19585f94e6ec96a5a95baa3a6e183271887 --- /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 0000000000000000000000000000000000000000..0ea964f0c5e1a5d3a3606c2f1e02bec47ca3fad6 --- /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 0000000000000000000000000000000000000000..083c8018ea3833e25789968753a22067a30e4808 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01_simple_message_flow.tree differ 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 0000000000000000000000000000000000000000..740b6520595f44ee7e49366c3431c103a7cd9bf2 --- /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 0000000000000000000000000000000000000000..04910f6208b2d52e50b2ffd19e6e28adc628d01f --- /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 0000000000000000000000000000000000000000..d714bd0c5ba15a37e7cebecd62e4b7ba4df54d5a --- /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 0000000000000000000000000000000000000000..f5600be973fd1678d43277c9c0d705fd1adf76fd --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example01a_unreliable_message_flow.tree differ 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 0000000000000000000000000000000000000000..9d013b6db45762357ea9e943bcac249ef87aef6a --- /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 0000000000000000000000000000000000000000..6c749354c3f2740fb2d6eb0c1636bce97e7f714b --- /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 0000000000000000000000000000000000000000..811e1de5c05900631a534383e10924fd91038d20 --- /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 0000000000000000000000000000000000000000..68e1a4ef2ed29d504cb57285c1bdef47a582a121 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example02_Data_flow.tree differ 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 0000000000000000000000000000000000000000..1f439443eb5ceb9a047d73b7510547c8b4a19677 --- /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 0000000000000000000000000000000000000000..c804b6bc66f8f5f8e749c21f099d04eee08c767a --- /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 0000000000000000000000000000000000000000..0c33381eeedc80f433f26581a87f283271eb48f1 --- /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 0000000000000000000000000000000000000000..deeedfffe2085789194aad7f92caa55de1d55b16 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example03_ATM_withdrawal.tree differ 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 0000000000000000000000000000000000000000..09b6437337839a51bcc7b791f2b51e557139d88a --- /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 0000000000000000000000000000000000000000..28c74d43f66ed7822e2671fc01c67d9c04352528 --- /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 0000000000000000000000000000000000000000..0c660075f65c5c6248d423abf77219494b29c336 --- /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 0000000000000000000000000000000000000000..1d207ad67b8b7a272fd3cbbfef40ce63c362dfc3 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04_Stack_behavior.tree differ 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 0000000000000000000000000000000000000000..c862069655e627d6b83a34d63d3a736f98f7a01a --- /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 0000000000000000000000000000000000000000..26ba4985772c0a49815625e34d8169d65d5fcb78 --- /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 0000000000000000000000000000000000000000..3aed579e46c93823948700930d49e3ef8b7bcbcf --- /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 0000000000000000000000000000000000000000..fd2ce4ca3ec68eaa5f8b350de76fb85b3554545d --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example04a_Queue_behavior.tree differ 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 0000000000000000000000000000000000000000..489ea963a5614b4fa0b3948541a192d11ca6add1 --- /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 0000000000000000000000000000000000000000..e1af22134b597dae36f6b9848b31c585b1d5ace2 --- /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 0000000000000000000000000000000000000000..4f6a8fd1696640cb494f27500d720ebb288be6c6 --- /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 0000000000000000000000000000000000000000..b08a9427a30aebf32549c8cdc6f1b3249e4c6572 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example05_Car_Race.tree differ 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 0000000000000000000000000000000000000000..0f0b7a20c0847232ca8ba8b1c2268f9ecf71fbdc --- /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 0000000000000000000000000000000000000000..02e62acdd42469b6c5cee10492c8d418c3e17e4e --- /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 0000000000000000000000000000000000000000..61d2cdd5ddbcfc7abbdceb49229fa295b8a4fb03 --- /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 0000000000000000000000000000000000000000..5e8de87134184cb71831ed05f252a45eddb2a6ee --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example06_Assertion_Checking.tree differ 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 0000000000000000000000000000000000000000..caeb897333bdff577301d24364d290fcbee36257 --- /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 0000000000000000000000000000000000000000..89d29dae99cba617420241c79cfc63b3087ea116 --- /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 0000000000000000000000000000000000000000..817cee81c00edf2727d9cdd9a669b80d280eb5bb --- /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 0000000000000000000000000000000000000000..67cecf89cb797a75677c532ece462714c27e20b4 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example07_Unconstrained_Stack.tree differ 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 0000000000000000000000000000000000000000..6b82124f73786479fef28b4d162451e4b895322f --- /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 0000000000000000000000000000000000000000..06b30e63888a555548783b087dba435ff3b6f558 --- /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 0000000000000000000000000000000000000000..e930176a2b7dbc5bc020ee3929f3a03147a92e4b --- /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 0000000000000000000000000000000000000000..b5288e6cbc9629652e3bce2195235da5c4bd7331 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example08_Operational_Process.tree differ 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 0000000000000000000000000000000000000000..1a99082ba4bb19232137c4c84c8af7dceef8fd88 --- /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 0000000000000000000000000000000000000000..bd3e95974ca5d2d6bc8f8bf5c045b19adeb2afd6 --- /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 0000000000000000000000000000000000000000..b4423996067a0807558a1252a928e9d1aae4e2d7 --- /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 0000000000000000000000000000000000000000..9275d975d329e1521c11da86b5790396892ec626 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example09_Employee_Employer.tree differ 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 0000000000000000000000000000000000000000..e2501023ac341cd003bfa8c0c6bdcfae8652e16c --- /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 0000000000000000000000000000000000000000..404ebe7fed4592deeab901efa41247952ef9efd7 --- /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 0000000000000000000000000000000000000000..63896c93432204eb441999ce30cdc279d45a82f6 --- /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 0000000000000000000000000000000000000000..b7135b115a789b3d5a0ac13120bfc7638be7c059 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example10_Pipe_Filter.tree differ 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 0000000000000000000000000000000000000000..ac7ea0569d18f5d20eabdf9d4c45d50fc296ba2f --- /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 0000000000000000000000000000000000000000..8665c0b8f363ab1262011e39771db54b38202e05 --- /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 0000000000000000000000000000000000000000..b885a2ed08874cd27fd08df23391baf5caf8dbfd --- /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 0000000000000000000000000000000000000000..a7efcece2dc3d8363e3381c0e11b66bad674178a --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example11_Publish_Subscribe.tree differ 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 0000000000000000000000000000000000000000..50f5c1e48d49937e00fbf31963f419fdae1671e4 --- /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 0000000000000000000000000000000000000000..b1de57f5e623c5ac531a39f63464ec209377cb73 --- /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 0000000000000000000000000000000000000000..d3dcba336d47cf365b1ea1017c60c6ae41bf21c8 --- /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 0000000000000000000000000000000000000000..2088504c83b160f1d97396bc91e31ac35b74dd94 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example12_network_topology_ring.tree differ 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 0000000000000000000000000000000000000000..331b073d26732ba5ca823227d4dee3f2d12092fd --- /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 0000000000000000000000000000000000000000..94881839f0b66ae82b92c1b3af15d6fad719a8b5 --- /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 0000000000000000000000000000000000000000..90b775634588e05da0c86ff492d65dc9b3949e01 --- /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 0000000000000000000000000000000000000000..76fa7e3d682d29f9df8bb4044a7cfbfe01f9189d --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example13_FiniteStateDiagram.tree differ 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 0000000000000000000000000000000000000000..b4d3b7076d658e83625a6c4784afecb4335c2187 --- /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 0000000000000000000000000000000000000000..eaa5ff166dac28bb276637f7e546aaa92d4db957 --- /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 0000000000000000000000000000000000000000..b0ecf3becf6a41206e611e1fb1438a76fad6f5f5 --- /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 0000000000000000000000000000000000000000..20c3b3855676d2a0d4ef2e8b8716ad7c9fb8cb8b --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example15_Petri_net.tree differ 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 0000000000000000000000000000000000000000..60ab991513aa89be314fedc01b19003f6c474530 --- /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 0000000000000000000000000000000000000000..c13b7fd1374bf29ef68fd4a282f3808527b92521 --- /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 0000000000000000000000000000000000000000..f8d21425998fbfe8c472101decf9945a3ff8bc6d --- /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 0000000000000000000000000000000000000000..9c4b0de24c1e1d9d9c66bda72e60e057f7754b95 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example16_software_spiral_process.tree differ 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 0000000000000000000000000000000000000000..2bb0a60041464f69fc862afe88f127bf01b821d6 --- /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 0000000000000000000000000000000000000000..5471951f8f4cfbdd91790c51b8fd8e518dc709cc --- /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 0000000000000000000000000000000000000000..6a2330a892b959217997c816aae07682034f5340 --- /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 0000000000000000000000000000000000000000..402da51a848b96f7c8912d72e902d5a304e3a5d1 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example17_Dining_Philosophers.tree differ 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 0000000000000000000000000000000000000000..d8fc0f0c355d8097b6f402a8189732040353be58 --- /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 0000000000000000000000000000000000000000..1a618cc1fffbb7dc3eb98c68681b9ac342e73292 --- /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 0000000000000000000000000000000000000000..6c3b9601b4316f26231d0145cbcb7db6601c78e7 --- /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 0000000000000000000000000000000000000000..54fd25c5d72484e9269eed091600f450d298ae31 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example18_Workflow_pattern.tree differ 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 0000000000000000000000000000000000000000..0d57835a9725ec46832166f3caefc979b29e96f7 --- /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 0000000000000000000000000000000000000000..b6bd6fe372f59b4c4d1b73a622b9aec3d5ad94a3 --- /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 0000000000000000000000000000000000000000..cb771e90ffca161946487229e76e2359ff87cc8a --- /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 0000000000000000000000000000000000000000..d39dfca9db72f9b72fc8cd9ddbeafae55dc1c676 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example19_Consumers_Suppliers.tree differ 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 0000000000000000000000000000000000000000..76982e9ce5aca62dbfc33597e4b5d7410030e6de --- /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 0000000000000000000000000000000000000000..34305a6666df63b56cdf6ddbb1381c1800679b3e --- /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 0000000000000000000000000000000000000000..c09d654b8a85e7deac2951b79e8f5049c06ed9b2 --- /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 0000000000000000000000000000000000000000..c1967c9e2995d903758ebdeb223d0f100dec0730 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example20_MP_model__reuse.tree differ 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 0000000000000000000000000000000000000000..093c206e2310cc5f09bd4a88de5d83efda59a251 --- /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 0000000000000000000000000000000000000000..3abe3af8effbbcc621428682242dcde92e92cf9c --- /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 0000000000000000000000000000000000000000..371f385233024744bdf39fae36ce112121a6f447 --- /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 0000000000000000000000000000000000000000..54340ffd3d9ca63c3d50a53b1932fd569cf13516 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example21_compiler1.tree differ 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 0000000000000000000000000000000000000000..3c2abf1be19a274c94ee3d39b3f88db613416268 --- /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 0000000000000000000000000000000000000000..1e5a0d881c147b694c23646b38b65e5236e798b8 --- /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 0000000000000000000000000000000000000000..b18d9af47f41bf5a8b60a61f6f7e72744f52c7c3 --- /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 0000000000000000000000000000000000000000..c5f4af0c9c36868d87d9ef7e2a3c69d43477e06d --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example22_compiler2.tree differ 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 0000000000000000000000000000000000000000..3db135acdcd9ddaac33f59024d1be868f5d5c0d7 --- /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 0000000000000000000000000000000000000000..338732bf91fab7d382ab38b2c68f0fc7c6fb5f1b --- /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 0000000000000000000000000000000000000000..a0405536bb737d65c41b996e273fcf80c12c5037 --- /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 0000000000000000000000000000000000000000..edbab3336a6e458fe4fe996b8b23c58497c215cd --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example23_number_attributes.tree differ 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 0000000000000000000000000000000000000000..1287f21ed8fe61bfd40ce0dbec7ca191d503281a --- /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 0000000000000000000000000000000000000000..0557e783acea90b7b905b41ce6ec8824cc62d862 --- /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 0000000000000000000000000000000000000000..5022d189337f73d5b9c6343a766ba09eeb0aeeab --- /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 0000000000000000000000000000000000000000..fe5a2277c455a0497efb3fc5307b374a422747f7 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example24_Bayesian_probability.tree differ 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 0000000000000000000000000000000000000000..31fdea9890987aedf496e21717317c4532f2e8dc --- /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 0000000000000000000000000000000000000000..fd35c556f511d8760741e6ee1d3c0a5a33613fd4 --- /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 0000000000000000000000000000000000000000..cfef3eb3d82e9c64579cae0d7288b7571e4e0aa5 --- /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 0000000000000000000000000000000000000000..69e51295bd7e5f993cc00665e760c03944c7139d --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example25_interval_attributes.tree differ 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 0000000000000000000000000000000000000000..f5a7740dae5a2ca8a52b97c7318c27c672f76e89 --- /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 0000000000000000000000000000000000000000..8208b452ff80a31380aae9233ae211ea1f6c37fa --- /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 0000000000000000000000000000000000000000..65df381f75de10949a8bd56f80d22c734145cab4 --- /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 0000000000000000000000000000000000000000..48198247c2bbd6b8073c143b09e8eadd94047605 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example26_timing_attributes.tree differ 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 0000000000000000000000000000000000000000..3489f5d31501cfbcd217eec7f5453f5d5ef64ba3 --- /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 0000000000000000000000000000000000000000..85b95d62538af6510cae0b0db9fc0a88873c3ce5 --- /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 0000000000000000000000000000000000000000..c6c9332e8e18764433ef3a5a683e02a1988d8e57 --- /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 0000000000000000000000000000000000000000..c00db62c9b0a84b78aefc8f9fd35c9476e1a6572 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example27_Railroad_Crossing.tree differ 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 0000000000000000000000000000000000000000..abddef28a9c07329ba35d5d2320bb9b904139f46 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture differ 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 0000000000000000000000000000000000000000..b8479e7481ba3b53afdfd5e4471a0ddc73e8732d --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 0000000000000000000000000000000000000000..36264184995df0d7cc631065432f261384f703c3 --- /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 0000000000000000000000000000000000000000..735bdc5c5844d9586516b05aef1f440ef528fcbd --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example28_MP_model_of_MP_architecture.tree differ 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 0000000000000000000000000000000000000000..adb8b704b46fbdf8a37174855921c96e7a8756a8 --- /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 0000000000000000000000000000000000000000..f4f35f12ffc05767df175c7569068f56a29630ab --- /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 0000000000000000000000000000000000000000..b0fc26dbd9263b07ec7b73467da1566e9f259b92 --- /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 0000000000000000000000000000000000000000..50e59ae5d065bb2e64954f7ad08f299404b88f93 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example29_stack1_Bayesian_probability.tree differ 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 0000000000000000000000000000000000000000..ecf6b39c140bef93f23dbcb22c8db3c166e6f3c8 --- /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 0000000000000000000000000000000000000000..760916704a5b670c2a0ae23a020477fa5faaf1b5 --- /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 0000000000000000000000000000000000000000..0271dd2c88233d5fb169237fedbaa2204edc6ee4 --- /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 0000000000000000000000000000000000000000..a6480c7364b04790a03dcdc93c78ef6daf2d5d39 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example30_Local_Report.tree differ 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 0000000000000000000000000000000000000000..3f90b1503b6f5e08bfac0d214c2fdd4bf4ebe665 --- /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 0000000000000000000000000000000000000000..4a2faffb96c849fe7fe7bed01da19626be14ee65 --- /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 0000000000000000000000000000000000000000..ad102ee91a6a0220854021bff9da9e385119ee92 --- /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 0000000000000000000000000000000000000000..d3ba0456c9d2a7ce044db26a06b34d6abda4d4de --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example31_Global_report.tree differ 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 0000000000000000000000000000000000000000..276153ca8371e07b252681095f94375287f0c987 --- /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 0000000000000000000000000000000000000000..ea4e30af07d92a76ffaa2b7e0f61a48a5aef6521 --- /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 0000000000000000000000000000000000000000..625c9e85a465c6f0d4788fc17751d37aa2da2ccb --- /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 0000000000000000000000000000000000000000..e3481d70150c6fe846ada28a86f045cd212dd2d7 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example32_Local_graph.tree differ 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 0000000000000000000000000000000000000000..bf61533d22ce2ffbe6c00ad0c82ff80d7251c612 --- /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 0000000000000000000000000000000000000000..fdb7dd8fc476e2e3290fb9b1249a0b7c2d010eb7 --- /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 0000000000000000000000000000000000000000..873759c781757149f84a0b2642b20dc4adcd44b8 --- /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 0000000000000000000000000000000000000000..b800742040189bc04c5bfe75ad9cdd42f567e3e3 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example34_Graph_as_data_structure.tree differ 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 0000000000000000000000000000000000000000..fa6fd01baced02dd0d94069c57fa6bcbae9b9313 --- /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 0000000000000000000000000000000000000000..4fcba832bb694beab586d466994d92e5f9675a25 --- /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 0000000000000000000000000000000000000000..ff0ca8160c4696f5154ba4491eac0ad2b88b95d3 --- /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 0000000000000000000000000000000000000000..ec427494e8fbdfdf0b960c4acc3e0fe00aecc387 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example35_Finite_State_Diagram.tree differ 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 0000000000000000000000000000000000000000..f692e29b2ffd297e1a1cf8ffe1cf84bf4ab70a0e --- /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 0000000000000000000000000000000000000000..a1deeabfe4bac8dac852cfe9642a938eaadece43 --- /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 0000000000000000000000000000000000000000..f41f30f641c63d9521dfe27e34c1781395d4d882 --- /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 0000000000000000000000000000000000000000..afef2c5ce00feeafd6c2ed008e22fd739b8d246c --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example36_Statechart.tree differ 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 0000000000000000000000000000000000000000..ad36dea15ef9d8fe3c9ffbf83aad812a7e9ae6e8 --- /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 0000000000000000000000000000000000000000..50d477b7f53d88ee317a66a1f24db0daed5ffd37 --- /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 0000000000000000000000000000000000000000..d6f37e17a2f685fa129f560b3cae2711caae5099 --- /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 0000000000000000000000000000000000000000..e7656466bf84408a7516b3473fdfb214d8e21ad2 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example37_GLOBAL_query.tree differ 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 0000000000000000000000000000000000000000..8e52387a46d73004931b5909b6507242443acece --- /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 0000000000000000000000000000000000000000..0fd3a20f525964ece7a1d07de601a879812eb8a4 --- /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 0000000000000000000000000000000000000000..ebe7c4de00ebb093a0cf5f545cb2b2153068062b --- /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 0000000000000000000000000000000000000000..59e8085f5a0f86d8fa4b157f4171684cb68da509 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example38_knapsack.tree differ 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 0000000000000000000000000000000000000000..0f6979f89708f22dd9f0d2402703b1ddb594c704 --- /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 0000000000000000000000000000000000000000..0fe305e73ca2d571b585d11051fe68fee2f6db01 --- /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 0000000000000000000000000000000000000000..bedbdb0b29519d639f1fa1bff8dfaf9a88d42b88 --- /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 0000000000000000000000000000000000000000..a0251d2d22bfa132478b0d786ac44076c2d0a8bb --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example39_turtles.tree differ 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 0000000000000000000000000000000000000000..2f53500df09164d00175c791e83c628b37adcd6d --- /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 0000000000000000000000000000000000000000..d8e58145b527a0e0ede3c6b06cd41528a81169a8 --- /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 0000000000000000000000000000000000000000..5c6181c2b66620c1dbe23fbebf301592c0f564b2 --- /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 0000000000000000000000000000000000000000..1615ab540350fc3123c44ba7cc23598ff08b9241 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example40_web_browsers.tree differ 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 0000000000000000000000000000000000000000..1ce5a206df0254311e99418f188d3ce5e870d3b4 --- /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 0000000000000000000000000000000000000000..608d0a85e0c51981d3c1ebe42c0910e2555ba824 --- /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 0000000000000000000000000000000000000000..5749bbec43b43fc58ccc58c29120d8ca58160316 --- /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 0000000000000000000000000000000000000000..9c275b02eadf7e3f42907e7a01b22b260fae3bd0 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example41_Replay_Attack.tree differ 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 0000000000000000000000000000000000000000..e2d7a662e020596444e26135b5ab50d13302e93d --- /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 0000000000000000000000000000000000000000..d5363d46f0b236b0b223a8496e607f067b9c096e --- /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 0000000000000000000000000000000000000000..dade7edfb50152ab420057c88fe4d2ebbb1150ae --- /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 0000000000000000000000000000000000000000..6b5c7c407628ec878b55027c5cc10394a3655535 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example42_Bar_Chart.tree differ 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 0000000000000000000000000000000000000000..b5117e9abcf6294d02c47aa6abb0fba176540146 --- /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 0000000000000000000000000000000000000000..82a347a40633da4a6c5ac47a369f3d4354aecf08 --- /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 0000000000000000000000000000000000000000..c40bdfa07024449cf9eaed6019578d65aafe051f --- /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 0000000000000000000000000000000000000000..a9166096ce3d476c07ab1b3104cf48bf6f53ef86 --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example43_Histogram.tree differ 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 0000000000000000000000000000000000000000..642efb63707c0c791ef4ad7556a13e84ddcc9cab --- /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 0000000000000000000000000000000000000000..094815aff6f7f16d17bec03356d4c9d75a920e5c --- /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 0000000000000000000000000000000000000000..fe4483df5b9e157783ebab43411f026c402a9199 --- /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 0000000000000000000000000000000000000000..d8e2c4629ebfe1dbb5afea14ff19ae37a71e834e --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example44_Gantt_Chart.tree differ 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 0000000000000000000000000000000000000000..8db3bca303f81d700cb84c36e60302b7a03bd047 --- /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 0000000000000000000000000000000000000000..d97347e4f8199b105256a6bbcddfde0938c12361 --- /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 0000000000000000000000000000000000000000..10b3b3a4fc8ad6e14215d21f31e284fd1b61b052 --- /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 0000000000000000000000000000000000000000..02f85b98fdbdd943bcdf23b206d0b277ebbefb8a --- /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 0000000000000000000000000000000000000000..1f0d7db3a45e5830358f8ba01daffc5b2355ed92 --- /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 Binary files /dev/null and b/RIGAL/rigsc.446/TEST_MP_PRELOADS/mp_trace_generator_test_build/Example45_Martian_Lander.tree differ 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 0000000000000000000000000000000000000000..4116642ff0c22d567c72eb16c3325d3b3ba9c0a1 --- /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 0000000000000000000000000000000000000000..56fc55d2450b753a9e120f97c9cd24005a53e8e1 --- /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 0000000000000000000000000000000000000000..d6375f0e02c732b39ae3480df97e9fd2c3da527c --- /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 0000000000000000000000000000000000000000..f432e1e4f10364d1cb761645cb1ad5edbd1a9d73 --- /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 0000000000000000000000000000000000000000..038557737b731882b9dc967eff5f44db0ec779ea --- /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 0000000000000000000000000000000000000000..62cd0d9b8f2dbdc230da3541caa6b429b66a8772 --- /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 0000000000000000000000000000000000000000..96afc5ef779f448ba7384873616208bd6458c605 --- /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 0000000000000000000000000000000000000000..bf97d51a8069778c4520f0c156a0196c55cad2ca --- /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 0000000000000000000000000000000000000000..d7756e987635dff55e1ba241907b5baef271f30e --- /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 0000000000000000000000000000000000000000..9b7375e59f257fc9c82988a40ca00783ad8f67a6 --- /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 0000000000000000000000000000000000000000..603295a16b48d6ec0e37df2a3b7388de06cb86b2 --- /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 0000000000000000000000000000000000000000..c4b0c225342830cfedcefd7a583aa8218b009dd3 --- /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 0000000000000000000000000000000000000000..9e2b3d9b4a37762c9b9a2de52aa432065519ba21 --- /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 0000000000000000000000000000000000000000..7813f9aaa3f1f1f0e7c9e66b66f1877d5c5e6cd7 --- /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 0000000000000000000000000000000000000000..da8a61357d6333a5b3eded5d99f349a06d672c18 --- /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 0000000000000000000000000000000000000000..01d41ed20db69470502d9579c8f00e19b7cb69f7 --- /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 0000000000000000000000000000000000000000..3b71bfa6a8c5d0fcf20d1617502d9c3efcdc8dbf --- /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 0000000000000000000000000000000000000000..197273dd85601a37c576dfa38f27b9e23c9b86a3 --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 0000000000000000000000000000000000000000..5b4c6324928821843168d56850581cfbd838334e --- /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 0000000000000000000000000000000000000000..98b4b9a0dfad2a1c9987ff25b708481bc776dca2 --- /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 0000000000000000000000000000000000000000..76bcb844cfa80d4f24efb9450f1dc76a98b1a733 --- /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 0000000000000000000000000000000000000000..a537d802a2e75f298682216277da66b533d5330d --- /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 0000000000000000000000000000000000000000..2fd3fc8a1c1fe499510aa7359afd5fc0e7647631 --- /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 0000000000000000000000000000000000000000..33e67579adcb4bbaccb4084fb1df736df1475a7f --- /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 0000000000000000000000000000000000000000..0430a1dbc745376c1273ac9f917c599fefc33d6b --- /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 0000000000000000000000000000000000000000..b6ac592085bcf8b930ede90cf4734fb303018755 --- /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 0000000000000000000000000000000000000000..d30766e96cf5fad80e0ecb1110686ec1448bb198 --- /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 0000000000000000000000000000000000000000..40130567bbddca9486481d4daec6b8690a0fc385 --- /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 0000000000000000000000000000000000000000..0fbcab2133a69ee14320ddbf3586a859638535f8 --- /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 0000000000000000000000000000000000000000..e17c0441a4b0946a04bc3fe5ae59f751c5c5c56e --- /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 0000000000000000000000000000000000000000..b3a9401941450fd8554c174fce6b11006e78529f --- /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 0000000000000000000000000000000000000000..6c19a215a50207b736998b42dd663ba147d2a20e --- /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 0000000000000000000000000000000000000000..9257a99393dc00e58dbfd733527656a04cb702a4 --- /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 0000000000000000000000000000000000000000..4c0993d84addd91f01a0e0f98f2c7bb210f688f4 --- /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 0000000000000000000000000000000000000000..0f8ce65301b550a4166a28d94366ce32b857785a --- /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 0000000000000000000000000000000000000000..8c4ae6ffd175c731291a51d8588ed652b22d35c2 --- /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 0000000000000000000000000000000000000000..8b315761f13aad1f33a809db576b35509b7488b3 --- /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 0000000000000000000000000000000000000000..00cb2094438e711e90c8d3ad564e3bba910b4b76 --- /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 0000000000000000000000000000000000000000..01494927472043fb4f66fa06c86bb9b5667a5259 --- /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 0000000000000000000000000000000000000000..4a0670c1557c1268e95815a5daad5d924337379d --- /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 0000000000000000000000000000000000000000..888350eceec724377844f763c8c6dff74cd0a530 --- /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 0000000000000000000000000000000000000000..63cc0f52083894fa3753d81c4e6ade47319bd4e8 --- /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 0000000000000000000000000000000000000000..330822b9e276b8e5875627bd68e72f8d4207af3a --- /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 0000000000000000000000000000000000000000..f5bf362124428b91b6ea9641f2651728ae1e220e --- /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 0000000000000000000000000000000000000000..a38fa486e5ad2de1d4cd708054658b4d89f7c380 --- /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 0000000000000000000000000000000000000000..45c574435e59faf19808426fcf10b784946eab3b --- /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 0000000000000000000000000000000000000000..2887f727dbbbd84c581f98eead148b7e202bd9b9 --- /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 0000000000000000000000000000000000000000..867e72095b4eae7f794130b32bff93eca6335731 --- /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 0000000000000000000000000000000000000000..aa0fc034d4ea1ab89803f09e7a924e64917deade --- /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 0000000000000000000000000000000000000000..9409812fbdcde338f2242e52451f4e258ef9cd45 --- /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 0000000000000000000000000000000000000000..1c741d8a05859e39c303e9c996d21458c7db9103 --- /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 0000000000000000000000000000000000000000..0aafa71bef6e210be79aa2d0eb546aaac4946fe7 --- /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 0000000000000000000000000000000000000000..ac8d2a129f58836e5f0c46e2a0fb46bb8fb11c1f --- /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 0000000000000000000000000000000000000000..a5cff1059b79c6307593193cfff4fb21d232cbd2 --- /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 0000000000000000000000000000000000000000..603295a16b48d6ec0e37df2a3b7388de06cb86b2 --- /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 0000000000000000000000000000000000000000..c4b0c225342830cfedcefd7a583aa8218b009dd3 --- /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 0000000000000000000000000000000000000000..bf8d948adf4095a7278e55b2caa3ef8576a458b8 --- /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 0000000000000000000000000000000000000000..2a5156bb548c3a53bcea02bb8c14f5539cde3a98 --- /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 0000000000000000000000000000000000000000..613ab7f46993f14266b625666350fdf24aa86765 --- /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 0000000000000000000000000000000000000000..8bdb86cde0b00417a3352383ddfd32565e9e52f5 --- /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 0000000000000000000000000000000000000000..5e68f031419588ffe3cbb0e39ac8438024b904e0 --- /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 0000000000000000000000000000000000000000..77e5c927a1cd70e18e552ef21b1bf79b3eeb0f96 --- /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 0000000000000000000000000000000000000000..69660a14890dbc8519992eea04e8ee1a36c7f342 --- /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 0000000000000000000000000000000000000000..5b4c6324928821843168d56850581cfbd838334e --- /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 0000000000000000000000000000000000000000..01ddf936e5e87c32700d1e70710089776926d7a8 --- /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 0000000000000000000000000000000000000000..cd519da9f4bd87d6415ccce377a42258cb3a6003 --- /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 0000000000000000000000000000000000000000..a012a25457ac0bfc8f8916eb9b55ef2ce3ea9d69 --- /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 0000000000000000000000000000000000000000..7f92cc6feaf174f9dcfc727c2bfd3f108834fe9f --- /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 0000000000000000000000000000000000000000..2288385943658d5ef932976b15a76b025d0234bc --- /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 0000000000000000000000000000000000000000..0430a1dbc745376c1273ac9f917c599fefc33d6b --- /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 0000000000000000000000000000000000000000..d069ca584591cee20b546583d4bfb97654947b40 --- /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 0000000000000000000000000000000000000000..3ef92a416ae0867b086fee9b39d58ce17cc27ca4 --- /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 0000000000000000000000000000000000000000..4b6155e89161f026f2144795fdede16855a14e61 --- /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 0000000000000000000000000000000000000000..efed25dbaac72c0fbcb4bb51b3ef21e8cd063c20 --- /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 0000000000000000000000000000000000000000..bdbbf721646fd7d05ce434c33f9855d7ee87400f --- /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 0000000000000000000000000000000000000000..c93a7785bfbb6d87991d0ef803cccb0bc787e0ef --- /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 0000000000000000000000000000000000000000..c895328aa5a7edf4ff53fd4dfda1af3ac64f963c --- /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 0000000000000000000000000000000000000000..0e175510d44a56dca61b347bc610707eda0457e4 --- /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 0000000000000000000000000000000000000000..fceb9492f92cfdede752384a070719a692011351 --- /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 0000000000000000000000000000000000000000..6c2002055129672dcfc7076b1a5701896dfe17d1 --- /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 0000000000000000000000000000000000000000..cadae96ab35772f3541c2f378dd34b9658338aba --- /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 0000000000000000000000000000000000000000..4148cbabc424c2938f5fec9bbd2d06a6bd308d0b --- /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 0000000000000000000000000000000000000000..7af69c80ce2e01b21a9d32d7a669cb7ca99e6c33 --- /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 0000000000000000000000000000000000000000..01494927472043fb4f66fa06c86bb9b5667a5259 --- /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 0000000000000000000000000000000000000000..c5c021f628e1bdb5f937aaa94204df7229012e4b --- /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 0000000000000000000000000000000000000000..e5cf279c8aad80b003417b93ca446a05509c9808 --- /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 0000000000000000000000000000000000000000..63cc0f52083894fa3753d81c4e6ade47319bd4e8 --- /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 0000000000000000000000000000000000000000..8be71aadb5e4deead8f0f81e2259e8c7d6e5513e --- /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 0000000000000000000000000000000000000000..f5bf362124428b91b6ea9641f2651728ae1e220e --- /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 0000000000000000000000000000000000000000..0e2beb44e07d59c7fb73d92504d5b92fb50cc3cd --- /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 0000000000000000000000000000000000000000..8c213977f181823e3834635b22e32094d8be390c --- /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 0000000000000000000000000000000000000000..6c1b87da1bb4678da61954ae3f984f80c63d76ea --- /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 + + +