Numeric schedules for streaming tableau serialization -- proof internals #
theorem
Complexity.CircuitUnrolling.Serializer.prefixSize_succ_internal
(sizeAt : ℕ → ℕ)
(count : ℕ)
:
theorem
Complexity.CircuitUnrolling.Serializer.prefixSize_eq_sum_range_internal
(sizeAt : ℕ → ℕ)
(count : ℕ)
:
theorem
Complexity.CircuitUnrolling.Serializer.prefixSize_eq_sum_ofFn_internal
(sizeAt : ℕ → ℕ)
(count : ℕ)
:
theorem
Complexity.CircuitUnrolling.Serializer.prefixSize_mono_internal
(sizeAt : ℕ → ℕ)
{first second : ℕ}
(hbound : first ≤ second)
:
theorem
Complexity.CircuitUnrolling.Serializer.reverseMember_lt_internal
{count rank : ℕ}
(hrank : rank < count)
:
theorem
Complexity.CircuitUnrolling.Serializer.reverseMember_add_rank_internal
{count rank : ℕ}
(hrank : rank < count)
:
theorem
Complexity.CircuitUnrolling.Serializer.prefixSize_formulaSizeAt_internal
(formulas : List BoolFormula)
:
prefixSize (fun (index : ℕ) => (List.map BoolFormula.size formulas)[index]?.getD 0) formulas.length = (List.map BoolFormula.size formulas).sum
theorem
Complexity.CircuitUnrolling.Serializer.length_indexedRightFoldConnectors_internal
(op : AndOrOp)
(available count : ℕ)
(sizeAt : ℕ → ℕ)
:
theorem
Complexity.CircuitUnrolling.Serializer.getElem_indexedRightFoldConnectors_internal
(op : AndOrOp)
(available count : ℕ)
(sizeAt : ℕ → ℕ)
(rank : Fin count)
:
(indexedRightFoldConnectors op available count sizeAt)[↑rank] = indexedRightFoldConnector op available count sizeAt ↑rank
theorem
Complexity.CircuitUnrolling.Serializer.length_indexedBatchCopies_internal
(available count : ℕ)
(sizeAt : ℕ → ℕ)
:
theorem
Complexity.CircuitUnrolling.Serializer.getElem_indexedBatchCopies_internal
(available count : ℕ)
(sizeAt : ℕ → ℕ)
(index : Fin count)
:
theorem
Complexity.CircuitUnrolling.Serializer.rightFoldConnectors_eq_indexed_internal
(op : AndOrOp)
(available : ℕ)
(formulas : List BoolFormula)
:
BoolFormula.rightFoldConnectors op available formulas = indexedRightFoldConnectors op available formulas.length fun (index : ℕ) =>
(List.map BoolFormula.size formulas)[index]?.getD 0
theorem
Complexity.CircuitUnrolling.Serializer.compileRawRightFold_eq_indexed_internal
(op : AndOrOp)
(identity : Bool)
(available : ℕ)
(formulas : List BoolFormula)
:
BoolFormula.compileRawRightFold op identity available formulas = (BoolFormula.compileRawOutputs available formulas).circuit ++ [CircuitCode.RawGate.constant 0 identity] ++ indexedRightFoldConnectors op available formulas.length fun (index : ℕ) =>
(List.map BoolFormula.size formulas)[index]?.getD 0
theorem
Complexity.CircuitUnrolling.Serializer.compileRaw_conjs_eq_indexed_internal
(available : ℕ)
(formulas : List BoolFormula)
:
BoolFormula.compileRaw available (BoolFormula.conjs formulas) = (BoolFormula.compileRawOutputs available formulas).circuit ++ [CircuitCode.RawGate.constant 0 true] ++ indexedRightFoldConnectors AndOrOp.and available formulas.length fun (index : ℕ) =>
(List.map BoolFormula.size formulas)[index]?.getD 0
theorem
Complexity.CircuitUnrolling.Serializer.compileRaw_disjs_eq_indexed_internal
(available : ℕ)
(formulas : List BoolFormula)
:
BoolFormula.compileRaw available (BoolFormula.disjs formulas) = (BoolFormula.compileRawOutputs available formulas).circuit ++ [CircuitCode.RawGate.constant 0 false] ++ indexedRightFoldConnectors AndOrOp.or available formulas.length fun (index : ℕ) =>
(List.map BoolFormula.size formulas)[index]?.getD 0
theorem
Complexity.CircuitUnrolling.Serializer.compileRawOutputs_copies_eq_indexed_internal
(available : ℕ)
(formulas : List BoolFormula)
:
List.map (fun (input : ℕ) => CircuitCode.RawGate.copy input)
(BoolFormula.compileRawOutputs available formulas).outputs = indexedBatchCopies available formulas.length fun (index : ℕ) => (List.map BoolFormula.size formulas)[index]?.getD 0
theorem
Complexity.CircuitUnrolling.Serializer.compileRawBatch_eq_indexed_internal
(available : ℕ)
(formulas : List BoolFormula)
:
BoolFormula.compileRawBatch available formulas = (BoolFormula.compileRawOutputs available formulas).circuit ++ indexedBatchCopies available formulas.length fun (index : ℕ) => (List.map BoolFormula.size formulas)[index]?.getD 0