Coq學習筆記11:策略和證明自動化

目錄:類型論驛站寫作計劃

上一篇:Coq學習筆記10:歸納數據結構-2

下一篇:Coq學習筆記12:歸納謂詞

這份筆記對應的是 CoqArt法文版 的第八章。

I. 歸納類型的策略(les tactiques des types inductifs)

已經學過的策略回顧:

  • 	exttt{case} :進行分類處理
  • 	exttt{simpl} :進行轉換
  • 	exttt{elim} :進行歸納推理
  • 	exttt{discriminate}, 	exttt{injection} :核實構造子構造的項是不同的,以及是單射的

分類討論和遞歸策略:

  • 	exttt{induction} :通常等同於 	exttt{intros until} id; 	exttt{elim} id
  • 	exttt{destruct} :和 	exttt{case} 的關係類似 	exttt{induction}	exttt{elim} 的關係。

轉換策略:

  • 	exttt{change}	exttt{simpl} 只能歸約;而 	exttt{change} 可以做任何轉換,但需要用戶提供新的聲明
  • 	exttt{lazy} :惰性求值,可以規定所需的轉換
  • 	exttt{cbv} :參數歸約先於函數,與 	exttt{lazy} 相反
  • 	exttt{beta} :歸約 	exttt{(fun x:T => e) v)} 形式的表達式
  • 	exttt{delta} :歸約常量和函數的定義,可以攜帶參數,參數是需要歸約的對象
  • 	exttt{iota} :歸約分類和遞歸函數
  • 	exttt{zeta} :歸約 	exttt{let x := v in e} 形式的表達式

自動化策略:

  • 	exttt{auto} :使用初始環境提供的 	exttt{base}
  • 	exttt{auto with} id :使用 	exttt{base} id
  • 	exttt{Hint Resolve} thm_1dots thm_k:database ,為 	exttt{auto} 提供提示,使用時應將 database 做為 	exttt{auto with} 的參數
  • 	exttt{eauto} :語法和 	exttt{auto} 一致,但搜尋範圍更廣

數值策略:

  • 	exttt{ring} :適用於環
  • 	exttt{omega} :適用於線性等式和不等式
  • 	exttt{field} :適用於除環/域
  • 	exttt{fourier} :和 	exttt{omega} 功能相似,但適用於實數

命題邏輯決策過程:

  • 	exttt{tauto} :直覺主義命題邏輯自動化判定
  • 	exttt{intuition} tac :作用等同於 	exttt{tauto} 再加上一個 	exttt{tauto} 無法取代的策略

II. 策略定義語言 mathcal{L}	ext{tac} (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 | 函數式編程 |