结构归纳法(structural induction)
结构归纳法(structural induction)
菜鸡在ANU学习这章时发现中文资料甚少,再此进行梳理(复习)。欢迎大佬指点讨论。
归纳列表(induction on list)
如何定义列表
- 定义关于元素属性A的空列表[]
- 给出列表A的元素a,并加上前缀(写作 a:A)
如何对列表I证明特性P(I)
- P()对于空列表成立(p([]))
- 如果列表A符合P(A),对任意a证明P(a:A)成立
例:
使用以下条件
length [] = 0 (L1)
length (x:xs) = 1 + length xs (L2)
map f [] = [] (M1)
map f (x:xs) = f x : map f xs (M2)
[] ++ ys = ys (A1)
(x:xs) ++ ys = x : (xs ++ ys) (A2)
证明:∀xs.length (map f xs) = length xs.
思路:首先证明P([])成立,再证∀x.∀xs.P(xs)→P(x:xs)
解:
- P([ ]) length (map f [])=