Little-endian binary comparison -- proof internals #
theorem
Complexity.BitString.unsignedLE_eq_decide_internal
{width : ℕ}
(left right : BitString width)
:
theorem
Complexity.BoolFormula.eval_unsignedLEOf_internal
{width : ℕ}
(left right : Fin width → BoolFormula)
(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.vars_unsignedLEOf_lt_internal
{width : ℕ}
(left right : Fin width → BoolFormula)
(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 : ℕ)
:
theorem
Complexity.BoolFormula.size_unsignedLERightConstant_internal
{width : ℕ}
(leftBase : ℕ)
(right : BitString width)
:
theorem
Complexity.BoolFormula.eval_unsignedLE_internal
(width : ℕ)
(left right : BitString width)
:
eval (BitString.toTotal (Fin.append left right)) (unsignedLE width) = decide (left.unsignedValue ≤ right.unsignedValue)
theorem
Complexity.BoolFormula.vars_unsignedLE_lt_internal
(width i : ℕ)
:
i ∈ (unsignedLE width).vars → i < width + width
theorem
Complexity.CircuitCode.unsignedLERawCircuit_wellFormed_internal
(width : ℕ)
[NeZero width]
:
RawCircuit.WellFormed (width + width) (unsignedLERawCircuit width)
theorem
Complexity.CircuitCode.eval?_unsignedLERawCircuit_internal
(width : ℕ)
[NeZero width]
(left right : BitString width)
:
(unsignedLERawCircuit width).eval? (BitString.toList (Fin.append left right)) = some (decide (left.unsignedValue ≤ right.unsignedValue))