Zulip Chat Archive

Stream: Is there code for X?

Topic: f^[n] x = x


Patrick Johnson (Jan 01 2022 at 13:29):

Any easy way to prove this lemma? It looks trivial, but I can't find a short proof.
Is there some similar lemma in mathlib that can be applied here?

example {α : Type*} [nonempty α] [fintype α]
  {f : α  α} :
   (x : α) (n : ), 0 < n  (f^[n]) x = x :=
begin
  sorry
end

My attempt

Kevin Buzzard (Jan 01 2022 at 13:40):

My instinct would be to get an element a of alpha, define a map from the natural numbers into alpha sending n to f^n(a), use a result from the library saying this isn't injective and put things together from there

Alex J. Best (Jan 01 2022 at 13:49):

A rough proof, its basically what kevin said

import data.fintype.basic
import logic.function.iterate

example {α : Type*} [nonempty α] [fintype α]
  {f : α  α} :
   (x : α) (n : ), 0 < n  (f^[n]) x = x :=
begin
  by_contra',
  apply nonempty.elim _›, -- I'm not sure what the cleanest way to do this is
  intro y,
  have := not_injective_infinite_fintype (λ n, f^[n] y),
  rw function.injective at this,
  push_neg at this,
  rcases this with a, b, h, hh⟩,
  cases lt_or_gt_of_ne hh with hlt hlt;
  rw [ tsub_add_cancel_of_le (le_of_lt hlt), function.iterate_add_apply] at h,
  exact this (f^[a] y) (b - a) (tsub_pos_of_lt hlt) h.symm,
  exact this (f^[b] y) (a - b) (tsub_pos_of_lt hlt) h,
end

Alex J. Best (Jan 01 2022 at 14:03):

(deleted)


Last updated: Dec 20 2023 at 11:08 UTC