File: Mathlib/Order/Iterate.lean

full_name: Monotone.seq_le_seq
code: theorem seq_le_seq (hf : Monotone f) (n : ℕ) (h₀ : x 0 ≤ y 0) (hx : ∀ k < n, x (k + 1) ≤ f (x k))
    (hy : ∀ k < n, f (y k) ≤ y (k + 1)) : x n ≤ y n 
goal: x n ≤ y n

full_name: Monotone.seq_pos_lt_seq_of_lt_of_le
code: theorem seq_pos_lt_seq_of_lt_of_le (hf : Monotone f) {n : ℕ} (hn : 0 < n) (h₀ : x 0 ≤ y 0)
    (hx : ∀ k < n, x (k + 1) < f (x k)) (hy : ∀ k < n, f (y k) ≤ y (k + 1)) : x n < y n 
goal: x n < y n

full_name: Monotone.seq_pos_lt_seq_of_le_of_lt
code: theorem seq_pos_lt_seq_of_le_of_lt (hf : Monotone f) {n : ℕ} (hn : 0 < n) (h₀ : x 0 ≤ y 0)
    (hx : ∀ k < n, x (k + 1) ≤ f (x k)) (hy : ∀ k < n, f (y k) < y (k + 1)) : x n < y n 
goal: x n < y n

full_name: Monotone.seq_lt_seq_of_lt_of_le
code: theorem seq_lt_seq_of_lt_of_le (hf : Monotone f) (n : ℕ) (h₀ : x 0 < y 0)
    (hx : ∀ k < n, x (k + 1) < f (x k)) (hy : ∀ k < n, f (y k) ≤ y (k + 1)) : x n < y n 
goal: x n < y n

full_name: Monotone.seq_lt_seq_of_le_of_lt
code: theorem seq_lt_seq_of_le_of_lt (hf : Monotone f) (n : ℕ) (h₀ : x 0 < y 0)
    (hx : ∀ k < n, x (k + 1) ≤ f (x k)) (hy : ∀ k < n, f (y k) < y (k + 1)) : x n < y n 
goal: x n < y n

full_name: Monotone.le_iterate_comp_of_le
code: theorem le_iterate_comp_of_le (hf : Monotone f) (H : h ∘ g ≤ f ∘ h) (n : ℕ) :
    h ∘ g^[n] ≤ f^[n] ∘ h 
goal: h ∘ g^[n] ≤ f^[n] ∘ h

full_name: Monotone.iterate_comp_le_of_le
code: theorem iterate_comp_le_of_le (hf : Monotone f) (H : f ∘ h ≤ h ∘ g) (n : ℕ) :
    f^[n] ∘ h ≤ h ∘ g^[n] 
goal: f^[n] ∘ h ≤ h ∘ g^[n]

full_name: Monotone.iterate_le_of_le
code: /-- If `f ≤ g` and `f` is monotone, then `f^[n] ≤ g^[n]`. -/
theorem iterate_le_of_le {g : α → α} (hf : Monotone f) (h : f ≤ g) (n : ℕ) : f^[n] ≤ g^[n] 
goal: f^[n] ≤ g^[n]

full_name: Monotone.le_iterate_of_le
code: /-- If `f ≤ g` and `g` is monotone, then `f^[n] ≤ g^[n]`. -/
theorem le_iterate_of_le {g : α → α} (hg : Monotone g) (h : f ≤ g) (n : ℕ) : f^[n] ≤ g^[n] 
goal: f^[n] ≤ g^[n]

full_name: Function.id_le_iterate_of_id_le
code: /-- If $x ≤ f x$ for all $x$ (we write this as `id ≤ f`), then the same is true for any iterate
`f^[n]` of `f`. -/
theorem id_le_iterate_of_id_le (h : id ≤ f) (n : ℕ) : id ≤ f^[n] 
goal: id ≤ f^[n]

full_name: Function.iterate_le_id_of_le_id
code: theorem iterate_le_id_of_le_id (h : f ≤ id) (n : ℕ) : f^[n] ≤ id 
goal: f^[n] ≤ id

full_name: Function.monotone_iterate_of_id_le
code: theorem monotone_iterate_of_id_le (h : id ≤ f) : Monotone fun m => f^[m] 
goal: Monotone fun m => f^[m]

full_name: Function.antitone_iterate_of_le_id
code: theorem antitone_iterate_of_le_id (h : f ≤ id) : Antitone fun m => f^[m] 
goal: Antitone fun m => f^[m]

