---
name: "ablToBddCct"
section: "3"
platform: "linux"
package: "alliance"
version: "5.1.1-3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/ablToBddCct"
---

# ablToBddCct(3)

converts an ABL into a BDD within a circuit

## NAME

**ablToBddCct** - converts an ABL into a BDD within a circuit

## SYNOPSYS

```
#include "logmmm.h"
pNode ablToBddCct(pC,expr)
pCircuit pC;
chain_list *expr;
```

## PARAMETERS

- *pC*

  Circuit in which is made the conversion

- *expr*

  expression to convert

## DESCRIPTION

**ablToBddCct()** constructs the graph that is computed from *expr*. This function provides the basic method for constructing easily the BDDs. The **applyBdd()** function is called recursively by going through the ABL.

## EXAMPLE

```
#include "mutnnn.h"		/* mbk utilities */
#include "logmmm.h"
chain_list *expr;
pNode res;
pCircuit pC;
initializeBdd(SMALL_BDD);
pC = initializeCct("circuit 1",10,10);
addInputCct(pC,"a");
addInputCct(pC,"b");
	/* let's suppose that expr = (OR (AND (NOT a) b) a) */
res = ablToBddCct(pC,expr);
displayBdd(res,1);
/* it will display
@res      INDEX = 3   LOW = @nodeA   HIGH = ONE
@nodeA    INDEX = 2   LOW = ZERO     HIGH = ONE
*/
destroyCct(pC);
destroyBdd(1);
```

## SEE ALSO

[**log**(1)](/log/1.md), [**bdd**(1)](/bdd/1.md), [**abl**(1)](/abl/1.md), [**bddToAblCct**(3)](/bddToAblCct/3.md).
