📥 Download raw
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
++-[] = {!!}