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

# polarablexpr(3)

moves inverters to the atomic level.

## NAME

polarablexpr - moves inverters to the atomic level.

## SYNOPSYS

```
#include "abl101.h"
chain_list ∗polarablexpr( Expr, Polar )
  chain_list ∗Expr;
  int         Polar;
```

## PARAMETERS

- *Expr*

  Expression to modify.

- *Polar*

  Expression polarity.

## DESCRIPTION

**polarablexpr** modifies *Expr* by moving down the inverters to the atomic level. **polarablexpr** applies the Morgan's laws. If *Polar* is equal to ABL\_POLAR\_NEGATIVE  the function returns the modified expression after having complemented it. The expression pointer *Expr* MUSTN'T be used after the call to this function.

## RETURN VALUE

**polarablexpr** returns the modified expression.

## EXAMPLE

```
#include "abl101.h"
  chain_list ∗Expr1;
  chain_list ∗Expr2;
  Expr1 = createabloper( ABL_NOT );
  Expr2 = createabloper( ABL_NOT );
  addablhexpr( Expr1, createablatom( "a" ) );
  addablhexpr( Expr2, Expr1 );
  Expr1 = polarablexpr( Expr2, ABL_POLAR_POSITIVE );
  /* displays  a */
  viewablexpr( Expr1, ABL_VIEW_VHDL );
```

## SEE ALSO

[**abl**(1)](/abl/1.md)
