首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >证明reverse=rev

证明reverse=rev
EN

Stack Overflow用户
提问于 2011-05-09 01:27:25
回答 4查看 1.2K关注 0票数 0

我有一些任务要做,但不知道怎么做:

代码语言:javascript
复制
reverse, rev :: [a] [a]

reverse [] = []
reverse (x:xs) = reverse xs ++ [x]

rev = aux [] where
    aux ys [] = ys
    aux ys (x:xs) = aux (x:ys) xs

“证明: reverse=rev”

您的帮助我们将不胜感激。谢谢。

PS。我可以用一些例子来做,但我认为那不专业。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-09 02:10:47

我不会尝试直接证明等价性,而是(使用归纳)为每个函数证明它实际上颠倒了列表。如果它们都是反向列表,那么它们是等价的。

验证草图:

我们想要证明rev适用于所有列表:

长度为0的基本情况列表:证明rev []计算正确

归纳情形:证明对于任何n,rev可以颠倒任何长度为n的列表,假设rev可以颠倒任何长度为n-1的列表

票数 1
EN

Stack Overflow用户

发布于 2011-05-09 02:23:48

你可以通过结构归纳来做一个草率的证明,但是如果你想要一个正确地处理底部的证明,它就不那么简单了。

票数 3
EN

Stack Overflow用户

发布于 2011-05-09 01:36:37

归纳。基本情况是微不足道的。归纳的步骤应该不会太难。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5929045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档