練習問題 4.2.5
length (xs++ys) = length xs + length ysであることを証明せよ.
xs上の帰納法を使う
[] の場合
length ([] ++ ys)
= { (++)の定義 }
length ys
= { 0は(+)の単位元 }
0 + length ys
= { lengthの定義 }
length [] + length ys
x:xs の場合
length ((x:xs) ++ ys)
= { (++)の定義 }
length (x:(xs ++ ys))
= { lengthの定義 }
1 + length (xs ++ ys)
= { 帰納法の仮定 }
1 + (length xs + length ys)
= { (+)は結合的 }
(1 + length xs) + length ys
= { lengthの定義 }
length (x:xs) + length ys