You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Coq引理select_perm'证明求助:该引理的最优证明启动方式是什么?

Coq 引理 select_perm' 最优证明启动方式

由于select是基于列表结构递归定义的函数,该引理的最优启动方式是对列表参数做结构归纳,具体启动步骤如下:

  • 第一步:引入前两个全称参数,对列表l执行结构归纳,再引入剩余参数与等式假设,保证归纳假设的全称强度足够覆盖两种递归分支的需求:
intros x l; induction l as [| h t IH]; intros y r H.
  • 第二步:处理空列表基准分支
    对空列表的情况,直接化简select x []可得(x, []) = (y, r),注入等式后目标退化为自反的置换关系,直接调用reflexivity即可证明:
- simpl in H; injection H as -> ->; reflexivity.
  • 第三步:处理非空列表的归纳分支
    此时目标中的select x (h::t)会自动展开为两个布尔分支的匹配结构,直接对x <=? h做布尔情况拆分,再对递归调用的返回值做解构即可用上归纳假设:
- simpl in H; destruct (x <=? h) eqn:E.
  + destruct (select x t) as [j l'] eqn:Sel; inversion H; subst.
    (* 此时可直接应用归纳假设IH得到Permutation (x::t) (j::l'),再结合Permutation_cons扩展即可得到目标 *)
  + destruct (select h t) as [j l'] eqn:Sel; inversion H; subst.
    (* 此时将归纳假设IH中的x替换为h即可得到对应递归调用的置换性质,再配合Permutation_swap等标准库引理即可拼接出目标 *)

后续证明只需调用Coq标准库Coq.Sorting.Permutation中已有的基础置换引理即可完成,不需要额外证明辅助引理。

内容的提问来源于stack exchange,提问作者John Regis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:45:04