Basic Model


問題

ここでは,以下の引き算を解くモデルを構築しよう。

 876
-123
----
 ???


ワーキングメモリ

まず,ワーキングメモリは,以下のようになる。

以下が,ワーキングメモリの初期状態の内容である。

(Goal FindDifference)
(Slot 8 COLUMN3 ROWUPPER)
(Slot 7 COLUMN2 ROWUPPER)
(Slot 6 COLUMN1 ROWUPPER)
(Slot 1 COLUMN3 ROWLOWER)
(Slot 2 COLUMN2 ROWLOWER)
(Slot 3 COLUMN1 ROWLOWER)
(Answer EMPTY COLUMN1)
(Answer EMPTY COLUMN2)
(Answer EMPTY COLUMN3)
(Leftof COLUMN2 COLUMN1)
(Leftof COLUMN3 COLUMN2)
(Leftmost COLUMN3)
(Processing COLUMN1)
(Focus COLUMN1)
(Sum 0 0 0)
(Sum 0 1 1)
(Sum 0 2 2)
(Sum 0 3 3)
(Sum 0 4 4)
(Sum 0 5 5)
(Sum 0 6 6)
(Sum 0 7 7)
(Sum 0 8 8)
(Sum 0 9 9)
(Sum 0 10 10)
(Sum 1 0 1)
(Sum 1 1 2)
(Sum 1 2 3)
(Sum 1 3 4)
(Sum 1 4 5)
(Sum 1 5 6)
(Sum 1 6 7)
(Sum 1 7 8)
(Sum 1 8 9)
(Sum 1 9 10)
(Sum 1 10 11)
(Sum 2 0 2)
(Sum 2 1 3)
(Sum 2 2 4)
(Sum 2 3 5)
(Sum 2 4 6)
(Sum 2 5 7)
(Sum 2 6 8)
(Sum 2 7 9)
(Sum 2 8 10)
(Sum 2 9 11)
(Sum 2 10 12)
(Sum 3 0 3)
(Sum 3 1 4)
(Sum 3 2 5)
(Sum 3 3 6)
(Sum 3 4 7)
(Sum 3 5 8)
(Sum 3 6 9)
(Sum 3 7 10)
(Sum 3 8 11)
(Sum 3 9 12)
(Sum 3 10 13)
(Sum 4 0 4)
(Sum 4 1 5)
(Sum 4 2 6)
(Sum 4 3 7)
(Sum 4 4 8)
(Sum 4 5 9)
(Sum 4 6 10)
(Sum 4 7 11)
(Sum 4 8 12)
(Sum 4 9 13)
(Sum 4 10 14)
(Sum 5 0 5)
(Sum 5 1 6)
(Sum 5 2 7)
(Sum 5 3 8)
(Sum 5 4 9)
(Sum 5 5 10)
(Sum 5 6 11)
(Sum 5 7 12)
(Sum 5 8 13)
(Sum 5 9 14)
(Sum 5 10 15)
(Sum 6 0 6)
(Sum 6 1 7)
(Sum 6 2 8)
(Sum 6 3 9)
(Sum 6 4 10)
(Sum 6 5 11)
(Sum 6 6 12)
(Sum 6 7 13)
(Sum 6 8 14)
(Sum 6 9 15)
(Sum 6 10 16)
(Sum 7 0 7)
(Sum 7 1 8)
(Sum 7 2 9)
(Sum 7 3 10)
(Sum 7 4 11)
(Sum 7 5 12)
(Sum 7 6 13)
(Sum 7 7 14)
(Sum 7 8 15)
(Sum 7 9 16)
(Sum 7 10 17)
(Sum 8 0 8)
(Sum 8 1 9)
(Sum 8 2 10)
(Sum 8 3 11)
(Sum 8 4 12)
(Sum 8 5 13)
(Sum 8 6 14)
(Sum 8 7 15)
(Sum 8 8 16)
(Sum 8 9 17)
(Sum 8 10 18)
(Sum 9 0 9)
(Sum 9 1 10)
(Sum 9 2 11)
(Sum 9 3 12)
(Sum 9 4 13)
(Sum 9 5 14)
(Sum 9 6 15)
(Sum 9 7 16)
(Sum 9 8 17)
(Sum 9 9 18)
(Sum 9 10 19)
(Sum 10 0 10)
(Sum 10 1 11)
(Sum 10 2 12)
(Sum 10 3 13)
(Sum 10 4 14)
(Sum 10 5 15)
(Sum 10 6 16)
(Sum 10 7 17)
(Sum 10 8 18)
(Sum 10 9 19)
(Sum 10 10 20)


ゴール遷移

さて,最後に,Goalについて示す。
Goalは,次にどのような処理を行うのかの目標である。この筆算の問題の場合,以下の3つのGoalを考える。

これら3つのゴールが,以下のように遷移してゆくことによって,この筆算の問題は最終的に解決することになる。



処理プロセス

ゴールの遷移に伴う問題の処理のプロセスは以下のようになる。赤→はFocus行,青→はProcessing行を指している。



ルール

一つひとつのゴールに対応づけて,ルールを記述してゆく。以下に具体例を示す。

■FindDifference

IF
ゴールがFindDifferenceで,
Processing行(=Focus行)の上の数字が下の数字以上ならば,
THEN
ゴールをWriteAnswerに変更せよ。

IF節
(Goal FindDifference)
(Processing ?C)
(Focus ?C)
(Slot ?Nlower ?C ROWLOWER)
(Slot ?Nupper ?C ROWUPPER)
(*test-greater-or-equal ?Nupper ?Nlower)

THEN節
(*delete (Goal FindDifference))
(*deposit (Goal WriteAnswer))
■WriteAnswer

IF
ゴールがWriteAnswerで,
Processing行(=Focus行)の上の数字と下の数字の差が見つかれば,
THEN
ゴールをShiftColumnに変更し,
その数字をProcessing行の答に書き込め。

IF節
(Goal WriteAnswer)
(Processing ?C)
(Slot # # #)
(Slot # # #)
(Sum # # #)

THEN節
(*delete (Goal WriteAnswer))
(*deposit (Goal #))
(*delete (Answer EMPTY ?C))
(*deposit (Answer # ?C))
<<参考>>

このモデルでは,差は,working memoryの中の1桁の足し算の知識を参照することで求められる。
例えば,B - Aを求める時には,メモリの中から,

(Sum A ?a B)

もしくは

(Sum ?a A B)
にマッチする?aを求めることになる。

■ShiftColumn

IF
ゴールがShiftColumnで,
Processing行(=Focus行)の左の行が見つかれば,
THEN
ゴールをFindDifferenceに変更し,
その行を新たなProcessing行,およびFocus行とせよ。

IF節
(Goal ShiftColumn)
(Processing #)
(Focus #)
(Leftof # #)

THEN節
(*delete (Goal ShiftColumn))
(*deposit (Goal #))
(*delete (Processing #))
(*deposit (Processing #))
(*delete (Focus #))
(*deposit (Focus #))
■Completed

IF
Processing行が一番左の行で,
すでにその行の答が埋められていれば,
THEN
システムを停止せよ。

IF節
(Processing ?C)
(# ?C)
(Answer # #)
(*test-not-equal # EMPTY)

THEN節
(*halt)