Documentation

Atlas.BooleanFunctions.code.UniqueGames

structure UniqueGames.UniqueGame (V : Type u_1) (W : Type u_2) [DecidableEq V] [DecidableEq W] (k : ) :
Type (max u_1 u_2)
Instances For
    structure UniqueGames.Labeling (V : Type u_1) (W : Type u_2) (k : ) :
    Type (max u_1 u_2)
    • labelV : VFin k
    • labelW : WFin k
    Instances For
      def UniqueGames.edgeSatisfied {V : Type u_1} {W : Type u_2} [DecidableEq V] [DecidableEq W] {k : } (game : UniqueGame V W k) (labeling : Labeling V W k) (v : V) (w : W) :
      Instances For
        @[implicit_reducible]
        instance UniqueGames.instDecidableEdgeSatisfied {V : Type u_1} {W : Type u_2} [DecidableEq V] [DecidableEq W] {k : } (game : UniqueGame V W k) (labeling : Labeling V W k) (v : V) (w : W) :
        Decidable (edgeSatisfied game labeling v w)
        def UniqueGames.numSatisfiedEdges {V : Type u_1} {W : Type u_2} {k : } [DecidableEq V] [DecidableEq W] (game : UniqueGame V W k) (labeling : Labeling V W k) :
        Instances For
          def UniqueGames.numEdges {V : Type u_1} {W : Type u_2} [DecidableEq V] [DecidableEq W] {k : } (game : UniqueGame V W k) :
          Instances For
            noncomputable def UniqueGames.fractionSatisfied {V : Type u_1} {W : Type u_2} {k : } [DecidableEq V] [DecidableEq W] (game : UniqueGame V W k) (labeling : Labeling V W k) :
            Instances For
              noncomputable def UniqueGames.value {V : Type u_1} {W : Type u_2} {k : } [DecidableEq V] [DecidableEq W] (game : UniqueGame V W k) :
              Instances For
                opaque UniqueGames.IsPolyTimeUniqueGameReduction {numV numW : } {k : } :
                ((m : ) → PCP.BinaryString mUniqueGame (Fin (numV m)) (Fin (numW m)) k)Prop
                Instances For
                  structure UniqueGames.NonBipartiteUniqueGame (X : Type u_1) [DecidableEq X] (k : ) :
                  Type u_1
                  Instances For
                    Instances For
                      def UniqueGames.NonBipartiteUniqueGame.edgeSatisfiedBy {X : Type u_1} [DecidableEq X] {k : } (game : NonBipartiteUniqueGame X k) (A : XFin k) (e : X × X) :
                      Instances For
                        @[implicit_reducible]
                        instance UniqueGames.instDecidableEdgeSatisfiedBy {X : Type u_1} [DecidableEq X] {k : } (game : NonBipartiteUniqueGame X k) (A : XFin k) (e : X × X) :
                        noncomputable def UniqueGames.NonBipartiteUniqueGame.fractionSatisfiedWithin {X : Type u_1} [DecidableEq X] {k : } (game : NonBipartiteUniqueGame X k) (X' : Finset X) (A : XFin k) :
                        Instances For
                          def UniqueGames.NonBipartiteUniqueGame.edgeTSatisfiedBy {X : Type u_1} [DecidableEq X] {k : } (game : NonBipartiteUniqueGame X k) (A : XFinset (Fin k)) (e : X × X) :
                          Instances For
                            @[implicit_reducible]
                            instance UniqueGames.instDecidableEdgeTSatisfiedBy {X : Type u_1} [DecidableEq X] {k : } (game : NonBipartiteUniqueGame X k) (A : XFinset (Fin k)) (e : X × X) :
                            def UniqueGames.IsTAssignment {X : Type u_1} {k : } (A : XFinset (Fin k)) (X' : Finset X) (t : ) :
                            Instances For
                              noncomputable def UniqueGames.NonBipartiteUniqueGame.fractionTSatisfiedWithin {X : Type u_1} [DecidableEq X] {k : } (game : NonBipartiteUniqueGame X k) (X' : Finset X) (A : XFinset (Fin k)) :
                              Instances For
                                def UniqueGames.StrongUGC_YES {X : Type u_1} [DecidableEq X] [Fintype X] {k : } (game : NonBipartiteUniqueGame X k) (ε : ) :
                                Instances For
                                  def UniqueGames.StrongUGC_NO {X : Type u_1} [DecidableEq X] [Fintype X] {k : } (game : NonBipartiteUniqueGame X k) (ε : ) (t : ) :
                                  Instances For
                                    structure UniqueGames.LabelCover (V : Type u_2) (W : Type u_3) (k l : ) :
                                    Type (max u_2 u_3)
                                    Instances For
                                      structure UniqueGames.LabelCover.Labeling (V : Type u_2) (W : Type u_3) (k l : ) :
                                      Type (max u_2 u_3)
                                      • labelV : VFin k
                                      • labelW : WFin l
                                      Instances For
                                        def UniqueGames.LabelCover.edgeSatisfied {V : Type u_2} {W : Type u_3} {k l : } (game : LabelCover V W k l) (labeling : Labeling V W k l) (v : V) (w : W) :
                                        Instances For
                                          @[implicit_reducible]
                                          instance UniqueGames.instDecidableEdgeSatisfied_1 {V : Type u_2} {W : Type u_3} {k l : } (game : LabelCover V W k l) (labeling : LabelCover.Labeling V W k l) (v : V) (w : W) :
                                          Decidable (game.edgeSatisfied labeling v w)
                                          def UniqueGames.LabelCover.numSatisfiedEdges {V : Type u_2} {W : Type u_3} {k l : } [DecidableEq V] [DecidableEq W] (game : LabelCover V W k l) (labeling : Labeling V W k l) :
                                          Instances For
                                            noncomputable def UniqueGames.LabelCover.fractionSatisfied {V : Type u_2} {W : Type u_3} {k l : } [DecidableEq V] [DecidableEq W] (game : LabelCover V W k l) (labeling : Labeling V W k l) :
                                            Instances For
                                              noncomputable def UniqueGames.LabelCover.value {V : Type u_2} {W : Type u_3} {k l : } [DecidableEq V] [DecidableEq W] (game : LabelCover V W k l) :
                                              Instances For
                                                def UniqueGames.LabelCover.IsUnique {V : Type u_2} {W : Type u_3} {k l : } (game : LabelCover V W k l) :
                                                Instances For
                                                  theorem UniqueGames.fractionSatisfied_le_one {V : Type u_2} {W : Type u_3} [DecidableEq V] [DecidableEq W] {k : } (game : UniqueGame V W k) (labeling : Labeling V W k) :
                                                  fractionSatisfied game labeling 1
                                                  theorem UniqueGames.bddAbove_fractionSatisfied {V : Type u_2} {W : Type u_3} [DecidableEq V] [DecidableEq W] {k : } (game : UniqueGame V W k) :
                                                  BddAbove (Set.range fun (labeling : Labeling V W k) => fractionSatisfied game labeling)
                                                  theorem UniqueGames.fractionSatisfied_le_value {V : Type u_2} {W : Type u_3} [DecidableEq V] [DecidableEq W] {k : } (game : UniqueGame V W k) (labeling : Labeling V W k) :
                                                  fractionSatisfied game labeling value game
                                                  theorem UniqueGames.fractionSatisfied_le_of_value_le {V : Type u_2} {W : Type u_3} [DecidableEq V] [DecidableEq W] {k : } (game : UniqueGame V W k) (δ : ) (hval : value game δ) (labeling : Labeling V W k) :
                                                  fractionSatisfied game labeling δ
                                                  theorem uniqueGamesConjecture (ε δ : ) :
                                                  ε > 0δ > 0∃ (k : ), UniqueGames.IsNPHardGapUniqueGame k (1 - ε) δ
                                                  structure MaxCut.MaxCutInstance (V : Type u_1) [Fintype V] [DecidableEq V] :
                                                  Type u_1
                                                  Instances For
                                                    def MaxCut.numCutEdges {V : Type u_1} [Fintype V] [DecidableEq V] (G : MaxCutInstance V) (f : VBool) :
                                                    Instances For
                                                      noncomputable def MaxCut.cutFraction {V : Type u_1} [Fintype V] [DecidableEq V] (G : MaxCutInstance V) (f : VBool) :
                                                      Instances For
                                                        noncomputable def MaxCut.value {V : Type u_1} [Fintype V] [DecidableEq V] (G : MaxCutInstance V) :
                                                        Instances For
                                                          Instances For
                                                            def MaxCut.IsPolyTimeMaxCutInstanceReduction {numVerts : } :
                                                            ((m : ) → PCP.BinaryString mMaxCutInstance (Fin (numVerts m)))Prop
                                                            Instances For
                                                              Instances For
                                                                opaque IsPolyTimeLongCodeReduction {numV numW k numVerts : } :
                                                                (UniqueGames.UniqueGame (Fin numV) (Fin numW) kMaxCut.MaxCutInstance (Fin numVerts))Prop
                                                                theorem isPolyTimeMaxCutReduction_of_compose {numV numW : } {k : } {numVerts : } (ugReduce : (m : ) → PCP.BinaryString mUniqueGames.UniqueGame (Fin (numV m)) (Fin (numW m)) k) (mcReduce : (m : ) → UniqueGames.UniqueGame (Fin (numV m)) (Fin (numW m)) kMaxCut.MaxCutInstance (Fin (numVerts m))) (hUG : UniqueGames.IsPolyTimeUniqueGameReduction ugReduce) (hMC : ∀ (m : ), IsPolyTimeLongCodeReduction (mcReduce m)) :
                                                                PCP.IsPolynomial numVerts MaxCut.IsPolyTimeMaxCutInstanceReduction fun (m : ) (x : PCP.BinaryString m) => mcReduce m (ugReduce m x)
                                                                noncomputable def maxBalancedNoiseStab (ρ δ : ) (k : ) :
                                                                Instances For
                                                                  noncomputable def longCodeReduce ( : ) (k numV numW : ) :
                                                                  Instances For
                                                                    theorem longCode_completeness (ρ : ) (hρ_pos : 0 < ρ) (hρ_lt : ρ < 1) (k numV numW : ) (δ : ) (hδ_pos : 0 < δ) (hδ_lt : δ < 1) (game : UniqueGames.UniqueGame (Fin numV) (Fin numW) k) (hgame : UniqueGames.value game 1 - δ) :
                                                                    MaxCut.value (longCodeReduce ρ k numV numW game) (1 - δ) * (1 + ρ) / 2
                                                                    theorem high_influence_gives_good_labeling (k numV numW : ) (δ : ) (hδ_pos : 0 < δ) (hδ_lt : δ < 1) (game : UniqueGames.UniqueGame (Fin numV) (Fin numW) k) (f : Fin numV × (Fin kBool)Bool) (v : Fin numV) (i : Fin k) (h_high_inf : 1 / 2 ^ k * x : Fin kBool, ((if f (v, x) = true then 1 else -1) - if f (v, Function.update x i !x i) = true then 1 else -1) ^ 2 / 4 > δ) :
                                                                    ∃ (lab : UniqueGames.Labeling (Fin numV) (Fin numW) k), UniqueGames.fractionSatisfied game lab > δ
                                                                    theorem longCode_soundness (ρ : ) (hρ_pos : 0 < ρ) (hρ_lt : ρ < 1) (k numV numW : ) (δ : ) (hδ_pos : 0 < δ) (hδ_lt : δ < 1) (game : UniqueGames.UniqueGame (Fin numV) (Fin numW) k) (hgame : UniqueGames.value game δ) :
                                                                    MaxCut.value (longCodeReduce ρ k numV numW game) (1 + maxBalancedNoiseStab ρ δ k) / 2
                                                                    theorem longCodeReduce_isPolyTime (ρ : ) (k numV numW : ) :
                                                                    theorem longCode_construction_exists (ρ : ) (hρ_pos : 0 < ρ) (hρ_lt : ρ < 1) (k numV numW : ) (δ : ) (hδ_pos : 0 < δ) (hδ_lt : δ < 1) :
                                                                    ∃ (numVerts : ) (reduce : UniqueGames.UniqueGame (Fin numV) (Fin numW) kMaxCut.MaxCutInstance (Fin numVerts)), IsPolyTimeLongCodeReduction reduce (∀ (game : UniqueGames.UniqueGame (Fin numV) (Fin numW) k), UniqueGames.value game 1 - δMaxCut.value (reduce game) (1 - δ) * (1 + ρ) / 2) ∀ (game : UniqueGames.UniqueGame (Fin numV) (Fin numW) k), UniqueGames.value game δMaxCut.value (reduce game) (1 + maxBalancedNoiseStab ρ δ k) / 2
                                                                    theorem longCode_MIS_stabBound (ρ : ) (hρ_pos : 0 < ρ) (hρ_lt : ρ < 1) (ε' : ) (hε' : ε' > 0) :
                                                                    δ_MIS > 0, ∀ (k : ) (δ : ), 0 < δδ δ_MISδ < 1maxBalancedNoiseStab ρ δ k 1 - 2 / Real.pi * Real.arccos ρ + ε'
                                                                    theorem longCodeTest_bounds (ρ : ) (hρ_pos : 0 < ρ) (hρ_lt : ρ < 1) (ε : ) ( : ε > 0) :
                                                                    δ₀ > 0, ∀ (δ : ), 0 < δδ δ₀δ < 1∀ (k numV numW : ), ∃ (numVerts : ) (reduce : UniqueGames.UniqueGame (Fin numV) (Fin numW) kMaxCut.MaxCutInstance (Fin numVerts)), IsPolyTimeLongCodeReduction reduce (∀ (game : UniqueGames.UniqueGame (Fin numV) (Fin numW) k), UniqueGames.value game 1 - δMaxCut.value (reduce game) (1 - δ) * (1 + ρ) / 2) ∀ (game : UniqueGames.UniqueGame (Fin numV) (Fin numW) k), UniqueGames.value game δMaxCut.value (reduce game) 1 - 1 / Real.pi * Real.arccos ρ + ε
                                                                    theorem longCodeReduction_maxcut (ρ : ) (hρ_pos : 0 < ρ) (hρ_lt : ρ < 1) (ε : ) ( : ε > 0) :
                                                                    δ > 0, ∀ (k numV numW : ), ∃ (numVerts : ) (reduce : UniqueGames.UniqueGame (Fin numV) (Fin numW) kMaxCut.MaxCutInstance (Fin numVerts)), IsPolyTimeLongCodeReduction reduce (∀ (game : UniqueGames.UniqueGame (Fin numV) (Fin numW) k), UniqueGames.value game 1 - δMaxCut.value (reduce game) 1 / 2 + ρ / 2 - ε) ∀ (game : UniqueGames.UniqueGame (Fin numV) (Fin numW) k), UniqueGames.value game δMaxCut.value (reduce game) 1 - 1 / Real.pi * Real.arccos ρ + ε
                                                                    theorem ug_hardness_maxcut :
                                                                    (∀ (ε δ : ), ε > 0δ > 0∃ (k : ), UniqueGames.IsNPHardGapUniqueGame k (1 - ε) δ)∀ (ρ : ), 0 < ρρ < 1ε > 0, MaxCut.IsNPHardGapMaxCut (1 / 2 + ρ / 2 - ε) (1 - 1 / Real.pi * Real.arccos ρ + ε)
                                                                    theorem ug_hardness_maxcut_of_ugc (hUGC : ∀ (ε δ : ), ε > 0δ > 0∃ (k : ), UniqueGames.IsNPHardGapUniqueGame k (1 - ε) δ) (ε : ) :