このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

globular風の自然演繹系

自然演繹系のUIをglobular風にする。

globular 自然演繹系
パレット パレット
セル 項(ターム)
ラベル ラベル(名前)
(なし)
次元 次元
ダイアグラム
キャンバス ノート
キャンバスビュー ノートエリア
コマンド コマンド
コマンド

Globularのコマンドは少なくて(Globularの使い方 (2): サンプル・ワークスペース - 檜山正幸のキマイラ飼育記参照):

  1. New
  2. Make
  3. Source, Target
  4. Select
  5. Attach
  6. Theorem

自然演繹風だと次のようになるだろう。

特殊なコマンド

  1. New 何もない所から新しい0項を作り、パレットに入れる。*⇒0
  2. Del パレットから項を削除する。n⇒* 依存する項もすべて消す。
  3. Axiom 命題を公理として設定する。0⇒1
  4. Def 式に名前を付けてパレットに入れる。n⇒n+1

ノート上で使うコマンド

  1. conj, disj, impl : 0, 0⇒0
  2. neg : 0⇒0
  3. id : 0⇒1
  4. proj1, proj2 : 0, 0⇒1
  5. inj1, inj2 : 0, 0⇒1
  6. eval : 0, 0⇒0
  7. confl : 0, 0⇒0
  8. curry : 1⇒1
  9. pair : 1, 1⇒1
  10. copair : 1, 1⇒1
  11. comp: 1, 1⇒1
コマンドの発火条件

コマンドが発火するには、引数(オペランド)が特定のパターンを持っている必要があるんで、パターンマッチングでチェックして、発火条件が満たされたときだけ実行される。

例:

  • eval : A, A⊃B ⇒ B
Undo

トップレベルコマンドは、Do(コマンド), Undo, Redo。これらはログツリーを成長させていく。

  • Do(コマンド) :現在のノード(状態のーど)の最後の子として、コマンドの実行結果を追加する。コマンド自体もログツリーに記録する。
  • Undo : 現在のノードの親のノードに移り、状態も親と同じにする。
  • Redo : 現在のノードの最後の子のノードに移り、状態も子と同じにする。

ログツリーを直接にナビゲートするには、

  • parent, firstChild, lastChild, prevSibling, nextSibling, oldestSibling, eldestSiblingを使う。
  • コマンドと状態には、発行順に通し番号が付けられるので、その番号でも移動可能。
  • ログツリーとは別にヒストリーリストにも記録される。