Coq

短いRel_J.vを読んだ。
証明自体はそう難しいものは無いけれど、ほとんどサールの中国人の部屋状態。規則に従って何かを生成しているが、それが何を意味するのかほとんど分かっておりませぬ。


まとめ

  • 関係Rが反射的とは、Xの任意の要素 xについて R x xが成立することです。
  • 関係Rが推移的(transitive)であるとは、R a bかつR b cならば常にR a c となることです。
  • 関係Rが対称的(symmetric)であるとは、R a bならばR b aとなることです。
  • 関係Rが反対称的(antisymmetric)であるとは、R a bかつR b aならば a = b となることです。
  • 関係が同値関係(equivalence)であるとは、その関係が、 反射的、対称的、かつ推移的であることです。
  • 関係が半順序(partial order)であるとは、その関係が、 反射的、反対称的、かつ推移的であることです。
    • Coq 標準ライブラリでは、半順序のことを単に"順序(order)"と呼びます。
  • 前順序(preorder)とは、半順序の条件から反対称性を除いたものです。
  • 関係Rの反射推移閉包とは、Rを含み反射性と推移性の両者を満たす最小の関係のことです。
Inductive refl_step_closure {X:Type} (R: relation X)
                            : X -> X -> Prop :=
  | rsc_refl : forall (x : X),
                 refl_step_closure R x x
  | rsc_step : forall (x y z : X),
                    R x y ->
                    refl_step_closure R y z ->
                    refl_step_closure R x z.

あと、SfLib_J.vも。ところどころAdmittedになってるのでもっかい証明しなおすことで復習になった。
そこで、n <= m のような命題に対してnの帰納法を適用するときに、nとmは対称でないので

intros n.
induction n.
Case "n = 0".
  induction m...

とすることと

intros n m.
generalize dependent n.
induction m.
Case "m = 0".
  induction n...

とすることに違いが出るということに気がつきました。少しは理解が進んでると考えていいのだろうか…
あとSfLibに自然数に関する定理がほとんどないということは、これから算数的な話はあんまり出てこないんだろうね・・・



13週が過ぎようとしている。前半の山は越えたか。