The lawful operator framework provides free theorems around the typeclass LawfulOperator.
Its definition is based on section 3.3 of the AIGNET paper.
decls1 is a prefix of decls2
- of :: (
The prefix may never be longer than the other array.
The prefix and the other array must agree on all elements up until the bound of the prefix
- )
Instances For
If decls1 is a prefix of decls2 and we start evaluating decls2 at an
index in bounds of decls1 we can evaluate at decls1.
If decls1 is a prefix of decls2 and we start evaluating decls2 at an
index in bounds of decls1 we can evaluate at decls1.
Equations
Instances For
A function f that takes some aig : AIG α and an argument of type β aig is called a lawful
AIG operator if it only extends the AIG but never modifies already existing nodes.
This guarantees that applying such a function will not change the semantics of any existing parts of the circuit, allowing us to perform local reasoning on the AIG.