プログラム「サイダー」


big-Quixote プログラムの例として、「サイダー」を 紹介しましょう。

これが big-Quixote プログラム「サイダー」です。

&program;; &subsumption;; りんご =< {バラ,食べ物};; &submodule;; 米国 >- 西洋;; 英国 >- 西洋;; &rule;; 日本::{サイダー/[原料=炭酸水];; 飲み物[名前=X]/[税=no] <= X/[アルコール=no]};; 西洋::サイダー/[原料=りんご, 工程=発酵];; 英国::サイダー/[アルコール=yes];; 米国::サイダー/[アルコール=no];; &end.

このプログラムで記述されている知識は次の通りです。 「日本では、サイダーは炭酸水から作られます。ところが西洋では、 りんごを発酵して作ります。更に、英国ではアルコールですが、 米国では、ノンアルコールです。 また、日本では、ノンアルコール飲料は無税です。」

これはとても簡単な例ですが、この例にもちゃんと 知識の特徴 が 含まれています。

このプログラムに対して、例えば、以下の質問が考えられます。

?-日本:飲み物[名前=サイダー]/[税=no]. ?-日本:飲み物[名前=サイダー]/[税=no];; &program;; &rule;; 日本::サイダー/[アルコール=no];; &end.

最初の質問は、「日本ではサイダーは無税か?」を表しています。

2番目の質問は、「日本でサイダーがノンアルコールなら、 サイダーは無税か?」を表しています。 皆さんお気づきのことと思いますが、 「日本でサイダーがノンアルコールなら、」の部分は仮説です。このように 仮説の付いた問合せ も、 Quixote では出すことができます。

次に、これらの質問の答をそれぞれ見ていきましょう。

1番目の答えは、

IF 日本::サイダー.アルコール = no THEN YES

Quixote から返されます。 これは、「日本でサイダーがノンアルコールなら yes です。」を 意味しています。 If の部分は仮定で、 Quixote は このように 仮定付き答え を返します。

2番目の答えは、1番目の質問と答から分かるように、 YES が 返ります。