簡體   English   中英

IndProp:ev_plus_plus

[英]IndProp: ev_plus_plus

(** **** Exercise: 3 stars, standard, optional (ev_plus_plus)

    This exercise just requires applying existing lemmas.  No
    induction or even case analysis is needed, though some of the
    rewriting may be tedious. *)

Theorem ev_plus_plus : forall n m p,
  even (n+m) -> even (n+p) -> even (m+p).
Proof.
  intros n m p H1 H2.

這是我得到的:

1 subgoal (ID 89)

n, m, p : nat
H1 : even (n + m)
H2 : even (n + p)
============================
even (m + p)

我已經證明了先前的定理:

Theorem ev_ev__ev : forall n m,
  even (n+m) -> even n -> even m.

並想將其應用於H1,但是

apply ev_ev__ev in H1.

給出一個錯誤:

Error: Unable to find an instance for the variable m.

為什么even (n + m)表達式中even (n + m)找不到“ m”? 怎么修?

更新

apply ev_ev__ev with (m:=m) in H1.

給出一個非常奇怪的結果:

2 subgoals (ID 90)

n, m, p : nat
H1 : even m
H2 : even (n + p)
============================
even (m + p)

subgoal 2 (ID 92) is:
 even (n + m + m)

我認為這會將H1轉換為2個假設:

H11 : even n
H12 : even m

但是取而代之的是給了2個子目標,我們需要證明的第二個子目標比最初的子目標更復雜:

even (n + m + m)

這里發生了什么事?

語句forall nm, even (n+m) -> even n -> even m. 並不意味着“如果我們擁有(n + m)為偶數,那么我們擁有n為偶數和m為偶數”(這是錯誤的,請考慮n = m = 1)。 相反,它的意思是“如果我們(n + m)為偶數,並且n為偶數,那么m為偶數”。

H12 : even m H1 : even (n + m)不可能假設H11 : even nH12 : even m ,而沒有矛盾。 我建議在嘗試用Coq證明之前,先弄清楚如何用紙和筆證明您的定理。

因為Coq無法確定應為m賦予什么值。 您可以eapply ev_ev__ev in H1.應用策略eapply ev_ev__ev in H1. 並看到目標

  n, m, p : nat
  H2 : even (n + p)
  H1 : even ?m
  ============================
  even (m + p)

subgoal 2 (ID 17) is:
 even (n + m + ?m)

Coq用元變量?m實例化了m,最后您需要為該元變量提供見證以完成證明。

第二種方法是通過apply ev_ev__ev with (m := m) in H1.實例化m的值apply ev_ev__ev with (m := m) in H1.

您可以在軟件基金會https://softwarefoundations.cis.upenn.edu/lf-current/Tactics.html中看到更多有關戰術應用的信息

發生的事情是Coq用ev_ev__eveven n參數而不是even (n+m)統一H1

您可以確切地告訴Coq您想要H1到達的位置,並使用_通配符表示讓Coq計算出詳細信息的位置。

您可能想要用even n -> even m類型的ev_ev__ev nm H1 ,但是您的apply產生了ev_ev__ev (n+m) m _ H1 ,這也給您提供了更多的證明依據。 要查看證明上下文,請執行

Check ev_ev__ev (n+m) m _ H1.

暫無
暫無

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

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