Betrachten wir die folgenden Funktionsdefinitionen:
data Tree a = Leaf a | Node a (Tree a) (Tree a)
sumLeaves :: Tree a -> Integer
sumLeaves (Leaf x) = 1
sumLeaves (Node _ lt rt) = sumLeaves lt + sumLeaves rt
sumNodes :: Tree a -> Integer
sumNodes (Leaf x) = 0
sumNodes (Node _ lt rt) = 1 + sumNodes lt + sumNodes rt
Nun wollen wir mittels struktureller Induktion beweisen, dass für alle endlichen Bäume t :: Tree a gilt:
sumLeaves t = sumNodes t + 1
Ich habe:
sumLeaves t = sumNodes t + 1
I.A. t = (Tree 0) = (Leaf 0)
sumLeaves (Leaf 0) = 1 sumNodes (Leaf 0) + 1
0 + 1 = 1
1 = 1
I.V.: Wir nehmen an, dass die Aussage für ein beliebiges t gilt.
I.S.:
Was ist nun der Induktionsschritt, ich habe wirklich Probleme, diesen letzten Schritt zu lösen.