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);
25  gvoi.Clear();
26  EventPriorities prios;
27  FairnessConstraints faircons;
28  EventSet fair;
29 
30  // read models
31  gvoi.Append(FairGenerator("tmp_pev_cbs_src.gen"));
32  for(int i = 1;i<=count;i++){
33  gvoi.Append(FairGenerator("tmp_pev_cbs_"+ToStringInteger(i)+"_cl.gen"));
34  }
35  gvoi.Append(FairGenerator("tmp_pev_cbs_snk.gen"));
36 
37  // construct fairness constraints
38  for (int i = 0; i<=count+1; i++){
39  faircons.Clear();
40  fair.Clear();
41  fair.Insert("ar_"+ToStringInteger(i));
42  faircons.Append(fair);
43  gvoi.At(i).Fairness(faircons);
44  }
45 
46  // read priorities
47  prios.Read("tmp_pev_cbs_prios.alph");
48 
49  // do compositional verification
50  std::cout<<"starting compositional verification" << std::endl;
51  auto start = std::clock();
52  bool isnc = IsPFNonblocking(gvoi,prios);
53  std::cout<<"duration in seconds: "<<ToStringFloat((std::clock()-start)/(double) CLOCKS_PER_SEC)<<std::endl;
54  if(isnc)
55  std::cout<<"p-nonconflicting test passed"<<std::endl;
56  else
57  std::cout<<"p-nonconflicting test failed"<<std::endl;
58 
59  // record test case
60  FAUDES_TEST_DUMP("prio comp ver",isnc);
61 
62  // done
63  return 0;
64 
65 }
#define FAUDES_TEST_DUMP(mes, dat)
Definition: cfl_utils.h:505
static ConsoleOut * G(void)
Definition: cfl_utils.cpp:456
void Verb(int verb)
Definition: cfl_utils.h:357
bool Insert(const Idx &rIndex)
virtual const T & At(const Position &pos) const
virtual void Append(const Type &rElem)
virtual void Clear(void)
virtual void Clear(void)
Definition: cfl_baseset.h:2104
bool IsPFNonblocking(const FairGeneratorVector &rPGvec, const EventPriorities &rPrios)
std::string ToStringFloat(Float number)
Definition: cfl_utils.cpp:64
TpGenerator< AttributePGenGl, AttributeVoid, AttributePriority, AttributeVoid > FairGenerator
std::string ToStringInteger(Int number)
Definition: cfl_utils.cpp:43
int main(int argc, char *argv[])

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