簡體   English   中英

Coq 錯誤:無法將“true”與“is_true (0 < a - b - 3)”統一起來

[英]Coq error: Unable to unify "true" with "is_true (0 < a - b - 3)"

不確定我做錯了什么,但我認為reflexivity應該在下面起作用,但事實並非如此。

a, b : nat
H : (1 <=? a - b - 3) = true
______________________________________(1/7)
is_true (0 < a - b - 3)

我還嘗試apply leb_complete in H.apply leb_complete in H. ,結果是:

a, b : nat
H : (1 <= a - b - 3)%coq_nat
______________________________________(1/7)
is_true (0 < a - b - 3)

但在這兩種情況下,Coq 都給我一個錯誤,說Unable to unify "true" with "is_true (0 < a - b - 3)"

應該沒那么復雜吧? 我在這里錯過了什么嗎?

首先,“它不應該很復雜”是一個錯誤的問題。

reflexivity是一種從不使用假設的策略,它試圖以非常具體的方式證明目標。 對於“簡單”的純數字目標 p,您可以使用 lia。

它只能證明目標可轉換為形狀R a1 a2 ,其中 R 是自反關系(如等式)並且 a1 和 a2 是可轉換的。 如果將兩個項減少到正常形式給出“相同”的結果(以 eta 擴展的一些並發症為模),則這兩個項是可轉換的。

例如,自反性可以證明 2 + 2 + 0 = 4,或 0 + n = n。 但是不能證明n+0=n(可以用lia證明),因為n+0是范式。

暫無
暫無

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

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