2 | module Data.Vect.Properties.Tabulate
10 | : (xs, ys : Vect n a) -> (ext : (i : Fin n) -> index i xs = index i ys)
12 | vectorExtensionality [] [] ext = Refl
13 | vectorExtensionality (x :: xs) (y :: ys) ext =
16 | (vectorExtensionality xs ys (\i => ext (FS i)))
21 | : {n : Nat} -> (f, g : Fin n -> a) -> (ext : (i : Fin n) -> f i = g i)
22 | -> tabulate f = tabulate g
23 | tabulateExtensional {n = 0 } f g ext = Refl
24 | tabulateExtensional {n = S n} f g ext =
25 | cong2 (::) (ext FZ) (tabulateExtensional (f . FS) (g . FS) (\ i => ext $
FS i))
29 | indexTabulate : {n : Nat} -> (f : Fin n -> a) -> (i : Fin n) -> index i (tabulate f) = f i
30 | indexTabulate f FZ = Refl
31 | indexTabulate f (FS i) = indexTabulate (f . FS) i
35 | emptyInitial : (v : Vect 0 a) -> v = []
36 | emptyInitial [] = Refl