[英]In Coq, which tactic to change the goal from `S x = S y` to `x = y`
我想將目標從S x = S y
改為x = y
。 這就像inversion
,但是為了目標而不是假設。
這樣的策略似乎是合法的,因為當我們有x = y
,我們可以簡單地使用rewrite
和reflexivity
來證明目標。
目前我總是發現自己使用assert (x = y)
來引入一個新的子目標,但是當x
和y
是復雜的表達式時,編寫它是很繁瑣的。
戰術apply f_equal.
任何構造函數或函數都會做你想要的。
lema f_equal
顯示對於任何函數f
,你總是有x = y -> fx = fy
。 這允許您將目標從fx = fy
減少到x = y
:
Proposition myprop (x y: nat) (H : x = y) : S x = S y.
Proof.
apply f_equal. assumption.
Qed.
( injection
策略實現了相反的含義 - 對於某些函數,特別是對於構造函數, fx = fy -> x = y
。)
您可能想看一下injection
策略: http : //coq.inria.fr/distrib/V8.4/refman/Reference-Manual011.html#@tactic126
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.