module Padova2025.ProvingBasics.Equality.Lists where
Results on lists
open import Padova2025.ProgrammingBasics.Naturals.Base open import Padova2025.ProgrammingBasics.Naturals.Arithmetic open import Padova2025.ProgrammingBasics.Lists open import Padova2025.ProvingBasics.Equality.Base open import Padova2025.ProvingBasics.Equality.General
Exercise: Double reverse
For the following exercise, note that reverse (x β· xs)
is defined as reverse xs β·Κ³ x
.
reverse-β·Κ³ : {A : Set} (ys : List A) (x : A) β reverse (ys β·Κ³ x) β‘ (x β· reverse ys) reverse-β·Κ³ = {!!}
reverse-reverse : {A : Set} (xs : List A) β reverse (reverse xs) β‘ xs reverse-reverse = {!!}
Exercise: Associativity of concatenation
++-assoc : {A : Set} (xs ys zs : List A) β (xs ++ ys) ++ zs β‘ xs ++ (ys ++ zs) ++-assoc = {!!}
Exercise: Length as a homomorphism
length-homo : {A : Set} (xs ys : List A) β length (xs ++ ys) β‘ length xs + length ys length-homo = {!!}
Exercise: Replication as a natural transformation
replicate-natural : {A B : Set} (f : A β B) (n : β) (x : A) β map f (replicate n x) β‘ replicate n (f x) replicate-natural = {!!}
Exercise: Snocking and concatenation
snoc-++ : {A : Set} (a : A) (xs ys : List A) β (xs β·Κ³ a) ++ ys β‘ xs ++ (a β· ys) snoc-++ = {!!}
Exercise: Empty list neutral for concatenation
++-[] : {A : Set} (xs : List A) β xs ++ [] β‘ xs ++-[] = {!!}