[英]Structural induction for multi-way (rose) trees
由于可以将多路树定义为递归类型:
data RoseTree a = Node {leaf :: a, subTrees :: [RoseTree a]}
对这种类型的结构进行归纳有相应的原理吗?
要声明属性P
对于所有(*)玫瑰树都成立,您必须证明
l :: [RoseTree]
是元素满足P
的玫瑰树的列表,并且x :: a
是任意的,则Note xl
满足P
关于P
保持l
的元素的部分是归纳假设,您可以用来证明P(Node xl)
。
这里没有显式的基本案例:这是因为没有显式的基本案例构造函数。 然而, Node x []
充当了树的隐式基本案例,实际上,当l
为空时,我们隐式获得了归纳的基本案例。 具体来说,当l
为空时,“ l
所有元素都满足P
”的假设变成空洞的,因此我们从上面的归纳原理中得到P(Node x [])
。
(*)更确切地说,此原理证明每棵有限深度的玫瑰树都为P
如果确实需要考虑无限深度的树(例如,圆形树),则需要进行共归。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.