假設您想證明(fun (x : unit) => false) <> (fun (x : unit) => true)
。證明這一點的明顯方法是將intro
一些H : (fun _ : unit => false) = (fun _ : unit => true)
和使用H
進行重寫以證明false = (fun x => false) tt = (fun x => true) tt = true)
。但是,如果您嘗試這樣做,Coq會自動降低測試版本,您將不再有(fun x => false)
和(fun x => true)
作爲可以用H
重寫的子項。有沒有一種很好的方法來阻止自動發生在目標中的beta減少?
我得到解決這類問題的方法是定義類似app{X Y}(f : X -> Y)(x : X) := f x
,然後使用app
來阻止測試版的縮減。然而,這感覺有點冒險,所以我想知道是否有更好的方法來避免這些問題。
我只會用一個輔助引理'引理eq_f AB(fg:A→B):f = g-> forall x,fx = g x. – ejgallego
解決這個問題的另一種方法是'apply H中的f_equal(fun f => f tt))。 –
你的證明腳本是什麼樣的?我無法重現你的問題 - 對我來說一切正常。 –