pev_2_verify.cpp
Go to the documentation of this file.
1// @file pev_3_verify.cpp verification with std synchronous marking
2
3// 1) generate models via "pev_cbs_setup.lua"
4// 2) run this executable
5
6
7#include "libfaudes.h"
8
9using namespace faudes;
10
11
12
13// main
14int main(int argc, char* argv[]) {
15
16 // read number of conveyor belts from command line
17 // (defaults to 5, needs to match models prepared by pev_cbs_setup.lua)
18 int count=0;
19 if(argc==2) count=atoi(argv[1]);
20 if(count==0) count=5;
21 std::cout<<"configured for "<<count<<" conveyor belts" << std::endl;
22
23 // prepare result
24 ConsoleOut::G()->Verb(1);
25 GeneratorVector gvoi;
26 gvoi.Clear();
27 EventPriorities prios;
28
29 // read models
30 gvoi.Append(Generator("tmp_pev_cbs_src.gen"));
31 for(int i = 1;i<=count;i++){
32 gvoi.Append(Generator("tmp_pev_cbs_"+ToStringInteger(i)+"_cl.gen"));
33 }
34 gvoi.Append(Generator("tmp_pev_cbs_snk.gen"));
35
36 // read priorities
37 prios.Read("tmp_pev_cbs_prios.alph");
38
39 // do compositional verification
40 std::cout<<"starting compositional verification" << std::endl;
41 auto start = std::clock();
42 bool isnc = IsPNonblocking(gvoi,prios);
43 std::cout<<"duration in seconds: "<<ToStringFloat((std::clock()-start)/(double) CLOCKS_PER_SEC)<<std::endl;
44 if(isnc)
45 std::cout<<"p-nonconflicting test passed"<<std::endl;
46 else
47 std::cout<<"p-nonconflicting test failed"<<std::endl;
48
49 // do monolitic verification
50 if(count<6) {
51 std::cout<<"starting monolitic verification" << std::endl;
52 start = std::clock();
53 Generator gall;
54 gall.StateNamesEnabled(false);
55 ParallelLive(gvoi,gall);
56 ShapePriorities(gall,prios);
57 isnc = IsNonblocking(gall);
58 std::cout<<"duration in seconds: "<<ToStringFloat((std::clock()-start)/(double) CLOCKS_PER_SEC)<<std::endl;
59 if(isnc)
60 std::cout<<"p-nonconflicting test passed"<<std::endl;
61 else
62 std::cout<<"p-nonconflicting test failed"<<std::endl;
63 }
64
65 return 0;
66
67
68}
int main()
static ConsoleOut * G(void)
void Verb(int verb)
Definition cfl_utils.h:357
virtual void Append(const Type &rElem)
virtual void Clear(void)
bool StateNamesEnabled(void) const
vGenerator Generator
void ShapePriorities(vGenerator &rGen, const EventPriorities &rPrios)
bool IsPNonblocking(const GeneratorVector &rGvec, const EventPriorities &rPrios)
bool IsNonblocking(const GeneratorVector &rGvec)
std::string ToStringFloat(Float number)
Definition cfl_utils.cpp:64
void ParallelLive(const GeneratorVector &rGenVec, Generator &rResGen)
std::string ToStringInteger(Int number)
Definition cfl_utils.cpp:43

libFAUDES 2.33k --- 2025.09.16 --- c++ api documentaion by doxygen