Documentation

Complexitylib.Circuits.BinaryComparison.Internal

Little-endian binary comparison -- proof internals #

theorem Complexity.BoolFormula.eval_ofBool_internal (value : Bool) (assignment : Bool) :
eval assignment (ofBool value) = value
theorem Complexity.BoolFormula.eval_unsignedLEOf_internal {width : } (left right : Fin widthBoolFormula) (assignment : Bool) :
eval assignment (unsignedLEOf left right) = BitString.unsignedLE (fun (i : Fin width) => eval assignment (left i)) fun (i : Fin width) => eval assignment (right i)
theorem Complexity.BoolFormula.size_unsignedLEOf_internal {width : } (left right : Fin widthBoolFormula) :
(∀ (i : Fin width), (left i).size = 1)(∀ (i : Fin width), (right i).size = 1)(unsignedLEOf left right).size = 15 * width + 1
theorem Complexity.BoolFormula.vars_unsignedLEOf_lt_internal {width : } (left right : Fin widthBoolFormula) (available : ) :
(∀ (i : Fin width), j(left i).vars, j < available)(∀ (i : Fin width), j(right i).vars, j < available)j(unsignedLEOf left right).vars, j < available
theorem Complexity.BoolFormula.eval_unsignedLELeftConstant_internal {width : } (left : BitString width) (rightBase : ) (assignment : Bool) :
eval assignment (unsignedLELeftConstant left rightBase) = decide (left.unsignedValue BitString.unsignedValue fun (i : Fin width) => assignment (rightBase + i))
theorem Complexity.BoolFormula.eval_unsignedLERightConstant_internal {width : } (leftBase : ) (right : BitString width) (assignment : Bool) :
eval assignment (unsignedLERightConstant leftBase right) = decide ((BitString.unsignedValue fun (i : Fin width) => assignment (leftBase + i)) right.unsignedValue)
theorem Complexity.BoolFormula.size_unsignedLELeftConstant_internal {width : } (left : BitString width) (rightBase : ) :
(unsignedLELeftConstant left rightBase).size = 15 * width + 1
theorem Complexity.BoolFormula.size_unsignedLERightConstant_internal {width : } (leftBase : ) (right : BitString width) :
(unsignedLERightConstant leftBase right).size = 15 * width + 1
theorem Complexity.BoolFormula.vars_unsignedLELeftConstant_lt_internal {width : } (left : BitString width) (rightBase available : ) (hright : rightBase + width available) (j : ) :
j (unsignedLELeftConstant left rightBase).varsj < available
theorem Complexity.BoolFormula.vars_unsignedLERightConstant_lt_internal {width : } (leftBase : ) (right : BitString width) (available : ) (hleft : leftBase + width available) (j : ) :
j (unsignedLERightConstant leftBase right).varsj < available
theorem Complexity.BoolFormula.size_unsignedLEAux_internal (width leftBase rightBase : ) :
(unsignedLEAux width leftBase rightBase).size = 15 * width + 1
theorem Complexity.BoolFormula.eval_unsignedLEAux_internal (width leftBase rightBase : ) (assignment : Bool) (left right : BitString width) (hleft : ∀ (i : Fin width), assignment (leftBase + i) = left i) (hright : ∀ (i : Fin width), assignment (rightBase + i) = right i) :
eval assignment (unsignedLEAux width leftBase rightBase) = left.unsignedLE right
theorem Complexity.BoolFormula.vars_unsignedLEAux_lt_internal (width leftBase rightBase available : ) (hleft : leftBase + width available) (hright : rightBase + width available) (i : ) :
i (unsignedLEAux width leftBase rightBase).varsi < available
theorem Complexity.BoolFormula.vars_unsignedLE_lt_internal (width i : ) :
i (unsignedLE width).varsi < width + width