Documentation

Mathlib.Algebra.Group.Action.Equidecomp

Equidecompositions #

This file develops the basic theory of equidecompositions.

Main Definitions #

Let G be a group acting on a space X, and A B : Set X.

An equidecomposition of A and B is typically defined as a finite partition of A together with a finite list of elements of G of the same size such that applying each element to the matching piece of the partition yields a partition of B.

This yields a bijection f : A ≃ B where, given a : A, f a = γ • a for γ : G the group element for a's piece of the partition. Reversing this is easy, and so we get an equivalent (up to the choice of group elements) definition: an Equidecomposition of A and B is a bijection f : A ≃ B such that for some S : Finset G, f a ∈ S • a for all a.

We take this as our definition as it is easier to work with. It is implemented as an element PartialEquiv X X with source A and target B.

Implementation Notes #

TODO #

def Equidecomp.IsDecompOn {X : Type u_1} {G : Type u_2} [SMul G X] (f : XX) (A : Set X) (S : Finset G) :

Let G act on a space X and A : Set X. We say f : X → X is a decomposition on A as witnessed by some S : Finset G if for all a ∈ A, the value f a can be obtained by applying some element of S to a instead.

More familiarly, the restriction of f to A is the result of partitioning A into finitely many pieces, then applying a single element of G to each piece.

Equations
    Instances For
      structure Equidecomp (X : Type u_1) (G : Type u_2) [SMul G X] extends PartialEquiv X X :
      Type u_1

      Let G act on a space X. An Equidecomposition with respect to X and G is a partial bijection f : PartialEquiv X X with the property that for some set elements : Finset G, (which we record), for each a ∈ f.source, f a can be obtained by applying some g ∈ elements instead. We call f an equidecomposition of f.source with f.target.

      More familiarly, f is the result of partitioning f.source into finitely many pieces, then applying a single element of G to each to get a partition of f.target.

      Instances For
        instance Equidecomp.instCoeFunForall {X : Type u_1} {G : Type u_2} [SMul G X] :
        CoeFun (Equidecomp X G) fun (x : Equidecomp X G) => XX

        Note that Equidecomp X G is not FunLike.

        Equations
          noncomputable def Equidecomp.witness {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) :

          A finite set of group elements witnessing that f is an equidecomposition.

          Equations
            Instances For
              theorem Equidecomp.isDecompOn {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) :
              theorem Equidecomp.apply_mem_target {X : Type u_1} {G : Type u_2} [SMul G X] {f : Equidecomp X G} {x : X} (h : x f.source) :
              theorem Equidecomp.IsDecompOn.mono {X : Type u_1} {G : Type u_2} [SMul G X] {f f' : XX} {A A' : Set X} {S : Finset G} (h : IsDecompOn f A S) (hA' : A' A) (hf' : Set.EqOn f f' A') :
              IsDecompOn f' A' S
              def Equidecomp.restr {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) (A : Set X) :

              The restriction of an equidecomposition as an equidecomposition.

              Equations
                Instances For
                  @[simp]
                  theorem Equidecomp.restr_toFun {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) (A : Set X) (a✝ : X) :
                  (f.restr A).toPartialEquiv a✝ = f.toPartialEquiv a✝
                  @[simp]
                  theorem Equidecomp.restr_target {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) (A : Set X) :
                  (f.restr A).target = f.target f.symm ⁻¹' A
                  @[simp]
                  theorem Equidecomp.restr_source {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) (A : Set X) :
                  (f.restr A).source = f.source A
                  @[simp]
                  theorem Equidecomp.restr_invFun {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) (A : Set X) (a✝ : X) :
                  (f.restr A).invFun a✝ = f.symm a✝
                  @[simp]
                  theorem Equidecomp.toPartialEquiv_restr {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) (A : Set X) :
                  theorem Equidecomp.source_restr {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) {A : Set X} (hA : A f.source) :
                  (f.restr A).source = A
                  theorem Equidecomp.restr_of_source_subset {X : Type u_1} {G : Type u_2} [SMul G X] {f : Equidecomp X G} {A : Set X} (hA : f.source A) :
                  f.restr A = f
                  @[simp]
                  theorem Equidecomp.restr_univ {X : Type u_1} {G : Type u_2} [SMul G X] (f : Equidecomp X G) :
                  def Equidecomp.refl (X : Type u_1) (G : Type u_2) [Monoid G] [MulAction G X] :

                  The identity function is an equidecomposition of the space with itself.

                  Equations
                    Instances For
                      theorem Equidecomp.IsDecompOn.comp' {X : Type u_1} {G : Type u_2} [Monoid G] [MulAction G X] {g f : XX} {B A : Set X} {T S : Finset G} (hg : IsDecompOn g B T) (hf : IsDecompOn f A S) :
                      IsDecompOn (g f) (A f ⁻¹' B) (T * S)
                      theorem Equidecomp.IsDecompOn.comp {X : Type u_1} {G : Type u_2} [Monoid G] [MulAction G X] {g f : XX} {B A : Set X} {T S : Finset G} (hg : IsDecompOn g B T) (hf : IsDecompOn f A S) (h : Set.MapsTo f A B) :
                      IsDecompOn (g f) A (T * S)
                      noncomputable def Equidecomp.trans {X : Type u_1} {G : Type u_2} [Monoid G] [MulAction G X] (f g : Equidecomp X G) :

                      The composition of two equidecompositions as an equidecomposition.

                      Equations
                        Instances For
                          @[simp]
                          theorem Equidecomp.trans_toPartialEquiv {X : Type u_1} {G : Type u_2} [Monoid G] [MulAction G X] (f g : Equidecomp X G) :
                          theorem Equidecomp.IsDecompOn.of_leftInvOn {X : Type u_1} {G : Type u_2} [Group G] [MulAction G X] {f g : XX} {A : Set X} {S : Finset G} (hf : IsDecompOn f A S) (h : Set.LeftInvOn g f A) :
                          noncomputable def Equidecomp.symm {X : Type u_1} {G : Type u_2} [Group G] [MulAction G X] (f : Equidecomp X G) :

                          The inverse function of an equidecomposition as an equidecomposition.

                          Equations
                            Instances For
                              @[simp]
                              theorem Equidecomp.symm_toPartialEquiv {X : Type u_1} {G : Type u_2} [Group G] [MulAction G X] (f : Equidecomp X G) :
                              theorem Equidecomp.map_target {X : Type u_1} {G : Type u_2} [Group G] [MulAction G X] {f : Equidecomp X G} {x : X} (h : x f.target) :
                              theorem Equidecomp.left_inv {X : Type u_1} {G : Type u_2} [Group G] [MulAction G X] {f : Equidecomp X G} {x : X} (h : x f.source) :
                              f.symm (f.toPartialEquiv x) = x
                              theorem Equidecomp.right_inv {X : Type u_1} {G : Type u_2} [Group G] [MulAction G X] {f : Equidecomp X G} {x : X} (h : x f.target) :
                              f.toPartialEquiv (f.symm x) = x
                              @[simp]
                              theorem Equidecomp.symm_symm {X : Type u_1} {G : Type u_2} [Group G] [MulAction G X] (f : Equidecomp X G) :
                              f.symm.symm = f
                              @[simp]
                              theorem Equidecomp.refl_symm {X : Type u_1} {G : Type u_2} [Group G] [MulAction G X] :
                              (refl X G).symm = refl X G
                              @[simp]
                              theorem Equidecomp.restr_refl_symm {X : Type u_1} {G : Type u_2} [Group G] [MulAction G X] (A : Set X) :
                              ((refl X G).restr A).symm = (refl X G).restr A