(57)【要約】【課題】格納されるべきデータについて、データの格納とともに、データの構造に対する変更を許容し、かつ、格納されたデータ自体の有する演算式にしたがった演算機能を提供する。【解決手段】識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、対象情報を操作する処理部と、を備える情報処理装置である。そして、処理部は、積演算子を乗算演算子とし、和演算子を加算演算子とし、識別子間の演算を実行する代数演算部を有する。【選択図】図２２
2009110440.tif 000002
【特許請求の範囲】
【請求項１】
識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
前記対象情報を操作する処理部と、を備え、
前記処理部は、前記積演算子を代数の乗算演算子とし、前記和演算子を代数の加算演算子とし、前記識別子間の演算を実行する代数演算部を有する情報処理装置。
【請求項２】
前記対象情報は、見積処理の対象となる対象商品または対象サービスに含まれる、要素を識別する要素識別情報と前記要素の単価を示す数値と前記要素の提供量を示す数値とを有する要素情報を含み、
前記代数演算部は、複数の前記要素情報に含まれる数値に対して代数演算を実行する請求項１に記載の情報処理装置。
【請求項３】
前記処理部は、前記記憶手段に記憶された要素情報に対する数量の指定と、前記要素情報を複数含む組み合わせの指定と、その組み合わせに付与すべき識別子の指定とを受け付ける手段と、
前記要素情報と数量を示す数値とを積演算子によって結合し、前記数値が結合された複数の要素情報を和演算子によって組み合わせを構成し、前記指定された識別子を新たな要素識別子として前記組み合わせに付与することによって新たな要素情報を構成して前記記憶手段に格納する手段と、をさらに備える請求項２に記載の情報処理装置。
【請求項４】
前記対象商品または対象サービスに含まれる要素から抽出すべき要素識別子の指定を受け付ける手段と、
前記指定を受け付けた要素識別子を共通因子とする要素情報を抽出する手段と、をさらに備え、
前記要素情報においては、前記要素の単価を示す数値と貨幣単位を示す文字または文字列とを前記単価に該当する要素の提供量である単位量を示す文字または文字列で除算した形式で単価が記述され、前記提供量を示す数値と単位量を示す文字または文字列とを乗算した形式で提供量が記述され、
前記代数演算部は、前記要素情報の単価に含まれる数値と提供量に含まれる数値について乗算を適用し、除算した形式で記述された単位量を示す文字または文字列と前記乗算した形式で記述された単位量を示す文字または文字列とを約分し、同一の貨幣単位を示す文字または文字列を有する２以上の要素に含まれる数値に加算を適用し、
前記出力部は、前記加算された数値と通貨単位を示す文字または文字列とによって、前記指定を受け付けた要素の費用を出力する請求項２または３に記載の情報処理装置。
【請求項５】
前記要素情報が下位の要素情報によって構成される階層構造を２階層以上含み、
対象商品または対象サービスに含まれる要素情報または要素情報の組み合わせの指定を受ける手段をさらに備え、
前記代数演算部は、前記指定を受けた要素情報以下の階層に含まれる要素情報について、それぞれ要素情報に指定された数量を示す数値とそれぞれの要素情報に含まれる下位の要素情報の提供量を示す数値との乗算と、同一階層に含まれる複数の要素情報のうち、同一の貨幣単位を示す文字または文字列を有する２以上の要素に含まれる数値に対する加算とを実行する請求項２から４のいずれかに記載の情報処理装置。
【請求項６】
情報の入力を受け付ける入力部を接続可能なインターフェースと、
情報を出力する出力部を接続可能なインターフェースと、をさらに備え、
前記処理部は、前記入力部への入力を契機として、前記代数演算部の処理を実行し、前
記処理の完了後に処理結果を前記出力部に出力する請求項１から５のいずれかに記載の情報処理装置。
【請求項７】
識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
前記対象情報を操作する処理部と、を備えるコンピュータが、
前記積演算子を代数の乗算演算子とするステップと、
前記和演算子を代数の加算演算子とするステップと、
前記識別子間の演算を実行する代数演算ステップと、を実行する情報処理方法。
【請求項８】
前記対象情報は、見積処理の対象となる対象商品または対象サービスに含まれる、要素を識別する要素識別情報と前記要素の単価を示す数値と前記要素の提供量を示す数値とを有する要素情報を含み、
前記代数演算ステップでは、複数の前記要素情報に含まれる数値に対して代数演算が実行される請求項７に記載の情報処理方法。
【請求項９】
識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
前記対象情報を操作する処理部と、を備えるコンピュータに、
前記積演算子を代数の乗算演算子とするステップと、
前記和演算子を代数の加算演算子とするステップと、
前記識別子間の演算を実行する代数演算ステップと、を実行させるプログラム。
【請求項１０】
前記対象情報は、見積処理の対象となる対象商品または対象サービスに含まれる、要素を識別する要素識別情報と前記要素の単価を示す数値と前記要素の提供量を示す数値とを有する要素情報を含み、
前記代数演算ステップでは、複数の前記要素情報に含まれる数値に対して代数演算が実行される請求項９に記載のプログラム。
【請求項１１】
前記記憶手段に記憶された要素情報に対する数量の指定と、前記要素情報を複数含む組み合わせの指定と、その組み合わせに付与すべき識別子の指定とを受け付けるステップと、
前記要素情報と数量を示す数値とを積演算子によって結合し、前記数値が結合された複数の要素情報を和演算子によって組み合わせを構成し、前記指定された識別子を新たな要素識別子として前記組み合わせに付与することによって新たな要素情報を構成して前記記憶手段に格納するステップと、をさらに実行させる請求項１０に記載のプログラム。
【請求項１２】
前記対象商品または対象サービスに含まれる要素から抽出すべき要素識別子の指定を受け付けるステップと、
前記指定を受け付けた要素識別子を共通因子とする要素情報を抽出するステップと、をさらに備え、
前記要素情報においては、前記要素の単価を示す数値と貨幣単位を示す文字または文字列とを前記単価に該当する要素の提供量である単位量を示す文字または文字列で除算した形式で単価が記述され、前記提供量を示す数値と単位量を示す文字または文字列とを乗算した形式で提供量が記述され、
前記代数演算ステップは、前記要素情報の単価に含まれる数値と提供量に含まれる数値について乗算を適用し、除算された形式で記述された単位量を示す文字または文字列と前記乗算される形式で記述された単位量を示す文字または文字列とを約分し、同一の貨幣単
位を示す文字または文字列を有する２以上の要素に含まれる数値に加算を適用し、
前記出力ステップは、前記乗算または加算された数値と通貨単位を示す文字または文字列とによって、前記指定を受け付けた要素の費用を出力する請求項１０または１１に記載のプログラム。
【請求項１３】
前記要素情報が下位の要素情報によって構成される階層構造を２階層以上含み、
対象商品または対象サービスに含まれる要素情報または要素情報の組み合わせの指定を受けるステップをさらに実行させ、
前記代数演算ステップは、前記指定を受けた要素情報以下の階層に含まれる要素情報について、それぞれ要素情報に指定された数量を示す数値とそれぞれの要素情報に含まれる下位の要素情報の提供量を示す数値との乗算と、同一階層に含まれる複数の要素情報のうち、同一の貨幣単位を示す文字または文字列を有する２以上の要素に含まれる数値に対する加算とを実行させる請求項１０から１２のいずれかに記載のプログラム。
【請求項１４】
前記コンピュータは、情報の入力を受け付ける入力部を接続可能なインターフェースと、情報を出力する出力部を接続可能なインターフェースと、をさらに備え、
前記入力部への入力を契機として、前記代数演算ステップを実行させ、前記前記代数演算ステップの完了後に処理結果を出力させる請求項９から１３のいずれかに記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、事物をコンピュータで処理可能な所定の表現形式を用いて表現し、コンピュータの記憶装置に記憶し、コンピュータで処理することで、その事物を管理する情報処理技術に関する。
【背景技術】
【０００２】
ソフトウェアの開発プロセスは、要求分析、システム設計、実装、テスト、運用、およびメンテナンスの各段階により構成される。そして、ソフトウェア開発の最初のプロセスである、要求分析は特に重要である。なぜなら、最初の要求分析が不十分であると、それ以降のシステム設計、実装段階において、顧客の要求が正しく反映されていないなどの支障をきたすからである。例えばシステムのテスト段階で不具合が発見された場合においても、再度プログラムを修正する必要が生じる。また、大規模な修正が必要な場合には、システム設計を初めからやり直すなどの必要も生じる。しかし、プログラムの修正やシステム設計を最初からやり直しには、時間と労力がかる。その結果、コストが増大するといった問題も生ずる。また、たとえ最初の要求分析が十分であった場合においても、事業活動等様々な変化に対応させるためにはその後のメンテナンスが不可欠であるが、メンテナンスにも時間と労力がかかり、結果としてコストの増大を招くといった問題を生じている。
【０００３】
ソフトウェアの開発の一例として、例えばデータベースシステムの開発が例示される。データベースシステムの開発とは、顧客の業務内容をヒアリングして、管理すべきデータ項目を洗い出し、それらの項目を関連付け、利用者が検索しやすいようなビューを設計し、顧客ニーズに合ったデータベースを構築することである。優れたデータベースを構築するためには、概念設計の段階からデータ構造を解析しておく必要がある。データとして管理すべき実体および属性、実体間の関連を洗い出し、正確に分析することが重要になる。
【０００４】
このような観点から開発された既存のデータベースのデータモデルとして、正規化表構造によるリレーショナルモデルや、ノードに属性を持つツリー構造で表現されるオブジェクト指向モデルが知られている。しかし、例えばリレーショナルモデルでは、関係をどのように定義するかは設計者の自由であるため、実装ごとに異なるシステムが生成されることになる。したがって、リレーショナルモデルに基づいて実装された複数のシステムを統合するためには、統合すべき構成要素の組み合わせ数に応じた作業工程が必要となり、システム統合に相当な時間と労力を費やす場合あるといった問題を生じていた。
【特許文献１】特開２００５−９２８５５号公報
【特許文献２】国際公開公報ＷＯ２００７／０８８９８２
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、従来の情報処理技術では、格納されるべきデータの構造が事前に設計されている必要あった。したがって、データの格納された後にデータの構造を変更することは極めて困難であった。また、従来の情報処理技術では、例えば、格納される個々のデータに対して、未処理状態で個別の演算式を組み込んでおくことはできなかった。例えば、リレーショナルモデルにおいて、第１のレコードについて、適用されるべき未処理の第１の演算と第１のデータを格納し、第２のレコードについて、適用されるべき未処理の第２の演算と第２のデータを格納しておくことはできなかった。
【０００６】
ここでは、格納されるべきデータについて、データの格納とともに、データの構造に対する変更を許容し、かつ、格納された個々のデータ自体の有する演算式にしたがった演算
機能を提供する。
【課題を解決するための手段】
【０００７】
本発明は前記課題を解決するために、以下の手段を採用した。すなわち、本発明は、識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、対象情報を操作する処理部と、を備える情報処理装置である。そして、処理部は、積演算子を代数の乗算演算子とし、和演算子を代数の加算演算子とし、識別子間の演算を実行する代数演算部を有する。このような構成によって、本情報処理装置は、積演算子と和演算子とによる情報の記憶と、記憶された情報の代数演算による演算処理とを実現する。
【０００８】
対象情報は、見積処理の対象となる対象商品または対象サービスに含まれる、要素を識別する要素識別情報と要素の単価を示す数値と要素の提供量を示す数値とを有する要素情報を含み、代数演算部は、複数の要素情報に含まれる数値に対して代数演算を実行する。このような構成により本情報処理装置は、要素を識別する要素識別情報と要素の単価と前記要素の提供量とによって対象商品または対象サービスに係る情報を記憶するとともに、その代数演算による価格の見積を実現する。
【発明の効果】
【０００９】
本発明によれば、格納されるべきデータについて、データの格納とともに、データの構造に対する変更を許容し、かつ、格納された個々のデータ自体の有する演算式にしたがった演算を実行できる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明を実施するための最良の形態（以下、実施形態という）に係る設計支援装置について説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１１】
《データ構造の概要》
本情報処理装置は、情報を集合レベル、トポロジー空間レベル、接着空間レベル、およびセル空間レベルというデータ構造の複雑さの異なるレベルで表現する。データ構造が複雑になればなるほど、表現される情報と情報との間の関連付け、あるいは、情報と情報との拘束が増加する。
【００１２】
例えば、集合レベルは、情報が項（以下、要素ともいう）を組み合わせた集合情報として記述される。それぞれの集合情報は、集合ＩＤで識別される。また、トポロジー空間レベルでは、項または集合を組み合わせたトポロジー空間情報として情報が記述される。それぞれのトポロジー空間情報は、トポロジーＩＤで識別される。
【００１３】
すなわち、集合レベルは、単なる項の組み合わせであるのに対し、トポロジー空間レベルは、集合情報の組み合わせを含む点で、より複雑となっている。本実施形態では、この場合に、集合レベルは、トポロジー空間レベルよりも抽象度が高い、ともいう。ただし、トポロジー空間情報は、単一の集合情報をも含む。すなわち、トポロジー空間レベルは、集合レベルの性質をそのまま有している。本実施形態では、この意味で、トポロジー空間レベルは、集合レベルの特性を継承している、という。
【００１４】
接着空間レベルは、集合情報またはトポロジー空間情報のいずれか２つ以上（以下、被接着情報）を接着した情報を含む。接着とは、本実施形態にて提案する概念であり、２つの被接着情報のそれぞれのデータ構造を維持した上で、被接着情報を互いに結合する機能
である。接着においては、２つの被接着情報のそれぞれに含まれる情報で、互い関係付けられる情報が指定される。そして、その関係付けられた情報同士を介して、２つの被接着情報が結合される。接着は、例えば、人の行為である伝票にメモを張り付ける行為をコンピュータ上で実現したものとなる。すなわち、伝票ＩＤ、伝票に含まれる項目、および伝票内の位置情報からなるデータ構造と、メモＩＤおよびメモ内容である文字列情報からなるデータ構造があったときに、伝票上の位置情報と、メモＩＤとを関連づけ、接着演算を実行することにより、伝票上の指定された位置にメモが添付された状態をコンピュータ上で表現できる。接着された２つの被接着情報は、また、分離することもできる。ただし、接着空間の情報は、それぞれの被接着情報の特性、すなわち、集合レベル、あるいは、トポロジー空間レベルの特性をそのまま有している。そのため、接着空間の情報は、これらのレベルを継承しているという。
【００１５】
セル空間レベルとは、属性と値とを含むデータ構造が定義された情報であり、集合情報、トポロジー空間情報、および接着された情報をさらに複雑にしたものといえる。この点で、逆に、集合情報、トポロジー空間情報、および、これらが接着された情報は、セル空間の情報よりも抽象度が高いともいう。ただし、セル空間レベルの集合は、集合レベル、トポロジー空間レベル、および接着空間レベルの特性を有することができ、その意味で、これらのレベルを継承しているという。
【００１６】
よってセル空間が定義される（つまり空間に属性，値の意味が付加される）セル空間レベルならば，一般的なトポロジー空間のレベルよりも抽象度が低いと見なされる．
本情報処理装置は、抽象度に応じた各レベルの所定の表現形式によって表現される情報が格納される記憶手段と、前記情報を処理する処理手段と、を備える。そして、前記記憶手段には、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および前記因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報が記憶される。さらに、対象情報は、前記組み合わせ中の項の順序を維持して前記項の組み合わせを関係付けることによって因子または新たな項を構成する順序構成演算子と、前記組み合わせ中の項の順序を維持しないで前記項の組み合わせを関係付けることによって因子または新たな項を構成する集合因子構成演算子と、を含んでもよい。
【００１７】
以下、本情報処理装置の記憶手段に記憶され、本情報処理装置で処理される情報を対象情報という。対象情報は、識別子、因子、項（要素）、集合情報、トポロジー空間情報、接着された情報、セル空間の情報を含む。対象情報をオブジェクト情報とも呼ぶ。ただし、本実施形態でのオブジェクト情報は、いわゆるオブジェクト指向データベース、オブジェクト指向言語、オブジェクト指向設計等でいうオブジェクトとは、概念が異なる。そこで、以下では、もっぱらオブジェクト情報という代わりに、対象情報と呼ぶことにする。
【００１８】
また、本実施形態では、項の組み合わせから因子を構成する集合因子構成演算子および順序構成演算子が使用される。集合因子構成演算子は、第一の括弧“（）”により表現される。また、順序構成演算子は第二の括弧“｛｝”により表現される。
【００１９】
本発明によれば、対象情報を所定の表現形式のデータとして記憶手段に格納し、これに所定のプログラムに基づいて処理を実行することができる。その結果、異なる対象情報同士の情報の一貫性を図るとともに新たな様々な対象情報のデータベース化および処理が可能な情報処理装置を提供することが可能となる。また、従来のリレーショナルモデルやオブジェクト指向モデルでは、対応できないデータに対応することができるシステムを開発することができる。
【００２０】
記憶手段は、抽象度に応じた各レベルの所定の表現形式によって表現される対象情報を
例えばテキストファイルとして格納する。記憶手段は、前記対象情報を十分に格納できる容量を有するものであればよく、ハードディスク等がこれに該当する。対象情報とは、システム開発におけるデータベースを構成するすべての情報を含むものである。例えば既存のデータモデルの正規化表構造を構成するレコードの構成要素や正規化表構造では入力不可能なデータ構造も含む。正規化表構造では入力不可能な情報とは、例えば正規化表構造で表現されるようなデータがある場合に、これに付箋のような前記正規化表構造とは全く関連性のない、すなわち属性の定義のない対象情報を意味する。また、この対象情報は、本情報処理装置の処理を実行することによりその抽象度が変化することを特徴とする。すなわち、あるレベルで入力された対象情報は、本情報処理装置の処理が実行されることによりそのレベルが変化する。そして、そのレベルが変化しても対象情報は、変化前と同一の演算によって、取り扱うことができる。すなわち、対象情報は、抽象レベルが変化しても対象情報の性質には一貫性が保たれるので、同一の演算による操作が可能である。したがって、ある抽象度で格納された対象情報、すなわちデータは本情報処理装置の処理が実行されることにより様々なレベルに変化する。また、上述のように全く関連性のないデータも入力してこれを関連付けることが可能である。したがって、異なる抽象度のレベルにおいて、情報の性質の一貫性が保たれるとともに、新たな様々な事物を示す情報のデータベース化およびデータベース化された情報に対する演算処理が可能となる。
【００２１】
前記対象情報は、記号、識別子、第一の括弧および第二の括弧により表現される因子と、前記因子の積によって表現される項と、前記項の和によって表現される式と、により構成することができる。式を構成する項、および項を構成する因子は、前記対象情報を構成する最小単位である識別子と、前記処理手段において１として処理される単位元εと、前記処理手段において０として処理される零元Φとにより構成することができる。前記第一の括弧は、（）により表現することができる。また、前記第二の括弧は｛｝により表現することができる。このように本発明によれば、対象情報が非常に簡単なデータ構造で表現されている。したがって、高度な技術を有さないユーザであっても容易に理解することが可能となる。
【００２２】
前記第一の括弧と前記第二の括弧は演算時の強さが異なる。演算時の強さが異なるとは、前記処理手段の処理を実行する際の展開順序が異なることを意味する。項は、前述した因子の積によって表現され、積は×により表現することができる。本実施形態では、積を構成する因子に、可換律は、成立しない。すなわち、ａ×ｂとｂ×ａは、同一とは見なされない。また、式は前記項の和によって表現され、和は＋により表現することができる。本実施形態では、和を構成する項に、可換律が、成立する。すなわち、ａ＋ｂとｂ＋ａは、同一とは見なされる。以上より、例えばある対象情報は数１のように表現することができる。
（ａ＋ｂ）×｛ｃ＋ｄ＋ｅ｝＋ｆ｛ｇ＋ｈ｝×｛ｉ＋ｊ｝・・・（数１）
上記数１で表現される対象情報は、第一の項の（ａ＋ｂ）×｛ｃ＋ｄ＋ｅ｝と、第二の項のｆ｛ｇ＋ｈ｝×｛ｉ＋ｊ｝により構成されている。すなわち、数１は第一の項と第二の項との和により構成されている。次に、第一の項と第二の項のそれぞれについてみると、第一の項は、第一の因子の（ａ＋ｂ）と、第二の因子の｛ｃ＋ｄ＋ｅ｝とにより構成されている。また、第二の項についてみると、第三の因子のｆと、第四の因子の｛ｇ＋ｈ｝と、第五の因子の｛ｉ＋ｊ｝とにより構成されている。なお、上記数１において、“ｆ”の後に、積演算子“×”を明示し、“ｆ×”としてもよい。そして第一の因子から第五の因子のそれぞれについてみると、第一の因子は、第一の括弧と識別子ａおよびｂにより構成されている。また、第二の因子は第二の括弧と識別子ｃ、ｄおよびｅにより構成され、第三の因子は識別子ｆにより構成され、第四の因子は第二の括弧と識別子ｇおよびｆにより構成され、第五の因子は第二の括弧と識別子ｉおよびｊにより構成されている。なお、括弧の中は換言すると再帰的に式になっている。例えば、上記のうち（ａ＋ｂ）についてみると、括弧の中は再帰的に式ａ＋ｂになっている。すなわち、上記式は項としての識別
子ａと項としての識別子ｂの和によってなっている。このように、式は、（）または｛｝、およびその両方が複数回入れ子になった構造を含むことができる。
【００２３】
対象情報は、上記のように因子、項からなる式で表現される。そしてこのように表現された対象情報は、例えばテキストファイルとして前記記憶手段に格納される。なお、記憶手段への対象情報の格納、換言すると入力はユーザ操作に応答して実行される。この入力時に、グラフィカルユーザインターフェースを用いたユーザインターフェース部を提供してもよい。簡易的には、テキストエディタで、識別子、項、あるいは、項の和を入力するようにしてもよい。情報処理手段は、記憶手段に格納されたその対象情報を処理する。これにより、前記対象情報の抽象度を変化させることが可能となる。
【００２４】
本情報処理装置対象は、前記対象情報を展開する展開手段と、前記対象情報から部分集合を取得する部分集合取得手段と、前記対象情報についてホモトピー保存処理を実行するホモトピー保存処理手段と、異なる対象情報を構成する前記因子間における同値関係の対応に基づき該因子同士を接着して新たな空間である接着空間を作成する接着空間作成手段と、前記対象情報を分割する商空間作成手段と、のうち少なくともいずれか一つを有する。これにより、前記対象情報の抽象度を様々な状態に変化させることが可能となる。
【００２５】
展開手段は、前記対象情報を展開する。前記展開手段は、前記対象情報を前記項または前記因子の単位に分解する分解手段と、前記因子間で集合演算処理をし、集合演算処理後の新たな項を設定する項設定手段と、前記第一の括弧および第二の括弧で括られた因子を再帰的に展開処理する再帰的展開処理手段と、により構成することができる。そして、例えば上述した数１で表現される対象情報を展開処理すると数２のようになる。
（ａ＋ｂ）×｛ｃ＋ｄ＋ｅ｝＋ｆ｛ｇ＋ｈ｝×｛ｉ＋ｊ｝
→（ａ｛ｃ＋ｄ＋ｅ｝＋ｂ｛ｃ＋ｄ＋ｅ｝）＋｛ｆ×ｇ＋ｆ×ｈ｝×｛ｉ＋ｊ｝
→（｛ａ×ｃ＋ａ×ｄ＋ａ×ｅ｝＋｛ｂ×ｃ＋ｂ×ｄ＋ｂ×ｅ｝）＋｛ｆ×ｇ×ｉ＋ｆ×ｈ×ｊ｝
→ａ×ｃ＋ａ×ｄ＋ａ×ｅ＋ｂ×ｃ＋ｂ×ｄ＋ｂ×ｅ＋ｆ×ｇ×ｉ＋ｆ×ｈ×ｊ・・・（数２）
すなわち、まず、第一の項を構成する第一の因子と第二の因子が展開する。次に、第一の因子の一番左の識別子であるａと第二の因子を構成する一番左の識別子ｃが掛け合わせる。次に、ｄ、ｅの順に掛け合わせて展開する。そして、第一の因子の左から２番目の識別子、換言すると右側の識別子であるｂと第二の因子を構成する一番左の識別子ｃが掛け合わせる。その後、ｄ、ｅの順に掛け合わせて展開する。一方、第二の項については、まず第二の括弧で括られている第四の因子と同じく第二の括弧で括られている第五の因子を掛け合わせる。なお、第二の括弧は、第一の括弧とは異なり因子の順序ごとに積を作成しその和を出力する展開が行われる。すなわち、まず第四の因子を構成する一番左の識別子ｇと第五の因子を構成する一番左の識別子ｉの積を作成する。次に、第四の因子を構成する左から２番目の識別子であるｈと第五の因子を構成する左から２番目の識別子であるｊの積を作成し、これらの和として出力する。更に第三の因子を構成する識別子ｆと掛け合わせて展開する。
【００２６】
このような展開処理を行うことにより、数１で表現される前記対象情報は、対象情報の最小単位である識別子の積とこれらの和によって表現されることになる。すなわち、展開手段による展開を実行することにより集合で表現することが可能となる。つまりは、展開処理手段を備えることで前記対象情報の抽象度を高くすることが可能となる。
【００２７】
部分集合取得手段は、部分集合を取得する。これにより、前記対象情報の中から部分集合を取得することが可能となる。例えば、数３で表現される対象情報について、ａについての部分集合を取得すると数４で表現される対象情報となる。
ａ×ｃ＋ａ×ｄ＋ａ×ｅ＋ｂ×ｃ＋ｂ×ｄ＋ｂ×ｅ＋ｆ×ｇ×ｉ＋ｆ×ｈ×ｊ・・・（数３）
ａ（ｃ＋ｄ＋ｅ）＋ｂ×ｃ＋ｂ×ｄ＋ｂ×ｅ＋ｆ×ｇ×ｉ＋ｆ×ｈ×ｊ・・・（数４）
接着空間作成手段は、異なる対象情報を構成する前記因子間における同値関係の対応に基づき該因子同士を接着する。その結果、新たな空間である接着空間を作成することができる。接着空間作成手段を備えることで、前記対象情報が異なる空間を表現するものであっても、同値関係にある因子を介して関連付け新たな空間を設計することが可能となる。
【００２８】
ホモトピー保存処理手段は、前記対象情報についてホモトピー保存処理を実行する。ホモトピー保存処理は、対象情報に対する演算結果とともに、演算前の対象情報、適用された演算、および、演算時に使用されたパラメータを記憶する機能である。これにより、前記処理手段の処理実行前の前記対象情報の状態を取得することが可能となる。そして、例えばホモトピー保存処理手段による処理の実行は数５のように表すことができる。
ａ（ｂ＋ｃ）
↓Ｈ
（ａ×ｂ＋ａ×ｃ）＝Ｆ（ａ（ｂ＋ｃ）＋ε）・・・（数５）
数５におけるＦは、本情報処理装置１００で規定した「展開」という演算をを表す識別子である。また、εは、値“１”を表す記号であり、Ｆの演算において、値“１”が使用されたことを示している。すなわち、展開処理を実行した後の状態を表す、対象情報（ａ×ｂ＋ａ×ｃ）は、ａ（ｂ＋ｃ）を展開処理したものであることを意味する。このように、ホモトピー保存処理を実行することによって、前記格納処理手段に格納される対象情報は処理前の状態についても保存されているため、対象情報の過去の状態を取得することが可能となる。
【００２９】
本発明に係る情報記憶装置において、前記各レベルは、前記対象情報が最も抽象度が高く表現される集合レベルと、前記集合レベルよりも前記対象情報の抽象度が低く表現され、該対象情報が部分集合によって表現されるトポロジー空間レベルと、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現され、該トポロジー空間レベルにおける前記対象情報同士が接着される接着空間レベルと、前記接着空間レベルよりも前記対象情報の抽象度が低く表現され、前記トポロジー空間における前記対象情報が所定の属性をもって表現されるセル空間レベルと、を有するものとしてもよい。
【００３０】
ここで、抽象度が高いとは、対象情報同士の関係、あるいは、関連を示す情報が少ないことをいう。
【００３１】
例えば、集合レベルは、前記対象情報の抽象度が最も高く表現されるものである。集合レベルにおける対象情報（以下、集合の対象情報ともいう）は対象情報の最小単位である識別子の積を項としてこれらの和からなる式によって表現される。なお、集合レベルには、他の抽象度の低いレベルから展開処理手段の展開処理を実行することにより移行することができる。また、前記記憶手段に格納する際に集合レベルで入力することとしてもよい。
【００３２】
トポロジー空間レベルは、前記集合レベルよりも前記対象情報の抽象度が低く表現される。また、対象情報の部分集合を要素として扱うことによって表現される。ただし、部分集合が１つの場合も、トポロジー空間レベルである。例えば前記対象情報が集合レベルで表現されている場合に、前述した部分集合取得手段の部分集合取得処理を実行する。すると集合レベルで表現されている対象情報は、トポロジー空間レベルに移行されることになる。
【００３３】
接着空間レベルは、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現
される。すなわち、接着空間レベルは、該トポロジー空間レベルにおける前記対象情報同士が同値関係を基準に結合されることで表現されるものである。前記トポロジー空間レベルで表現されている異なる２以上の対象情報に前述した接着手段の接着処理手段を実行することで新たな空間レベル、すなわち接着空間レベルへ移行することが可能となる。
【００３４】
セル空間レベルは、トポロジー空間レベルの情報の式表現のうち、特定の式表現に限定して、属性と属性値の関係を定義できるようにしたものである。したがって、当然、セル空間レベルはトポロジー空間レベルの性質、および、機能を有している。この点で、セル空間レベルはトポロジーレベルの１ケースである。
【００３５】
このように、セル空間レベルの情報と、トポロジー空間レベルの情報とは、式表現の形式上は、差異がない。すなわち、セル空間レベルの情報は、セル空間ＩＤと属性の定義を示す因子とで括り出された部分集合の式表現と見なせるからである。セル空間レベルの情報は、セル空間ＩＤと属性の定義を示す因子に、セル空間ＩＤという意味、および属性の定義という意味を付加することで、形成される。この意味で、セル空間レベルの情報は、トポロジー空間レベルの情報の特殊ケースである。また、特殊ケースという意味で、セル空間レベルは、トポロジー空間レベルよりも、抽象度が低いともいえる。一方、そのような意味づけを解消すれば、セル空間レベルの情報は、同一の式表現のまま、トポロジー空間レベルの情報となる。
【００３６】
さらに、セル空間レベルの情報は、前述した展開手段の展開処理を実行することにより、集合レベルに移行されることもできる。すなわち、すべての括弧を展開すればよい。
【００３７】
なお、このセル空間レベルの属性は、通常は、アプリケーションプログラムによって定義されるものである。したがって、本情報処理装置では、セル空間レベルの情報は、アプリケーションプログラムのユーザインターフェースを通じて入力されることを想定している。
【００３８】
また、本実施形態では、セル空間レベルは、接着空間レベルの性質、および、機能も有していることとした。したがって、セル空間レベルの複数の対象情報を接着することができる。これは、逆に、セル空間レベルの情報を接着した接着空間レベルの情報は、セル空間レベルの性質、機能を有しているといえる。
【００３９】
本発明に係る情報記憶装置において、前記各レベルは、前記情報処理手段による処理の実行前の状態を所定の形式によって表現することにより処理前の状態に戻すことが可能なホモトピーレベルをさらに有するものとしてもよい。
【００４０】
ホモトピーレベルは、前記情報処理手段による処理の実行後の状態が実行前の状態を含んだ状態で所定の表現形式で表現されることで処理前の状態に戻すことが可能な空間である。ホモトピーレベルでは、例えば、式１で示される対象情報が、演算Ｐによって、式２に変換されたときに、「式２＝式１に演算Ｐを実行」のように記述される。したがって、演算前のレベルには、前述したホモトピー保存処理を実行することにより移行することができる。なお、ホモトピーレベルは、前述した他の空間レベルとは本質的に異なる。すなわち、他の空間レベルは、上述したように対象情報の抽象度によって段階的に表現される空間である。しかし、ホモトピーレベルは他の空間レベルのそれぞれと常に行き来が可能な空間である。換言すると、ホモトピーレベルは、前述した各空間レベル間の移動を補助する空間であるといえる。ホモトピーレベルを前述した各空間レベルと併用することにより、前記対象情報に対する処理前の状態を取得することが可能となるからである。
【００４１】
次に、図面に基づいて基本システムを説明する。
【００４２】
《基本システム》
（装置構成）
図１は、基本システムである情報処理装置１００の構成を示すブロック図である。同図に示すように、情報処理装置１００は、対象情報を入力するキーボード、ポインティングデバイス等の入力部１１（本発明の入力部に相当）と、入力された対象情報を格納するメモリ１２（本発明の記憶部に相当）と、対象情報を所定のプログラムに基づいて処理するＣＰＵ１３（本発明の処理部に相当）と、入力された対象情報や処理後の対象情報を出力するディスプレイ等の出力部１４（本発明の出力部に相当）と、ＣＰＵ１３と入力部１１との間を接続するインターフェース１５と、ＣＰＵ１３と出力部１４との間を接続するインターフェース１６とを備える構成である。
【００４３】
インターフェース１５は、例えば、ＵＳＢ（Universal Serial Bus）等のシリアルインターフェースである。また、インターフェース１６は、例えば、ＲＧＢ（赤、緑、青）の画像信号および同期クロックの出力インターフェースである。
【００４４】
ただし、図１では、省略されているが、情報処理装置１００は、大容量のデータを保存する外部記憶装置であるハードディスク、着脱可能な記憶媒体（例えば、ＣＤ（Compact disc）、ＤＶＤ（Digital Versatile Disk）、フラッシュメモリカード等）の駆動装置、ネットワークにアクセスし他の情報処理装置と通信する通信インターフェース等を含んでよい。
【００４５】
情報処理装置１００は、典型的には、パーソナルコンピュータ、サーバ等のコンピュータである。ただし、情報処理装置１００は、そのようなコンピュータに限定されるものではなく、例えば、携帯情報端末、携帯電話、ＰＨＳ（Personal Handyphone System）、デジタルテレビ、デジタルテレビのチューナあるいはセットトップボックス、ハードディスクを含むテレビジョンの録画装置、車載用の端末等として実現できる。また、メモリ１２は、揮発性のＤＲＡＭ（Dynamic Random Access Memory）、不揮発性のＥＰＲＯＭ（Erasable Programmable Read Only Memory）、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、フラッシュメモリ等を含む。
【００４６】
本情報処理装置の機能は、ＣＰＵ１３がプログラムを実行することで実現される。このプログラムは、メモリ１３あるいは不図示の外部記憶装置にインストールされる。プログラムは、通信インターフェースを通じてネットワークから、あるいは、着脱可能な記憶媒体からインストールされる。したがって、このプログラムは、ネットワークあるいは着脱可能な記憶媒体等を通じて流通される。
【００４７】
また、メモリ１２あるいは不図示の外部記憶装置に格納された対象情報は、ＣＰＵ１３が所定のプログラムを実行することによって各レベルを移行する。なお、各レベルとは、前記対象情報の抽象度が最も高く表現される集合レベル２２と、前記集合レベル２２よりも前記対象情報の抽象度が低く表現され、該対象情報が部分集合を要素として表現されるトポロジー空間レベル２３と、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現され、該トポロジー空間レベルにおける前記対象情報同士が接着される接着空間レベル２４と、前記トポロジー空間における前記対象情報が所定の属性をもって表現されるセル空間レベル２５と、前記情報処理手段による処理の実行前の状態を所定の形式によって表現することにより処理前の状態に戻すことが可能なホモトピーレベル２１と、を有する。また、本実施形態では、セル空間レベル２５は、前記接着空間レベルよりも前記対象情報の抽象度が低いものとして定義する。すなわち、セル空間レベルは、接着空間レベルの情報に、属性と属性値の意味づけを加えたものである、と解することにする。
（データ構造）
次に、第１の実施形態に係る情報処理装置１００のメモリ１２に格納される対象情報の構造、すなわちデータ構造について説明する。なお、本実施形態の情報処理装置１００は、以下のデータ構造によって、処理対象のデータを記述し、記憶し、演算処理を行う。
【００４８】
（１）対象情報の構成要素
本情報処理装置は、対象情報を式の形式で表現する。式は、和演算子“＋”、積演算子“×”、第１の括弧“（”“）”、および第２の括弧“｛”“｝”によって記述される。第１の括弧が本発明の集合因子構成演算子に相当する。また、第２の括弧が本発明の順序構成演算子に相当する。このような対象情報の表現形式を式表現とも呼ぶ。
【００４９】
式は、１以上の識別子を含む。識別子は、記号または記号列で表現される。本実施形態では、記号として、英数字、および特殊文字（ただし、和演算子“＋”、積演算子“×”、第１の括弧“（”“）”、および第２の括弧“｛”“｝”を除外する）を用いることとする。ただし、記号は、一般的にアルファベットとも呼ばれ、必ずしも、これらの文字には限定されない。
【００５０】
本実施形態では、特殊な識別子として、Φおよびεを用いる。Φは、値ゼロ、和演算子において演算結果を変化させない値、または空集合を示す識別子である。本実施形態では、Φを零元と呼ぶ。また、εは、値１、あるいは、積演算子において演算結果を変化させない値である。本実施形態では、εを単位元と呼ぶ。なお、Φを和演算の単位元と呼ぶ場合もあるが、本実施形態では、Φを零元と呼ぶことにする。
【００５１】
また、本情報処理装置は、所定の識別子を、演算を表す予約語として使用する。例えば、Ｆ（式）は、式を展開する演算であり、Ｇ（式＋ａｔｔａｃｈ(因子１＋因子２)）は、接着演算を示す予約語（ａｔｔａｃｈは、そのときのパラメータを示す予約語）であり、Ｈは、ホモトピー保存処理を示す予約語である。これらの予約語については、ユーザは、通常の識別子として使用することができない、という点で制限がある。
【００５２】
本実施形態では、以下の規則によって対象情報、すなわち、識別子、因子、項（要素ともいう）、集合情報、ホモトピー情報、接着空間の情報、およびセル空間の情報が定義を記述する式表現が生成される。
（ａ）識別子、単位元、および零元はいずれも式表現、すなわち、対象情報を記述する表現である。
（ｂ）ｒとｓとがともに、式表現である場合、ｒ＋ｓも式表現である。
（ｃ）ｒとｓとがともに、式表現である場合、ｒ×ｓも式表現である。この場合、演算の結合の強さは、通常の代数と同様に、ｒ×ｓの方が、ｒ＋ｓよりも強い。
（ｄ）ｒが式表現である場合、（ｒ）、｛ｓ｝も式表現である。
【００５３】
（２）式表現の代数的構造
本実施形態において、式表現ｒ、ｓ、ｔ、ｙは、次の代数の性質を有する。
（ａ）結合律
ｒ＋（ｓ＋ｔ）＝（ｒ＋ｓ）＋ｔ；ｒ×（ｓ×ｔ）＝（ｒ×ｓ）×ｔ；
（ｂ）可換律
ｒ＋ｓ＝ｓ＋ｒ；
なお、本実施形態の式表現では、積演算子の可換律は成立しない。したがって、積演算子で複数の因子が結合されている場合に、個々の因子位置が情報（あるいは意味）を持つ。すなわち、因子は、いわゆる位置を指定してされた位置パラメータとしての機能を有する。「積演算子の可換律は成立しない」ことは、本発明の積演算子が「順序を持つ因子の列として複数の識別子を結合する」ことに相当する。
（ｃ）積演算の単位元
ｒ×ε＝ε×ｒ＝ｒ；
（ｄ）積演算、和演算の零元
ｒ×Φ＝Φ×ｒ＝Φ；ｒ＋Φ＝ｒ；
（ｅ）分配率
ｒ×（ｓ＋ｔ）＝ｒ×ｓ＋ｒ×ｔ；（ｒ＋ｓ）×ｔ＝ｒ×ｔ＋ｓ×ｔ；
（ｆ）
｛ｒ＋ｓ｝×｛ｔ＋ｕ｝＝｛ｒ×ｔ＋ｓ×ｕ｝；
（３）集合情報
集合情報は、項の組み合わせ、あるいは、項の和として、定義される。ここで、それぞれの項は集合ＩＤ（本発明の第１の識別因子に相当）となる識別子と値となる識別子の積、すなわち、集合ＩＤ×値として定義される。ただし、値は、複数の識別子の積であってもよい。集合の情報の式表現は、典型的には、集合ＩＤ×値１＋集合ＩＤ×値２＋・・・である。集合情報の例として、以下のものを挙げることができる。
【００５４】
上述のように、本実施形態のデータ構造では、和演算子に可換律が成立することから、集合情報は、順序のない項の組み合わせということができる。一方、項を構成する因子間の位置関係は維持されることになる。
【００５５】
このような因子間の位置関係の維持機能は、コンピュータ上で事物、あるいは、概念を表現する場合に、極めて大きな効果を発揮する。すなわち、一般的に、事物、あるいは概念を記述する修飾関係には、可換律が成立しない。例えば、”児玉の机”は、”机の児玉”と意味が異なる。
【００５６】
本実施形態の因子と積演算子によれば、このような修飾関係を極めて単純化して、記述することができる。さらに、そのような修飾関係で記述された項を和演算子によって組み合わせることで事物の集合、あるいは、概念の集合を記述し、極めて単純な形式のデータベースを構築できる。
【００５７】
さらにまた、管理対象の事物あるいは概念を項の集合として管理する場合に、項における因子の位置関係に意味を付与することもできる。また、項を構成する因子は、それぞれ、いわゆる位置パラメータとしての意義を有するということもできる。
【００５８】
例えば、集合情報が、果物×任意形状×任意色×バナナ＋果物×任意形状×任意色×りんご＋果物×細長×黄色×バナナ＋果物×丸×赤×リンゴという集合情報を考える。この場合、項の第１因子は、集合ＩＤである果物であり、第２因子は形状示し、第３因子は色を示し、第４因子は名称を示す。このように、それぞれの因子の位置に意味上の制限を加えて使用することで、属性と属性値との関係を集合レベルでも処理できることを示している。本情報処理装置では、集合情報は、このような順序が維持された因子によって事物の属性を自在に定義することができ、そのような項の組み合わせによって、事物の集合をコンピュータ上に表現する。
（例）
Ａ×ａ１＋Ａ×ａ２＋Ａ×ａ３、ｂ１×Ｂ＋ｂ２×Ｂ×Ｂ、果物×リンゴ＋果物×バナナ＋果物×ミカン、野菜×キャベツ＋野菜×キュウリ＋野菜×ゴボウ、社員×Ａ＋社員×Ｂ＋社員×Ｃ
すなわち、集合情報は、集合ＩＤで識別される集合に所属する項の組み合わせを記述し、メモリ１２に記憶される。この場合、社員Ｃが退職し、社員Ｄと社員Ｅが入社した場合には、社員×Ａ＋社員×Ｂ＋社員×Ｃのようにメモリ１２に格納される。
【００５９】
（４）トポロジー空間情報
トポロジー空間情報は、トポロジーＩＤ（本発明の第２の識別因子に相当）となる識別
子と部分集合の和との積によって以下のように記述される。すなわち、トポロジーＩＤ×（部分集合の和）である。ここで、部分集合は、部分集合を識別する部分集合ＩＤと、その部分集合に含まれる項の和との積で表現される。すなわち、部分集合ＩＤ×（項の和）である。ただし、項には、さらに項の和を第１の括弧“（）”または第２の括弧”｛｝”で組み合わせたもの、およびそれらの積が含まれてもよい。
（例）トポロジー空間情報の例は、
Ｔ×（ＡＢＣ×（ａｂ１＋ａｃ２＋ｂｃ３）＋Ａ×（ａｂ１＋ａｃ２）＋Ｂ×（ａｂ１＋ｂｃ３）＋Ｃ（ａｃ２＋ｂｃ３））、
果物×（全種×（リンゴ＋バナナ＋ミカン）＋赤×リンゴ＋黄×（バナナ＋ミカン））、果物×（全種×（リンゴ＋バナナ＋ミカン）＋丸×（リンゴ＋ミカン）＋細長×バナナ）、
野菜×（全種×（大根＋キュウリ＋ゴボウ）＋太×大根＋細×（キュウリ＋ゴボウ））、会社×（社員×（社員１＋社員２＋社員３＋社員４）＋営業×（社員１＋社員２）＋経理×（社員３＋社員４））、等である（この例で、読点“、”は、式の構成要素ではなく、例の区切りである）。この場合に、最後の例について、例えば、総務が新設され、社員５が採用され、総務に配属された場合には、会社×（社員×（社員１＋社員２＋社員３＋社員４＋社員５）＋営業×（社員１＋社員２）＋経理×（社員３＋社員４）＋総務×社員５）のように記述し、メモリ１２に格納できる。
（５）接着空間情報
接着空間情報は、トポロジー空間情報に含まれる２つの部分集合Ｘ（本発明の第１の被接着情報に相当）と部分集合Ｙ（本発明の第２の被接着情報に相当）に対して、それぞれの部分に含まれる部分集合を関係付けることで構成される。本実施形態では、この関係付けによって発生する関係を同値関係という。
【００６０】
今、トポロジー空間情報Ｔ（トポロジーＩＤは、Ｔｉｄ）およびトポロジー空間情報Ｕ（トポロジーＩＤは、Ｙｉｄ）が、トポロジー空間情報Ｔｉｄ×（Ｔに属する部分集合の和）＋トポロジー空間情報Ｕｉｄ×（Ｕに属する部分集合の和）としてメモリ１２に記憶されているとする。
【００６１】
さらに、Ｔに属する部分集合の和＝部分集合Ｔ０＋部分集合Ｔ−Ｔ０と２つの部分集合に分離できるとする。その場合、本情報処理装置では、トポロジー空間情報Ｔとトポロジー空間情報Ｕとを関連づけるトポロジー空間情報Ｔの因子ｐ（本発明の第１の同値因子に相当）と、トポロジー空間情報Ｕの因子ｑ（本発明の第２の同値因子に相当）が指定される。そして、トポロジー空間情報Ｔが、因子ｐを含む部分集合Ｔ０（本発明の第１の関連項に相当）と、因子ｐを含まない部分集合Ｔ−Ｔ０に分離される。ここで、Ｔ−Ｔ０は、集合Ｔから集合Ｔ０を削除した差集合である。また、トポロジー空間情報Ｕが、因子ｑを含む部分集合Ｕ０（本発明の第２の関連項に相当）と、因子ｑを含まない部分集合Ｕ−Ｕ０に分離される。ここで、Ｕ−Ｕ０は、集合Ｕから集合Ｕ０を削除した差集合である。
【００６２】
この場合に、上記２つのトポロジー空間情報ＴとＵの和は、トポロジー空間情報Ｔｉｄ×（部分集合Ｔ０）＋トポロジー空間情報Ｔｉｄ×（部分集合Ｔ−Ｔ０）＋トポロジー空間情報Ｕｉｄ×（部分集合Ｕ０）＋トポロジー空間情報Ｕｉｄ×（部分集合Ｕ−Ｕ０）と表現される。このように、集合から特定の因子ｐを含む部分集合を取り出した場合に、これを商と呼ぶ。また、その商を除く部分集合を剰余という。
【００６３】
さらに、部分集合Ｔ０＝Ｔ０ｉｄ×（Ｔ０の項の和）、部分集合Ｕ０＝Ｕ０ｉｄ×（Ｕ０の項の和）と記述されているとする。この場合に、部分集合Ｔ０と部分集合Ｕ０とを関係付けることによって、以下の接着空間情報を構成できる。すなわち、この場合の接着空間情報は、｛部分集合Ｔ０におけるｐの左因子＋部分集合Ｕ０におけるqの左因子｝｛p+q｝｛部分集合Ｔ０におけるｐの右因子＋部分集合Ｕ０におけるqの右因子｝＋トポロジー
空間情報Ｔｉｄ×（部分集合Ｔ−Ｔ０）＋トポロジー空間情報Ｕｉｄ×（部分集合Ｕ−Ｕ０）、である。ここで、部分集合Ｔ０におけるｐの左因子および部分集合Ｔ０におけるｐの右因子が、ともに、本発明の第１の被接着因子に相当する。また、部分集合Ｕ０におけるqの左因子および部分集合Ｕ０におけるqの右因子が、ともに、本発明の第２の被接着因子に相当する。
【００６４】
なお、ここでは、トポロジー空間レベルの情報を接着する場合を説明したが、トポロジー空間レベルの情報に、属性と属性値が定義されて構成されるセル空間レベルの情報、および、項の組み合わせである集合レベルの集合情報に対しても、接着空間情報が定義できる。また、トポロジー空間、セル空間、集合空間のうち、一のレベルの情報と、他のレベルの情報とについて接着空間情報を定義できる。
（例）
今、以下のような果物のトポロジー空間情報と、野菜のトポロジー空間情報の和、すなわち、果物×（全種×（リンゴ＋バナナ＋ミカン）＋丸×（リンゴ＋ミカン）＋細長×バナナ）＋野菜×（全種×（大根＋キュウリ＋ゴボウ）＋太×大根＋細×（キュウリ＋ゴボウ））がメモリ１２に記憶されているとする。
【００６５】
ここで、果物のトポロジー空間情報の因子である細長と、野菜のトポロジー空間情報の部分集合である因子細との関連づけが指定され、同値関係にあるとする。この場合に、２つのトポロジー空間情報は、それぞれ次のように商と剰余とに分離される。すなわち、それぞれの集合情報が商と剰余に分離されたトポロジー空間情報は、
果物×細長×バナナ
＋果物×（全種×（リンゴ＋バナナ＋ミカン）＋丸×（リンゴ＋ミカン））
＋野菜×細×（キュウリ＋ゴボウ）
＋野菜×（全種×（大根＋キュウリ＋ゴボウ）＋太×大根）
となる。
【００６６】
そして、同値関係が指定された細長と、野菜のトポロジー空間情報の部分集合である細とによって、接着空間情報が
｛果物＋野菜｝×｛細長＋細｝｛バナナ＋（キュウリ＋ゴボウ）｝
＋果物×（全種×（リンゴ＋バナナ＋ミカン）＋丸×（リンゴ＋ミカン））
＋野菜×（全種×（大根＋キュウリ＋ゴボウ）＋太×大根）、のように構成される。
【００６７】
このようにして、接着空間情報は、２つのトポロジー空間情報の構造を維持した状態で、関係付けが指定された同値関係にある因子を基に結合されている。接着空間情報より、”細”と”細長”に同値関係が認められれば，右の因子”バナナ”と”（キュウリ＋ゴボウ）”を｛バナナ＋（キュウリ＋ゴボウ）｝として関連づけて出力できる。
【００６８】
また、  伝票ＩＤ１枚目（Ａ｛ε＋Ｂ＋Ｃ｛Ｃ１＋Ｃ２｝＋Ｄ＋Ｅ｛Ｅ１＋Ｅ２｝｝（ａ｛ε＋ｂ＋ｃ｛ｃ１＋ｃ２｝＋ｄ＋ｅ｛ｅ１＋ｅ２｝｝＋位置（右上＋右下）））
＋伝票ＩＤ２枚目（Ａ｛ε＋Ｂ＋Ｃ｛Ｃ１＋Ｃ２｝＋Ｄ＋Ｅ｛Ｅ１＋Ｅ２｝｝（ａ｛ε＋ｂ＋ｃ｛ｃ１＋ｃ２｝＋ｄ＋ｅ｛ｅ１＋ｅ２｝｝））
＋MEMO（１（あいう）＋２（ABC））
＋・・・という伝票の束、およびメモＭＥＭＯを記述する情報がメモリ１２に格納されていた場合を考える。ここで、ＭＥＭＯを１枚目の伝票の右上に、位置を指定して張り付ける例を示す。
【００６９】
この例で，MEMOの１を１枚目の伝票の右上に張り付けるには，まず、ＭＥＭＯ情報の因子”１”，伝票１枚目の情報の因子”右上”でそれぞれ商空間が作成される。
伝票ＩＤ１枚目（Ａ｛ε＋Ｂ＋Ｃ｛Ｃ１＋Ｃ２｝＋Ｄ＋Ｅ｛Ｅ１＋Ｅ２｝｝（ａ｛ε＋ｂ
＋ｃ｛ｃ１＋ｃ２｝＋ｄ＋ｅ｛ｅ１＋ｅ２｝｝＋位置（右下）））＋伝票ＩＤ１枚目×位置（右上）
＋伝票ＩＤ２枚目（Ａ｛ε＋Ｂ＋Ｃ｛Ｃ１＋Ｃ２｝＋Ｄ＋Ｅ｛Ｅ１＋Ｅ２｝｝（ａ｛ε＋ｂ＋ｃ｛ｃ１＋ｃ２｝＋ｄ＋ｅ｛ｅ１＋ｅ２｝｝））
＋MEMO（２（ABC））＋MEMO（１（あいう））
＋・・・
ここで，”１”と”右上”の関係付けを指定し接着すると、接着情報は、
｛伝票ＩＤ１枚目×位置＋MEMO｝｛右上＋１｝｛ε＋（あいう）｝＋剰余の部分集合を含む情報、として構成される。このように、接着情報は、相互に構造上の共通性がない２つの対象情報について、それぞれの接着前の構造を維持した状態で、２つの対象情報結合し、メモリ１２に格納することができる。
（６）セル空間情報
セル空間情報は、事物の属性とその属性に対応する属性値とを有する情報である。属性は、キー属性とその他の属性とに分かれる。キー属性は属性値によって情報が識別できる属性である。セル空間情報で、属性値（またはその並び）は、インスタンスと呼ばれ、従来のデータベースのレコードに相当する。それぞれのインスタンスは、インスタンスＩＤと呼ぶ識別情報を有する。また、キー属性、あるいは、その他の属性が複数個ある場合には、キー属性、あるいは、その他の属性は、第２の括弧“｛”と“｝”とによって順序が維持された因子の形式で記述される。すなわち、いわゆるベクトル形式にて属性とその対応する属性値が記述される。
【００７０】
セル空間情報は、セル空間ＩＤ（本発明のセル空間識別子に相当）と、キー属性の因子と、単位元およびキー属性以外の属性を含む属性を有する因子と、インスタンスの集合を有する因子とを含む。セル空間情報は、
セル空間ＩＤ×（キー属性×｛ε＋（その他の属性の和）｝
×（（インスタンスＩＤ×｛ε＋（値の和）｝）の和））
で構成される。
【００７１】
このキー属性の因子と単位元およびキー属性以外の属性を含む属性を有する因子とが、本発明の属性因子に相当する。また、｛ε＋（その他の属性の和）｝の中のいずれかの属性が複数の識別子の積からなる場合に、そのような識別子の積からなる属性が、本発明の属性の順序列に相当する。また、そのような属性が、第２の括弧“｛｝”で括られた因子である場合に、その第２の括弧で括られた属性が、本発明の属性の順序因子に相当する。
【００７２】
また、そのような属性に対応して、インスタンスの｛ε＋（値の和）｝中の値が、識別子の積からなるときに、その値が、本発明の値列に相当する。また、値が、第２の括弧“｛｝”で括られた因子である場合に、その第２の括弧で括られた値が、本発明の値の順序因子に相当する。
（例）
セル空間情報の例は、
果物ｉｄ×（名前｛ε＋形＋色｝（リンゴ｛ε＋丸＋赤｝＋ミカン｛ε＋丸＋黄｝＋バナナ｛ε＋細長＋黄｝））
＋野菜ｉｄ×（名前｛ε＋形状＋色｝（大根｛ε＋太＋白｝＋キュウリ｛ε＋細＋緑｝＋ゴボウ｛ε＋細＋茶｝））
で示すことができる。この例では、従来のリレーショナルモデルで、果物テーブル、野菜テーブルとして記述されていた情報が、式表現で記述される。なお、この例は、２つのセル空間情報（果物と野菜）を含むことから、統合セル空間情報とも呼ばれる。
【００７３】
この統合セル空間情報の処理例を示す。まず、果物のインスタンスのうち、属性“形”が“細長”の値を持つインスタンスとの部分集合（商という）と、その他のインスタンス
の部分集合（剰余という）とを作成する。また、まず、野菜のインスタンスのうち、属性“形状”が“細”の値を持つインスタンス（商という）と、その他のインスタンス（剰余という）とに分離する。この場合、結合セル空間情報は、
果物ｉｄ×バナナ×形×細長
＋野菜ｉｄ×形状×（キュウリ＋ゴボウ）細
＋果物ｉｄ×（名前｛ε＋形＋色｝（リンゴ｛ε＋丸＋赤｝＋ミカン｛ε＋丸＋黄｝＋バナナ｛ε＋黄｝））
＋野菜ｉｄ×（名前｛ε＋形状＋色｝（大根｛ε＋太＋白｝＋キュウリ｛ε＋緑｝＋ゴボウ｛ε＋茶｝））
となる。次に、果物のうちの属性“形”が値“細長”を有する部分集合と、野菜のうちの属性“形状”が値“細”を有する部分集合との関係付けを指定し、同値関係を設定する。そして、この同値関係によって接着空間情報を作成すると、
｛果物ｉｄ×形×バナナ＋野菜ｉｄ×形状×（キュウリ＋ゴボウ）｝｛細長＋細｝｛ε＋ε｝
＋果物ｉｄ×（名前｛ε＋形＋色｝（リンゴ｛ε＋丸＋赤｝＋ミカン｛ε＋丸＋黄｝＋バナナ｛ε＋黄｝））
＋野菜ｉｄ×（名前｛ε＋形状＋色｝（大根｛ε＋太＋白｝＋キュウリ｛ε＋緑｝＋ゴボウ｛ε＋茶｝））
となる。
（記述例）
以下、従来のデータ構造である表およびツリー構造が、本実施形態のデータ構造でどのように記述できるかを示す。
【００７４】
図３は、第１の実施形態に係る情報処理装置１００のメモリ１２に格納されるセル空間情報の第一のデータ構造例を示す。同図に示すように、第１の実施形態に係る情報処理装置１００では、従来正規化表構造として表形式で表現される対象情報は、表現形式１の状態でメモリ１２に格納することができる。表現形式１で、Ａは、キー属性（例えば社員番号等）、Ｂ，Ｃ，Ｄ，Ｅ等は、その他の属性（例えば、氏名、性別、入社年、所属部署等）である。
【００７５】
図２は、第１の実施形態に係る情報処理装置１００のメモリ１２に格納されるセル空間情報の第二のデータ構造例を示す。同図に示すように、第１の実施形態に係る情報処理装置１００では、従来ツリー構造として表現される対象情報は、表現形式２又は３でメモリ１２に格納することができる。そして、同図に示すように有向グラフの一部としてのツリー構造について対応可能である。表現形式２で、ａは、例えば、動物、ｂはほ乳類、ｃは魚類、ｄは人、ｅは鯨、ｆはマグロ、ｇは鯉等である。この場合、ｂ（ほ乳類）およびｃ（魚類）は、ａ（動物）の属性、例えば、食する、呼吸する等を継承する。ｂ（ほ乳類）およびｃ（魚類）の共通の属性は、ａ（動物）に定義される。
【００７６】
したがって、本実施形態の式表現によって、フレーム等の知識ベース、あるいは、オブジェクト指向データベース等を記述し、メモリ１２に格納できる。情報処理装置１００は、これらに対応する事物に関する情報の入力を入力部１１から受け付け、対応する情報を生成し、メモリ１２に格納し、メモリから読み出し、出力部１４に出力できる。
【００７７】
また、逆ツリー構造で表現される対象情報についても、表現形式３のようにメモリ１２に格納することができる。逆ツリー情報は、基本的な情報からより複雑な情報を構成する場合に適用できる。表現形式３では、例えば、ａはＣＰＵであり、ｂはインターフェースであり、ｃは外部記憶装置の駆動部であり、ｄはＣＰＵボードであり、ｅは外部記憶装置であり、ｆはパーソナルコンピュータである。
【００７８】
このように逆ツリー構造は、製品の設計書、事業の工程管理図等、基本情報からより複雑な情報を組み上げて管理することができる。したがって、本実施形態の式表現によって、製品の設計情報、事業の工程等を記述し、メモリ１２に格納できる。情報処理装置１００は、これらに対応する事物に関する情報の入力を入力部１１から受け付け、対応する情報を生成し、メモリ１２に格納し、メモリから読み出し、出力部１４に出力できる。
【００７９】
図４は、第１の実施形態に係る情報処理装置１００のメモリ１２に格納される第三のデータ構造例を示す。同図に示すように、第１の実施形態に係る情報処理装置１００では、非正規化表構造と属性のない対象情報についても図４の状態でメモリ１２に格納することができる。ここで、非正規化表構造と属性のない対象情報とは、図４に示すように伝票を示す対象情報と、その対象情報に追加される付箋メモに相当する対象情報とが例示できる。接着処理を実行し、接着空間を作成することで、コンピュータ上で伝票に付箋メモの内容を添付することと同等の処理が実現される。
【００８０】
なお、伝票の種類ごとにテーブルに格納する場合には、リレーショナルモデルによって従来のデータベースで情報を管理できる。しかしながら、伝票の種類数が変動する場合、既存の伝票の構成が変更された場合には、リレーショナルモデルでは、対応できない。
【００８１】
ここで、本発明に係る所定の表現形式、すなわちデータ構造についてより詳細に上記図４の形式に基づいて説明する。ＩＤまたはｉｄ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）は、格納される対象情報を識別するものである。そしてこの対象情報は、識別子Ａ〜Ｅ２，ａ〜ｅ２と、演算時の結合強さが異なる第一の括弧（）および第二の括弧｛｝と、これらにより表現される因子｛Ｃ１＋Ｃ２｝，｛Ｅ１＋Ｅ２｝等と、これら因子の積によって表現される項Ｅ｛Ｅ１＋Ｅ２｝等と、前記項の和によって表現される式と、により構成される。なお、本実施形態では、項を要素ともいう。また、すでに述べたように、単位元εは、所定の処理を実行した場合に１として処理される記号である。上記以外の特別な記号として、所定の処理を実行した場合に０として処理される零元Φが存在する。このような状態でメモリ１２に格納された対象情報は、ＣＰＵ１３が所定のプログラムを実行することによって、入力装置１１から入力された伝票データにしたがって、生成され、メモリ１２に格納され、部分集合に分離され、他の部分集合と接着され、あるいは、検索されることになる。
【００８２】
図４の例では、インスタンスとして、伝票ＩＤ１で示される１枚目の伝票、伝票ＩＤ２で示される２枚目の伝票、およびＭＥＭＯで示されるメモが例示されている。また、この場合に、１枚目の伝票と２枚目以降の伝票で、項目の構成が異なっても構わない。本情報処理装置１００は、対象情報を構成する識別子、あるいは項に、個々に属性を付与できるので、異なる属性の並びを有する異なる識別子、あるいは項を自在に記憶し、検索し、変更できる。また、｛｝内に、＋識別子の形式で追加するとともに、属性に対応する値を追加すれば、データベースとして運用中においても、自在に属性と属性値とを追加、変更、削除できる。したがって、本実施形態のデータ構造によれば、情報処理装置１００が取り扱うデータを柔軟に変更でき、厳密、正確なファイル設計の必要性が軽減される。
（基本演算手順）
図５に、本情報処理装置におけるプログラム構成を示す。本情報処理装置１００は、例えば、データを格納し、検索し、変更し、表示するデータベースシステム等、様々事物を管理するシステムに適用できる。その場合、個々の管理対象に応じた機能は、アプリケーションプログラムＡＰとして提供される。すなわち、アプリケーションプログラムは、入力部１１から入力されたデータをメモリ１２あるいは外部記憶装置に格納し、これらに格納されたデータにアクセスし、検索し、出力部１４に表示する。
【００８３】
一方、アプリケーションプログラムがメモリ１２あるいは、外部記憶装置に格納するデ
ータの生成、格納、検索等の機能は、上述の式表現を処理する共通関数ライブライリが提供する。共通関数ライブラリは、アプリケーションインターフェースを備えており、アプリケーションプログラムへのこれらの機能、あるいは、サービスを提供する。以下、本情報処理装置１００で典型的な共通関数の例を説明する。これらの共通関数は、プリミティブ関数、あるいは、基本演算とも呼ばれる。
【００８４】
アプリケーションプログラムからそれぞれの共通関数が呼び出されたときに、本発明の処理手段に相当するＣＰＵ１３が以下の処理を実行する。
【００８５】
（１）積結合演算
積結合演算では、ＣＰＵ１３は、識別子と識別子とを積演算子によって接続する。積結合演算を実行するＣＰＵ１３が本発明の積演算部に相当する。この場合、識別子自体が式表現であり、識別子が接続された結果も式表現となる。積結合演算のアプリケーションインターフェースは、例えば、戻り値＝connect(因子１、因子２、演算結果)；のように定
義できる。本実施形態では、式表現が文字列で記述されるので、“因子１”、“因子２”、および“演算結果”は、いずれも文字列である。因子１、および因子２として、識別子、複数の識別子を積結合演算で結合した式表現、第１の括弧“（）”で囲まれた式表現、第２の括弧“｛｝”で囲まれた式表現、ε、およびΦを指定できる。積結合演算では、演算結果には、因子１×因子２が返される。すなわち、因子１と因子２との結合は、記号“×”（以下、積記号）で記述される。すなわち、積結合演算は、因子１と因子２との積演算による演算式を形成する。
【００８６】
一方、図９で説明する積演算では、因子１と因子２との積を実行する。因子１と因子２に、第１の括弧“（）”および第２の括弧“｛｝”のいずれもが含まれていない場合には、積結合演算と積演算の結果は、同一である。因子１と因子２に、第１の括弧“（）”および第２の括弧“｛｝”のいずれかが含まれている場合には、積演算の結果は、それの括弧内の項と、括弧外の因子との演算となる。
【００８７】
また、戻り値は、処理が正常終了したか否かを示す情報である。ただし、本実施形態では、戻り値の設定処理についての説明は、省略する。
【００８８】
（２）和演算
和演算では、ＣＰＵ１３は、識別子および因子の列として接続された複数の識別子のいずれかまたは両方から項の組み合わせを構成する。和演算を実行するＣＰＵ１３が本発明の和演算部に相当する。この場合、識別子あるいは因子が式表現であるので、項の組み合わせも式表現となる。和演算のアプリケーションインターフェースは、例えば、戻り値＝add(項１、項２、演算結果)；のように定義できる。演算結果には、項１＋項２が返され
る。すなわち、項１と項２との和は、記号“＋”（以下、和記号）で記述される。
【００８９】
（３）項抽出処理、因子抽出処理
項抽出演算では、ＣＰＵ１３は、和記号“＋”で組み合わせられた複数の項から、いずれかの項を取り出す。本実施形態では、複数の項のうち、先頭の項を取り出す。項抽出処理のアプリケーションインターフェースは、例えば、戻り値＝getterm(式表現、演算結果)；のように定義できる。項抽出処理を実行するＣＰＵ１３が本発明の項抽出部に相当す
る。
【００９０】
同様に、因子抽出演算では、ＣＰＵ１３は、積記号“×”で組み合わせられた複数の因子の並びから、いずれかの因子を取り出す。本実施形態では、複数の因子のうち、先頭の因子を取り出す。因子抽出処理のアプリケーションインターフェースは、戻り値＝getfactor(式表現、演算結果)；のように定義できる。因子抽出処理を実行するＣＰＵ１３が本
発明の因子抽出部に相当する。
【００９１】
（４）集合構成処理
集合構成処理では、ＣＰＵ１３は、和記号“＋”で組み合わせられた複数の項を第１の括弧“（）”で括る処理を実行する。集合構成処理のアプリケーションインターフェースは、例えば、戻り値＝putin1(式表現、演算結果)；のように定義できる。演算結果には、（式表現）が返される。集合構成処理を実行するＣＰＵ１３が本発明の集合因子構成部に相当する。
【００９２】
（５）集合展開処理
集合展開処理では、ＣＰＵ１３は、第１の括弧“（）”で括られた式表現から、第１の括弧“（）”を取り除く処理を実行する。集合展開処理のアプリケーションインターフェースは、例えば、戻り値＝putoff1(式表現、演算結果)；のように定義できる。集合展開
処理を実行するＣＰＵ１３が本発明の集合因子展開部に相当する。
【００９３】
（６）順序構成処理
順序構成処理では、ＣＰＵ１３は、和記号“＋”で組み合わせられた複数の項を第２の括弧“｛｝”で括る処理を実行する。集合構成処理のアプリケーションインターフェースは、例えば、戻り値＝putin2(式表現、演算結果)；のように定義できる。順序構成処理を実行するＣＰＵ１３が本発明の順序生成部に相当する。
【００９４】
（７）順序展開
順序展開処理では、ＣＰＵ１３は、第２の括弧“｛｝”で括られた式表現から、第２の括弧“｛｝”を取り除く処理を実行する。集合展開処理のアプリケーションインターフェースは、例えば、戻り値＝putoff2(式表現、演算結果)；のように定義できる。順序展開
処理を実行するＣＰＵ１３が本発明の順序展開部に相当する。
【００９５】
（８）共通因子括りだし処理
共通因子括りだし処理では、ＣＰＵ１３は、第１の括弧“｛｝”または第２の括弧“（）”が付加された項の組み合わせに含まれる項から共通の因子を抽出する。共通因子括りだし処理のアプリケーションインターフェースは、例えば、戻り値＝and(式表現、演算結果)；のように定義できる。ここで、式表現には、複数の項が和記号で組み合わせられた
式である。共通因子括りだし処理を実行するＣＰＵ１３が本発明の括り出し部に相当する。
【００９６】
（９）横方向展開処理
横方向展開処理は、横方向展開処理とは第一または第二の括弧を一回外す、すなわち展開する処理である。横方向展開処理のアプリケーションインターフェースは、例えば、戻り値＝expand1(展開前の式表現、展開後の式表現)；のように定義できる。
【００９７】
図６Ａは、横方向展開処理を実行する処理のフローを示す。具体的には、ステップＳ１０１では、対象情報（“展開前の式表現”）が入力される。すなわち、メモリ１２に対象情報が例えばユーザにより入力される。そして、ＣＰＵ１３は、入力された式表現を展開前の式表現に指定して、共通関数expand1が実行される。
【００９８】
以下、対象情報として数６に示すデータを用いた場合について説明する。なお、項の数および因子の数は、左から順に第一、第二のように割り当てられるものとし、２重、３重の括弧で括られている場合には、最も外側の括弧を第一として扱うものとする。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２））・・・（数６）
ステップＳ１０２では、入力された対象情報を横方向展開処理した項をΦに設定、すなわち初期化する。なお、各展開処理の詳細については後述する。ステップＳ１０３では、対象情報を構成する式の長さが０であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが０であると判断した場合には、ステップＳ１１４へ進み横方向展開処理を終了する。一方、式の長さが０であると判断しなかった場合には、次のステップへ進む。
【００９９】
ステップＳ１０４では、数６で表現される対象情報から第一項を取得する。すなわち、数７に示すデータを取得する。ステップＳ１０５では、取得した数７で表現される対象情報をメモリ１２に保存する。なお、ここでいう保存とは変数に保存すること、すなわちメモリ１２に所定の領域を確保して記録することを意味する。また、以下の処理において取得するステップと削除するステップの間に行われる処理でいう保存は、上記同様メモリ１２に所定の領域を確保して記録することを意味することとする。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））・・・（数７）
ステップＳ１０６では、数６の式表現から数７を削除する。これにより、数８により表現されるデータがメモリ１２に存在することになる。
ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２））・・・（数８）
ステップＳ１０７では、横方向展開処理後の因子をεに設定する。次にステップＳ１０８では、項の長さが０であるかを判断する。すなわち、対象情報を構成する項が存在するか否かを判断する。項の長さが０であると判断した場合には、ステップＳ１１３へ進み横方向展開処理を終了する。一方、式の長さが０であると判断しなかった場合には、次のステップへ進む。
【０１００】
ステップＳ１０９では、第一項から第一因子であるｃｅｌｌを取得する。ステップ１１０では、取得した第一因子ｃｅｌｌをメモリ１２に保存する。次にステップ１１１では、第一因子ｃｅｌｌを第一項より削除する。
【０１０１】
ステップＳ１１２では、展開後の因子に対し取得した因子を積演算し、その結果を展開後の因子とする。すなわち、ステップＳ１０７で設定した展開後の因子εにステップＳ１０９で取得した第一因子ｃｅｌｌを積演算する。積演算の展開処理については後述する。その後、第一項の項の長さが０であると判断されるまでステップＳ１０８からステップＳ１１２の処理を繰り返す。
【０１０２】
ステップＳ１１３では、ステップＳ１０８で項の長さが０であると判断した場合に、展開後の項に対し展開後の因子の和演算を行い、その結果を展開後の項と設定する。その後、式の長さが０であると判断されるまでステップＳ１０３からステップＳ１１３の処理を繰り返す。以上のステップを実行することにより、展開後の対象情報は数９により表現される。この式表現が“展開後の式表現”として、アプリケーションプログラムに返されることになる。なお、横方向展開処理を実行中の対象情報の状態の詳細は図６Ｂ、図６Ｃに示す。
ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）＋ｓ×ｐ（ｐ１＋ｐ２）＋ｓ×ｑ（ｑ１＋ｑ２）・・・（数９）
このように、数６の最も外側の“（”と“）”とが外された式表現となっている。他の例としては、例えば、a(b+c(d+e))+f(g+h)という式表現を横方向展開した場合には、a×b+ a×c(d+e)+f×g+f×h になる。
【０１０３】
（１０）縦方向展開処理
次に、縦方向展開処理について説明する。縦方向展開処理は、各項をそれぞれ全展開していく処理である。例えば、上記a(b+c(d+e))+f(g+h)について，縦方向展開するとa×b+a
×c×d+a×c×e+f×g+f×h になる。一方、横方向展開で式を全展開するには，各項に括
弧が無くなるまで各項を展開するという指定が必要となる。縦方向展開処理のアプリケーションインターフェースは、例えば、戻り値＝expand2(展開前の式表現、展開後の式表現)；のように定義できる。
【０１０４】
図７は、縦方向展開処理を実行する処理のフローを示す。図７では、図６と同一の処理を実行するステップは、同一の符号で示している。ステップＳ１０１では、対象情報（“展開前の式表現”）を入力する。例えば、ユーザインターフェース等を通じて、展開前の式表現が入力される。そして、メモリ１２に格納される対象情報がアプリケーションプログラムから共通関数expand2に入力される。以下、対象情報として数１０に示すデータを
用いた場合について説明する。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２））・・・（数１０）
ステップＳ１０２では、入力された対象情報を展開処理したときに得られる対象情報（項）をΦに設定する。ステップＳ１０３では、対象情報を構成する式の長さが０であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが０であると判断した場合には、ステップＳ１１４へ進み縦方向展開処理を終了する。一方、式の長さが０であると判断しなかった場合には、次のステップへ進む。ステップＳ１０４では、数１０から第一項を取得する。すなわち、数１１に示すデータを取得する。ステップＳ１０５では、取得した数１１で表現される対象情報をメモリ１２に保存する。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））・・・（数１１）
ステップＳ１０６では、数１０から数１１を削除する。これにより、メモリ１２には、数１２により表現されるデータが存在することになる。
ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２））・・・（数１２）
ステップＳ１０７では、第一項を展開したときに得られる、展開後の因子をεに設定する。次にステップＳ１０８では、項の長さが０であるかを判断する。すなわち、対象情報を構成する項が存在するか否かを判断する。項の長さが０であると判断した場合には、ステップＳ１１３へ進み縦方向展開処理を終了する。一方、式の長さが０であると判断しなかった場合には、次のステップへ進む。
【０１０５】
ステップＳ１０９では、第一項から第一因子であるｃｅｌｌを取得する。ステップ１１０では、取得した第一因子ｃｅｌｌをメモリ１２に所定の領域を確保して保存する。次にステップ１１１では、第一因子ｃｅｌｌを第一項より削除する。
【０１０６】
ステップＳ１１２ａでは、因子が第一の括弧または第二の括弧で括られているとき、括弧内の式について縦方向展開処理を実行し（すなわち、再帰呼び出しを実行する）、結果を取得した因子とする。次にステップＳ１１２ｂでは、展開後の因子に対し取得した因子を積演算し、その結果を展開後の因子とする。積演算の展開処理については後述する。その後、第一項の項の長さが０であると判断されるまでステップＳ１０８からステップＳ１１２の処理を繰り返す。
【０１０７】
ステップＳ１１３では、ステップＳ１０８で項の長さが０であると判断した場合に、展開後の項に対し展開後の因子の和演算を行い、その結果を展開後の項と設定する。その後、式の長さが０であると判断されるまで再帰的にステップＳ１０３からステップＳ１１３の処理を繰り返す。以上のステップを実行することにより、展開後の対象情報は数１３により表現される。そして、この式表現が“展開後の式表現”として、アプリケーションプログラムに引き渡される。なお、上記ステップを実行中の対象情報の状態の詳細は図８Ａから図８Ｄに示す。
ｃｅｌｌ×ｉｄ×１＋ｃｅｌｌ×ｉｄ×Ａ×１×ａ１＋ｃｅｌｌ×ｉｄ×Ｂ×１×ｂ１＋
ｃｅｌｌ×ｉｄ×Ｃ×１×ｃ１＋ｃｅｌｌ×ｉｄ×２＋ｃｅｌｌ×ｉｄ×Ａ×２×ａ２＋ｃｅｌｌ×ｉｄ×Ｂ×２×ｂ２＋ｃｅｌｌ×ｉｄ×Ｃ×２×ｃ２＋ｓ×ｐ×ｐ１＋ｓ×ｐ×ｐ２＋ｓ×ｑ×ｑ１＋ｓ×ｑ×ｑ２・・・（数１３）
（１１）積演算処理
次に積演算処理について説明する。積演算処理は、２つの式表現を入力し、それぞれの式表現を因子とする新たな式表現を生成する処理である。積演算処理のアプリケーションインターフェースは、例えば、戻り値＝product(因子１、因子２、積演算後の式)；のよ
うに定義できる。積演算処理を実行するＣＰＵ１３が本発明の共通因子展開部に相当する。
【０１０８】
図９は、積演算処理を実行する処理のフローを示す。まずステップＳ２０１では、第一の因子（“因子１”）および第二の因子（“因子２“）がアプリケーションプログラムから関数productに入力される。その結果、それぞれの因子がメモリ１２の対応する領域に
新たに記憶される。
【０１０９】
ステップＳ２０２では、どちらかの因子がεであるかを判断する。どちらかの因子がεであると判断された場合には他方の因子がデータを構成することになり（ステップＳ２０３）、積演算処理を終了する。一方、どちらかの因子がεであると判断されなかった場合には次のステップへ進む。
【０１１０】
ステップＳ２０４では、どちらかの因子がΦであるかを判断する。どちらかの因子がΦであると判断された場合には演算後のデータはΦとなり（ステップＳ２０５）、積演算処理を終了する。一方、どちらかの因子がΦであると判断されなかった場合には次のステップへ進む。
【０１１１】
ステップＳ２０６では、両方の因子が第一の括弧により括られているかを判断する。両方の因子が第一の括弧により括られていると判断した場合には、互いの全項の全組み合わせでそれぞれ掛けた項の和として処理し（ステップＳ２０７）、次のステップへ進む。一方、両方の因子が第一の括弧により括られていると判断しなかった場合には、次のステップへ進む。
【０１１２】
ステップＳ２０８では、一方の因子が第一の括弧により括られているかを判断する。一方の因子が第一の括弧により括られていると判断し場合には、第一の括弧で括られている項に他方の因子をそれぞれ掛けた項の和として処理し（ステップＳ２０９）、次のステップへ進む。一方、一方の因子が第一の括弧により括られていると判断しなかった場合には、次のステップへ進む。
【０１１３】
ステップＳ２１０では、両方の因子が第二の括弧により括られているかを判断する。両方の因子が第二の括弧により括られていると判断した場合には、それぞれの第二の括弧内の同じ順序の項をそれぞれ掛けた項の和として処理し（ステップＳ２１１）、次のステップへ進む。このとき、第二の括弧は、そのまま維持されるので、演算の前後で第二の括弧内の項の順序はそのまま維持されている。一方、両方の因子が第二の括弧により括られていると判断しなかった場合には、次のステップへ進む。
【０１１４】
ステップＳ２１２では、一方の因子が第二の括弧により括られているかを判断する。一方の因子が第二の括弧により括られていると判断し場合には、第二の括弧で括られているすべての項に他方の因子をそれぞれ掛けた項の和として処理し（ステップＳ２１３）、その後積演算処理を終了する。一方、他方の因子が第二の括弧により括られていると判断しなかった場合には、互いの因子を掛けた項を作成し（ステップＳ２１４）、その後積演算処理を終了する。その結果、“積演算後の式表現“がアプリケーションプログラムに引き
渡される。なお、図１０に上記積演算処理の例とともに実際の処理を示す。
（１２）商演算処理
次に商演算処理について説明する。商演算処理は、対象情報を記述する集合から、指定された因子（識別子を含む）を含む式表現（項、あるいは要素）と、そのような因子を含まない式表現とに分離する処理である。商演算処理のアプリケーションインターフェースは、例えば、戻り値＝divide(商演算される式表現、商演算する因子、商の式表現、剰余
の式表現)；のように定義できる。本実施形態で、商演算は、“商演算する因子”を含む
式表現を取り出す処理となる。そのため、商演算する因子のことを、同値関係を指定する因子ともいう。商演算する因子は、本発明の演算用因子に相当する。
【０１１５】
図１１Ａは、商演算処理（サブルーチン１）を実行する処理のフローを示す。サブルーチン１を実行するＣＰＵ１３が本発明の商演算部に相当する。なお、図１２Ａは、商演算のうち、剰余を求める処理（サブルーチン２）である。サブルーチン１は、商演算される式表現である式１、商演算する因子を入力され、商の式表現である式２を出力する。
【０１１６】
まずステップ３０１では、商演算処理が実行される前の所定の表現形式によって表現される式１（“商演算される式表現”）、および商演算する因子（これを同値関係示す因子ともいう）ｐが入力される。以下、数１４により表現される対象情報が入力された場合について説明する。また、１を商演算する因子（同値関係を示す因子ｐ）と設定する。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））・・・（数１４）
次に、ステップＳ３０２では、ＣＰＵ１３は、演算後の商（商項ともいう、ここでは、項２で表す）を初期化する。このとき、項２の値は、Φ（空、または０）である。
【０１１７】
次に、ステップＳ３０３では、ＣＰＵ１３は、式１の長さが０であるか否かを判定する。式１の長さが０である場合、ＣＰＵ１３は、サブルーチン１の処理を終了する。
【０１１８】
一方、ステップＳ３０３の判定において、式１の長さが０でなかった場合、ＣＰＵ１３は、ステップ３０４に処理を進める。そして、ＣＰＵ１３は、式１から始めの項（以下、項１という）を取得する。ここで、項１は、数１４の全体である。さらに、ステップＳ３０５において、ＣＰＵ１３は、式１から項１を削除する。
【０１１９】
次に、ステップＳ３０６において、ＣＰＵ１３は、項１が因子ｐ（ここでは、“１”）を含んでいるか否かを判定する。ここで、因子ｐを含んでいるとは、項１の因子としては、あるいは、項１の第１の括弧で括られた因子内の項のいずれかに、因子ｐを含むことをいう。すなわち、項１の式表現中に因子ｐが含まれるか否かを判定する。項１が因子ｐを含んでいない場合、ＣＰＵ１３は、項１を空とし、処理をＳ３０３に戻す。
【０１２０】
一方、ステップＳ３０６の判定において、項１が因子ｐを含んでいる場合、ＣＰＵ１３は、処理をＳ３０８に進める。そして、ＣＰＵ１３は、項３を初期化し、空とする。ここで、項３は、始めの項である項１の商演算結果を格納する変数（メモリ１２の領域）である。ここでは、数１４の構成から、項１に因子ｐ（＝１）が含まれていると判定される。
【０１２１】
そして、ステップＳ３０９において、ＣＰＵ１３は、項１の長さが０であるか否かを判定する（Ｓ３０９）。項１の長さが０でない場合、ステップＳ３１０において、ＣＰＵ１３は、項１から始めの因子（以下、因子１という）を取得する。数１４の構成から、因子“ｃｅｌｌ”が取得される。そして、ステップＳ３１１において、ＣＰＵ１３は、項１から因子１を削除する。
【０１２２】
次に、ステップＳ３１２において、ＣＰＵ１３は、因子１に商演算する因子ｐが含まれ
、かつ、因子１が第１の括弧“（”と“）”とによって形成された因子であるとき、その括弧内の式を式１に設定し、サブルーチン１を再帰呼び出しする。そして、その再帰呼び出しによる処理結果を因子１とする。この処理によって、商演算される式中で、項に“（）”による因子を含む場合は、その項は、（）内の式が商演算されることになる。数１４の構成の場合、“ｃｅｌｌ”が因子１の場合には、Ｓ３１２は、実行されない。また、ｃｅｌｌの次の因子（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））が、因子１の場合には、Ｓ３１２により、再起呼び出しが実行されることになる。その結果、式表現中に因子ｐ（この例では、１）を含む因子が抽出されることになる。
【０１２３】
さらに、ステップＳ３１３によって、ＣＰＵ１３は、項３に対し因子１を積演算し、結果を項３とする。この処理によって、因子１に商演算される因子ｐが含まれる場合、そのまま項３に積演算されることになる。また、因子１が（）の形式の因子の場合に、（）内から因子ｐを含む項が取り出されることになる。そして、ＣＰＵ１３は、処理をＳ３０９に戻す。
【０１２４】
ステップＳ３０９の判定で、項１の長さが０となった場合、ＣＰＵ１３は、処理をステップＳ３１４に進める。そして、ＣＰＵ１３は、項２（商項）に対して、得られている項３を和演算する。さらに、ステップＳ３１５の処理で、ＣＰＵ１３は、項２を商演算後の式である式２に設定する。その後、ＣＰＵ１３は、処理をＳ３０２に戻す。
【０１２５】
そして、Ｓ３０２の判定で、式１の長さが０になると、ＣＰＵ１３は、サブルーチン１の処理を終了する。このような処理により、式２に、以下の数１５Ａの式表現が出力され、アプリケーションプログラムに引き渡される。
【０１２６】
ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝×１｛ε＋ａ１＋ｂ１＋ｃ１｝・・・（数１５Ａ）
図１１Ｂおよび図１１Ｃに、数１４の式表現に対して、サブルーチン１が実行された場合の式１、項１、項２、項３、因子１、および式２の変化を示す。図１１Ｂおよび図１１Ｃの第１行目は、各列の要素、すなわち、図１１Ａ中の該当する処理を示す番号、式１、項１、項、項３、因子１、および式２を示している。第２行以下の各行は、一連の処理ステップであり、図１１Ｂ上から下へ、さらに、図１１Ｃの上から下へ実行される。
【０１２７】
そして、まず、ステップＳ３０１で、共通関数へのパラメータを介して、式１である数１４が入力され、メモリ１２に保持される。
【０１２８】
項１、因子１および項３に着目すると、これらのうち、“ｃｅｌｌ”および、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が順次サブルーチン１で処理されることが分かる。
【０１２９】
さらに、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が因子１としてＳ３１２で処理されるときに、再起呼び出しが発生する。そして、同様に、“ｉｄ”、｛ε＋Ａ＋Ｂ＋Ｃ｝、および（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）がサブルーチン１の再起呼び出し１で処理される。
【０１３０】
さらに、（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が、Ｓ３１２で処理されるときに、再起呼び出し２が発生する。そして、同様に、１｛ε＋ａ１＋ｂ１＋ｃ１｝については、商演算する因子“１“が含まれているので、Ｓ３０６で、ＹＥＳの判定がなされる。そして、Ｓ３１３によって、１と｛ε＋ａ１＋ｂ１＋ｃ１｝とが項３に積演算される。
【０１３１】
一方、２｛ε＋ａ２＋ｂ２＋ｃ２｝については、商演算する因子“１”が含まれていないので、Ｓ３０６で、ＮＯの判定がなされる。その結果、これらの因子は、Ｓ３０７において、Φに設定され、削除される。その結果、再起呼び出し２で商演算の結果、式２として出力されるのは、１｛ε＋ａ１＋ｂ１＋ｃ１｝となる。
【０１３２】
さらに、再起呼び出し１では、Ｓ３１３の処理で、項３に積演算されていたｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝と再起呼び出し２での商演算の結果である１｛ε＋ａ１＋ｂ１＋ｃ１｝とが、積演算され、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝）が、式２として出力される。
【０１３３】
さらに、そして、再起呼び出し１の前に、項３に積演算されていたｃｅｌｌと、再起呼び出し１による商演算の結果が積演算され、数１５Ａが式２として、最終的に出力されることになる。
【０１３４】
次に、図１２Ａにより、剰余を求める処理（サブルーチン２）を説明する。サブルーチン１を実行するＣＰＵ１３が本発明の剰余演算部に相当する。サブルーチン２は、商演算される式である式１、商演算する因子ｐを入力され、剰余の式３を出力する。
【０１３５】
まずステップ３２１では、商演算処理が実行される前の所定の表現形式によって表現される式１（“商演算される式”）、および商演算する因子（同値関係示す因子ｐ）が入力される。以下、図１１Ａの場合と同様、数１４により表現される対象情報が入力された場合について説明する。また、１を商演算する因子（同値関係ｐ）と設定する。
【０１３６】
次に、ステップＳ３２２では、ＣＰＵ１３は、演算後の式（ここでは、式３と呼ぶ）を初期化する。このとき、式３の値は、Φ（空、または０）になる。
【０１３７】
次に、ステップＳ３２３では、ＣＰＵ１３は、式１の長さが０であるか否かを判定する。式１の長さが０である場合、ＣＰＵ１３は、サブルーチン１の処理を終了する。
【０１３８】
一方、ステップＳ３２３の判定において、式１の長さが０でなかった場合、ＣＰＵ１３は、ステップ３２４に処理を進める。そして、ＣＰＵ１３は、式１から始めの項（以下、項１という）を取得する。さらに、ステップＳ３２５において、ＣＰＵ１３は、式１から項１を削除する。
【０１３９】
次に、ステップＳ３２６において、ＣＰＵ１３は、演算後の項（以下、項４と呼ぶ）を初期化する。このとき、項４の値は、Φ（空、または０）になる。
【０１４０】
次に、ステップＳ３２７において、ＣＰＵ１３は、項１の長さが０であるか否かを判定する。そして、項１の長さが０でない場合、ＣＰＵ１３は、ステップＳ３２８に処理を進める。そして、ステップＳ３２８において、ＣＰＵ１は、項１から始めの因子（因子１）を取得する。さらに、ステップＳ３２９において、ＣＰＵ１３は、項１から因子１を削除する。
【０１４１】
次に、ステップＳ３２９において、ＣＰＵ１３は、因子１が因子ｐと等しいか否かを判定する。そして因子１が因子ｐと等しい場合、ステップＳ３３１において、ＣＰＵ１３は、因子１をΦ（空、または０）にする。
【０１４２】
次に、ステップＳ３３２において、ＣＰＵ１３は、因子１が第１の括弧“（”と“）”とによって形成された因子であるとき、その括弧内の式を式１に設定し、サブルーチン２を再帰呼び出しする。そして、その再帰呼び出しによる処理結果を因子１とする。この処
理によって、商演算される式中で、“（）”による因子を含む場合は、その因子は、（）が外され、内の式から剰余（すなわち、因子ｐを含まない項）が抽出されることになる。
【０１４３】
さらに、ステップＳ３３３によって、ＣＰＵ１３は、項４に対し因子１を積演算し、結果を項４とする。この処理によって、因子１が商演算される因子ｐと異なる場合に、そのまま項３に積演算されることになる。また、因子１が（）の形式の因子の場合に、（）内から因子ｐを含まない項が取り出されることになる。そして、ＣＰＵ１３は、処理をＳ３２７に戻す。
【０１４４】
ステップＳ３２７の判定で、項１の長さが０となった場合、ＣＰＵ１３は、処理をステップＳ３３４に進める。そして、ＣＰＵ１３は、式３（剰余項）に対して、得られている項４を和演算する。その後、ＣＰＵ１３は、処理をＳ３２３に戻す。
【０１４５】
そして、Ｓ３２３の判定で、式１の長さが０になると、ＣＰＵ１３は、サブルーチン２の処理を終了する。このような処理により、式３に、以下の数１５Ｂの式表現が剰余として出力され、アプリケーションプログラムに引き渡される。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（Φ＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））・・（数１５Ｂ）
図１２Ｂおよび図１２Ｃに、数１４の式表現に対して、サブルーチン２が実行された場合の式１、項１、項４、因子１、および式３の変化を示す。図１２Ｂおよび図１２Ｃの第１行目は、各列の要素、すなわち、図１２Ａ中の該当する処理を示す番号、式１、項１、項、項４、因子１、および式３を示している。第２行以下の各行は、一連の処理ステップであり、図１２Ｂの表の上から下へ、さらに、図１２Ｃの表の上から下へ実行される。
【０１４６】
そして、まず、ステップＳ３２１で、共通関数へのパラメータを介して、式１である数１４が入力され、メモリ１２に保持される。
【０１４７】
項１、因子１および項４に着目すると、これらのうち、“ｃｅｌｌ”および、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が順次サブルーチン２で処理されることが分かる。
【０１４８】
さらに、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が因子１としてＳ３３２で処理されるときに、再起呼び出しが発生する。そして、同様に、“ｉｄ”、｛ε＋Ａ＋Ｂ＋Ｃ｝、および（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）がサブルーチン１の再起呼び出し１で処理される。
【０１４９】
さらに、（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が、Ｓ３３２で処理されるときに、再起呼び出し２が発生する。そして、１｛ε＋ａ１＋ｂ１＋ｃ１｝については、商演算する因子“１”が含まれているので、Ｓ３３０で、ＹＥＳの判定がなされる。そして、Ｓ３３１によって、因子１にΦに設定され、因子１を含む項１全体がΦとなり、削除される。
【０１５０】
一方、２｛ε＋ａ２＋ｂ２＋ｃ２｝については、商演算する因子“１”が含まれていないので、Ｓ３３０で、それぞれの因子１について、ＮＯの判定がなされる。その結果、これらの因子は、Ｓ３３３において、項４に積演算される。その結果、再起呼び出し２の剰余演算の結果、式３として出力されるのは、２｛Φ＋ａ１＋ｂ１＋ｃ１｝となる。
【０１５１】
さらに、再起呼び出し１では、Ｓ３３３の処理で、項４に積演算されていたｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝と再起呼び出し２での商演算の結果である２｛Φ＋ａ１＋ｂ１＋ｃ１｝とが、積演算され、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（２｛Φ＋ａ１＋ｂ１＋ｃ１｝）が、式３として
出力される。
【０１５２】
さらに、そして、再起呼び出し１の前に、項４に積演算されていたｃｅｌｌと、再起呼び出し１による商演算の結果が積演算され、数１５Ｂが式３として、最終的に出力されることになる。
（１３）接着演算処理
接着とは、本実施形態にて提案する概念であり、２つの被接着情報のそれぞれのデータ構造を維持した上で、それぞれ被接着情報を結合する機能である。接着においては、２つの被接着情報のそれぞれに含まれる情報で、互い関係付けられる情報（これを同値関係を指定された因子という）が指定される。そして、その関係付けられた因子（同値関係を有する因子）同士を介して、２つの被接着情報が結合される。
【０１５３】
接着演算処理のアプリケーションインターフェースは、例えば、戻り値＝attach(接着
する式１、因子１、接着する式２，因子２、接着演算後の式)；のように定義できる。こ
こで、因子１と、因子２とは、接着演算する式１の項と、式２の項とを関係付ける指定である。この指定によって、式１で因子１を含む項と、式２で因子２を含む項とが以下のような手順で結びつけられる。
【０１５４】
図１３は、接着演算処理を実行する処理のフローを示す。ステップＳ４０１では、接着する所定の表現形式によって表現される対象情報を入力する。以下の説明では、数１６および数１７によって表現される対象情報を接着処理する場合について説明する。すなわち、数１６が被接着式１であり、数１７が被接着式２である。また、ここでは、数１６の因子“２”と、数１７の因子“ｑ”との同値関係が指定されているとする。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））・・・（数１６）
ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２））・・・（数１７）
ステップＳ４０２では、数１６および１７の因子１、因子２による上述した商演算処理（サブルーチン１およびサブルーチン２）を実行して、得られた商と剰余とを和演算処理する。このサブルーチン１を実行し、商を取得するＣＰＵ１３が、本発明の関連項抽出部に相当する。また、このサブルーチン２を実行し、剰余を取得するＣＰＵ１３が、本発明の非関連項抽出部に相当する。その結果、“式１から得られた剰余＋式１から得られた商＋式２から得られた剰余＋式２から得られた商”という形式の式が形成される。これを商演算後の式という。このうち、式１からの商を項１とし、式２から得られた商を項２とする。項１は、因子“２”を含む項である。また、項２は、因子“ｑ”を含む項である。このように、同値関係を指定された因子１、因子２を含む項を、同値要素を表す項という。すなわち、式１に対して、因子“２”で商演算した商が項１であり、同値要素を表す項である。また、式２に対して、因子“ｑ”で商演算した商が項２であり、これも同値要素を表す項である。
【０１５５】
次にステップＳ４０３では、因子１および因子２を含む項１、２を取得し商演算後の式から削除する。さらに、因子１を含む項１、および因子２を含む項２をそれぞれ左因子と右因子とに分ける。ここで、左因子とは、ある項の因子ｐに着目した場合に、ｐの左に位置する因または因子の積をｐの左因子という。また、右因子とは、ある項の因子ｐに着目した場合に、ｐの右に位置する因子または因子の積をｐの右因子という。例えば、項（ａ×ｂ＋ｃ）×ｐ×ｄ×ｅについてみると、ｐの左因子は（ａ×ｂ＋ｃ）であり、ｐの右因子はｄ×ｅとなる。
【０１５６】
次に、ステップＳ４０４では、項１における因子１の左因子をｌ１，右因子をｒ１，項２における因子２の左因子をｌ２，右因子をｒ２とし，接着空間の式として｛ｌ１＋ｌ２｝｛因子１＋因子２｝｛ｒ１＋ｒ２｝を作成する。次に、ステップＳ４０５では、商演算
処理後の剰余を示す対象情報、接着演算処理後の対象情報を和演算処理し，接着演算処理後の対象情報とし、処理を終了する。その結果、“接着演算後の式”に演算結果が設定され、アプリケーションプログラムに引き渡される。なお、接着演算処理を実行中の対象情報の状態の詳細は図１４に示す。
【０１５７】
図１４に、接着演算処理を実行中の対象情報の状態の詳細を示す。この例では、まず、Ｓ４０１にて接着する式１、式２が入力される。また、因子１として“２”、因子２として、“ｑ”が指定されている。
【０１５８】
次に、Ｓ４０２にて商演算が実行される。その結果、式１は、ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋Φ））という剰余と、ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（Φ＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））という商に分離される。また、式２は、ｓ（ｐ（ｐ１＋ｐ２）＋Φ）という剰余と、ｓ×ｑ（ｑ１＋ｑ２）という商に分離されている。図１４のＳ４０２の行では、これらの剰余と商が和演算された形式で示されている。
【０１５９】
そして、ここで、式１の同値因子、すなわち、因子“２”を含む項は、ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（Φ＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）であり、同値要素を表す項１という。また、式２の同値因子、すなわち、因子“ｑ”を含む項は、ｓ×ｑ（ｑ１＋ｑ２）であり、同値要素を表す項２という。これらから、左因子ｌ１は、ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝、左因子ｌ２は、ｓ、右因子ｒ１は、｛ε＋ａ２＋ｂ２＋ｃ２｝、右因子ｒ２は、（ｑ１＋ｑ２）である。したがって、接着された結果である接着空間の式は、
｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ｓ｝｛２＋ｑ｝｛（ε＋ａ２＋ｂ２＋ｃ２）＋（ｑ１＋ｑ２）｝
となる。
【０１６０】
さらに、これらの剰余の式ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ２＋ｂ２＋ｃ２｝＋Φ））とｓ（ｐ（ｐ１＋ｐ２）＋Φ）とを和演算することで、接着演算後の式となる。
【０１６１】
（１４）部分集合取得処理
部分集合取得処理は、集合から、指定された因子（以下、指定因子という）を有する項を含む式（部分集合）と、指定因子を有しない項の式（部分集合）に分離する処理である。この処理を実行するＣＰＵ１３が、本発明の部分集合形成部に相当する。ただし、本実施形態では、指定因子（今ｐとする）を有する項が複数個存在する場合には、｛左因子１＋左因子２＋・・・｝ｐ｛左因子１が含まれていた項の右因子＋左因子２が含まれていた項の右因子＋・・・｝＋因子ｐを含まない部分集合の和のように、指定された因子ｐで括り出す。このように、部分集合取得処理の括り出しでは、括り出し前の各項において、指定因子ｐの左側に結合する因子（左因子と呼ぶ）と、指因子ｐの右側に結合する因子（右因子と呼ぶ）とをそれぞれ、第２の｛｝内に和演算する。そして、左因子の和は、第２の｛｝によって括られ、その順序を維持して、指定された因子の左側に結合される。
【０１６２】
また、右因子の和は、第２の｛｝によって括られ、その順序を維持して、指定された因子の右側に結合される。さらに、同一の左因子に対して、異なる右因子を有する項が複数存在する場合、それらの右因子は、第１の括弧“（）”で括り出される。この場合、左因子は、集合情報の識別情報として機能する。例えば、
ａ１×ｂ×ｃ１＋ａ１×ｂ×ｃ２＋ａ２×ｂ×ｃ１＋ａ２×ｂ×ｃ２＋ａ３×ｂ×ｃ３＋ａ×ｕ×ｖという式表現に対して、因子ｂを指定因子として部分集合取得演算を実行すると、
｛ａ１＋ａ２＋ａ３｝ｂ｛（ｃ１＋ｃ２）＋（ｃ１＋ｃ２）＋ｃ３｝＋ａ×ｕ×ｖ
となる。この場合、右因子の列は、それぞれ、集合ＩＤがａ１の集合の部分集合ｂ（ｃ１＋ｃ２）、集合ＩＤがａ２の集合の部分集合ｂ（ｃ１＋ｃ２）、集合ＩＤがａ３の集合の部分集合ｂ×ｃ３を表している。
【０１６３】
さらに、部分集合取得処理の対象となる項に、第１の括弧“（）”または第２の括弧“｛｝”が含まれている場合には、これらの括弧内の式表現に対して、再起的に部分集合取得処理が実行される。したがって、第１の括弧“（）”または第２の括弧“｛｝”で括られた個々の括弧内で、部分集合取得処理が実行される。
【０１６４】
部分集合取得処理のアプリケーションインターフェースは、例えば、部分集合取得後の式表現は、戻り値＝separate(部分集合取得前の式表現、指定因子)；のように定義できる。対象の式，因子を指定すると，括った後の式（戻り値）になります．
次に部分集合取得処理について説明する。図１５は、部分集合取得処理を実行する処理のフローを示す。ステップＳ５０１では、演算前の所定の表現形式で表現される対象情報と、部分集合を指定するための指定因子ｐを入力する。以下、対象情報として数１８に示すデータを用いて、指定因子“ｐ”で部分集合を取得する場合について説明する。
ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）＋ｉｄ（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））・・・（数１８）
ステップＳ５０２では、部分集合を取得するための因子以外（ここでは、「その他の式」「左因子式」および「右因子式」）をΦと設定する。ステップＳ５０３では「処理後の項」をεに設定する。ステップＳ５０４では、対象情報を構成する式の長さが０であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが０であると判断した場合には、ステップＳ５１７へ進む。一方、式の長さが０であると判断しなかった場合には、ステップＳ５０５へ進む。
【０１６５】
ステップＳ５０５では、数１８から第一項を取得し保存する。次にステップＳ５０６では、数１８から第一項を削除する。次にステップＳ５０７では、取得した項に因子ｐが含まれるか判断する。取得した項に因子ｐが含まれると判断した場合にはステップＳ５１５へ進む。一方、取得した項に因子ｐが含まれると判断しなかった場合には、ステップＳ５０８へ進む。
【０１６６】
ステップＳ５０８では、項の長さが０であるか否かを判断する。項の長さが０であると判断した場合にはステップＳ５１４へ進む。一方、項の長さが０であると判断しなかった場合には、項から第一因子を取得し、これを保存し（ステップＳ５０９）、次に項から第一因子を削除する（ステップＳ５１０）。
【０１６７】
次にステップＳ５１１では、第一因子が第一の括弧または第二の括弧で括られているか判断する。因子が第一の括弧または第二の括弧で括られていると判断した場合には、第一の括弧または第二の括弧で括られている式に対して、本部分集合取得処理を実行する（ステップＳ５１２）。すなわち、再起呼び出しを実行する。一方、第一の括弧または第二の括弧で括られていると判断しなかった場合には、第一因子を取得した因子とし（Ｓ５２０）、ステップＳ５１３へ進む。ステップＳ５１３では、処理後の項に取得した因子によって積演算処理を実行し、その結果を処理後の項とし、ステップＳ５０８の処理を再度実行する。
【０１６８】
ステップＳ５０８において、項の長さが０であると判断した場合には、その他の式に処理後の項を和演算処理し、その結果をその他の式とする（ステップＳ５１４）。ステップＳ５１４の処理を実行後、再度ステップＳ５０３の処理を実行する。次にステップＳ５０４において式の長さが０であると判断した場合には、部分集合の項として｛左因子式｝ｐ｛右因子式｝を作成し（ステップＳ５１７）、その他の式に部分集合項を和演算し，演算
後の式とし（ステップＳ５１８）、処理を終了する。以上の処理を実行することにより、数１８により表現される対象情報は、数１９により表現される対象情報となる。なお、部分集合取得処理を実行中の対象情報の状態の詳細は図１６Ａ、図１６Ｂに示す。
ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋ｐ４）｝）＋｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋ｐ４）｝・・・（数１９）
図１６Ａおよび図１６Ｂに、数１８の式表現に対して、部分集合取得処理が実行された場合の「演算前の式」、「部分集合取得のための因子」、「左因子式」、「右因子式」、「左因子」、「右因子」「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」の変化を示す。図１６Ａの各行と、図１６Ｂの各行は、図１５の処理での同一の処理を示している。すなわち、図１６Ａおよび図１６Ｂを横に接続して、部分集合取得処理の状態変化が表されることになる。
【０１６９】
図１６Ａおよび図１６Ｂの第１行目は、各列の要素、すなわち、図１５中の該当する処理を示す番号、「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」を示している。第２行以下の各行は、一連の処理ステップであり、図１６Ａおよび図１６Ｂの表の上から下へ実行される。
【０１７０】
ここでは、数１８の式表現を処理対象とする。部分集合取得処理を実行する共通関数separateに対して、まず、部分集合取得前の式表現である数１８が与えられる。この式表現はメモリ１２に格納される。また、指定因子はｐであるとする。
【０１７１】
まず、Ｓ５０５、Ｓ５０５の処理で、式から第一項ｓ×ｐ（ｐ１＋ｐ２）が取得される。ｓ×ｐ（ｐ１＋ｐ２）に指定因子ｐが含まれているので、Ｓ５１５およびＳ５１６が実行され、左因子ｓおよび右因子（ｐ１＋ｐ２）がそれぞれ左因子式および右因子式に和演算される。
【０１７２】
次に、Ｓ５０５、Ｓ５０６の処理で、式から第二項ｔ×ｐ（ｐ３＋ｐ４）が取得される。ｔ×ｐ（ｐ３＋ｐ４）に指定因子ｐが含まれているので、Ｓ５１５およびＳ５１６が実行され、左因子ｔおよび右因子（ｐ３＋ｐ４）がそれぞれ左因子式および右因子式に和演算される。
【０１７３】
さらに、Ｓ５０５、Ｓ５０６の処理で、式から第三項ｉｄ（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））が取得される。そして、Ｓ５０９において、第一因子としてｉｄが取得される。項ｉｄは、Ｓ５１３にて、処理後の項に積演算される。さらに、Ｓ５０９において、第一項として、次の項（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））が取得される。これは、Ｓ５１１の判定で、第１の括弧を含むとされるので、Ｓ５１２が実行される。
【０１７４】
そして、式表現ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）に対して、部分集合取得処理が再起呼び出しで実行される。図１６Ａおよび図１６Ｂでは、再起呼び出し中の状態は、省略されているので、本文にて説明する。この場合も、ｓ×ｐ（ｐ１＋ｐ２）から、左因子ｓ、右因子（ｐ１＋ｐ２）が取得される。また、ｔ×ｐ（ｐ３＋ｐ４）から、左因子ｔ、右因子（ｐ３＋ｐ４）が取得される。これらの左因子および右因子は、Ｓ５１６において、それぞれ左因子式、および右因子式に和演算される。そして、式表現ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）の末尾まで処理が進み、Ｓ５０４で、残りの式の長さが０であると判定される。すると、ＣＰＵ１３は、部分集合の項として、｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝を作成する。そして、ＣＰＵ１３は、部分集合の項を演算後の式として、再起呼び出しを終了する。
【０１７５】
再起呼び出しを終了すると、演算後の式を取得するので、これを取得した因子とする。
この場合、取得した因子は、（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）である。そして、ＣＰＵ１３は、Ｓ５１３にて、再起呼び出し前に計算しておいた処理後の項（“ｉｄ”が積演算されている）に、取得した因子を積演算する。その結果、Ｓ５１３において、処理後の項は、ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）となる。ＣＰＵ１３は、Ｓ５１４にて、処理後の項をその他の式として和演算する。
【０１７６】
そして、Ｓ５０４にて、残りの式の長さが０であると判定されると、ＣＰＵ１３は、再起呼び出し前に作成していた左因子式ｓ＋ｔおよび右因子式（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）から、部分集合の項｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）｝を作成する。そして、ＣＰＵ１３は、Ｓ５１８にて、その他の式に部分集合の項を和演算する。これによって、演算後の式ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）＋｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）｝が作成されることになる。
（１５）ホモトピー保存処理
次にホモトピー保存処理について説明する。ホモトピー保存処理は、式１に対して、パラメータを表す項ｐを用いて演算Ｇを実行し、式２が得られたとき、
（演算後の式２）＝Ｇ（演算前の式１＋演算時のパラメータを表す項ｐ）
のように、演算実行前後の関係を保持する機能である。この場合、演算実行前の式１、すなわち、初期状態は、式ΦにパラメータΦ項を適用して、式１が得られたと仮定し、演算前の式を
式１＝Ｆ（Φ＋Φ）
のようにおく。ここで、演算実行前の式をホモトピー保存式１と呼ぶことにする。
【０１７７】
図１７は、ホモトピー保存処理を実行する処理のフローを示す。ここで、式１は、数２０の左辺の式である。また、attachによって接着演算が指定され、因子２と因子ｑとの同値関係が指定されている場合を説明する。
【０１７８】
まず、ステップＳ６０１では、演算実行前の式、すなわち、ホモトピー保存式１と、演算Ｇと、パラメータ因子ｐが入力される（Ｓ６０１）。
ここでは、例として、以下の数２０によって、式１を仮定する。また、演算Ｇとして、接着演算を実行する例を示す。また、そのときの、パラメータ因子として、ａｔｔａｃｈ（２＋ｑ）を指定する。すなわち、因子２と因子ｑとの同値関係が指定されて、接着演算が実行された場合を例に、ホモトピー保存処理を説明する。
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（Φ＋Φ）・・・（数２０）
ステップＳ６０２では、数２０により表現される式から演算Ｇ前の式、すなわち数２０の左辺を取得する。これを数２１とする。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２））・・・（数２１）
ステップＳ６０３では、演算Ｇによる演算処理を行い演算Ｇ後の式とする。この場合、数２２により表現される式が得られる。ここでは、演算Ｇの例として、接着演算を実行する。また、接着演算の同値関係を指定するパラメータを“２”および“ｑ”とする。すなわち、因子“２”で商演算された商と、因子“ｑ”で商演算された商とを接着する。そのときのホモトピー保存式の例を説明する。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ２＋ｂ２＋ｃ２｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝・・・（数２２）
ステップＳ６０４では、演算Ｇ後のホモトピー保存式２として、（演算Ｇ後の式）＝Ｇ（ホモトピー保存式１＋演算時のパラメータｐ）を作成する。ここで、パラメータｐは、“ａｔｔａｃｈ（２＋ｑ）”である。以上の処理を実行することにより数２１により表現
された式は、数２３により表現される式となる。
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）
＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））
＝Ｇ（Ｆ（Φ＋Φ）＋ａｔｔａｃｈ（２＋ｑ）））・・・（数２３）
この式は、Ｆ（Φ＋Φ）で示される式（すなわち、数２１）に、ａｔｔａｃｈ（２＋ｑ）というパラメータで演算Ｇ、すなわち、接着演算が実行されて、数２３の左辺（最上段の式）が得られたことを示している。
【０１７９】
（１６）ＵＮＤＯ演算処理
次にホモトピー保存式におけるＵＮＤＯ演算処理について説明する。図１８は、ホモトピー保存式におけるＵＮＤＯ演算処理のフローを示す。ステップＳ７０１では、ホモトピー保存式（演算Ｇ後の式）＝Ｆ（演算Ｇ前の式＋演算時のパラメータを表す式ｐ）の入力をする。以下、対象情報として数２４に示すデータを用いた場合について説明する。
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ２＋ｂ２＋ｃ２｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）
＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））
＝Ｆ（Φ＋Φ）＋ａｔｔａｃｈ（２＋ｑ））・・・（数２４）
上述のように、ホモトピー保存式は、演算Ｇ前の式Ｆ（Φ＋Φ）に演算（この例では、接着演算Ｇ、演算時のパラメータはａｔｔａｃｈ（２＋ｑ））を実行することで、数２４の最上段（最初の“＝”の左辺）の式表現が得られたことを記録している。なお、数２４において、中段の式（最初の“＝”の右辺）と、最下段の式（２つ目の“＝”の右辺）とは、表現形式が異なるだけで実質的に同一の式である。最下段の式は、Ｆ（Φ＋Φ）を用いて表現を簡略化している。そして、それら中段の式と簡略された式を“＝”で結んだ式が、Ｇ（）という演算の中に挿入されている。
【０１８０】
ＵＮＤＯ演算処理では、この記録を基に、演算前の式を得る。すなわち、ＣＰＵ１３は、演算の種類と、演算時のパラメータとを基にして、演算前の状態に式を戻す。
【０１８１】
次にステップＳ７０２では、ＵＮＤＯ後の式（演算Ｇ前の式）＝Ｇ-1（（演算Ｇ後の式）＝Ｇ（演算Ｇ前の式＋ｐ））の作成を実行する。この場合、すでに、数２４の中段の式と下段の式で、演算の種類Ｇ、演算実行前の式、演算時のパラメータａｔｔａｃｈ（２＋ｑ）が記録されている。したがって、演算前の式は、直ちに、取り出すことができる。以上の処理を実行することにより数２４により表現された対象情報は、数２５により表現される対象情報となる。
（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（Φ＋Φ））
＝Ｇ-1（
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）
＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））
＝Ｆ（Φ＋Φ）＋ａｔｔａｃｈ（２＋ｑ））
）・・・（数２５）
この式は、数２４で与えられホモトピー保存式の両辺に、演算Ｇ前に戻す演算Ｇ-1を実
行することによって、演算Ｇ前の式（初期状態Ｆ（Φ＋Φ）が得られたことを示している。これによって、演算Ｇ前の式である（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（ε＋ε）が、演算Ｇ後の式であるｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝から得られることが示される。
【０１８２】
さらに、この演算Ｇ後の式であるｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）は、演算Ｇ前の式であるｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２））から得られたことが記録されている。
【０１８３】
すなわち、演算Ｇ前の式（Ｆ（Φ＋Φ））に演算Ｇ、パラメータａｔｔａｃｈ（２＋ｑ）を適用することで、演算Ｇ後の式が得られ、かつ、その演算Ｇ後の式に演算Ｇ-1を適用することで、演算Ｇ前の式に戻されたことが記録される。
【０１８４】
このように、ＵＮＤＯ演算処理は、演算後の式から、演算前の式が得られたことを記録するので、次に示すＲＥＤＯ演算処理を実行することで、直ちに、演算後の式を得ることができる。
【０１８５】
（１７）ＲＥＤＯ演算処理
次にホモトピー保存式におけるＲＥＤＯ演算処理について説明する。図１９は、ホモトピー保存式におけるＲＥＤＯ演算処理のフローを示す。ステップＳ８０１では、ホモトピー保存式におけるＵＮＤＯ後の式（演算Ｇ前の式）＝Ｇ-1（（演算Ｇ後の式）＝Ｇ（演算Ｇ前の式＋ｐ））の入力をする。以下、対象情報として数２６に示すデータを用いた場合について説明する。
（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（ε＋ε））
＝Ｇ-1（
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ２＋ｂ２＋ｃ２｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（Φ＋Φ）＋ａｔｔａｃｈ（２＋ｑ））
）・・・（数２６）
上述のように、数２６は、演算Ｇ前の式（Ｆ（Φ＋Φ））に接着演算Ｇおよびパラメータａｔｔａｃｈ（２＋ｑ）が適用され、演算Ｇ後の結果が得られ、さらに、演算Ｇ後の式から演算Ｇ前の式に戻されたことが記録されている。
【０１８６】
次にステップＳ８０２では、ＵＮＤＯ後の式から，ＵＮＤＯ演算前の式、すなわち（演算Ｇ後の式）＝Ｇ（演算Ｇ前の式＋演算時のパラメータｐ）を取得し、ＲＥＤＯ演算後の式とする。以上の処理を実行することにより数２６により表現された対象情報は、数２７により表現される対象情報となる。
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ２＋ｂ２＋ｃ２｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋
ｑ（ｑ１＋ｑ２）））＝Ｆ（ε＋ε）＋ａｔｔａｃｈ（２＋ｑ））・・・（数２７）
このように、ホモトピー保存処理によって、演算後の結果とともに、演算Ｇ前の式（Ｆ（Φ＋Φ））と、適用される演算の種類Ｇと、使用されるパラメータａｔｔａｃｈ（２＋ｑ）を記録する。これによって、ＵＢＤＯ演算処理で演算前の結果を得ることができる。さらに、ＵＮＤＯ演算処理で、演算後の式から、演算前の式が得られたことを記録することで、ＲＥＤＯ演算処理を実行し、直ちに、演算Ｇ後の式を得ることができる。このように、ホモトピー保存処理、ＵＮＤＯ演算処理、およびＲＥＤＯ演算処理は、メモリ１２の容量を犠牲にして、演算前後の関係を保持する一方、演算を戻す処理と再実行する処理とを簡易に実現する。
【０１８７】
《第１実施形態》
以下、図２０−図２６の図面により、本発明の第１実施形態に係る情報処理装置２００を説明する。上記基本システムの説明では、情報処理装置１００において提供される基本演算手順の処理例を説明した。本実施形態では、基本システムでの基本演算手順に加えて、式表現の少なくとも一部を代数演算式に変換し、変換された代数演算式にしたがって代数演算を実行する情報処理装置２００を説明する。本実施形態の他の構成および作用は、基本システムと同様である。そこで、基本システムと同一の構成要素については、同一の符号を付してその説明を省略する。また、図４−図１９に示した基本システムのデータ構造および処理手順は、そのまま本実施形態においても適用される。
（代数演算）
本実施形態では、対象情報のうち、式表現を代数式として処理する。式表現での演算子と、代数式での演算子を区別するため、以下の記号を導入する。
【０１８８】
(＋)：代数演算での加算を示す。なお、図面中では、丸印の中に＋を組み込んだ記号で示す。
【０１８９】
(−)：代数演算での減算を示す。なお、図面中では、丸印の中に−を組み込んだ記号で示す。
【０１９０】
＊  ：代数演算での乗算を示す。
【０１９１】
／  ：代数演算での除算を示す。
【０１９２】
本実施形態では、式表現において、和演算子”＋”を代数加算記号（＋）に変換する。すなわち、識別子または項の並びを加算の代数式に置き換える。また、積演算子“×”を代数乗算記号”＊”に変換する。すなわち、因子の並びを乗算の代数式に置き換える。このような置き換えによって、本情報システムは、式表現を代数演算式に変換する。この変換により、代数乗算記号”＊”で結合された因子と因子の交換が可能となる。本実施形態では、このような式表現を表現レベルの式表現という。そして、本情報システムは、表現レベルの式表現に含まれる代数演算式に対する代数演算を実行する。
【０１９３】
本実施形態では、表現レベルとは各対象情報が型の概念をもつレベルである。型の概念をもつとは、例えば、円、ドル、ユーロ等の貨幣の単位を表す型、長さ、かさ、重さ等の量の単位を表す数値型をもつ情報であることをいう。型の概念は一般のプログラム、データベースに共通であり、数値型、文字型、日付等の情報である。
【０１９４】
ここで、表現レベルでの代数を定義する。これを単位計算代数と呼ぶことにする。単位計算代数を生成する文法を以下の数２８に定義する。以下、Ｒを実数の集合とし、その元をｐとする。ただし、ｐとしては、単位元εも含む。また、Ｌを表意文字の集合とし、その元をｕとする。ただし、ｕとしては、単位元εも含む。なお、ここで表意文字とは、実
数を表す文字列以外の文字あるいは文字列であって、他の表意文字との区切り可能なものをいう。例えば、＄、￥等の記号、ｍ、ｍ2、ｍ3等の単位、アルファベット、欧米語の単語、漢字、日本語の単語、ハングル語の単語等、各国語の単語等を含む。
【０１９５】
さらに、ここでは、代数演算記号として、減算”(−)”および除算”／”が追加されている。
【０１９６】
【数２８】
2009110440.tif 000003
@0050
ここで、Ｇは、グラマであり、文法を意味する。また、Ｐは、文法の生成規則である。ここでは、Ｅを単位式、Ｔを単位項、Ｆを単位因子、ｐを数値因子、ｕを文字因子と呼ぶことにする。その場合、Ｅ→Ｔ｜Ｅ（＋）Ｔ｜Ｅ（−）Ｔは、「単位式は、単位項または単位式に単位項を加算したものまたは単位式から単位項を減算したもののいずれかである」ことを表している。
【０１９７】
また、Ｔ→Ｆ｜Ｔ＊Ｆ｜Ｔ／Ｆは、「単位項は、単位因子または単位項に単位因子を乗算したものまたは単位項から単位因子を除算したもののいずれかである」ということを表している。さらに、Ｆ→ｐｕは、「単位因子は数値因子と文字因子とを結合したもの（通常の代数の乗算と同じ）である」ということを表している。
【０１９８】
一方、Ｇにおいて、｛Ｅ，  Ｔ，  Ｆ｝は、文法を構成する要素を表している。また、ΣLＵΣRＵ｛(＋),(−) , *, /｝は、最終的に表記される記号を表している。すなわち、この文法は、表意文字Ｌ、実数Ｒ、および代数演算記号”(＋)”、”(−)” 、” ＊”、
”／”によって記述されることになる。さらに、文法Ｇの最後のＰ，Ｅは、生成規則Ｐ
によって、単位式Ｅが導出されることを意味している。なお、単位式の構成要素である項、因子、εも単位式であるので、単位式は、単位式から開始する。そして、生成規則Ｐにしたがって、新たな単位式が定義される。
【０１９９】
混乱のない範囲で各演算記号は省略可能とする。例えば、単位因子と単位因子を列記した場合には単位因子＊単位因子を表す。（＋）はΣで表現する場合もある。単位式表現の識別子の記述にルールを加えたものであり、式表現の識別子が単位計算代数の単位式Ｅに相当する。
【０２００】
図２０に、単位式の例を示す。図２０は、数２９に示した単位項と単位因子とからなる単位式を木構造で示したものである。
【０２０１】
【数２９】
2009110440.tif 000004
@0051
すなわち、数２９の単位式（Ｅ）は、単位項（Ｔ）と単位項（Ｔ）の代数加算で記述され
る。図２０の木構造は、生成規則を示している。例えば、最上部のＥとその下のＥおよびＴとは、生成規則Ｅ→Ｅ（＋）Ｔを示している。さらに、左下のＥとＴおよびその下層のＴＦとの関係は、生成規則Ｅ→＞Ｔ→Ｔ／Ｆを示している。この場合、Ｔ／Ｆは、＄５／pieceである。
【０２０２】
すなわち、数２９の第１項は、単位因子＄５と単位因子PIECEを代数除算記号”／”で
結合し、さらに、単位因子１０PIECEを代数乗算記号”＊”で結合して構成される。
【０２０３】
さらに、数２９の単位因子＄５は、文字因子＄と数値因子５の組み合わせで構成される。また、単位因子１０PIECEは、数値因子１０と文字因子PIECEとの組み合わせで構成される。
【０２０４】
数３０に、単位計算代数の性質を示す。
【０２０５】
【数３０】
2009110440.tif 000005
@0052
ここで、（１）は、文字因子ｕの０乗が単位元εになることを示している。また、（３）は乗算の単位元を示す。したがって、単位代数式を構成する数値因子と数値因子の列記、文字因子と文字因子の列記、数値因子と文字因子の列記、および文字因子と数値因子の列記はいずれも乗算を記述する。例えば、５＄とは、１ドルが数量５だけあることを意味し、１０PIECEは、１PIECEが１０個あることを表現する。
【０２０６】
（５）−（７）は、代数における指数の法則と同様である。（８）（９）は、代数加算と同様の演算順序の入れ替えを示している。また、（１０）は、代数加算における因子の交換が可能であることを示し、（１１）は乗算における因子の交換が可能であることを示している。ただし、（１１）では、数値因子と文字因子とを１つの因子と見なして、そのような因子（ｐｕ）と因子（ｑｖ）との間の交換が可能であることを示している。
【０２０７】
（１２）−（１９）は、因子の乗算での分配法則である。また、（２０）および（２１）は、文字因子の分配法則を示している。すなわち、数値因子ｐｑに対して、文字因子ｕを組み合わせた因子ｐｕおよびｑｕについて、文字因子ｕを括りだして、数値因子ｐとｑとの間の加減算が可能であることを示している。同様に、（２２）および（２３）は、数値因子ｐｑに対して、文字因子ｕｖを組み合わせた因子ｐｕおよびｑｖについて、文字因子ｕｖを括りだして、数値因子ｐとｑとの間の乗除が可能であることを示している。また、本単位計算代数では、除算は、−１乗（指数を−１とするべき乗）で記述することができる。
【０２０８】
数３１に、上記単位代数式の性質に基づく、単位計算関数ｆの定義式を示す。
【０２０９】
【数３１】
2009110440.tif 000006
@0053
また、関数ｆによる元とその像が等しくなるまでｆを繰り返し適用する写像をｆｗとする。ｆｗの簡単な例は以下の通りである。
fｗ((100euro/(1person*1day)*15persons+120euro/(1person*1day)*10persons)/1room*10rooms*3days)
= 81,000euro
関数ｆｗは、”／文字因子”で指定される単位数量を示す文字因子と、”＊数値因子文字因子”で示される数値因子（数量）の単位を示す文字因子との間を約分する処理によって、単位を示す文字因子を消去する処理を含む。そして、ｆｗは、単位が一致する項と項とを加算する。ただし、この関数の例では、dayとdays等、文字因子の単数形と複数形は
等しいとしている。一方、式において、＋を(＋)に、×を＊に変換し、式を表現レベルに移行する簡単な関数をgとし、表現レベル移行関数と呼ぶ。
【０２１０】
和演算“(＋)”また差演算“（−）”において、文字因子が等しくなければ処理は継続されない。簡単な例として、５０ｙｅｎ  (＋)  ５＄  におけるｙｅｎと＄は異なるので処理はこれ以上なされない。
（システムの概要）
次に、基本システムで説明した式表現に対して代数演算を実行する情報処理装置２００
の例について説明する。
【０２１１】
図２１は、情報処理装置２００のハードウェア構成を例示する図である。情報処理装置２００は、コンピュータプログラムを実行し、情報処理装置２００の機能を提供するＣＰＵ１３と、ＣＰＵ１３で実行されるプログラム、あるいは、ＣＰＵ１３が処理するデータを格納するメモリ１２と、インターフェース１５を介してＣＰＵ１３に接続される入力部１１と、インターフェース１６を介してＣＰＵ１３に接続される出力部１４とを有する。さらに、情報処理装置２００は、インターフェース３１を介してＣＰＵ１３に接続される通信部３２と、インターフェース３３を介してＣＰＵ１３に接続される外部記憶装置３４と、インターフェース３５を介してＣＰＵ１３に接続される着脱可能な記憶媒体アクセス装置３６とを有する。
【０２１２】
ＣＰＵ１３と、メモリ１２および各インターフェース１５、１６、３１、３３、および３５は、通常、ＣＰＵ１３の内部バスに接続される。インターフェース１５は、一般的には、ＵＳＢ等のシリアルインターフェースである。入力部１１は、キーボード、あるいは、マウス等のポインティングデバイスである。ポインティングデバイスは、機械的、または、静電容量でユーザの操作を検知するものでもよい。また、ポインティングデバイスとして、タッチパネルを用いてもよい。さらに、入力装置１１としてスキャナを用いてもよい。
【０２１３】
インターフェース１６は、例えば、アナログのＲＧＢ（赤緑青）の指定を含むインターフェースである。ただし、インターフェース１６は、シリアルまたはパラレルのデジタル信号インターフェースでもよい。例えば、ＩＥＥＥ１３４９、ＵＳＢ、ＤＶＩ（Digital Visual Interface) ＨＤＭ（High Definition Multimedia Interface) 等でもよい。出力部１４は、例えば、液晶ディスプレイ、プリンタ等である。
【０２１４】
インターフェース３１、３３、および３５は、ＵＳＢ等のシリアルインターフェース、ＳＣＳＩ（Small Computer System Interface）、ＩＤＥ（Integrated Drive Electronics）等のパラレルインターフェースである。通信部３２は、Ethernet（登録商標）等のＬ
ＡＮ基板である。
【０２１５】
このような情報処理装置の具体的な例としては、パーソナルコンピュータを例示できる。また、このような情報処理装置は、クライアント装置とサーバ装置を用いても構成できる。そして、サーバ装置としては、JSP1.4（商標）、ウェブサーバにはTomcat（商標）5.0を含むコンピュータを例示できる。クライアント装置とサーバ装置は同一種類のパーソ
ナルコンピュータで実現してもよい。そのようなパーソナルコンピュータは、例えば、OS：Windows（登録商標）XP、CPU：Intel Pentium（登録商標）ＩＩＩ1.10GHz、メモリ：1.23GB等、ハードディスク：20Gbyte等）としてもよい。
【０２１６】
図２２は、本実施例に係る情報処理装置２００の機能ブロックを例示する図である。各機能ブロックは、例えば、図２１の情報処理装置２００上で、コンピュータプログラムにより実現される。
【０２１７】
図２２は、情報処理装置２００が、例えば、入力部１１、出力部１４と、処理部４０によって構成できることを示している。処理部４０は、図２１に示した、ＣＰＵ１３、メモリ１２、外部記憶装置３４、着脱可能記録媒体アクセス装置３６等を含む。
【０２１８】
処理部４０は、図５と同様に、アプリケーションプログラムＡＰ１、ＡＰ２、共通関数ライブラリ４６、メモリ・外部記憶装置４５を含む。なお、ここでは、図２１のメモリ１２および外部記憶装置２４を総称して、メモリ・外部記憶装置４５という。また、図２２
では、情報処理装置２００専用のアプリケーションプログラムＡＰ１の他、一般的なテキストエディタＡＰ２を明示した。ユーザは、テキストエディタＡＰ２を通じて、基本システムで説明した式表現、あるいは、代数演算式をメモリ・外部記憶装置４５に格納してもよい。
【０２１９】
アプリケーションプログラムＡＰ１は、ユーザインターフェース画面制御部４１、要素情報編集・格納部４２、要素情報抽出・演算部４３、および代数演算部４４を含む。
【０２２０】
ユーザインターフェース画面制御部４１は、出力部１４に、ユーザインターフェース画面を表示する。そして、ユーザインターフェース画面制御部４１は、入力部１１からのユーザ操作を検出し、情報処理装置２００にそのユーザ操作に対応した指令を送る。例えば、各種入力欄へのユーザ入力データの検出、各種ボタンの押下、メニューの選択、コマンドの入力等である。
【０２２１】
要素情報編集・格納部４２は、出力部１４に表示されたユーザインターフェース画面を通じて、ユーザからの式表現の定義、代数演算式の定義等を受け取り、メモリ・外部記憶装置４５に格納する。ただし、式表現の定義、代数演算式の定義等は、テキストエディタＡＰ２から入力されることもある。また、例えば、入力部１１として、スキャナを接続し、紙面上の式表現の定義、代数演算式を入力してもよい。また、図２１の通信部３２を通じて、ネットワーク上の他のコンピュータ等から、式表現の定義、代数演算式を入力してもよい。
【０２２２】
要素情報抽出・演算部４３は、出力部１４に表示されたユーザインターフェース画面を通じて、ユーザから特定の識別子（例えば、集合ＩＤ、トポロジーＩＤ等）の指定を受け取る。そして、要素情報抽出・演算部４３は、その識別子によって、ユーザが指定した式表現中から、その指定された識別子を含む式表現を抽出する。この処理は、例えば、基本システムで説明した商演算、あるいは、部分集合取得処理により実行される。そして、要素情報抽出・演算部４３は、その指定された識別子を含む式表現を代数演算部４４に引き渡し、代数演算を実行させる。
【０２２３】
代数演算部４４は、式表現中から、積演算子”×”を代数乗算記号”＊”に変換する。また、代数演算部４４は、和演算子”＋”を代数加算記号”(＋)”に変換する。なお、この代数演算部４４の変換機能を式表現＝＞単位式への変換であり、表現レベル移行関数ｇである。また、本実施形態では、元々、式表現中の文字として、積演算子”×”、および和演算子”＋”以外に、文字列の一部として代数減算記号”（−）”、および代数除算記号”／”を含んでいる。
【０２２４】
そして、代数演算部４４は、変換された式に対して、代数演算を実行する。これは、通常の四則演算である。
【０２２５】
以上のように、本実施形態では、情報処理装置２００の主要な機能はＣＰＵ１３で実行されるコンピュータプログラムとして実現される。ただし、入力部１１、出力部１４、処理部４０、要素情報編集・格納部４２、要素情報抽出・演算部４３、代数演算部４４（式表現＝＞単位式への変換機能、および単位式の代数演算を部品として含む）その他、図２２に示した構成要素は、例えば、それぞれユニット（Ｕｎｉｔ）という用語で記述してもよい。ここでユニットとは、モジュールあるいはテーブル等を含み、以下のソフトウェアの構成要素（Ｃｏｍｐｏｎｅｎｔ）、または、ハードウェアの構成要素（Ｃｏｍｐｏｎｅｎｔ）によって実現される。ただし、ユニットが、以下の例に限定されるわけではない。
【０２２６】
すなわち、ユニットは、例えば、フィールド・プログラマブル・ゲートウェイ（ＦＰＧ
Ａ）、特定用途向け集積回路（ＡＳＩＣ）、ゲートアレイ、論理ゲートの組み合わせ、信号処理回路、アナログ回路、その他の回路網等であって、上記それぞれの構成要素の機能を実現するものを含む。
【０２２７】
ソフトウェアのユニット、例えば、ソフトウェアモジュールは、例えば、ソフトウェア部品、手続き型言語による部品、オブジェクト指向ソフトウェア部品、クラス部品、タスクとして管理される部品、プロセスとして管理される部品、関数、属性、手続き（プロシジャともいう）、サブルーチン（ソフトウェアルーチンともいう）、プログラムコードの断片・部分、ドライバ、ファームウェア、マイクロコード、データ、データベース、データ構造、テーブル、配列、変数、パラメータ等の構成要素を含む。さらに、これらの構成要素は、１または複数のＣＰＵ(Central Processing Unit)、あるいはＤＳＰ（Digital Signal Processor）等の処理装置上で実現される。
【０２２８】
ソフトウェアモジュールは、Ｃ言語、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）または他の多くの言語で記述できる。これらのソフトウェアモジュールは、１または複数の機械（あるいはコンピュータ）読み取り可能な記憶装置、例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、消去およびプログラム可能なリード・オンリー・メモリ（ＥＥＰＲＯＭｓ）、フラッシュメモリ、およびこれらいずれかのメモリを含むメモリカード；磁気ディスク、例えば、ハードディスク、フレキシブルディスク（フロッピー（登録商標）等）、および他の着脱可能なディスク媒体；他の磁気媒体、例えば、テープ；光媒体、例えば、コンパクトディスク（ＣＤｓ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｉｄｅ  Ｄｉｓｋ，Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）に格納できる。ただし、ソフトウェアのユニットあるは、ソフトウェアモジュール等に含まれる命令は、有線ネットワークカードと有線ネットワーク、あるいは無線カードと無線ネットワークを通じてコンピュータ等の機械、あるいは装置に転送あるいはローディングし、実行できる。そのような転送処理、あるいは、ローディング処理において、データ信号は例えば搬送波に組み込まれ（embodied as carrier waves）、有線あるいは無線ネットワークを転送される。た
だし、データ信号が搬送波によらず、いわゆるベースバンド信号のまま転送される場合もある。
【０２２９】
以上のような機能を実現するプログラム、命令コード、コードセグメントは、本技術分野の通常のプログラマであれば構成できる。また、上記機能を実現する電気回路網は、本技術分野の通常の回路技術者であれば構成できる。
【０２３０】
（表現レベル移行アルゴリズム）
図２３に、情報処理装置２００が式表現を表現レベルの単位式に変換する手順を例示する。この処理は、例えば、情報処理装置２００中のサブルーチン等のコンピュータプログラムの部分として、実現される。この処理では、まず、変換対象の式表現が入力される（ＰＳ３０）。入力されるとは、例えば、引数によって式表現がサブルーチンに引き渡されることをいう。ただし、ハードディスク等の外部記憶装置３４、通信部３２、あるいは、入力部１１を通じて情報処理装置２００に式表現が引き渡される場合も含む。
【０２３１】
次に、情報処理装置２００は、式表現中のすべての演算子（積演算子×、および和演算子＋）を処理したか否かを判定する（ＰＳ３１）。すべての演算子を処理していない場合、情報処理装置２００は、次の演算子を取り出す（ＰＳ３２）。そして、情報処理装置２００は、式表現の演算子（積演算子×、および和演算子＋）を表現レベルの処理記号（代数乗算記号＊、代数加算記号(＋)）に変換する（ＰＳ３３）。
【０２３２】
その後、情報処理装置２００は、制御をＰＳ３１に戻す。そして、式表現中のすべての
演算子を処理すると、情報処理装置２００は、処理を終了する。
【０２３３】
（単位式を計算するアルゴリズム）
図２４、２５は単位式を計算するアルゴリズムの概要を例示するフローチャートである。このアルゴリズムは、本実施形態の情報処理装置２００のＣＰＵで実行されるコンピュータプログラムとして情報処理装置２００に実装される。また、図２６は、このアルゴリズムによって、単位式(100円/1本*10本+200円/１冊*５冊)/1セット*20セットを計算する
例である。
【０２３４】
この処理の特徴は、（）型の単位因子に対してなされる再帰処理にある。これは（）型の単位因子の中身がトポロジー空間を継承し、再帰的に単位式になることによる。単位項の計算において、項における単位因子はそれぞれ数値因子と文字因子に分離され、それらは別々に計算される。そして、それらは結合され再び単位因子となり次の処理に進む。以下、図２４−図２６により説明する。
【０２３５】
情報処理装置２００は、処理を開始すると（ＰＳ１）、処理前の単位式Ｅ１を入力する（ＰＳ２）。ここで、単位式Ｅ１を入力するとは、例えば、図２４および図２５のアルゴリズムを実現するコンピュータプログラムのサブルーチンが引数を通じて、単位式Ｅ１を引き渡されることをいう。また、例えば、インターフェース１５を通じて、入力部１１から単位式Ｅ１を入力する場合をも含む。また、例えば、入力部１１からハードディスク等の外部記憶装置３４上のファイル名を指定され、指定されたファイルから単位式Ｅ１を読み出すことも含む。以下、図２６に示したように、次の数３２に示す単位式を処理する例を示す。
【０２３６】
(100円/1本*10本+200円/１冊*５冊)/1セット*20セット・・・（数３２）
ここでは、処理前（および処理中）の単位式Ｅ１を処理して得られる処理中（および処理後）の単位式をＥ２としている。また、処理前（および処理中）の単位式の最初の（およびそれに続く）単位項をＴ１とし、Ｔ１に含まれる最初の（およびそれに続く）単位因子をＦ１としている。さらに、単位式Ｅ２の最初の（およびそれに続く）単位項をＴ２としている。
【０２３７】
「処理前（および処理中）」としたのは、処理前の単位式中の単位因子あるいは単位項が処理の進行とともに削除され、残りの単位式について、最初の単位式と同様に、処理されるためである。すなわち、「最初の（およびそれに続く）」とは、「未処理部分のうちの先頭の」という意味である。「最初の（およびそれに続く）」、「処理中（および処理後）」についても同様のことを意味している。
【０２３８】
本情報処理装置２００は、まず、処理後の単位式Ｅ２を初期値εに設定する（ＰＳ３）。そして、本情報処理装置２００は、単位式Ｅ１の長さが０か否かを判定する（ＰＳ３Ａ）。単位式Ｅ１の長さが０でない場合、単位式Ｅ１から先頭の単位項Ｔ１および処理記号Ｓ１を取得する（ＰＳ４）。ここで、処理記号Ｓ１は、単位項Ｔ１と、Ｔ１の次の項との演算を示す代数演算記号である。図２６に示すように、数３２の例では、Ｔ１として、Ｅ１そのものである数３２が得られる。なぜなら、Ｓ３２の例では、単位式は、単一の単位項で構成され、後続する単位項がないからである。また、この時点では、現在処理中のＴ１は、Ｅ１の先頭の単位項であるので、処理記号Ｓ１として、”１”を示すεが設定される。また、図２４の処理では省略されているが、Ｅ１から単位項Ｔ１が取得されると、取得された単位項Ｔ１がＥ１から削除される。この例では、Ｅ１は、ＮＵＬＬになる。
【０２３９】
次に、本情報処理装置２００は、処理後の単位項Ｔ２を初期値εに設定する（ＰＳ５）。次に、本情報処理装置２００は、単位項Ｔ１の長さが０か否かを判定する（ＰＳ５Ａ）
。単位項Ｔ１の長さが０でない場合、単位項Ｔ１から先頭の単位因子Ｆ１および処理記号Ｓ２を取得する（ＰＳ６）。ここで、処理記号Ｓ２は、単位因子Ｆ１と、Ｆ１の次の因子との演算を示す代数演算記号である。図２６の第７行に示すように、数３２の例では、Ｆ１として、括弧”（）”で括られた数３３が得られる。
【０２４０】
(100円/1本*10本+200円/１冊*５冊)・・・（数３３）
また、現在処理中の単位因子Ｆ１は、Ｅ１の先頭の単位因子であるので、処理記号Ｓ２として、”１”を示すεが設定される。また、図２５の処理では省略されているが、単位項Ｔ１から単位因子Ｆ１が取得されると、取得された単位因子Ｆ１がＴ１から削除される。この例では、Ｔ１は、”／１セット＊２０セット”になる。
【０２４１】
次に、本情報処理装置２００は、現在処理中の単位因子Ｆ１が括弧”（）”で括られた因子か否かを判定する（ＰＳ６Ａ）。なお、ここでは、括弧”（）”で括られた因子を括弧”（）”型の因子という。
【０２４２】
そして、現在処理中の単位因子Ｆ１が括弧”（）”型である場合、本情報処理装置２００は、Ｆ１中の（）の中を再帰的に処理し、その結果を再びＦ１とする（ＰＳ７）。この再帰的処理により、Ｆ１として２０００円が設定される。
【０２４３】
一方、現在処理中の単位因子Ｆ１が括弧”（）”型でない場合、あるいは、ＰＳ７の再帰的処理が終了した場合、本情報処理装置２００は、処理後の単位項Ｔ２を処理中の単位因子Ｆ１と処理記号Ｓ２にしたがって計算し、その結果を再びＴ２とする（ＰＳ８）。この時点では、処理後の単位項Ｔ２および処理記号Ｓ２は、ともにεであるので、処理中の単位因子Ｆ１がそのまま処理後の単位項Ｔ２に設定される。したがって、Ｔ２は、２０００円になる（図２６の第３９行目）。なお、図２６の備考欄に行番号を付する。ここで、第１行目は、カラムの表題を表示する説明行である。
【０２４４】
次に、本情報処理装置２００は、制御を５Ａに戻す。その結果、図２６の”再帰終了
”の次の行（３７行目）以降に示すように、本情報処理装置２００は、処置中の単位項Ｔ１として、”／１セット＊２０セット”を処理する。この場合に、Ｆ１として、”１セット”が取り出される。また、処理記号Ｓ２として、”／”が取り出される。さらに、処理前の単位項Ｔ１は、”／１セット”が除外され、”＊２０セット”となる（ＰＳ７）。
【０２４５】
そして、処理後の単位項Ｔ２とＦ１とが処理記号Ｓ２（すなわち、”／”）によって計算され、その結果がＴ２となる。この場合に、Ｔ２は、２０００円（セット）-1ということになる（ＰＳ８）。１セットは、単にセットとして記述され、代数除算記号が−１乗に変換されるためのである。
【０２４６】
同様の処理を繰り返して、処理中の単位因子Ｆ１として、２０セット、処理記号Ｓ２として、代数乗算記号＊が取り出される（ＰＳ７）。そして、処理後の単位項Ｔ２とＦ１（すなわち、”２０セット”）とが処理記号Ｓ２（すなわち、”＊”）によって計算され、その結果がＴ２となる。この場合に、Ｔ２は、４００００円ということになる（ＰＳ８）。
【０２４７】
さらに、本情報処理装置２００は、処理後の単位式Ｅ２と単位項Ｔ２とを処理記号Ｓ１にしたがって、計算し、その結果を再びＥ２とする（ＰＳ９）。この場合、処理後の単位式Ｅ２および処理記号Ｓ１は、ともにεであるので、処理後の単位項Ｔ２がそのまま処理後の単位式Ｅ２に設定される。したがって、Ｔ２は、４００００円になる（図２６の最終行（第４７行））。
【０２４８】
そして、本情報処理装置２００は、制御をＰＳ３に戻す。このような処理によって、処理中の単位式Ｅ１の長さが０になると、処理後の単位式Ｅ２を出力部１４に出力する。そして、本情報処理装置２００は、処理を終了する。
【０２４９】
以下、図２６にしたがって、ＰＳ７の再帰的処理を詳述する。ＰＳ７の処理で、数３２に示した単位式の括弧”（）”の中の式により、図２４のＰＳ２での単位式Ｅ１として、数３３の括弧内が引き渡される。その結果、処理前の単位式Ｅ１として”100円/1本*10本+200円/１冊*５冊”が設定される。
【０２５０】
すると、情報処理装置２００は、先頭の単位項Ｔ１として、”100円/1本*10本”を取り出す（ＰＳ４）。このとき、処理記号Ｓ１は、εである。また、単位式Ｅ１からＴ１が除外されるので、Ｅ１は、”+200円/１冊*５冊”となる。
【０２５１】
さらに、Ｔ１の長さが０でないので、本情報処理装置２００は、先頭の単位因子Ｆ１として、”100円”を取り出す。その結果、Ｔ１は、”/1本*10本”となる（ＰＳ６）。このとき、処理記号Ｓ２は、εである。そのため、処理後の単位項Ｔ２としてＦ１がそのまま設定される（ＰＳ８）。その結果、Ｔ２は、１００円となる。その後、情報処理装置２００は、制御をＰＳ３に戻す。
【０２５２】
すると、Ｔ１の長さがやはり０でないので、本情報処理装置２００は、先頭の単位因子Ｆ１として、”１本”を取り出す。その結果、Ｔ１は、”*10本”となる（ＰＳ６）。こ
のとき、処理記号Ｓ２は、”／”である。そして、情報処理装置２００は、Ｔ２とＦ１（すなわち、”１本”）とを処理記号Ｓ２（すなわち、”／”）によって計算する（ＰＳ８）。その結果、Ｔ２は、１００円（本）-1となる（図２６では、見やすさを考慮し、“１００円（本）−１“のように、指数を大きく記載している）。さらに、ＰＳ５ＡからＰＳ８までの処理を繰り返すことによって、Ｔ２には、１００円（本）-1*10本の結果である
１０００円が格納される。このとき、Ｔ１は、長さが０になるので、制御はＳ５ＡからＰＳ９に移動する。そして、処理後の単位式Ｅ２には、Ｔ２すなわち、１０００円が設定される。
【０２５３】
次に、本情報処理装置２００は、制御をＰＳ３Ａに戻す。このとき、処理中の単位式Ｅ１には、”+200円/１冊*５冊”が残っているので、同様の処理が繰り返される。その結果、Ｔ２には、200円（１冊）-1*５冊の結果である１０００円が格納される。また、処理記号Ｓ１は、”（＋）”である（図２６では、○中に＋が組み込まれた記号である）。そして、Ｅ２（このとき、”１０００円”）と、Ｔ２（このとき、”１０００円”）とが、処理記号Ｓ１（このとき、”（＋）”）によって計算され、２０００円がＥ２に設定される。その結果、再帰呼び出し後のＥ２は、２０００円となる。
【０２５４】
以上述べたように、図２４および図２５にしたがって、数値因子ｐ、ｑと文字因子ｕ，ｖとからなる因子ｐｕ、因子ｑｖと、代数の加減乗除を示す（＋）、−、＊、／とで記述された表現レベルの単位式を代数演算したがって計算する。このとき、商品の単位数量あたりの価格を、例えば、”ＮＮＮ円／単位”で記述し、供給量を”ＱＱＱ単位”で記述することによって、”／単位”と”単位”とを約分し、供給量全体の価格を求めることができる。この場合、貨幣単位の一致した項と項とが加算される。すなわち、情報処理装置２００は、単価に含まれる数値と提供量に含まれる数値について乗算を適用し、除算した形式で記述された単位量を示す文字または文字列と前記乗算した形式で記述された単位量を示す文字または文字列とを約分し、同一の貨幣単位を示す文字または文字列を有する２以上の要素に含まれる数値に加算を適用する。
【０２５５】
さらに、例えば、そのような商品が商品Ａ１、単価Ｐ１、単位１、数量Ｎ１、商品Ａ２
、単価Ｐ２、単位２、数量Ｎ２、・・・のように組み合わせたものを出荷物Ｘ１とする。また、商品Ｂ１、単価Ｑ１、単位３、数量Ｍ１、商品Ｂ２、単価Ｑ２、単位４、数量Ｍ２、・・・のように組み合わせたものを出荷物Ｘ２とする。
【０２５６】
そして、製品Ｘ１をＹ１セット、製品Ｘ２をＹ２セット組み合わせた出荷物の合計を（Ｐ１／単位１＊Ｎ１単位１＋Ｐ２／単位２＊Ｎ２単位２）＊Ｙ１＋（Ｑ１／単位３＊Ｍ１単位３＋Ｑ２／単位４＊Ｍ２単位４）＊Ｙ２のように階層的に記述された単位式を図２４、図２５のアルゴリズムにしたがって、処理できる。
【０２５７】
一方、本情報処理装置２００は、基本システムで述べた情報処理装置１００と同様の手順で式表現を入力し、記憶し、処理する。例えば、情報処理装置２００は、部品Ａ×単価／単位×提供量×単位＋部品Ｂ×単価／単位×提供量×単位・・・というような式表現を記憶する。本情報処理装置２００は、このような式表現を表現レベルの式表現に変換し、図２４および図２５の手順にしたがって代数演算を実行することが可能である。
【０２５８】
《第２実施形態》
以下、顧客情報を管理する業務アプリケーションに、情報処理装置２００を適用した例を説明する。したがって、情報処理装置２００の構成そのものは基本システムあるいは第１実施形態と同様である。すなわち、情報処理装置２００は、式表現および表現レベルの単位式が処理可能である。そこで、本実施形態において、基本システムあるいは第１実施形態と同一の構成要素については、同一の符号を付してその説明を省略する。
【０２５９】
今、顧客データのセル空間の式（数３４）を入力する。
顧客情報×顧客コード｛ε＋氏名＋会社＋年齢＋大学＋趣味｝（Ｔ１｛ε＋小嶋＋Ｔ社×営業部＋３０＋Ｗ大＋｛ゴルフ＋将棋｝｝）＋顧客情報×顧客コード｛ε＋氏名＋会社＋年齢＋大学＋趣味＋性格｝（Ｆ１｛ε＋能見＋Ｆ社＋４５＋｛Ｋ大＋Ｔ大｝＋盆栽＋お人好し｝）＋顧客情報×顧客コード｛ε＋氏名＋会社＋年齢＋大学＋趣味＋家族｝（Ｐ１｛ε＋赤星＋Ｐ社＋３６＋Ｆ大＋ゴルフ＋｛妻＋子供×２人｝｝）・・・（数３４）    
図２７は、ユーザインターフェースからの入力例である。図２７のように、本情報処理装置のユーザインターフェースは、ファイル名入力欄１００、属性入力欄１０１、属性値入力欄１０２、”項目の追加”ボタン１０３、”項目の削除ボタン”１０４および登録ボタン１０５を含む。
【０２６０】
このユーザインターフェースは、初期状態では、例えば、１つの属性入力欄１０１と、対応する属性値入力欄１０２を有する。ユーザが、入力部１１を通じて”項目の追加”ボタン１０３を操作すると、その操作に応じて属性入力欄１０１および属性値入力欄１０２の組が追加される。一方、ユーザが、入力部１１を通じて”例えば、項目を選択し、さらに、項目の削除”ボタン１０４を操作すると、その操作に応じて属性入力欄１０１および属性値入力欄１０２の組が削除される。
【０２６１】
ユーザは、入力部１１を通じて属性入力欄１０１に属性値、あるいは、項目名を入力する。また、ユーザは、入力部１１を通じて属性値入力欄１０２に、それぞれの属性に対する属性値を入力する。例えば、図２７の左下の画面Ｇ１では、顧客コード：Ｔ１、氏名：小嶋、会社：Ｔ社×営業部、年齢：３０歳、大学：Ｗ大、趣味：ゴルフ、将棋が入力されている。本情報処理装置２００は、式表現を処理できるので、会社として、会社名である”Ｔ社”と所属部門である”営業部”を積演算子で結合して入力できる。また、一時的に、会社名だけを入力しておき、配属が決定する等、後の段階で、所属部署を入力できる。すなわち、情報処理装置２００は、属性値を詳細化して追加入力できる。
【０２６２】
図２７の右下の画面Ｇ２では、Ｇ１と比較して、さらに属性”性格”が追加されている
。そして、Ｇ１と同様に、顧客コード：Ｆ１、氏名：能見、会社：Ｆ社、年齢：４０歳、大学：Ｋ大＋Ｔ大、趣味：盆栽、性格：お人好しが入力されている。本情報処理装置２００は、式表現を処理できるので、１つの入力欄に、Ｋ大学＋Ｔ大学のように、２つの値の組み合わせを入力できる。その場合、最初に値（Ｋ大）を入力しておき、後になって、追加の情報（Ｔ大）を入力できる。さらに、顧客コードで識別されるデータの固まり（基本システムでの部分集合に相当）ごとに、異なる種類の属性（例えば、”性格”）を追加できる。
【０２６３】
このように、ファイルをユーザ自ら設計し、詳細化された値、複数の値が入力可能であることが分かる。また、次のような顧客についてメモのデータを入力し、メモリ・外部記憶装置４５に記憶する。入力は、例えば、テキストエディタＡＰ２あるいは図２７のようなユーザインターフェースを利用すればよい。ただし、専用のユーザインターフェース画面を設けてもよい。このとき、トポロジー空間の式を作成して前式に追加する。
「２００７年４月２日と５月３日に、Ｍ社の児玉がＴ社の小嶋さん（事業部部長）さんと会いセルＤＳ事業化のための打ち合わせをした。小嶋さんの娘さんはＪ大卒の女医である。小嶋さんはＨ大の國井研究室出身でＳ社の山田氏と高校時代、同窓であることが分かった。」
…+メモ１（２００７年×（４月×２日＋５月×３日））（セルＤＳ事業化×打ち合わせ
｛児玉＋小嶋×事業部長｝｛Ｍ社＋Ｔ社｝  ＋小嶋（娘×Ｊ大×女医）＋Ｈ大学×國井研究室＋高校の同窓（小嶋＋山田×Ｓ社））・・・（数３５）
ここで、数３５の先頭の”・・・”は、数３４に追加されるので、数３４の式表現が省略されていることを示している。以下、同様である。
【０２６４】
このように、メモのような形式のないデータもトポロジー空間の式として、文章のようにして入力し、メモリ・外部記憶装置４５への記憶が可能である。メモは、通常は、テキストエディタで入力すればよい。ただし、図２７の画面で、ファイル名をメモ1(2007年×（4月×2日+5月×3日）)とし、属性を”セルDS事業化×打ち合わせ｛児玉+小嶋×事業部
長｝とし、属性値を｛Ｍ社＋Ｔ社｝としてもよい。この場合、属性｛児玉+小嶋×事業部
長｝および対応する属性値は、図２７の同一欄で設定してもよいし、異なる欄で設定してよい。例えば、また、セルDS事業化×打ち合わせ×児玉を１の属性とし、Ｍ社をその属性値とすればよい。セルDS事業化×打ち合わせ×小嶋×事業部長を１の属性とし、Ｔ社をその属性値とすればよい。数３５の”小嶋(娘×Ｊ大×女医)”以降についても、同様のユーザインターフェース画面で入力できる。ただし、本発明の実施においてユーザインターフェース画面の構成に限定あるわけではない。
【０２６５】
次に、他のデータとして、商品データのセル空間の式（数３６）を作成し、前式に追加する。この場合のユーザのインターフェースとしては、図２７と同様のインターフェース画面を通じて入力してもよい。ただし、テキストエディタＡＰ２を用いてもよい。
【０２６６】
すなわち、図２７の顧客コードに代えて、商品コードを設定する。また、氏名、会社、年齢、大学、趣味、性格等に代えて、商品名、色、価格、在庫数を設定すればよい。そして、例えば、最初の商品コード：Ｓ１、商品名：ゴルフ＊クラブ１、色：黒、価格：２００００円／本、在庫数：１０本等を設定すればよい。このように、図２７のユーザインターフェースは、セル空間ＩＤに相当する商品情報、顧客情報等の入力欄が省略されているが、キー属性、属性、属性値からセル空間情報を簡易に入力できる。
…+商品情報×商品コード｛ε＋商品名＋色＋価格＋在庫数｝（Ｓ１｛ε＋ゴルフ＊クラ
ブ１＋黒＋２００００円／本＋１０本｝＋Ｓ２｛ε＋ゴルフ＊クラブ２＋灰＋３００００円／本＋２０本｝）＋商品情報×商品コード｛ε＋商品名＋価格＋在庫数｝（Ｓ３｛ε＋ゴルフ＊ボール１＋１００円／個＋１０００個｝）＋商品情報×商品コード｛ε＋商品＋色＋価格＋サイズ×在庫数｝（Ｓ４｛ε＋ゴルフ＊シューズ１＋白＋１８０００円／足＋
｛Ｌ＋Ｍ＋Ｓ｝｛１００足＋５０足＋３０足｝｝＋Ｓ５｛ε＋サッカー＊シューズ１＋白＋１２０００円／足＋｛Ｌ＋Ｍ｝｛１００足＋５０足｝｝）・・・（数３６）
ユーザが指定した単語に関連するデータを出力したいとき、情報処理装置２００は、ユーザの指示を受け付け、まず入力された式の縦方向展開処理（展開写像ともいう）による像を求め、次に指定の単語を括り因子として、部分集合取得処理（括り写像ともいう）により括り項を求める。例えば、上述の式から”ゴルフ”に関するデータが欲しいとき、因子”ゴルフ”を括り因子にして括ると、それぞれ顧客データ、商品データの中から括り項として次の式が取得される（数３７）。この処理は、図１５に示した通りである。
｛顧客情報×顧客コード×趣味｛Ｔ１＋Ｐ１｝＋商品情報×商品コード×商品名×｛Ｓ１＋Ｓ２＋Ｓ３｝｝ゴルフ｛｛ε＋ε｝＋｛クラブ１＋クラブ２＋ボール１＋シューズ１｝｝・・・（数３７）
数３７は、「ゴルフを趣味にしているのは、顧客コードT1、P1の顧客であり、またゴルフ関連商品はクラブ１、クラブ２、シューズ２である」ことを示している。図２８は数３７のユーザインターフェースへの出力例である。図２８のように、異なる部分集合である顧客情報Ｔ１、顧客情報Ｐ１、商品情報Ｓ１等で、”ゴルフ”という文字列を属性値の一部に持つ部分集合の要素が抽出される。
【０２６７】
さらに、商品としては、ゴルフ×クラブ、ゴルフ×シューズ、ゴルフ×ボール等で記述されていたものが、文字列である識別子”ゴルフ”によって括り出されて表示される。
【０２６８】
また、以下の売上が立ったとき、ユーザは入力インターフェースを通じて売上データのセル空間の式（数３８）を作成し、前式に加える。すなわち、図２７の画面で、ファイル名を4月×2日×T1×購入、属性をそれぞれS1,S3,S4、値をそれぞれ20000円/本×2本,100
円/本×100個,18000円/足×1足として入力する。
【０２６９】
「小嶋氏（顧客コード：T1）が、４月２日にゴルフクラブ（商品コード：S1、価格：20000円/本）、ゴルフボール（商品コード：S3、価格：100円/本）、ゴルフシューズ（商品コード：S4、価格：18000円/足）を、それぞれ2本、100個、１足、購入した。同じく小嶋氏が５月３日にサッカーシューズ（商品コード：S5、価格：12000円）を１足購入した。
」
…＋４月×２日×Ｔ１×購入｛Ｓ１＋Ｓ３＋Ｓ４｝｛２００００円／本×２本＋１００円／本×１００個＋１８０００円／足×１足｝＋５月×３日×Ｔ１×購入｛Ｓ５｝｛１２０００円／足×１足｝・・・（数３８）
ここで、”小嶋氏（顧客コード：T1）が購入した商品の金額合計を知りたい”、という要求がユーザからあったとき、情報処理装置２００は、入力された式を”T1”、”購入”を括り因子にして括り、括り項の第３因子の｛｝の中の項を第一因子で揃えると次の式（数３９）が得られる。この処理は、数３８の式に対し、まず、識別子”T1”による商演算を実行し、その商項にさらに識別子”購入”による商演算を実行すればよい。また、同様処理を部分集合取得処理によって実行してもよい（基本システムの説明参照）。
｛４月×２日＋５月×３日｝Ｔ１×購入｛｛Ｓ１＋Ｓ３＋Ｓ４｝＋｛Ｓ５｝｝｛｛２００００円／本×２本＋１００円／本×１００個＋１８０００円／足×１足｝＋｛１２０００円／足×１足｝｝・・・（数３９）
情報処理装置２００は、数３９の第４因子をgで表現レベルに移行し、ｆｗによる像を
求めると、数４０のように求められる。ｆｗの処理は、図２４および図２５に示した通りである。
ｆｗ（ｇ（｛｛２００００円／本×２本＋１００円／本×１００個＋１８０００円／足×１足｝＋｛１２０００円／足×１足｝｝））
＝  ｆｗ（｛｛２００００円／本＊２本  （＋）  １００円／本＊１００個  （＋）  １８０００円／足＊１足｝  （＋）  ｛１２０００円／足＊１足｝｝）
＝  ８０，０００円・・・（数４０）
図２９に、購入金額合計処理のフローチャートを例示する。この処理では、情報処理装置２００は、ユーザインターフェース画面を通じて、ユーザから購入商品を識別する情報（商品Ｓ１）、単価（単価の金額額（Ｎ円）／単位量（個）を示す文字列）、購入量（Ｍ個）の入力を受け付ける（Ｓ９１０）。入力結果は、例えば、購入商品を識別する情報（商品Ｓ１）×単価の金額額（Ｎ円）／単位量（個）を示す文字列）×購入量（Ｍ個）の形式でメモリ１２に格納される。
【０２７０】
そして、情報処理装置２００は、合計処理を実行するか否かをユーザインターフェース画面への操作から判断する（Ｓ９１２）。合計処理を実行しない場合、情報処理装置２００は、制御をＳ９１０へ戻す。これによって、ユーザは、購入した商品と金額を自在に入力できる。また、合計処理を実行する場合、情報処理装置２００は、メモリ１２に格納済みの購入商品に関する式表現を単位式に変換する（Ｓ９１４）。
【０２７１】
ここで、Ｓ９１４の処理の対象となる式表現は、通常は、現在処理中の式表現である。ただし、例えば、数３９のように、ユーザから顧客コードＴ１、属性”購入”のように、合計処理の対象の指定を受け付けて、処理の対象を抽出してもよい。また、｛４月×２日＋５月×３日｝のように、日付を特定する属性値の指定を受け付けて、処理の対象を抽出してもよい。
【０２７２】
次に、情報処理装置２００は、単位式の算術演算ｆｗ（）により合計金額を算出する（Ｓ９１６）。そして、情報処理装置２００は、合計金額を出力する（Ｓ９１８）。その結果、合計金額が、ディスプレイ等に表示される。
【０２７３】
なお、図２９の処理では、購入金額の入力（Ｓ９１０の処理）と合計金額の算出処理（Ｓ９１４−Ｓ９１８）を一連の処理として、説明している。しかし、図２９の処理は、一例である。例えば、情報処理装置２００が格納する式表現は、メモリ１２に保存され、後日さらなる追加が可能である。そして、追加した購入金額を含む合計処理を後日実行してもよい。
【０２７４】
（同義語データの取り扱い）
データ入力に自由度を持たせると、同義語データの扱いは常に発生する問題である。同義語集合とは、表記は異なるが、意味が等しい単語の集合であり、近さを表すトポロジー空間の一ケースと言うことができる。この対応にはアプリケーション開発が必要になる。本情報システムにはトポロジーレベルで近さの概念が導入されているので、単語の近さを表現可能でき、同義語データを扱うアプリケーションには適している。同義語のトポロジー空間の式の例を上げる。
synonyms((arise+ascend+(climb up+climb on)+(go up+go on)+increase+grow+(move up+move upwards)+raise+mount+...)+(go down+come down+decay+decline+drop+(fall+fall down)+sink+tamble)+...)・・・（数４１）
この同義語の例では、arise、ascend、(climb up+climb on)、(go up+go on)、increase、grow、(move up+move upwards)、raise、mount等が同一範囲の近さの同義語として、
定義され、さらに、climb upとclimb onとがさらに親密な関係にある同義語として定義されている。
【０２７５】
また、以下の顧客データを表すセル空間の式と同義語のトポロジー空間の式の和があるとする。また、同義語の式から指定された単語の同義語を取得する関数をhとする。
customerInformation×customerCode｛ε+name+company+age ｝(C1｛ε+Ishiguro+M-corp.+47｝+C2｛ε+Sato+Y-corporation+58｝+C3｛ε+Akiyama+F-corp.+42｝+C4｛ε+Kayama+M-corporation+55｝+...)+synonym((M-corp.+M-corporation)+(F-corp.+F-corporation+F-CORP.)+...)・・・（数４２）
ここで、会社がM-corp.の顧客のコードを知りたい、という要求があるとき、以下の処
理を行う。まず、M-corp.の同義語をhにより取得する。
(M-corp.+M-corporation) = h(数４２の式,M-corp.)・・・（数４３）
図３０に、単語の同義語を取得する関数ｈのフローチャートを例示する。この処理は、情報処理装置２００で実行されるプログラムのサブルーチンとして実現される。この処理では、情報処理装置２００は、同義語の一方の入力する（Ｓ１０２０）。ここで、同義の一方を検索元の同義語（図３０の例では、Ｗ０）と呼ぶ。また、「入力する」という意味は、図２４、図２５と同様である。
【０２７６】
次に、情報処理装置２００は、識別子Ｗ０によって同義語のトポロジー空間SYNONYMSの位置を検索する（Ｓ１０２２）。ここで、位置を検索するとは、トポロジー空間SYNONYMSで、文字列”Ｗ０”を見い出し、文字列”Ｗ０”を含む最も内側の括弧（すなわち、”（”と”）”を見い出すことをいう。
【０２７７】
次に、情報処理装置２００は、トポロジー空間中で、識別子”Ｗ０”の左側に存在する括弧”（”から右側に存在する括弧”）”までの式表現を抽出する（Ｓ１０２４）。そして、情報処理装置２００は、Ｓ１０２４で抽出した式表現を同義語として出力する（Ｓ１０２６）。ここで、出力するとは、例えば、引数によって、サブルーチンの呼び出し元に引き渡すことをいう。
【０２７８】
次に、情報処理装置２００は、数４２を商演算（分割写像ともいう）により順に、得られたM-corp.およびM-corporationで分割すると以下の式（数４４）が得られる。第一項が商項である。商演算の手順は、図１１Ａ−図１１Ｃ、図１２Ａ−図１２Ｃに示した。
customerInformation×customerCode×company×C1×M-corp.+customerInformation×customerCode×company×C4×M-corporation+customerInformation×customerCode×company(C2×Y-corporation+C3×F-corp.)+customerInformation×customerCode｛ε+name+age 
｝(C1｛ε+47｝+C2｛ε+Sato+58｝+C3｛ε+Akiyama+42｝+C4｛ε+Kayama+55｝+...)・・
・（数４４）
次に、その商項を同義語であるM-corp.、M-corporationで接着写像により接着すると以下の接着空間が得られる。
customerInformation×customerCode×company×｛C1+C4｝｛M-corporation+M-corp. ｝
・・・（数４５）
会社がM-corp.の顧客は、顧客コードがC1,C4の顧客であることが分かる。このように、各関数を順次使用すれば欲しいデータが得ることができる。また、会社M-corp.の支店名
の同義語データを扱う要求が生じたときは以下のように記述する。
(M-corp.+M-corporation)((OSAKA-branch+osaka-branch)+(TOKYO-branch+tokyo))・・・
（数４６）
このようにトポロジー空間の式は式表現の規則にしたがった記号で情報を記述できる。その場合に、記述の仕方に必ずしも一貫性がない場合でも、上記のように同義語に定義することで、情報処理装置２００が取り扱うことができる。例えば、M-corpという文字列と、M-corporationという異なる２つの文字列が、同一の意味で混在して使用されているデ
ータについても、同義語の定義を参照することによって、本実施形態の処理を適用できる。また、本情報処理装置２００では、基本的に記号で記述するため、記述が柔軟である。その一方、式表現の規則にしたがって、記述されるので、基本システム、第１実施形態で述べた演算で統一的に処理できる。したがって、例えば、データ構造に変化がある場合でもアプリケーションに対する大幅なメンテナンスの可能性を低減できる。
【０２７９】
（効果）
本情報処理装置２００を利用すれば上述のように、顧客データのみならずメモ情報や商品データ等の各種データを同時に容易に入出力することが可能である。このとき、式とユ
ーザインターフェースのデータマッピング以外のアプリケーションプログラムの開発が簡略化される。そのため、メンテナンス作業の減少できる。これは開発コスト、メンテナンスコストの大幅削減につながる。
【０２８０】
《第３実施形態》
（概要）
以下、式表現および表現レベルの代数演算を適用し、見積システムを構成する例を挙げる。見積システムはほとんどの産業で一般的に開発されているシステムである。データ構造はノードに属性を持つ再帰的なグラフ構造であり、見積の対象情報が再帰的に各階層で積み上げられる。
【０２８１】
（トポロジー空間の設計例）
本情報処理装置２００では、製品に含まれる材料を以下のようなトポロジー空間の式表現（数４７）で記述する。ここで、数４７は、各材料１単位を記述しているトポロジー空間の式表現である。また、図３１は、トポロジー空間に存在する製品、部品の関係を階層化して表示した例である。材料１、材料２等は、それぞれの部分集合ＩＤである。また、トポロジーＩＤは省略されている。
材料1(1000円/m2)m2
+材料2(1200円/m2)m2
+材料3(2000円/m)m
+材料4(500円/個)個
+作業1(8000円/日)日
+作業2(10000円/日)日
+作業3(12000円/日)日・・・（数４７）
次に、見積”部品１（単位は個）”を”材料１が10m2、材料２が15m2、作業１が2日”
として作成し、式に追加する。追加分を数４８に示す。数４８では、省略するが、この追加分は、トポロジーＩＤとして、ＥＶＡＬ2,1と設定する。なお、図面中は、見やすさを
考慮し、ＥＶＡＬ２，１の表す。以下、同様である。
... ＋（部品１｛材料１＋材料２＋作業１｝）（｛１０００円／ｍ2×１０ｍ2＋１２００円／ｍ2×１５ｍ2＋８０００円／日×２日｝／個）個・・・（数４８）
同様に、見積”部品２（単位は個）”の内訳が、” 材料２が10m2、材料３が15m、材料４が10個、作業２が1日”であるとして作成し式に追加する。追加分を数４９に示す。数
４９では、省略するが、この追加分は、トポロジーＩＤとして、ＥＶＡＬ2,2と設定する
。
... ＋（部品２｛材料２＋材料３＋材料４＋作業２｝）（｛１２００円／ｍ2×１０ｍ2＋２０００円／ｍ×１５ｍ＋５００円／個×１０個＋１００００円／日×１日｝／個）個・・・（数４９）
同様に、見積”製品１（単位は台）”の内訳が、”部品１が5個、部品２が10個、作業
３が2日”であるとして作成し式に追加する。追加分を数５０に示す。数５０では、省略
するが、この追加分は、トポロジーＩＤとして、ＥＶＡＬ３，１と設定する。
... ＋（製品１｛部品１｛材料１＋材料２＋作業１｝＋部品２｛材料２＋材料３＋材料４＋作業２｝＋作業３｝）（｛｛１０００円／ｍ2×１０ｍ2＋１２００円／ｍ2×１５ｍ2＋８０００円／日×２日｝／個×５個＋｛２０００円／ｍ×１５ｍ＋１２００円／ｍ2×１
０ｍ2＋５００円／個×１０個＋１００００円／日×１日｝／個×１０個＋１２０００円
／日×２日｝／台）台・・・（数５０）
以上の数４８−５０によって形成されるデータ構造を図３１に示す。このような構造のトポロジーＩＤをprice3,1として設定する。
【０２８２】
なお、数５０をセル空間の式として考えた場合、製品１はセル空間ＩＤであり、（｛部品１｛材料１＋材料２＋作業１｝＋部品２｛材料２＋材料３＋材料４＋作業２｝＋作業３
｝）は、セル空間の属性である。また、”（｛｛１０００円／ｍ2×１０ｍ2＋”以降の式は、属性値である。したがって、これらの式は、当然に基本システムで説明した各種演算を適用できる。
【０２８３】
（見積額の算出）
見積の金額を算出する場合、見積額のトポロジー空間pricen+1,mの属性値を、表現レベル移行関数ｇにより、和演算＋を代数加算記号（＋）に変換し、積演算×を代数乗算記号*に変換する。
【０２８４】
これを製品１の見積額price3,1のトポロジー空間について単位計算すると次のようになり、見積額が取得される。この処理は、ユーザ操作を受け付けて、情報処理装置２００が実行すればよい。この処理では、それぞれの項から、属性因子である製品１｛部品１｛材料１＋材料２＋作業１｝＋部品２｛材料２＋材料３＋材料４＋作業２｝＋作業３｝が括り出される。この処理は、基本システムの商演算で述べた手順と同様である。そして、括り出された属性因子の次に残された値因子である｛｛１０００円／ｍ2×１０ｍ2＋１２００円／ｍ2×１５ｍ2＋８０００円／日×２日｝／個×５個＋｛２０００円／ｍ×１５ｍ＋１２００円／ｍ2×１０ｍ2＋５００円／個×１０個＋１００００円／日×１日｝／個×１０個＋１２０００円／日×２日｝に対して、表現レベル移行関数ｇによる変換を実行すればよい（属性因子に対する変換処理の説明は、個々では省略するが、同様に実行できる）。ｆｗ（ｇ（ｐｒｉｃｅ3,1））
＝ｆｗ（ｇ（｛｛１０００円／ｍ2×１０ｍ2＋１２００円／ｍ2×１５ｍ2＋８０００円／日×２日｝／個×５個＋｛２０００円／ｍ×１５ｍ＋１２００円／ｍ2×１０ｍ2＋５００円／個×１０個＋１００００円／日×１日｝／個×１０個＋１２０００円／日×２日｝））
＝ｆｗ（｛１０００円／ｍ2＊１０ｍ2  （＋）  １２００円／ｍ2＊１５ｍ2  （＋）  ８０００円／日＊２日｝／個＊５個  （＋）  ｛２０００円／ｍ＊１５ｍ（＋）  １２００円／ｍ2＊１０ｍ2  （＋）  ５００円／個＊１０個  （＋）  １００００円／日＊１日｝／個＊１０個  （＋）  １２０００円／日＊２日）
＝  ８１４，０００円・・・（数５１）
（資源についてのデータの取得）
資源データとは、見積対象である対象商品または対象サービスの構成要素をいう。見積evaln+1,mにおいて、名前namen,p の資源についてのデータが欲しいとき、分割写像hによりevaln+1,mをnamen,pで分割し、商項(italicの部分)を取得する。この処理の理論式を数５２に示す。
h:
(namen+1,m｛Σinamen,i｝)(｛pricen+1,m｝/unitn+1,m)unitn+1,m, namen,p
｜→
(namen+1,m｛Σi(namen,i)-namen,p｝)(｛Σi(pricen,i/unitn,i×an,iunitn,i)
-pricen,p/unitn,p×an,punitn,p｝/unitn+1,m)unitn+1,m
+namen+1,m×namen,p×pricen,p/unitn,p×an,punitn,p×/unitn+1,m×unit n+1,m ・・
・（数５２）
この式は、以下の処理概要を定義している。すなわち、集合ＩＤが、namen+1,mで定義
され、集合の要素Σinamen,i×pricen+1,m/unitn+1,m×unitn+1,m  （ただし、Σiはｉを１から所定個数まで加算することを意味する）で定義される式表現に対して、識別子namen,pで商演算を実行する。すると、剰余が、｜→の次の第１項であり、商が第２項である
。
【０２８５】
得られた商項を表現レベル移行関数gにより表現レベルに移行し、単位計算関数ｆｗに
よる像を求め、namen,pについてのデータが取得される。この処理の理論式を数５３に示
す。
fw(g(namen+1,m×namen,p×pricen,p/unitn,p×an,punitn,p×/unitn+1,m×unit n+1,m))=namen+1,m*namen,p*pricen,pan,p・・・（数５３）
例えば、製品１における材料２の資源についてデータが欲しいときは、まずhにより製
品１の式を材料２で分割し、商項を取得する。
製品1×部品1×材料2×1200円/m2×15m2×/個×5個×/台×台+製品1×部品2×材料2×1200円/m2×10m2×/個×10個×/台×台・・・（数５４）
これをgで表現レベルに移行し、ｆｗによる像を求めると、数５５のようになる。
ｆｗ(g(製品1×部品1×材料2×1200円/m2×15m2×/個×5個×/台×台+製品1×部品2×材
料2×1200円/m2×10m2×/個×10個×/台×台))
= ｆｗ(製品1*部品1*材料2*1200円/m2*15m2*/個*5個*/台*台 (＋) 製品1*部品2*材料2*1200円/m2*10m2*/個*10個*/台*台)
=製品1(部品1(＋)部品2) 材料2*1200円*(75(＋)100)
=製品1(部品1(＋)部品2) 材料2*210000円・・・（数５５）
ここでは、まず、（数３９）の処理、あるいは、図２８の“ゴルフ”による括りだし処理と同様、属性を示す識別子（あるいは、単価の左側の因子）を括り出す処理を実行する。その結果、｛属性因子＋・・・｝｛属性値＋・・・｝の形式の式表現が形成される。そのような式表現に対して、上記表現レベル移行関数ｇによる変換およびｆｗによる代数演算を実行すればよい。
これより、「材料２は、部品１と部品２にそれぞれ数量75、100が使用され、総額は210,000円である」ことが分かる。
【０２８６】
（画面構成）
図３２に、見積処理においてユーザが情報を入力するユーザインターフェースを例示する。図３２のユーザインターフェースの画面が、前記記憶手段に記憶された要素情報に対する数量の指定と、前記要素情報を複数含む組み合わせの指定と、その組み合わせに付与すべき識別子の指定を受け付ける手段に相当する。
。このユーザインターフェースは、見積名入力欄２００と、単位入力欄２０１と、見積名に該当する見積対象の製品またはサービスに含まれる要素の入力欄２０２を含む。
【０２８７】
この例では、例えば、見積名に”部品１”を入力し、単位を”個”に設定し、その部品１に含まれる下位の部品、その部品１を構成する材料、その部品１を製作するために必要な工数等を入力する。例えば、材料１に対して数量５個、材料２に対して２組、熟練工１に対して２日等である。そして、ユーザが入力部１１を通じて登録ボタン０３を操作すると、部品１（材料１×５０００円／個×５個＋材料２×１００００円／組×２組＋熟練工１×１２０００円／日×２日）という情報が生成され、メモリ・外部記憶装置に格納される。
【０２８８】
なお、ユーザは、このような手順で登録した部品１を次の見積作業で用いることができる。すなわち、名：部品１、単位：個の単位で部品１の個数を指定することによって、部品１を含む上位の部品あるいは、上位の商品、サービスの見積に、ユーザ自身が定義した部品１の見積を使用できる。したがって、図３１に示したような階層的な部品の構造に対応する式表現を定義し、その式表現を代数演算式に変換することで、見積を算出できる。
【０２８９】
（処理フロー）
図３３に、合計算出見積処理の処理フローを例示する。この処理は、例えば、情報処理装置２００で実行されるプログラムの一部であるサブルーチンの処理として実現される。この処理では、情報処理装置は、まず、合計算出対象の式表現の入力を受ける（Ｓ１０３０）。入力は、例えば、サブルーチンの引数を通じて呼び出し元の上位モジュールから受けてもよい。また、例えば、ユーザインターフェース画面制御部４１に対するイベントを検知し、所定の入力欄から入力を受けてもよい。
【０２９０】
次に、情報処理装置２００は、入力された式表現を単位式に変換する（Ｓ１０３２）。そして、（数３９）の処理、あるいは、図２８の“ゴルフ”による括りだし処理と同様、属性を示す識別子（あるいは、単価の左側の因子）を括り出す処理を実行する。その結果、｛属性因子＋・・・｝｛属性値＋・・・｝の形式の式表現が形成される。そのような式表現に対して、上記表現レベル移行関数ｇによる変換およびｆｗによる代数演算を実行すればよい。なお、属性を示す識別子（あるいは、単価の左側の因子）を括り出す処理を含めて、表現レベル移行関数がｇ（）としてもよい。そして、情報処理装置２００は、変換によって生成された単位式中の代数演算を実行する（Ｓ１０３４）。この算術演算を実行する関数がｆｗである。そして、情報処理装置２００は、他演算結果を出力する（Ｓ１０３６）。出力とは、例えば、引数を通じた上位モジュールへの引き渡しである。ただし、出力部１４に出力してもよい。
【０２９１】
図３４に、部品合計算出処理のフローチャートを例示する。この処理も、例えば、情報処理装置２００で実行されるプログラムの一部であるサブルーチンの処理として実現される。この処理では、情報処理装置は、まず、見積対象の対象商品または対象サービスの式表現の入力を受ける（Ｓ１０４０）。入力の意味は、図３３の場合と同様である。
【０２９２】
次に、情報処理装置２００は、部品の指定を受ける（Ｓ１０４２）。部品の指定についても、上位モジュールからの引数またはユーザインターフェース画面制御部４１からのイベントを通じて、部品に対応する識別子、例えば、集合ＩＤ等、あるいは、文字列を受ければよい。Ｓ１０４２の処理を実行する情報処理装置２００のＣＰＵ１３が、抽出すべきの要素識別子の指定を受け付ける手段に相当する。
【０２９３】
次に、情報処理装置２００は、部品の指定を受けた識別子によって、見積対象の対象商品または対象サービスの式表現に対して、商演算を実行することで、部品の情報を抽出する（Ｓ１０４４）。Ｓ１０４４の処理を実行する情報処理装置２００のＣＰＵ１３が、要素情報を抽出する手段に相当する。
【０２９４】
そして、情報処理装置２００は、商演算の結果得られた商項を単位式に変換する（Ｓ１０４６）。さらに、情報処理装置２００は、単位式に算術演算を適用する（Ｓ１０４８）。そして、情報処理装置２００は、演算結果を出力する（Ｓ１０５０）。この出力は、図３３の場合と同様である。
【０２９５】
図３５に、式表現設定処理のフローチャートを例示する。この処理は、図３３のＳ１０３０でまたは図３４のＳ１０４０の処理で入力される式表現を生成するときに実行する処理である。図３５の処理によって、設定された式表現が図３３あるいは図３４の処理に入力されることになる。
【０２９６】
この処理では、情報処理装置２００は、ユーザからのユーザインターフェース画面への操作を検知し、商品、サービス、または要素（商品あるいはサービスを構成する部品、材料、工程等）の識別情報の入力を受け付ける（Ｓ１０５０）。これは、例えば、図２７の画面でのファイル名の入力である。また、図３２の画面での見積名の入力である。
【０２９７】
次に、情報処理装置２００は、その商品、サービス、または要素の単位の入力を受け付ける（Ｓ１０５２）。そして、情報処理装置２００は、下位の要素の識別情報、単価、数量の入力を受け付ける（Ｓ１０５４）。
【０２９８】
そして、情報処理装置２００は、すべての下位の要素の情報を入力したか、否かをユーザインターフェース画面へのユーザの操作から検知する（Ｓ１０５６）。すべての下位の
要素の情報が入力されていない場合、情報処理装置２００は、制御をＳ１０５４に戻して、次の情報の入力を受け付ける。
【０２９９】
一方、すべての下位の情報が入力された場合、情報処理装置２００は、入力された情報にしたがって、式表現を生成する（Ｓ１０５８）。そして、情報処理装置２００は、生成した式表現をメモリ１２に格納する（Ｓ１０６０）。Ｓ１０６０の処理を実行する情報処理装置のＣＰＵ１３が、新たな要素情報を構成して前記記憶手段に格納する手段に相当する。
【０３００】
（効果）
一般的に見積システムのコア処理開発はその複雑さゆえにコストが大きくなる。この例は、コア処理の開発に、ほとんど実装の必要がないこと示した。その理由は主に以下である。
（１）単位情報の設計、見積金額計算処理の実装が必要ない。
人が頭で考えるようにして数値とともに単位情報を入出力でき、単位計算写像により単位情報を含めたデータの計算が可能である。
（２）そのレベルのどの見積情報のデータも取り出すことが可能である。
一つの見積情報にその下層の見積情報が再帰的に含まれている。
【０３０１】
本実施形態では、基本システムでの式表現に加えて、表現レベル上の新たな単位計算代数と呼ばれる代数を実行する処理例を説明した。この処理により、数値だけでなく単位情報も同時に計算することができる。さらに、この代数の単位式は、下位の部品から上位の部品へと階層的に組み合わせることができる。そして、情報処理装置２００は、階層的に組み合わせた単位式中から、ユーザの指定した所望の部品に係る情報を抽出できる。また、階層的に組み合わせた単位式から、数値の合計を算出できる。また、階層的に組み合わせた単位式中で同義語となるべき識別子と識別子を指定し、同義語同士を同等に処理できる。
【０３０２】
したがって、例えば、人が頭の中で考えるように、部品をボトムアップ的に組み合わせた設計を可能にする。その場合に、トップダウン的で、統一的な規則がなく、ある意味でいい加減なばらつきのある用語の使用がなされても、情報処理装置２００が用語のばらつきを吸収して処理できる。また、データの構造にばらつきがあっても、部品（作業、あるいは材料）の識別子＊単価＊提供量の形式で単価と提供量の関係が記述されている限り、情報処理装置２００は、そのような情報の組み合わせを処理できる。《変形例》
上記実施形態では、代数演算部４４において、一旦、表現レベル移行関数ｇによって、式表現を表現レベルの代数演算式に変換した後、代数演算を実行した。しかし、情報処理装置２００の処理は、このような手順には限定されない。例えば、代数演算部４４が、積演算子”×”を代数乗算記号＊として取り扱えばよい。また、和演算子”＋”を代数乗算記号”(＋)”として取り扱えばよい。さらに、部品等を指定する識別子、例えば、数５４において、単価（”Ｎ円／単位”）に対して左側から積演算子で結合する文字列である、製品１、部品１、材料１等を無視すればよい。そのような処理を実行することで、予め、表現レベル移行関数ｇによって式表現を表現レベルの代数演算式に変換することなく、直接代数演算を実行するようにしてもよい。
【図面の簡単な説明】
【０３０３】
【図１】第１の実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】第１の実施形態に係る情報処理装置のメモリに格納される第一のデータ構造を示す。
【図３】第１の実施形態に係る情報処理装置のメモリに格納される第二のデータ構造を示す。
【図４】第１の実施形態に係る情報処理装置のメモリに格納される第三のデータ構造を示す。
【図５】第１の実施形態に係る情報処理装置におけるプログラム構成を示す図である。
【図６Ａ】横方向展開処理を実行する処理のフローを示す。
【図６Ｂ】横方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図６Ｃ】横方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図７】縦方向展開処理を実行する処理のフローを示す。
【図８Ａ】縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図８Ｂ】縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図８Ｃ】縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図８Ｄ】縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図９】積演算処理を実行する処理のフローを示す。
【図１０】積演算処理を実行中の対象情報の状態の詳細を示す表である。
【図１１Ａ】商演算処理（サブルーチン１）を実行する処理のフローを示す図である。
【図１１Ｂ】商演算処理（サブルーチン１）を実行中の対象情報の状態の詳細を示す表（その１）である。
【図１１Ｃ】商演算処理（サブルーチン１）を実行中の対象情報の状態の詳細を示す表（その２）である。
【図１２Ａ】商演算処理（サブルーチン２）を実行する処理のフローを示す図である。
【図１２Ｂ】商演算処理（サブルーチン２）を実行中の対象情報の状態の詳細を示す表（その１）である。
【図１２Ｃ】商演算処理（サブルーチン２）を実行中の対象情報の状態の詳細を示す表（その２）である。
【図１３】接着演算処理を実行する処理のフローを示す。
【図１４】接着演算処理を実行中の対象情報の状態の詳細を示す表である。
【図１５】部分集合取得処理を実行する処理のフローを示す。
【図１６Ａ】部分集合取得処理を実行中の対象情報の状態の詳細を示す表である。
【図１６Ｂ】部分集合取得処理を実行中の対象情報の状態の詳細を示す表である。
【図１７】ホモトピー保存処理を実行する処理のフローを示す。
【図１８】ホモトピー保存式におけるＵＮＤＯ演算処理のフローを示す。
【図１９】ホモトピー保存式におけるＲＥＤＯ演算処理のフローを示す。
【図２０】単位式を木構造で示した例である。
【図２１】情報処理装置のハードウェア構成を例示する図である。
【図２２】情報処理装置の機能ブロックを例示する図である。
【図２３】式表現を表現レベルの単位式に変換する手順を例示する図である。
【図２４】単位式を計算するアルゴリズムの概要を例示するフローチャート（その１）である。
【図２５】単位式を計算するアルゴリズムの概要を例示するフローチャート（その２）である。
【図２６】単位式を処理する例である。
【図２７】ユーザインターフェースからの入力例である。
【図２８】ユーザインターフェースへの出力例である。
【図２９】購入金額合計処理のフローチャートを例示する図である。
【図３０】単語の同義語を取得する関数ｈのフローチャートを例示する図でる。
【図３１】トポロジー空間に存在する製品、部品の関係を階層化して表示した例である。
【図３２】見積処理においてユーザが情報を入力するユーザインターフェースを例示する図である。
【図３３】合計算出見積処理のフローチャートを例示する図である。
【図３４】部品合計算出処理のフローチャートを例示する図である。
【図３５】式表現設定処理のフローチャートを例示する図である。
【符号の説明】
【０３０４】
１００、２００  情報処理装置
１１  入力部
１２  メモリ
１３  ＣＰＵ
１４  出力部
１５、１６、３１、３３、３３  インターフェース
３２  通信部
３４  外部記憶装置
３６  着脱可能記憶媒体アクセス装置
４０  処理部
４１  ユーザインターフェース画面
４２  要素情報編集・格納部
４３  要素情報抽出・演算部
４４  代数演算部
４６  共通関数ライブラリ
【図１】
2009110440.tif 000007
【図２】
2009110440.tif 000008
【図３】
2009110440.tif 000009
【図４】
2009110440.tif 000010
【図５】
2009110440.tif 000011
【図６Ａ】
2009110440.tif 000012
【図６Ｂ】
2009110440.tif 000013
【図６Ｃ】
2009110440.tif 000014
【図７】
2009110440.tif 000015
【図８Ａ】
2009110440.tif 000016
【図８Ｂ】
2009110440.tif 000017
【図８Ｃ】
2009110440.tif 000018
【図８Ｄ】
2009110440.tif 000019
【図９】
2009110440.tif 000020
【図１０】
2009110440.tif 000021
【図１１Ａ】
2009110440.tif 000022
【図１１Ｂ】
2009110440.tif 000023
【図１１Ｃ】
2009110440.tif 000024
【図１２Ａ】
2009110440.tif 000025
【図１２Ｂ】
2009110440.tif 000026
【図１２Ｃ】
2009110440.tif 000027
【図１３】
2009110440.tif 000028
【図１４】
2009110440.tif 000029
【図１５】
2009110440.tif 000030
【図１６Ａ】
2009110440.tif 000031
【図１６Ｂ】
2009110440.tif 000032
【図１７】
2009110440.tif 000033
【図１８】
2009110440.tif 000034
【図１９】
2009110440.tif 000035
【図２０】
2009110440.tif 000036
【図２１】
2009110440.tif 000037
【図２２】
2009110440.tif 000038
【図２３】
2009110440.tif 000039
【図２４】
2009110440.tif 000040
【図２５】
2009110440.tif 000041
【図２６】
2009110440.tif 000042
【図２７】
2009110440.tif 000043
【図２８】
2009110440.tif 000044
【図２９】
2009110440.tif 000045
【図３０】
2009110440.tif 000046
【図３１】
2009110440.tif 000047
【図３２】
2009110440.tif 000048
【図３３】
2009110440.tif 000049
【図３４】
2009110440.tif 000050
【図３５】
2009110440.tif 000051