summaryrefslogtreecommitdiff
path: root/files/practicum/BewijsSubsEnMap.icl
blob: 43329e3986e1697f4b90ffce4e999066cdf780db (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Zij gegeven de volgende functie-definities:

subs             :: [a] -> [[a]]
subs []          = [[]]                              (1.)
subs [x:xs]      = subs xs ++ map (cons x) (subs xs) (2.)

map              :: (a -> b) [a] -> [b]
map f []         = []                                (3.)
map f [x:xs]     = [f x : map f xs]                  (4.)

(++)             :: [a] [a] -> [a]
(++) []     ys   = ys                                (5.)
(++) [x:xs] ys   = [x : xs ++ ys]                    (6.)

cons             :: a [a] -> [a]
cons x xs        = [x : xs]                          (7.)


Bewijs de volgende stelling voor alle functies f en eindige lijsten xs:

    subs (map f xs) = map (map f) (subs xs).

Je kunt gebruik maken van de volgende hulpstellingen (lemma's) die gelden voor alle
functies f, g en eindige lijsten xs en ys:

map f (xs ++ ys)       = map f xs ++ map f ys        (8.)
map g (map f xs)       = map (g o f) xs              (9.)
(cons (f a)) o (map f) = (map f) o (cons a)          (10.)
(g o f) x              = g (f x)                     (11.)


Bewijs:
-------