Header menu logo F# Header menu logo Averest

CircuitGate Type

This type provides basic gates for implementing circuits of finite type Quartz expressions. For the encoding of NatExpr and IntExpr, we use radix-2 and 2-complement numbers which are represented by lists of boolean variables [b[0],...,b[n-1]] where b[0] is the least significant bit. We also have word-level gates that obtain bitvectors with the same type. The outputs of these gates are generated by their abbreviation in the circuit map which associates each gate with a BoolExpr list which are its outputs. In particular, we have:

  • NOT(b) = [!b]
  • AND(b1,b2) = [b1∧b2]
  • XOR(b1,b2) = [b1⊕b2]
  • OR(b1,b2) = [b1∨b2]
  • HA(b1,b2) = [b1⊕b2;b1∧b2]
  • FA(b1,b2,cIn) = [b1⊕b2⊕cIn;b1∧b2∨cIn∧(b1⊕b2)]
  • PG(g1,p1,g2,p2) = [g2∨(p2∧g1);p2∧p1]
  • BvNOT(bv) = [!bv[0]..!bv[n-1]]
  • BvAND(bv1,bv2) = [b1[0]∧b2[0]..b1[n-1]∧b2[n-1]]
  • BvXOR(bv1,bv2) = [b1[0]⊕b2[0]..b1[n-1]⊕b2[n-1]]
  • BvOR(bv1,bv2) = [b1[0]∨b2[0]..b1[n-1]∨b2[n-1]]
  • bv2nat(BvHA(bv1,bv2)) = bv2nat(bv1)+bv2nat(bv2)
  • bv2nat(BvFA(bv1,bv2,cIn)) = bv2nat(bv1)+bv2nat(bv2)+bv2nat(cIn)
  • MX(c,bv0,bv1) = [(c?bv1[0]:bv0[0]);...;(c?bv1[n-1]:bv0[n-1]);]
  • SW(c,bv0,bv1) = [(c?bv1[0]:bv0[0]);...;(c?bv1[n-1]:bv0[n-1]); (c?bv0[0]:bv1[0]);...;(c?bv0[n-1]:bv1[n-1])]

Union cases

Union case Description

AND(BoolExpr, BoolExpr)

Full Usage: AND(BoolExpr, BoolExpr)

Parameters:
Item1 : BoolExpr
Item2 : BoolExpr

BvAND(BoolExpr list, BoolExpr list)

Full Usage: BvAND(BoolExpr list, BoolExpr list)

Parameters:
Item1 : BoolExpr list
Item2 : BoolExpr list

BvFA(BoolExpr list, BoolExpr list, BoolExpr)

Full Usage: BvFA(BoolExpr list, BoolExpr list, BoolExpr)

Parameters:
Item1 : BoolExpr list
Item2 : BoolExpr list
Item3 : BoolExpr

BvHA(BoolExpr list, BoolExpr list)

Full Usage: BvHA(BoolExpr list, BoolExpr list)

Parameters:
Item1 : BoolExpr list
Item2 : BoolExpr list

BvNOT BoolExpr list

Full Usage: BvNOT BoolExpr list

Parameters:
Item : BoolExpr list

BvOR(BoolExpr list, BoolExpr list)

Full Usage: BvOR(BoolExpr list, BoolExpr list)

Parameters:
Item1 : BoolExpr list
Item2 : BoolExpr list

BvXOR(BoolExpr list, BoolExpr list)

Full Usage: BvXOR(BoolExpr list, BoolExpr list)

Parameters:
Item1 : BoolExpr list
Item2 : BoolExpr list

FA(BoolExpr, BoolExpr, BoolExpr)

Full Usage: FA(BoolExpr, BoolExpr, BoolExpr)

Parameters:
Item1 : BoolExpr
Item2 : BoolExpr
Item3 : BoolExpr

HA(BoolExpr, BoolExpr)

Full Usage: HA(BoolExpr, BoolExpr)

Parameters:
Item1 : BoolExpr
Item2 : BoolExpr

MX(BoolExpr, BoolExpr list, BoolExpr list)

Full Usage: MX(BoolExpr, BoolExpr list, BoolExpr list)

Parameters:
Item1 : BoolExpr
Item2 : BoolExpr list
Item3 : BoolExpr list

NOT BoolExpr

Full Usage: NOT BoolExpr

Parameters:
Item : BoolExpr

OR(BoolExpr, BoolExpr)

Full Usage: OR(BoolExpr, BoolExpr)

Parameters:
Item1 : BoolExpr
Item2 : BoolExpr

PG(BoolExpr, BoolExpr, BoolExpr, BoolExpr)

Full Usage: PG(BoolExpr, BoolExpr, BoolExpr, BoolExpr)

Parameters:
Item1 : BoolExpr
Item2 : BoolExpr
Item3 : BoolExpr
Item4 : BoolExpr

SW(BoolExpr, BoolExpr list, BoolExpr list)

Full Usage: SW(BoolExpr, BoolExpr list, BoolExpr list)

Parameters:
Item1 : BoolExpr
Item2 : BoolExpr list
Item3 : BoolExpr list

XOR(BoolExpr, BoolExpr)

Full Usage: XOR(BoolExpr, BoolExpr)

Parameters:
Item1 : BoolExpr
Item2 : BoolExpr

Instance members

Instance member Description

this.IsAND

Full Usage: this.IsAND

Returns: bool
Returns: bool

this.IsBvAND

Full Usage: this.IsBvAND

Returns: bool
Returns: bool

this.IsBvFA

Full Usage: this.IsBvFA

Returns: bool
Returns: bool

this.IsBvHA

Full Usage: this.IsBvHA

Returns: bool
Returns: bool

this.IsBvNOT

Full Usage: this.IsBvNOT

Returns: bool
Returns: bool

this.IsBvOR

Full Usage: this.IsBvOR

Returns: bool
Returns: bool

this.IsBvXOR

Full Usage: this.IsBvXOR

Returns: bool
Returns: bool

this.IsFA

Full Usage: this.IsFA

Returns: bool
Returns: bool

this.IsHA

Full Usage: this.IsHA

Returns: bool
Returns: bool

this.IsMX

Full Usage: this.IsMX

Returns: bool
Returns: bool

this.IsNOT

Full Usage: this.IsNOT

Returns: bool
Returns: bool

this.IsOR

Full Usage: this.IsOR

Returns: bool
Returns: bool

this.IsPG

Full Usage: this.IsPG

Returns: bool
Returns: bool

this.IsSW

Full Usage: this.IsSW

Returns: bool
Returns: bool

this.IsXOR

Full Usage: this.IsXOR

Returns: bool
Returns: bool

Type something to start searching.