在我的coq開發中,我正在學習如何創建適合我的問題域的新策略,la Prof. Adam Chlipala。在該頁面上,他描述瞭如何通過例如創建強大的自定義策略。結合repeat
與match
。如何在自定義策略中利用自動搜索和提示數據庫?
現在,我已經有一個強大的一次性使用戰術,auto
。它將來自提示數據庫的步驟鏈串起來。我已經投入了一些精力來策劃這些提示數據庫,所以我想繼續使用它。
然而這提出了一個問題。 目前尚不清楚將「auto
」的功能納入定製策略的「正確」方法是什麼。
例如,因爲(按其頁面)auto
總是要麼解決目標,要麼不做任何事情,把它放在循環內不比在循環之後調用它更強大。
要明白爲什麼這不是理想的,考慮一種假設的方式來直接調用auto
的單個「步驟」,如果它可以進行更改(而不是僅在解決目標時)纔會成功,否則將失敗。這樣的單步可以在匹配重複循環中與自定義行爲交織,使我們可以例如try contradiction
或try congruence
在搜索樹內的中間點。
將auto
的功能納入自定義策略是否有良好的設計模式?
可以將auto
的行爲分解爲我們可以使用的「單步」策略嗎?
這將如何讓我們將類似自動搜索與「同餘」或其他求解器合併爲受限片段? – phs
@phs:我所建議的是從自動策略中調用同餘和這樣的*。 –
啊,我明白了。你知道'typeclasses eauto'的一個變體,類似於'auto使用...',其中明確的術語可以被添加到搜索中嗎?如果它在手冊中,那不是我能看到的地方。 – phs