如何对Coq中的列表长度进行案例分析?
在证明过程中,我需要对列表长度进行案例分析如何对Coq中的列表长度进行案例分析?,coq,coq-tactic,Coq,Coq Tactic,在证明过程中,我需要对列表长度进行案例分析l 当长度l=2时,则是另一种情况(二进制操作适用) 如何使用destruct或其他策略来执行此操作,并获得两个案例,即True和False 我试过: destruct (length l < 2). destruct (lt (length l) 2). remember (length l < 2). destruct HeqP. destruct(长度l DEC < /代码>结束的引理。在这种情况下,lt_dec是在Compare
l
长度l<2
时,这是一种情况(类似+
的二进制操作不适用)长度l>=2时,则是另一种情况(二进制操作适用)
destruct
或其他策略来执行此操作,并获得两个案例,即True和False
我试过:
destruct (length l < 2).
destruct (lt (length l) 2).
remember (length l < 2).
destruct HeqP.
destruct(长度l<2)。
自毁(lt(长度l)2)。
记住(长度l<2)。
破坏HeqP。
但是没有一个有效。你需要一个“建设性”版本的
你需要一个“建设性”版本的Vinz答案是正确的。当你需要考虑两个你知道“不同”的情况时,通常是因为它们是可判定的,所以寻找用“代码> > DEC < /代码>结束的引理。在这种情况下,lt_dec
是在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
l:列出nat
l0:长度l<2
============================
真的
第二个目标是
l : list nat
n : ~ length l < 2
============================
True
l:列出nat
n:~长度l<2
============================
真的
Vinz的答案是正确的。当你需要考虑两个你知道“不同”的情况时,通常是因为它们是可判定的,所以寻找用“代码> > DEC < /代码>结束的引理。在这种情况下,lt_dec
是在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
l:列出nat
l0:长度l<2
============================
真的
第二个目标是
l : list nat
n : ~ length l < 2
============================
True
l:列出nat
n:~长度l<2
============================
真的
谢谢您提供更多详细信息。谢谢您提供更多详细信息。