coq - 向量:关于分割和附加向量的定理
问题描述
我想证明下面的引理。
Require Import Coq.Vectors.Vector.
Lemma t (A:Type)(n:nat)(v:t A (n+0)): fst (splitat n v) ++ (nil A) = v.
Proof.
induction n.
refine (match v with (nil _) => _ end).
reflexivity.
remember (splitat (S n) v).
Abort.
我如何教 Coqfst (splitat n v)
与 v 相同?
解决方案
我找到了更简单的证据。
Lemma l (A:Type)(n:nat)(v:t A (n+0)): fst (splitat n v) ++ (nil A) = v.
Proof.
induction n.
refine (match v with Vector.nil _ => _ end).
reflexivity.
simpl.
rewrite (surjective_pairing (splitat n (Vector.tl v))).
simpl.
rewrite (IHn (tl v)).
rewrite <- eta.
reflexivity.
Qed.
推荐阅读
- ios - 在 Xcode 中将其他语言设置为默认语言而不是英语
- python-3.x - 从 Pandas 创建的 CSV 中的索引中删除特定数据
- vue.js - 导入组件vue js的正确方法
- python - 如何绘制坐标散点图
- scala - Spark DataFrame 中更惯用的日期转换为 ISO 8601 日期
- pytorch - 使用 CrossEntropyLoss 的 PyTorch 多类分类 - 不收敛
- c# - 反序列化多个 JSON 变量时遇到问题
- javascript - Jquery Kendo Grid - 手动插入行时显示重复行的方法
- python - 使用多处理时如何避免内存溢出错误?
- java - 使用 JAVA 检查两个数组是否相等的方法,尽管顺序不同。我收到有关我的退货声明的错误