如何对Coq中列表的长度进行案例分析?

时间:2015-12-01 07:55:35

标签: coq coq-tactic

在证据中,我需要对列表l的长度进行案例分析。

  1. length l < 2一个案例(+之类的二元操作不适用时)
  2. length l >= 2为另一种情况时(二元操作适用)
  3. 如何使用destruct或其他一些策略来做到这一点,并获得两种情况,即真和假?

    我试过了:

    destruct (length l < 2).
    
    destruct (lt (length l) 2).
    
    remember (length l < 2).
    destruct HeqP.
    

    但都没有效果。

2 个答案:

答案 0 :(得分:2)

你需要一个建设性的&#34;版本<,因为标准版本位于Prop,因此您无法对其进行案例分析。 您可以使用comparele_lt_dec或布局版<(在文档中搜索所有选项,最简单的选项应为this one)。

如果你真的需要测试2的长度,你也可以破坏length n 3次并手动处理3个案例。

答案 1 :(得分:2)

Vinz的答案是对的。当你需要考虑两个你认识不同的情况时,它通常是因为它们是可判定的,所以寻找以<!DOCTYPE html> <html> <head> <script> function getInformation() { var strColor = prompt("What is your favorite color"); var strFirstName = document.getElementById("txtName").value; var strYourAge = document.getElementById("txtAge").value; document.body.style.backgroundColor= strColor; alert(strFirstName + "Your favorite background color was applied to the backgrond of the page. \n\n and your age is" + strYourAge); } </script> </head> <body> <form> <table> <tr> <td><label>First Name</label> </tr> <tr> <td><input id="txtName" type="text" name="Name" required></td> </tr> <tr> <td><label>Your Age</label></td> </tr> <tr> <td><input id="txtAge" type="number" name="Age" required></td> </tr> <tr> <td><button onclick="getInformation()">Submit</button></td> </tr> </table> </form> </body> </html> 结尾的引理。在这种情况下,_declt_dec中定义,您可以在导入Arith时获得它。所以:

Compare_dec

现在第一个目标是

Require Import Arith.

Goal forall (l:list nat), True.

intro. destruct (lt_dec (length l) 2).

,第二个目标是

l : list nat
l0 : length l < 2
============================
 True