The formula builders as programs #
Every builder of FmlLib.lean as a polynomial-time function of the ambient model, with its
toFun the builder itself. Nothing here reasons about post-order lists: the encoding of a
formula is the encoding of its post-order list (SizedEncoding Fml), so the constructors
are appends (andF, orF, notF of Formula.lean) and each builder is a foldl over a
list, whose Cobham condition is the additivity of esize under the constructors
(esize_and_fml and friends) (planning/succinct-cook-levin.md, S3).
The size of a constructed formula #
Folding with a constructor #
Fml.andList.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.orList.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equality and comparison with a constant #
Fml.eqStep.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The step of eqConst grows the accumulator by at most the size of the pair plus 20.
Fml.eqConst.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Sizes of the derived builders #
The derived combinators #
Fml.xnor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.xor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.mux.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.sum3.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.maj3.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Comparison with a constant #
Fml.ltStep.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.ltConst.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Comparison of two fields #
Fml.eqFStep.
Equations
Instances For
Fml.eqFields.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.ltFStep.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.ltFields.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constant and input vectors #
Fml.constBits.
Equations
Instances For
The vector of input formulas #
List.range', the length in unary.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.field, the width in unary.
Equations
- MIPRE.SAT.fieldP = (MIPRE.SAT.Fml.inpF.map.comp MIPRE.SAT.range'P).congr (fun (p : ℕ × MIPRE.Cost.Unary) => MIPRE.SAT.Fml.field p.1 (List.length p.2)) MIPRE.SAT.fieldP._proof_1
Instances For
The adder #
The carry out of the adder grows linearly in the width.
Every sum bit of the adder is bounded by the carry bound.
Fml.addBits.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.addConstBits.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.addConstCarry.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.addConstRel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Padding #
padBits, the width in unary.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The two's complement #
The successor on bit strings.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Negation on booleans.
Equations
Instances For
twosComp.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fml.subConstBits.
Equations
- One or more equations did not get rendered due to their size.