首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >证明自然数的对称性

证明自然数的对称性
EN

Stack Overflow用户
提问于 2018-08-11 10:54:29
回答 1查看 157关注 0票数 0

我是coq的初学者。我想证明一个关于自然数的布尔等式的对称性。我已经应用了归纳和析构命令,但它不起作用。请指导我证明这个定理。

代码语言:javascript
复制
Fixpoint  beqnat(n m : nat): bool:= 
  match n with 
  |0=> match m with
      |0=> true
      |S m' => false
      end 
  |S n'=> match m with
         |0=>false
         |S m'=> beqnat n' m'
         end  
  end. 

  Theorem beq sys:  
    forall(n m:nat), 
      beqnat n m = beqnat m n.
EN

回答 1

Stack Overflow用户

发布于 2018-08-15 14:31:20

接下来是对n的归纳,然后是对m的销毁

代码语言:javascript
复制
Theorem beq_sym: forall n m : nat, beqnat n m = beqnat m n.
Proof.
  induction n as [|n' IH]; destruct m; auto.
  apply IH.
Qed.

要了解正在发生的情况:

  1. Do induction n,它在每个子目标上为n = 0n = S n'.
  2. Do simpl提供子目标,以查看第一个代码是如何减少的。
  3. 现在您需要对m执行一些操作,以减少第二个< match/with >d15>。归纳不是必需的,因为您的beqnatn上是结构化递归的(键入Print beqnat并查找{struct n}进行确认),而不是m。所以,destruct m就足够了。同样,使用simpl来了解原因。
  4. 第二个子目标中对beqnat的递归调用需要归纳假设。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51796071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档