HOL Light入門その3
では証明を書いていきましょう.簡単過ぎるのもおもしろくないので
任意の自然数 m に対して m=0 または 3^mを3で割った余りが0
の証明からはじめます.まずこれを論理式に直して,目標(ゴール)に設定します.
g `!m. m = 0 \/ 3 EXP m MOD 3 = 0`;;
g というのはゴールを設定する関数,それに続く,` と ` とで挟まれた部分が証明すべき式(HOL Lightではフォーミュラではなくタームと呼びます)であり
! は全称記号,mは量化される変数,.は仕切り, \/はまたは,3 EXP m は 3^m,そして, 一般に a MOD b は自然数 a を自然数 b で割った余り
を表しています.このようにHOL Lightでは括弧が略せる場合があり,例えば
g ( `!m.(m = 0 \/ (3 EXP m) MOD 3 = 0)` );;
などと入力しても
val it : goalstack = 1 subgoal (1 total) `!m. m = 0 \/ 3 EXP m MOD 3 = 0`
のように簡潔に表示されます.それと今更ですが行末は ; が2つです.