Todd Waugh Ambridge, January 2024 # Sequences \begin{code} {-# OPTIONS --without-K --safe #-} open import MLTT.Spartan open import Notation.Order open import Naturals.Order open import UF.DiscreteAndSeparated open import NotionsOfDecidability.Complemented module TWA.Thesis.Chapter2.Sequences where repeat : {X : š¤ Ģ } ā X ā ā ā X repeat α _ = α map : {X : š¤ Ģ } {Y : š„ Ģ } ā (X ā Y) ā (ā ā X) ā (ā ā Y) map f α n = f (α n) zipWith : {X : š¤ Ģ } {Y : š„ Ģ } {Z : š¦ Ģ } ā (X ā Y ā Z) ā (ā ā X) ā (ā ā Y) ā (ā ā Z) zipWith f α β n = f (α n) (β n) head : {X : š¤ Ģ } ā (ā ā X) ā X head α = α 0 tail : {X : š¤ Ģ } ā (ā ā X) ā (ā ā X) tail α = α ā succ _ā·_ : {T : ā ā š¤ Ģ } ā T 0 ā Ī (T ā succ) ā Ī T (h ⷠα) 0 = h (h ⷠα) (succ n) = α n _ā¼āæ_ : {X : ā ā š¤ Ģ } ā Ī X ā Ī X ā ā ā š¤ Ģ (α ā¼āæ β) n = (i : ā) ā i < n ā α i ļ¼ Ī² i ā¼āæ-sym : {X : ā ā š¤ Ģ } (α β : Ī X) (n : ā) ā (α ā¼āæ β) n ā (β ā¼āæ α) n ā¼āæ-sym α β n f i i<n = f i i<n ā»Ā¹ bounded-decidable-Ī : {X : ā ā š¤ Ģ } ā is-complemented X ā (n : ā) ā is-decidable (Ī i ź ā , (i < n ā X i)) bounded-decidable-Ī d 0 = inl (Ī» _ ()) bounded-decidable-Ī {š¤} {X} d (succ n) = Cases (bounded-decidable-Ī d n) γā (inr ā γā) where γā : ((i : ā) ā (i < n ā X i)) ā is-decidable ((i : ā) ā (i < succ n ā X i)) γā f = Cases (d n) (inl ā γāā) (inr ā γāā) where γāā : X n ā (i : ā) ā i < succ n ā X i γāā Xn i i<sn = Cases (<-split i n i<sn) (f i) (Ī» e ā transport X (e ā»Ā¹) Xn) γāā : ¬ X n ā ¬ ((i : ā) ā i < succ n ā X i) γāā g f = g (f n (<-succ n)) γā : ¬ ((i : ā) ā i < n ā X i) ā ¬ ((i : ā) ā i < succ n ā X i) γā g f = g (Ī» i i<n ā f i (<-trans i n (succ n) i<n (<-succ n))) bounded-decidable-Ī£ : {X : ā ā š¤ Ģ } ā is-complemented X ā (n : ā) ā is-decidable (Ī£ i ź ā , ((i < n) Ć X i)) bounded-decidable-Ī£ d 0 = inr (Ī» (i , i<0 , _) ā i<0) bounded-decidable-Ī£ {š¤} {X} d (succ n) = Cases (bounded-decidable-Ī£ d n) (Ī» (i , i<n , Xi) ā inl (i , <-trans i n (succ n) i<n (<-succ n) , Xi)) (Ī» ¬Σi<n ā Cases (d n) (Ī» Xn ā inl (n , <-succ n , Xn)) (Ī» ¬Xn ā inr (Ī» (i , i<sn , Xi) ā Cases (<-split i n i<sn) (Ī» i<n ā ¬Σi<n (i , i<n , Xi)) (Ī» iļ¼n ā ¬Xn (transport X iļ¼n Xi))))) ā¼āæ-decidable : {X : ā ā š¤ Ģ } ā ((n : ā) ā is-discrete (X n)) ā (α β : Ī X) ā (n : ā) ā is-decidable ((α ā¼āæ β) n) ā¼āæ-decidable ds α β = bounded-decidable-Ī (Ī» n ā ds n (α n) (β n)) \end{code}