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) :
        @[simp]
        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
        • f.restr A = { toPartialEquiv := f.restr A, isDecompOn' := }
        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
              • f.symm = { toPartialEquiv := f.symm, isDecompOn' := }
              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) :
                @[simp]
                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
                @[simp]
                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