19 #ifndef SPOT_FASTTGBAALGOS_EC_CONCUREC_DEAD_SHARE_HH
20 # define SPOT_FASTTGBAALGOS_EC_CONCUREC_DEAD_SHARE_HH
27 #include "fasttgbaalgos/ec/ec.hh"
28 #include "fasttgbaalgos/ec/deadstore.hh"
29 #include "fasttgbaalgos/ec/lowlink_stack.hh"
30 #include "fasttgbaalgos/ec/lazycheck.hh"
32 #include "fasttgbaalgos/ec/concur/uf.hh"
33 #include "fasttgbaalgos/ec/concur/sharedhashtable.hh"
34 #include "fasttgbaalgos/ec/concur/openset.hh"
35 #include "concur_ec_stat.hh"
37 #include "fasttgbaalgos/ec/opt/opt_tarjan_scc.hh"
38 #include "fasttgbaalgos/ec/opt/opt_dijkstra_scc.hh"
39 #include "fasttgbaalgos/ec/opt/opt_ndfs.hh"
40 #include "fasttgbaalgos/ec/unioncheck.hh"
64 std::string option =
"");
78 virtual bool has_counterexample();
80 virtual std::string csv();
82 virtual std::chrono::milliseconds::rep get_elapsed_time();
84 virtual int nb_inserted();
91 std::chrono::time_point<std::chrono::system_clock>
start;
92 std::chrono::time_point<std::chrono::system_clock>
end;
114 std::string option =
"");
116 virtual bool check();
126 virtual void main ();
128 virtual bool has_counterexample();
130 virtual std::string csv()
135 virtual std::chrono::milliseconds::rep
138 auto elapsed_seconds = std::chrono::duration_cast
139 <std::chrono::milliseconds>(end-
start).count();
140 return elapsed_seconds;
143 virtual int nb_inserted()
153 std::chrono::time_point<std::chrono::system_clock>
start;
154 std::chrono::time_point<std::chrono::system_clock> end;
174 std::string option =
"-cs")
176 stop, stop_strong, swarming, option)
192 virtual std::string
csv();
215 std::string option =
"-cs")
217 stop_strong, swarming, option)
226 virtual std::string
csv();
251 std::atomic<int>& giddle,
252 std::string option =
"");
263 virtual bool has_counterexample();
265 virtual std::string csv();
267 virtual std::chrono::milliseconds::rep get_elapsed_time();
269 virtual int nb_inserted();
278 int * stop_terminal_;
282 bool counterexample_;
290 std::atomic<int>& giddle_;
292 std::chrono::time_point<std::chrono::system_clock> start;
293 std::chrono::time_point<std::chrono::system_clock> end;
310 std::string option =
"");
315 enum color {Alive, Dead, Unknown};
322 virtual bool has_counterexample();
323 virtual std::string csv();
324 virtual std::chrono::milliseconds::rep get_elapsed_time();
325 virtual int nb_inserted();
336 bool counterexample_;
338 struct pair_state_iter
344 std::vector<pair_state_iter> todo;
353 std::unordered_set<
const fasttgba_state*,
354 fasttgba_state_ptr_hash,
357 std::chrono::time_point<std::chrono::system_clock> start;
358 std::chrono::time_point<std::chrono::system_clock> end;
370 fake_ec(
int thread_number): tn_(thread_number)
376 bool has_counterexample()
384 return "no_ec,0,0,0,0,0,0,0,0,0,0,0,0";
387 virtual std::chrono::milliseconds::rep get_elapsed_time()
392 virtual int nb_inserted()
421 enum color {Alive, Dead, Unknown};
427 virtual bool has_counterexample();
428 virtual std::string csv();
429 virtual std::chrono::milliseconds::rep get_elapsed_time();
430 virtual int nb_inserted();
438 bool counterexample_;
440 struct pair_state_iter
446 std::vector<pair_state_iter> todo;
453 std::chrono::time_point<std::chrono::system_clock> start;
454 std::chrono::time_point<std::chrono::system_clock> end;
456 unsigned int transitions_cpt_;
457 unsigned int max_dfs_size_;
458 unsigned int memory_cost_;
459 unsigned int max_live_size_;
460 unsigned int update_cpt_;
479 enum color {Alive, Dead, Unknown};
486 virtual bool has_counterexample();
487 virtual std::string csv();
488 virtual std::chrono::milliseconds::rep get_elapsed_time();
489 virtual int nb_inserted();
500 bool counterexample_;
502 struct pair_state_iter
508 std::vector<pair_state_iter> todo;
516 std::chrono::time_point<std::chrono::system_clock> start;
517 std::chrono::time_point<std::chrono::system_clock> end;
518 unsigned int transitions_cpt_;
519 unsigned int max_dfs_size_;
520 unsigned int memory_cost_;
521 unsigned int max_live_size_;
522 unsigned int update_cpt_;
534 std::string option =
"");
535 virtual void main ();
536 virtual bool check();
537 virtual bool has_counterexample();
538 virtual std::string csv();
539 virtual std::chrono::milliseconds::rep get_elapsed_time();
540 virtual int nb_inserted();
544 std::chrono::time_point<std::chrono::system_clock>
start;
545 std::chrono::time_point<std::chrono::system_clock>
end;
555 std::string option =
"");
556 virtual void main ();
557 virtual bool check();
558 virtual bool has_counterexample();
559 virtual std::string csv();
560 virtual std::chrono::milliseconds::rep get_elapsed_time();
561 virtual int nb_inserted();
565 std::chrono::time_point<std::chrono::system_clock>
start;
566 std::chrono::time_point<std::chrono::system_clock>
end;
577 std::string option =
"");
578 virtual void main ();
579 virtual bool check();
580 virtual bool has_counterexample();
581 virtual std::string csv();
582 virtual std::chrono::milliseconds::rep get_elapsed_time();
583 virtual int nb_inserted();
587 std::chrono::time_point<std::chrono::system_clock>
start;
588 std::chrono::time_point<std::chrono::system_clock>
end;
599 std::string option =
"");
600 virtual void main ();
601 virtual bool check();
602 virtual bool has_counterexample();
603 virtual std::string csv();
604 virtual std::chrono::milliseconds::rep get_elapsed_time();
605 virtual int nb_inserted();
609 std::chrono::time_point<std::chrono::system_clock>
start;
610 std::chrono::time_point<std::chrono::system_clock>
end;
621 std::string option =
"");
622 virtual void main ();
623 virtual bool check();
624 virtual bool has_counterexample();
625 virtual std::string csv();
626 virtual std::chrono::milliseconds::rep get_elapsed_time();
627 virtual int nb_inserted();
631 std::chrono::time_point<std::chrono::system_clock>
start;
632 std::chrono::time_point<std::chrono::system_clock>
end;
653 FULL_DIJKSTRA_EC = 4,
658 DECOMP_TACAS13_TARJAN = 9,
659 DECOMP_TACAS13_DIJKSTRA = 10,
660 DECOMP_TACAS13_NDFS = 11,
661 DECOMP_TACAS13_UC13 = 12,
662 DECOMP_TACAS13_TUC13 = 13
672 int thread_number = 1,
673 DeadSharePolicy policy = FULL_TARJAN,
674 std::string option =
"");
687 virtual std::string csv();
700 std::vector<spot::concur_ec_stat*>
chk;
704 std::atomic<int> term_iddle_;
710 #endif // SPOT_FASTTGBAALGOS_EC_CONCUREC_DEAD_SHARE_HH
this class acts like a wrapper to the C code of the open_set.
Definition: public.hh:32
bool check()
Launch the emptiness check.
std::chrono::time_point< std::chrono::system_clock > end
start!
Definition: dead_share.hh:92
virtual bool check()
Launch the emptiness check.
virtual void main()
the main procedure
The class that will be used by thread performing a Tarjan SCC.
Definition: dead_share.hh:55
Definition: dead_share.hh:571
bool check()
Launch the emptiness check.
int stop
Stop the world variable.
Definition: dead_share.hh:701
Definition: fasttgba.hh:33
int * stop_
the thread identifier
Definition: dead_share.hh:89
Definition: concur_ec_stat.hh:28
Definition: dead_share.hh:528
virtual ~concur_reachability_ec()
A simple destructor.
int make_cpt_
stop!
Definition: dead_share.hh:589
std::chrono::time_point< std::chrono::system_clock > start
stop the world varibale
Definition: dead_share.hh:544
bool check()
Launch the emptiness check.
sharedhashtable * sht_
The shared Hash Table.
Definition: dead_share.hh:695
virtual void dfs_pop()
Pop states already explored.
std::chrono::time_point< std::chrono::system_clock > start
stop the world varibale
Definition: dead_share.hh:609
weak_ec(instanciator *i, int thread_number, int *stop)
A constuctor.
virtual void fastbacktrack()
Speed up the backtrack when the current state as been already marked dead by another thread...
virtual void main()
the main procedure
This class act as an interface for all classes.
Definition: fasttgba_state.hh:30
Definition: dead_share.hh:241
int * stop_strong_
stop the world varibale
Definition: dead_share.hh:152
concur_opt_tarjan_ec(instanciator *i, spot::uf *uf, int thread_number, int *stop, int *stop_strong, bool swarming, std::string option="-cs")
A constuctor.
Definition: dead_share.hh:168
int tn_
a reference to shared union find
Definition: dead_share.hh:88
instanciator * itor_
The instanciator.
Definition: dead_share.hh:696
virtual bool merge(fasttgba_state *d)
merge multiple states
Definition: dead_share.hh:615
Abstract class for states.
Definition: state.hh:40
virtual bool check()
Launch the emptiness check.
virtual bool check()
Launch the emptiness check.
Definition: unioncheck.hh:111
Wrapper Launch all threads.
Definition: dead_share.hh:642
int make_cpt_
stop!
Definition: dead_share.hh:633
std::chrono::time_point< std::chrono::system_clock > end
start!
Definition: dead_share.hh:566
Definition: unioncheck.hh:36
Compute the SCCs of a TGBA.
Definition: opt_tarjan_scc.hh:40
int make_cpt_
stop!
Definition: dead_share.hh:611
This is the Dijkstra SCC computation algorithm This class also include the optimisation for the live ...
Definition: opt_dijkstra_scc.hh:37
int tn_
The number of threads.
Definition: dead_share.hh:697
bool is_terminal(const fasttgba_state *s)
check wether a state is synchronised with a terminal state of the property automaton ...
int * stop_
the thread identifier
Definition: dead_share.hh:543
Definition: openset.hh:45
spot::openset * os_
The shared Open Set.
Definition: dead_share.hh:694
transform the previous algorithm into an emptiness check. Only refine specific methods ...
Definition: opt_dijkstra_scc.hh:126
DeadSharePolicy policy_
The current policy to use.
Definition: dead_share.hh:698
fake_ec(int thread_number)
A constuctor.
Definition: dead_share.hh:370
concur_opt_dijkstra_ec(instanciator *i, spot::uf *uf, int thread_number, int *stop, int *stop_strong, bool swarming, std::string option="-cs")
A constuctor.
Definition: dead_share.hh:209
DeadSharePolicy
The walk policy to be used by threads.
Definition: dead_share.hh:647
virtual void main()
the main procedure
virtual bool dfs_update(fasttgba_state *s)
the update for backedges
virtual color get_color(const fasttgba_state *state)
Storage for counterexample found or not.
A simple wrapper for an automaton.
Definition: ec.hh:40
virtual bool merge(fasttgba_state *d)
The update for backedges.
The class that will be used by thread performing a Dijkstra SCC.
Definition: dead_share.hh:105
An emptiness based on the dijkstra parallel computation algorithm above.
Definition: dead_share.hh:205
std::vector< spot::concur_ec_stat * > chk
Local data for each threads.
Definition: dead_share.hh:700
int * stop_
the thread identifier
Definition: dead_share.hh:630
std::chrono::time_point< std::chrono::system_clock > start
stop strong variable
Definition: dead_share.hh:153
virtual ~weak_ec()
A simple destructor.
virtual void fastbacktrack()
Speed up the backtrack when the current state as been already marked dead by another thread...
virtual void dfs_pop()
Pop states already explored.
Definition: dead_share.hh:549
std::string extra_info_csv()
Get extra informations.
virtual void dfs_pop()
Pop states already explored.
virtual void dfs_push(fasttgba_state *q)
Push a new state to explore.
Iterate over the successors of a state.
Definition: fasttgba_succ_iterator.hh:35
int * stop_
the thread identifier
Definition: dead_share.hh:608
virtual void main()
the main procedure
virtual std::string csv()
Display the csv of for this thread.
bool check()
Launch the emptiness check.
Definition: fasttgba_state.hh:76
Compute the SCCs of a TGBA.
Definition: opt_ndfs.hh:40
std::chrono::time_point< std::chrono::system_clock > end
start!
Definition: dead_share.hh:632
Definition: dead_share.hh:468
virtual ~reachability_ec()
A simple destructor.
int make_cpt_
stop!
Definition: dead_share.hh:93
std::chrono::time_point< std::chrono::system_clock > start
stop the world varibale
Definition: dead_share.hh:565
std::chrono::time_point< std::chrono::system_clock > end
start!
Definition: dead_share.hh:588
int make_cpt_
stop!
Definition: dead_share.hh:567
std::chrono::time_point< std::chrono::system_clock > start
stop the world varibale
Definition: dead_share.hh:587
std::chrono::time_point< std::chrono::system_clock > end
start!
Definition: dead_share.hh:610
virtual void main()
the main procedure
spot::uf * uf_
The shared Union Find.
Definition: dead_share.hh:693
reachability_ec(instanciator *i, int thread_number, int *stop)
A constuctor.
An emptiness based on the tarjan parallel computation algorithm above.
Definition: dead_share.hh:164
This class represent a dead store. For now it's just a set but it can be combined with bitstate hasin...
Definition: deadstore.hh:41
std::chrono::time_point< std::chrono::system_clock > start
stop strong varibale
Definition: dead_share.hh:91
int * stop_
the thread identifier
Definition: dead_share.hh:564
int * stop_strong_
stop the world varibale
Definition: dead_share.hh:90
Definition: dead_share.hh:409
virtual void dfs_push(fasttgba_state *q)
Push a new state to explore.
color
The color for a new State.
Definition: opt_dijkstra_scc.hh:72
virtual void main()
the main procedure
virtual bool check()
Launch the emptiness check.
Definition: sharedhashtable.hh:45
virtual bool check()
Launch the emptiness check.
std::string option_
option to pass to ec.
Definition: dead_share.hh:706
virtual bool check()
Launch the emptiness check.
virtual std::string csv()
Display the csv of for this thread.
bool is_terminal(const fasttgba_state *)
check wether a state is synchronised with a terminal state of the property automaton ...
Definition: fasttgba_state.hh:88
virtual void main()
the main procedure
virtual bool dfs_update(fasttgba_state *s)
the update for backedges
int tn_
a reference to shared union find
Definition: dead_share.hh:150
std::chrono::milliseconds::rep max_diff
Elapse time between 2 stops.
Definition: dead_share.hh:699
concur_reachability_ec(instanciator *i, spot::openset *os, int thread_number, int total_threads, int *stop, int *stop_terminal, std::atomic< int > &giddle, std::string option="")
A constuctor.
int stop_weak
Stop terminal variable.
Definition: dead_share.hh:703
virtual ~concur_weak_ec()
A simple destructor.
virtual color get_color(const fasttgba_state *state)
Access the color of a state.
color
The color for a new State.
Definition: opt_tarjan_scc.hh:82
std::chrono::time_point< std::chrono::system_clock > start
stop the world varibale
Definition: dead_share.hh:631
std::chrono::time_point< std::chrono::system_clock > end
start!
Definition: dead_share.hh:545
virtual bool check()
Launch the emptiness check.
int make_cpt_
stop!
Definition: dead_share.hh:546
Definition: dead_share.hh:366
int * stop_
the thread identifier
Definition: dead_share.hh:586
Definition: dead_share.hh:301
int stop_terminal
Stop terminal variable.
Definition: dead_share.hh:702
concur_weak_ec(instanciator *i, spot::sharedhashtable *sht, int thread_number, int *stop, int *stop_weak, std::string option="")
A constuctor.
virtual bool check()
Launch the emptiness check.
Definition: dead_share.hh:397
This class is the implementation of the tarjan-based emptiness check. It onlys needs to refine two me...
Definition: opt_tarjan_scc.hh:137
int stop_strong
Stop strong variable.
Definition: dead_share.hh:705
Definition: dead_share.hh:593