時々、私が適用スタイルの証明を書いているとき、私は証明方法 foo
を次のように変更する方法を望んでいました
foo
最初の目標を試してください。それが目標を解決するなら、良いです。それでも解決しない場合は、元の状態に戻して失敗します。
これは次のコードで発生しました:
qed (subst fibs.simps, (subst fib.simps)?, simp add: nth_zipWith nth_tail)+
さらに上に変更を加えると、への呼び出しsimp
は目標を完全に解決できなくなり、ループします。私が次のようなものを指定できたら
qed (solve_goal(subst fibs.simps, (subst fib.simps)?, simp add: nth_zipWith nth_tail))+
または(代替案のsynatx)
qed ((subst fibs.simps, (subst fib.simps)?, simp add: nth_zipWith nth_tail)!)+
または(おそらくさらに良い構文)
qed ((subst fibs.simps, (subst fib.simps)?, simp add: nth_zipWith nth_tail)[1!])+
このスクリプトでは解決できなかった最初の目標で停止していました。