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

如何用归纳法在Coq中证明引理forall x y, x<=y -> div2 x <= div2 y?

证明步骤

首先定义div2(若环境未自带):

Fixpoint div2 (n : nat) : nat :=
  match n with
  | O => O
  | S O => O
  | S (S n') => S (div2 n')
  end.

第一步:证明辅助引理:div2是弱递增的

即对任意自然数n,div2 n <= div2 (S n):

Lemma div2_le_S : forall n, div2 n <= div2 (S n).
Proof.
  induction n as [ | n'].
  - (* n = 0 *) simpl. reflexivity.
  - (* n = S n' *) destruct n' as [ | n''].
    + (* n' = 0,即n=1 *) simpl. reflexivity.
    + (* n' = S n'',即n=2+n'' *) simpl.
      rewrite IHn'.
      apply le_S. reflexivity.
Qed.

第二步:对x<=y的归纳证明原引理

利用Coq中<=的归纳定义(le_n和le_S构造子):

Lemma div2_monotone : forall x y, x <= y -> div2 x <= div2 y.
Proof.
  intros x y H.
  induction H.
  - (* 基础情况:x=y *) reflexivity.
  - (* 归纳步骤:x <= m 推出 x <= S m *)
    apply le_trans with (m := div2 m).
    + exact IHle.
    + apply div2_le_S.
Qed.

说明

单独对x或y归纳容易卡壳,因为div2的单调性和x<=y的构造逻辑绑定更紧密。对H: x<=y归纳直接贴合自然数<=的定义:要么x=y,要么y是某个满足x<=m的数的后继。归纳步骤中借助辅助引理的弱递增性,结合自然数<=的传递性le_trans,直接从归纳假设推导出结论。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 10:05:59