′
、
昭和
59年 度
卒業 論文
人 工 知 能 向 け 言 語 を爵 い た建 築 に 関 す る ェ キ ス パ ー ト・ シス テ ム
指導 :
渡辺
仁史
助教授
早 稲 田大 学 理 工 学 部 建 築 学 科 ・
GlD177
安留
昌三
は じめに
建築 の世界 にコ ンピュータが導入 きれてか ら、色 々な面 で 省カイ ヒ、合理 化 が進 んだ。建築計 画 の中では CAD(COmputer Aided Design)と 呼 ばれ るシステム が導入 きれかな りの面 で設計 の省力化が進んだけれ ども 未だ解 決 できない問題も ある。設計者 の場合、様 々な知識が計画 の作業 に必 となる 要 。単 にデ ザインの問 題 だけでな く、各建築 のもつ機能、材料 に関する知 識、施工 法、法規等 々数 えた らき りがない程である。一般 にこの ような知識 は経験 によって 養 われる場合が多 い。けれ ども経 験 を積 むには長 い年月がかか る 。最近人間 のもつ専門的な知識を コ ンピュータに覚 え きせ 、除 々に知識を増や してぃ こ く とによって人間 と同 じよ うな レベ ルにも ってぃ き、色 々な面 で役立て ょぅとぃ う 動 きがでて きてぃる。建 築計 画 におぃて も この ような こ とを考 える時期 に きてお り、 この 研究を始 めた。
目次
は じめに
1
序章
1-1研 究 目的 1-2研 究背景 1)既 存 の CADシ
ステムの問題点
―
ユ ーザ ーインターフェースの問題
―
設計 の流 れの 中での CADの 位置 づ け
―
2)建 築設計におけるプ ログ ラ ミング言語 の役割 ― 対話型言語 ― 関数型言語
― ―
3)ェ キスパ ー ト・ システムの提案 ―
AIの
手法 を取入れ る
―
― 知識の計算機で の表現
―
1-3研 究概要 2
建築 に おける人工知能 システ ム ー 過去 の例
―
0 阪大 の場合 O CMUの 場合 … 他 の分野 の例
0 3
代表的な人工知能 システムについて
設計支援 システムの開発 ― 法規 CAD
4
―
―
結論 ― 今後 の CADシ ステムの展望 おわ りに 参考文献 付録
プ ログラム・ リス ト
―
―
研究 目的
この研究 は従来 の CADが プ ログラ ミング言語等 の制約 か ら 比較的定型的な作業 のみにしか対応 で きず、 しかも設計プ ロセス の初期段階で の支援が行なわれていないことに着 目 し、最近注 目 きれつつ ある人工 知能的手法 を用 いて 、設計者 の設計支援要求を 満足 し得 るCADプ ログラムを作成する ことが 目的 である。 具体的 には敷地 レイアウ ト評価 の為 のエスキ ー ス・ プ ログ ラム と 設計者支援 の為 の建築基準法 な どの計算機内部表 現 の考察 である。 一般 に、その道 の専門家 の持 つ知識 expeFt knOwledge)を ル ール として定式化 して利用するマンマシンシステ ムの ことを、 エキスパー ト・ システム と呼ぶ。
既存 の CADシ ステムの問題点 近年 、パーソナルコンピュータの急速な進歩 と普及 に伴 って 、大型機 に依存せ ず とも ドラフテ ィングマシ ー ン としての使用 に耐 えるよ うなシステ ムが低価格で 実現 出来 るように な って きたが 、 まだまだパ ソコンの う で え 動 くソフ トゥェァに は満足 出来ない点 が 多 い。 まず 、 ソフ トゥェァの 開発 には多大 な資金 と労力 と 時間を費やすので買 う立場 か らは十分採算 に見合 うものでなければかえ ないし、 む 自力 で開発することはなお きら難 しい。 まず計算することを念頭 に おぃて作成 されている 現在 の計算機では人間 (建 築 家 )の 柔軟で多様 な発想を反 映 させ るだけの十分なプ ログラ ムを組 める環境 にな い。 短期間で要求仕様 を満 たすプ ロ トタィプ を作成 し、シミュレー シ ョンを行 い、 保守を行 い易 いプ ログラ ミング言語が未 だ出現 していないか らである。
1-一
――建築 と言語
建築 とプ ログラ ミング言語 の話 ここでは、通常 のプ ログラミング言語 として FORTRANや
BASICを
想 も コンパイラーが あるのが
定 している。最近 では高速性 の追求 か らBASICに 当 り前 になっているが構造解析 プ ログラムの ように繁雑 に使用 し、かつ充分 BU
Gと りに時間をかける必 要 があるも のを除 いて 、建築 の 日常 のプ ログラ ミングに はインタ ープ リタ ーを用 いたほ うが よい。 ところが 、 BASICは 変数 がすべ て大 域的 で あった り、サブル ーチ ンがパラ メータ ーの受渡 しがで きなかった りしてプ ログラム を見通 しよくつ くれな い。 ま たサブル ーチ ンにラベ ル付けがで きるのも、一部 の高級 なパ ソコンのみである。
APLと LISPは
これ らの問題 を解決す るのに有効 な言語 である。 APLは
マ トリックスを取 り扱 う分野 に向 いている し、 LISPは 記号処理 に向 いている 。 どち らも対話型言語 で あり、関数型言語である。 APLを 例 に とれば、関数形 は
F
F b a F b r← F r← F b r← a F b
引数 が無 く結果 を明示 しない
1項 関数 で結果 を明示 しない 2項 関数 で結果 を明示 しない 引数 が無 く結果を明示 す る
1項 関数 で結果 を明示する
2項 関数 で結果 を明示する
の ように豊 富 で、引数 はマ トリックスを渡せ るので手続 き上 の問題 はない。 各関数 は それ 1個 で独 立 したサブル ーチンで あ り、入 出力 の形 きえ、 きちん と 決 めてお けば中は どの ようにかきか えてもか まわないのでアルゴ リズムの記述や シ ミュ レーシ ョンに向 いている。 また、関数 の再帰呼出 しが可能 で、強力 な演算 子 が豊 富 であるか ら非常 にコンパ ク トなプ ログラムが書 ける。 APLは 演算 を右
――建築 と言語
1-一
――建築 と言語
1-―
か ら左 に向けて行 な うので最初 は とっつきに くいが別 に問題 はない。 また関数 が 豊富過 ぎて丸 ごと一度 に覚 えようとすれば大変 だが 自分 の必要 とす る演算子 だけ す こしずつ覚 えればよい。最近 にわかにAPLが 利用 で きるパ ソコンがふえたの で動 き、大型機 にひ で急速 な言語 の普及 が見込 まれる。中 にはMC68000上 けを とらぬものも ある。 しか しなが ら現在 のAPLで はゼネラル・ ア レイ (文 字 や数字 が混在 した り、 レコ ー ド型 を 自由に構成 で きる)の 機能 がな く、 リス ト処 理 な どはソフ トウ ェアで補強 しなければな らな いので APL2が はや くあち こち で利用 で きるようになることが望 まれ る。APLは 、特 に建築 においてはその電 卓的利用 が期待 される。
LISPは
基本デ ータ型 に フ トム とリス トを持 つ 。 フ トムは数値 フ トム と文字 フ トムか ら成 る。 フ トム とは空 自な どの区切 り文字 を含 まない文字列 であ り、 リ ス トは文字列 の並 びであ り、 ア トム とリス トか ら成 る。積算や在庫管理 な ど書式 の定 まった作業 には既存 のプ ログラ ミング言語や簡易言語 ,デ ータベ ース言語 (
dBASE2等 )で 十分 で あるが、試 4予 錯誤的 プ ログラ ミングや、経験則やチ ェ ック リス トの柔軟 なデ ータ・ フォーマ ッ トでの記述 には LISPは 不可欠 である 。 ただ、 LISPに しても APLに しても過去 に膨大 なソフ トウェアの蓄積 が あ るが 、一個人 が全 く独力でプ ログラ ミング言語を習得 しようとした場合、一般 の 目のふれ るところに公開 きれて いるプ ログラムの差が歴然 としているので、 ツー ルを利用 しようと思 っても殆 ど自分 の努力 にかか っている所 が他 と違 う。 (最 近 は LISPの 本も た くきんでて いるし、 APLも イデ ィオム・ ライプラ リーが 出 たので事態は改善 されて いるが、 まだまだである。)
――建 築 と言語
1-―
――建築 と言語 2-―
建築 とプ ログラ ミング 言語
2
次 にPFO10gと Smalltalk-80に ついて述べ る。 Prologは 1973年 フランスのマ ルセイユ大学 のコルメラ ウア教授を中心 としたグ ル ープが生みの親 である。翌 1974年 IFIPに おいてイギ リスのコワルスキ ー教 授 (当 時 エジンバラ大学、現在 ロン ドン大学 )が Pr01ogの 論理的な基盤 を明 らか に し、更 にPrologで 書かれたプ ログラムの動作 を明快 に解釈する方法 を発表 した 。 さらに1981年 、東京で開催 された第五世代 コンピュータ国際会議 において IC
OTが 論理 プ ログラ ミングの核言語 としてPr010gの 採用 を決め、一躍世界 の注 目
を集 めた。 最近 までPrologの 動 く機械 はDEC Systen-20や VAXll-780等 な ど極少数であった が、パ ソコンで動 くものも 出回 り始めた。 Prologは 一 階 の述語論理 に基づいてお り、 〈 頭部 ):一 〈 本体〉 で、 く 頭部 )は 手続 き名 (バ ラメータ ー ,パ ラ メータ ー , ・ 。 ・ )の 形を して いて リテ ラル と呼 ばれる。 (本体 )は リテラルをカンマ区切 りで並 べ たものであ る。 Prologで は頭部 のみで本体 のない節 は導出の際、空節が続 き事実 とみな される
Pr0108文 そのも のが事実 の登録 と参照 を表 しているので簡単なデ ータベースは 容易 に構築 で きる。 また、変数 に リス トを持 たせ ることに より構文解析 な どに威 力を発揮 する。
――建築 と言語 2-―
・
――建築 と言語 2-―
Smalltalk-80
smantalk-80は 1970年 代初頭 か ら研究 開発 されてきたソフ トウェアシステムで あるが 、 まだ世間 にその実体 を現わ したばか りであり、現段階で は実際 に これ を 使 ったアプ リケ ーシ ョン開発 の実績 は、殆 ど無 いに等 し く、Smantalk-80自 身 の 考 えかたやそ の 内容 について 多 くの人達が研究 している段階 と言 える。Sma Htal k-80の 概要 が初 めて一般 に公開 きれたのがマグ ロウヒル社「Byte」 誌 の1981年 八 月 号 に掲載 されたSma ntalk-80特 集 であ り、 この特集 はコンピュータ・ サイエ ンス の分野 に大 きな反響を巻 きお こした。従 ってSmantalk-80が 有効 に活用 で きる分 野 の実証的 な解説や実例 ,評 価 は これか らと言 える。 本稿 では、 オブジ ェク ト指向型 ソフ トウェア開発環境 を、現在最も美 しく具現 化 しているSmHtalk-80が 有効 に活用 できる分野 について 、その特性 か ら推 察を 行 な う事 にす る。
smantalk-80は 言語仕様で あ り、かつ高度 なユーザ ー 。インタ ーフ ェースを提 供す るソフ トウェア開発環境で ある。同時 にSna ntalk-80は ソフ トウェアの生成 ,保 守 を どの よ うに行 な うか とい うソフ トウ ェアのライフサイタル とい う立 場 か ら捉 えることがで き、従来のプ ログラ ミング言語 とは全 く異 なる様相 を呈 してい る。 Sma Htalk-801こ より、既 に開発 されたシステム として 、 ニ ュー ョ ーク・ タイム
ズの 日曜版 レイアウ トシステムがある。 このシステムの特徴 は その保守性 にある 。 システムの仕様 に変更が起 った場合、つ ぎあて的 にでは な く本質的 に その修正 が行 われ 、その生 産性 は極 めて高 い。McClureの 法則を例 に出す までもな く、 ソ
――建築 と言語 2-―
―一建築 と言語 2-―
フ トウェア生産性改善へ の期待 は大 きく、 これに対する一つの 解答 を与 えている のがSmalltalk-80で ある。 Snalltalk-80の 250の クラスは、階層構造 をも ち、それ らはおたがぃに 密接な 関係 を持 ちつっ 、 きれいに分離 す ることがで きる。ユーザ ーは これ 、 らのクラス と、そ の 中に含 まれ る手続 きで ある合計5∞ 0の メソッ ド を使用 し、プ ログラム開 発を4テ な うもので ある。必要な機能 を実現 して くれ る部品、 ちオブジェ 即 ク トを 取 り揃 え、或 いは変更 に よ り作 りだ し、一っのシステム を構 成す る。 これ が従来 の言語 システム と異 なるSm Htalk-80流 の ソフ トウェア 開発で ある。
sna ntalk-80は そ こに現 れ る用語 が 、通常のプ ログラ ミング 言語 と大 きく異 な り (プ ロシジャー ,サ ブル ーチ ン ,デ ータ等 とい う言葉 はSmaHtalk-80の 世界 に は存在 しない)、 これ までのコン ピュータサ ィェ ンスの 立場 か らみ ると奇異 な感 じを与 える一方 で、逆 にコンピュータに係 わ りを持 たなかっ た人 に とっては、容 易 に受 け入 れるこ とがで きる。 このSnantalk-80の 持 つ特徴か ら た 見 応用面 とし て、 CAI、 プ ロ トタィビング 、知識 ベ ース等へ の 展開が予想 され る。例 えば、 システ ムの構成要素 がすべ てォブジ ェク トか らな り、すべ てのオブジ ェク トの更 新状況 を管理する仕組みがあるこ とは、プ ロ トタィ ビングヘ の 適性 を示 している 。 またタラス と相続 (イ ンヘ リタンス)の 概念、即 ちクラ スには 親子関係が あ り 、子 は親 の性格を受 け継 ぐとい う性質 は、 ま きに人工 知能の 分野 で注 目を集 めて い るフ レームの性質 と共通であ り、知識 ベースの 記述 とい うアプ リケ ーシ ョンに 適性が ある とい うこ とを示 してぃる。 またィンスタンスは クラ 、 ス とぃ う母親か
――建築 と言語 2-―
――建築 と言語 2-―
ら生 まれた子供 であ り、インスタンス どうしは似通 った性格を持 つ 。 このインス タンスの性質 を利用すれ ば、 シ ミュレーシ ョンヘ の応用が有望分野 の一つである とい うことがわか る。特 に、 なん らか の事象 の発生が トリガ ー となるイベ ン ト駆 動型 の シ ミュレーシ ョンはこれ までのデータ/プ ロシジャー型で は、その記述 が 面倒 で あり、 この点 に対す るSmntalk-80へ の期待 は大 きい。 プ ロ トタイ ビング とは、 ソフ トウェア開発 において要求仕様 がはっきり定 ま ら ない初期段階 で 、プ ログラムのプ ロ トタイプ を手 ばや く作 って しまい、それ を実 際 に動作 させ、ユ ーザ ーに使 っても らうことによって、プ ログラ ムの仕様 を正 し く確実 に決 めていこ うとい うも ので ある。 この方式 は ソフ トウェア以外 の分野 で は珍 しくない。例 えば 自動車開発 の場合、試作車 をつ くり、その段階 で欠陥部品 の発見やデザインの修正 を行 なっている。 (建 築 でも模型を造 った り、パースを 描 いた りする)も ちろん ソフ トウェアの世界 にプ ロ トタイ ビングの試 みが無 か っ たわけではないが 、プ ロ トタイプに向 く言語が無か った り、プ ロ トタイプ作成 に よるコス ト増加等 のマイナス材料 の ため、 プ ロ トタイ ビングヘの導入評価 は低 か った。 しか し部分的 にはコス ト増 に なっても、従来 の要求仕様定義手法 に よる方 法 では解決 きれ に くく、ユーザ ーの要求を過 りな く分 析 ◆定義 して仕様化 してい くことへ の段階的近似 のアプ ローチ として 、最近 になって注 目を集 めている。Sm
aHtalk-80は このプ ロ トタイ ビングに向 く。 オブジ ェク ト指向型 のソフ トウェア システムでは、その基本単位 をオブジェク トにおいているため、デ ータ構造 の変 換 の際 には、 オブジ ェク ト間 の呼出 し (メ ッセ ージ)を 規定 している手順 は その ままに して、デ ータ構造 とそれへ の手続 きを変 えることができ、 モジュラ リテ ィ ーの高 いプ ログ ラム作成 が可能 となる。 また一っの オブジェク トは、 自分 のクラ
――建築 と言語 2-―
――建築 と言語 2-―
スに属す るクラスか らクラスオブジェク トに到 るまで の複数 クラスの機能を相続 していて 、汎用性 の ある機能 は 、 より上 位 のクラスで規定 され てお り、そのため 、基本的 には同 じ機能 は、一 箇所 でしか記述 されて いない。従 って 、 ある機能を 変更す る場合、その一箇所を変更す るこ とで、総 て のオブジ ェク ト機能 が矛盾す ることな く変更出来 る。 このため従来 の言語 に比べ 、プ ログラムの作成ヾ修正 の 生産性 を飛躍的 に向 上 させ る可能性を秘 めている。
smantalk-80の 三つのパージ ョンの開発 ステ ップは、正 に ソフ トウェア言語仕 様作成 のプ ロ トタイ ビングの歴史でもある。Smalltalk-80で は、プ ログラム作成 の時点 で仕様 が記述 される こと、 また実例 に よる説明機能、ユーザ ーの問 い合せ に対す るシステムの説明機能 がシステムの全体を管理 している窓 口で あるシステ ム・ プラ ウザ ーを通 じて提供 されて いるか らである。 知識 ベ ースの構築 : 従来 のデ ータベ ー スシステムでは、デ ータ (フ ァク ト) の管理 が 中心 に行 なわれていたが 、知識 (フ ァク ト+ル ール)の 管理 をする、 い わゆる知識 ベースシステムの確 立が、今後 のコンピュータシステムの課題 と言 わ れ る。Smantalk-80で は、 この知識を クラスに対応 きせ ることにより、強力 で柔 軟性 のある知識構造 をつ くりあげる ことがで きる。クラス として表現 された知識 は、その知識が どの ように使用 されるか について知 っている。 これ を知識 ベース システムの構成 とい う視点か らみた場合、 if― added(知 識 ベ ースに情報 が付加 き れた場合 に機能す る手続 き)。 if― remOved(知 識ベースか ら情報が削除 された時 に 機能す る手続 き),if― needed(必 要 な状況 において情報 の生成 を行 な う)等 の機 能 は、正 にSmntalk-80の メソッ ドに より容易 に記述 できることを示 してお り、 インヘ リタンスの機能 と共 に、知識ベ ースシステム構築 に有効 なシステムである とい うことを示 している。
――建築 と言語 2-―
――建築 と言語 2-―
知識 ベ ースシステムにインプ リメン トされるべ き機能 は 、Snalltalk-80の 基本 機能 とな っている。既 に軍事戦略 シミュレーシ ョンの為 に、 リソース (意 図的 に 自由に空 を飛べ る といったル ールをもつ航空機・ 地上のみ を最高時速数十 キロメ ー トルで移動 できる戦車 ,200人 を乗せて海底 を潜行 で きるミサイル搭載潜水 艦 といった知識)で ある知識 ベ ースの開発 の予定 が有 る らしい。
――建築 と言語 2-―
――プロ ン。 費″ョ システムーー
この章 では、知的情報処理 システムを作成 す る上で、基本的方法 の一つである プ ロダクシ ョン・ システムを取 り上げ、 どの ようにしてプ ログラムが組 み立て ら れているかを中心 に説明 します 。 プ ロダクシ ョン・ システムは 、その機能 か らみてス トリング (文 字列 )に 対す る書換 えシステム と考 えることができます 。 ス トリング とい うのは、実際 の処理 対象 のデ ータであって、単語 の ように意味 を持 った記号列 と考 えます 。 仮 に 、 あるス トリングが与 え られた とす る と、それを処理す る為 のル ール (rul es)が プ ロダクシ ョン 0シ ステ ムの中にあって 、そのル ールを呼出 して 、 ス トリ ングを書換 える (rewriting)シ ステムなのです 。 プ ロダクシ ョン 。システムは大 き く別けて三っのサブ ◆システムに分 け られ ま す。
(1)Rule(ル
ール部 )
プ ロダクシ ョン・ システムは、その内部 システムにス トリング書換 え規則を 持 ってお り、 この規則群 を Ruleと 呼んでいる。各 々の規則 は、一般的 には次 のよ うな順序対 6rdered pair)を 成 り立 つ 。
A→ B
・・ 。
(1)
LHS(Left― Hand― Side8左 側 の規 則 )、 Bを RHS(Right― Han d― Side)と す れ ば 、 (1)は 、 そ こで 、 Aを
LHS→ RHS この
(2)に おける LHS,RHSは
・・ 。 (2) 、それ ぞれ意味を持 った要素 か ら作 られ
― ―力 勁 ション0シ テムー ー
・
一―カダ ケション ・システ ムーー
ている。 例 えば、 LHS(寒 くなる)→ RHS(ヵ ゼ をひ く)な どの ようにで す。 LHSは 、或 るス トリングに対する条 件式、 RHSは 条件式 LHSが 満足 し た ときに、ス トリング を書換えて別 の状態 にする為 の実4子 部 です 。も うす こし、 (2)を 砕 いた表現 にす る と、 「 も し、あるス トリングに対 して LHSが 満足 きれた とす る と、 そのス トリングに対 して RHSを 実4詈 する」、即 ち、
IF{(LHS)=T〕
一――――)DO{(RHS)}
。・
,(3)
THEN
(3)の 左側 は 、「 も し、∼ な らば が True(真 )の とき」を わ した 現 ものである。右側部 は、「 その とき、 一―――〉印以下 を実行する」 と い うこ とを意味 している。即 ち [IF― THEN]ル ールを書 いたものが (3) である。 の ようになる。
(2) Data―
Base(デ
ー タベ ー ス )部
デ ータベ ース部 は図 の ようにプ ロダ クシ ョン・ システムに よる 書換えの対象 と なるス トリングが蓄 えられてい る部分である。 DBと 呼 ばず に 、作業 記憶 (worki ng memOry)と 呼 ばれ ることも ある。外部か らの入力情報 の うちでも ,ス トリング にな った段階で、 それ以前 の、文字 レベルにっぃては、書換 えの対象 に な らない 。
(3)PSI(ル
ール適用部 ) PSIは 、プ ロダ クシ ョン・ システム 内部 のル ール部 に蓄 え られたル ール と、 DBと のマ ッチ ング を み 試 、それが成功すると、 そのルールの実行部を適用す る とい う役割をもつ 。 このこ とは、 ルール 部で述
――プ暉″ョ ン ・シヵ畝――
――カダ″ョ ン◆ シ万ムーー
べ た通 りだが 、も し、 ル ール部 に蓄 え られたル ールが い くつかあれば その中か ら 一つ ずつ取 りだ し、そのルールの LHSを 調べ 、も し入カデ ータが LHSと 一致
しているとそのルールの RHSを 入力 の ス トリングに適用す るもので ある。も し 、 LHSの 値 が NILで あれば、次 のルールを取 りだ し、同 じ手順 を繰 り返 し、
実行す る。 この繰 り返 しのことを
認知 ―実行 サイクル (recognize― act cycle)
と呼んでいる。 以 上の、 ル ールの適用 の方法 では、幾 つかのルールが同時 に適用可能 な ときに は特 に考慮 していない。 しか し、 PSIは ル ール部 ,デ …タベース部を統合 して プ ロダクシ ョン・ システム全体 を動かす制御部 と考 えることがで きる。従 って、 複数 のル ールの 中か ら、一つ を選ぶための制御も重要 な問題 である。 実際 には、プ ロダ クシ ョン・ システムのル ール適用プ ロセ スか らみると 、次 の二 つの種類 がある。
(i)前 提駆動型 の PS(antecedent― driven
Production System)
(ii)結 果駆動型 の PSに Onsequent― dr市en Production System)
(1)の タイプの PSは 前向 きの PS(fOrward chaining)と 呼 ばれ ることもあ り、最も一般的 な PSで ある。今 まで述べ た PSは 、 このタイプの PSで ある。 前提部 (antecedent)と い うのは、ル ールの左側 の、条件部 のことである。 この前 提部が満たされ る と、 ル ールの右側部 が実行 され、処理 が進 む。即 ち、ルールの 適用プ ロセスが 、前提部を中心 に進 むとい う意味 で 、前提駆動型 と呼ぶ。
(il)の タイプの PSは 、後戻 りの PS(backward chaining)と いわれる。ル ールの適用プ ロセ スが
(1)と は逆 で、結果部 (consequent)か
らみて、必要 なデ ータを見出いてい くも のであ る。その意味で、結果駆 動型 と呼 ばれてい る。数学
の定理証明 の ように 目標 が決 っているときに使 われ る。つ ま り、日標 か ら一つ前
――プ暉リョ ン ・システムーー
――カダ″ョ ン ・シ万ムーー
の 目標 を証明す るためには、 ぃかなる 条件 を満 たしてぃけばよぃのか とぃ う処理 方式である。 この ようにして 、最後に求 まった条件部が 、初期条件 に一致 した と す る と、全体 の 目標 に至 るサブ ロ標が全 部見出せた ことに なる。つ ま り、定理 は 証明 きれた とぃえ る。その他 、結果部 として、ぁる 病気 の病患名 とすれば、それ に相 当す るデ ータ を満 たすか ど ぅかをチ ェック する診断 シ ステムも、結果駆動型 の PSと 呼 ばれ て ぃ る。 この (11)の タイプの 代表例が、スタンフ ォー ド大学 で 開発 された医療 診断 システ ムの MYCINの PSで ある 。 その他、 (1)の タイプの PSに も二 つの形式がある 。一っは、ポス ト型 の P S(Postタ ィプ)と 、も う一っは 、 マルコフ型 の PS(Lrcovタ ィプ)で ぁる。両者 の違 いは、図に示 す通 りである。従 って 、ポス ト型の PSで は、幾つかのル ール が同一 のデータに対 して適用 で きるので、最良のも のを選ぶル ー ル競合 の解消を 考 える必 要 がある。 これに対 し、 マルコフ型では ょく 、 使 われるル ールは、でき るだけ最初 のほ うのル ール集合 に入 れて お く必 要が ある。 どち らのタイプがす ぐ れてぃるかは問題 に よって異 な る。
- -lnlilsr.ra7L- -
―― CD理 論 ――
本章 では、最初 に、知識表現問題のきっかけ となった意味 NETか らのアプ ロ ーチを述 べ る。 次 に、知識表現 の 問題を一般 的 に考 えたフ レーム理論 と、その具体化である F RL等 の幾 つかの表現 システム を説明する。 終 りに 、 フ レーム理論 に基 づ いたフ レーム型表現 システムの具体的 なプ ログラ ムを考 えてい く。
Schankの
概念依存表現
ある言語で用 い られている単語 には背景 となるい くつかの概念を意味的 にも っ ていると考 えられ る。 このこ とを前提 とする と、 自然言語で語 られた状況 を支 配 する基本的な幾 つかの概念を抽 出 し、 また、その概念間 の関係を表現す ることが 可能である。 この よ うな考 え方 を概念化 (∞ nceptualization)と 呼ぶ。 この概念 化 によ り、意味的 に同 じ言 い方 (paraphrase)の も のを、一っの概念構造 に変換す ることがで きる。但 し、構造 の基本単位 としては、意味 の基本要素、すなわち、 意味素成 (senantic prinitive)を 考 え、できるだ け各言語 に共通 に使 える概念を 使 うほ うが一般的で ある。 Schankの 概念依存理論 (Conceptual Dependency
]theory:略 して CD理 論 )で は、名詞 または名詞句 ,動 詞句 および修飾句 を概 念要素 としている。 ここで、名詞句 は言語 の間 き手 の心 の 中 に現実世界 の像を作 り出す とい う意味 で像 の生成者 (Picture Producer:PPと 略記 )と 呼ぶ。 また、 ]動 詞句 は語 られて いる名詞句が何 をしようとしてぃるのか を表 しACTと 書 く 。修飾句 は PPお よび ACTの 属性をそれぞれ記述する PA(Picture Aiders),
AA(Action Aiders)の 二つが用意 されている。 その他、 LOCs(場 所 ),T
s(時 間 )を 加 えこれ ら六つ 、すなわら、 {PP,ACT,PA,AA,LOC
S,Ts)を
概念 カテゴ リー と呼ぶ。 これ らの概念 カテゴ リー間 の関係 の ことを
―― CD理 論 ― ―
― ― CD理 論 ― ―
依存 (dependency)と い う。 この依存性 については、 Hays(1964)に より依存文 法 が提案 きれ、 CD理 論もその影響 を受けなが ら発展 したも の と思 われ る。依存 の関係 は有向 グラフを用 いて記述 される。 この表現 ル ールを概念 の構文 ル ール と 呼ぶ。 この考 え方 は、 Fillmoreの
格文法理論 における格を、 CD理 論 に
おけるACTに 適用 したもの と考 え られる。 CD理 論を具体的 に説明す るために 次 のよ うな文 の解析を してみ る。
John hit his little dOg。 ここで 」 ohnは 、 ある ヒ トの名前で単独 で理解 きれる概念 PPを 表 し、 hi tは 動詞句 (ACT)の 概念 を述 べ ている。 これ ら二 つの概念 のカテゴ リーは、 も う一方 だけ しか存在 しない時 には概念化 は無 くなるので、相互依存関係 を表す 〈=)の ネ ッ トで両概念 は結 びつけ られる。 his及 び littleは 何 か修飾 するものが現 れ るのを待 つ 。 ここでは dogの 属性へ依存する littleと 、 一つの PP(」 Ohn)が その他 の PP(dOg)へ の修飾 として働 いてお り、 これ を前 置詞依存性 と呼 び、△ で表現する。 dogは 概念的 に hit(ACT) の 目的語 としての依存関係 にな る。 この 目的語依存 の記法 は 〈― o― で書 く。以 上の ように概念間、即 ち、 PP,ACT,PA,AA等 の関係 を有 向グラフで表 した の 現 も を概念 依存 ネッ ト(COnceptual Dependency Net:CDネ ッ トと略記す る)と 呼ぶ。例文 の CDネ ッ トは下図 の ようになる。
0
0
」ohn〈 =〉 hitく 一― dog A John(POSS― BY) I PPく =〉 ↑ ↑ ↑ Yesterday little T (ヨ
がVesterday) 諄 た 富 図
(a)
Am〈 ―― PP△ PA ↑
概念 カテゴ リー
図 (b)
― ― CD理 論 ―一
―一 CD理 論 ――
図 (b)は 、概念的 に PPが 何 らか の動作
(ACT)を
、その 目的語 の PPに 行 っ
たことを示 している。実際には 、 この概念 レベ ルか ら図 (a)の ように、文中 の単語 の意味 を考 えて構成 される。 この例文 では、 ACTは 文 の動詞 と同 じであるが、 きらに、意味素成 として表現す る必 要 がある。例 えば ,"hit"と ぃ うのは、 "何 か 道具も し くは手を用 いて対象物 と強 い物理的接触が ある" とい うように表 される 。 次 の例文 の CDネ ットは 、意味素成 を考慮 して構成 きれ たもので、 下図 の ようになる。 例 ,い
The man t00k a book. to
P:(過
去)
0
R―
■anく =〉 take 〈―い一 b∞ kく ― (PTRANS)
―〉
(終 点 )
― ―く
(起 点 )
│
from
PTRANS:物 理的移動 の意味素成 ただし、R:recipient case 受益者格。 あるXと い う人か ら、 manへ の受渡 しを示す。
図では、受益者格 を示す Rが 導入 されている。すなわち、最初 のbookの 所有者
(Xさ ん )か ら、その ヒ ト(the man)に 本が渡 ったことを示 して いる。 この物理的 移動 を示 したも のがPTRANS(pyisical transfer)で ある。 このPTRANSが い くつかの 格 との関係 を持 つ ことが 出来 る。即 ち、Schankの CD理 論 の中 では、 ACTは OB JECrIVE,RECIPIENT,DIRECTIVEお よびINSmUMENTALと い う四つの格 を要求すること がで きる。図の CDネ ッ トでは、 目的格 (OBJECrIVE)と 受益者格 (RECIPIENT)を Pm ANSが っていることを示 している 。その他 の場合 の枠組 み を示 したのが下記 の表 1 ,2で ある。
―― CD理 論 ――
――CD理 論 ――
表 1は 相互 の依存関係以外 の、事物 とその状態 との依存関係 を示すものも ま 含 れてい る。表 2に は、意味素 成 としてのAmの 種類 と、状態を 表すも のが示 きれて い
る
。
実際 の文 の解析 は、推論機 能 とパ ラフ レーズ機能 に よ りCDネ ッ ト に 形 文 を変 換 し、 また CDネ ッ トか ら表層 の文を生成す ることに よって実行 され る 。推論機 能部で は、文 の単語を手掛 りとして、単語 のも つ概念 と文 の構文解析 に より 概念 構造を推 論 し、抽 出する。推論 のル ール としては cD理 論 の枠組みで 準備 され た 構文 ル ールお よび基本 の動作旬 に対応 した形 の表 1を 用 い る。 この システムはMA RGIEと 呼 ばれ 、スタンフォー ド大学の PDP-lo上 に 実装 きれた。Schankの C D理 論 は 自然言語 理解 のもの として開発 されたも のであるが、人間 の記憶内 の 知 識 の構造化 (モ デ ル)と しての その後 の研究 に大 きな影響を与 えた。その Scha 後 nkら の研究で は、文か ら談 話 の レベ ルまで を扱 うような い 広 範囲 の知識表現 が提 案 きれ 、 スク リプ ト(SCRIPT)と 呼 ばれ るモデ ルを作成 している。
―― CD理 論 ― ―
――CD対 照表 ――
表
1) PP〈
=〉
1.概 念 の構文 ル ール
ACT
2) PPく =〉 PA
PPsは ACTす る。 PPsは 一つ属性 で記述 され る。
D 3)ACT<― ―
PP
ACTsは い くつかの 目的語 をもつ
.
D― 〉LOC
ACTsは ―<を 始点 とし、―>を 終点 とす る方向を持 つ 。
I
4)ACrく ―
一〈lЮ C
R― 〉PP 5)ACT<一 I
、
ACTsは 受益者 を持 つ 。
一くPP
O 6)ACTく 一―■
Amsと
して精神的物 の移動 (rrRANS)お よび思考 (MBUILD)
の とき、特定 の 目的語 を とる。 I
7)Amく ――■
8)
PP
PP
■
■
<=〉
く=〉
ACTsは 道具 として役 を とる。 PPsは
生起す る概念間 の関係 か ら記述 きれ る。
―― CD対 照表 ――
――CD対 照表 一―
T
9)
概 念 間 の 関係 には 時間 を要 す る 。
↓ く=〉 DOC
lo)
概 念 間 には位置 が あ る 。
↓ く=〉
〈=〉
PP ↑ r― 〉 ll)く ― 1
概念間 の関係 はPPsに 対す る状態変化 を生 じる。
一〈PP
r:結
果
く=〉 ↑R
12)
精神的ACTsを 持 つ概念化 は概念化 に対す る理 由 として の役 目をす る。 R:理 由
く=〉
13)<=> ↑E
<― 1
状態 または状態 の変化 は概念化 を生 じさせ る。 または ↑―く (E:可 能 にす る) く=〉
く=>
14)PPく =〉
PP
15)Am← AA
一 つのPPは 別 のPPと 等価 。または事例 である。
ACTsは ある一定 の次元 で変化 す る。
――CD対 照表 ――
―一CD対 照表 ――
注 )<=〉
動作 主 と動作 との リンタ ,事 物 とその 状 態 との リンタ
PP :Pictre Producer ACT:Action 0
80BJECTIVE
D
8DIRECTIVE
R
:RECIPIENT
1
31NSTRUMENT
表 2.意 味素成 および状態 の記述 基本 の動作
.
1)物 理的動作 を記述す るAm.… PROPEL,MOVE,INGEST,EXPEL,GRASP 2)状 態 の移動 を記述す るACT. PmANS.‥ 役 としてObject市 e,Dirё ct市 e,Instrunentalを とる ATRANS...役 としてReciplentを とる
3)精 神的動作 を記述す るACT。 MIPRANS.。 .役
としてRecipientを とる
MBUILD.‥ 役 としてRec ipientを とる
ここでは長期記憶 (LW),中 間記憶 (IM)内 の情報 の移動 ,結 合 に 対す るACrを 意味する
4)他 のACTの 道具 としてのAm。 ..SPEAK,ATEND 状態 .
1)SCALEを も つ状態 .… HEALTH,FEAR,ANGERoMENTAL STATE,PHYSICAL STAIE CONSC10USNESS HUNGERoLENGTH COLOR,MASS,SPEED奪 宇 2)SCALEを もたない状態 事物間 の関係を表現 .
...CONTROL,PART(Inalieable Possession).POSS(Possession)。 OWNERSHIP,CONTAIN,PROXIMITY
……CD対 照表 ――
――フ レーム理論 ――
今 まで述べ て きた意味 のネ ッ トのモデ ルは、計算機 内部 にはデ ータ構造 として 記述 きれ る。従 って、最も基本的 なデ ータ構造 としては、 LISPで あるか らセ ル とポ インター よ り成 る属性 リス トであ る。 また、 これ を 記法的 にも見易 い形 に した ものが意味 のネ ットとみ ることがで きる。 こ うしたデ ータ構造 は形式的 には、 ノー ドとリンクを基本に してぃる これ 。 ら の要素 を基礎 において、知的情報処理 システ ムが持 つべ きデ ータ 構造 をどのよう に して考 えてゆ け ば よぃのか を述 べ たものがフ レーム 理論 (Frame Theory)で 、Mi nsky,M。 (1975)が 提案 したも ので ある。
フ レームの構造 は、 ノ ー ド (節 点 )と リンク (関 係 )よ り成 るネ ッ トである 。 そ して 、 フ レームは、幾つかの レベ ルを持 つ階層型 の ネ ットであ り 、意味 の ネッ トの ように平面的 に広 がった構造 でない。フ レームの最上層は 一つの 、 状況 に対 して 、一 義的 に決 め られた名前ラベ ルである。 いわば見出 し である この 語 。 最上 には ー 層以下 、サプフ レ ムが ある。 このサブフ レームは、最上層 のノー ドを構成 する要素 である。も ちろん、 この要素 には、特定 のデ ータない し 事例 の入る空 き ノ ー ドを持っている。 このノー ドの こ とをスロッ トと 呼ぶ。ただ し、各 々スロッ トには入力条件がつけ られてお り、その条件を満 たしたも のだ けがス ロッ ト内に 組 こまれ る。ス ロッ トにデ ータ をあてはめる ときの条件 はスロッ ト 割 当条件 (ass ignment∞ nditiOn)と 呼ばれ ている。
―― フ レー ム理 論 ――
―― フ レー ム理 論 ――
(DATE)
/
Hinsky's Frane Structure
↓
(MONTH)
(YEAR)
<
〉
/\ く〉
/
(DAY)
↓
↓ Top level ( )
\
く
↓ 〉
SLOT― CONDIT10N
く〉
\
く〉 〈〉 TeFminals assignments フ レームの基本構造
*INTEGER* ↓ く1984〉
*30UNDED INTEGER*
1∼ 31
↓
↓
〈11〉
く17〉
Minskyの フ レームデ ータ構造
上 図 のフ レームの例 でも示 されているようにフ レームの終端
(タ
ー ミナル)に
は、具体的 な数値 が割 当て られて いる。 あるヒ トの誕 生 日のよ うに、特定 の 日付 以外 は、デ ータは更新 きれるので 、終端 のス ロッ トは「 デフォル ト値」 と呼 ばれ ている。デフォル ト値 というのは、平均値も しくは常識的 な値 のことで 、普通 は 、初期値 としてフ レームのター ミナルスロッ トに割 り当て られて いる。そ して、 このデフ ォル ト値 は状況 に応 じて変 るので、変数 とみ ることができる。 上 図 の 日付 のフ レームの、デフ ォル トの割 当条件 は、次 のよ うに書 かれている 。"も し、月である ときには、値 は整数 で、値 は 1か ら 12ま でである"。 この ことは、も し、 日付が年月の うちの月 について考 えなければな らない ときは、整 数 である とい う条件 を満たし、か つ 、 1か ら 12ま でのいづれかの値 をス ロット に割 り当てて い くことを意味 している。従 って 、 スロッ トにつけ られた条件 は、 デ ータが適切 であるか どうかをチ ェックし、更 に そのデ ータを取 り出す手続 きを 含 んでいる。即 ち、 "も し、デ ータが整数 の ときは、次 に∼せ よ"と い うプ ロダ クシ ョン形式 の手続 きで、デフォル トの割 当条件 が書 かれている。 この ことを、 スロッ トヘ の手続 き付加 と呼ぶ。
――フ レー ム理論 ――
――フ レー ム理論 ――
プ ロダタシ ョンで書かれた手続 きのことを、 手続 き型知識 とい うこ ともある。 これに対 し、フ レームのよ うに事実、も し くは事実 と事実 との関係 を示す知識 の事 を宣 言型知 識 と呼ぶ。意味 のネッ トも、 宣言型知 識 である。従 って 、 フレー ム全体 としては、宣言型 と手続 き型 とぃ う二 っの 表現枠組み をもって ぃ る。フ レ ームのス ロッ トに付加 された 手続 き的知識 に よって、新 しい状況 に対応す る動的 で柔軟な知 識表現 形式 となって ぃるのが フ レーム 構造である。具体 的 には、ス ロ ツ ト内のデ フォル ト値 を変更す るのに、手続 き部を作動 きせ 、その条件 に合 った デ ータを収集 してぃ く。このプ ロセスは 手続 きを利用 した推論でもある。 この推 論 の こ とをデモ ン (demon)と ぃ ぅ場合も ある。デモンは 、普通 は作動 しないが、 必 要 に応 じて ヒ トの前 に姿を現 わすェ ンマ様 か ら 出来 した言葉である。 このデモンを使 って、ス ロ ッ ト値 のデ フ ォル ト 値 を書換 えてい くが 、 そのため には、デ ータの取 りだ しデモ ン、デ ータの 消去デモン、デ ータの付加 デモン とぃ うように手続 きごとのプ ロダクシ ョンが必 要 である 。 フ レームのも う一っの大 きな特徴 は、知識の 遺伝性 に関す るもので ある。知識 の遺伝性 とい うのは、上位のもつ性質が 、下位 の性質 に伝 わるとい う意味 である 。た とえば、生物 とい う知識 の下位 には、動物 と 植物 とい う結 びつ きが ぁる。そ の結果、上 位 の生物 の性質は、下位の 動物 と植物 に伝 わるとかんが え られる。言 語学では、 これを包摂性 (hyponymy)の 関係 とよんでいる 。 この知識の遺伝性 を用 いると、一っのフ レー ムに関係する上位 の フ レーム を呼出 して、その性質を、現在の下位 のフ レームの 性質 として使 う事ができる。即 ち、 この よ うな性質 を使 うと、個 々の フ レームに 、種 々の知識を書 いておか な くても 、上位 と下位の関係か ら、必要 な知識を下位 のフ レームに 捕 える。つ ま り、知識 表現 そのものの経済性 となる。 このこ とは知 識 のデ ータベ ー スそのも の が圧縮 き れ、か っ、知 的情報処理 の基礎 とな る。
――フ レー ム理論 ――
本研究 は研究 目的、研究背景、研究概要 を述 べ た序章 を含 めて牛
大 きく2部 に分れ る。序章 、特 に研究背景では
章 か ら成 り、 設計行為 の分類 と既存 の
1)で CADシ ステムの果 して きた役割ヽ問題点 の指摘等 を論 じる。 また 2)で
は、 これか ら幅広 く利用 され る と思 われ る四つのプ ログラ ミング 言語を取 り上げ、そ の利用 が期待 され る理由や主 な特徴 にっぃて べ る 述 。 3)に おぃては人工知能 システ ムの歴史 と理論背景 、特 に フ レーム理論 とCD理 につい 論 て述べ る。 第 2章 では、過去に実際 に試作 された建築法 規 に関する コンサルテ ー シ ョン ◆ システ ムの例 と他 の分野 で実現 きれているシステムの 内部構造や実際 の使 われか たにっ ぃて述 べ る。 第 3章 では、今 回パー ソナルコ ンピュータ上 に作成 した ェ キスパ ー 、 トシステ ムを構 成す る際 に必要 となる各種 ツールについてその 内容 を述べ る。 に 最後 、第 4章 では今後期待 される建築 CADシ ステムの 理想像を明 らかにす る。
――法規 CAD編 ――
建築法規 の計算機 内部表現 につ いて 建築法規 は法律、施 工令 (政 令 ),施 工規則 (建 設省令 ),地 方公共団体条令 地方公共団体規則 に分 かれている。 これ らの法令 は、都市 の密集化 による土地
,
問題や 日照問題、防火 問題等 の深刻化、複雑化 に対応 し、改訂 あるいは新 たな規 則が追加 されて きた。多 くの法令 は、その時代 の社会状態 に応 じて変化 して きた。 従 って、法規 を対象 とするコンサルテ ーシ ョン 。システムの実現 には、改訂や 追加 に柔軟 に対処 し得 る計算機 内部 の表現 が要求 される。 ここでは、過去 に通商 産業省工業技術院製品科学研究所 の広谷 豊史氏が大阪大 学 の人工知能研究 グル ープ と共同研究 した事例を参考 に話を進 める。 法規 の計算機内部表現 に要求 される特徴 は、
(1)法 規表現 か ら内部表現へ の変換を容易 にす るために、内部表現も出来 るか ざり法規 の条文 に近 い表現で あるほ うが よい。 また、図や表 で表 されて いる内容 も区別で きたほ うが よい。
(2)法 規 の条文 で使 われている表現や形式 は制限 されて いるとはいえ、それ ら の表現 を総て予め予測 できない。従 って、法規 の様 々な表現 に柔軟 に対処 で き、 可換 で 自由に設定 で きる ことが要求 きれる。
(3)一 つの条件文 の 中か ら他 の条項を参照 した り、その適用範囲を限定 した り する ことがあるの で 、法規 の条 0項・ 号 の構造 を保持 していること。 モジ ュラ リ テ ィーをもつ ことに よって法規 の追加・ 変更 が容易 になるが 、 モジュール間 の相 互作用も表現 で きなければな らな い。
(4)条 文中の項 の評価順序 を変 えた り、特有 な処理方法 を記述 した り出来 るこ と。それによってシステムの処理効率 を高める ことがで きる。
(メ
タ知識表現
,
メタ推論 )
――法規 CAD編 ――
― ―法 規 CAD編 ― ―
(5)各 条文 は、必ず しも独立 で な く、他 の条文 で適用 の可否 を記述 している場 合 があるので 、条文 の評価順序 も記述出来 ること。
(6)コ
ンパ ク トなデ ータ構造 で 、一通 りの法規表現 か ら使用者 の処理要求 に応 じて何通 りにも解釈 ◆実行 できること。 建築法規 の各条文 は それ自体 モジ ュラ リテ ィーの高 い知識 と見 ることがで きる 。 これまでの多 くのコンサルテ ー シ ョン・ システムでは、 この ようなモジ ュール 化 した知識 をプ ロダクシ ョン 。ル ールやフ レームで表現 して きた。 プ ロダクシ ョン 。システムはモジ ュール性 に富 むため理解 が しやす く、追加・ 変更 が容易 であるがル ールの数 が 増加す るにつれて全体 の構造 がつかみに くくな り、 モジ ュール相互 の関係を表現 しに くい欠点がある。 また、一っの条文を一つ のプ ロダクシ ョン 。ル ールとして 表すには情報量 が 多過 ぎて、各条文間 の評価順 序や項 の評価順序を表 しに くい 。 本 プ ログラムでは、第 一に広谷氏 の採用 したフ レーム形式 の実現 を目指す。フ レーム形式 の利点 として 、 (i)各 条文 に 1つ のフ レーム を割 り当てることがで き、項 0号 の構造も ス ロ ッ トを用 いることに よって保持す ることができる。 (ii)表 現 が理解 しやす く、追加 0変 更 が容易 で ある。 (ili)ス ロッ トにメタ知識や コメン ト等 の様 々な知識を埋 め込 める。
等 があげ られる。 以下 にフ レームの定義 を示す。 ここで用 い るフ レームは、 ス ロットのデ ータ部 にス ロッ ト列 を書 くことを許 し、 また、 スロッ ト名も単 にラベ ル としてだけでな く、デ ータ部 に書 かれた内容を管理す る関数 としても機能す ることがで きる。
―一法規 CAD編 ――
――法規 CAD編 ――
FRAME
:= (FRAME― NAME SLOT)
SLOTS
:= SLOTISLOT SLOTS
SLOT
:= (SLOT― NAME DATA)
DATA
8=CONTENT DATAISLOT DATAI空 集 合
CONTENT
:= atOnllistlprogran
SLOT― NAME
:= aton
FRAME― NAME := ato■
システム能力 と構造 使用者 か らシステムヘ の要求 として次 の三 種類が考 えられる。
(1)条 文 の出力
条文 の内容を日本語で表示 す る。
(2)あ る建築対象物 に対す る法規 の規定値 の 出カ
システム と対話す ること に よって使用者 か ら与 え られた状況 が法規 によって どのような規定を受けるかを 出力す る。
(3)対 象世界 (対 象 とする建築物 の 内容 0数 値 )が 法規 に適合 しているか否 か の照合 )法 規 に適合す るか どうか確 かめたい建築物 のデ ータをシステムに与 え、 システムはそのデ ータ と法規 の規定 を照合 し結果 を 出力す る。
……法規 CAD編 ― ―
結論 完成 までには致 らなかったが 、建築 に関す るエキスパ ー ト・ システム作成 に関 す るノウハウは十分 に得 え られた と思 う。 今後 の課題 としては、設計者 との対話を円滑 に行 わせ るため、次 のよ うな点 の改善 が望 まれ る。
1)質 問項 目知識 ベ ースの拡大 。
2)法 規 出カ ル ーチ ンにお けるパ ーサ ーの階層化 を設 ける)。
3)知 識ベース 自体 の拡充 。 4)自 然言語インタ ーフェース。
(ス ロッ ト対応 の子パ ーサ ー
おわ りに この卒論 の指導 を して くだきった 渡辺 仁史 助教授、 この研究 をはじめ る ことを勧めて下 きった 中村 良 三 先生 、 SPECONの 資料 を下 きった東京 工大 の 青木 義次 先生、建築研究所 の 位寄 和久氏、なにか と面倒をかけ 鈴木 きん、 Mlの 川 口 きん、その他 の研究室 のみな さん、 if800を 提 供下 きった前田 利民氏、他大勢 の方 々にい ろいろ御迷惑をおかけ しました。 こ こに感謝 の意を表 します 。 たM2の
――参考文 献 ――
「
LISPで
学ぶ 認知心理学
「
同
「
同
1
2 3
問題解 決」
安西 0佐 伯 ◆無藤 安西 。佐伯・ 難波
言語理解 」
田中 。本吉・ 山梨
学習」
東京大 学 出版会
「 知的情報処理 の設計 」 ― LISPに よる知識 ベースシステムヘ
斉藤正雄 0溝 口文雄 コロナ社
のアプ ローデ ー
「 知識工学 」
田中幸吉
編
朝倉書店
「 Lisp入 門」 ―システム とプ ログラ ミングー 二 ― 第 版
中西正 和
著
近代科 学社
「 人工知 能 ハ ン ドブ ック 」 全二 巻
「考 える道具 としての LISP入 門」全
A.Barr\ E.A.Feigenbaum 編 田中幸吉・ 淵 一博 監訳
13回
「 bit」 連載
「 パ ソコン用MicrO Pro10gの 試作 」 松 E。 田中 「 bit」 v01.14,No。 7 「PC-8001か らHC-20へ のHicro Pro10gの 移植 ◆ 改良 の実際」鍛冶「 bit」 v01.15,No9
――参考文 献 ――
――参考文 献 ――
「 デザ インプ ロセ スヘ のコ ン ピュータの応用」
佐藤
啓一
「 システ ム と制御 」Vol.27,No。 8
「 CADに おけるモデ リング とシミュ レーシ ョン」
沖野 教郎 「 シミュ レーシ ョン」Vσ l.2,No.1
「人工知 能向言語 」 (1),(2)
横井
俊夫
「情 報処理 」Julo
「問題解決 と推論機 構 」 「知識の表現 と利用 」 「 デ ータベ ースの知 的 アクセ ス 」
淵
一博
大 須賀
節雄
康一 「 情報処理 」Oct.1978
情報処理学会人工 知能 と対話技法研究会
上野
晴樹
21-3
長尾・ 自井訳
「 基本 設計 における CADの 課題 」
1976
古川
「 フ レーム理論 に基 づ く知 識型 システム 」
「人工知 能 」 Pe winstOn著
Aug。
倍風館
山田
邦男
清水建設 研究所 報
……参考文献 ――
――参考文献 ――
「SPACECRAFT FOR MULTI― FL00R LAYOUT PLANNING」
R00ER VoJoHNSON 「MANAGEMENT SCIENCE」
「Computer Today」
1984/5 特 集 =第 五 世代 コ ン ピュー タ とPro10g 1984/11特 集 =Smalltalk-80
「IEEE COmputer」 Sep.1984 The Knowledge― Based Expert System:A TutOrial Frederick Hayes― Roth,Teknowledge,Inc.
「口uLISP83 Artifitial lntelligence Developnent Syste■
For MS― DOS」 口 anual
日本楽器「YIS― LISP」 nanual
IBM― Pc/xT
DOS,BASIC,APL,etc nanual
……参考文献 ――
/* HOUKI・
LIBの
ログ
*/
HOUKI R23」
FUND (NLAMBDA (NAM$ EXP$) (PUTD NAM$ EXP$)NAM$) DE
PSTRUCT GTREE =CLL =CLL2 PTREE =ENT =ARC FNTYPE CARIF CONSP CONSEND NAMEVAR ISVAR IS*‖ *
EVALA MSG
/* R23J
建築基 準 法 23条 の フ レー ム形 式 のプ リテ ィ・ プ リン ト
((01K ($THEME (*C (KAIDAN HABA)) (*C (ODORIBA HABA)) (*C (KEAGE SUNPOU))
(*C (FUMIZURA SUNPOU))) ($REFER(*Dく R23J― HYOU〉 )) ($E― PART ($THEME (*C (KAIDAN HABA))) ($PCOND (SEQ (*V (KAIDAN SYURUI)) (*C OKUGAI― KAIDAN))) ($NCOND ($BT (*c R120」 ) (*C R121J))) ($CONCL ($OE (*V (KAIDAN HABA)) (*CM 90))) (SNCOND(SOW)) (SCONCL (SGE (*V (KAIDAN HABA)) (*CM 60))) (釘 HEME(だ (KEAGE SUNPOU)) (*C (FUMIZURA SUNPOU))) ($NCOND ($EQ (*V (TATEMONO YOUTO)) (*C IPPAN― JYUUTAKU) (*C KYOUDOU― JYUUTAKU)) ($NE (*V (KAIDAN YOUTO)) (く KYOUYOU))) (∝ ASEC(*C(KEAGE
SUNPOU))
($LE (*V (KEAGE SUNPOU)) (*CM 23))
(*C (FUMIZURA SUNPOU))
($GE (*V (FUMIZURA SUNPOu)) (*CM 15)))))
*/
(02K (STHEME (*C (FUMIZURA SUNPOU))) ($NCOND (SPE (*V (KAIDAN KEIJYOU)) (*C MAWARI― KAIDAN))) ($CMMNT (*D (FUMIZURA N0 SEMAIHOU N0 HASI KARA 030 CENTI METER N0 1CHI
NI OIIE
HAKARU MONOT0 SURU*)))))) ((01B ($PCOND ($EQ (*V (TATEMONO YOUTO)) (*C SYOU― GAKKOU))) ($NCOND (*V (KAIDAN YOUTO)) (*C JIDOU― YOU)) ($CONCL (SGE (*V (KAIDAN HABA)) (*CM 140))
($GE (*V (ODORIBA HABA)) (*CM 140))
($LE(*V(KEAGE SUNPOU)) (*CM 16))
($GE (*V (FUMIZURA SUNPOU)) (κ M 26)))) 023 (SPCOND ($EQ (*V (TATEMONO YOUTO)) (00R (*C CYUU― GAKKOU) (℃ KOUmU― GAKKOU)))) ($NCOND (*V (KAIDAN YOU10)) (*C SEITO― YOU)) ($OR ($PCOND ($EQ (*V (TATEMONO YOUTO)) ($OR (*C BUPPIN― HANBAI― GYO) (*C BUPPIN― KAKOU― GYO))) ($AND (SGE (*V (TATEMONO SOU― YUKAMENSEKI)) (*SM 1500))
($OR (*V (TATEMONO YOUTO)) (*C (GEKIJYOU)) (*C (EIGA― KAN)) (*C (EINGEI― JYOU)) (£ (KANRAN― 」YOU)) (*C (KOUKAI― DOU)) (*C(SYOU― KAIJYOU))) ($AND ($EQ (*V (KAIDAN YOUTO)) (*C(KYAKU― YOU))))
(∝ ;ONCL(鍼
Eは V(KAIDAN HABA)) (*CM 140))
("E(*V ODORIBA HABA)) (*CM 140))
($LE(*V(KEAGE SUNPOU)) (*CM 18))
($GE (*V (FUMIZURA SUNPOU)) (*CM 26))))))))) /* (PRINT― HOUKI(GET・ R23J'FRAME))を 実行 した ときの様 子
*/
$THEME KAIDAN NO HABA ―MATAWA- ODORIBA NO HABA ―MATAWA― KEAGE NO SUNPOU ―MATAWA― FUMIZURA NO SUNPOU ―WA― $REFER ** くR23J― HYOU〉 NI YORANAKEREBA NARANAI $E― PART ―TADASHI― KAIDAN NO HABA ―WA― ―TE― SARANI― KAIDAN― NO― SYURUI GA OKUGAI― KAIDAN― KA― ― NI― HITllSHIKU― R120J ―KA― R121」 ―KA― ―NO― KITEI― NI― YORU― ―NARABA― KAIDAN― NO― HABA GA 90 =c皿 = ―I」 YOU― ―TO SINAKEREBA NARANAI SONO― HOKA ― NARABA― KAIDAN― NO― HABA GA 60 =cm= ―IJYOU― ― TO SINAKEREBA NARANAI KEAGE NO SUNPOU ―MATAWA― FUMIZURA NO SUNPOU ―WA― TATEMONO― NO― YOUT0 0A IPPAN― JYUUTAKU― KA― KYOUDOU― JYUUTAKU― KA― ― NI― HITOSHIKU― ―IKA― KEAGE KAIDAN― NO― YOUTO GA KYOUYOU― KA― ― NI― HITOSIKUNAI― ― NARABA― ―NO― SUNPOU GA 23 =cm= ―I」 YOU一 FUMIZURA― NO― SUNPOU GA 15 =cm= T0 SHINAKEREBA NARANAI $THEME FUMIZURA NO SUNPOU ―WA― $NCOND KAIDAN― NO― KEIJYOU GA
MAWARI― KAIDAN― KA―
― NI― HITOSHII― BUBUN― GA― ARU―
― NARABA―
$CMMNT (FUMIZURA NO SEMAIHOU NO HASI KARA 030 CENTI METER NO ICHI N1 01TE HAKARU MONOTO SURU*) NIL
/*
関数 PRINT― HOUKIの 関数呼出 し系図
*/
―………… ― ―――― ― PRINTER… READY― ?― ― GENERATE― TREE― PHASE― ― ―― ――― ― ― TREE― PHASE― PRINT― HOUKI
RETURN ,
PRINT― KOU
PROG :
RETURNく *〉 !
PRINT― KOU2
PROG<*〉
l
i
,'
, RETURN<*〉
1'
!
!'
!
:
i
! !
MSC
!
!
*〉
PR00<*〉 RETURN<*〉
! !
1
G0
:
'
,
!
!
!
PROG<*〉
RETURNく
!
1
!'
!
!
i
'
lllEME
PRINT― !
PRINT―
!
REFER
PROGく *〉
! :
!
MSGく
'
MSG<*〉
! !
PARSER !
PROG〈 !
!
!
RETURNく
! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! !
*〉
*〉
*〉
! PRINT― THEMEく *〉 ! PARSER<*〉 ! MSGく *〉 ! PRINT― LST PROG<*〉 ! ! ! PARSERく *〉 ! ! ! oo<*〉 !
!
,
,
!
l
,
,
:
,
!
i !
'
! ! !
,
! !
00〈 *〉
MSG〈 *〉 PRINT― *V PROG〈 *〉
!
l
,
, !
i !
!
!
!
RETURNく
I !
GOく
, GOく
*〉
MSG〈
*〉
PRINT― *C PR00く *〉 ! ! ! MSG〈 *〉
! !
! !
!
,
PARSER2
!
!
PRINT― CASEC〈 *〉
! ! !
LST〈 *〉
1
!
!
l
,
i
l
PRINT―
!
!
,
*〉
,
1
!
00く
!
i !
'
!
`
*〉
,
!
!
RETURN〈
!
i
,
*〉
!
!
!
1
!
,
,
PR00〈
I
!
!
,
PRINT― CASEC
!
1
*〉
*〉
: File: HOUKI.LIB (PUTD oDEFUN '(NLAMBDA (NAM$ EXP$) (PUTD NAM$ EXP$) NAM$))
(DEFUN PUTQQ(NLAMBDA(NAM$ATMS EXP$) (PUT NAM$ATMS EXP$) NAM$ ))
(PUTQQ R23J FRAME ((01K ($THEME (*C (KAIDAN HABA)) (*C (ODORIBA HABA)) (*C (KEAGE SUNPOU)) (*C (FUMIZURA SUNPOU))) (SREFER (*D ($E― PART
〈R23J― HYOU〉 ))
(STHEME (*C (KAIDAN HABA))) ($PCOND (SEQ (*V (KAIDAN SYURUI))
(*C OKUGAI― KAIDAN))) ($NCOND ($BT (*C R120J) (*C R121J))) ($CONCL ($GE
(*V (KAIDAN HABA)) (*CM 90))) ($NCOND ($OW)) (SCONCL (SGE (*V (KAIDAN HABA)) (*CM 60))) ($THEME (*C (KEAGE SUNPOU)) (*C (FUMIZURA SUNPOU))) ($NCOND ($EQ (*V (TATEMONO YOUTO)) (*C IPPAN― JYUUTAKU) (*C KYOUDOU― JYUUTAKU)) (SNE (*V (KAIDAN YOUTO)) (*C KYOUYOU))) ($CASEC (*C
(KEAGE SUNPOU)) ($LE (*V (KEAGE SUNPOU)) (*CM 23)) (*C (FUMIZURA SUNPOU)) ($GE (*V (FUMIZURA SUNPOU)) (*CM 15))))) (02K ($THEME (*C (FUMIZURA SUNPOU))) ($NCOND ($PE (*V (KAIDAN KEI」 YOU)) (*C MAWARI― KAIDAN))) ($CMMNT (*D (FUMIZURA NO SEMAIHOU NO HASI KARA 030
CENTI METER NO ICHI N1 01TE HAKARU MONOTO SURU*)))) )) (DEFUN PRINT― HOUKI (LAMBDA (JYOBUN)
((NULL JYOBUN) (RETURN ・***UNDEFINED***) ) (PRINT― KOU
JYOBUN) ))
(DEFUN PRINT― KOU (LAMBDA (」 YOBUN) (PROG (KOU KOU― LIST) (SETQ KOU NIL) (SETQ KOU― LIST JYOBUN) L00P (COND ((NULL KOU― LIST) (RttURN) )
(T (SETQ KOU (CAR KOU― LIST)) (SETQ KOU― LIST (CDR KOU―LIST)) (PRINT― KOU2
KOU)) ) (00 L00P)) ))
・
(DEFUN PRINT― KOU2 (LAMBDA (KOU)
(PR00 (DATAS DATA HEAD) (SETQ DATAS (CDR KOU)) (SETQ DATA) (SETQ HEAD) L00P (COND
((NULL DATAS) (RETURN) )
(T(SETQ DATA CAR DATAS))(SETQ DATAS(CDR DATAS))(SETQ HEAD(CAR DATA)) (PRINT HEAD) (SETQ DATA (CDR DATA)) (COND ((EQ HEAD '$THEME) (PRINT― THEME
DATA))
((EQ HEAD '$REFER) (PRINT― REFER) )
((EQ HEAD '$E― PART) (応 Gl'― TADASHI-1)
(PARSER DATA) ) ((EQ HEAD '$NCOND) (PARSER DATA) (MSG l '― NARABA- 1) )
((EQ HEAD '$CMMNT)
(PARSER DATA)) (T (PRINT '***ERROR-OCCURED***)) )) ) (00 L00P)) )) (DEFUN PRINT― THEME (LAMBDA (DATA)
(PROG (M Ml) SETQ M NIL) (SETQ Ml NIL) L00P (COND ((NULL DATA) (RETURN) )
(T (SETQ Ml (CADAR DATA)) (SETQ DATA (CDR DATA)) 6ETQ M (CAR Ml)) (SETQ Ml (CADR Ml)) (MSG l M l 'N0 1 Ml l) (COND ((NULL DATA) (MSG ・―WA― ) (TERPRI) )
(T(厖 G'― MATAWA― )))))(GO LCXIP)))) (DEFUN PRINT― REFER (LAMBDA NIL
(PROG (MM) (COND ((NULL DATA) UNDEFINED― ― (PRINT '― ― REFER― ―) )
(T (SETQ MM (CADAR DATA)) (MSG 2 '** 2 MM 2 'N1 1 'YORANAKEREBA l 'NARANA1 2 T)))) ))
.
(DEFUN PARSER OAHBDA (DATA)
(PROC (H D
((NULL
DR)
(SETO
D
NIL) (SffQ DR DATA) (SETO H NIL) LOOP (CO}ID
DR)
GETURN) )
(T
(SETO
D))
D
(CAR
DR))
(SETQ DR (CDR
DR))
H
(SETO
(CAR
D)) (SEM D
(C0ilD
((80 H
'$rHEltE)
(PRINT.IIIEI.IE
D)
)
((EO H '$PCTI{D) (PARSER D)
(I,{SG '.TE-SARANI( (EQ
2)
)
H '$88)
(PRINT.LST
D)
(I{SO '-NI-HITOSHIKU.
((E0 H
2)
)
'$NCoND)
OARSER D)
(t{sc ((80 H
'-NARABA-
2)
)
'$C0NCL)
(PARSER D)
(ilSG '-TO
((80 H
1
'SINAKEREBA
1
'NARANAI
T)
)
'$cAsEc)
(PRINT-CASEC D)
(NO 2 'TO ]. ((80 H '$Ct{l,tNT) OARSER (
D)
'SHINAKEREBA
H
(PRINT-LST
H
1)
)
)
D)
1 '-IKA- 1)
)
'$BT)
(PRINT-LST
(l.|sc
)
D)
0.tsc 1 '-IJY0U((EQ H '$LE)
( (EO
T)
'$GE)
(PRINT.LST
(ltsc
'NARANAI
)
(88 H '$0U) (l6G 1 'S0N0-H0KA 1)
( (E8
1
1
D)
'-NO-KITEI.NI-YORU.
1)
)
((E8 H '$ttE) (PRINT.IST OSG ( (E(l
H
1
D)
'-NI.HIIUSIKUI{AI- 1)
)
'$PE)
(PRINT-IST D) (I{SO
1
'.NI-HIIOSHII.BUBUN-IIA.ARU.
( (PARSER2) )
(T (pRrill H) (lts0
I
,rs
I
'ultDEFrNED
I) ) 2 T))
)) )
(00 L00p))
))
(CDR
(DEFUN PARSER2 (LAMBDA NIL (COND
((EQ H'*M) (SETQ D (CAR D))
(MSG l D l'=m=1)) ((EQ H '*CM) (SETQ D (CAR D))
(MSG l D l '=cm= 1)) ((EQ H '*SM) (SttQ D ICAR D))
(MSG l D l '=m2= 1) )
・
((EQ H '*V) (PRINT― *V) )
((EQ H'く ) (PRINT― *C) )
((EQ H '*D)
6田 Q
D tCAR D))
(MSG l D l) ) )
(RETURN T))) (DEFUN PRINT― LST (LAMBDA (D)
(PROG (Dl D2) SETQ Dl NIL) SETQ D2 D)L00P (COND ((NULL D2))
(T (SETQ Dl (CAR D2)) (SETQ D2 (CDR D2)) (PARSER (LIST Dl)) (00 L00P)) )) )) (DEFUN PRINT― CASEC(LAMBDA(DD)
(PROG(DDl)(SETQ DDl NIL)L00P(COND ((NULL DD) (RETURN) )
(T (SETQ DDl (CAR DD)) (COND 。C) ((EQ (CAR DDl) 珈 (00 NEXT) ) (T(PRINT― LST
DDl)))))NEXT(PRINT― CASEC(CDR DD)))))
(DEFUN PRINT― *V (LAMBDA NIL
(PROG(Al A2)(SEm Al CAAR D))(SttQ A2(CADAR D))(MSG l Al l― 'GA l))))
NO―
(DEFUN PRINT― *C (LAMBDA NIL
(PR00 (Al) (SETQ Al (CAAR D)) (MSG l Al '― KA- 1)) )) (DEFUN QUERY― ITEM (LAMBDA (LST)
(PR00 (LAR) L00P (SETQ LAR (CAR LST)) SETQ LST (CDR LST)) (COND ((NULL LST) (REttRN) )
((EQ CAR LAR)'*C) (PRINT LAR)) (T(QUERY-1電 M CDR LAR))))(GO L00P)))) (DEFUN QUERY― THEME (LAMBDA (LST)
(PROG (LAR) L00P SETQ LAR (CAR LST)) (SETQ LST (CDR LST)) (COND ((NULL LST)
(RETURN)) ((EQ (CAR LAR) i$THEME)
(PRINT LAR)) (T (QUERY― THEME (CDR LAR)))) (GO L00P)))) (DEFUN QUERY (LAMBDA (JYOBUN) (Lt10P
(COND
((NULL JYOBUN)
(RttURN)) C(QUERY― Ⅲ EME(CAR JYOBUN))SrQ JYOBUN(CDR」 YOBUN)))))))
A21
(PUTQQ R23J― HYOU
FRAME(01B(SPCOND(SEQ(*V(TATEMONO YOUTO))(*C
SYOU― GAKKOU)))
($NCOND (*V (KAIDAN YOUTO)) (*C JIDOU― YOU)) (SCONCL ($GE
(*V (KAIDAN HABA)) (*CM 140)) 6GE (*V (ODORIBA HABA)) (*CM 140)) ($LE (*V (KEAGE SUNPOU)) (*CM 16)) ($GE (*V (FUMIZURA SUNPOU)) (*CM 26)))) (02B ($PCOND ($EQ (*V (TATEMONO YOUTO)) ($OR (*C CYUU― GAKKOU) (*C KOUTOU― GAKKOU)))) ($NCOND (*V (KAIDAN YOUTO)) (*C SEITO― YOU)) ($OR
($PCOND ($EQ (*V (TATEMONO YOUTO)) ($OR (*C BUPPIN― HANBAI― GYO) (*C BUPPIN― KAKOU― GYO))) ($AND ($GE (*V (TATEMONO SOU― YUKAMENSEKI)) (*SM 1500)) ($OR (*V (TATEMONO YOUTO)) (*C (GEKI」 YOU)) (*C (EIGA― KAN)) (*C (EINGEI― JYOU)) (*C (KANRAN― JYOU)) (*C (KOUKAI― DOU)) (*C (SYOU― KAIJYOU))) ($AND ($EQ (*V (KAIDAN YOUTO)) (*C (KYAKU― YOU)))) ($CONCL (SGE (*V (KAIDAN HABA)) (*CM 140)) ($GE (*V (ODORIBA HABA)) (*CM 140)) ($LE (*V (KEAGE SUNPOU)) (*CM 18)) ($GE (*V (FUMIZURA SUNPOU)) (*CM 26))))))) )) (DEFUN Q81A (LAMBDA NIL
(PROG (Ql Q2 Q3 A QQ) (SETQ Ql NIL) (SETQ Q2 NIL) (CLRSCRN)
(MSG T T T T 2 '**** 1 'PROCESSING l .START l
(SETQ Q3 NIL) (SETQ A NIL)
:!!! 1 *** T T)L00Pl
'DESUKA・ ?TT)(MSG ― 'YOIDESUKA '? 1 '〈 〈 2) (SETQ Ql (READ)) (MSG T '― 〉 2 Ql l 'DE
(MSG 2 '〉 〉 2 'NAN1 1 'N1 1 'TSUITE l 'KIKITAI '(ENTER― Y/N)T)
2
(SETQ QQ (READ)) (COND
((NOT (EQ QQ 'Y))
(00 L00Pl)))))) (DEFUN TITLE (LAMBDA NIL (CLRSCRN) (MSG T T T 14) (MSG '***** 1 'KENCHIKU― HOUK1 1 'Q8tA l 'SYSTEM l 'PROTOTΥ PE l l***** T) .LAB0 1 T) (MSG T T T T 25 'Hitoshi l ・Watanabe l (MSG T T T 30)
(MSG IBy l'Sl'Yasudome) (厖 G TT) (SETQ X O) (L00P
((NOT (LESSP X 2000))) (SETQ X (PLUS X l)) ) (CLRSCRN) ))
(DEFUN YY (LAMBDA NIL
(PR00 NIL L00P(TITLE)GO L00P)))) (RDS)
X 2000))) (SETQ X (PLUS X l)) ) (CLRSCRN) )) (RDS)
/*
付録 :フ レー ム 。エデ ィタFRS5の ログ
*/
FRS5
INPUT EDIT― COMMAND
(NF FL P* ED FIN ?) NF ………〉 MAKE NEW FRAME FL ―――〉 FRAME LIST P* ―――〉 PRINT ALL FRAME ED ―――〉 EDIT FRAME ―〉 END FIN― ―
COMMAND
INPUT EDIT― COMMAND
(NF FL P* ED FIN ?) (DATE DATE-1)
INPUT EDIT― COMMAND
(NF FL P* ED FIN ?)
(DATE(SELF(VALUE(NIL)))(INSTANCE(VALUE(ISA― DA電 )))(DAY(INHERIT(R))( DATATYPE (INTEGER)) (RESTRICT ((B1 1 31)))) (MONTH (INHERIT (R)) (DATATYPE ( NAME)) (RESTRICT ((ONE-OF JANUARY FEBRUARY MARCH APRIL MAY JUNE JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER)))) (WEEKDAY (INHERIT (R)) (DATAIYPE (NAME
))(RESTRICT(40NE-OF SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY ))) (TOFILL (GETWEEKDAY))) (YEAR (INHERIT (U)) (DATATYPE (INTEGER)))) (DAIIE-1 (SELF (VALUE (DATE))) (INSTANCE (VALUE (NIL))) (DAY (INHERIT (R)) (
VALUE(20)))(MONTH(INHERIT(R))(VALUE(DECEMBER)))(WEEKDAY(INHERIT(R))) (YEAR (INHERIT (U)) (VALUE (1981))))
INPUT EDIT― COMMAND
(NF FL P* ED FIN ?) *EDITED* ――DATATYPE ― INTEGER OK *** **お DATE-1 - DAY ― *** DATE-1 - MONTH ―――DATATYPE ―NAME OK ***
*** DATE-1 - WEEKDAY ―――DATATYPE ―NAME OK *** *** DATE-1 ‐INSTANCE―CHECK― END *** NIL *** DATE IS TOP FRAME *** NIL
/*
フアイ ルFRS5。 LIBの 関数FRAME― EDの 関数呼出 し系図
―― ―PRI「 獣 ―RttDY― ?― ― … ■ ENERATE― IREE―PHASE― ― ―‐―――TREE―PHASE― ―― FRttE― ED
PR“ ,
SELECTQ
SELECTQ― AUX
i
T―
COM
PRINTl* ・
l
ANSl
PR00<*〉
!
!
!
FPUT
FGET
!
!
!
!
!
FASSOC
!
!
!
`
!
! !
!
FPR2
!一
MAPCAR<*〉
!
!
!
MAPCAR
FGETFRAME PROG〈*〉 !
!
!
!
!
!
!
!
FGETFRAMEく *〉
!
Oo
!
RETURN
!
! :
!
!
Y― H PR00← 〉
! ! ! ! ! 田lB ! ! ! !
!
RETURК ⇒
! ! ! ! ! G∝ ⇒ ! ! ! G∝ ⇒
.
*/
!
! SLOT― SORT
!
, ! i
' !
PR00<*〉 !
FGETFRAME<*〉
,
!
i
l
REV
PROG<*〉
! !
! !
l
l
, 1
, 1
l
i
:
,
,
L… SORT
,
'
,
!
i
l
!
DELETE
REMIIVE
, ,
i I
,
RETURNく
*〉
l
'
! ,
!
RETURN<*〉
l
!
GOく *〉
,
:
! :
ALPHORDER
:
,
'
SSL
: l
i i
l
l
'
1
l
l
!
l
'
l
:
1
,
!
REVく *〉
1 ,
, ,
,
1
,
,
,
! ,
!
PROGく *〉
'
!
!
FGETFRAMEく
*〉
' RETURNく *〉
, GOく *〉
:
PRINTL― SP ,
1
INHERIT― CHECK
RELAT10N?
SELF?
,
!
!
!
1 !
REMOVE〈 *〉
1
DSORT
!
PROGく *〉
!
!
FGET〈
PART-OF?
!
INH― CI
〉 PROG〈 ネ
,
,
!
SSLく *〉
*〉
FGET<*〉
!
!
!
!
!
!
,
'
!
i
!
,
!
:
l
:
1
'
!
!
SP〈 *〉
!
RETURNく *〉
!
SELECTQく *〉
1
'
!
PRINTL―
i
!
i
!
!
,
!
!
!
!
!
INHERIT?
!
!
!
│
│
!
!
!
!
s―cHECK
FGETl
FGET
く*〉 FGETく *〉 ・
!
!
!
!
!
!
!
!
!
!
!
RELAT10N?く
!
!
!
!
!
!
!
!
!
!
!
FPUTY
!
!
FASSOCく *〉
!
!
!
!
!
!
!
!
!
!
!
FGETFRAMEく *〉
'
'
!
: !
! !
!
!
!
!
'
'
!
!
!
!
!
!
R-0-CHECK
!
FGETlく *〉 DA―
PROGく *〉
!
!
!
!
!
!
:
! DATATYPE?
! !
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
! NRELAT10N
!
PROGく
!
*〉
!
!
!
!
!
!
!
!
!
!
!
!
! !
!
!
PR00く *〉
!
!
!
!
RELAT10N?〈 *〉
!
!
CHECK
*〉
i !
!
!
!
!
i
RETURN〈
l
i
:
l
i
!
:
,
,
! 00く
,
,
1
*〉
,
,
i
!
,
1
i
l
,
i
i
,
FGETl〈
*〉
!
!
!
1
1
,
! !
!
!
!
'
i
'
l
,
RETURNく *〉
, 1
,
,
!
!
,
*〉
i
!
1
,
,
i
:
, !
!
GOく
!
!
:
l
,
*〉
'
,
i
,
1
,
I
1
,
1
l
l
,
FGETl〈 *〉
!
!
!
!
!
!
!
!
!
!
!
! DA― E― P
!
!
!
!
!
PRINTL― SP〈 *〉
!
!
!
!
!
!
!
!
!
!
!
LIST !
!
!
!
1
!
!
!
!
!
!
PRINTL― SPく *〉
!
!
!
!
!
!
!
!
!
!
!
RES― CHECK
PROGく *〉
! ,
!
!
!
!
!
!
!
!
!
FGETlく *〉
!
!
!
!
!
!
!
!
!
!
!
!
!
RELAT10N?く *〉
!
!
!
│
! BI― CHEEK
! !
! !
!
!
!
!
!
!
!
!
! !
!
PROG<*〉 !
!
!
FGETl〈
!
*〉
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
! BI― E― P
PRINTL― SP<*〉
!
!
!
! ONE-OF― CHECK
! !
! !
!
!
! !
!
PROGく *>
!
!
!
!
FGETlく *〉 !
!
!
!
!
!
!
! !
!
!
ONE― E― P PRINTL― SPく *〉 !
!
!
!
!
!
!
!
!
!
!
PRINTL― SP〈 *〉
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
PRINTL―
!
GOK*〉
SPく *〉
!
!
RETURNく
!
!
!
!
!
*〉
GO<*〉 `
!
!
!
RETURN<*〉
:
FPR2く *〉 :
SEL― COM
PROG〈 *〉 ! > 一● ノヽ DD M鳳 ●L M
!
ER― COM SELECTQく *〉
!
!
!
!
!
PRINTL…
!
FPR
!
!
!
MA― SLOT
SPく *〉
I > 一” ′ヽ ハU G
!
*〉
PROG<*〉
!
脚 。 ,
!
一● ノヽ
!
>
m 田 L E
・ , Qυ
!
FGETFRAMEく
CHECK― F PROGく 沐〉
FPRく 率〉
!
,
,
!
!
!
!
!
!
00く 率>
!
!
!
!
!
Y― Nく *〉
!
SLOT― SORК *〉
ノヽ
!
FPⅢ ←〉 !
> 一摯
==” nrヽ
> ︼” ノヽ
Ⅲ
刊 E R
! !
!
E―CH
PROG<*〉
!
!
!
!
!
SELECTQく *〉
!
!
!
!
!
E― CH― SL PROGく *〉
!
!
'!
!
!
!
!
!
!
!
!
!
!
FGETFRAME〈
!
!
!
!
!
!
!
!
!
!
!
!
E―CH‐ FA PROGく *〉
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
FGETFRAME〈
!
!
!
!
!
E―
!
!
!
!
!
!
!
!
!
!
!
!
!
!
CHANGE― SLOT PRCIGく *〉 !
RETURNく
!
FSL
!
!
!
GO<*〉
!
! CHANGE― FACET
CH‐ VA
PROG<*〉
!
! FSLく
!
!
ER― COM<*〉
! ooく
*〉
!
!
!
!
!
!
!
!
!
!
!
!
!
ER… COM<*〉
!
*〉
!
! !
*>
ER― COMく *〉
!
!
FGETFRAME〈
!
!
!
*〉
!
!
!
*〉
FGETFRAMEく *〉
! FPUT*〈
*〉
PROGく*〉
*〉
!
E― DEL
〉 PROGく ネ
!
!
!
!
!
SELECTQく
!
!
!
!
!
E― DEL― SL PROGく *〉
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
00く
!
!
!
!
!
E― DEL‐ FA PROG<*〉
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
E― DEL― VA PROG<*〉
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
FGETFRAME<*>
!
!
!
!
! ! !
! ! !
!
*〉
! DEL― SLOT PROGく *〉 !
FGETFRAMEく *〉
!
! FSLく ! RETURNく
!
! FSLく
*〉
! ERttCOM<*〉
!
! GOく
! !
! !
! !
! !
*〉
*〉
! FSLく
*〉
! ER― COHKネ 〉
! GOく
FPUT蹴 ER― COHKホ 〉
*〉
くネ 〉
率 〉
*〉
,
i
,
RETURNく *〉 1
ER― COMく *〉 ,
GOく *〉
,
RETURNく *〉
; File: FRS5。 LIB
(PUTD .DEFUN '(NLAMBDA (NAM$ EXP$) (PUID NAM$ EXP$) NAM$))
(DEFUN DELETE (LAMBDA (OBJ LST) ((NULL LST) NIL)
((EQUAL OBJ(CAR LSつ ) (REMOVE OB」 (CDR LST)) )
(CONS (CAR LST) (REMOVE OBJ (CDR LST))) )) (DEFUN PRINTL― SP (NLAMBDA L (L∞ P
((NULL L))
(PRINl (EVAL (CAR L))) (PRINl (ASCI1 32)) (SETQ L (CDR L)) ) ))
(DEFUN NRELAT10N (LAMBDA (SELS)
(PROG(SE SEl)SrQ sE(LIST SELS))6日 Q SEl(CAR(RELAT10N?SELS)))L00P COND ((NULL SEl)
(RETURN SE)))SttQ SE(CONS SEl SE))(SETQ SEl CAR(RELAT10N?
SEl)))00L00P)))) (DEFUN FPR (LAMBDA (X) (PRINl (FGETFRAME X) T l)
tTERPR1 0))) (DEFUN FPRl (NLAMBDA X
(PR00 NIL L00P COND ((NULL X)
(RETURN NIL)) (T (PRINl (FGETFRAME (CAR X))T l)) ) (TERPR1 2) (SETQ X (CDR X)) (G0
L00P))))
OEFUN FPRz (LAI.IBDA (X) (PROG
NIL LOOP (COND
((NULL X) (RETUR}I
(T (PRINI
NIL) ) (FOETFRAI,IE (CAR
D) T 1)) )
(TERPRI
2)
(SEru X (CDR X))
(CO
L00P)) )) (DEFUN FCET (LA}IBDA (FRAHE SLOT FACET)
([{APCAR (CDR
'CAR)
(AS$C FACET (CDR (ASSOC SLOT (CDR (CET FRAME 'T'RME))))))
))
(DEFUN FOETFRAI{E (LAilBDA (FRAI.{E) (COND
((GET FRA}.IE'FRAI,IE))
(T
(PUT F'RAI,{E 'FRAI,{E (LIST FRAT{E)))
)
))
(DEFUN F'PUT (LAI,{BDA (F'RAME SLOT FACET VALUE) (COND
((I.IEI.{BER VALUE (FGET FRAilE SLOT FACET)) NIL)
(T
(FASSOC VALUE (F'A,SSOC FACET (FASSOC SLOT (FGETFRAI,{E FRAilE) ) ) )
) ) ))
(DEFUN FPUT* (LAMBDA (FRAI{E SLOT FACET [|ALUE)
(CADR (RPLACD (FASSOC FACET (FASSOC SLOT (FCETFRAI,IE FRAI.{E) )
)
(LIST (LIST
VALUE)))) )) (DEFUN SLOT.SORT (LA}tsDA (FRAME)
(PROG (AFR
SL SL1) (SETQ AFR (FGETFRA},IE (DSORT (SSL FRAI,{E))))) LOOP (COND
FRAUE)
)
(SETO
SL (REV
(L-SORT
((NULL SL) (RPLACD AFR
SLl)
(TERPRI 2)
(PRINTL-SP
's*s
FRAI{E
'IS
'SSRTED
'rxx)
(ITRPRI 2) (INHERIT-CHECK FRAI.{E) (RETURN
(T
(SETO
NIL)
SLl
L00P)) ))
)
(CONS (A,SSOC (CAR
SL) AFR)
SLl))) )
(SEM SL (CDR
SL))
(GO
(DEFUN L― SORT (LAMBDA (SLI)
(PROG (REL) (SETQ REL SLI) (COND ((MEMBER ・INSTANCE REL) (SETQ REL (DELETE 'INSTANCE REL)) (SETQ REL (CONS 'INSTANCE REL)) ) ) (COND ((NULL (MEMBER 'SELF REL))
COND ((MEMBER 'PART-OF REL) (SETQ REL (DELETE 'PART-OF REL)) (SETQ REL (CONS 'PART-OF REL)) ) (T (RETURN REL)) ) )
(T (SETQ REL (DELETE 'SELF REL)) (SETQ REL (CONS 'SELF REL)) (RETURN REL)) )) )) (DEFUN MA― SLOT (LAMBDA (FRAME)
(PROG (SNA FANA VAL) (COND ((NULL (CHECK― F FRAME)) (RETURN NIL) ) )L00Pl (PRINT '***SLOT― NAME― ?***) (SETQ SNA (READ)) (TERPRI) L00P2 (PRINT '***FACET― NAME― ?***) (SETQ FANA (READ)) (TERPRI) L00P3 (PRINT '***VALUE― ?) (SETQ VAL (READ)) (TERPRI)
(FPUT FRAME SNA FANA VAL) (FPR FRAME) (TERPRI) (PRINT ・***MAKE-OTHER― VALUE― ?***) (COND ((Y― N)
(GO L00P3) ) ) (PRINT '***MAKE-OTHER― FACET― ?***) (COND ((Y― N)
(00 L00P2) ) ) (PRINT i***MAKE-OTHER― SLOT― ?***) (COND ((NULL (Y― N)) (SLOT― SORT FRAME)
(RETURN NIL) ) ) (GO L00Pl)) )) (DEFUN E― CH (LAMBDA (FNAME)
(PROG (INA) (PRINT ''WHAT CHANGE ? (READ)) (SELECTQ INA (S (E― (E― CH― VA
―――〉 S(lot)F(acet)V(alue)") (SETQ INA
CH― SL
FNAME)) (F (E― CH― FA FNAME)) (V
FNAME)) (ER― COM INA 5))) ))
・
(DEFUN E― DEL (LAMBDA (FNAME)
(PR00 (INA) (PRINT l:What delete ?― ――〉S(lot) F(acet) V(alue)'1) (SETQ INA
(READ))(SELECTQ INA S(E― DEL― SL FRAME))(F(E― DEL― FA FRAME))(V (E― DEL― VA FRAME)) (ER― COM INA 5))))) (DEFUN INHERIT― CHECK (LAMBDA (FRAME) (COND
((RELAT10N? FRAME) (INH― Cl
FRAME) ) (T (PRINTL― SP ・*** FRAME 'IS 'TOP 'FRAME '***) (TERPR1 2)) ) )) (DEFUN INH― Cl (LAMBDA (FRAME)
(PROG SLOIS SL)(SEim SL01ヽ (SSL FRAME))L00P(SElm SL(CAR SLOヽ ))(COND ((NULL SLOTS) (PRINTL― SP i*** FRAME l― INSTANCE― CHECK- lEND .***) (電 RPR1 2)
(RETURN NIL) ) ) (SELECTQ (INHERIT? FRAME SL) (S (S― CHECK FRAME SL)) (R (R-0-CHECK FRAME SL)) (0 (R-0-CHECK FRAME SL)) (00 NEXT))NEXT (SETQ SLOTS (CDR SLOTS)) (GO L00P)) )) (DEFUN INHERIT? (LAMBDA (FRAME SLOT)
(FGETI FRAME SLOT'INHERIT))) (DEFUN S― CHECK (LAMBDA (FRAME SLOT)
(COND
((EQUAL (FGET FRAME SLOT 'VALUE) (FGET (RELAT10N? FRAME)SLOT 'VALUE)) NIL) (T (FPUT* FRAME SLOT 'VALUE (FGETl (RELAT10N? FRAME) SLOT 'VALUE))) ) )) (DEFUN R-0-CHECK (LAMBDA (FRAME SLOT) (DA― CHECK
FRAME SLOT)
(RES― CHECK FRAME―
SLOT) ))
(DEFUN DA― CHECK (LAMBDA (FRAME SLOT)
(PROG (DT VA) (SETQ DT (DATATYPE? FRAME SLOT)) (SETQ VA (FGETl FRAME sLOT
'VALUE))COND ((EQUAL DT・ NAME)
COND ((LITATOM VD (DA― E― P FRAME SLOT DT VA l) ) (T (DA― E― P
FRAME SLOT DT VA 2)) ) )
((EQUAL DT'INttGER) (COND
((NUMBERP VA) (DA― E― P
FRAME SLOT DT VA l) )
(T (DA― E― P
FRAME SLOT DT VA 2)) ) )
((EQUAL DT'LIST) (COND
((LISTP VA) (DA― E― P
FRAME SLOT DT VA l) )
(T (DA― E― P
FRAME SLOT DT VA 2)) ) )
(T (PRINT "THIS DATATYPE IS SLOT '― ―― DT) (TERPR1 2)) )) ))
ILLEGAL!!r') (PRINTL― SP FRAME
(DEFUN LITAmM 1326) (DEFUN DATATΥ PE? (LAMBDA (FRAME SLOT)
(PR00 (DT REL) (SETQ REL (NRELAT10N FRAME)) L00P (COND ((SETQ DT (FGETl (CAR REL) SLOT 'DATATYPE)) (RETURN DT) )
(T (SEm REL (CDR REL))) ) (00 L00P)) )) (DEFUN E― CH― FA (LAMBDA (FRAME)
(PROG (ISL OFA NFA)L00P (PRINT 'tWhich SLOT ?") (SETQ ISL (READ)) (COND ((NULL (FSL FRAME ISL)) CR― ∞M ISL 2)
(GO L00P) ) ) (PRINT l'Input old― FACET and new― FACETl') (SETQ OFA
(READ))(SETQ NFA(READ))(CHANGE― FACm FRAME ISL OFA NFA))))
(DEFUN CHANGE― FACET (LAMBDA (FRAME SLOT FACETl FACET2)
(PROG(FA SL)(SETQ SL(ASSOC SLOT CGETRAME FRAME)))(COND ((NULL (SETQ FA (ASSOC FACETl SL)))
(RTEttRN NIL)) (T (RPLACA FA FACET2)))))) (DEFUN RES― CHECK (LAMBDA (FRAME SLOT)
(PROG (RES) (COND (tSETQ RES (FGETl (RELAT10N? FRAME) SLOT 'RESTRICT)) (COND
((EQUAL (CAR RES) .BI) (BI― CHECK
FRAME SLOT (CDR RES)) )
(tEQUAL(CAR RES)'ONE-OF) (ONE-OF― CHECK FRAME SLflT (CDR RES)) )
(T (PRINT "THIS RESTRICT IS ILLECAL!!!・
・) (PRINTL― SP FRAME SLOT '― ――
(CAR RES)) (TERPR1 2)) ) ―― 'NO 'RESTRICT l***) (TERPR1 2)) ) (T (PRINTL― SP '*** FRAME SLOT '― )) ))
(PUT (QUOTE DATE) QUOTE FRAME) '(DATE (SELF (VALUE (NIL))) (INSTANCE (VALUE (ISA― DATE))) (DAY (INHERIT (R)) (DATATYPE (INTEGER)) (RESTRICT ((B1 1
31))))α ONⅢ (INHERIT(R))(DATAlⅣ PE(NAME))(RESTRIm (ONE-OF JANUARY FEBRUARY MARCH APRIL MAY JUNE
」ULY AUGUST SEPTEMBER OCTOBER NOVEMBER
DECEMBER)))) (WEEKDAY (INHERIT (R)) (DATATYPE (NAME)) (RESTRICT ((ONE-OF SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY))) (TOFILL (GETWEEKDAY))) (YEAR (INHERIT (U)) (DATAIYPE (INTEGER)))))
(PUT(QUOTE DA電 -1)QUOIIE FRAME)'(DA電 -1(SELF(VALUE(DATE)))(INSTANCE
(VALUE(NIL)))(DAY(INHERIT(R))(VALUE(20)))(MONTH(INHERIT(R))(VALUE (DECEMBER))) (WEEKDAY (INHERIT (R))) (YEAR (INHERIT (U)) (VALUE (1981))))) (SttQ FRAME― LIST.(DATE DATE-1))
(DEFUN ANSl (LAMBDA NIL (PROG (FNA SNA FANA VAL FL) L00Pl (PRINT :****FRAME― NAME― ?****) (SETQ FNA (READ)) (SETQ FRAME― LIST (CONS FNA FRAME― LIST)) (SETQ FL (CONS FNA FL)) L00P2 (PRINT :****SLOT― NAME― ?****) (SETQ SNA (READ)) L00P3 (PRINT '****FACET― NAME― ?****) (SETQ FANA (READ)) (PRINT =****VALUE― ?******)
(SETQ VAL (READ)) (FPUT FNA SNA FANA VAL) (TERPRI) (FPR2 FL) (TERPRI) (PRINT ・***MAKE-OTHER― FACET― ?****) (COND ((Y― N)
(00 L00P3) ) ) (PRINT :***MAKE-OTHER― SLOT― ?****) (COND ((Y― N)
(GO L00P2) )) (SLOT― SORT FNA) (PRINT !***MAKE-OTHER二 FRAME― ?****) (COND ((NULL (Y― N))
(RETURN NIL)) ) (00 L00Pl)) )) (DEFUN CHANGE― FR― NA (LAMBDA (FRAMEl FRAME2) (COND
((NULL (MEMB FRAMEl FRAME― LIST)) (ER― COM
FRAMEl l) )
(T (PUT FRAME2 1FRAME (LIST FRAME2)) (RPLACD (FGETFRAME FRAME2) (CDR (FGETFRAME FRAMEl))) (RPLACD (FGATFRAME FRAMEl)NIL) (SETQ FRAME― (DELETE FRAMEl FRAME― LIST)) (CONS FRAME2 FRAME― LIST)) ) )) (DEFUN CHANGE― SLOT (LAMBDA (FRAME SLOTl SLOT2)
(PROG (SLl) (COND ((NULL (SETQ SLl (ASSOC SLOTl (FGETFRAME FRAME))))
(RttURN NIL)) (T (RPLACA SLl SLOT2)) )))) (DEFUN CHECK― F (LAMBDA (FRAME)
(PR00 NIL (COND ((GET FRAME'FRAME) (COND
((NULL (MEMBER FRAME FRAME― LIST)) (CONS FRAME FRAME― LIST) (RETURN T) )
(T (RETURN T)) ) ) (T (PRINl '・ UNDEFINED FRAME・ )
(TERPRI) (RETURN NIL)) )) ))
LIST
(DEFUN DEL― SLOT (LAMBDA (FRAME SLOT)
(PROG (FR) (SETQ FR (FGETFRAME FRAME)) L00P (COND ((NULL (FSL FRAME SLOT))
(REttRN NIL)) ((EQUAL SLOT (CAADR FR)) (RPLACD FR (CDDR FR)) )
(T (SETQ FR (CDR FR)) (00 L00P)) )) )) (DEFUN ER― CllM(LAMBDA tST X)
(SELECTQ X (1 (PRINTL― SP ST 'IS 'UNDEFINED 'FRAME)) (2 (PRINTL― SP ST 'IS ・UNDEFINED 'SLOT)) (3 (PRINTL― SP ST iIS 'UNDEFINED 'FACET)) (4 (PRINTL― SP ST 'IS ・UNDEFINED 'VALUE)) (5 (PRINTL― SP ST 'IS 'ILLEGAL
'COMMAND))(NIL)))) (DEFUN E― CH― SL (LAMBDA (FRAME)
(PROG (OSL NSL) (PRINT ''Which slot change ?・ ') (PRINT ''Input old― SLOT and new― SLOT'1) (SETQ OSL (READ)) (SETQ NSL (READ)) (CHANGE― SLOT
FRAME OSL NSL))))
(DEFUN E― CH― VA (LAMBDA (FRAME)
(PROG (ISL IFA NVA) (PRINT '=Which slot ?'')L00P (PRINT .IInput slot―
name and facet― name'1) (SETQ ISL (READ)) (SETQ IFA (READ))
(COND
((NULL(FSL FRAME ISL)) (ER― COM
ISL 2)
(00L∞ P)) ((NULL (ASSOC IFA (CDR (ASSOC ISL (FGETFRAME FRAME))))) (ER―COM IFA 3) (GO L00P) ) ) (PRINT l.Input new value'1) (SETQ NVA (READ)) (FPUT*
FRAME ISL IFA NVA)) )) (DEFUN E― DEL― FA (LAMBDA (FRAME)
(PR00 (ISL NFA) L00P (PRINT ''Which slot ?") (SETQ ISL (READ)) (COND ((NULL (FSL FRAME ISL)) (ER― COM
ISL 2)
・Input delete facet") (SETQ NFA (READ)) (GO L00P) ) ) (PRINT ・ (DEL― FACET
FRAME ISL NFA))))
・
(DEFUN E― DEL― SL (LAMBDA (FRAME)
(PROG (NSL) (PRINT "Which s10t delete ?・ ・) (SETQ NSL (READ)) (DEL― SLOT FRAME
NSL)))) (DEFUN E― DEL― VA (LAMBDA (FRAME)
(PROG (ISL IFA NVA)L00P (PRINT 'llnput slot― nane and facet― nameit) (SETQ ISL (READ)) (SETQ IFA (READ)) (COND ((NULL (FSL FRAME ISL)) (ER― COM
ISL 2)
(00 L00P) )
((NULL (ASSOC IFA (CDR (ASSOC ISL (FGETFRAME FRAME))))) (ER―COM
IFA 3)
(00 L00P) )) (FPUT* FNAME ISL IFA NIL)) )) (DEFUN FASSOC (LAMBDA (KEY A― LIST) (COND ((ASSOC KEY (CDR A― LIST))) (T (CADR (RPLACD (LAST A― LIST) (LIST (LIST KEY))))))))
(DEFUN FCLA (LAMBDA (FRAMEl FRAME2 SLOTl) (PROG (FSl FS2) (COND ((NULL (SETQ FSl (ASSOC SLOTl (FGETFRAME FRAMEl)))) (RETURN NIL) ) ((FSL FRAME2 SLOTl)
(FCLAl FRAMEl FRAME2 SLOTl) (RETURN NIL) ) ) (SETQ FS2 (LAST (CDR (FGETFRAME FRAME2)))) (RPLACD FS2 FSl)) ))
(DEFUN FCLAl(LAMBDA(FRAMEl FRAME2 SLOTl) (PROG (FRAl FRA2) (SETQ FRAl (CDR (ASSOC SLOTl (FGETFRAME FRAMEl)))) (SETQ FRA2 (ASSOC SLOTl (FGETFRAME FRAME2))) (RPLACD FRA2 FRAl)) )) (DEFUN FGETl (LAMBDA (FRAME SLOT FACET) (CAR (FGET FRAME SLOT FACET)) ))
(DEFUN FRttE― ED(LAMBDA
NIL
eR00(IMP)L00P(TERPR1 2)ORINT"INPUT EDIT― COMMAND")(PRINT'(NF FL P* ED FIN ?)) (SETQ INP (READ)) (SELECTQ INP (? (T― COD) (NF (ANSl)) (FL (PRI‖ T FRAME― LIST))(卜 '*Ё
(FPR2 FRAME― LISつ
)CD SEL―COM))(FIN eETURN
DITE勝 ))(ER― COM INP 5))(GO L00P))))
OEFUN FSL(LAMBDA(FRAME SLOT) (COND
((SSOC SLOT(FGШFRAME FRAME))つ ))) (DEFUN INSTANCE?(LAMBDA(FRAME)
(FGEI FRAME.INSTANCE'VALUE))) (DEFUN mSLl(LAMBDA CRAMEl FRAME2) (PROG(厖 FRSLl FRSL2)6Ш Q FRSL1 6SL FRAMEl))SErQ FRSL2 tSSL FRAME2)) (SLPR FRAMEl FRSLl) (SLPR FRAME2 FRSL2) (TERPRI) L00P (COND ((NULL FRSL2) (RETURN ES) )
((MEMB(CAR FRSL2)FRSLl)
(SETQ ES CONS CAR FRSL2)ES))))(SEm FRSL2(CDR FRSL2))00 L00P)) ))
①EFUN MSLC CAMBDA CRAMEl FRAME2 FRAME3 SLtlT)
(FSl FS2)(SEm FSl(ASSOC SLm(FGETFRAME FRAMEl)))(SETQ FS2(ASSOC SLm(FGHFRAME FRAME2)))(COND (OULL(EQUAL FSl FS2))
(PR∞
ヽ
ettRN NIL)) tT(SLCP FRAEl FRAME3 SL00)))))
(DEFUN ttLCl CAMBDA CRAMEl FRAME2 FRAME3) (PR00 0S)SrQ FES αSLl FRAMEl FRAME2))L∞ P COHD (OULL FES) tR「URN
NIL)))(ISE FRAMEl FRAMM FRAME3 tCAR FES))(SETQ Fい
FI壼 3))
(GO L00P)) ))
tDEFUN PttT-OF?tLttBDA『 RAIE) (岡 Er
FRAE'PART-OF'VALUE)))
(CDR
OEFUN PRINT1X (LAT{BDA (X)
0RIl{1
X)
(TERPRI)
))
(DEFUN RELATION? (LAI{BDA (FRNE)
(CAR
(OR
(SELF? FRAIIE) (PART-OF? FRA}IE) (DEFUN REV (LAI{BDA (PROG
(21)
LOOP
))
))
fi)
(COND
((NULL X)
21) ) L00P)) ))
(REIIJRN
)
(SETO
OEFUN NPART (LAI.IBDA (PAO) (PROG (PA PAl) (SEM PA
'VALUE))) LOOP
21
(CONS (CAR
OIST PAO))
(SETO
X) Z1)) (SEM X
PAl
(CDR
X))
(GO
(CAR (FOET PAO 'PART-OF
(COND
((NULL PA1) GETURN PA)
))
'PART-OF
(SETQ PA (CONS
'VALUE)))
PAl PA))
(GO LOOP))
(SETQ
PAl
(CAR (FGET PAl
))
(DEFUN SELF? (LA}IBDA (FRAME)
(FGET FRN{E 'SELF 'VALUE)
))
OEFUN SEL.COI.I (LA}IBDA NIL
OROG
(IFII ICO)
(READ)
)
LOOP1 (TERPRI
2)
(PRINT "I}IPUT FRA}IE NAHE") 6ETQ IFN
(COI{D
((NULL (I.IEI'{B IFII FRAI'IE.LIST) ) GR-COI{ IFN 1) (CO LOOPI)
) ) LOOP2 (TERPRI 2) (PRINT "INPUT ED-COHI.{AND?") (PRINT
"P(rint) A(dd) C(hanee) D(elete) E(nd)") (SETQ ICO GEAD)) (SELECT! ICO (P (FPR IFN)) G (I,IA-SLOT IFN)) (C (E-CH IFN)) (D (E-DEL IFI{)) (E (RETURII NIL)) (ER.COU ICO 5)) (GO LOOPz)) ))
(DEFUN SLCP (LAMBDA (FRAMEl FRAME2 SLOT) (PR00 (SL NFA NVA) (SETQ SL (CDR (ASSOC SLOT (FGETFRAME FRAMEl)))) L00P (COND
((NULL SL)
(RETURN NIL) ) ) (SETQ NFA (CAAR SL)) (SETQ NVA (CAADR (ASSOC NFA SL))) (FPUT* FRAME2 SLOT NFA NVA) (SETQ SL (CDR SL)) (00 L00P)) )) (DEFUN SSL (LAMBDA (FRAME)
(PROG tSNA SL)(SETQ SNA(CDR(FGETFRAME FRAME)))L00P(COND ((NULL SNA)
(RETURN (REV SL)) ) ) (SETQ SL (CONS (CAAR SNA) SL)) (SETQ SNA (CDR
SNA)) (GO L00P)))) (DEFUN T― COM (LAMBDA NIL
・NF ―――〉 MAKE NEW FRAME") (PRINTl* ・ 〉FRAME LIST'1) (PRINTl* 1'FL ――― ――〉PRINT ALL FRAME'') (PRINTl* 'OP* ― ―〉EDIT FRAME.1) (PRINTl* 'lED ―― (PRINTl*"FIN― ―〉 END COMMAND")
(TERPR1 2))) (DEFUN Y― N (LAMBDA NIL
(PROG (ANS) L00P (SETQ ANS (READ)) (COND
((MEMB ANS'(NIL NO N)) (RETURN NIL) )
((MEMB ANS i(T YES Y)) (RETURN T) ) ) (PRINT '***MOU― ICHIDO― INPUT― SHITE― KUDASAI***) (00 LIXIP))))
(DEFUN BI― CHECK (LAMBDA (FRAME SLOT REST)
(PR00 (REl VA) (SETQ REl (FGETl FRAME SLOT 'RESTRICT)) (SETQ VA (FGETl FRAME SLOT ・VALUE)) (COND ((EQUAL (CAR REl) .BI) (COND
((GREATERP (CADR REl) (CAR REST)) (COND
((LESSP (CADDR REl) (CADR REST)) (BI― E― P
FRAME SLOT) )
(T (BI― E― P (T (BI― E― P
FRAME SLOT REl REST)) ) )
FRAME SLOT REl REST)) ) )
(T(COND ((GREATERP VA (CAR REST)) (COND
((LESSP VA (CADR REST)) (BI― E― P
FRAME SLOT) )
(T (BI― E― P (T (BI―
(DEFUN BI―
E―
E―
FRAME SLOT VA REST)) )
P FRAME SLOT VAL REST)) ) )) )) ))
P (LAMBDA (FR SL RE REST)
(COND ((NULL RE)
― IBOuNDED― INTEGER 'CHECK '― - 10K '***) (PRINTL― SP '*** FR ・―SL l― ――
(TERPRI)) ―〉 ILLEGAL VALUE '') (SPACES 5) (PRINTL― SP FR i― SL l― ―― (T (PRINT l'― ― ・RESTRICT '― REST) (PRINTL― SP '― ――RE 'IS 'NOT 'SUIT 'FOR 'RESTRICT) (TERPR1 2)) ) )) (DEFUN DA―
E― P
(LAMBDA (FRAME SLOT IIYPE VALUE X)
(COND
((EQUAL X l) ― lDATATYPE ・―TYPE 'OK '***) (PRINTL― SP '*** FRAME l― SLOT '― ― (TERPRI) ) ((EQUAL X 2)
(PRINT"― → ILLECAL VALUE‖
!")
―FRAME SLOT '一 ―― 'DATATYPE TYPE '― ――) (PRINTL― SP '― ― (SPACES 5) (PRINTL― SP VALUE 'IS 'NOT 'SUIT 'FOR lDATATYPE)
(TERPR1 2) ) ) ))
(DEFUN FOET.U (LAI.{BDA (FRAI.{E SLOT) (PROG (CLASSES
((NULL
RES) (SEM CLASSES (REV (NRELATIO}I
FRAI,IE)
)
) LOOP (COND
CLASSBS)
(REruRil
[IL)
)
((SETO RES (FGETI (CAR CLASSES) SLOT 'VALUE)) (RETURN RES) )
(SETO RES (FGETI (CAR CLASSES) SLOT 'DEFAULT))
) REs) )
(RETURN RES)
((SETA RES (EVAL (FGET (CAR CLASSES)
(R811]RN
(T
SLOT'MFILL))) ))
(SETO CLASSES (CDR CLASSES)) (GO LOOP)))
(DEFUN NSELF (LAI.IBDA (SELS) (PROG (SE
SEl) (SETQ SE (LIST SELS))
(SETO
SEl
(CAR (SELF? SELS)))
LOOP
(cOllD
(0ruLL sEl) GETURN SE) ) (c0 L00P))
)
(SETO
SE
(CONS SE1
SE))
(SETQ
SEl
(CAR (SELF?
SEl)))
))
(DEFUN ONE-OF.CHECK (LAI.IBDA (FRA},IE SLOT REST)
(REl VA) (SEM
(PROC
FRAI{E SLOT
RN
'VALUE))
((EOUAL (CAR
REl)
(FGETI
FRAI.{E
SLOT'RESTRICT)) (SEM VA (FGETI
(COND
'OI{E-OF)
(COND
((I.IEHBER (CDR
REl)
REST)
(ONE-E-P FRAHE SLOT) ) (T (ONE-E-P FRAME SLOT REl))
(T
)
)
(COND
((MEHBER VA REST)
(ONE.E-P FRAME SLOT) ) (T (ONE-E-P FRAI,{E SLOT VA)) (DEFUN ONE-E-P (LAI.{BDA (FR
)) ))
))
SL Rl,)
(coilD
(OIULL
RV)
(PRINII-SP (ITRPRI) )
(T
'***
FR
'-
RV) (TERPRI
2))
) ))
SL
'---
'0NE-0F 'CHECK
'--
'0K 'rxr)
tDEFUN DSORT(LABDA(LST FUN LSTl tST2 LSB) (L00P
SETQ LS■ LST) (L00P
((EQ LST3 LS2)) ((NULL (CDR LST3)))
((COND ((Nm FUN) (ALPHORDER CCADR LS13)(CAR LST3))) ((FUN (CADR LST3) (CAR LST3))) ) (SETQ LSTl (CADR LST3))
ePLACA tCDR LST3)(CAR LS■ )) ePLACA LST3 LSTl) (SETQ LSTI LST3))) 00P LST3)) ((NULL LSTl)LST) (SETQ LST2 LSTl)
(SETQ LSTl))))
(RDS)
'
/*
付 録 :MIELIの ログ と ヒス トリー
*/
MIELI
****** INPUT IS (KINTARO WENT TO A RESTAURANT)
PROCESSING *START*
PROCESSING KINTAR0 *CDFOR‖ 隊 = (PERSON (NAME (KINTARO)))
*PARTOFSPEECH* = NOUNPHRASE *SUBJECT* = (PERSON (NAME (KINTARO)))
PROCESSING WENT *PARTOFSPEECH* = VERB *CDFORH障 = (PTRANS (ACTOR (*VAR* 00VARl)) (OB」 ECT
(*VAR* 00VARl))
CO(*VAR*00VAR2)) (FROM (*VAR* 00VAR3))) GOVARl = (PERSON (NAME (KINTARO))) <;ONCEP■ 卜=emANS(A(FOR(*VAR*GOVARl))
OBJECT (*VAR* GOVARl)) (TO (*VAR* 00VAR2))
CROMは VAR*GOVAR3))) PROCESSING T0 1101 NOT IN THE DICT10NARY
♯絆♯
PROCESSING A
PROCESSING RESTAURANT *PARTOFSPEECH* = NOUN *CDFOR鵬 =(PLACE ITYPE eESTAURANT))) *PARTOFSPEECH* = NOUNPHRASE
*CDFORM*=OLACE(TYPE(RESTAURANT))) GOVAR2=(PLACE(TYPE(RESTAURANT)))
CD FORM IS (PTRANS (ACTOR (PERSON (NAME (KINTARO)))) (OBJECT (PERSON (NAME (KINTARO)))) (TO (PLACE (TYPE (RESTAURANT))))) ****** INPUT IS (THE HOSTESS SEATED KINTARO)
PROCESSING *START*
PROCESSING THE
PROCESSING HOSTESS *CDFORM* = (PERSON (ROLE (HOSTESS))) *PARTOFSPEECH* = NOUN *PARTOFSPEECH* = NOUNPHRASE *CDFORM* = (PERSON (ROLE (HOSTESS))) *SUBJECT凛 = (PERSON (ROLE (HOSTESS)))
PROCESSING SEATED *PARTOFSPEECH* = VER3 *CDFORM障 = (MTRANS (ACTOR (*VAR* SEATEVARl))
(OBJECT (FACT (RESULT (MOVE (ACTOR (*VAR* SEATEVAR2))
(m(CHAIR)) (INSTRUMENT (PTRANS (ACTOR (*VAR* SEATEVAR2)) (OBJECT (*VttR* SEATEVAR2))
(10( TABLE)) (
INSTRUMENT (MBUILD (ACTOR (*VAR* SEATEVAR2)) (OBJECT (LOC (ENABLE (MOVE (ACTOR (*VAR* SEAIEVAR2)) (TO (CHAIR))))))))))))))
(m(*VAR*SEATEVAR2)) (FROM (*VAR* SEATEVARl))) SEATEVARl = (PERSON (ROLE (HOSTESS)))
.
£ONCEPЪ
=CMmANS am (*vAR*SEATEVARl)) (OBJEm(FACT(RESULT(l10VE (ACTOR ←VAR* SEATEVAR2)) CTO (CHAIR))
(*VAR*SEATEVAR2))
(INSRUMENT(PTRANS(ACTOR (
OBJECr(*VARtt SEATEVAR2))
(TO( TABLE)) (
INSTRUMENT(MBUILD(ACTOR (*VAR* SEATEVAR2)) OB」 ECT(LOC(酬
ABLE(MOVE(κ mR(*VAR*SEAttVAR2)) IEVAR2))
(*VAR*SEAT(TO(CHAIR)))))))))))))) (FROM(河 AR*SEATEVARl))) (■
PROCESSING KINTAR0 紀DFOR鵬 =(PERSON(NAME(KINTARO))) *PARTOFSPEECH* = NOUNPHRASE
SEAEVAR2=(PERSON(NAME(KINTARO))) CD FORM IS
mANS CACTOR(PERSON(ROLE(HOSTSS)))) (OBJECT(FACr(RESULT(MOVE(κ TOR eERSON
(NAME (KINTARO))))
(TO mIR)) (INSTRUMENT (PTRANS (ACTOR (PERSON(NAIE (KINTARO))))
NA順
(KIMARO))))
(OBJECT
(PERSON(
(TO(TABLE)) (INSTRUMENT (MBUILD (κ TOR(PERSON
CNAME CI‖ TARO))))
OHET tLOC(ENABLE(MOVE(κ 口R eER"‖ (NAME(KINTARO)))) E(KINTARO)))) ("(PERSON(NAH(TO(CHAIR)))))))))))))) (FROIM(PERSON(ROLE(HOSTSS))))) 率率**** IHPUT IS tTHE HOSuSs GAVE KINTARO A MENU)
PROBI‖ G *STAn
PROCESSING THE
PROCESSING HOSTESS
*CDFORM*=(PERSON(ROLE αOSttSS))) *PARTOFSPEECH* = NOUN *PARTOFSPEECH* = NOUNPHRASE
*CDFORM*=OERSON(ROLE(H∝ IESS))) *SUB」 ECT蹴
= (PERSON (ROLE (HOSTESS)))
PROCESSING GAVE *PARTOFSPEECH* = VERB *CDFOR騰 =(ATRANS(κ mR(*VAR*GIVEVARl))
OBJECT(*VAR*GIVEVAR2)) (10 (*VAR* CIVEVAR3))
(FROM (*VAR* GIVEVARl)) (FOCUS (*VAR* GIVEVARl))) *QCDFOR脂
=(*ARAN辞 (ACmR(*VAR*GIVEVARl)) (OBJECT (*VAR* GIVEVAR2))
tT0 0VAR*GIVEVAR3)) (FROH (*VAR* GIVEVARl)) ∝uS(ネ VAR*GIVEVARl))) 『
CIVEVARl=(PERSON(ROLE(HOSttSS))) *CONCEP卜 =(バ ]Mus
ocToR← VAtt GIVEVARl)) 40BJE∝ (到 ARtt GIVEVAR2))
tTO← VAR*GIVEVAR3)) (FROM(*VARtt GIVEVARl)) tF∝ US(岬 AR*GIVEVARl)))
PROCESSING KINTAR0
*CDFO眸 =OERSON eAME αINTARO))) *PARTOFSPEECH* = HOUNPHRASE
CIVEVAR3=(PERSON(NAIE(KIHTARO)))
PROCESSING A
PROCESSING MENU ネPARTOFSPEECH* = NOUN *CDFOR‖ 卜 = (B00K (TYPE (F00DLIST)))
*PARTOFSPEECH* = NOUNPHRASE *CDFORMい = (B00K (TYPE (F00DLIST)))
GIVEVAR2 = (B00K (TYPE (F00DLIST))) CD FORM IS (ATRANS (AmOR (PERSON (ROLE (HOSTESS)))) (OBJEm (B00K (WPE (F00DLIST)))) tTO tPERSON tNAME(KINTARO)))) (FROM (PERSON (ROLE (HOSTESS)))) (FOCuS (PERSON (ROLE (HOSTESS)))))
******INPUT IS CHE WAITER CAME TO THE TABLE)
PROCESSING *START*
PROCESSING THE
PROCESSING WAITER *CDFORM* = (PERSON (ROLE (WAITER)))
PROCESSING CAME *PARTOFSPEECH* = VERB *CDFORM* = (PTRANS (ACTOR (*VAR* COMEVARl))
ECT(*VAR*COMEVARl)) 00(*VAR*COMEVAR2)) 10B」
(FROM (*VAR* COMEVAR3)))
PROCESSING T0 11♯ ♯ NOT IN THE DICT10NARY PROCESSING THE
♯絆♯
PROCESSING TABLE
*PARmFSPEE鵬 =NOUN *CDFORM*=tTABLE) *PARTOFSPEECH率 = NOUNPHRASE £ DFOR辞 =(TABLE)
COMEVAR2=(TABLE) CD FORH IS NIL ****** INPUT IS (KINTAR0 0RDERED A LOBSTER)
PROCESSING *START蹴
PROCESSING KINTAR0 κ DFOR鵬
=(PERSON(NAME(KINTARO)))
*PARTOFSPEECH* = NOUNPHRASE *SUBJ田 卜 =(PERSON(NAME(KINTARO)))
PROCSSIN0 0RDmED 絆 ARttFSPEEH*=VERB
*CDFO訃 =CMRANS tAmOR(製 AR*ORDERVARl))
OBJET CACT eい ULT(ARANS tACOR(製 AR*ORDERVAR2)) 40BJECT← VARネ ORDERVAR4)
)
(TO(*VAR*ORDERVARl)) (FROM← VA賠 ORDmVAR3))) )))
(m← VAR*ORDERVARa) 『
ROH← VA賠 ORDERVARl)))
ORDERVARl=(PERSON(NAE(KI「盤0)))
*CONCEPT* = (MTRANS (ACTOR (*VAR* ORDERVARl)) (OBJECT (FACT (RESULT (ATRANS (ACTOR (*VAR* ORDERVAR2) )
(OBJECT← VAR*ORDERVAR4 ))
tTO← VAR*ORDERVARl)) (FROM (*VAR* ORDERVAR3)) ))))
(TO (*VAR* ORDERVAR2)) (FROM (*VAR* ORDERVARl)))
PROCESSING A PROCESSING LOBSTER *PARTOFSPEECH* = NOUN *CDFOR‖ 卜 = (F00D (TYPE (LOBSTER)))
*PARTOFSPEECH* = NOUNPHRASE *CDFORM* = (F00D (TYPE (LOBSTER))) ORDERVAR4 = (F00D (TYPE (LOBSTER))) CD FORM IS (MTRANS (ACTOR (PERSON (NAME (KINTARO)))) (OBJECT (FACT (RESULT (ATRANS (OBJECT (F00D (IYPE (LOBSTER)))) (TO (PERSON (NAME (KINTARO)))))))) (FROM (PERSON (NAME (KINTARO))))) ****** INPUT IS tHE WAS SERVED QUICKLY)
PROCESSING ttSTART*
PROCESSING HE *PARTOFSPEECH* = NOUNPHRASE
*CDFORM*=OERSON 6EX(MALE))) *SUBJECT蹴 = (PERSON (SEX (MALE)))
PROCESSING WAS *PARTOFSPEECH* = VERB *CONCEPT* = (PERSON (SEX (MALE)))
PROCESSINO SERVED *PARTOFSPEECH* = VERB *CDFORM隊 = (MOVE (ACTOR (*VAR* SERVEVARl))
(OBJECT (ACT10N (RESULT (IS (ACTOR (*VAR* SERVEVAR2))
(STATE(PLEASE(VAL(*VAR* SERVEVARN))))))))) SERVEVARl = (PERSON (SEX (MALE))) SERVEVARN = (7) *CONCEPT* = (MOVE (ACTOR (*VAR* SERVEVARl)) (OBJECT (ACT10N (RESULT (IS (ACTOR (*VAR* SERVEVAR2)) (STATE (PLEASE (VAL (*VAR* SERVEVARN))))))))) SERVEVAR2 = (PERSON (SEX (MALE))) SERVEVARl = (7)
PROCESSING QUICKLY ♯♯♯NOT IN THE DICT10NARY ll‖ SERVEVARN = (10) CD FORM IS (MOVE (ACTOR (7)) (OBJECT (ACT10N (RESULT (IS (ACTOR (PERSON (SEX (MALE)))) tSTATE (PLEASE (VAL (10))))))))) ***率 **
INPUT IS (HE LEFT A LARGE TIP)
PROCESSING *START*
PROCESSING HE ネPARTOFSPEECH* = NOUNPHRASE
*CDFORM* = (PERSON SEX (MALE))) *SUBJECT* 〓 (PERSON (SEX (MALE)))
PROCESSING LEFT *PARTOFSPEECH* = VERB
*CDFORH障 = (PTRANS (ACTOR (*VAR* LEAVEVARl))
(OBJECT (*VAR* LEAVEVAR2)) (TO (*VAR* LEAVEVAR3)) (FROM(*VAR*LEAVEVAR4)))
LEAVEVARl=OERSON ISEX(MALE))) *CONCEPT* = (PTRANS (ACTOR (*VAR* LEAVEVARl)) tOBJECT (*VAR* LEAVEVAR2)) 00 (*VAR* LEAVEVAR3)) (FROM (*VAR* LEAVEVAR4)))
PROCESSING A
PROCESSING LARGE *PARTOFSPEECH* = ADJECTIVE 、*CDFORM* = ((SIZE (LARGE)))
PROCESSING TIP *PARTOFSPEECH* = NOUN *CDFORM* = (TIP) *PARTOFSPEECH* = NOUNPHRASE *CDFOR‖ 障= (TIP)
CD FORM IS
CPRANS(AmOR(PERSON(SEX(MALE))))) ****率 *
INPUT IS (HE LEFT THE RESTAURANT)
PROCESSING *START*
PROCESSING HE *PARTOFSPEECH* = NOUNPHRASE 紀DFOR鵬 =(PERSON(SEX(MALE)))
SUBJECT*=OERSON(SEX(MALE)))
PROCESSING LEFT *PAR10FSPEECH* = VERB *CDFORM* = (PTRANS (ACTOR (*VAR* LEAVEVARl)) (OBJECT (*VAR* LEAVEVAR2)) (TO (*VAR* LEAVEVAR3)) (FROM (*VAR* LEAVEVAR4))) LEAVEVARl = (PERSON (SEX (MALE))) *CONCEPT* = (PTRANS (ACTOR (*VAR* LEAVEVARl)) (OBJECT (*VAR* LEAVEVAR2))
(m(*VAR*LEAVEVAR3)) (FROM(*VAR*LEAVEVAR4)))
PROCESSING THE
PROCESSING RESTAURANT *PARTOFSPEECH* = NOUN *CDFOR出 =(PLACE(TYPE(RESTAURANT))) *PARTOFSPEECH* = NOUNPHRASE
*CDFORM*=(PLACE(TYPE(RESTAURANT))) LEAVEVAR4 = (PLACE (TYPE (RESTAURANT)))
LEAVEVAR2=(PERSON tSEX(MALE))) CD FORM IS (PTRANS (ACTOR eERSON SEX (MALE)))) 、 (OBJECT (PERSON (SEX (MALE)))) (FROM (PLACE (TYPE (RESTAURANT)))))
♯♯l CDFORMS ARE
(PTRANS (ACTOR (PERSON (NAME (KINTARO)))) (OBJECT (PERSON (NAME (KINTARO)))) (TO (PLACE (TYPE (RESTAURANT))))) (MTRANS (ACTOR (PERSON (ROLE (HOSTESS)))) (OB」 ECT (FACT (RESULT (MOVE (ACTOR (PERSON (NAME (KINTARO)))) (TO (CHAIR))
(INSTRUMENT (PTRANS (ACTOR (PERSON ( NAME (KINTARO)))) (OB」 ECT
(PERSON (
NAME (KINTARO))))
(m(TABLE)) (INSTRUMENT (
MBUILD (ACTOR (PERSON (NAME (KINTARO)))) (OBJECT (LOC (ENABLE (MOVE (ACTOR (PERSON (NAME (KINTARO)))) (TO (CHAIR)))))))))))))) (TO (PERSON (NAME (KINTARO)))) (FROM (PERSON (ROLE (HOSTESS))))) (ATRANS (ACTOR (PERSON (ROLE (HOSTESS)))) (OB」 ECT (B00K (TYPE (F00DLIST))))
(TO(PERSON(NAME(KINTARO)))) (FROM (PERSON (ROLE (HOSTESS))))) NIL
(MTRANS (ACTOR (PERSON (NAME (KINTARO)))) (OBJECT (FACT (RESULT (ATRANS (OBJECT (F00D (TYPE (LOBSTER))))
(m(PERSON(NAME(KINTARO)))))))) (FROM (PERSON (NAME (KINTARO))))) (MOVE (ACTOR (7)) (OBJECT (ACT10N (RESULT (IS (ACTOR (PERSON (SEX (MALE)))) (STATE (PLEASE (VAL (10))))))))) (PTRANS (ACTOR (PERSON (SEX (MALE)))))
(PmANS(AmOR(PERSON(SEX(MALE)))) (OB」 ECT
(PERSON (SEX (MALE)))) (FROM (PLACE (TYPE (RESTAURANT))))) (PTRANS (ACTOR (PERSON (NAME (KINTARO)))) (OBJECT (PERSON (NAME (KINTARO))))
(m(PLACE(TYPE(RESTAURANT)))) (FOCUS (PERSON (NAME (KINTARO)))) (LEADTO (*‖ * WHYVAR))) (*PTRANS* (ACTOR (PERSON (NAME (KINTARO)))) (OBJEげ (PERSON(NAME(KINTARO)))) (TO(TABLE)) (FOCUS (PERSON (NAME (KINTARO))))) (PTRANS (ACTDR (PERSON (NAME (KINTARO)))) (OBJECT (PERSON (NAME (KINTARO)))) (TO (TABLE)) (FOCUS (PERSON (NAME (KINTARO)))) (LEADm(*♯ *wHYVAR))) NIL
(ATRANS(ACTOR(*♯ *WHOVAR)) (OBJECT (300K (TYPE (F00DLIST)))) (TO (PERSON (NAME (KINTARO)))) (FROM(*♯ *WHOVAR)) (FOCUS (*1* WHOVAR)))
(ATRANS (ACTOR (PERSON (ROLE (HOSTESS)))) (OB」 ECT (300K (TYPE (F00DLIST)))) (TO (PERSON (NAME (KINTARO)))) (FROM (PERSON (ROLE (HOSTESS)))) (FOCUS (PERSON (ROLE (HOSTESS)))) (LEADTO (*♯ * WHYVAR))) (ATRANS (ACTOR (PERSON (ROLE (HOSTESS)))) (OBJECT (B00K (TΥ PE (F00DLIST)))) (TO (PERSON (NAME (KINTARO)))) (FROM (PERSON (ROLE (HOSTESS)))) (FOCUS (PERSON (ROLE (HOSTESS)))) (LEADm(料 *WHATVAR))) (*IS* (ACTOR (PERSON (NAME (KINTARO)))) (STATE (ENJOY (VAL (5)))) (FOCUS (PERSON (NAME (KINTARO))))) NIL (PTRANS (AC10R (PERSON (NAME (KINTARO)))) (FOCUS (PERSON (NAME (KINTARO)))) (LEADTO (*♯ * WHYVAR)))
(*ARANS*(ACmR(PERSON(NAME(KINTARO)))) (OB」 ECT
(MONEY))
(FROM (PERSON (NAME (KINTARO)))) (FOCUS (PERSON (NAME (KINTARO)))) (INSTRUMENT (MTRANS (ACTOR (PERSON (NAME (KINTARO)))) (OBJECT (BILL)) (TO (CP (PART (PERSON (NAME (KINTARO)))))))) )
(ATRANS (ACTOR (PERSON (NAME (KINTARO)))) (OB」 ECT (MONEY)) (FROM (PERSON (NAME (KINTARO)))) (FOCUS (PERSON (NAME (KINTARO)))) (LEADTO (*‖ * WHYVAR))) (PTRANS (ACTOR (PERSON (NAME (KINTARO)))) (OB」 ECT (PERSON (NAME (KINTARO))))
(m(PLACE(TYPE(RESTAURANT))))) (MTRANS (ACTOR (PERSON (ROLE (HOSTESS)))) (OBJECT (FACT (RESULT (MOVE (ACTDR (PERSON (NAME (KINTARO)))) (TO (CHAIR)) (INSTRUMENT (PTRANS (ACTOR (PERSON ( NAME (KINTARO)))) (OB」 ECT
(PERSON (・
NAME (KINTARO))))
(10(TABLE)) (INSTRUMENT (
MBUILD (ACTOR (PERSON (NAME (KINTARO))))
(OB」
ECT(LOC(ENABLE(MOVE(ACmR(PERSON(NAME(KINTARO))))
(TO (CHAIR)))))))))))))) (TO (PERSON (NAME (KINTARO)))) (FROM (PERSON (ROLE (HOSTESS))))) (ATRANS (ACTOR (PERSON (ROLE (HOSTESS)))) (OBJECT (B00K (TYPE (F00DLIST)))) (TO (PERSON (NAME (KINTARO)))) (FROM (PERSON (ROLE (HOSTESS)))) (FOCUS (PERSON (ROLE (HOSTESS))))) NIL (MTRANS (ACTOR (PERSON (NAME (KINTARO)))) (TYPE (LOBSTER)))) (OB」 ECT (FACT (RESULT (ATRANS (OBJECT (F00D (TO (PERSON (NAME (KINTARO)))))))) (FROM (PERSON (NAME (KINTARO)))))
(MOVE(ACmR(7)) (OBJECT (ACT10N (RESULT (IS (A劇[OR(PERSON(SEX αALE))))
(STATE(PLEASE(VAL(10))))))))) (PTRANS (ACTOR (PERSON (SEX (MALE))))) (PTRANS (ACTOR (PERSON (SEX (MALE)))) (OBJECT (PERSON (SEX (MALE)))) ` (FROM (PLACE (TYPE (RESTAURANT))))) (PTRANS (ACTOR (PERSON (NAME (KINTARO)))) (OBJECT (PERSON (NAME (KINTARO)))) (TO (PLACE (TYPE (RESTAURANT))))) (MTRANS (ACTOR (PERSON (ROLE (HOSTESS)))) (OBJECT (FACT (RESULT (MOVE (ACTOR (PERSON (NAME (KINTARO))))
(m(CHAIR)) (INSTRUMENT (PTRANS (ACTOR (PERSON (
NAME(KINTARO)))) (OB」 ECT
(PERSON
NAME (KINTARO)))) (TO (TABLE)) (INSTRUMENT (
MBUILD (ACTOR (PERSON (NAME (KINTARO)))) (OBJECT (LOC (ENABLE (MOVE (ACTOR (PERSON (NAME (KINTARO))))
00(CHAIR)))))))))))))) (TO (PERSON (NAME (KINTARO)))) (FROM (PERSON (ROLE (HOSTESS))))) (ATRANS (ACTOR (PERSON (ROLE (HOSTESS)))) (OBJECT (B00K (TYPE (F00DLIST)))) (TO (PERSON (NAME (KINTARO)))) (FROM (PERSON (ROLE (HOSTESS)))) (FOCUS(PERSCIN(ROLE(HOSTESS))))) NIL (MTRANS (ACTOR (PERSON (NAME (KINTARO)))) (OB」 ECT (FACT (RESULT (ATRANS (OBJECT (F00D (IYPE (L03STER)))) (TO (PERSON (NAME (KINTARO)))))))) (FROM (PERSON (NAHE (KINTARO)))))
(u0vE
(AC'TOR (?) )
(OBJECT (ACTION (RESULT
(IS
(ACTOR (PERSON (SEX (HALE)))) (STATE (PLEASE (VAL (10)))))))))
(PNA}IS (ACTOR (PERSON (SEX (I,IALE))))) (PIRANS (ACTOR (PERSON (SEX (I.IALE) ))) (OBJECT (PERSON (SEX (I{ALE)))) (FROI.I (PLACE (TYPE (RESTAURA}IT) )))) PROCESSTEXT END}IIL
---.-PR
I NTER.READY-?.-
-.---GEN
ERATE-TREE-PHASE
--
-
-----TREE-PHASE--PROCESSTEXT
PRINT*CDS*
PROG
,
│
,
MSC
PROG〈 *〉
!
!
!
RETURN
,
i
, !
RETURN〈 *〉
i
!
,
,
,
,
,
!
PP2 !
PPCDR !
PP2く *〉 !
! ! !
! ! !
ADDl ! PPCDRく *〉
!
!
,
!
ADDlく
,
!
!
!
PP2〈 *〉
1
,
*〉
I !
00
i
,
l,ls0(8> !
PARSE PROG(t>
!! !
CARIF
!
RETURN<*>
It
ff
! !!t ! !!! ! !!! ! !!! ! !!!
REI.{OVEVARIABLES
IS***
I
ISVAR
!
RHOVEVARIABLES(*>
!
EVALA
!
NAI,IEVAR COI{SP<*>
CONSP
! !
! !
! ! ! ! !
!
!
!
> 一” ′ ‘ヽ
1
,
!
CARR ′
*〉
! REMOWEVARIABLES2
!
!
CADRR
! RETURHく
! !
:
←〉
VAL
! !
!
REMOVEVARIABLES<
.
REMOVEVARIABLES2
■
MSGく *〉
,
,
!
ヽ
LOADDEF
i
l
! ! ! ! RUNSTACK
!
!
! !
! !
!
!
!
!
! !
=〉
!
.
!
TOPOF ´
! !
!
!
〉
RETURNく ネ〉
!
!
! !
PR00く
CHEKTOP PR00ぐ ! !
!
!
ADDSTACK ! MSGく 率〉
!
!
!
PROGく *〉
l
! ! ! ! !
!
PR“
!
CARIК
→ 、
!
! !
! !
ISTRIGGERED PR“ ぐ〉 ! !
! ! !
! ! !
! ! !
! ! ! ! !
!
!
! ! ! !
! ! ! !
! ! !
REQCLAUSE ! !
PR00く *〉 ! RETURN<
⇒
! ! ! ! ! ! !, ! ! : ! ! ! ! ! ! !
!
!
!
!
RETURNく ホ > ! EVALAく事〉
!
GO←
REWRN←
!
!
! ! ! 〉
〉 ・
ADDP“ 田ヽ ADDSTACKぐ 〉 ! ! ! REQCLAUSК ⇒ ! ! !
ADDPACKETSく
拿 〉
!!! ! !!!! ! !!!!
!
!
DOASSIGIIS
PROG<X>
!
!
REQCLAUSE<*>
!
!
RuruRncxi
!
REASSIGI{EVALA<*>
l!!! ! ! !!!!!
!!!tuSG<r>
!!!!! !!!!PP2(*> !!!! ! ! ! !t! ! t GOG> !!
!
G0<*>
! CONSEND I P
> 一一 ′‘ヽ ︵′“ ヽri
l o
PROCESSTEXT<*〉
G0(*>