Coq學習筆記11:策略和證明自動化
目錄:類型論驛站寫作計劃
上一篇:Coq學習筆記10:歸納數據結構-2
下一篇:Coq學習筆記12:歸納謂詞
這份筆記對應的是 CoqArt法文版 的第八章。
I. 歸納類型的策略(les tactiques des types inductifs)
已經學過的策略回顧:
- :進行分類處理
- :進行轉換
- :進行歸納推理
- :核實構造子構造的項是不同的,以及是單射的
分類討論和遞歸策略:
- :通常等同於
- :和 的關係類似 與 的關係。
轉換策略:
- : 只能歸約;而 可以做任何轉換,但需要用戶提供新的聲明
- :惰性求值,可以規定所需的轉換
- :參數歸約先於函數,與 相反
- :歸約 形式的表達式
- :歸約常量和函數的定義,可以攜帶參數,參數是需要歸約的對象
- :歸約分類和遞歸函數
- :歸約 形式的表達式
自動化策略:
- :使用初始環境提供的
- :使用
- ,為 提供提示,使用時應將 做為 的參數
- :語法和 一致,但搜尋範圍更廣
數值策略:
- :適用於環
- :適用於線性等式和不等式
- :適用於除環/域
- :和 功能相似,但適用於實數
命題邏輯決策過程:
- :直覺主義命題邏輯自動化判定
- :作用等同於 再加上一個 無法取代的策略
II. 策略定義語言 (le langage de définition de tactiques)
參數的聯繫:
Ltac autoClear h := try (clear h; auto with arith; fail).
以策略為參數:
Ltac autoAfter tac := try (tac; auto with arith; fail).
遞歸策略:
Ltac le_S_star := apply le_n || (apply le_S; le_S_star).
分類構造:
Ltac check_not_divides := match goal with | [ |- (~divides ?X1 ?X2) ] ) cut (X1 <= X2);[ idtac | le_S_star ]; intros Hle; rewrite (le_plus_minus _ _ Hle); apply not_divides_plus; simpl; clear Hle; check_not_divides | [ |- _ ] ) apply not_divides_lt; unfold lt; le_S_starend.
使用假設名稱:
Ltac contrapose H := match goal with | [id:(~_) |- (~_) ] ) intro H; apply id end.
和歸約的互動:
Ltac simpl_on e := let v := eval simpl in e in match goal with | [ |- context [e] ] ) replace e with v; [idtac | auto] end.
目錄:類型論驛站寫作計劃
上一篇:Coq學習筆記10:歸納數據結構-2
下一篇:Coq學習筆記12:歸納謂詞
推薦閱讀:
TAG:Coq | proofassistant | 函數式編程 |