簡體   English   中英

如何證明Coq中的引理?

[英]How can I prove following lemma in Coq?

我正在嘗試為以下引理編寫Coq po:

Require Export Coq.Structures.OrderedTypeEx.
Require Import FMapAVL.
Module M := FMapAVL.Make(Nat_as_OT).

Fixpoint cc (n: nat) (c: M.t nat):bool :=
match M.find n c with
| None => false
| _ => true
end.

Lemma l: forall (n: nat) (k:nat) (m: M.t nat), cc n m = true  -> cc n (M.add k k m) = true.

我無法簡化(M.add kkm)部分。

首先, cc沒有遞歸調用,因此您應該使此定義成為普通定義(使用關鍵字Definition而不是Fixpoint )。

其次,如果您想對M.findM.add的行為進行M.find ,則應查看描述這些功能的定理:定理M.find_2M.add_2MEeq_decM.add_1將很有用(我通過使用“ Search命令找到了這些引理。 因此,首先展開cc ,然后根據( M.find nm )的值進行M.find nm ,然后使用這些定理對語句中出現的函數進行邏輯M.find nm 請注意,函數M.MapsTo在此問題中起關鍵作用。

我寧願不給您解決方案,因為它看起來像是對表進行推理的基本練習。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM