Documentation

Mathlib.GroupTheory.Perm.Support

support of a permutation #

Main definitions #

In the following, f g : Equiv.Perm α.

Assume α is a Fintype:

def Equiv.Perm.Disjoint {α : Type u_1} (f g : Perm α) :

Two permutations f and g are Disjoint if their supports are disjoint, i.e., every element is fixed either by f, or by g.

Equations
    Instances For
      theorem Equiv.Perm.Disjoint.symm {α : Type u_1} {f g : Perm α} :
      f.Disjoint gg.Disjoint f
      theorem Equiv.Perm.disjoint_comm {α : Type u_1} {f g : Perm α} :
      theorem Equiv.Perm.Disjoint.commute {α : Type u_1} {f g : Perm α} (h : f.Disjoint g) :
      @[simp]
      theorem Equiv.Perm.disjoint_one_left {α : Type u_1} (f : Perm α) :
      @[simp]
      theorem Equiv.Perm.disjoint_one_right {α : Type u_1} (f : Perm α) :
      theorem Equiv.Perm.disjoint_iff_eq_or_eq {α : Type u_1} {f g : Perm α} :
      f.Disjoint g ∀ (x : α), f x = x g x = x
      @[simp]
      theorem Equiv.Perm.disjoint_refl_iff {α : Type u_1} {f : Perm α} :
      f.Disjoint f f = 1
      theorem Equiv.Perm.Disjoint.inv_left {α : Type u_1} {f g : Perm α} (h : f.Disjoint g) :
      theorem Equiv.Perm.Disjoint.inv_right {α : Type u_1} {f g : Perm α} (h : f.Disjoint g) :
      @[simp]
      theorem Equiv.Perm.disjoint_inv_left_iff {α : Type u_1} {f g : Perm α} :
      @[simp]
      theorem Equiv.Perm.disjoint_inv_right_iff {α : Type u_1} {f g : Perm α} :
      theorem Equiv.Perm.Disjoint.mul_left {α : Type u_1} {f g h : Perm α} (H1 : f.Disjoint h) (H2 : g.Disjoint h) :
      (f * g).Disjoint h
      theorem Equiv.Perm.Disjoint.mul_right {α : Type u_1} {f g h : Perm α} (H1 : f.Disjoint g) (H2 : f.Disjoint h) :
      f.Disjoint (g * h)
      @[simp]
      theorem Equiv.Perm.disjoint_conj {α : Type u_1} {f g : Perm α} (h : Perm α) :
      (h * f * h⁻¹).Disjoint (h * g * h⁻¹) f.Disjoint g
      theorem Equiv.Perm.Disjoint.conj {α : Type u_1} {f g : Perm α} (H : f.Disjoint g) (h : Perm α) :
      (h * f * h⁻¹).Disjoint (h * g * h⁻¹)
      theorem Equiv.Perm.disjoint_prod_right {α : Type u_1} {f : Perm α} (l : List (Perm α)) (h : gl, f.Disjoint g) :
      theorem Equiv.Perm.disjoint_noncommProd_right {α : Type u_1} {g : Perm α} {ι : Type u_2} {k : ιPerm α} {s : Finset ι} (hs : (↑s).Pairwise fun (i j : ι) => Commute (k i) (k j)) (hg : is, g.Disjoint (k i)) :
      theorem Equiv.Perm.disjoint_prod_perm {α : Type u_1} {l₁ l₂ : List (Perm α)} (hl : List.Pairwise Disjoint l₁) (hp : l₁.Perm l₂) :
      l₁.prod = l₂.prod
      theorem Equiv.Perm.nodup_of_pairwise_disjoint {α : Type u_1} {l : List (Perm α)} (h1 : 1l) (h2 : List.Pairwise Disjoint l) :
      theorem Equiv.Perm.pow_apply_eq_self_of_apply_eq_self {α : Type u_1} {f : Perm α} {x : α} (hfx : f x = x) (n : ) :
      (f ^ n) x = x
      theorem Equiv.Perm.zpow_apply_eq_self_of_apply_eq_self {α : Type u_1} {f : Perm α} {x : α} (hfx : f x = x) (n : ) :
      (f ^ n) x = x
      theorem Equiv.Perm.pow_apply_eq_of_apply_apply_eq_self {α : Type u_1} {f : Perm α} {x : α} (hffx : f (f x) = x) (n : ) :
      (f ^ n) x = x (f ^ n) x = f x
      theorem Equiv.Perm.zpow_apply_eq_of_apply_apply_eq_self {α : Type u_1} {f : Perm α} {x : α} (hffx : f (f x) = x) (i : ) :
      (f ^ i) x = x (f ^ i) x = f x
      theorem Equiv.Perm.Disjoint.mul_apply_eq_iff {α : Type u_1} {σ τ : Perm α} (hστ : σ.Disjoint τ) {a : α} :
      (σ * τ) a = a σ a = a τ a = a
      theorem Equiv.Perm.Disjoint.mul_eq_one_iff {α : Type u_1} {σ τ : Perm α} (hστ : σ.Disjoint τ) :
      σ * τ = 1 σ = 1 τ = 1
      theorem Equiv.Perm.Disjoint.zpow_disjoint_zpow {α : Type u_1} {σ τ : Perm α} (hστ : σ.Disjoint τ) (m n : ) :
      (σ ^ m).Disjoint (τ ^ n)
      theorem Equiv.Perm.Disjoint.pow_disjoint_pow {α : Type u_1} {σ τ : Perm α} (hστ : σ.Disjoint τ) (m n : ) :
      (σ ^ m).Disjoint (τ ^ n)
      def Equiv.Perm.IsSwap {α : Type u_1} [DecidableEq α] (f : Perm α) :

      f.IsSwap indicates that the permutation f is a transposition of two elements.

      Equations
        Instances For
          @[simp]
          theorem Equiv.Perm.ofSubtype_swap_eq {α : Type u_1} [DecidableEq α] {p : αProp} [DecidablePred p] (x y : Subtype p) :
          ofSubtype (swap x y) = swap x y
          theorem Equiv.Perm.IsSwap.of_subtype_isSwap {α : Type u_1} [DecidableEq α] {p : αProp} [DecidablePred p] {f : Perm (Subtype p)} (h : f.IsSwap) :
          theorem Equiv.Perm.ne_and_ne_of_swap_mul_apply_ne_self {α : Type u_1} [DecidableEq α] {f : Perm α} {x y : α} (hy : (swap x (f x) * f) y y) :
          f y y y x
          theorem Equiv.Perm.set_support_inv_eq {α : Type u_1} (p : Perm α) :
          {x : α | p⁻¹ x x} = {x : α | p x x}
          theorem Equiv.Perm.set_support_apply_mem {α : Type u_1} {p : Perm α} {a : α} :
          p a {x : α | p x x} a {x : α | p x x}
          theorem Equiv.Perm.set_support_zpow_subset {α : Type u_1} (p : Perm α) (n : ) :
          {x : α | (p ^ n) x x} {x : α | p x x}
          theorem Equiv.Perm.set_support_mul_subset {α : Type u_1} (p q : Perm α) :
          {x : α | (p * q) x x} {x : α | p x x} {x : α | q x x}
          @[simp]
          theorem Equiv.Perm.apply_pow_apply_eq_iff {α : Type u_1} (f : Perm α) (n : ) {x : α} :
          f ((f ^ n) x) = (f ^ n) x f x = x
          @[simp]
          theorem Equiv.Perm.apply_zpow_apply_eq_iff {α : Type u_1} (f : Perm α) (n : ) {x : α} :
          f ((f ^ n) x) = (f ^ n) x f x = x
          def Equiv.Perm.support {α : Type u_1} [DecidableEq α] [Fintype α] (f : Perm α) :

          The Finset of nonfixed points of a permutation.

          Equations
            Instances For
              @[simp]
              theorem Equiv.Perm.mem_support {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {x : α} :
              x f.support f x x
              theorem Equiv.Perm.notMem_support {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {x : α} :
              xf.support f x = x
              @[deprecated Equiv.Perm.notMem_support (since := "2025-05-23")]
              theorem Equiv.Perm.not_mem_support {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {x : α} :
              xf.support f x = x

              Alias of Equiv.Perm.notMem_support.

              theorem Equiv.Perm.coe_support_eq_set_support {α : Type u_1} [DecidableEq α] [Fintype α] (f : Perm α) :
              f.support = {x : α | f x x}
              @[simp]
              theorem Equiv.Perm.support_eq_empty_iff {α : Type u_1} [DecidableEq α] [Fintype α] {σ : Perm α} :
              σ.support = σ = 1
              @[simp]
              theorem Equiv.Perm.support_one {α : Type u_1} [DecidableEq α] [Fintype α] :
              @[simp]
              theorem Equiv.Perm.support_congr {α : Type u_1} [DecidableEq α] [Fintype α] {f g : Perm α} (h : f.support g.support) (h' : xg.support, f x = g x) :
              f = g
              theorem Equiv.Perm.mem_support_iff_of_commute {α : Type u_1} [DecidableEq α] [Fintype α] {g c : Perm α} (hgc : Commute g c) (x : α) :

              If g and c commute, then g stabilizes the support of c

              theorem Equiv.Perm.support_mul_le {α : Type u_1} [DecidableEq α] [Fintype α] (f g : Perm α) :
              (f * g).support f.supportg.support
              theorem Equiv.Perm.exists_mem_support_of_mem_support_prod {α : Type u_1} [DecidableEq α] [Fintype α] {l : List (Perm α)} {x : α} (hx : x l.prod.support) :
              fl, x f.support
              theorem Equiv.Perm.support_pow_le {α : Type u_1} [DecidableEq α] [Fintype α] (σ : Perm α) (n : ) :
              (σ ^ n).support σ.support
              @[simp]
              theorem Equiv.Perm.support_inv {α : Type u_1} [DecidableEq α] [Fintype α] (σ : Perm α) :
              theorem Equiv.Perm.apply_mem_support {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {x : α} :
              theorem Equiv.Perm.isInvariant_of_support_le {α : Type u_1} [DecidableEq α] [Fintype α] {c : Perm α} {s : Finset α} (hcs : c.support s) (x : α) :
              c x s x s

              The support of a permutation is invariant

              theorem Equiv.Perm.ofSubtype_eq_iff {α : Type u_1} [DecidableEq α] [Fintype α] {g c : Perm α} {s : Finset α} (hg : ∀ (x : α), g x s x s) :
              ofSubtype (g.subtypePerm hg) = c c.support s ∀ (hc' : ∀ (x : α), c x s x s), c.subtypePerm hc' = g.subtypePerm hg

              A permutation c is the extension of a restriction of g to s iff its support is contained in s and its restriction is that of g

              theorem Equiv.Perm.mem_support_of_mem_noncommProd_support {α : Type u_2} {β : Type u_3} [DecidableEq β] [Fintype β] {s : Finset α} {f : αPerm β} {comm : (↑s).Pairwise (Function.onFun Commute f)} {x : β} (hx : x (s.noncommProd f comm).support) :
              as, x (f a).support
              theorem Equiv.Perm.pow_apply_mem_support {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {n : } {x : α} :
              (f ^ n) x f.support x f.support
              theorem Equiv.Perm.zpow_apply_mem_support {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {n : } {x : α} :
              (f ^ n) x f.support x f.support
              theorem Equiv.Perm.pow_eq_on_of_mem_support {α : Type u_1} [DecidableEq α] [Fintype α] {f g : Perm α} (h : xf.support g.support, f x = g x) (k : ) (x : α) :
              x f.support g.support(f ^ k) x = (g ^ k) x
              theorem Equiv.Perm.Disjoint.support_mul {α : Type u_1} [DecidableEq α] [Fintype α] {f g : Perm α} (h : f.Disjoint g) :
              theorem Equiv.Perm.support_prod_of_pairwise_disjoint {α : Type u_1} [DecidableEq α] [Fintype α] (l : List (Perm α)) (h : List.Pairwise Disjoint l) :
              l.prod.support = List.foldr (fun (x1 x2 : Finset α) => x1x2) (List.map support l)
              theorem Equiv.Perm.support_noncommProd {α : Type u_1} [DecidableEq α] [Fintype α] {ι : Type u_2} {k : ιPerm α} {s : Finset ι} (hs : (↑s).Pairwise fun (i j : ι) => (k i).Disjoint (k j)) :
              (s.noncommProd k ).support = s.biUnion fun (i : ι) => (k i).support
              theorem Equiv.Perm.support_prod_le {α : Type u_1} [DecidableEq α] [Fintype α] (l : List (Perm α)) :
              l.prod.support List.foldr (fun (x1 x2 : Finset α) => x1x2) (List.map support l)
              theorem Equiv.Perm.support_zpow_le {α : Type u_1} [DecidableEq α] [Fintype α] (σ : Perm α) (n : ) :
              (σ ^ n).support σ.support
              @[simp]
              theorem Equiv.Perm.support_swap {α : Type u_1} [DecidableEq α] [Fintype α] {x y : α} (h : x y) :
              (swap x y).support = {x, y}
              theorem Equiv.Perm.support_swap_iff {α : Type u_1} [DecidableEq α] [Fintype α] (x y : α) :
              (swap x y).support = {x, y} x y
              theorem Equiv.Perm.support_swap_mul_swap {α : Type u_1} [DecidableEq α] [Fintype α] {x y z : α} (h : [x, y, z].Nodup) :
              (swap x y * swap y z).support = {x, y, z}
              theorem Equiv.Perm.support_swap_mul_ge_support_diff {α : Type u_1} [DecidableEq α] [Fintype α] (f : Perm α) (x y : α) :
              f.support \ {x, y} (swap x y * f).support
              theorem Equiv.Perm.support_swap_mul_eq {α : Type u_1} [DecidableEq α] [Fintype α] (f : Perm α) (x : α) (h : f (f x) x) :
              (swap x (f x) * f).support = f.support \ {x}
              theorem Equiv.Perm.mem_support_swap_mul_imp_mem_support_ne {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {x y : α} (hy : y (swap x (f x) * f).support) :
              y f.support y x
              theorem Equiv.Perm.Disjoint.mem_imp {α : Type u_1} [DecidableEq α] [Fintype α] {f g : Perm α} (h : f.Disjoint g) {x : α} (hx : x f.support) :
              xg.support
              theorem Equiv.Perm.eq_on_support_mem_disjoint {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {l : List (Perm α)} (h : f l) (hl : List.Pairwise Disjoint l) (x : α) :
              x f.supportf x = l.prod x
              theorem Equiv.Perm.Disjoint.mono {α : Type u_1} [DecidableEq α] [Fintype α] {f g x y : Perm α} (h : f.Disjoint g) (hf : x.support f.support) (hg : y.support g.support) :
              theorem Equiv.Perm.support_le_prod_of_mem {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {l : List (Perm α)} (h : f l) (hl : List.Pairwise Disjoint l) :
              @[simp]
              theorem Equiv.Perm.support_extend_domain {α : Type u_1} [DecidableEq α] [Fintype α] {β : Type u_2} [DecidableEq β] [Fintype β] {p : βProp} [DecidablePred p] (f : α Subtype p) {g : Perm α} :
              theorem Equiv.Perm.card_support_extend_domain {α : Type u_1} [DecidableEq α] [Fintype α] {β : Type u_2} [DecidableEq β] [Fintype β] {p : βProp} [DecidablePred p] (f : α Subtype p) {g : Perm α} :
              theorem Equiv.Perm.card_support_eq_zero {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} :
              f.support.card = 0 f = 1
              theorem Equiv.Perm.one_lt_card_support_of_ne_one {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} (h : f 1) :
              @[simp]
              theorem Equiv.Perm.card_support_le_one {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} :
              f.support.card 1 f = 1
              theorem Equiv.Perm.two_le_card_support_of_ne_one {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} (h : f 1) :
              theorem Equiv.Perm.card_support_swap_mul {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} {x : α} (hx : f x x) :
              (swap x (f x) * f).support.card < f.support.card
              theorem Equiv.Perm.card_support_swap {α : Type u_1} [DecidableEq α] [Fintype α] {x y : α} (hxy : x y) :
              (swap x y).support.card = 2
              @[simp]
              theorem Equiv.Perm.card_support_eq_two {α : Type u_1} [DecidableEq α] [Fintype α] {f : Perm α} :
              theorem Equiv.Perm.Disjoint.card_support_mul {α : Type u_1} [DecidableEq α] [Fintype α] {f g : Perm α} (h : f.Disjoint g) :
              @[simp]
              theorem Equiv.Perm.support_subtypePerm {α : Type u_1} [DecidableEq α] {s : Finset α} (f : Perm α) (h : ∀ (x : α), f x s x s) :
              (f.subtypePerm h).support = {x : { x : α // x s } | f x x}
              @[deprecated Equiv.Perm.support_subtypePerm (since := "2025-05-19")]
              theorem Equiv.Perm.support_subtype_perm {α : Type u_1} [DecidableEq α] {s : Finset α} (f : Perm α) (h : ∀ (x : α), f x s x s) :
              (f.subtypePerm h).support = {x : { x : α // x s } | f x x}

              Alias of Equiv.Perm.support_subtypePerm.

              Fixed points #

              theorem Equiv.Perm.fixed_point_card_lt_of_ne_one {α : Type u_1} [DecidableEq α] [Fintype α] {σ : Perm α} (h : σ 1) :
              {x : α | σ x = x}.card < Fintype.card α - 1
              @[simp]
              theorem Equiv.Perm.support_conj {α : Type u_1} [Fintype α] [DecidableEq α] {σ τ : Perm α} :
              theorem Equiv.Perm.card_support_conj {α : Type u_1} [Fintype α] [DecidableEq α] {σ τ : Perm α} :
              (σ * τ * σ⁻¹).support.card = τ.support.card