[英]rewriting hypothesis to false with a contradictory theorem
我想表明
[seq q x t | x <- iota 0 (t + 1)] != [::]
我決定破壞iota 0 (t + 1)
因為我有一個引理說:
iota 0 (t + 1) != [::]
所以 destruct 的第一種情況應該有iota 0 (t + 1) = [::]
,根據提到的定理,它是錯誤的,我可以區分。 如何使用引理重寫第一個破壞案例中的方程式? 我想不明白。
謝謝。
你不需要破壞。 請注意, iota
是由其第二個變量的遞歸定義的。 您當前的目標無法簡化,因為t + 1
不是以構造函數開始的。 但是,您可以by rewrite addn1
將其放入可以解決的形式。
除了計算之外,正如 Arthur 所建議的那樣,您有時可以使用對位來處理非等式( Search "contra"
以獲得變體版本)。
例如,在您的情況下,您可以顯示,如果您添加一些單射性約束:
Lemma foo (q : nat -> nat -> nat) t (injq: injective (q^~ t)) :
iota 0 (t + 1) != [::] -> [seq q x t | x <- iota 0 (t + 1)] != [::].
Proof.
apply: contra_neq.
rewrite [RHS]( _ : [::] = [seq q x t | x <- [::]]) //.
exact: inj_map.
Qed.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.