# Repetitions in sequences ```agda module foundation.repetitions-sequences where ``` <details><summary>Imports</summary> ```agda open import elementary-number-theory.natural-numbers open import elementary-number-theory.strictly-ordered-pairs-of-natural-numbers open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.negated-equality open import foundation.pairs-of-distinct-elements open import foundation.repetitions-of-values open import foundation.sequences open import foundation.unit-type open import foundation.universe-levels open import foundation-core.embeddings open import foundation-core.empty-types open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.injective-maps ``` </details> ## Idea A repetition in a sequence `a : ℕ → A` consists of a pair of distinct natural numbers `m` and `n` such that `a m = a n`. ## Definition ### Repetitions of values in a sequence ```agda is-repetition-of-values-sequence : {l : Level} {A : UU l} (a : sequence A) (p : pair-of-distinct-elements ℕ) → UU l is-repetition-of-values-sequence a p = is-repetition-of-values a p repetition-of-values-sequence : {l : Level} {A : UU l} → sequence A → UU l repetition-of-values-sequence a = Σ (pair-of-distinct-elements ℕ) (is-repetition-of-values a) module _ {l : Level} {A : UU l} (a : sequence A) (r : repetition-of-values-sequence a) where pair-of-distinct-elements-repetition-of-values-sequence : pair-of-distinct-elements ℕ pair-of-distinct-elements-repetition-of-values-sequence = pr1 r first-repetition-of-values-sequence : ℕ first-repetition-of-values-sequence = first-pair-of-distinct-elements pair-of-distinct-elements-repetition-of-values-sequence second-repetition-of-values-sequence : ℕ second-repetition-of-values-sequence = second-pair-of-distinct-elements pair-of-distinct-elements-repetition-of-values-sequence distinction-repetition-of-values-sequence : first-repetition-of-values-sequence ≠ second-repetition-of-values-sequence distinction-repetition-of-values-sequence = distinction-pair-of-distinct-elements pair-of-distinct-elements-repetition-of-values-sequence is-repetition-of-values-repetition-of-values-sequence : is-repetition-of-values a pair-of-distinct-elements-repetition-of-values-sequence is-repetition-of-values-repetition-of-values-sequence = pr2 r ``` ### Ordered repetitions of values in a sequence ```agda is-ordered-repetition-of-values-ℕ : {l1 : Level} {A : UU l1} (f : ℕ → A) (x : strictly-ordered-pair-ℕ) → UU l1 is-ordered-repetition-of-values-ℕ f x = f (first-strictly-ordered-pair-ℕ x) = f (second-strictly-ordered-pair-ℕ x) ordered-repetition-of-values-ℕ : {l1 : Level} {A : UU l1} (f : ℕ → A) → UU l1 ordered-repetition-of-values-ℕ f = Σ strictly-ordered-pair-ℕ (is-ordered-repetition-of-values-ℕ f) ordered-repetition-of-values-comp-ℕ : {l1 l2 : Level} {A : UU l1} {B : UU l2} (g : A → B) {f : ℕ → A} → ordered-repetition-of-values-ℕ f → ordered-repetition-of-values-ℕ (g ∘ f) ordered-repetition-of-values-comp-ℕ g ((a , b , H) , p) = ((a , b , H) , ap g p) ordered-repetition-of-values-right-factor-ℕ : {l1 l2 : Level} {A : UU l1} {B : UU l2} {g : A → B} {f : ℕ → A} → is-emb g → ordered-repetition-of-values-ℕ (g ∘ f) → ordered-repetition-of-values-ℕ f ordered-repetition-of-values-right-factor-ℕ E ((a , b , H) , p) = ((a , b , H) , is-injective-is-emb E p) ``` ### Any repetition of values in a sequence can be ordered ```agda module _ {l : Level} {A : UU l} where ordered-repetition-of-values-repetition-of-values-ℕ' : (f : ℕ → A) (a b : ℕ) → a ≠ b → f a = f b → ordered-repetition-of-values-ℕ f ordered-repetition-of-values-repetition-of-values-ℕ' f zero-ℕ zero-ℕ H p = ex-falso (H refl) ordered-repetition-of-values-repetition-of-values-ℕ' f zero-ℕ (succ-ℕ b) H p = ((0 , succ-ℕ b , star) , p) ordered-repetition-of-values-repetition-of-values-ℕ' f (succ-ℕ a) zero-ℕ H p = ((0 , succ-ℕ a , star) , inv p) ordered-repetition-of-values-repetition-of-values-ℕ' f (succ-ℕ a) (succ-ℕ b) H p = map-Σ ( λ u → f (pr1 u) = f (pr1 (pr2 u))) ( map-Σ _ succ-ℕ (λ _ → map-Σ _ succ-ℕ (λ _ → id))) ( λ u → id) ( ordered-repetition-of-values-repetition-of-values-ℕ' ( f ∘ succ-ℕ) ( a) ( b) ( λ q → H (ap succ-ℕ q)) ( p)) ordered-repetition-of-values-repetition-of-values-ℕ : (f : ℕ → A) → repetition-of-values f → ordered-repetition-of-values-ℕ f ordered-repetition-of-values-repetition-of-values-ℕ f ((a , b , H) , p) = ordered-repetition-of-values-repetition-of-values-ℕ' f a b H p ```