Power-of-two padding with unary output #
The inner PCP dimension must itself be a power of two. ceilPower is the least
power of two at least its input, with value one at zero. ceilPowerProg produces
that many unary slots in polynomial time in the number of input slots. Its loop
explicitly caps intermediate vectors, rather than assuming that unrestricted
unary exponentiation has polynomial cost.
Equations
- MIPRE.SAT.growStep s x✝ = (s.1, List.take (List.length s.1) (s.2 ++ s.2))
Instances For
theorem
MIPRE.SAT.grow_bound
(fuel : Cost.BitStr)
(cap acc : Cost.Unary)
:
(List.foldl growStep (cap, acc) fuel).1 = cap ∧ List.length (List.foldl growStep (cap, acc) fuel).2 ≤ max (List.length cap) (List.length acc)
theorem
MIPRE.SAT.grow_length
(fuel : Cost.BitStr)
(cap acc : Cost.Unary)
(ha : List.length acc ≤ List.length cap)
:
List.length (List.foldl growStep (cap, acc) fuel).2 = min (List.length cap) (2 ^ List.length fuel * List.length acc)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Uniform power-of-two padding, with polynomial cost in the supplied unary length.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]