在我的coq開發中,我正在學習如何爲我的問題域創建新的策略,la Prof. Adam Chlipala。如何使用自動重複自定義策略?
在該頁面上,他描述瞭如何通過圍繞match
包裝repeat
來創建強大的策略,以響應各種有趣的條件。 repeat
然後迭代,允許深遠的推論。
使用的repeat
有一個警告(重點煤礦):
,我們在這裏使用的
repeat
被稱爲戰術,或戰術組合子。repeat t
的行爲是循環運行t
,在所有生成的子目標上運行t
,在上運行t
,它們的生成的子目標等等。當t
在這個搜索樹中的任何一點都失敗時,那個特定的子目標會被稍後的策略處理。 因此,重要的是永遠不要使用repeat
,這種策略總是成功的。
現在,我已經有了一個強大的戰術使用,auto
。它類似地串聯在一起的步驟鏈,這次從提示數據庫中找到。從auto
的頁面:
auto
要麼完全解決目標,要麼保持完好無損。auto
和trivial
永遠不會失敗。
噓!我已經投入了一些精力策劃auto
的暗示數據庫,但似乎我使用repeat
僱用他們的戰術被禁止(即,有趣的戰術。)
是否存在的auto
一些變化可能出現故障,或否則可以在循環中正確使用?
例如,也許這個變體在「完成目標」時失敗。
編輯:結合auto
成環是不是「正確」的方式做到這一點呢(見this),但汽車的一個失敗的版本實際的問題仍然是可能有趣。
在我看來,你的問題實際上是兩個問題:標題['progress auto'可能是你正在尋找的東西];以及你在體內描述的那個,你已經給出了答案。 –
不錯,我想我應該重新命名爲「如何在自定義策略中使用自動重複?」 – phs
新標題聽起來不錯,但不會(部分)使@Zimm i48的答案無效?如果你真的可以分開問題,那將是非常好的,因爲它們都很有趣。但這是你的電話:) –