From 6f604b19d3f5966e5c1d7c4fdf3703bd6ff0861c Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Thu, 16 Apr 2015 21:22:20 +0200 Subject: update to fp2 yay, public and licence --- week6/mart/BewijsMapFlatten.icl | 97 ----------------------------------------- 1 file changed, 97 deletions(-) delete mode 100644 week6/mart/BewijsMapFlatten.icl (limited to 'week6/mart') diff --git a/week6/mart/BewijsMapFlatten.icl b/week6/mart/BewijsMapFlatten.icl deleted file mode 100644 index 59fa5bc..0000000 --- a/week6/mart/BewijsMapFlatten.icl +++ /dev/null @@ -1,97 +0,0 @@ -Zij gegeven: - -(++) :: [a] [a] -> [a] -(++) [] xs = xs (1) -(++) [y:ys] xs = [y : ys ++ xs] (2) - -map :: (a -> b) [a] -> [b] -map f [] = [] (3) -map f [x:xs] = [f x : map f xs] (4) - -flatten :: [[a]] -> [a] -flatten [] = [] (5) -flatten [x:xs] = x ++ (flatten xs) (6) - -1. -Te bewijzen: - voor iedere functie f, eindige lijst as en bs: - - map f (as ++ bs) = (map f as) ++ (map f bs) - -Bewijs: - met inductie naar de lengte van as. - - Basis: - aanname: as = []. - - map f ([] ++ bs) = (map f []) ++ (map f bs) basis - ******** - => map f (bs) = (map f []) ++ (map f bs) (1) - ******** - => map f (bs) = [] ++ (map f bs) (3) - **************** - => map f bs = map f bs (1) - - Inductiestap: - aanname: stelling geldt voor zekere as, ofwel: - map f (as ++ bs) = (map f as) ++ (map f bs) (IH) - - Te bewijzen: stelling geldt ook voor as, ofwel: - map f ([a:as] ++ bs) = (map f [a:as]) ++ (map f bs) - - map f ([a:as] ++ bs) = (map f [a:as]) ++ (map f bs) basis - ************ - => map f [a:as ++ bs] = (map f [a:as]) ++ (map f bs) (2) - ****************** - => [f a : map f (as ++ bs)] = (map f [a:as]) ++ (map f bs) (4) - ************ - => [f a : map f (as ++ bs)] = [f a : map f as] ++ (map f bs) (4) - **************************** - => [f a : map f (as ++ bs)] = [f a : (map f as) ++ (map f bs)] (4) - **************** ************************ - => map f (as ++ bs) = (map f as) ++ (map f bs) (IH) - - Dus: basis + inductiestap => stelling bewezen. - -2. -Te bewijzen: - voor iedere functie f, voor iedere eindige lijst xs: - - flatten (map (map f) xs) = map f (flatten xs) - -Bewijs: - met inductio van de lengte van xs - - Basis: - aanname: xs = []. - - flatten (map (map f) []) = map f (flatten []) basis - ************** - = flatten [] = map f (flatten []) (3) - ********** - = flatten [] = map f [] (5) - ********** - = [] = map f [] (5) - ***** - = [] = [] (3) - - Inductiestap: - aanname: stelling geldt voor zekere xs, ofwel: - flatten (map (map f) xs) = map f (flatten xs) - - Te bewijzen: stelling geldt ook voor xs, ofwel: - flatten (map (map f) [x:xs]) = map f (flatten [x:xs]) - - flatten (map (map f) [x:xs]) = map f (flatten [x:xs]) basis - ****************** - => flatten [map f x: map (map f) xs] = map f (flatten [x:xs]) (4) - ********************************* - => (map f x) ++ (flatten (map (map f) xs)) = map f (flatten [x:xs]) (6) - ************** - => (map f x) ++ (flatten (map (map f) xs)) = map f (x ++ (flatten xs)) (6) - ************************* - => (map f x) ++ (flatten (map (map f) xs)) = (map f x) ++ (map f (flatten xs)) (9.4.1) - ************************ **************** - => flatten (map (map f) xs) = map f (flatten xs) (IH) - - Dus: basis + inductiestap => stelling bewezen. -- cgit v1.2.3