full_name: Function.Commute.iterate_le_of_map_le
code: theorem iterate_le_of_map_le (h : Commute f g) (hf : Monotone f) (hg : Monotone g) {x}
    (hx : f x ≤ g x) (n : ℕ) : f^[n] x ≤ g^[n] x 
goal: f^[n] x ≤ g^[n] x

full_name: Function.Commute.iterate_pos_lt_of_map_lt
code: theorem iterate_pos_lt_of_map_lt (h : Commute f g) (hf : Monotone f) (hg : StrictMono g) {x}
    (hx : f x < g x) {n} (hn : 0 < n) : f^[n] x < g^[n] x 
goal: f^[n] x < g^[n] x

full_name: Function.Commute.iterate_pos_lt_of_map_lt'
code: theorem iterate_pos_lt_of_map_lt' (h : Commute f g) (hf : StrictMono f) (hg : Monotone g) {x}
    (hx : f x < g x) {n} (hn : 0 < n) : f^[n] x < g^[n] x 
goal: f^[n] x < g^[n] x

full_name: Function.Commute.iterate_pos_lt_iff_map_lt
code: theorem iterate_pos_lt_iff_map_lt (h : Commute f g) (hf : Monotone f) (hg : StrictMono g) {x n}
    (hn : 0 < n) : f^[n] x < g^[n] x ↔ f x < g x 
goal: f^[n] x < g^[n] x ↔ f x < g x

full_name: Function.Commute.iterate_pos_lt_iff_map_lt'
code: theorem iterate_pos_lt_iff_map_lt' (h : Commute f g) (hf : StrictMono f) (hg : Monotone g) {x n}
    (hn : 0 < n) : f^[n] x < g^[n] x ↔ f x < g x 
goal: f^[n] x < g^[n] x ↔ f x < g x

full_name: Function.Commute.iterate_pos_le_iff_map_le
code: theorem iterate_pos_le_iff_map_le (h : Commute f g) (hf : Monotone f) (hg : StrictMono g) {x n}
    (hn : 0 < n) : f^[n] x ≤ g^[n] x ↔ f x ≤ g x 
goal: f^[n] x ≤ g^[n] x ↔ f x ≤ g x

full_name: Function.Commute.iterate_pos_le_iff_map_le'
code: theorem iterate_pos_le_iff_map_le' (h : Commute f g) (hf : StrictMono f) (hg : Monotone g) {x n}
    (hn : 0 < n) : f^[n] x ≤ g^[n] x ↔ f x ≤ g x 
goal: f^[n] x ≤ g^[n] x ↔ f x ≤ g x

full_name: Function.Commute.iterate_pos_eq_iff_map_eq
code: theorem iterate_pos_eq_iff_map_eq (h : Commute f g) (hf : Monotone f) (hg : StrictMono g) {x n}
    (hn : 0 < n) : f^[n] x = g^[n] x ↔ f x = g x 
goal: f^[n] x = g^[n] x ↔ f x = g x

full_name: Monotone.monotone_iterate_of_le_map
code: /-- If `f` is a monotone map and `x ≤ f x` at some point `x`, then the iterates `f^[n] x` form
a monotone sequence. -/
theorem monotone_iterate_of_le_map (hf : Monotone f) (hx : x ≤ f x) : Monotone fun n => f^[n] x 
goal: Monotone fun n => f^[n] x

full_name: Monotone.antitone_iterate_of_map_le
code: /-- If `f` is a monotone map and `f x ≤ x` at some point `x`, then the iterates `f^[n] x` form
an antitone sequence. -/
theorem antitone_iterate_of_map_le (hf : Monotone f) (hx : f x ≤ x) : Antitone fun n => f^[n] x 
goal: Antitone fun n => f^[n] x

full_name: StrictMono.strictMono_iterate_of_lt_map
code: /-- If `f` is a strictly monotone map and `x < f x` at some point `x`, then the iterates `f^[n] x`
form a strictly monotone sequence. -/
theorem strictMono_iterate_of_lt_map (hf : StrictMono f) (hx : x < f x) :
    StrictMono fun n => f^[n] x 
goal: StrictMono fun n => f^[n] x

full_name: StrictMono.strictAnti_iterate_of_map_lt
code: /-- If `f` is a strictly antitone map and `f x < x` at some point `x`, then the iterates `f^[n] x`
form a strictly antitone sequence. -/
theorem strictAnti_iterate_of_map_lt (hf : StrictMono f) (hx : f x < x) :
    StrictAnti fun n => f^[n] x 
goal: StrictAnti fun n => f^[n] x