CBMC
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
example.cpp
Go to the documentation of this file.
1/*******************************************************************\
2
3Module: A minimalistic BDD library, following Bryant's original paper
4 and Andersen's lecture notes
5
6Author: Daniel Kroening, kroening@kroening.com
7
8\*******************************************************************/
9
13
14#include "miniBDD.h"
15
16#include <iostream>
17
18int main()
19{
20 mini_bdd_mgrt mgr;
21 mini_bddt result;
22
23#if 0
24 {
25 auto x=mgr.Var("x");
26 auto y=mgr.Var("y");
27 auto z=mgr.Var("z");
28 result=x | (y &z);
29 }
30#elif 0
31 {
32 auto y = mgr.Var("y");
33 auto x = mgr.Var("x");
34 auto z = mgr.Var("z");
35 result = x | (y & z);
36 }
37#elif 0
38 {
39 auto x1 = mgr.Var("x_1");
40 auto x2 = mgr.Var("x_2");
41 auto x3 = mgr.Var("x_3");
42 auto x4 = mgr.Var("x_4");
43 result = (x1 & x2) | (x3 & x4);
44 }
45#elif 0
46 {
47 auto x1 = mgr.Var("x_1");
48 auto x2 = mgr.Var("x_2");
49 auto x3 = mgr.Var("x_3");
50 auto x4 = mgr.Var("x_4");
51 auto tmp = (x1 & x2) | (x3 & x4);
52 result = restrict(tmp, x2.var(), 0);
53 }
54#else
55 {
56 auto a = mgr.Var("a");
57 auto b = mgr.Var("b");
58 auto f = (!a) | b;
59 auto fp = !b;
60 result = f == fp;
61 }
62#endif
63
64 mgr.DumpTikZ(std::cout);
65}
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Definition ai.h:562
mini_bddt Var(const std::string &label)
Definition miniBDD.cpp:37
void DumpTikZ(std::ostream &out, bool supress_zero=false, bool node_numbers=true) const
Definition miniBDD.cpp:107
int main()
Definition example.cpp:18
mini_bddt restrict(const mini_bddt &u, unsigned var, const bool value)
Definition miniBDD.cpp:551
A minimalistic BDD library, following Bryant's original paper and Andersen's lecture notes.