定理証明手習い (89) J-Bob/prove
(rewrite/prove defs def seed steps)
関数定義なら全域性の主張、
定理なら帰納法の主張を証明します
違うのは種から主張をつくるところだけかな
rewrite/prove+1 (defs pf e)
そこまでの証明が終わっていれば次の証明を行う
rewrite/prove+ (defs pfs)
複数の証明を行う
(list-extend defs (elem1 (car pfs)))
というところで
証明済みのものは順次使えるようにしていく
証明は末尾のものから行っていく、というのがここですね
(J-Bob/prove defs pfs)
pfs
を証明する
引数チェックをしてrewrite/prove+
を呼び出すだけ
J-Bob/prove
でテストしてたところはあんまりないんですが、
動きそうなとこだけもってきたところうまく動いてるようです
定理証明手習い (88) J-Bob/step
(rewrite/step defs claim step)
claim
をstep
で書き換える
equality/def
で組み込み関数を置き換えるとき、def
には組み込み関数の
「定義」では(当然ながら)なく、関数名が単に入っていました
どっかでわざわざ組み込み関数かどうかを判断して渡してるのかな、と思ってましたが
lookup
で名前を探して見つからなかったときは名前を返すという、
以前ちょっと不思議に感じていた仕様はこのためだったんですね
ちょっとわかりづらいぞ
美容師さんについて徒然
先日、1000円のカット屋に言ってきました
もうずいぶん昔から1000円とか1500円のとこしかいってません
そんなにこだわりはないので
ただ、1000円クラスになるとちょっと、ただのオッサンオバサンにしか
見えないような美容師さんの割合が増える気がします
腕前と身なりが比例するとは限りませんが
ていうか腕前にもそんなこだわりはないと言ったばかりですが
髪型なんて気にしねえぜ、みたいな人にカットされるのもなんか嬉しい気はしません
定理証明手習い (87) equality/def
パターンに分けてequality/path
を呼びます
(defun equality/def (claim path app def)
claim
主張
path
フォーカスへのパス
app
関数適用
def
定義
定理証明手習い (86) follow-premsの復習とequality/path
(app-of-equal e)
equal
の適用か
(equality focus a b)
focus
を書き換えられる式
(equality/equation focus concl-inst)
帰結でフォーカスを書き換える
concl
はきっとconclusionでDethmの法則でいうところの帰結のこと
次の場合、置き換えた結果であるbody(e)を使ってフォーカスの書き換えができる。
- body(e)は、(equal p q)または(equal q p)という 帰結 を含む。
inst
はなんだろう?instance?
はずれではない気もするけどぴったりかというと・・・