(57)【要約】【課題】後ろ向き推論のための知識を前向き推論にも（わかりやすくかつ簡潔で少ない記述量で）活用できるようにして、ＡＩ用論理型プログラミングのコストを減らしてこれを普及しやすくすること、その程度を向上すること【解決手段】ルールの複数ある条件の一部に合致する情報が新たに得られたときに、該ルールの他の条件の成立を自動探索して該ルールの命題の成立を自動確認する。条件および命題が、自然言語に変数を埋め込むことを許容した形式で表現され、合致する情報が、自然言語の形式又は自然言語に変数を埋め込んだ形式で与えられる。合致する情報と条件とを合致させる単一化によって得られる、該ルール側の変数束縛を該ルールに波及して、より制限された形式での該所定の命題の成立を探索する。【選択図】図１
2018190180.tif 000002
【特許請求の範囲】
【請求項１】
複数ある条件の一部又は全部が成立した場合に所定の命題が成立したとみなす形式のルールを処理する
コンピュータプログラムであって
ルールの複数ある条件の一部に合致する情報が新たに得られたときに、
該ルールの他の条件の成立を自動探索して該ルールの該所定の命題の成立を自動確認するコンピュータプログラム。
【請求項２】
前記条件および前記所定の命題が、
自然言語に変数を埋め込むことを許容した形式で表現され、
前記合致する情報が、
自然言語の形式又は自然言語に変数を埋め込んだ形式で与えられることを特徴とする
請求項１に記載のコンピュータプログラム。
【請求項３】
前記合致する情報と前記条件とを合致させる単一化によって得られる、該ルール側の変数束縛を
該ルールに波及して、より制限された形式での該所定の命題の成立を探索すること特徴とする
請求項１又は２に記載のコンピュータプログラム
【請求項４】
前記記載された命令の指定するファイルの内容を
現在の論理プログラムに追加で読み込み、
前記いずれかの条件以降の条件のみに対して有効化する、
請求項１から３のいずれか一項に記載のコンピュータプログラム。
【請求項５】
前記単一化の対象となる、
一の合致する情報と一の条件からなる組について、
複数の変数束縛が可能である場合に、
そのいずれもについて独立して処理することを特徴とする
請求項３又は４に記載のコンピュータプログラム。
【請求項６】
命題の成立を確認した場合に、
その命題を新たに得られた情報として、
コンピュータが記憶している一または複数の各ルールの
各条件の一部又は全部と合致するかを探索することにより、
該各ルールの各命題が成立するかを確認することを再帰的に繰り返すことを特徴とする、
請求項１から５のいずれか一項に記載のコンピュータプログラム。
【請求項７】
同一または類似の条件の合致に対応して成立を確認できる複数の命題の列記をルールにおいて許容した
請求項１から６のいずれか一項に記載のコンピュータプログラム。
【請求項８】
類似の条件のうちの共通部分を根又は根に近い枝として、
類似の条件のうちの差異部分を根からより遠い枝として、
根から対応する枝までの条件の確認によって成立したとみなせる命題を葉として
枝分かれのあるツリー状にルールを表現した
請求項７に記載のコンピュータプログラム。
【請求項９】
ルールにおいて許容した同一または類似の条件の合致に対応して成立を確認できる複数の命題の列記が
好ましい手続きの順番に従っていることを特徴とする
請求項７に記載のコンピュータプログラム。
【請求項１０】
ルールにおいて許容した同一または類似の条件の合致に対応して成立を確認できる複数の命題の列記に
従った順番で
各命題について充足させるべきことを自動的に外部に要求しかつ充足を確認するまで待つことを特徴とする
請求項７又は９に記載のコンピュータプログラム。
【請求項１１】
成立した条件の数が２以上の所定数（ルールにおいて「：２」等と指定するようにしてもよい）の場合に、
前記所定の命題が成立することとした
請求項１から１０のいずれか一項に記載のコンピュータプログラム。
【請求項１２】
成立した条件の数がちょうど１個の場合に、
前記所定の命題の成立を自動確認することを特徴とする
請求項１から１０のいずれか一項に記載のコンピュータプログラム。
【請求項１３】
成立した条件および成立した各条件に関連する各重みから計算した値が所定の閾値以上もしくは閾値以下または閾値を超えるもしくは閾値未満の場合に、前記所定の命題の成立を自動確認することを特徴とする
請求項１から１２のいずれか一項に記載のコンピュータプログラム。
【請求項１４】
前記所定の命題の成立を自動確認する際に、関連する一以上の命題に対して、関連づけた各命題の重みまたは各条件に関連する重みまたはその両方から得た値を各命題に関連づけて記憶することを特徴とする
請求項１３に記載のコンピュータプログラム。
【請求項１５】
ルールの複数ある条件の一部に合致する情報が新たに得られたときに、
同じルール内の真偽の証明できない条件について
利用者に真偽を確認する、又は、利用者に真もしくは偽とする変数束縛集合を確認する
ことを特徴とする
請求項１から１４のいずれか一項に記載のコンピュータプログラム。
【請求項１６】
ルールの複数ある条件の一部に合致する情報が新たに得られたときに、
同じルール内の対応する条件または命題（いずれも真偽を自動証明できないものに限る）について
利用者に真偽を確認する、又は、利用者に真もしくは偽とする変数束縛集合を確認する
ことを特徴とする
請求項１から１４のいずれか一項に記載のコンピュータプログラム。
【請求項１７】
請求項１から１６のいずれか一項に記載のコンピュータプログラムを用いた装置。
【請求項１８】
請求項１から１６のいずれか一項に記載のコンピュータプログラムを用いた方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、知識表現を処理する方法、コンピュータプログラム及び装置に関する。
【背景技術】
【０００２】
変数を含んだ文字列をリテラルとして許容するＡＩ用論理型プログラミング言語（知識表現言語）とその処理系が当該発明者によって研究開発されている（特許文献１）。
これは、従来のＰＲＯＬＯＧ等に比して、自然言語で記述しやすいなどの長所を有するが、
他のＰＲＯＬＯＧ等のＡＩ用論理型プログラミング言語と同様に、
推論や判断の根拠となる知識表現の準備の大半が、
人間の論理型プログラミングコスト（知識表現コスト）に帰属するため、
ＡＩ用論理型プログラミング言語を、さらに分かりやすくかつ簡潔にして、その記述量を減らすことが求められている。
しかし、上記特許文献１のＡＩ用論理型プログラミング言語を含め、
後ろ向き推論「寄り」に設計・チューニングされたＰＲＯＬＯＧ系のＡＩ用論理型プログラミング言語は、
前向き推論的な処理（診断、プロダクション・システム、機械制御、よりうがった仮説にもとづく利用者への質問や環境センシング、等）が必要となる場合に、
ホーン節の単一ヘッドのマッチからの手続的解釈を利用した前向き推論しか考えにくく、
多様な情報を契機としても情報としても十分に生かした効率的な前向き推論をする必要がある場合には、
著しく人間の労力（プログラミングコスト）と記述量が必要になっていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願２０１３−０８７００８
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、かかる問題に鑑み、
１）後ろ向き推論のための知識を前向き推論にも（わかりやすくかつ簡潔で少ない記述量で）活用できるようにして、ＡＩ用論理型プログラミングのコストを減らしてこれを普及しやすくすること
２）一般人にも親しみやすく、結論、効果、条件、事実等をテキスト的にも音声的にも表現／マッチしやすい形式の知識表現で上記１）を可能にして、論理プログラム中に一般人が固定的事実（ＦＡＣＴ）を事前準備するコスト、ルールのヘッドやボディを一般人が記述するコスト、前向き推論に与える一時的事実（一時文脈）を一般人が入力するコストを減らして、ＡＩ用論理型プログラミングとプログラム運用の総合コストを、さらに削減して、さらに普及しやすくすること
３）１）２）に付随した前向き推論及び後向き推論の機能面・性能面・記述効率面の高度化（気づきやすさ、わかりやすさ、使いやすさ、高速性、健全性、完全性、記述コスト削減、意味論の明確化、他システム等との連携性の向上）によりさらに普及しやすくすること
を目的とする。
【課題を解決するための手段】
【０００５】
かかる課題を解決するため、
本発明の請求項１は、  
複数ある条件の一部又は全部が成立した場合に所定の命題が成立したとみなす形式のルールを処理する
コンピュータプログラムであって
ルールの複数ある条件の一部に合致する情報が新たに得られたときに、
該ルールの他の条件の成立を自動探索して該ルールの該所定の命題の成立を自動確認するコンピュータプログラムを提供する。
これにより、後ろ向き推論用のルールを前向き推論に変換コスト無しまたはきわめて少ない変換コストで流用することができる。
このような形式の「ルール」の例としてはＰＲＯＬＯＧやそれを拡張・変形した論理記述言語のホーン節等を挙げることができる。
「該所定の命題が成立」した場合に、その命題の意味するレンダリング（動画、静止画、音声、テキスト表示、など）や、その成立を起点とした（＝「合致する情報が新たに得られた」こととした）再帰的なさらなる探索（これを「再帰的な前向き推論」と呼んでもよい）、分析、データベースの操作、等を実行するようにプログラムを構成してもよい。
これにより、より表現力（意味・イメージ等の）や論理展開力のある自動対話等を提供することができる。
なお、後ろ向き推論用のルールのうち前向き推論にも用いるルールを、プログラマが区切り記号（ＰＲＯＬＯＧの場合「：−」）の種類を変更（例えば、「：＝」を使う）して前向き推論にも用いるルールを他と区別できるように構成することが、推論の効率化にとって有利である。
また、本発明の請求項２は、
前記条件および前記所定の命題が、
自然言語に変数を埋め込むことを許容した形式で表現され、
前記合致する情報が、
自然言語の形式又は自然言語に変数を埋め込んだ形式で与えられることを特徴とする
コンピュータプログラムを提供する。
これにより、自然言語の音声合成や音声認識との親和性が高くなるとともに、関数や論理式（カッコやコンマや記号が多い）に慣れていない小学校低学年でも違和感なく推論用のルール（独自の／一般的な思考方法）を表現することができる。
自然言語に変数を埋め込むことを許容した形式の例としては、前述の特許文献の実施例等がある。
合致する情報が自然言語に変数を埋め込んだ形式で与えられることを許すことにより、ＤＯＮＴＣＡＲＥ（前向き推論の駆動に本質的ではなく、どのような値でもよいもの。たとえば、正午から０．０１秒ずれているかどうかや好景気の原因が円安か人口増加かなど）にあたる格についての情報が与えられない場合でも、それを変数のまま表現した文字列との単一化（ユニフィケーション）等により、結果として前向き推論を駆動することが可能となる。
また、本発明の請求項３は、
前記合致する情報と前記条件とを合致させる単一化によって得られる、該ルール側の変数束縛を
該ルールに波及して、より制限された形式での該所定の命題の成立を探索すること特徴とする
コンピュータプログラムを提供する。
例えば、新しい合致する情報「勇太は理解力がある」を、条件「＄Ｘは理解力がある」と単一化させる＄Ｘの束縛は「＄Ｘ＝勇太」であり、「＄Ｘはリーダーに適している：−＄Ｘは理解力がある」というルールの場合、この束縛を波及することにより、「勇太はリーダーに適している」という、「＄Ｘはリーダーに適している」よりも具体的な命題の成立を自動確認することができる。
すなわち、該新しい情報のより具体的な内容（例えば、主語が誰か）を反映した、より具体的な（情報量が多く曖昧性が少ない）命題の成立（さらに、より具体的なレンダリングやコマンド実行等）を自動確認することが可能になる。
また、探索空間を制限することにつながり、計算量の削減、応答の高速化にもつながる。
また、本発明の請求項４は、
前記合致する情報と前記条件とを合致させる単一化によって得られる、該合致する情報側の変数束縛を、
該合致する情報を与えた情報源に対して返すことを特徴とする
コンピュータプログラムを提供する。
ここで、「情報源」は、例えば、利用者や他のコンピュータであってよい。
例えば、「＄Ｘは＄Ｙが必要：−＄Ｘは＄Ｙを主食にしている；＄Ｙは穀物；」というルールの「＄Ｙは穀物」という条件に対し「米は＄Ａ」という「合致する情報」を単一化させて、ルール側変数束縛「＄Ｙ＝米」、合致する情報側変数束縛「＄Ａ＝穀物」、命題「日本人は米が必要」が得られた場合、にその命題の根拠として「米は穀物」という命題が関係していることを推測することができる。
これにより、情報源が、新たな情報による新たな命題の成立根拠等について、推論過程の全体を参照することなく、なんらかの手がかりを得ることが可能になる。
また、本発明の請求項５は、
前記単一化の対象となる、
一の合致する情報と一の条件からなる組について、
複数の変数束縛が可能である場合に、
そのいずれもについて独立して処理することを特徴とする
コンピュータプログラムを提供する。
ここで、「複数の変数束縛の可能性」とは、例えば、「＄Ａと＄Ｂは兄弟」という条件と「太郎と次郎と三郎は兄弟」という情報とを単一化する束縛がひととおりではなく、複数とおり（この場合、｛（＄Ａ＝太郎，＄Ｂ＝次郎と三郎）,（＄Ａ＝太郎と次郎、＄Ｂ＝三郎）｝）存在することをいう。
これにより、複数ある可能性をもらさずに条件の充足可能性を探索し（後ろ向き探索（推論）し）、その充足集合をベースとした網羅的な前向き探索（新たに確認（証明）できる命題の列挙）が可能となる。
また、本発明の請求項６は、
命題の成立を確認した場合に、
その命題を新たに得られた情報として、
コンピュータが記憶している一または複数の各ルールの
各条件の一部又は全部と合致するかを探索することにより、
該各ルールの各命題が成立するかを確認することを再帰的に繰り返すことを特徴とする、
コンピュータプログラムを提供する。
ここで「記憶している一または複数の各ルール」は、該命題の成立の確認に用いられたルールと同一のルールでも別のルールでもよい。
また、ルール上の当初の命題が変数を含んでいた場合には、その命題の成立前に合致を探索した条件との単一化過程で変数束縛が行われた結果として、その命題に含まれる変数も束縛された状態（典型的には、自然言語を表現する固定文字列）となっていることが好ましい。ただし、必ずしも束縛されておらず変数が残っている場合でも、恒真のトートロジー（例えば、「＄Ｘは＄Ｘと等しい」）などを言明する命題や、あいまいさ（変数が残っていること）が意味の本質に影響を与えない命題を、固定文字列と同様に処理すること（新たに得られた情報として再帰的な前向き推論のトリガーとする等）を制限するものではない。
これにより、新しい情報の意味や影響をより広く深く確認することができるようになる。
また、新しい情報の与え方があいまいであったり、少しずれていても、影響があるかもしれない内容を確認できることにつながる。
また、本発明の請求項７は、
同一または類似の条件の合致に対応して成立を確認できる複数の命題の列記をルールにおいて許容した
コンピュータプログラムを提供する。
「ルールにおいて許容」とは、例えば「所定の命題」を一つに限った伝統的なホーン節ではなく、複数の命題や効果をヘッド部に列記できる形式のルールを許容すること等を示す。
例えば、「＄Ｘは東洋に住む＆＄Ｘは北半球に住む：−＄Ｘは日本列島に住む；」は、「＆」区切りで、「＄Ｘは日本列島に住む」から演繹できる二つの命題「＄Ｘは東洋に住む」「＄Ｘは北半球に住む」を列記している。
なお、条件と命題（効果）の右辺と左辺を逆に、区切り文字も特別に表記することに取り決めて、「＄Ｘは日本列島に住む：＜＄Ｘは東洋に住む；＄Ｘは北半球に住む；」等とすることも可能である。
これにより、同一または類似の条件を充足するかについての計算の重複を効果的に回避することができ、前向き推論の効率の要素となる、条件を充足するかについての計算効率を高めることができる。
なお、「類似の条件」とは、例えば、ホーン節の右辺（ボディ）に相当する部分またはその一部が、表記ゆれを吸収する目的のＯＲ条件の列挙の場合（「＄Ｘが＄Ｙを溶かす｜＄Ｘが＄Ｙを溶解する」）や、同等の条件となるＯＲ条件の列挙の場合（「＄Ｘはラーメンが好き｜＄Ｘはうどんが好き｜＄Ｘはそばが好き｜＄Ｘはスパゲティが好き」）や、特定の正規表現の範疇に該当する場合など、さまざまな場合を想定しうる。
また、本発明の請求項８は、
類似の条件のうちの共通部分を根又は根に近い枝として、
類似の条件のうちの差異部分を根からより遠い枝として、
根から対応する枝までの条件の確認によって成立したとみなせる命題を葉として
枝分かれのあるツリー状にルールを表現した
請求項７に記載のコンピュータプログラムを提供する。
このような表現の例としては、対応する括弧のネストによって等価なツリーを表現した以下のようなものが考えられる。
Ａ：＜｛Ｂ｛Ｃ：Ｅ１｝｛Ｄ：Ｅ２｝｝｛Ｅ｛Ｆ｛Ｇ：Ｅ３｝｛Ｈ：Ｅ４｝｝｝｛Ｉ：Ｅ５｝｛Ｊ｛Ｋ：Ｅ６｝｛Ｌ：Ｅ７｝｛Ｅ８｝｝；
ここでは、
通常のホーン説と異なり、
Ａが根となる条件であり、
「：＜」が構文の区切りと当該種別を示す区切りであり、
命題（効果）Ｅ１の成立に達するまでの経路（必要条件集合）はＡ，Ｂ，Ｃとなり、
命題（効果）Ｅ２の成立に達するまでの経路（必要条件集合）はＡ，Ｂ，Ｄとなり、
命題（効果）Ｅ３の成立に達するまでの経路（必要条件集合）はＡ，Ｅ，Ｆ，Ｇとなり、
命題（効果）Ｅ４の成立に達するまでの経路（必要条件集合）はＡ，Ｅ，Ｆ，Ｈとなり、
命題（効果）Ｅ５の成立に達するまでの経路（必要条件集合）はＡ，Ｉとなり、
命題（効果）Ｅ６の成立に達するまでの経路（必要条件集合）はＡ，Ｊ，Ｋとなり、
命題（効果）Ｅ７の成立に達するまでの経路（必要条件集合）はＡ，Ｊ，Ｌとなる。
命題（効果）Ｅ８の成立に達するまでの経路（必要条件集合）はＡとなる。
これにより条件集合の共通部分の充足性の確認に用いた計算コストを無駄にせず、差異部分の充足性の計算も可能となり、共通部分を有する条件集合の充足性確認を効率化・高速化する。
なお、「合致する情報」と単一化させる「条件の一部」は、根であるＡのみとすることもでき、さらに途中の枝条件のいずれもとすることができる。また、このＡをパターン的な制限のない「＄Ｘ」（アスタリスク）などとすることで、あらゆるものを各枝とマッチさせてみることができる。
なお、多長一致に対応する点や、バックトラック又は同等の網羅的な処理を行える点や、手続き的解釈も可能な点は、通常のホーン節や前記特許文献における文法、解釈と同じである。
また、本発明の請求項９は、
ルールにおいて許容した同一または類似の条件の合致に対応して成立を確認できる複数の命題の列記が
好ましい手続きの順番に従っていることを特徴とする
請求項７に記載のコンピュータプログラムを提供する。
これにより、手続き的解釈により、成立を確認できる複数の命題間の手続き的な生起順序を再現した表示などが可能となる。
また、このようなルールは、合致させるルールを一つに絞るようにプログラミングすることにより、手続きの各ステップを再帰的にツリー状に展開することができ、このような場合にはさまざまな粒度の複雑なネストからなるステップをツリー状に定義し、実行時に、複雑な順序の手続き仕様にも対応した手続きを教え示したり場をコントロールしたりすることができる。
【０００６】
また、本発明の請求項１０は、
ルールにおいて許容した同一または類似の条件の合致に対応して成立を確認できる複数の命題の列記に
従った順番で
各命題について充足させるべきことを自動的に外部に要求しかつ充足を確認するまで待つことを特徴とする
請求項７又は９に記載のコンピュータプログラムを提供する。
これにより、逐次要求し要求した内容の充足を確認する監督作業等をコンピュータプログラムにある程度任せることが可能になる。
このようなルールは、合致させるルールを一つに絞ることにより、外部要求と充足確認の列を再帰的にツリー状に展開することができ、このような場合にはさまざまな粒度の複雑なネストからなるタスクをツリー状に定義し、実行時に、複雑な順序の要求充足仕様に対応した、外部への要求と充足の確認を待つことができる。
「外部」とは、人や動物やロボットや制御デバイスや環境要素（水位等）であってよく、充足の確認はそれらからの合図（信号、所作、生理、物理現象、自然現象、等）でなされてよい。
また、本発明の請求項１１は、
成立した条件の数が２以上の所定数（ルールにおいて「：２」等と指定するようにしてもよい）の場合に、
前記所定の命題が成立することとした
コンピュータプログラムを提供する。
ルールの区切り記号を「：２」とした場合は２以上、「：３」とした場合は３以上、・・・などとしてもよい。
これにより、風邪の診断において、「鼻水が出る」「のどが痛い」「頭がいたい」「せき・くしゃみがでる」の２つ以上の条件が成立していたら「たぶん風邪」と診断する、等という診断型前向き推論用の論理プログラムを簡潔に記述することができる。
また、本発明の請求項１２は、
成立した条件の数がちょうど１個の場合に、
前記所定の命題の成立を自動確認することを特徴とする
コンピュータプログラムを提供する。
これは、排他的論理和の定義に該当し、ルールの区切り記号を（：１）などとしてもよい。
これにより、前向き推論の前提となる排他的論理和が必要な条件を簡潔に表現することができる、前向き推論を低コストでコーディングすることができる。
また、本発明の請求項１３は、
成立した条件および成立した各条件に関連する各重みから計算した値が所定の閾値以上もしくは閾値以下または閾値を超えるもしくは閾値未満の場合に、前記所定の命題の成立を自動確認することを特徴とする
コンピュータプログラムを提供する。
これにより、二値（証明可能／証明不能または真／偽）や三値（証明可能／不明／偽を証明可能）だけでない途中の確信／確率の度合いを加味した、より定量的な精緻な推論も可能となる。
ここで、閾値、閾値との上下関係、各条件に関連する重み（例えば、条件自体の確信度や確率、もしくは、ルールにおいてそれらに掛け合わせる重み係数）は、ルールや事実（または一時文脈）に所定の書式で付記することができる。
例えば、「風邪／８０；インフルエンザ／１０ ：％５０＜ 鼻水が出る／２０；のどが痛い／３０；頭がいたい／３０；せき・くしゃみがでる／４０；」の意味は、特定の患者の一時文脈である事実が、「鼻水が出る」程度：５０、「のどが痛い」程度：３０、「頭がいたい」程度：９０、「せき・くしゃみがでる」程度：６０の場合に、（５０×２０＋３０×３０＋３０×９０＋４０×６０）／１００＝１０＋９＋２７＋２４＝７２が「％５０＜」の意味する「５０より大きい」を満たすので、命題の成立を７２の確信度で自動確認して、「風邪」程度：８０×７２／１００→「風邪」程度：５８（四捨五入）と「インフルエンザ」程度：１０×７２／１００→「インフルエンザ」程度：７（四捨五入）という新たな事実（一時文脈）を得ることになる。なお、ここでは、確信度形式であるが、確率形式と同様に、別の事象やルールから得た同一事実（同一患者についての関連一時文脈集合等における）の確信度については、Ｘ＋Ｙ−ＸＹ／１００を適用するほうが適切な場合がある。
また、本発明の請求項１４は、
前記所定の命題の成立を自動確認する際に、関連する一以上の命題に対して、関連づけた各命題の重みまたは各条件に関連する重みまたはその両方から得た値を各命題に関連づけて記憶することを特徴とする
請求項１３に記載のコンピュータプログラムを提供する。
これにより、ルールごとに異なる観点（条件集合）に対応した一以上の自動確認命題の確信度を簡便に定義することができる。
先に例として挙げた「風邪／８０；インフルエンザ／１０ ：％５０＜ 鼻水が出る／２０；のどが痛い／３０；頭がいたい／３０；せき・くしゃみがでる／４０；」の意味は、先述したとおりであり、確信度や確率のついた一時文脈（事実）を追加的に保持するとともに、それらをさらなる前向き推論の根拠とすることもできる。
なお、同一のルールが同一の根拠にもとづき無限ループを構成するように再帰的に発火して確信度が不当に上昇したり発散したりすることを防ぐために、どの事実にもとづきどのルールが発火したかの履歴を記憶しておき、同じ事実に基づいて同じルールが発火しないように制限することもできる。
また、本発明の請求項１５は、
ルールの複数ある条件の一部に合致する情報が新たに得られたときに、
同じルール内の真偽の証明できない条件について
利用者に真偽を確認する、又は、利用者に真もしくは偽とする変数束縛集合を確認する
ことを特徴とする
コンピュータプログラムを提供する。
これにより、特に、診断システムなどで、患者等についての一時文脈の少ない状態
（すなわち条件の真偽を証明できにくい状態）から、
利用者に確認すべき質問をルール単位で徐々に増やしていくことを可能にし、
よけいな質問応答（利用者確認）によるコミュニケーションコストや推論コストを回避することができる。
例えば、このようなルールを「：２？」で区切ったＰＲＯＬＯＧに似た次のような構文で表現した場合、
４つの条件のいずれかと合致する情報（一時文脈となる事実）の入力に応じてこのルールが起動され、
２つ以上の条件の成立を確認できるまで、
前から順番に「自動証明→できない場合は利用者確認（文脈追加も起こりうる）」を行うことになる。
「風邪  ：２？  鼻水が出る；のどが痛い；頭がいたい；せき・くしゃみがでる；」
また、本発明の請求項１６は、
ルールの複数ある条件の一部に合致する情報が新たに得られたときに、
同じルール内の対応する条件または命題（いずれも真偽を自動証明できないものに限る）について
利用者に真偽を確認する、又は、利用者に真もしくは偽とする変数束縛集合を確認する
ことを特徴とする
コンピュータプログラム。
これにより、特に、診断システムなどで、患者等についての一時文脈の少ない状態から、
利用者に確認すべき質問をルール単位で徐々に増やしていくことを可能にし、
よけいな質問応答（利用者確認）によるコミュニケーションコストや推論コストを回避することができる。
例えば、「Ａ：＜｛Ｂ｛Ｃ：Ｅ１｝｛Ｄ：Ｅ２｝｝｛Ｅ｛Ｆ｛Ｇ：Ｅ３｝｛Ｈ：Ｅ４｝｝｝｛Ｉ：Ｅ５｝｛Ｊ｛Ｋ：Ｅ６｝｛Ｌ：Ｅ７｝｛Ｅ８｝｝；」の例において、自動証明できない場合に利用者確認をおこないたい条件の前に「？」をつけることにした場合、
「Ａ：＜｛？Ｂ｛？Ｃ：Ｅ１｝｛？Ｄ：Ｅ２｝｝｛Ｅ｛？Ｆ｛Ｇ：Ｅ３｝｛Ｈ：Ｅ４｝｝｝｛？Ｉ：Ｅ５｝｛Ｊ｛Ｋ：Ｅ６｝｛Ｌ：Ｅ７｝｛？Ｅ８｝｝；」等となり、どこで利用者確認（質問応答）すべきかを効率的に明示することができる。
なお、「：？＜」等、「？」の含まれるルール内区切りによって、自動証明できないすべての条件について利用者確認をするプログラム言語仕様として取り決めてこれを実施するようにすることもできる。
また、本発明の請求項１７は、
請求項１から１６のいずれか一項に記載のコンピュータプログラムを用いた装置を提供する。
また、本発明の請求項１８は、
請求項１から１６のいずれか一項又は図２に記載のコンピュータプログラムを用いた方法を提供する。
【図面の簡単な説明】
【０００７】
【図１】本発明の論理プログラム（固定的な事実及びルール）、利用者によりすでに追加されている一時文脈、利用者により新たに追加されるデータ（一時文脈）、及び、前向き推論の結論として出力（音声、テキスト表示等）されかつ再帰的な前向き推論の種になりうる命題（変数が束縛されている）の例としての関係について説明する図である。
【図２】図１等を実施するためのコンピュータプログラムの最も基本的な処理フローチャート（方法としてのステップ）を説明する図である。
【図３】実施するコンピュータとしての一般的な構成を示す説明図である。
【発明を実施するための形態】
【０００８】
図１は、本発明の論理プログラム（固定的な事実及びルール）、利用者によりすでに追加されている一時文脈、利用者により新たに追加されるデータ（一時文脈）、及び、前向き推論の結論として出力（音声、テキスト表示等）されかつ再帰的な前向き推論の種になりうる命題（変数が束縛されている）の例としての関係について説明する図である。利用者が入力した新しい情報「Ａ子は喉痛」と下線の「＄Ｘは喉痛」とが合致することにより図２の前向き推論ステップが起動される。
図２は、図１等を実施するためのコンピュータプログラムの最も基本的な前向き推論の処理フローチャート（方法としてのステップ）を説明する図である。実際には、ステップ３の２において、特許文献１（出願公開済）で詳述している多長一致などの特別なユニフィケーション（単一化）やバックトラックを含む後ろ向き推論も行うことがさまざまな面で有利であるが、本明細書の主旨とは異なるので（また、通常のＰＲＯＬＯＧの探索でもある程度代用できるため）、ここでは詳述はしない（公開されているので参照されたい）。
図３は、実施するコンピュータとしての一般的な構成を示す説明図である。ここには本発明に固有の特徴はないため詳述はしない。
【実施例】
【０００９】
図１は、本発明の一実施例を示すものである。この知識表現は、特許文献１の発明を実施するためのものであり、条件の区切りは「；」となっている。また、ヘッドとボディの区切りは、３以上の条件の成立を必要とすることを示す「：３」となっている。ステップＳ１で、情報「Ａ子は喉痛」が入力され、ステップＳ２で、合致する条件が全ルールの条件部から検索され、ステップＳ３の１で、合致する束縛がルールのすべての＄Ｘに「＄Ｘ＝Ａ子」として波及する。ステップＳ３の２では、この場合に、固定的な事実として「日本」が論理プログラム内に既に存在するので、「：３」の３のうちの残り２以上の条件の成立を探索（論理プログラム及び一時文脈の範囲）により確認した時点でこのルールが発火できるとコンピュータが判断し、この場合には「Ａ子は風邪」という命題が一時文脈として格納・通知され（コンピュータが成立を自動確認）、かつ、ステップＳ４及びＳ５を介して新しい前向き推論ループ（Ｓ２〜Ｓ５）の種になることとなる。
【符号の説明】
【００１０】
４  本発明で用いられる一般的なコンピュータ（利用者専用のパーソナルコンピュータ、共有ファイルサーバー、Ｗｅｂサーバー）
４ａ〜４ｋ  一般的なコンピュータ４（利用者専用のパーソナルコンピュータ、等）の一般的な構成要素
１１  論理プログラム（固定的事実とルール）
１２  データ（すでに論理プログラムに隣接して配列型メモリに追加されている一時文脈）
１３  新しい事実（データ）（利用者により追加される一時文脈）
１４  右辺の３個以上の条件が成立したら左辺の命題の成立を自動確認（自動追加＆通知）するという意味のルール
１５  新しい結論（自動追加し利用者に通知され、再帰的な前向き推論の種として入力される一時文脈）
１６  再帰的な前向き推論の種として入力される経路（キューを介したもの）
Ｓ１  新しいデータＡの入力を受け付けて一時文脈として格納するステップ
Ｓ２  論理プログラム内の各ルールについてＡと合致する条件を探すステップ
Ｓ３  合致する条件を含む各ルールにおいて（順次でもよいので）実施するステップ
Ｓ４  キューにデータが存在するかの判断をしてない場合にＳ１に戻るステップ
Ｓ５  キューに存在するデータＡ´を新しいデータ（事実）ＡとしてＳ２に戻るステップ
【図１】
2018190180.tif 000003
【図２】
2018190180.tif 000004
【図３】
2018190180.tif 000005