OAI/Computability/MaxCut/PCP/PreprocessingRegularSoundness.lean
98 declarations, 0 contain sorry, 0 declared as axioms
Soundness of the executable regularization tables
The fixed input base table is required only to have its proved spectral certificate. Every positive cloud uses the actual recursively generated table at its computed size. Its spectral certificate gives the precise cut bound used by majority rounding. Empty clouds are handled by their zero cardinality. Thus neither expansion nor the desired count comparison is an input premise.
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.internalDegree_ge_eightline 20 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.baseDegree_ne_zeroline 24 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.resizeTable_certificateline 31Source documentation
Erasing a proof-equal table size preserves its exact spectral certificate.
theorem resizeTable_certificate {n m q : Nat} (h : n = m) (table : ExpanderTables.Table n q) (lambda : ℝ) (certificate : SpectralCertificate (ExpanderTables.graph table) lambda) : SpectralCertificate (ExpanderTables.graph (resizeTable h table)) lambda := by …Mentions: OAI.MaxCutGames.Foundations.PCP.ExpanderTables.Table, OAI.MaxCutGames.Foundations.PCP.ExpanderTables.graph
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.familyCloudTable_certificate_of_posline 38 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.cloudGraphs_certificate_of_posline 49 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.cloud_expansionline 59Source documentation
The exact finite cut inequality needed to pay for each changed cloud label.
theorem cloud_expansion (H : BaseTable) (certificate : SpectralCertificate (ExpanderTables.graph H) (1 / 100 : ℝ)) (t : GraphTables.Table) (v : Fin t.vertices) (S : Finset (PreprocessingCloudIndex.PaddedCloud t (padding t) v)) (hsmall : S.card ≤ Fintype.card (PreprocessingCloudIndex.PaddedCloud t (padding t) v) / 2) : 2 * S.card ≤ (CloudRounding.directedCut (fun ed => ((cloudGraphs t (padding t) (familyCloudTable H t) v).rot ed).1) S).card := by …Mentions: OAI.MaxCutGames.Foundations.PCP.ExpanderTables.graph, OAI.MaxCutGames.Foundations.PCP.GraphTables.Table, OAI.MaxCutGames.Foundations.PCP.PreprocessingCloudIndex.PaddedCloud, OAI.MaxCutGames.Foundations.PCP.CloudRounding.directedCut
- def
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.roundLabelsline 82Source documentation
Decode the actual numbered output labels by majority in each padded cloud.
noncomputable def roundLabels (t : GraphTables.Table) (labels : Fin (vertexCount t (padding t)) → GraphTables.Label) : Fin t.vertices → GraphTables.Label := …Mentions: OAI.MaxCutGames.Foundations.PCP.GraphTables.Table, OAI.MaxCutGames.Foundations.PCP.GraphTables.Label
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.soundnessline 90Source documentation
Direct soundness for the generated tables, with no matching-base premise.
theorem soundness (H : BaseTable) (certificate : SpectralCertificate (ExpanderTables.graph H) (1 / 100 : ℝ)) (t : GraphTables.Table) (labels : Fin (vertexCount t (padding t)) → GraphTables.Label) : (GraphTables.semantics t).rejectionCount (roundLabels t labels) ≤ (PortTables.baseGraph (regularize H t)).rejectionCount labels := by …Mentions: OAI.MaxCutGames.Foundations.PCP.ExpanderTables.graph, OAI.MaxCutGames.Foundations.PCP.GraphTables.Table, OAI.MaxCutGames.Foundations.PCP.GraphTables.Label, OAI.MaxCutGames.Foundations.PCP.GraphTables.semantics, OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.roundLabels, OAI.MaxCutGames.Foundations.PCP.PortTables.baseGraph
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.exists_roundingline 101 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.lift_rejectionCountline 111Source documentation
Completeness preserves the number of rejected original dart occurrences.
theorem lift_rejectionCount (H : BaseTable) (t : GraphTables.Table) (labels : Fin t.vertices → GraphTables.Label) : (PortTables.baseGraph (regularize H t)).rejectionCount (liftedLabel t (padding t) labels) = (GraphTables.semantics t).rejectionCount labels := …Mentions: OAI.MaxCutGames.Foundations.PCP.GraphTables.Table, OAI.MaxCutGames.Foundations.PCP.GraphTables.Label, OAI.MaxCutGames.Foundations.PCP.PortTables.baseGraph, OAI.MaxCutGames.Foundations.PCP.GraphTables.semantics
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.completenessline 117 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.soundness_of_uniform_lower_boundline 139 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingRegularSoundness.soundness_of_uniform_real_lower_boundline 148 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingTableSpectral.portGraph_ext_inline_PreprocessingTableSpectralline 170 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingTableSpectral.materialize_portGraphline 179Source documentation
Materialization retains exactly the explicitly reindexed rotation.
theorem materialize_portGraph {n d : Nat} {D : Type*} (G : ConstraintGraph (Fin n) (Fin n × D) PortTables.Label) (ports : D ≃ Fin d) : PortTables.portGraph (PreprocessingOverlayTables.materialize G ports) = GraphTransport.reindex (Overlay.originalPortGraph G) (Equiv.refl _) ports := by …Mentions: OAI.MaxCutGames.Foundations.PCP.ConstraintGraph, OAI.MaxCutGames.Foundations.PCP.PortTables.Label, OAI.MaxCutGames.Foundations.PCP.PortTables.portGraph, OAI.MaxCutGames.Foundations.PCP.PreprocessingOverlayTables.materialize, OAI.MaxCutGames.Foundations.PCP.GraphTransport.reindex, OAI.MaxCutGames.Foundations.PCP.Overlay.originalPortGraph
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingTableSpectral.overlay_portGraphline 191Source documentation
The stored overlaid graph is the actual semantic overlay in numbered port coordinates. This is equality of reversible port graphs.
theorem overlay_portGraph {n d e : Nat} (G : PortTables.Table n d) (H : ExpanderTables.Table n e) : PortTables.portGraph (PreprocessingOverlayTables.overlay G H) = GraphTransport.reindex (Overlay.portGraph (PortTables.portGraph G) (ExpanderTables.graph H)) (Equiv.refl _) (PreprocessingOverlayTables.overlayPorts d e) := by …Mentions: OAI.MaxCutGames.Foundations.PCP.PortTables.Table, OAI.MaxCutGames.Foundations.PCP.ExpanderTables.Table, OAI.MaxCutGames.Foundations.PCP.PortTables.portGraph, OAI.MaxCutGames.Foundations.PCP.PreprocessingOverlayTables.overlay, OAI.MaxCutGames.Foundations.PCP.GraphTransport.reindex, OAI.MaxCutGames.Foundations.PCP.Overlay.portGraph, OAI.MaxCutGames.Foundations.PCP.ExpanderTables.graph, OAI.MaxCutGames.Foundations.PCP.PreprocessingOverlayTables.overlayPorts
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingTableSpectral.overlay_rotation_eqline 201 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingTableSpectral.lazy_portGraphline 212Source documentation
The stored lazy graph is exactly the Boolean-flag lazy graph, with the declared false-first port encoding.
theorem lazy_portGraph {n d : Nat} (G : PortTables.Table n d) : PortTables.portGraph (PreprocessingOverlayTables.lazy G) = GraphTransport.reindex (lazyGraph (PortTables.portGraph G)) (Equiv.refl _) (PreprocessingOverlayTables.lazyPorts d) := by …Mentions: OAI.MaxCutGames.Foundations.PCP.PortTables.Table, OAI.MaxCutGames.Foundations.PCP.PortTables.portGraph, OAI.MaxCutGames.Foundations.PCP.PreprocessingOverlayTables.lazy, OAI.MaxCutGames.Foundations.PCP.GraphTransport.reindex, OAI.MaxCutGames.Foundations.PCP.PreprocessingOverlayTables.lazyPorts
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingTableSpectral.lazy_rotation_eqline 220 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingTableSpectral.overlay_certificate_seven_eighthsline 231Source documentation
An actual half-spectral expander overlay gives a
7/8certificate for the stored table. The original table needs no spectral certificate. The degree hypothesis supplies nonempty old and expander port types.theorem overlay_certificate_seven_eighths {n d e : Nat} (G : PortTables.Table n d) (H : ExpanderTables.Table n e) (hn : 0 < n) (hdegree : d = e + 1) (he : 8 ≤ e) (hH : SpectralCertificate (ExpanderTables.graph H) (1 / 2 : ℝ)) : SpectralCertificate (PortTables.portGraph (PreprocessingOverlayTables.overlay G H)) (7 / 8 : ℝ) := by …Mentions: OAI.MaxCutGames.Foundations.PCP.PortTables.Table, OAI.MaxCutGames.Foundations.PCP.ExpanderTables.Table, OAI.MaxCutGames.Foundations.PCP.ExpanderTables.graph, OAI.MaxCutGames.Foundations.PCP.PortTables.portGraph, OAI.MaxCutGames.Foundations.PCP.PreprocessingOverlayTables.overlay
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingTableSpectral.lazy_certificate_31_32line 249Source documentation
An actual
7/8certificate gives a31/32certificate for the materialized lazy table. Only the original port set must be nonempty.theorem lazy_certificate_31_32 {n d : Nat} (G : PortTables.Table n d) (hd : 0 < d) (hG : SpectralCertificate (PortTables.portGraph G) (7 / 8 : ℝ)) : SpectralCertificate (PortTables.portGraph (PreprocessingOverlayTables.lazy G)) (31 / 32 : ℝ) := by …Mentions: OAI.MaxCutGames.Foundations.PCP.PortTables.Table, OAI.MaxCutGames.Foundations.PCP.PortTables.portGraph, OAI.MaxCutGames.Foundations.PCP.PreprocessingOverlayTables.lazy
- theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.overlay_rejectionCountline 273 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.lazy_rejectionCountline 286 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.overlayFamily_certificateline 299 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.overlay_certificateline 307 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.spectral_certificateline 317Source documentation
The concrete generated rows have the required absolute contraction.
theorem spectral_certificate (H : BaseTable) (certificate : SpectralCertificate (ExpanderTables.graph H) (1 / 100 : ℝ)) (t : GraphTables.Table) : SpectralCertificate (PortTables.portGraph (preprocess H t)) (31 / 32 : ℝ) := by …Mentions: OAI.MaxCutGames.Foundations.PCP.ExpanderTables.graph, OAI.MaxCutGames.Foundations.PCP.GraphTables.Table, OAI.MaxCutGames.Foundations.PCP.PortTables.portGraph
- def
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.restrictedLabelline 325 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.rejectionCount_eq_regularizedline 330 - def
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.roundLabelsline 338 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.soundnessline 342 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.completenessline 350 - theorem
OAI.MaxCutGames.Foundations.PCP.PreprocessingGuarantees.gap_transfer_realline 363 - abbrev
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.PortWordsline 406 - instance
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.finitePortWordsline 408 - def
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.Ballline 412 - def
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.wordToBallline 415 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.wordToBall_surjectiveline 418 - instance
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.finiteBallline 425 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.card_portWordsline 429 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.card_ball_leline 433 - structure
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.AddressSelectorline 440 - def
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.classicalSelectorline 444 - def
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.scanWitnessline 450Source documentation
Executable first-match search, with a proof that a match is present.
def scanWitness {A : Type*} (p : A → Prop) [DecidablePred p] : (xs : List A) → (∃ a ∈ xs, p a) → {a // p a} | [], h => False.elim (by simp at h) | a :: xs, h => if ha : p a then ⟨a, ha⟩ else scanWitness p xs (by obtain ⟨b, hb, hp⟩ := h … - def
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.listSelectorline 463Source documentation
A concrete complete address list supplies a computational selector. Its length depends on the degree and radius, not on the ambient vertex count.
def listSelector [DecidableEq V] (G : PortGraph V D) (t : Nat) (v : V) (addresses : List (PortWords D t)) (complete : ∀ w, w ∈ addresses) : AddressSelector G t v where …Mentions: OAI.MaxCutGames.Foundations.PCP.PoweringLabels.PortWords, OAI.MaxCutGames.Foundations.PCP.PoweringLabels.AddressSelector
- abbrev
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.PaddedLabelline 474 - def
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.encodeline 476 - def
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.decodeline 479 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.decode_encodeline 482 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.decode_surjectiveline 489 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.encode_injectiveline 493 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.decoded_word_collisionline 500 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringLabels.card_paddedLabelline 506 - def
OAI.MaxCutGames.Foundations.PCP.PoweringAddresses.allWordsline 529Source documentation
All words of a specified length, ordered first by their head port.
def allWords (d : Nat) : (n : Nat) → List (Fin n → Fin d) | 0 => [Fin.elim0] | n + 1 => (List.finRange d).flatMap fun a => (allWords d n).map fun p => Fin.cases a p - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringAddresses.mem_allWordsline 534 - def
OAI.MaxCutGames.Foundations.PCP.PoweringAddresses.allAddressesline 551Source documentation
The complete address list, including the unique empty word.
def allAddresses (d t : Nat) : List (PortWords (Fin d) t) := …
- theorem
OAI.MaxCutGames.Foundations.PCP.PoweringAddresses.mem_allAddressesline 555 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringAddresses.length_allWordsline 563 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringAddresses.length_allAddressesline 574Source documentation
The selector's search-list bound depends only on degree and radius.
theorem length_allAddresses (d t : Nat) : (allAddresses d t).length = ∑ n : Fin (t + 1), d ^ n.val := by …Mentions: OAI.MaxCutGames.Foundations.PCP.PoweringAddresses.allAddresses
- def
OAI.MaxCutGames.Foundations.PCP.PoweringAddresses.finitePortSelectorline 581Source documentation
A fully executable selector from the explicit bounded address list.
def finitePortSelector {d : Nat} [DecidableEq V] (G : PortGraph V (Fin d)) (t : Nat) (v : V) : AddressSelector G t v := … - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.addressCountline 603Source documentation
The number of words with length at most
t, including the empty word.def addressCount (d t : Nat) : Nat := ∑ i : Fin (t + 1), d ^ i.val
- def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.reverseWordEquivline 607Source documentation
Reverse the digit positions before using the little-endian arithmetic encoding from mathlib. Both directions are the same executable operation.
def reverseWordEquiv (d n : Nat) : (Fin n → Fin d) ≃ (Fin n → Fin d) where …
- def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.wordEquivline 614Source documentation
An executable bijection from fixed-length port words to their ranks.
def wordEquiv (d n : Nat) : (Fin n → Fin d) ≃ Fin (d ^ n) := …
- theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.wordEquiv_valline 617 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.addressEquivline 621Source documentation
Arithmetic prefix sums give a rank for every bounded-length address.
def addressEquiv (d t : Nat) : PortWords (Fin d) t ≃ Fin (addressCount d t) := …
Mentions: OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.addressCount
- theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.addressEquiv_valline 625 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.paddedLabelEquivline 635Source documentation
A padded label is a base-
qinteger whose digits are indexed by the explicit bounded-address equivalence.def paddedLabelEquiv (d t q : Nat) : PaddedLabel (Fin d) t (Fin q) ≃ Fin (q ^ addressCount d t) := …Mentions: OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.addressCount
- theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.paddedLabelEquiv_valline 640 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.orientationEquivline 646Source documentation
False and true are the adjacent orientation digits zero and one.
def orientationEquiv : Bool ≃ Fin 2 := finTwoEquiv.symm
- theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.orientationEquiv_falseline 648 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.orientationEquiv_trueline 649 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.dartBlockEquivline 652Source documentation
A vertex's block consists of one adjacent orientation pair per word.
def dartBlockEquiv (d n : Nat) : ((Fin (n + 1) → Fin d) × Bool) ≃ Fin (2 * d ^ (n + 1)) := … - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.dartBlockEquiv_valline 657 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.dartVertexEquivline 664Source documentation
The tuple permutation putting the vertex before its word and orientation.
def dartVertexEquiv (vertices d n : Nat) : (Bool × (Fin vertices × (Fin (n + 1) → Fin d))) ≃ (Fin vertices × ((Fin (n + 1) → Fin d) × Bool)) where … - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.dartEquivline 673Source documentation
Executable vertex-major dart numbering, with adjacent orientations.
def dartEquiv (vertices d n : Nat) : (Bool × (Fin vertices × (Fin (n + 1) → Fin d))) ≃ Fin (2 * vertices * d ^ (n + 1)) := … - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.dartEquiv_valline 682 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.dartEquiv_true_eq_false_add_oneline 692Source documentation
The true orientation immediately follows the false orientation.
theorem dartEquiv_true_eq_false_add_one (vertices d n : Nat) (v : Fin vertices) (p : Fin (n + 1) → Fin d) : (dartEquiv vertices d n (true, (v, p))).val = (dartEquiv vertices d n (false, (v, p))).val + 1 := by …Mentions: OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.dartEquiv
- def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.encodeWordline 699 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.decodeWordline 700 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.decodeWord_encodeWordline 702 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.encodeWord_decodeWordline 705 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.encodeAddressline 708 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.decodeAddressline 711 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.decodeAddress_encodeAddressline 714 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.encodeAddress_decodeAddressline 717 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.encodeLabelline 720 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.decodeLabelline 723 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.decodeLabel_encodeLabelline 727 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.encodeLabel_decodeLabelline 730 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.decodeLabel_applyline 733 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.encodeDartline 737 - def
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.decodeDartline 741 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.decodeDart_encodeDartline 745 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.encodeDart_decodeDartline 750 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.card_wordsline 755 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.card_addressesline 758 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.card_labelsline 762 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.card_dartsline 766 - theorem
OAI.MaxCutGames.Foundations.PCP.PoweringEnumeration.length_allAddressesline 771