Documentation

LeanPool.Brouwer.Brouwer

Brouwer's fixed-point theorem on a simplex #

This file derives Brouwer's fixed-point theorem for a continuous self-map of the standard simplex from Scarf's lemma. The combinatorial type TT n l of integer points of the scaled simplex carries an IndexedLOrder; applying Scarf's lemma to finer and finer subdivisions and passing to a convergent subsequence of the resulting colorful points produces a fixed point.

instance Pi.Lex.finite {α : Type u_1} {β : αType u_2} [Finite α] [∀ (a : α), Finite (β a)] :
Finite (Lex ((i : α) → (fun (a : α) => β a) i))

A dependent product of finite, indexed by finite, is a finite.

@[reducible, inline]
abbrev TT (n l : ℕ+) :
Set (Lex ((i : Fin n) → (fun (x : Fin n) => Fin (l + 1)) i))

The combinatorial type of integer points of the l-scaled n-simplex.

Equations
Instances For
    instance TT.finite (n l : ℕ+) :
    Finite (TT n l)
    @[implicit_reducible]
    instance TT.inhabited (n l : ℕ+) :
    Inhabited (TT n l)
    Equations
    @[implicit_reducible]
    instance TT.funlike (n l : ℕ+) :
    FunLike (↑(TT n l)) (Fin n) (Fin (l + 1))
    Equations
    • TT.funlike n l = { coe := fun (a : (TT n l)) => a, coe_injective := }
    noncomputable def TTtostdSimplex {n l : ℕ+} (x : (TT n l)) :
    (stdSimplex (Fin n))

    The point of the standard simplex associated to an integer point of TT n l.

    Equations
    Instances For
      @[implicit_reducible]
      noncomputable instance TT.CoestdSimplex (n l : ℕ+) :
      CoeOut (TT n l) (stdSimplex (Fin n))
      Equations
      @[reducible, inline]
      abbrev TT.Ilt {n l : ℕ+} (i : Fin n) (x y : (TT n l)) :

      The strict order on TT n l at index i, comparing the i-th coordinate first.

      Equations
      Instances For
        instance TT.IST (n l : ℕ+) (i : Fin n) :
        IsStrictTotalOrder (↑(TT n l)) (Ilt i)
        @[implicit_reducible]
        noncomputable instance TT.ILO {n l : ℕ+} :
        IndexedLOrder (Fin n) (TT n l)
        Equations
        theorem TT.Ilt_def (n l : ℕ+) (i : Fin n) (a b : (TT n l)) :
        theorem TT.Ilt_keyprop (n l : ℕ+) (i : Fin n) (a b : (TT n l)) :
        a i < b iIndexedLOrder.ltAt i a b
        theorem size_bound_key (n l : ℕ+) (σ : Finset (TT n l)) (C : Finset (Fin n)) (h : IndexedLOrder.isDominant σ C) (h2 : σ.Nonempty) :
        l < kC, (Finset.image (fun (x : (TT n l)) => (x k)) σ).min' + C.card
        theorem size_bound_in (n l : ℕ+) (σ : Finset (TT n l)) (C : Finset (Fin n)) (h : IndexedLOrder.isDominant σ C) (x : (TT n l)) :
        x σyσ, ∀ (i : Fin n), |(x i) - (y i)| < 2 * (n + 1)
        theorem size_bound_out (n l : ℕ+) (σ : Finset (TT n l)) (C : Finset (Fin n)) (h : IndexedLOrder.isDominant σ C) (x : (TT n l)) :
        x σiC, (x i) < n + 1
        instance stdSimplex.upidx {n : ℕ+} (x y : (stdSimplex (Fin n))) :
        Nonempty {i : Fin n | x i y i}
        noncomputable def stdSimplex.pick {n : ℕ+} (x y : (stdSimplex (Fin n))) :
        {i : Fin n | x i y i}

        A chosen index where x does not exceed y, for two simplex points.

        Equations
        Instances For
          noncomputable def Fcolor {n l : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) (x : (TT n l)) :
          Fin n

          The Scarf coloring induced on TT n l by a self-map f of the simplex.

          Equations
          Instances For
            noncomputable def roomSeq {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) (l' : ) :

            A colorful room produced by Scarf lemma for the l-th subdivision.

            Equations
            Instances For
              noncomputable def roomPointSeq {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) (l' : ) :
              (TT n l' + 1, )

              A point of the colorful room roomSeq, as an integer point of TT.

              Equations
              Instances For
                def mkSubseq (f : ) (h : ∀ (n : ), n < f n) :

                The subsequence of indices generated by iterating a step function.

                Equations
                Instances For
                  theorem exists_subseq_constant_of_finite_image {α : Type u_1} {s : Finset α} (e : α) (he : ∀ (n : ), e n s) :
                  as, ∃ (g : ↪o ), ∀ (n : ), e (g n) = a
                  theorem constant_index_set_nonempty {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) :
                  Nonempty {(a, g) : Finset (Fin n) × ( ↪o ) | ∀ (l' : ), (↑(roomSeq f (g l'))).2 = a}
                  noncomputable def gpkg {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) :
                  {(a, g) : Finset (Fin n) × ( ↪o ) | ∀ (l' : ), (↑(roomSeq f (g l'))).2 = a}

                  A constant-index colorful subsequence package extracted from roomSeq.

                  Equations
                  Instances For
                    @[reducible, inline]
                    noncomputable abbrev g1 {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) :

                    The index subsequence selected by gpkg.

                    Equations
                    Instances For
                      theorem dominant_coords_tend_to_zero {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) (C : Finset (Fin n)) (g : ↪o ) (h_const : ∀ (l' : ), (↑(roomSeq f (g l'))).2 = C) (i : Fin n) :
                      iCFilter.Tendsto (fun (l' : ) => (TTtostdSimplex (roomPointSeq f (g l'))) i) Filter.atTop (nhds 0)
                      theorem hpkgAux {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) :
                      Nonempty {(z, h) : (stdSimplex (Fin n)) × () | StrictMono h Filter.Tendsto ((fun (l' : ) => TTtostdSimplex (roomPointSeq f ((g1 f) l'))) h) Filter.atTop (nhds z)}
                      noncomputable def hpkg {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) :
                      {(z, h) : (stdSimplex (Fin n)) × () | StrictMono h Filter.Tendsto ((fun (l' : ) => TTtostdSimplex (roomPointSeq f ((g1 f) l'))) h) Filter.atTop (nhds z)}

                      A convergent colorful subsequence package, with its limit point.

                      Equations
                      Instances For
                        theorem tendsto_diam_to_zero {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) :
                        Filter.Tendsto (fun (k : ) => Metric.diam (Finset.image (fun (x : (TT n (g1 f) ((↑(hpkg f)).2 k) + 1, )) => TTtostdSimplex x) (↑(roomSeq f ((g1 f) ((↑(hpkg f)).2 k)))).1)) Filter.atTop (nhds 0)
                        theorem f_coords_ge_z_coords {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) (hf : Continuous f) (i : Fin n) :
                        i (↑(gpkg f)).1(f (↑(hpkg f)).1) i (↑(hpkg f)).1 i
                        theorem Brouwer {n : ℕ+} (f : (stdSimplex (Fin n))(stdSimplex (Fin n))) (hf : Continuous f) :
                        ∃ (x : (stdSimplex (Fin n))), f x = x