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