Zulip Chat Archive

Stream: maths

Topic: Infinite cyclic permutations


Yakov Pechersky (May 14 2021 at 15:27):

What is the proper definition of "cyclic permutation" if working over an infinite type? The current definition in mathlib is

/-- A permutation is a cycle when any two nonfixed points of the permutation are related by repeated
  application of the permutation. -/
def is_cycle (f : perm β) : Prop :=  x, f x  x   y, f y  y   i : , (f ^ i) x = y

However, that indicates that (+ 1) is a cyclic permutation:

import group_theory.perm.cycles

open equiv equiv.perm

@[simps apply symm_apply]
def succ_equiv : perm  :=
{ to_fun := (+ 1),
  inv_fun := λ x, x - 1,
  left_inv := λ x, by simp,
  right_inv := λ x, by simp }

@[simp] lemma succ_equiv_inv_apply (x : ) :
  succ_equiv⁻¹ x = x - 1 :=
by simp [inv_def]

@[simp] lemma succ_equiv_pow_apply (k : ) (x : ) :
  (succ_equiv ^ k) x = x + k :=
begin
  induction k with k hk generalizing x,
  { simp },
  { simp [pow_succ', hk, add_comm, add_assoc, add_left_comm] }
end

@[simp] lemma succ_equiv_gpow_apply (k : ) (x : ) :
  (succ_equiv ^ k) x = x + k :=
begin
  induction k using int.induction_on with k IH k IH,
  { simp },
  { simp [gpow_add, add_comm, add_assoc, add_left_comm] },
  { simp [gpow_sub, add_comm, add_assoc, add_left_comm, inv_def, symm_apply_eq,
        add_comm, add_assoc, add_left_comm, add_sub] }
end

lemma infinite_cycle : is_cycle succ_equiv :=
begin
  rw is_cycle,
  use 0,
  simp
end

Would it make sense to redefine is_cycle p to somehow encode that ∃ (k : ℕ) (hk : 1 < k), p ^ k = 1?

Mario Carneiro (May 14 2021 at 15:28):

Yes, (+ 1) is cyclic

Mario Carneiro (May 14 2021 at 15:29):

int is also a cyclic group

Yakov Pechersky (May 14 2021 at 15:31):

OK, and does factoring a permutation into its disjoint cycles only make sense in finite contexts?

David Wärn (May 14 2021 at 15:32):

It should always make sense with this definition

Mario Carneiro (May 14 2021 at 15:33):

well you have to do something special since there could be an ininite number of pairwise disjoint cycles but yes it works

David Wärn (May 14 2021 at 15:36):

It's the classification of group actions by Z. Generally if you have G acting on X, then X can be partitioned into orbits, such that each orbit looks like the action of G on G / H for some H

Yakov Pechersky (May 14 2021 at 15:37):

Even computably, it works?

Yakov Pechersky (May 14 2021 at 15:38):

cycle_factors as it is currently in mathlib assumes fintype. Does one rely on some sort of attach magic to make it work over infinite types?

@[simps apply]
protected def attach (p : perm α) : perm {x | p x  x} :=
perm.subtype_perm p (by simp)

Mario Carneiro (May 14 2021 at 16:09):

Even computably, it works?

No, the "in the same cycle" relation is not decidable

Yaël Dillies (May 14 2021 at 18:29):

Why do we require f x ≠ x? Aren't one-cycles cycles?

Mario Carneiro (May 14 2021 at 18:30):

I think this is something like "1 is not a prime"

Mario Carneiro (May 14 2021 at 18:31):

if you include 1 cycles then you can't say that a cycle is a cycle since there are all those 1 cycles on all the other points

Mario Carneiro (May 14 2021 at 18:32):

I think you would need another representation of "cycle" that picks out the subset that is the cycle to be able to talk about 1-cycles properly

Kevin Buzzard (May 14 2021 at 18:36):

By "an element is a product of disjoint cycles" I've always implicitly assumed that the 1-cycles are there but not mentioned, but now I see there's another approach. It's a bit different to "1 is not prime" but it's very similar. Is a cycle in a symmetric group a pair (g,S) where S is a subset of the set plus a proof that the cycle acts transitively on the set and fixes everything else? If so then the identity is a cycle in more than one way in general. If the cycle is determined by g only then the identity will have to be the empty product of cycles (which is fine, but I had never thought of it like that, in contrast to 1 definitely being the empty product of primes)

David Wärn (May 14 2021 at 19:04):

Yes, this is a bit different to 1 not being prime. If you think about the partition of [n] into orbits, then a 1-cycle is just an orbit with one element (where the action of Z looks like the action on Z/1Z), and there's nothing special about this. But if you think of a cycle as a permutation, and the cycle decomposition as a product, then one-cycles look special, unless you remember their "support". Sometimes it's very important to remember one-cycles: for example if you have σAn\sigma \in A_n, then it's a fact that the conjugacy classes of σ\sigma in SnS_n and AnA_n agree precisely unless the cycle type of σ\sigma consists of distinct odd numbers (in which case the conjugacy class in SnS_n splits in two), and this only works if you count one-cycles (two one-cycles means no splitting). Similarly the formula for the number of permutations with a given cycle type looks more natural with one-cycles. In mathlib, the cycle type docs#equiv.perm.cycle_type doesn't count one-cycles, although docs#equiv.perm.partition does. I expect each definition works better in different circumstances.


Last updated: Dec 20 2023 at 11:08 UTC