[英]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.