如何解决Coq中子列表的归纳命题
我正在努力提出一个列表子列表的概念,该概念是通过删除列表中的元素创建的(以便保留顺序)。我需要提出一个归纳命题来确定l1是否为l2的子列表。
到目前为止:
- 我知道空列表是所有列表的子列表。
- 所有列表都是其自身的子列表。
- 如果已知l1是l2的子列表,那么将相同列表附加到l1和l2头部或尾部的结果将导致前者成为后者的子列表
- 现在是困难的部分。如何提供证据证明像[“ x”;“ y”]这样的列表是[“ a”;“ x”;“ z”;“ y”]的子列表?
语法类似于 归纳子列表{X:Type}:列表X->列表X->道具:= ..
有人可以帮我吗?
解决方法
您将已经非正式地做过吗?仅使用您的三个规则。如果无法管理,则意味着定义可能太复杂/不完整。
我认为,您可以在着眼于列表构造方式的同时,专注于自己的示例,而不是试图考虑所有这些复杂的示例。
为什么[ x ; y ]
是[ a ; x ; y ; z ]
的子列表?因为[ x ; y ]
是[ x ; y ; z ]
的子列表,所以(没有第二个列表的开头),这是因为[ y ]
是[ y ; z ]
的子列表,这是因为{{1} }是[]
的子列表,始终保持不变。
您看到图案了吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。