По сути, это сводится к тому, что h
является рекурсивной функцией в xs
и что foldr
обобщает рекурсию в списках.Обратите внимание, как h
вызывает себя на хвосте xs
, так же, как foldr
вызывает себя на хвосте as
.
По индукции на ws
докажите, что h ws xss = h'' ws xss
.Рассуждая по индукции, нужно рассмотреть два случая.
Базовый случай , ws = []
h [] xss = [] -- by definition of h
h'' [] xss
= foldr g [] xss -- by definition of h''
= [] -- by definition of foldr
Шаг индукции , ws = x : xs
, предполагая h xs xss = h'' xs xss
(индукционная гипотеза)
h (x : xs) xss
= foldr f (h xs xss) xss -- by definition of h (N.B. f depends on x)
= foldr f (h'' xs xss) xss -- by induction hypothesis
= g x (h'' xs xss) -- by definition of g (N.B. g depends on xss)
= g x (foldr g [] xs) -- by definition of h''
= foldr g [] (x : xs) -- by definition of foldr
= h'' (x : xs) xss -- by definition of h''