pev_3_verfair.cpp
Go to the documentation of this file.
1 // @file pev_3_verfair.cpp verification with fairness constraints
2 
3 // 1) generate models via "pev_cbs_setup.lua"
4 // 2) run this executable
5 
6 
7 #include "libfaudes.h"
8 
9 using namespace faudes;
10 
11 
12 int main(int argc, char* argv[]) {
13 
14 
15  // read number of conveyor belts from command line
16  // (defaults to 5, needs to match models prepared by pev_cbs_setup.lua)
17  int count=0;
18  if(argc==2) count=atoi(argv[1]);
19  if(count==0) count=5;
20  std::cout<<"configured for "<<count<<" conveyor belts" << std::endl;
21 
22  // prepare results
23  ConsoleOut::G()->Verb(1);
24  GeneratorVector gvoi;
25  gvoi.Clear();
26  EventPriorities prios;
27  std::vector<FairnessConstraints> fairvec;
28  FairnessConstraints faircons;
29  EventSet fair;
30 
31  // read models
32  gvoi.Append(Generator("tmp_pev_cbs_src.gen"));
33  for(int i = 1;i<=count;i++){
34  gvoi.Append(Generator("tmp_pev_cbs_"+ToStringInteger(i)+"_cl.gen"));
35  }
36  gvoi.Append(Generator("tmp_pev_cbs_snk.gen"));
37 
38  // read priorities
39  prios.Read("tmp_pev_cbs_prios.alph");
40 
41  // construct fairness constraints
42  for (int i = 0; i<=count+1; i++){
43  faircons.Clear();
44  fair.Clear();
45  fair.Insert("ar_"+ToStringInteger(i));
46  faircons.Append(fair);
47  fairvec.push_back(faircons);
48  }
49 
50  // do compositional verification
51  std::cout<<"starting compositional verification" << std::endl;
52  auto start = std::clock();
53  bool isnc = IsPFNonblocking(gvoi,prios,fairvec);
54  std::cout<<"duration in seconds: "<<ToStringFloat((std::clock()-start)/(double) CLOCKS_PER_SEC)<<std::endl;
55  if(isnc)
56  std::cout<<"p-nonconflicting test passed"<<std::endl;
57  else
58  std::cout<<"p-nonconflicting test failed"<<std::endl;
59 
60  // record test case
61  FAUDES_TEST_DUMP("prio comp ver",isnc);
62 
63  // done
64  return 0;
65 
66 }
#define FAUDES_TEST_DUMP(mes, dat)
Definition: cfl_utils.h:485
static ConsoleOut * G(void)
Definition: cfl_utils.cpp:431
void Verb(int verb)
Definition: cfl_utils.h:342
bool Insert(const Idx &rIndex)
virtual void Append(const Type &rElem)
virtual void Clear(void)
virtual void Clear(void)
Definition: cfl_baseset.h:1919
vGenerator Generator
bool IsPFNonblocking(const GeneratorVector &rGvec, const EventPriorities &rPrios, const std::vector< FairnessConstraints > &rFairVec)
std::string ToStringFloat(Float number)
Definition: cfl_utils.cpp:64
std::string ToStringInteger(Int number)
Definition: cfl_utils.cpp:43
int main(int argc, char *argv[])

libFAUDES 2.33b --- 2025.05.07 --- c++ api documentaion by doxygen