Bol*_*boa 2 haskell proof induction
我有以下内容:
elem :: Eq a => a -> [a] -> Bool
elem _ [] = False
elem x (y:ys) = x == y || elem x ys
Run Code Online (Sandbox Code Playgroud)
我怎样才能证明所有x的y和z都是......
elem z (xs ++ ys) == elem z xs || elem z ys
Run Code Online (Sandbox Code Playgroud)
我试图让左侧等同于右侧,但我的尝试都没有取得丰硕成果.
L.S elem z (x:xs ++ y:ys) = z==x || z==y || elem xs || elem ys
R.S elem z (x:xs) || elem z (y:ys) = z==x || z==y || elem xs || elem ys
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
这是一个提示.
在++操作者通过感应在所述定义的第一参数:
[] ++ ys = ys
(x:xs) ++ ys = x : (xs ++ ys)
Run Code Online (Sandbox Code Playgroud)
你想要证明
elem z (xs ++ ys) == elem z xs || elem z ys
Run Code Online (Sandbox Code Playgroud)
这是一个属性z,xs和ys.我们称之为p(z,xs,ys).而且,第一个论点++是xs,所以这表明通过归纳进行xs.
我们需要证明:
p(z,[],ys).p(z,x:xs,ys)假设归纳假设p(z,xs,ys)您还需要elem在某些时候利用定义.
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |