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
9using namespace faudes;
10
11
12int 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}
int main()
#define FAUDES_TEST_DUMP(mes, dat)
Definition cfl_utils.h:505
static ConsoleOut * G(void)
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)
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

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