上下文:我正在練習Software Foundations。無法找到變量的實例
Theorem neg_move : forall x y : bool,
x = negb y -> negb x = y.
Proof. Admitted.
Theorem evenb_n__oddb_Sn : forall n : nat,
evenb n = negb (evenb (S n)).
Proof.
intros n. induction n as [| n'].
Case "n = 0".
simpl. reflexivity.
Case "n = S n'".
rewrite -> neg_move.
最後一行之前,我的子目標是:
evenb (S n') = negb (evenb (S (S n')))
而且我希望把它改造成這樣:
negb (evenb (S n')) = evenb (S (S n'))
當我嘗試步rewrite -> neg_move
,但是,它會產生此錯誤:
Error: Unable to find an instance for the variable y.
我確定這很簡單,但是我做錯了什麼? (請不要給任何東西解決evenb_n__oddb_Sn
,除非我完全錯誤)。
短語「無法找到變量* y *的實例」意味着Coq無法找到替換* neg_move *類型中的變量* y *的值。你可以通過明確地實例化* neg_move *的參數來解決這個問題,包括條件的前件(如果沒有實例化,它將作爲子目標生成)。但是,條件陳述一般意味着*應用*;事實上,* neg_move *可以應用於你的歸納假設,以獲得更有用的假設。 – danportin 2012-01-16 05:31:17