mirror of
https://github.com/Smaug123/agdaproofs
synced 2025-10-19 10:08:42 +00:00
Progress towards UFDs (#88)
This commit is contained in:
28
Lists/Monad.agda
Normal file
28
Lists/Monad.agda
Normal file
@@ -0,0 +1,28 @@
|
||||
{-# OPTIONS --safe --warning=error --without-K #-}
|
||||
|
||||
open import LogicalFormulae
|
||||
open import Functions
|
||||
open import Lists.Definition
|
||||
open import Lists.Fold.Fold
|
||||
open import Lists.Concat
|
||||
open import Lists.Length
|
||||
open import Numbers.Naturals.Semiring
|
||||
|
||||
module Lists.Monad where
|
||||
|
||||
open import Lists.Map.Map public
|
||||
|
||||
flatten : {a : _} {A : Set a} → (l : List (List A)) → List A
|
||||
flatten [] = []
|
||||
flatten (l :: ls) = l ++ flatten ls
|
||||
|
||||
flatten' : {a : _} {A : Set a} → (l : List (List A)) → List A
|
||||
flatten' = fold _++_ []
|
||||
|
||||
flatten=flatten' : {a : _} {A : Set a} (l : List (List A)) → flatten l ≡ flatten' l
|
||||
flatten=flatten' [] = refl
|
||||
flatten=flatten' (l :: ls) = applyEquality (l ++_) (flatten=flatten' ls)
|
||||
|
||||
lengthFlatten : {a : _} {A : Set a} (l : List (List A)) → length (flatten l) ≡ (fold _+N_ zero (map length l))
|
||||
lengthFlatten [] = refl
|
||||
lengthFlatten (l :: ls) rewrite lengthConcat l (flatten ls) | lengthFlatten ls = refl
|
Reference in New Issue
Block a user