Coder Social home page Coder Social logo

xlchan / aadd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tukcps/aadd

0.0 1.0 0.0 383 KB

This repository holds the Affine Arithmetic Decision Diagrams library

Home Page: http://cps.cs.uni-kl.de/AADD

License: Other

CMake 1.87% C 1.69% C++ 96.44%

aadd's Introduction

Affine Arithmetic Decition Diagrams (AADD)

This software provides a C++ library for the creation and manipulation of affine arithmetic decision diagrams (AADD). This permits in particular the abstract symbolic interpretation of C++. It can also be used for symbolic simulation of SystemC or SystemC AMS/TLM models which requires in addition installation of the SystemC library.

Usage

Using AADD is as simple as:

	#include "aadd.h"
	doubleS a;  // also: AADD a; 
	boolS b;    // or: BDD b; 
        
	int main()

  	{
    	  a = doubleS(0,100); // a takes double value from range [0,100]
	  ifS(a > 1)          // symbolic cond. and iteration statements
	    a = a + 2;
          elseS
	    a = a - 2;
	  endS;
	  
	  b = (a>0);        // b is now a (RO)BDD. 
	  
	  cout << "a is: " << a << " b is: " << b << endl;
	}

After execution of this program, a is a decision diagram that represent all possible results, assuming that a was initially from the range [0,100]: The condition at the root node is (a>1), and the leaf nodes have the ranges [-2,98] and [2,102], depending on the condition. Ranges are represented and computed by affine forms to yield scalability. Note that by considering the condition, these ranges can be further reduced significantly to [-2,-1] and [3,102]. This is done by GLPK that improves accuracy of the affine forms, while maintaining scalability.

Installation

For installation, do the following steps:

  1. We assume you have a UNIX style system, e.g. OSX or Linux.

  2. Install GLPK e.g. into /usr/local. Get GLPK e.g. from https://www.gnu.org/software/glpk/

  3. Set an environment variable GLPKLIB to this directory

	> export GLPKLIB=PathToInstallationDirectory (e.g. /usr/local)
  1. make a directory build in the top level directory
	> mkdir build
  1. Go to the directory build
	> cd build
  1. Build it
        > cmake .. 
	> make 
        > make doc

In case you want to install the package in another place than the default directory (/usr/local) add installation path to cmake command:

	> cmake -DCMAKE_INSTALL_PREFIX=PathToInstallationDirectory   .. 

The build will also create some (still very incomplete) regression tests. To run them, do:

        > ctest

If all tests are ok, proceed to 6. Else, send an email to the authors.

  1. Install it
	> make install

In case of problems or other feedback contact:

Carna Zivkovic
Chair of Design of Cyber-Physical Systems
TU Kaiserslautern
Postfach 3049
67653 Kaiserslautern
[email protected]
https://cps.cs.uni-kl.de/mitarbeiter/carna-radojicic-msc/

Christoph Grimm
Chair of Design of Cyber-Physical Systems
TU Kaiserslautern
Postfach 3049
67653 Kaiserslautern
[email protected]

aadd's People

Contributors

christoph-grimm avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.