• Top
    • Documentation
    • Books
    • Boolean-reasoning
      • Ipasir
      • Aignet
        • Base-api
        • Aignet-construction
        • Representation
        • Aignet-copy-init
        • Aignet-simplify-with-tracking
        • Aignet-simplify-marked-with-tracking
        • Aignet-cnf
        • Aignet-simplify-marked
        • Aignet-complete-copy
        • Aignet-transforms
          • Aignet-output-ranges
          • Aignet-comb-transforms
          • Aignet-m-assumption-n-output-transforms
          • Aignet-n-output-comb-transforms
        • Aignet-eval
        • Semantics
        • Aignet-read-aiger
        • Aignet-write-aiger
        • Aignet-abc-interface
        • Utilities
      • Aig
      • Satlink
      • Truth
      • Ubdds
      • Bdd
      • Faig
      • Bed
      • 4v
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Aignet

Aignet-transforms

Various types of transforms preserving different properties of the AIG

The following kinds of transforms are defined:

  • aignet-comb-transforms: Combinational equivalence-preserving transforms
  • aignet-n-output-comb-transforms: Transforms that preserve combinational equivalence only on the first n outputs, for a given n
  • aignet-m-assumption-n-output-transforms: Transforms that preserve combinational equivalence of the first m outputs, and preserve combinational equivalence of the following n outputs assuming the truth of the first m outputs, for given m and n.

Each of these transform types has a constrained function, apply-<name>-transform, which takes a source AIG aignet, a destination AIG aignet2, a configuration object, and the ACL2 state and returns a modified destination AIG and state. The constraints on these define the contracts of each transform type. Using this stub function, we also define apply-<name>-transform! which uses swap-stobjs to overwrite the source AIG with the result instead of dealing with a second destination AIG. The properties defining these transforms are all transitive, so for each type we also define functions apply-<name>-transforms and apply-<name>-transforms! which apply a sequence of transforms specified by a list of configuration objects.

Each of the transform types has an implementation of its constrained apply function defined in centaur/aignet/transforms.lisp and attached to the apply function when that book is included.

Subtopics

Aignet-output-ranges
Summary of a system to specify the treatments of different primary outputs by AIG transformations
Aignet-comb-transforms
Aignet transforms that simplify the network while preserving combinational equivalence
Aignet-m-assumption-n-output-transforms
Aignet transforms that simplify the network while preserving combinational equivalence of the first M primary outputs and combinational equivalence when assuming the first M primary outputs true on the next N primary outputs.
Aignet-n-output-comb-transforms
Aignet transforms that simplify the network while preserving combinational equivalence of the first N primary outputs.