This module contains the theory of the cached AIG node creation functions. It is mainly concerned with proving lemmas about the denotational semantics of the gate functions in different scenarios, in particular reductions to the semantics of the non cached versions.
If we find a cached atom declaration in the AIG, denoting it is equivalent to denoting AIG.mkAtom
.
mkAtomCached
does not modify the input AIG upon a cache hit.
mkAtomCached
pushes to the input AIG upon a cache miss.
The AIG produced by AIG.mkAtomCached
agrees with the input AIG on all indices that are valid for
both.
AIG.mkAtomCached
never shrinks the underlying AIG.
Equations
- ⋯ = ⋯
The central equality theorem between mkAtomCached
and mkAtom
.
If we find a cached const declaration in the AIG, denoting it is equivalent to denoting
AIG.mkConst
.
mkConstCached
does not modify the input AIG upon a cache hit.
mkConstCached
pushes to the input AIG upon a cache miss.
The AIG produced by AIG.mkConstCached
agrees with the input AIG on all indices that are valid for
both.
AIG.mkConstCached
never shrinks the underlying AIG.
Equations
- ⋯ = ⋯
The central equality theorem between mkConstCached
and mkConst
.
If we find a cached gate declaration in the AIG, denoting it is equivalent to denoting AIG.mkGate
.
AIG.mkGateCached
never shrinks the underlying AIG.
The AIG produced by AIG.mkGateCached
agrees with the input AIG on all indices that are valid for
both.
Equations
- ⋯ = ⋯
The central equality theorem between mkGateCached
and mkGate
.