OAI/Computability/MaxCut/Machines/CanonicalBodyMachine.lean
77 declarations, 0 contain sorry, 0 declared as axioms
Lower a complete canonical-body template to the actual field-template
machine. There are four saved fields per query position, numbered by
field + 4 * position. The template constants depend only on finite coefficient
and RHS data; names and occurrence identifiers remain saved tape contents.
- def
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.fieldEquivline 21 - def
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.fieldIndexline 24 - theorem
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.fieldIndex_valline 27 - def
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.savedFieldsline 30 - theorem
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.savedFields_fieldIndexline 33 - def
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.lowerTokenline 38 - def
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.lowerTemplateline 42 - theorem
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.lowerTemplate_lengthline 45 - theorem
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.tokenOutput_lowerTokenline 48 - theorem
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.templateOutput_lowerTemplateline 55 - def
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.templateline 64Source documentation
This fixed token list is directly accepted by the actual template machine.
def template {k s d : Nat} (z : Ambient s d) (a : Fin k → Fin 3 → Ambient s d) (b : Fin k → F2) : List (MachineFieldTemplate.Token (4*k)) := …Mentions: OAI.MaxCutGames.Reduction.MachineFieldTemplate.Token
- theorem
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.template_lengthline 68 - theorem
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.templateOutput_dataline 73 - theorem
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.templateOutput_actualQueryline 82 - theorem
OAI.MaxCutGames.Reduction.CanonicalBodyMachine.templateOutput_fromCoefficientsline 92Source documentation
Exact output using the finite coefficient table directly as program data.
theorem templateOutput_fromCoefficients (S : ActualSource.Source) {k s d : Nat} (occ : ActualGame.Question S k) (c : ActualEnumeration.Coefficients k (Ambient s d)) : MachineFieldTemplate.templateOutput (template c.1 (CanonicalBodyTemplate.coefficientTriples c) (fun j => ActualGame.rhs S (occ j))) (savedFields (CanonicalBodyTemplate.sourceFields occ (ActualGame.names S))) = encodeWords (bodyWords (ActualOrbit.body (ActualGame.canonical S k s d) (occ, ActualEnumeration.fromCoefficients k (Ambient s d) c))) := by …Mentions: OAI.MaxCutGames.Reduction.ActualSource.Source, OAI.MaxCutGames.Reduction.ActualGame.Question, OAI.MaxCutGames.Reduction.ActualEnumeration.Coefficients, OAI.MaxCutGames.Reduction.MachineFieldTemplate.templateOutput, OAI.MaxCutGames.Reduction.CanonicalBodyMachine.template, OAI.MaxCutGames.Reduction.CanonicalBodyTemplate.coefficientTriples, OAI.MaxCutGames.Reduction.ActualGame.rhs, OAI.MaxCutGames.Reduction.CanonicalBodyMachine.savedFields, OAI.MaxCutGames.Reduction.CanonicalBodyTemplate.sourceFields, OAI.MaxCutGames.Reduction.ActualGame.names, OAI.MaxCutGames.Reduction.ActualOrbit.body, OAI.MaxCutGames.Reduction.ActualGame.canonical, OAI.MaxCutGames.Reduction.ActualEnumeration.fromCoefficients
- abbrev
OAI.MaxCutGames.Reduction.AddressMachineSpace.Extraline 108 - abbrev
OAI.MaxCutGames.Reduction.AddressMachineSpace.Tapeline 112 - abbrev
OAI.MaxCutGames.Reduction.AddressMachineSpace.Controlline 115 - abbrev
OAI.MaxCutGames.Reduction.AddressMachineSpace.Stateline 116 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.initialStateline 118 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.headerArithmeticSlotsline 122 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.headerTapeline 127 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.headerTape_eq_iffline 130 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.fullHeaderSlotsline 134 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.fullHeaderSlots_sourceline 146 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.fullHeaderSlots_workline 147 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.fullHeaderSlots_arithmeticline 148 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.arithmeticSlots_fullHeaderSlotsline 151 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.prefixSlotsline 155 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.prefixSlots_sourceline 158 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.prefixSlots_workline 159 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.prefixSlots_variablesline 160 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.prefixSlots_occurrencesline 162 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.prefixSlots_scratchline 164 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.canonicalFieldline 167 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.rhsFieldline 170 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.canonicalField_occurrenceline 172 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.canonicalField_nameline 175 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.canonicalField_ne_rhsFieldline 186 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.privateAddressline 190 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.edgeSlotline 193 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.edgeDecode_inline_AddressMachineSpaceline 204Source documentation
A partial inverse proves separation without a default element of
Fin k. It therefore applies unchanged atk = 0.private def edgeDecode_inline_AddressMachineSpace : Tape k s d noiseCount → Option (MachineAddressEdge.Tape (4 * k) (1 + 9 * k)) | .savedIndex j => some (.inl (.field (CanonicalBodyMachine.fieldIndex j 3))) | .field j slot => if slot = 3 then none else some (.inl (.field (CanonicalBodyMachine.fieldIndex j slot))) | .extra (.inl (.inl .baseValue)) => some (.inl .radix) | .extra (.inl (.inl .capacity)) => some (.inr 0) | .extra (.inl (.inl .reversed)) => some (.inr 1) | .extra (.inr (.inl tape)) => some (.inl tape) | _ => noneMentions: OAI.MaxCutGames.Reduction.AddressMachineSpace.Tape, OAI.MaxCutGames.Reduction.MachineAddressEdge.Tape, OAI.MaxCutGames.Reduction.CanonicalBodyMachine.fieldIndex
- theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.edgeDecode_canonicalField_inline_AddressMachineSpaceline 215 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.edgeDecode_edgeSlot_inline_AddressMachineSpaceline 220 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressEdgeSlotsline 230 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressEdgeSlots_fieldIndexline 238 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressSlots_nameline 249 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressSlots_occurrenceline 256 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressSlots_radixline 262 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressSlots_capacityline 265 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressSlots_outputline 268 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.currentline 272 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.remainingline 273 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.finalOutputline 274 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.current_revline 276 - def
OAI.MaxCutGames.Reduction.AddressMachineSpace.odometerSlotsline 279 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.odometerSlots_radixline 290 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.odometerSlots_scratchline 292 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.odometerSlots_currentline 293 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.odometerSlots_remainingline 295 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.current_ne_remainingline 298 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.current_ne_finalOutputline 300 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.remaining_ne_finalOutputline 302 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.edgeSlot_ne_of_decode_none_inline_AddressMachineSpaceline 305 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressEdgeSlots_ne_rhsFieldline 313 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressEdgeSlots_ne_sourceline 318 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressEdgeSlots_ne_copyScratchline 323 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressEdgeSlots_ne_headerTapeline 330Source documentation
Only the radix, capacity, and reversed accumulator intentionally overlap the address emitter's tapes with the arithmetic block.
theorem addressEdgeSlots_ne_headerTape (tape : MachineAddressEdge.Tape (4 * k) (1 + 9 * k)) (c : MachineAddressHeaders.Arithmetic.Control) (hb : c ≠ .baseValue) (hc : c ≠ .capacity) (hr : c ≠ .reversed) : addressEdgeSlots k s d noiseCount tape ≠ headerTape k s d noiseCount c := by …Mentions: OAI.MaxCutGames.Reduction.MachineAddressEdge.Tape, OAI.MaxCutGames.Reduction.MachineAddressHeaders.Arithmetic.Control, OAI.MaxCutGames.Reduction.AddressMachineSpace.addressEdgeSlots, OAI.MaxCutGames.Reduction.AddressMachineSpace.headerTape
- theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressEdgeSlots_ne_remainingline 338 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.addressEdgeSlots_ne_finalOutputline 343 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.headerTape_ne_finalOutputline 348 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.headerTape_ne_currentline 352 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.headerTape_ne_remainingline 356 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.tupleOutput_headerTapeline 360 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.tupleOutput_sourceline 370 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.tupleOutput_rhsline 375 - theorem
OAI.MaxCutGames.Reduction.AddressMachineSpace.tupleOutput_occurrenceline 383