(57)【特許請求の範囲】
【請求項１】
コンピュータに、識別子と、順序を持ち、可換律の成立しない因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたはその両方を含む項について、可換律の成立する項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶部から読み出すステップと、
演算用因子の指定を受けるステップと、
前記対象情報を操作する処理ステップと、
を実行させ、
前記処理ステップでは、前記対象情報から、前記演算用因子を含む情報および前記演算用因子を含まない情報の少なくとも一方を分離させるためのプログラム。
【請求項２】
前記対象情報は、前記組み合わせ中の項の順序を維持しないで前記項の組み合わせを関係付けることによって因子または新たな項を構成する集合因子構成演算子をさらに含み、
前記演算は、項または複数の項の組み合わせに対して、前記項を構成する因子中に前記演算用因子を含むときにその項を選択する第１の選択演算を実行し、項を構成する因子中に前記演算用因子が含まれておらず、かつ、前記集合因子構成演算子によって関係付けられた項の組み合わせである集合因子を含むときに、前記集合因子中の項に対して前記第１の選択演算を実行し、前記集合因子中のいずれかの項が選択できたときに、前記集合因子中の選択された項と前記項を構成する因子中の前記集合因子以外の因子とを前記積演算子によって結合し、前記演算用因子が含まれる項を抽出する商演算である請求項１に記載のプログラム。
【請求項３】
前記対象情報は、前記組み合わせ中の項の順序を維持しないで前記項の組み合わせを関係付けることによって因子または新たな項を構成する集合因子構成演算子をさらに含み、
前記演算は、項または複数の項の組み合わせに対して、前記項を構成する因子中に前記演算用因子を含まないときにその項を構成する因子を選択する第２の選択演算を実行する
とともに選択された因子を保持し、前記保持された因子に前記集合因子構成演算子によって関係付けられた項の組み合わせである集合因子を含むときに、前記集合因子中の項に対して前記第２の選択演算を実行し、前記集合因子中のいずれかの項が選択できたときに、前記集合因子中の選択された項と前記保持されている因子のうちの前記集合因子以外の因子とを前記積演算子によって結合し、前記演算用因子が含まれない項を抽出する剰余演算である請求項１に記載のプログラム。
【請求項４】
前記演算は、項の組み合わせを、第１の因子を含む第１の項と前記第１の因子を含まない第２の項とに分類し、第１の因子を含む第１の項が複数存在したときに、第１の項の組み合わせから前記第１の因子を共通因子として抽出する部分集合形成演算である請求項１に記載のプログラム。
【請求項５】
識別子と、順序を持ち、可換律の成立しない因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたはその両方を含む項について、可換律の成立する項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
演算用因子の指定を受ける因子指定部と、
前記対象情報を操作する処理部と、
を備え、
前記処理部は、前記対象情報から、前記演算用因子を含む情報および前記演算用因子を含まない情報の少なくとも一方を分離する演算を実行する情報処理装置。
【請求項６】
コンピュータが、識別子と、順序を持ち、可換律の成立しない因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたはその両方を含む項について、可換律の成立する項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶部から読み出すステップと、
因子の指定を受けるステップと、
前記対象情報を操作する処理ステップと、
を実行し、
前記処理ステップでは、前記対象情報から、前記演算用因子を含む情報および前記演算用因子を含まない情報の少なくとも一方を分離する情報処理方法。
【請求項７】
記憶装置を有するコンピュータが記憶するデータ構造であって、前記データ構造は、
識別子と、順序を持ち、可換律の成立しない因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたはその両方を含む項について、可換律の成立する項の組み合わせを構成する和演算子と、によって記述される対象情報を有し、
前記コンピュータに、前記記憶装置から読み出した対象情報から、演算用因子を含む情報および前記演算用因子を含まない情報の少なくとも一方を分離させるためのデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、事物をコンピュータで処理可能な所定の表現形式を用いて表現し、コンピュータの記憶装置に記憶し、コンピュータで処理することで、その事物を管理する情報処理技術に関する。
【背景技術】
【０００２】
ソフトウエアの開発プロセスは、要求分析、システム設計、実装、テスト、運用、及びメンテナンスの各段階により構成される。そして、ソフトウエア開発の最初のプロセスである、要求分析は特に重要である。なぜなら、最初の要求分析が不十分であると、それ以降のシステム設計、実装段階において、顧客の要求が正しく反映されていないなどの支障をきたすからである。例えばシステムのテスト段階で不具合が発見された場合においても、再度プログラムを修正する必要が生じる。また、大規模な修正が必要な場合には、システム設計を初めからやり直すなどの必要も生じる。しかし、プログラムの修正やシステム設計を最初からやり直しには、時間と労力がかる。その結果、コストが増大するといった問題も生ずる。また、たとえ最初の要求分析が十分であった場合においても、事業活動等様々な変化に対応させるためにはその後のメンテナンスが不可欠であるが、メンテナンスにも時間と労力がかかり、結果としてコストの増大を招くといった問題を生じている。  
【０００３】
ソフトウエアの開発の一例として、例えばデータベースシステムの開発が例示される。データベースシステムの開発とは、顧客の業務内容をヒアリングして、管理すべきデータ項目を洗い出し、それらの項目を関連付け、利用者が検索しやすいようなビューを設計し、顧客ニーズに合ったデータベースを構築することである。優れたデータベースを構築するためには、概念設計の段階からデータ構造を解析しておく必要がある。データとして管理すべき実体及び属性、実体間の関連を洗い出し、正確に分析することが重要になる。
【０００４】
このような観点から開発された既存のデータベースのデータモデルとして、正規化表構造によるリレーショナルモデルや、ノードに属性を持つツリー構造で表現されるオブジェクト指向モデルが知られている。しかし、例えばリレーショナルモデルでは、関係をどのように定義するかは設計者の自由であるため、実装ごとに異なるシステムが生成されることになる。したがって、リレーショナルモデルに基づいて実装された複数のシステムを統合するためには、統合すべき構成要素の組み合わせ数に応じた作業工程が必要となり、システム統合に相当な時間と労力を費やす必要がるといった問題を生じていた。
【０００５】
このような事情に鑑み開発されたソフトウエア開発支援装置として、本発明者の一人は、情報を階層化して表現する技術を提案した。この技術では、階層化された情報の各階層においてソフトウエア部品集合による操作が可能に構成されたモジュラ化されたデータ構造が提供される。そして、前記ソフトウエア部品集合が満たすべき仕様を前記階層ごとにインクリメンタルに詳細化することにより、与えられた要求仕様に合致するソフトウエアを前記ソフトウエア部品集合から自動生成する技術を開発した（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−９２８５５号公報
【特許文献２】特開平７−２９５９３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したリレーショナルモデルやオブジェクト指向モデルでは、業務のデータモデルをサポートしていなので、個々のシステムでアプリケーションプログラムの開発が必要となる。さらに、一旦アプリケーションプログラムが開発された後であっても、リレーショナルモデルでは、システム開発時に予定されていない属性をデータベースに入力する場合には、新たな属性に対応可能なアプリケーションソフトを開発する必要が生じる。
【０００８】
また、オブジェクト指向モデルは、オブジェクトの属性を細分化する有向グラフの一部としてのツリー構造については対応可能である。このツリー構造は、典型的には、有向グラフの根本側、すなわち、ツリー構造の上位には、より抽象化された概念、あるいは、共通化された概念が定義され、グラフの先端側、すなわち、ツリー構造の下位には、それぞれの上位概念を具体化した個別の概念が定義される。しかし、オブジェクト指向モデルは、逆ツリー構造については対応できない。
【０００９】
ここで、逆ツリー構造とは、例えば、階層構造の上位には、基本的な概念が定義され、階層構造の下位には、複数の基本概念を組み合わせた概念が定義される。なお、上述したソフトウエア開発支援装置によれば、ソフトウエア開発の効率化を図ることが可能となることが示された。しかし、開発コスト、メンテナンスコストを削減でき、業務モデルを統一的に表現できるデータモデル、およびそのようなデータモデルを利用したさらに効率的なシステム開発技術、情報処理技術が求められていた。
【００１０】
本発明は、上記問題に鑑みてなされたものであり、業務モデルを統一的に表現し、記憶し、処理することで、異なるシステム間においても、情報の一貫性を図るとともに新たな業務モデルへの適用、新たな管理対象となる情報項目、種類の追加・変更・削除、あるいは新たな処理機能の追加、変更等が可能なシステム開発技術、および情報処理技術を提供することを課題とする。
【課題を解決するための手段】
【００１１】
本発明は前記課題を解決するために、以下の手段を採用した。すなわち、本発明は、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、対象情報を操作する処理部と、情報の入力を受け付ける入力部を接続可能なインターフェースと、情報を出力する出力部を接続可能なインターフェースと、を備える情報処理装置である。そして、本発明では、処理部は、インターフェースに接続された入力部から入力される情報を識別子、因子、項および項の和である式のいずれか１以上として対象情報に設定し、記憶部に記憶させる入力処理部と、記憶部に記憶されている対象情報を参照し、参照した対象情報中の識別子、因子、項および式のいずれか１以上が入力部から入力される情報と所定の関係にあるときに、対象情報を前記インターフェースに接続された出力部に出力する出力処理部と、を有する。
【００１２】
本発明によれば、情報処理装置に、入力部が入力されたときに、入力される情報が、識別子、因子、項および式のいずれか１以上として対象情報に設定され、記憶部に記憶される。また、インターフェースに出力部が接続され、記憶手段にて参照した対象情報中の識別子、因子、項および式のいずれか１以上が入力部から入力される情報と所定の関係にあるときに、出力部から、対象情報が出力される。
【００１３】
このように、本発明によれば、識別子および各種演算子を組み合わせた表現形式で入力部から入力される対象情報を記述し、記憶し、さらには、参照し、出力部から出力する機能が実現される。
【００１４】
本発明は、以上のような処理をコンピュータが実行する方法であってもよい。また、本発明は、コンピュータに以上のような処理を実行させるプログラムであってもよい。また、そのようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。
【００１５】
また、本発明は、上記対象情報を記述するときのデータ構造であってもよい。また、そのようなデータ構造を記録したコンピュータが読み取り可能な記録媒体であってもよい。このようなデータ構造にしたがって対象情報を記憶し、あるいは記録することにより、コンピュータは、識別子および各種演算子を組み合わせた表現形式で入力部から入力される対象情報を記述し、記憶し、さらには、参照し、出力部から出力する機能を実現する。
【発明の効果】
【００１６】
本発明に係る情報処理装置によれば、業務モデルを統一的に表現して処理、すなわち事物を所定の表現形式を用いて表現して処理することで、異なるシステム間においても、情報の一貫性を図るとともに新たな業務モデルへの適用、新たな管理対象となる情報項目、種類の追加・変更・削除、あるいは新たな処理機能の追加、変更等が可能なシステム開発技術、および情報処理技術を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】第１の実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】第１の実施形態に係る情報処理装置のメモリに格納される第一のデータ構造を示す。
【図３】第１の実施形態に係る情報処理装置のメモリに格納される第二のデータ構造を示す。
【図４】第１の実施形態に係る情報処理装置のメモリに格納される第三のデータ構造を示す。
【図５】第１の実施形態に係る情報処理装置におけるプログラム構成を示す図である。
【図６Ａ】横方向展開処理を実行する処理のフローを示す。
【図６Ｂ】横方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図６Ｃ】横方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図７】縦方向展開処理を実行する処理のフローを示す。
【図８Ａ】縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図８Ｂ】縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図８Ｃ】縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図８Ｄ】縦方向展開処理を実行中の対象情報の状態の詳細を示す表である。
【図９】積演算処理を実行する処理のフローを示す。
【図１０】積演算処理を実行中の対象情報の状態の詳細を示す表である。
【図１１Ａ】商演算処理（サブルーチン１）を実行する処理のフローを示す図である。
【図１１Ｂ】商演算処理（サブルーチン１）を実行中の対象情報の状態の詳細を示す表（その１）である。
【図１１Ｃ】商演算処理（サブルーチン１）を実行中の対象情報の状態の詳細を示す表（その２）である。
【図１２Ａ】商演算処理（サブルーチン２）を実行する処理のフローを示す図である。
【図１２Ｂ】商演算処理（サブルーチン２）を実行中の対象情報の状態の詳細を示す表（その１）である。
【図１２Ｃ】商演算処理（サブルーチン２）を実行中の対象情報の状態の詳細を示す表（その２）である。
【図１３】接着演算処理を実行する処理のフローを示す。
【図１４】接着演算処理を実行中の対象情報の状態の詳細を示す表である。
【図１５】部分集合取得処理を実行する処理のフローを示す。
【図１６Ａ】部分集合取得処理を実行中の対象情報の状態の詳細を示す表である。
【図１６Ｂ】部分集合取得処理を実行中の対象情報の状態の詳細を示す表である。
【図１７】ホモトピー保存処理を実行する処理のフローを示す。
【図１８】ホモトピー保存式におけるＵＮＤＯ演算処理のフローを示す。
【図１９】ホモトピー保存式におけるＲＥＤＯ演算処理のフローを示す。
【図２０】建設業における情報管理、すなわちデータ処理システムが要求される例を示す。
【図２１Ａ】本発明の対象情報に相当する社員データ及び伝票データを示す。
【図２１Ｂ】本発明の対象情報に相当する伝票データを示す。
【図２２Ａ】プロジェクトデータを示す。
【図２２Ｂ】歩掛作成データを示す。
【図２３】集合レベル２２で表現される対象情報の例を示す。
【図２４】トポロジー空間レベル２３で表現される対象情報の例を示す。
【図２５】接着空間レベル２４で表現される対象情報の例を示す。
【図２６】セル空間レベル２５で表現される対象情報の例を示す。
【図２７】本発明の第２の実施形態に係る情報処理装置１００の構成である。
【図２８Ａ】社員データ管理処理の処理フローを示す図（その１）である。
【図２８Ｂ】社員データ管理処理の処理フローを示す図（その２）である。
【図２９】社員データ入力処理の詳細処理フローを示す図である。
【図３０】社員データ検索処理の詳細処理フローを示す図である。
【図３１】メモ作成と接着処理の詳細フローを示す図である。
【図３２】属性追加処理の詳細処理フローを示す図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、本発明の実施形態に係る情報処理装置を説明する。
【００１９】
《システムの骨子》
本情報処理装置は、情報を集合レベル、トポロジー空間レベル、接着空間レベル、およびセル空間レベルというデータ構造の複雑さの異なるレベルで表現する。データ構造が複雑になればなるほど、表現される情報と情報との間の関連付け、あるいは、情報と情報との拘束が増加する。
【００２０】
例えば、集合レベルは、情報が項（以下、要素ともいう）を組み合わせた集合情報として記述される。それぞれの集合情報は、集合ＩＤで識別される。また、トポロジー空間レベルでは、項または集合を組み合わせたトポロジー空間情報として情報が記述される。それぞれのトポロジー空間情報は、トポロジーＩＤで識別される。
【００２１】
すなわち、集合レベルは、単なる項の組み合わせであるのに対し、トポロジー空間レベルは、集合情報の組み合わせを含む点で、より複雑となっている。本実施形態では、この場合に、集合レベルは、トポロジー空間レベルよりも抽象度が高い、ともいう。ただし、トポロジー空間情報は、単一の集合情報をも含む。すなわち、トポロジー空間レベルは、集合レベルの性質をそのまま有している。本実施形態では、この意味で、トポロジー空間レベルは、集合レベルの特性を継承している、という。
【００２２】
接着空間レベルは、集合情報またはトポロジー空間情報のいずれか２つ以上（以下、被接着情報）を接着した情報を含む。接着とは、本実施形態にて提案する概念であり、２つ
の被接着情報のそれぞれのデータ構造を維持した上で、被接着情報を互いに結合する機能である。接着においては、２つの被接着情報のそれぞれに含まれる情報で、互い関係付けられる情報が指定される。そして、その関係付けられた情報同士を介して、２つの被接着情報が結合される。接着は、例えば、人の行為である伝票にメモを張り付ける行為をコンピュータ上で実現したものとなる。すなわち、伝票ＩＤ、伝票に含まれる項目、および伝票内の位置情報からなるデータ構造と、メモＩＤおよびメモ内容である文字列情報からなるデータ構造があったときに、伝票上の位置情報と、メモＩＤとを関連づけ、接着演算を実行することにより、伝票上の指定された位置にメモが添付された状態をコンピュータ上で表現できる。接着された２つの被接着情報は、また、分離することもできる。ただし、接着空間の情報は、それぞれの被接着情報の特性、すなわち、集合レベル、あるいは、トポロジー空間レベルの特性をそのまま有している。そのため、接着空間の情報は、これらのレベルを継承しているという。
【００２３】
セル空間レベルとは、属性と値とを含むデータ構造が定義された情報であり、集合情報、トポロジー空間情報、および接着された情報をさらに複雑にしたものと言える。この点で、逆に、集合情報、トポロジー空間情報、および、これらが接着された情報は、セル空間の情報よりも抽象度が高いともいう。ただし、セル空間レベルの集合は、集合レベル、トポロジー空間レベル、および接着空間レベルの特性を有することができ、その意味で、これらのレベルを継承しているという。
【００２４】
よってセル空間が定義される（つまり空間に属性，値の意味が付加される）セル空間レベルならば，一般的なトポロジー空間のレベルよりも抽象度が低いと見なされる。
【００２５】
本情報処理装置は、抽象度に応じた各レベルの所定の表現形式によって表現される情報が格納される記憶手段と、前記情報を処理する処理手段と、を備える。そして、前記記憶手段には、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および前記因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報が記憶される。さらに、対象情報は、前記組み合わせ中の項の順序を維持して前記項の組み合わせを関係付けることによって因子または新たな項を構成する順序構成演算子と、前記組み合わせ中の項の順序を維持しないで前記項の組み合わせを関係付けることによって因子または新たな項を構成する集合因子構成演算子と、を含んでもよい。
【００２６】
以下、本情報処理装置の記憶手段に記憶され、本情報処理装置で処理される情報を対象情報という。対象情報は、識別子、因子、項（要素）、集合情報、トポロジー空間情報、接着された情報、セル空間の情報を含む。対象情報をオブジェクト情報とも呼ぶ。ただし、本実施形態でのオブジェクト情報は、いわゆるオブジェクト指向データベース、オブジェクト指向言語、オブジェクト指向設計等でいうオブジェクトとは、概念が異なる。そこで、以下では、もっぱらオブジェクト情報という代わりに、対象情報と呼ぶことにする。
【００２７】
また、本実施形態では、項の組み合わせから因子を構成する集合因子構成演算子及び順序構成演算子が使用される。集合因子構成演算子は、第一の括弧“（）”により表現される。また、順序構成演算子は第二の括弧“｛｝”により表現される。
【００２８】
本発明によれば、対象情報を所定の表現形式のデータとして記憶手段に格納し、これに所定のプログラムに基づいて処理を実行することができる。その結果、異なる対象情報同士の情報の一貫性を図るとともに新たな様々な対象情報のデータベース化及び処理が可能な情報処理装置を提供することが可能となる。また、従来のリレーショナルモデルやオブジェクト指向モデルでは、対応できないデータに対応することができるシステムを開発することができる。
【００２９】
記憶手段は、抽象度に応じた各レベルの所定の表現形式によって表現される対象情報を例えばテキストファイルとして格納する。記憶手段は、前記対象情報を十分に格納できる容量を有するものであればよく、ハードディスク等がこれに該当する。対象情報とは、システム開発におけるデータベースを構成する全ての情報を含むものである。例えば既存のデータモデルの正規化表構造を構成するレコードの構成要素や正規化表構造では入力不可能なデータ構造も含む。正規化表構造では入力不可能な情報とは、例えば正規化表構造で表現されるようなデータがある場合に、これに付箋のような前記正規化表構造とは全く関連性のない、すなわち属性の定義のない対象情報を意味する。また、この対象情報は、本情報処理装置の処理を実行することによりその抽象度が変化することを特徴とする。すなわち、あるレベルで入力された対象情報は、本情報処理装置の処理が実行されることによりそのレベルが変化する。そして、そのレベルが変化しても対象情報は、変化前と同一の演算によって、取り扱うことができる。すなわち、対象情報は、抽象レベルが変化しても対象情報の性質には一貫性が保たれるので、同一の演算による操作が可能である。したがって、ある抽象度で格納された対象情報、すなわちデータは本情報処理装置の処理が実行されることにより様々なレベルに変化する。また、上述のように全く関連性のないデータも入力してこれを関連付けることが可能である。したがって、異なる抽象度のレベルにおいて、情報の性質の一貫性が保たれるとともに、新たな様々な事物を示す情報のデータベース化及びデータベース化された情報に対する演算処理が可能となる。
【００３０】
前記対象情報は、記号、識別子、第一の括弧及び第二の括弧により表現される因子と、前記因子の積によって表現される項と、前記項の和によって表現される式と、により構成することができる。式を構成する項、および項を構成する因子は、前記対象情報を構成する最小単位である識別子と、前記処理手段において１として処理される単位元εと、前記処理手段において０として処理される零元Φとにより構成することができる。前記第一の括弧は、（）により表現することができる。また、前記第二の括弧は｛｝により表現することができる。このように本発明によれば、対象情報が非常に簡単なデータ構造で表現されている。したがって、高度な技術を有さないユーザであっても容易に理解することが可能となる。
【００３１】
前記第一の括弧と前記第二の括弧は演算時の強さが異なる。演算時の強さが異なるとは、前記処理手段の処理を実行する際の展開順序が異なることを意味する。項は、前述した因子の積によって表現され、積は×により表現することができる。本実施形態では、積を構成する因子に、可換律は、成立しない。すなわち、ａ×ｂとｂ×ａは、同一とは見なされない。また、式は前記項の和によって表現され、和は＋により表現することができる。本実施形態では、和を構成する項に、可換律が、成立する。すなわち、ａ＋ｂとｂ＋ａは、同一とは見なされる。以上より、例えばある対象情報は数１のように表現することができる。
（ａ＋ｂ）×｛ｃ＋ｄ＋ｅ｝＋ｆ｛ｇ＋ｈ｝×｛ｉ＋ｊ｝・・・（数１）
【００３２】
上記数１で表現される対象情報は、第一の項の（ａ＋ｂ）×｛ｃ＋ｄ＋ｅ｝と、第二の項のｆ｛ｇ＋ｈ｝×｛ｉ＋ｊ｝により構成されている。すなわち、数１は第一の項と第二の項との和により構成されている。次に、第一の項と第二の項のそれぞれについてみると、第一の項は、第一の因子の（ａ＋ｂ）と、第二の因子の｛ｃ＋ｄ＋ｅ｝とにより構成されている。また、第二の項についてみると、第三の因子のｆと、第四の因子の｛ｇ＋ｈ｝と、第五の因子の｛ｉ＋ｊ｝とにより構成されている。なお、上記数１において、“ｆ”の後に、積演算子“×”を明示し、“ｆ×”としてもよい。そして第一の因子から第五の因子のそれぞれについてみると、第一の因子は、第一の括弧と識別子ａ及びｂにより構成されている。また、第二の因子は第二の括弧と識別子ｃ、ｄ及びｅにより構成され、第三の因子は識別子ｆにより構成され、第四の因子は第二の括弧と識別子ｇ及びｆにより構成
され、第五の因子は第二の括弧と識別子ｉ及びｊにより構成されている。なお、括弧の中は換言すると再帰的に式になっている。例えば、上記のうち（ａ＋ｂ）についてみると、括弧の中は再帰的に式ａ＋ｂになっている。すなわち、上記式は項としての識別子ａと項としての識別子ｂの和によってなっている。このように、式は、（）または｛｝、およびその両方が複数回入れ子になった構造を含むことができる。
【００３３】
対象情報は、上記のように因子、項からなる式で表現される。そしてこのように表現された対象情報は、例えばテキストファイルとして前記記憶手段に格納される。なお、記憶手段への対象情報の格納、換言すると入力はユーザ操作に応答して実行される。この入力時に、グラフィカルユーザインターフェースを用いたユーザインターフェース部を提供してもよい。簡易的には、テキストエディタで、識別子、項、あるいは、項の和を入力するようにしてもよい。情報処理手段は、記憶手段に格納されたその対象情報を処理する。これにより、前記対象情報の抽象度を変化させることが可能となる。
【００３４】
本情報処理装置は、前記対象情報を展開する展開手段と、前記対象情報から部分集合を取得する部分集合取得手段と、前記対象情報についてホモトピー保存処理を実行するホモトピー保存処理手段と、異なる対象情報を構成する前記因子間における同値関係の対応に基づき該因子同士を接着して新たな空間である接着空間を作成する接着空間作成手段と、前記対象情報を分割する商空間作成手段と、のうち少なくともいずれか一つを有する。これにより、前記対象情報の抽象度を様々な状態に変化させることが可能となる。
【００３５】
展開手段は、前記対象情報を展開する。前記展開手段は、前記対象情報を前記項又は前記因子の単位に分解する分解手段と、前記因子間で集合演算処理をし、集合演算処理後の新たな項を設定する項設定手段と、前記第一の括弧及び第二の括弧で括られた因子を再帰的に展開処理する再帰的展開処理手段と、により構成することができる。そして、例えば上述した数１で表現される対象情報を展開処理すると数２のようになる。
（ａ＋ｂ）×｛ｃ＋ｄ＋ｅ｝＋ｆ｛ｇ＋ｈ｝×｛ｉ＋ｊ｝
→（ａ｛ｃ＋ｄ＋ｅ｝＋ｂ｛ｃ＋ｄ＋ｅ｝）＋｛ｆ×ｇ＋ｆ×ｈ｝×｛ｉ＋ｊ｝
→（｛ａ×ｃ＋ａ×ｄ＋ａ×ｅ｝＋｛ｂ×ｃ＋ｂ×ｄ＋ｂ×ｅ｝）＋｛ｆ×ｇ×ｉ＋ｆ×ｈ×ｊ｝
→ａ×ｃ＋ａ×ｄ＋ａ×ｅ＋ｂ×ｃ＋ｂ×ｄ＋ｂ×ｅ＋ｆ×ｇ×ｉ＋ｆ×ｈ×ｊ・・・（数２）
【００３６】
すなわち、まず、第一の項を構成する第一の因子と第二の因子が展開する。次に、第一の因子の一番左の識別子であるａと第二の因子を構成する一番左の識別子ｃが掛け合わせる。次に、ｄ、ｅの順に掛け合わせて展開する。そして、第一の因子の左から２番目の識別子、換言すると右側の識別子であるｂと第二の因子を構成する一番左の識別子ｃが掛け合わせる。その後、ｄ、ｅの順に掛け合わせて展開する。一方、第二の項については、まず第二の括弧で括られている第四の因子と同じく第二の括弧で括られている第五の因子を掛け合わせる。なお、第二の括弧は、第一の括弧とは異なり因子の順序ごとに積を作成しその和を出力する展開が行われる。すなわち、まず第四の因子を構成する一番左の識別子ｇと第五の因子を構成する一番左の識別子ｉの積を作成する。次に、第四の因子を構成する左から２番目の識別子であるｈと第五の因子を構成する左から２番目の識別子であるｊの積を作成し、これらの和として出力する。更に第三の因子を構成する識別子ｆと掛け合わせて展開する。
【００３７】
このような展開処理を行うことにより、数１で表現される前記対象情報は、対象情報の最小単位である識別子の積とこれらの和によって表現されることになる。すなわち、展開手段による展開を実行することにより集合で表現することが可能となる。つまりは、展開処理手段を備えることで前記対象情報の抽象度を高くすることが可能となる。
【００３８】
部分集合取得手段は、部分集合を取得する。これにより、前記対象情報の中から部分集合を取得することが可能となる。例えば、数３で表現される対象情報について、ａについての部分集合を取得すると数４で表現される対象情報となる。
ａ×ｃ＋ａ×ｄ＋ａ×ｅ＋ｂ×ｃ＋ｂ×ｄ＋ｂ×ｅ＋ｆ×ｇ×ｉ＋ｆ×ｈ×ｊ・・・（数３）
ａ（ｃ＋ｄ＋ｅ）＋ｂ×ｃ＋ｂ×ｄ＋ｂ×ｅ＋ｆ×ｇ×ｉ＋ｆ×ｈ×ｊ・・・（数４）
【００３９】
接着空間作成手段は、異なる対象情報を構成する前記因子間における同値関係の対応に基づき該因子同士を接着する。その結果、新たな空間である接着空間を作成することができる。接着空間作成手段を備えることで、前記対象情報が異なる空間を表現するものであっても、同値関係にある因子を介して関連付け新たな空間を設計することが可能となる。
【００４０】
ホモトピー保存処理手段は、前記対象情報についてホモトピー保存処理を実行する。ホモトピー保存処理は、対象情報に対する演算結果とともに、演算前の対象情報、適用された演算、および、演算時に使用されたパラメータを記憶する機能である。これにより、前記処理手段の処理実行前の前記対象情報の状態を取得することが可能となる。そして、例えばホモトピー保存処理手段による処理の実行は数５のように表すことができる。
ａ（ｂ＋ｃ）
↓Ｈ
（ａ×ｂ＋ａ×ｃ）＝Ｆ（ａ（ｂ＋ｃ）＋ε）・・・（数５）
【００４１】
数５におけるＦは、本情報処理装置１００で規定した「展開」という演算をを表す識別子である。また、εは、値“１”を表す記号であり、Ｆの演算において、値“１”が使用されたことを示している。すなわち、展開処理を実行した後の状態を表す、対象情報（ａ×ｂ＋ａ×ｃ）は、ａ（ｂ＋ｃ）を展開処理したものであることを意味する。このように、ホモトピー保存処理を実行することによって、前記格納処理手段に格納される対象情報は処理前の状態についても保存されているため、対象情報の過去の状態を取得することが可能となる。
【００４２】
本発明に係る情報記憶装置において、前記各レベルは、前記対象情報が最も抽象度が高く表現される集合レベルと、前記集合レベルよりも前記対象情報の抽象度が低く表現され、該対象情報が部分集合によって表現されるトポロジー空間レベルと、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現され、該トポロジー空間レベルにおける前記対象情報同士が接着される接着空間レベルと、前記接着空間レベルよりも前記対象情報の抽象度が低く表現され、前記トポロジー空間における前記対象情報が所定の属性をもって表現されるセル空間レベルと、を有するものとしてもよい。
【００４３】
ここで、抽象度が高いとは、対象情報同士の関係、あるいは、関連を示す情報が少ないことをいう。
【００４４】
例えば、集合レベルは、前記対象情報の抽象度が最も高く表現されるものである。集合レベルにおける対象情報（以下、集合の対象情報ともいう）は対象情報の最小単位である識別子の積を項としてこれらの和からなる式によって表現される。なお、集合レベルには、他の抽象度の低いレベルから展開処理手段の展開処理を実行することにより移行することができる。また、前記記憶手段に格納する際に集合レベルで入力することとしてもよい。
【００４５】
トポロジー空間レベルは、前記集合レベルよりも前記対象情報の抽象度が低く表現される。また、対象情報の部分集合を要素として扱うことによって表現される。ただし、部分
集合が１つの場合も、トポロジー空間レベルである。例えば前記対象情報が集合レベルで表現されている場合に、前述した部分集合取得手段の部分集合取得処理を実行する。すると集合レベルで表現されている対象情報は、トポロジー空間レベルに移行されることになる。
【００４６】
接着空間レベルは、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現される。すなわち、接着空間レベルは、該トポロジー空間レベルにおける前記対象情報同士が同値関係を基準に結合されることで表現されるものである。前記トポロジー空間レベルで表現されている異なる２以上の対象情報に前述した接着手段の接着処理手段を実行することで新たな空間レベル、すなわち接着空間レベルへ移行することが可能となる。
【００４７】
セル空間レベルは、トポロジー空間レベルの情報の式表現のうち、特定の式表現に限定して、属性と属性値の関係を定義できるようにしたものである。したがって、当然、セル空間レベルはトポロジー空間レベルの性質、および、機能を有している。この点で、セル空間レベルはトポロジーレベルの１ケースである。
【００４８】
このように、セル空間レベルの情報と、トポロジー空間レベルの情報とは、式表現の形式上は、差異がない。すなわち、セル空間レベルの情報は、セル空間ＩＤと属性の定義を示す因子とで括り出された部分集合の式表現と見なせるからである。セル空間レベルの情報は、セル空間ＩＤと属性の定義を示す因子に、セル空間ＩＤという意味、および属性の定義という意味を付加することで、形成される。この意味で、セル空間レベルの情報は、トポロジー空間レベルの情報の特殊ケースである。また、特殊ケースという意味で、セル空間レベルは、トポロジー空間レベルよりも、抽象度が低いとも言える。一方、そのような意味づけを解消すれば、セル空間レベルの情報は、同一の式表現のまま、トポロジー空間レベルの情報となる。
【００４９】
さらに、セル空間レベルの情報は、前述した展開手段の展開処理を実行することにより、集合レベルに移行されることもできる。すなわち、すべての括弧を展開すればよい。
【００５０】
なお、このセル空間レベルの属性は、通常は、アプリケーションプログラムによって定義されるものである。したがって、本情報処理装置では、セル空間レベルの情報は、アプリケーションプログラムのユーザインターフェースを通じて入力されることを想定している。
【００５１】
また、本実施形態では、セル空間レベルは、接着空間レベルの性質、および、機能も有していることとした。したがって、セル空間レベルの複数の対象情報を接着することができる。これは、逆に、セル空間レベルの情報を接着した接着空間レベルの情報は、セル空間レベルの性質、機能を有していると言える。
【００５２】
本発明に係る情報記憶装置において、前記各レベルは、前記情報処理手段による処理の実行前の状態を所定の形式によって表現することにより処理前の状態に戻すことが可能なホモトピーレベルを更に有するものとしてもよい。
【００５３】
ホモトピーレベルは、前記情報処理手段による処理の実行後の状態が実行前の状態を含んだ状態で所定の表現形式で表現されることで処理前の状態に戻すことが可能な空間である。ホモトピーレベルでは、例えば、式１で示される対象情報が、演算Ｐによって、式２に変換されたときに、「式２＝式１に演算Ｐを実行」のように記述される。したがって、演算前のレベルには、前述したホモトピー保存処理を実行することにより移行することができる。なお、ホモトピーレベルは、前述した他の空間レベルとは本質的に異なる。すなわち、他の空間レベルは、上述したように対象情報の抽象度によって段階的に表現される
空間である。しかし、ホモトピーレベルは他の空間レベルのそれぞれと常に行き来が可能な空間である。換言すると、ホモトピーレベルは、前述した各空間レベル間の移動を補助する空間であると言える。ホモトピーレベルを前述した各空間レベルと併用することにより、前記対象情報に対する処理前の状態を取得することが可能となるからである。
【００５４】
次に、本発明に係る情報処理装置の実施形態について図面に基づいて説明する。
【００５５】
《第１実施形態》
（装置構成）
図１は、第１の実施形態に係る情報処理装置１００の構成を示すブロック図である。同図に示すように、第１の実施形態に係る情報処理装置１００は、対象情報を入力するキーボード、ポインティングデバイス等の入力手段１１（本発明の入力部に相当）と、入力された対象情報を格納するメモリ１２（本発明の記憶部に相当）と、対象情報を所定のプログラムに基づいて処理するＣＰＵ１３（本発明の処理部に相当）と、入力された対象情報や処理後の対象情報を出力するディスプレイ等の出力手段１４（本発明の出力部に相当）と、ＣＰＵ１３と入力手段１１との間を接続するインターフェース１５と、ＣＰＵ１３と出力手段１４との間を接続するインターフェース１６とを備える構成である。
【００５６】
インターフェース１５は、例えば、ＵＳＢ（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(部分集合取得前の式表現、指定因子)；のように定義できる。対象の式，因子を指定すると，括った後の式（戻り値）になります。
【０１９７】
次に部分集合取得処理について説明する。図１５は、部分集合取得処理を実行する処理のフローを示す。ステップＳ５０１では、演算前の所定の表現形式で表現される対象情報と、部分集合を指定するための指定因子ｐを入力する。以下、対象情報として数１８に示すデータを用いて、指定因子“ｐ”で部分集合を取得する場合について説明する。
ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）＋ｉｄ（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））・・・（数１８）
【０１９８】
ステップＳ５０２では、部分集合を取得するための因子以外（ここでは、「その他の式」「左因子式」および「右因子式」）をΦと設定する。ステップＳ５０３では「処理後の項」をεに設定する。ステップＳ５０４では、対象情報を構成する式の長さが０であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが０であると判断した場合には、ステップＳ５１７へ進む。一方、式の長さが０であると判断しなかった場合には、ステップＳ５０５へ進む。
【０１９９】
ステップＳ５０５では、数１８から第一項を取得し保存する。次にステップＳ５０６では、数１８から第一項を削除する。次にステップＳ５０７では、取得した項に因子ｐが含まれるか判断する。取得した項に因子ｐが含まれると判断した場合にはステップＳ５１５へ進む。一方、取得した項に因子ｐが含まれると判断しなかった場合には、ステップＳ５０８へ進む。
【０２００】
ステップＳ５０８では、項の長さが０であるか否かを判断する。項の長さが０であると判断した場合にはステップＳ５１４へ進む。一方、項の長さが０であると判断しなかった場合には、項から第一因子を取得し、これを保存し（ステップＳ５０９）、次に項から第一因子を削除する（ステップＳ５１０）。
【０２０１】
次にステップＳ５１１では、第一因子が第一の括弧又は第二の括弧で括られているか判断する。因子が第一の括弧又は第二の括弧で括られていると判断した場合には、第一の括弧又は第二の括弧で括られている式に対して、本部分集合取得処理を実行する（ステップＳ５１２）。すなわち、再起呼び出しを実行する。一方、第一の括弧又は第二の括弧で括られていると判断しなかった場合には、第一因子を取得した因子とし（Ｓ５２０）、ステップＳ５１３へ進む。ステップＳ５１３では、処理後の項に取得した因子によって積演算処理を実行し、その結果を処理後の項とし、ステップＳ５０８の処理を再度実行する。
【０２０２】
ステップＳ５０８において、項の長さが０であると判断した場合には、その他の式に処理後の項を和演算処理し、その結果をその他の式とする（ステップＳ５１４）。ステップＳ５１４の処理を実行後、再度ステップＳ５０３の処理を実行する。次にステップＳ５０４において式の長さが０であると判断した場合には、部分集合の項として｛左因子式｝ｐ｛右因子式｝を作成し（ステップＳ５１７）、その他の式に部分集合項を和演算し，演算後の式とし（ステップＳ５１８）、処理を終了する。以上の処理を実行することにより、数１８により表現される対象情報は、数１９により表現される対象情報となる。なお、部分集合取得処理を実行中の対象情報の状態の詳細は図１６Ａ、図１６Ｂに示す。
ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋ｐ４）｝）＋｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋ｐ４）｝・・・（数１９）
【０２０３】
図１６Ａおよび図１６Ｂに、数１８の式表現に対して、部分集合取得処理が実行された場合の「演算前の式」、「部分集合取得のための因子」、「左因子式」、「右因子式」、「左因子」、「右因子」「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」の変化を示す。図１６Ａの各行と、図１６Ｂの各行は、図１５の処理での同一の処理を示している。すなわち、図１６Ａおよび図１６Ｂを横に接続して、部分集合取得処理の状態変化が表されることになる。
【０２０４】
図１６Ａおよび図１６Ｂの第１行目は、各列の要素、すなわち、図１５中の該当する処理を示す番号、「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」を示している。第２行以下の各行は、一連の処理ステップであり、図１６Ａおよび図１６Ｂの表の上から下へ実行される。
【０２０５】
ここでは、数１８の式表現を処理対象とする。部分集合取得処理を実行する共通関数se
parateに対して、まず、部分集合取得前の式表現である数１８が与えられる。この式表現はメモリ１２に格納される。また、指定因子はｐであるとする。
【０２０６】
まず、Ｓ５０５、Ｓ５０５の処理で、式から第一項ｓ×ｐ（ｐ１＋ｐ２）が取得される。ｓ×ｐ（ｐ１＋ｐ２）に指定因子ｐが含まれているので、Ｓ５１５およびＳ５１６が実行され、左因子ｓおよび右因子（ｐ１＋ｐ２）がそれぞれ左因子式および右因子式に和演算される。
【０２０７】
次に、Ｓ５０５、Ｓ５０６の処理で、式から第二項ｔ×ｐ（ｐ３＋ｐ４）が取得される。ｔ×ｐ（ｐ３＋ｐ４）に指定因子ｐが含まれているので、Ｓ５１５およびＳ５１６が実行され、左因子ｔおよび右因子（ｐ３＋ｐ４）がそれぞれ左因子式および右因子式に和演算される。
【０２０８】
さらに、Ｓ５０５、Ｓ５０６の処理で、式から第三項ｉｄ（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））が取得される。そして、Ｓ５０９において、第一因子としてｉｄが取得される。項ｉｄは、Ｓ５１３にて、処理後の項に積演算される。さらに、Ｓ５０９において、第一項として、次の項（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））が取得される。これは、Ｓ５１１の判定で、第１の括弧を含むとされるので、Ｓ５１２が実行される。
【０２０９】
そして、式表現ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）に対して、部分集合取得処理が再起呼び出しで実行される。図１６Ａおよび図１６Ｂでは、再起呼び出し中の状態は、省略されているので、本文にて説明する。この場合も、ｓ×ｐ（ｐ１＋ｐ２）から、左因子ｓ、右因子（ｐ１＋ｐ２）が取得される。また、ｔ×ｐ（ｐ３＋ｐ４）から、左因子ｔ、右因子（ｐ３＋ｐ４）が取得される。これらの左因子および右因子は、Ｓ５１６において、それぞれ左因子式、および右因子式に和演算される。そして、式表現ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）の末尾まで処理が進み、Ｓ５０４で、残りの式の長さが０であると判定される。すると、ＣＰＵ１３は、部分集合の項として、｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝を作成する。そして、ＣＰＵ１３は、部分集合の項を演算後の式として、再起呼び出しを終了する。
【０２１０】
再起呼び出しを終了すると、演算後の式を取得するので、これを取得した因子とする。この場合、取得した因子は、（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）である。そして、ＣＰＵ１３は、Ｓ５１３にて、再起呼び出し前に計算しておいた処理後の項（“ｉｄ”が積演算されている）に、取得した因子を積演算する。その結果、Ｓ５１３において、処理後の項は、ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）となる。ＣＰＵ１３は、Ｓ５１４にて、処理後の項をその他の式として和演算する。
【０２１１】
そして、Ｓ５０４にて、残りの式の長さが０であると判定されると、ＣＰＵ１３は、再起呼び出し前に作成していた左因子式ｓ＋ｔおよび右因子式（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）から、部分集合の項｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）｝を作成する。そして、ＣＰＵ１３は、Ｓ５１８にて、その他の式に部分集合の項を和演算する。これによって、演算後の式ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）＋｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）｝が作成されることになる。
【０２１２】
（１５）ホモトピー保存処理
次にホモトピー保存処理について説明する。ホモトピー保存処理は、式１に対して、パラメータを表す項ｐを用いて演算Ｇを実行し、式２が得られたとき、
（演算後の式２）＝Ｇ（演算前の式１＋演算時のパラメータを表す項ｐ）
のように、演算実行前後の関係を保持する機能である。この場合、演算実行前の式１、す
なわち、初期状態は、式ΦにパラメータΦ項を適用して、式１が得られたと仮定し、演算前の式を
式１＝Ｆ（Φ＋Φ）
のようにおく。ここで、演算実行前の式をホモトピー保存式１と呼ぶことにする。
【０２１３】
図１７は、ホモトピー保存処理を実行する処理のフローを示す。ここで、式１は、数２０の左辺の式である。また、attachによって接着演算が指定され、因子２と因子ｑとの同値関係が指定されている場合を説明する。
【０２１４】
まず、ステップＳ６０１では、演算実行前の式、すなわち、ホモトピー保存式１と、演算Ｇと、パラメータ因子ｐが入力される（Ｓ６０１）。
ここでは、例として、以下の数２０によって、式１を仮定する。また、演算Ｇとして、接着演算を実行する例を示す。また、そのときの、パラメータ因子として、ａｔｔａｃｈ（２＋ｑ）を指定する。すなわち、因子２と因子ｑとの同値関係が指定されて、接着演算が実行された場合を例に、ホモトピー保存処理を説明する。
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（Φ＋Φ）・・・（数２０）
【０２１５】
ステップＳ６０２では、数２０により表現される式から演算Ｇ前の式、すなわち数２０の左辺を取得する。これを数２１とする。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２））・・・（数２１）
【０２１６】
ステップＳ６０３では、演算Ｇによる演算処理を行い演算Ｇ後の式とする。この場合、数２２により表現される式が得られる。ここでは、演算Ｇの例として、接着演算を実行する。また、接着演算の同値関係を指定するパラメータを“２”および“ｑ”とする。すなわち、因子“２”で商演算された商と、因子“ｑ”で商演算された商とを接着する。そのときのホモトピー保存式の例を説明する。
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ２＋ｂ２＋ｃ２｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝・・・（数２２）
【０２１７】
ステップＳ６０４では、演算Ｇ後のホモトピー保存式２として、（演算Ｇ後の式）＝Ｇ（ホモトピー保存式１＋演算時のパラメータｐ）を作成する。ここで、パラメータｐは、“ａｔｔａｃｈ（２＋ｑ）”である。以上の処理を実行することにより数２１により表現された式は、数２３により表現される式となる。
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）
＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））
＝Ｇ（Ｆ（Φ＋Φ）＋ａｔｔａｃｈ（２＋ｑ）））・・・（数２３）
【０２１８】
この式は、Ｆ（Φ＋Φ）で示される式（すなわち、数２１）に、ａｔｔａｃｈ（２＋ｑ）というパラメータで演算Ｇ、すなわち、接着演算が実行されて、数２３の左辺（最上段の式）が得られたことを示している。
【０２１９】
（１６）ＵＮＤＯ演算処理
次にホモトピー保存式におけるＵＮＤＯ演算処理について説明する。図１８は、ホモト
ピー保存式におけるＵＮＤＯ演算処理のフローを示す。ステップＳ７０１では、ホモトピー保存式（演算Ｇ後の式）＝Ｆ（演算Ｇ前の式＋演算時のパラメータを表す式ｐ）の入力をする。以下、対象情報として数２４に示すデータを用いた場合について説明する。
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ２＋ｂ２＋ｃ２｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）
＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））
＝Ｆ（Φ＋Φ）＋ａｔｔａｃｈ（２＋ｑ））・・・（数２４）
【０２２０】
上述のように、ホモトピー保存式は、演算Ｇ前の式Ｆ（Φ＋Φ）に演算（この例では、接着演算Ｇ、演算時のパラメータはａｔｔａｃｈ（２＋ｑ））を実行することで、数２４の最上段（最初の“＝”の左辺）の式表現が得られたことを記録している。なお、数２４において、中段の式（最初の“＝”の右辺）と、最下段の式（２つ目の“＝”の右辺）とは、表現形式が異なるだけで実質的に同一の式である。最下段の式は、Ｆ（Φ＋Φ）を用いて表現を簡略化している。そして、それら中段の式と簡略された式を“＝”で結んだ式が、Ｇ（）という演算の中に挿入されている。
【０２２１】
ＵＮＤＯ演算処理では、この記録を基に、演算前の式を得る。すなわち、ＣＰＵ１３は、演算の種類と、演算時のパラメータとを基にして、演算前の状態に式を戻す。
【０２２２】
次にステップＳ７０２では、ＵＮＤＯ後の式（演算Ｇ前の式）＝Ｇ-1（（演算Ｇ後の式）＝Ｇ（演算Ｇ前の式＋ｐ））の作成を実行する。この場合、すでに、数２４の中段の式と下段の式で、演算の種類Ｇ、演算実行前の式、演算時のパラメータａｔｔａｃｈ（２＋ｑ）が記録されている。したがって、演算前の式は、直ちに、取り出すことができる。以上の処理を実行することにより数２４により表現された対象情報は、数２５により表現される対象情報となる。
（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（Φ＋Φ））
＝Ｇ-1（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）
＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））
＝Ｆ（Φ＋Φ）＋ａｔｔａｃｈ（２＋ｑ））
）・・・（数２５）
【０２２３】
この式は、数２４で与えられホモトピー保存式の両辺に、演算Ｇ前に戻す演算Ｇ-1を実行することによって、演算Ｇ前の式（初期状態Ｆ（Φ＋Φ）が得られたことを示している。これによって、演算Ｇ前の式である（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（ε＋ε）が、演算Ｇ後の式であるｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝から得られることが示される。
【０２２４】
さらに、この演算Ｇ後の式であるｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）は、演算Ｇ前の式であるｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋
ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２））から得られたことが記録されている。
【０２２５】
すなわち、演算Ｇ前の式（Ｆ（Φ＋Φ））に演算Ｇ、パラメータａｔｔａｃｈ（２＋ｑ）を適用することで、演算Ｇ後の式が得られ、かつ、その演算Ｇ後の式に演算Ｇ-1を適用することで、演算Ｇ前の式に戻されたことが記録される。
【０２２６】
このように、ＵＮＤＯ演算処理は、演算後の式から、演算前の式が得られたことを記録するので、次に示すＲＥＤＯ演算処理を実行することで、直ちに、演算後の式を得ることができる。
【０２２７】
（１７）ＲＥＤＯ演算処理
次にホモトピー保存式におけるＲＥＤＯ演算処理について説明する。図１９は、ホモトピー保存式におけるＲＥＤＯ演算処理のフローを示す。ステップＳ８０１では、ホモトピー保存式におけるＵＮＤＯ後の式（演算Ｇ前の式）＝Ｇ-1（（演算Ｇ後の式）＝Ｇ（演算Ｇ前の式＋ｐ））の入力をする。以下、対象情報として数２６に示すデータを用いた場合について説明する。
（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（ε＋ε））
＝Ｇ-1（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ２＋ｂ２＋ｃ２｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（Φ＋Φ）＋ａｔｔａｃｈ（２＋ｑ））
）・・・（数２６）
【０２２８】
上述のように、数２６は、演算Ｇ前の式（Ｆ（Φ＋Φ））に接着演算Ｇおよびパラメータａｔｔａｃｈ（２＋ｑ）が適用され、演算Ｇ後の結果が得られ、さらに、演算Ｇ後の式から演算Ｇ前の式に戻されたことが記録されている。
【０２２９】
次にステップＳ８０２では、ＵＮＤＯ後の式から，ＵＮＤＯ演算前の式、すなわち（演算Ｇ後の式）＝Ｇ（演算Ｇ前の式＋演算時のパラメータｐ）を取得し、ＲＥＤＯ演算後の式とする。以上の処理を実行することにより数２６により表現された対象情報は、数２７により表現される対象情報となる。
（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ２＋ｂ２＋ｃ２｝＋Φ））＋ｓ（ｐ（ｐ１＋ｐ２）＋Φ）＋｛ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝＋ε｝｛２＋ｑ｝｛｛ε＋ａ２＋ｂ２＋ｃ２｝＋（ｑ１＋ｑ２）｝）＝Ｇ（（ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））＋ｓ（ｐ（ｐ１＋ｐ２）＋ｑ（ｑ１＋ｑ２）））＝Ｆ（ε＋ε）＋ａｔｔａｃｈ（２＋ｑ））・・・（数２７）
【０２３０】
このように、ホモトピー保存処理によって、演算後の結果とともに、演算Ｇ前の式（Ｆ（Φ＋Φ））と、適用される演算の種類Ｇと、使用されるパラメータａｔｔａｃｈ（２＋ｑ）を記録する。これによって、ＵＢＤＯ演算処理で演算前の結果を得ることができる。さらに、ＵＮＤＯ演算処理で、演算後の式から、演算前の式が得られたことを記録することで、ＲＥＤＯ演算処理を実行し、直ちに、演算Ｇ後の式を得ることができる。このように、ホモトピー保存処理、ＵＮＤＯ演算処理、およびＲＥＤＯ演算処理は、メモリ１２の容量を犠牲にして、演算前後の関係を保持する一方、演算を戻す処理と再実行する処理とを簡易に実現する。
【０２３１】
（適用例）
次にデータ処理システムを開発する際に、本発明に係る情報処理装置を使用する例について説明する。
【０２３２】
本発明に係る情報処理装置は、様々なデータ処理システムに適用可能である。図２０は、建設業における情報管理、すなわちデータ処理システムが要求される例を示す。同図に示すように、例えば建設業における管理として、プロジェクト管理と現場管理が例示できる。プロジェクト管理の主は、財務管理であり、財務管理は予算作成管理、購買管理、資機材管理によって成り立っている。そして、これらの管理は、データベースに格納された情報を管理することによって行われる。また、現場管理においては、工程管理が主であるが工程管理においては作業手帳の情報も管理できることが重要である。そして本発明に係る情報処理システムは、これらあらゆる情報管理、すなわちデータ処理システムに適用できる。以下、具体的に説明する。なお、本実行形態においては建設業における例としたがこれに限定されるわけではない。様々な分野において適用可能である。
【０２３３】
図２１Ａ及び図２１Ｂは、本発明の対象情報に相当する社員データ及び伝票データを示す。図２１Ａに示す社員データ（マスタデータ）は、正規化表構造で表現されるデータである。これを本発明に係る所定の表現形式によって表現すると、数２８により表現される。そして、このデータはメモリ１２に格納される。なお、上記社員データはキーボード等の入力部１１から入力する。入力された社員データは、ディスプレイ等の出力部１４にて確認できる。
社員（社員コード｛ε＋氏名＋年齢＋職種＋所属｝（Ｋ１００｛ε＋社員Ａ＋３０＋土木＋情報システム｝＋Ｋ１０１｛ε＋社員Ｂ＋４９＋事務＋土木｝＋Ｋ１０２｛ε＋社員Ｃ＋２４＋建築＋建築｝））・・・（数２８）
【０２３４】
情報処理装置１００は、このようにして、社員データをメモリ１２に保持し、データベースとして管理する。この場合、データ入力のためのユーザインターフェース、データ出力のためのユーザインターフェースに限定はない。すなわち、情報処理装置１００は、式表現で対象情報を記述し、メモリ１２に保持し、上述の演算処理を実行する共通関数によって、演算機能をアプリケーションプログラムに提供する。したがって、アプリケーションプログラムの構成そのものにも限定はない。
【０２３５】
例えば、社員情報の入力は、社員コード、氏名、年齢、職種、所属部署等の入力フィールドを備えた、画面プログラムで行っても良い。そして、画面プログラムは、入力された情報から、上記式表現（例えば、インスタンスＫ１０１｛ε＋社員Ｂ＋４９＋事務＋土木｝）を生成すればよい。ただし、セル空間情報、トポロジー空間情報、集合情報の末尾に、インスタンスを挿入する共通関数を提供してもよい。例えば、戻り値＝insert(セル空
間ＩＤ、インスタンス)というアプリケーションインターフェースを提供してもよい。
【０２３６】
また、例えば、社員情報の入力は、テキストエディタを用いて、数２８の式表現に、インスタンスを直接挿入するようにしても構わない。インスタンスが挿入された後は、上記各種演算によって、共通関数が、アプリケーションプログラムに処理機能を提供する。
【０２３７】
したがって、情報処理装置１００によれば、従来のようなリレーショナルモデルによってテーブルを構成することなく、式表現をメモリ１２に保持することによって、社員データのような表形式のデータを管理できる。例えば、有る社員Ａ（社員コードＫ１２０）に関するデータを抽出し、表示するには、セル空間ＩＤとして、“社員”を指定し、因子“社員コード×Ｋ１２０”によって同値関係を指定し、部分集合取得処理を実行すればよい。
【０２３８】
さらに、情報処理装置１００のように、式表現で対象情報を表した場合、属性の追加、
削除、変更は自在である。式表現を変更すればよいからである。従来の表形式のリレーショナルモデルでは、属性の追加、削除は、データベース自体の再構築が要求される。例えば、社員情報のレコードが、社員コード、氏名、年齢、職種、所属部署のフィールドからなっており、すでに、データベースが運用されている場合に、このレコードに、さらに、性別、入社年、役職を追加することは困難である。しかしながら、情報処理装置１００では、属性の追加、削除は、式表現の変更であり、変更のための工数が極めて少なくなる。
【０２３９】
さらに、情報処理装置１００のように、式表現で対象情報を表した場合、異なる形式のセル空間情報、異なる種類のトポロジー空間情報、異なる種類の集合情報を自在に定義できる。したがって、リレーショナルモデルのように、社員データが、特定の表で定義されたレコードの形式で固定されることもない。例えば、社員データを示すセル空間情報として、一般社員の部分集合、管理職の部分集合、非正規社員の部分集合、嘱託社員の部分集合等を自在に定義できる。
【０２４０】
また、情報処理装置１００のように、式表現で対象情報を表した場合に、１つの属性に複数の値を設定できる。さらに、第１の括弧および第２の括弧を用いて、１つの属性に対して、複数階層に渡るデータを定義することも容易である。例えば、社員（コード｛ε＋氏名＋年齢＋職種｛｛国別、公用語｝、職種コード｝＋所属｛事業所｛国別、事業所コード｝、部門、課｝｝のように複数階層に渡る属性を設定できる。また、１つの属性に対する値として、第１の括弧、第２の括弧を用いて複数個の値を持つ属性値を設定できる。
【０２４１】
図２１Ｂに示す伝票データは、非正規化表構造で表現されるものである。また、同図に示すように伝票データと属性のまったくない付箋メモが添付されている。従来、このような対象情報をデータベースに入力は、新たなアプリケーションの開発を必要とするなど非常に困難とされていた。しかし、これを本発明に係る所定の表現形式によって表現すると、数２９により表現される。そして、このデータはメモリ１２に格納され情報管理を行うことができる。なお、ｍｉｄは付箋のｉｄを表し、ｐｔは伝票中の付箋を添付する位置を表す。
伝票ＩＤ（伝票コード｛プロジェクト名称＋期間｛開始＋終了｝＋金額＋担当者｛連絡先＋コード｝｝（ａ｛ｂ＋ｃ｛ｃ１＋ｃ２｝＋ｄ＋ｅ｛ｅ１＋ｅ２｝｝））＋｛伝票ＩＤ＋ε｝｛ｐｔ＋ｍｉｄ｝｛ε＋メモ｝・・・（数２９）
【０２４２】
図２２Ａ及び図２２Ｂは、プロジェクトデータ及び歩掛作成データを示す。図２２Ａに示すプロジェクトデータは、有向グラフのツリー構造で表現されるデータである。すなわち、実行予算データは、発注データ１と発注データ２により構成され、更に発注データ１は検収データ１と検収データ２により構成される。また、発注データ２は、検収データ３と検収データ４により構成される。このようなプロジェクトデータは、本発明に係る所定の表現形式によって表現すると、数３０により表現される。そして、このデータはメモリ１２に格納され情報管理を行うことができる。
【０２４３】
実行予算（発注データ１（検収データ１＋検収データ２）＋発注データ２（検収データ３＋検収データ４））・・・（数３０）
【０２４４】
図２２Ｂに示す歩掛作成データは、逆ツリー構造で表現されるデータである。同図に示すように土砂掘削には、バックホーの運転とダンプトラックの運転を必要とする。また、バックホーの運転には燃料である軽油と運転手が必要となる。また、ダンプトラックの運転には、軽油及び運転手が必要となり、更に雑費が関係してくる。なお、このような逆ツリー構造で表現される対象情報は、従来データ管理が難しいとされていたものである。しかし、これを本発明に係る所定の表現形式によって表現すると、数３１により表現される。そして、このデータはメモリ１２に格納され情報管理を行うことができる。
（（軽油＋運転手）バックホー運転＋（経由＋運転手＋雑費）ダンプトラック運転）土砂掘削・・・（数３１）
【０２４５】
図２２Ｂで、下側のグラフは、経由および運転手が１つに集約されている。一方、上側のグラフの経由および運転手がバックホー運転と、ダンプトラック運転とで分離している。従来のデータベースでは、このようなことが表現できない。リレーショナルデータベース等で工夫してデータベース設計したとしても、アプリケーションプログラムが煩雑になる。また故に変更時にはメンテが大変になる。これが既存の技術の問題点，表現力の問題で，既存のモデルでは表現できないが故に工夫した設計アプリ開発が必要になりコスト増、また開発業者の品質に差が出る。またデータベース，アプリケーションプログラム設計等技術者が別れ，技術の分離により工期の遅れがあって当然になっている。さらに要求仕様が曖昧だったり開発途中で変更されたりすると手戻りが増え大幅なコスト増になるケースが頻発している。一方、本実施形態の技術では統一的により多くのことが表現可能なので、データベース設計、アプリケーション設計・開発の負担が従来よりも軽減される。つまり、情報処理装置１００で処理したい情報を式として入力すれば、本実施形態で説明した演算によって、処理し、検索し、出力できる。本実施形態の技術ではビジュアルに式で各空間を設計して、各関数を使用すると変形されてその場で必要な出力結果が出て確認できる。したがって、仕様の曖昧さがなくなり、アプリケーション開発が極めて少ない故にメンテナンスも容易である。例えば、図２２Ｂ上側のレコード構成で、バックホー運転を構成する運転手のデータベースに、新たな運転手の情報を追加しても、ダンプトラック側には、反映されない。
【０２４６】
しかし、本実施形態の情報処理装置１００では、図２２Ｂ上側のグラフおよび下側のグラフは、ともに数３１で表される。数３１でも、一見、バックホー運転と、ダンプトラック運転とで、運転手のデータベースが分離しているように見える。しかしながら、本実施形態で示したトポロジー空間情報は、部分集合を識別するＩＤによって、個々の項を分類する。したがって、バックホーというデータを構成する運転手データの部分集合も、ダンプトラック運転を構成する運転手データの部分集合も、ともに同一の部分集合ＩＤを付与した場合には、同一の部分集合として管理される。
【０２４７】
したがって、運転手データの部分集合が、例えば、社員×運転手×（運転手１＋運転手２＋・・・＋運転手Ｎ）のように構成されているとする。この場合に、数３１は、以下の数３２ように、記述される。
（（軽油＋社員×運転手×（運転手１＋運転手２＋・・・＋運転手Ｎ））バックホー運転＋（経由＋社員×運転手×（運転手１＋運転手２＋・・・＋運転手Ｎ）＋雑費）ダンプトラック運転）土砂掘削・・・（数３１）
【０２４８】
この場合に、一旦、社員×運転手×（運転手１＋運転手２＋・・・＋運転手Ｎ）によって部分集合取得処理を実行すると、以下のようになる。
（｛ε＋ε｝社員×運転手×（運転手１＋運転手２＋・・・＋運転手Ｎ）｛バックホー運転＋ダンプトラック運転｝＋軽油×バックホー運転＋（軽油＋雑費）×ダンプトラック運転）×土砂掘削・・・（数３３）
【０２４９】
このように、運転手に関するデータが一元化されるので、運転手Ｍを追加したとしても、バックホー運転と、ダンプトラック運転の両方の運転手を変更できる。
なお、バックホー運転と、ダンプトラック運転とで、運転手データベースを個別に管理したい場合は、それぞれの部分集合ＩＤを異なるものとすればよい。
（｛ε＋ε｝社員×（｛ダンプ運転手×（運転手１＋運転手２＋・・・＋運転手Ｎ）＋トラック運転手×（運転手１＋運転手２＋・・・＋運転手Ｎ）｝｛バックホー運転＋ダンプトラック運転｝）＋軽油×バックホー運転＋（軽油＋雑費）×ダンプトラック運転）×土
砂掘削・・・（数３３）
【０２５０】
以上例示的に説明した各種データ、すなわち対象情報は新たな情報の入力や上述した所定の処理を実行することにより様々な状態に変化可能である。すなわち、メモリ１２に格納された対象情報をシステム管理する上で最も管理し易い状態、換言すると抽象レベルに移行することができる。次に、本発明に係る抽象度に応じた各レベルについて適用例とともに説明する。
【０２５１】
図２３は、集合レベル２２で表現される対象情報の例を示す。集合レベル２２では、対象情報の抽象度が高く表現される。集合レベル２２は、Σ集合ＩＤ×項又はΣ項×集合ＩＤにより表現することができる。社員１、社員２、社員３からなる社員情報と、机、およびＰＣからなる備品情報が存在する場合について考える。この場合社員が集合ＩＤに相当し、社員１、社員２、社員３がそれぞれ項に相当する。また、備品情報については、備品が集合ＩＤに相当し、机及びＰＣが項に相当する。したがって、これらの対象情報を集合レベルで表現すると数３２のように表現できる。
社員×社員１＋社員×社員２＋社員×社員３＋机×備品＋ＰＣ×備品・・・（数３２）
【０２５２】
図２４は、トポロジー空間レベル２３で表現される対象情報の例を示す。トポロジー空間レベル２３は、トポロジー空間ＩＤ×（Σ部分集合）により表現することができる。ただし、数３２に対して、集合ＩＤである社員、あるいは、備品を括りだした式も、トポロジー空間レベル２３で表現される対象情報である。以下、数３２Ａに示す。
社員×（社員１＋社員２＋社員３）＋（机＋ＰＣ）×備品・・・（数３２Ａ）
【０２５３】
トポロジー空間レベル２３では、前記集合レベル２２よりも前記対象情報の抽象度が低く表現される。また、該対象情報が部分集合を項として表現される。上述した社員情報及び備品情報に新たに会社情報が追加され、社員情報及び備品情報は会社情報に属している。また、例えば、机のデータが、机１、机２からなり、ＰＣのデータがＰＣ１およびＰＣ２からなり、備品データは、机とＰＣからなり、会社管理するデータベースが、社員データと、備品データとを有する場合に、会社管理するデータベースは、次のような構成となる。この場合には、備品情報は机１、机２、机３からなる机情報と、ＰＣ１、ＰＣ２、ＰＣ３からなるＰＣ情報により構成される。このように、前述した集合レベル２２よりも抽象度がより低く表現されている。そしてこれらの対象情報をトポロジー空間レベル２３で表現すると数３３のように表現できる。
会社ＩＤ（社員（社員１＋社員２＋社員３）＋備品（机（机１＋机２）＋ＰＣ（ＰＣ１＋ＰＣ２）））・・・（数３３）
【０２５４】
ここでは、会社を管理するデータベースは、会社ＩＤによって識別される。“社員”で識別されるデータの部分集合は、社員１、社員２のような個々のデータを有している。ここで、社員１は、例えば、社員１のＩＤ×（氏名＋所属＋職務）等である。また、備品といるＩＤで識別されるデータの部分集合は、さらに、机というＩＤで識別される部分集合と、ＰＣというＩＤで識別される部分集合のデータとが、存在することを示している。机で識別されるデータの部分集合には、机１、机２等の個々のデータが記録される。机１は、例えば、机１のＩＤ×（取得原価＋時価＋設置場所＋メーカ）等である。ＰＣで識別されるデータの部分集合も同様である。このように、情報処理装置１００によれば、式表現でにて、識別子を×、＋、（）、｛｝によって組み合わせることで、管理対象を表現し、コンピュータ上のメモリ１２に記憶し、管理することができる。
【０２５５】
図２５は、接着空間レベル２４で表現される対象情報の例を示す。トポロジー空間Ｘ，Ｙがそれぞれ部分集合Ｘ０，Ｙ０に含まれる因子ｘ，ｙによって同値関係を指定して接着すると接着空間は、｛トポロジー空間ＸＩＤ×ｘの左因子＋トポロジー空間ＹＩＤ×ｙの
左因子｝×｛ｘ＋ｙ｝×｛ｘの右因子＋ｙの右因子｝＋トポロジー空間ＸＩＤ×（部分集合Ｘ−Ｘ０）＋トポロジー空間ＹＩＤ×（部分集合Ｙ−Ｙ０）となる。接着空間レベル２４では、前記トポロジー空間レベル２３よりも前記対象情報の抽象度が低く表現される。また、前記トポロジー空間レベル２３における前記対象情報同士が接着されて表現される。図２５に示すように、上述した会社情報に新たにトポロジー空間レベル２３で表現される情報機器情報が追加されている。そして、情報機器情報は、ノート及びデスクトップからなるＰＣ情報とＭ１及びＭ２からなるモバイル情報により構成されている。
【０２５６】
会社情報と情報機器情報をみるとＰＣ情報が共通していることがわかる。このような場合において、上述した所定の処理を実行することにより会社情報及び情報機器情報を展開する。すなわち、まず、商演算処理を実行して対象情報を分割し、その後分解した各情報の中からＰＣ情報を抽出し、接着処理を実行することにより接着空間を形成する。すなわち、トポロジー空間レベル２３で表現されていた会社情報及び情報機器情報を接着空間レベル２４へ移行されたことになる。これにより、今まで別々の情報として管理されていた情報を関連付けることができる。なお、商演算処理及び接着処理を実行するに当たり、ホモトピー保存処理を実行することで、処理の保存することが可能となる。その結果、前記処理手段の処理実行前の前記対象情報の状態を取得することが可能となる。また、これらは上述した基本となる所定の処理を実行することによって実現できる。しがたって、新たにアプリケーションプログラムを設計する必要もない。
【０２５７】
図２６は、セル空間レベル２５で表現される対象情報の例を示す。セル空間レベル２５は、セル空間ID×（キー属性×｛ε＋Σその他属性を表す部分集合｝（ΣインスタンスID×｛ε＋Σ値を表す部分集合｝））により表現できる。また、セル空間レベル２５は、前記トポロジー空間レベル２３よりも前記対象情報の抽象度が低く表現され、前記トポロジー空間における前記対象情報が所定の属性をもって表現される。図２６に示すように、社員情報はキー属性すなわち社員コードを持つ社員名、所属、年齢により構成される。また、これら社員名や所属に関する情報は社員ごとに識別情報である社員コードを付与されて区分けされている。そしてこれらの対象情報をセル空間レベル２５で表現すると数３４のように表現できる。
社員×（社員コード×｛ε＋社員名＋所属＋年齢｝×（Ｋ１０×｛ε＋社員Ａ＋土木＋３０歳｝＋Ｋ１１×｛ε＋社員Ｂ＋建築＋２９歳｝））・・・（数３４）
【０２５８】
セル空間レベル２５で表現される対象情報について新たな属性が追加された場合、従来はこの新たな情報に対応するために全体のデータベース設計，アプリケーションプログラムを組みなおすことが必要とされていた。これは、従来の情報処理では、情報処理の対象となるデータが、表、対象指向データベースでの対象の階層構造、そのような対象間の継承、データ間の関係を示すポインタによるリンク等で記述されるからである。しかし、第１の実行形態に係る情報処理装置によれば、データが、文字列を因子とする１以上の因子の積和形式の多項式で記述されるため、新たな情報の追加を自由に行うことができる。
【０２５９】
さらに、本情報処理装置は、社員コード×｛ε＋社員名＋所属＋年齢｝に対して、新たに、性別、役職を追加することもできる。この場合には、既存のデータに対して、性別、役職の初期値としてΦを用いて、社員コード×｛ε＋社員名＋所属＋年齢＋性別＋役職｝（１０１｛阿部太郎＋営業＋２３＋Φ＋Φ｝＋・途中略・＋１９８｛阿部太郎＋総務＋２５＋Φ＋Φ｝＋１９９｛山本三郎＋設計＋２０＋Φ＋Φ｝）のように表現すればよい。そして、その後、各社員の役職の変更を行えばよい。ただし、属性追加時に、属性値（実際の性別、役職等）を入力してもよい。  また、例えば、
社員コード×｛ε＋社員名＋所属＋年齢｝（１０１｛阿部太郎＋営業＋２３｝＋・途中略・＋１９８｛阿部太郎＋総務＋２５｝）からなる社員データベースへの社員データ１９９｛山本三郎＋設計＋２０｝の追加後の結果は、社員コード×｛ε＋社員名＋所属＋年齢｝
（１０１｛阿部太郎＋営業＋２３｝＋・途中略・＋１９８｛阿部太郎＋総務＋２５｝
というデータが登録されてあり、属性を追加したオブジェクトである  社員コード×｛ε＋社員名＋所属＋年齢＋性別＋役職｝（１９９｛山本三郎＋設計＋２０＋男＋部長｝｝
を追加したいとき、
社員コード×｛ε＋社員名＋所属＋年齢｝（１０１｛阿部太郎＋営業＋２３｝＋・途中略・＋１９８｛阿部太郎＋総務＋２５｝）からなる社員データベースへの社員データ１９９｛山本三郎＋設計＋２０｝の追加後の結果は、社員コード×｛ε＋社員名＋所属＋年齢｝（１０１｛阿部太郎＋営業＋２３｝＋・途中略・＋１９８｛阿部太郎＋総務＋２５｝）＋社員コード×｛ε＋社員名＋所属＋年齢＋性別＋役職｝（１９９｛山本三郎＋設計＋２０＋男＋部長｝｝
と単純にオブジェクトを追加すればよい。つまり、本情報処理装置１００では、管理する対象、記述する概念毎に属性を決めることができる。これは，属性を含めたスキーマ設計が必要ないことを意味する。既存の技術では，データベースのスキーマを変更するにはメンテナンス上の手間が非常に大きくなる。  さらに、作成した式は，上述した所定の処理、すなわち、文字列の横方向展開、縦方向展開、積演算処理、商演算処理、接着演算処理、部分集合取得処理、ホモトピー保存処理、ホモトピー保存式におけるＵＮＤＯ処理、およびホモトピー保存式におけるＲＥＤＯ処理によって、式を変形することで即座に期待する出力結果を得ることができる。従来の技術ならアプリケーションプログラムの開発が必要とされるところである。
【０２６０】
さらにまた、情報をプレーンテキストとして保存した場合には、情報の処理、取り扱いに拘束がない反面、情報に対して一貫性のある演算処理を構築することが困難となる。情報処理は、例えば、文字列の検索、挿入、削除、書き換え等に限定される。
【０２６１】
しかし、本実施形態のように、情報を式表現、識別子、因子、項（要素）、集合情報、トポロジー空間情報、セル空間情報、接着空間情報のように、複雑さをレベル分けし、それぞれのレベルで、式表現を限定することにより、縦方向展開、横方向展開、和、積、商、剰余、部分集合取得、接着等の演算を定義することが可能となる。したがって、メモリに保持した情報をこれらの演算を実行する共通関数で取り扱うことが可能となる。従って、式表現による柔軟性を確保するとともに、式表現の規則によって拘束された形式で事物あるいは概念を記述し、メモリ１２に保持し、処理し、表示できる。
【０２６２】
《第２実施形態》
以下、図２７から図３２を参照して、本発明の第２実施形態を説明する。上記第１実施形態では、式表現を用いて記述したコンピュータ上の対象情報のデータ構造と、そのような対象情報を取り扱う基本的な演算の種類と、コンピュータ上での演算の処理例を説明した。また、そのようなデータ構造と演算によって、処理されるデータ例を説明した。本実施形態では、第１実施形態で説明したデータ構造および演算によって構成されるアプリケーションプログラムの例を説明する。
【０２６３】
図２７は、本実施形態に係る情報処理装置１００の構成である。情報処理装置１００のハードウェアの構成は、第１実施形態と同一である。ただし、図２７では、ＣＰＵ１３で実行されるプログラムが、ユーザインターフェース部１０１、情報管理部１０２、および共通関関数ライブラリ１０３に分けて示されている。
【０２６４】
これらのうち、共通関数ライブラリは、第１実施形態で説明した共通関数群をライブラリ化し、アプリケーションプログラムから呼び出し可能としたものである。共通関数群には、和演算、積演算、縦方向展開処理、横方向展開補処理、商演算（剰余取得も含む）、部分集合取得、ホモトピー保存、ＵＮＤＯ、ＲＥＤＵ、インスタンス挿入、インスタンス削除、インスタンス変更等を含む。
【０２６５】
情報管理部は、入力部１１からの操作にしたがってインスタンス等のデータを生成し、メモリ１０２にデータを格納し、検索し、変更し、削除し、出力部１４に出力するアプリケーションプログラムである。本実施形態では、このアプリケーションプログラムの処理を具体的に説明する。
【０２６６】
ユーザインターフェース部１０１は、入力部１１でのユーザ操作の検出、検出されたユーザ操作の情報管理部１０２への報告、情報管理部１０２からの指示に基づくデータの出力部１４への出力等を実行する。ユーザインターフェース部１０１は、例えば、グラフィカルユーザインターフェースを提供する関数群、コントロール等を組み合わせて実現される。本実施形態において、ユーザインターフェース部１０１は、従来のアプリケーションプログラムのユーザインターフェースと同様である。
【０２６７】
図２８Ａおよび図２８Ｂに、社員データ管理処理の処理フローを示す。社員データ管理処理は、データ管理部１０２の機能の１つである。この処理では、ＣＰＵ１１３は、通常、不図示の社員データ管理ウィンドウを出力部１４に表示して、ユーザ操作を待つ（Ｓ１、Ｓ２）。
【０２６８】
そして、ユーザ操作が検出されると、ＣＰＵ１３は、その操作の種類を判定する。例えば、ＣＰＵ１３は、操作が、新規データの入力要求であるか、否かを判定する（Ｓ３）。新規データの入力要求は、新規データの入力を要求するメニューの選択、ウィンドウ上のボタンの押下等によって検知される。
【０２６９】
操作が、新規データの入力要求である場合、ＣＰＵ１３は、社員データ入力処理を実行する（Ｓ４）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２７０】
操作が新規データの入力要求でない場合、ＣＰＵ１３は、操作がデータ検索要求であるか否かを判定する（Ｓ５）。
【０２７１】
操作が、データ検索要求である場合、ＣＰＵ１３は、社員データ検索処理を実行する（Ｓ６）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２７２】
操作がデータ検索要求でない場合、ＣＰＵ１３は、操作がデータ削除要求であるか否かを判定する（Ｓ７）。
【０２７３】
操作が、データ削除要求である場合、ＣＰＵ１３は、社員データ削除処理を実行する（Ｓ８）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２７４】
操作がデータ削除要求でない場合、ＣＰＵ１３は、操作がデータ変更要求であるか否かを判定する（Ｓ９）。
【０２７５】
操作が、データ変更要求である場合、ＣＰＵ１３は、社員データ変更処理を実行する（ＳＡ）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２７６】
操作がデータ変更要求でない場合、ＣＰＵ１３は、操作がメモ接着要求であるか否かを判定する（ＳＢ）。
【０２７７】
操作が、メモ接着要求である場合、ＣＰＵ１３は、メモ作成と接着処理を実行する（ＳＣ）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２７８】
操作がメモ接着要求でない場合、ＣＰＵ１３は、操作がメモ切り離し要求であるか否かを判定する（ＳＤ）。
【０２７９】
操作が、メモ切り離し要求である場合、ＣＰＵ１３は、メモ切り離し処理を実行する（ＳＥ）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２８０】
操作がメモ切り離し要求でない場合、ＣＰＵ１３は、操作が集合接着要求であるか否かを判定する（ＳＦ）。
【０２８１】
操作が、集合接着要求である場合、ＣＰＵ１３は、集合接着処理を実行する（ＳＧ）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２８２】
操作が集合接着要求でない場合、ＣＰＵ１３は、操作が集合切り離し要求であるか否かを判定する（ＳＨ）。
【０２８３】
操作が、集合切り離し要求である場合、ＣＰＵ１３は、集合切り離し処理を実行する（ＳＩ）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２８４】
操作が集合切り離し要求でない場合、ＣＰＵ１３は、操作が属性追加要求であるか否かを判定する（ＳＪ）。
【０２８５】
操作が、属性追加要求である場合、ＣＰＵ１３は、属性追加処理を実行する（ＳＫ）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２８６】
操作が属性追加要求でない場合、ＣＰＵ１３は、操作が属性値構成変更要求であるか否かを判定する（ＳＬ）。
【０２８７】
操作が、属性値構成変更要求である場合、ＣＰＵ１３は、属性値構成変更処理を実行する（ＳＭ）。その後、ＣＰＵ１３は、制御をＳ１に戻し、再び、ユーザ操作待ちになる。
【０２８８】
図２９に、社員データ入力処理（図２８ＡのＳ４）の詳細処理フローを示す。この処理を実行するＣＰＵ１３が本発明の入力処理部に相当する。この処理では、ＣＰＵ１３は、出力部１４に、社員データ入力画面を表示する（Ｓ４１）。社員データ入力画面の画面データ自体は、メモリ１２または不図示の外部記憶装置（ハードディスク等）の画面ＩＤとともに画面データファイルに格納されている。ＣＰＵ１３は、入力インターフェース部１０１を通じて、この社員データ入力画面を表示する。なお、本実施形態における他の画面表示処理も同様である。
【０２８９】
次に、ユーザが、社員データ入力画面に対して社員データ（例えば、社員コード、氏名、年齢、職種、所属）を入力する。すると、ＣＰＵ１３は、入力インターフェース部１０１を通じて、入力された社員データを取り込む（Ｓ４２）。
【０２９０】
次に、ＣＰＵ１３は、入力された社員データに対するインスタンス、例えば、社員コード×｛ε＋氏名＋年齢＋職種＋所属｝に対する１０１×｛ε＋山田太郎＋２６歳＋設計＋公共事業部｝を生成する。そして、インスタンス挿入関数を用いて、社員セル空間情報のインスタンスとして、入力された社員データを挿入する（Ｓ４３）。この社員データは、メモリ１２または不図示の外部記憶装置に保持される。なお、社員データのインスタンスを生成する本アプリケーション専用の関数genins(集合ＩＤ、コード、氏名、年齢、職種
、所属)を提供してもよい。関数geninsは、社員コード、氏名、年齢、職種、所属のそれ
ぞれの値から、社員セル空間情報のインスタンスを生成し、集合ＩＤで指定される集合に、生成したインスタンスを挿入し、メモリ１２または外部記憶装置に保存する。
【０２９１】
図３０に、社員データ検索処理（図２８ＡのＳ６）の詳細処理フローを示す。この処理を実行するＣＰＵ１３が本発明の出力処理部に相当する。この処理では、ＣＰＵ１３は、出力部１４に、検索画面を表示する（Ｓ６１）。
【０２９２】
次に、ユーザが、検索画面に対して検索するセル空間情報（例えば、社員データ）、属性値ｐ（例えば、社員コードに対する値１０１）を入力する。すると、ＣＰＵ１３は、入力インターフェース部１０１を通じて、入力された検索する属性値を取り込む（Ｓ６２）。この例では、ユニークな検索キーとして、属性×属性値が使用される。すなわち、社員コード×１０１がＣＰＵ１３（情報管理部１０２）に引き渡される。
【０２９３】
次に、ＣＰＵ１３は、検索キーである社員コード×１０１を識別子に分解する。この場合には、“社員コード”と、“１０１”という識別子が得られる。これ検索する識別子という。
【０２９４】
次に、ＣＰＵ１３は、第１の検索する識別子（例えば、“社員コード”）を用いて、セル空間情報（集合ＩＤが社員データであるセル空間情報）に対して、商演算を実行する（Ｓ６４）。
【０２９５】
次に、ＣＰＵ１３は、すべての検索する識別子（“社員コード”と、“１０１”）で、商演算を実行したか否かを判定する。まだ、商演算を実行してしたいない識別子（例えば、“１０１”）がある場合、制御をＳ６４に戻し、その識別子にて商演算を実行する。これは、いわゆる絞り込み検索に相当する。
【０２９６】
そして、ＣＰＵ１３は、ユーザインターフェース部１０１を通じて出力部１４の検索画面に、得られた部分集合、すなわち、コード×１０１のインスタンスを表示する（Ｓ６６）。
【０２９７】
このように、検索対象の情報に対して、検索する識別子によって繰り返し商演算を実行することにより、ほしいデータを検索することができる。
（例）
今、社員データベースとして、以下のものを考え得る。
社員×（社員コード×｛ε＋氏名＋年齢＋職種コード＋所属名｝×（
＋１０１｛ε＋鈴木一郎＋２３＋１００＋総務｝
＋１０２｛ε＋鈴木一郎＋２３＋１００＋総務｝
＋１０３｛ε＋鈴木一郎＋２３＋１０１＋総務｝
）
+備品コード×｛ε＋分類＋数量＋社員コード｝×（
＋Ｂ５０｛ε＋机  ＋１＋１０１｝
＋Ｂ５１｛ε＋ＰＣ＋２＋１０２｝）)
この場合、まず因子”社員コード”を同値因子として商演算すると商項は、
社員×（社員コード×｛ε＋氏名＋年齢＋職種コード＋所属名｝×（
＋１０１｛ε＋鈴木一郎＋２３＋１００＋総務｝
＋１０２｛ε＋鈴木一郎＋２３＋１００＋総務｝
＋１０３｛ε＋鈴木一郎＋２３＋１０１＋総務｝））
さらにこの項に，因子”１０１”を同値因子として商演算すると商項は、
社員×（社員コード×｛ε＋氏名＋年齢＋職種コード＋所属名｝×（１０１｛ε＋鈴木一
郎＋２３＋１００＋総務｝）となる。このようにして，全体のデータから、”社員コードが１０１”についての情報を取得することができる。  図３１に、メモ作成と接着処理（図２８ＢのＳＣ）の詳細フローを示す。この処理では、ＣＰＵ１３は、出力部１４に、メモ画面を表示する（ＳＣ１）。
【０２９８】
次に、ユーザが、メモ画面に対して、メモＩＤおよびメモ内容（テキスト情報）を入力する。すると、ＣＰＵ１３は、入力インターフェース部１０１を通じて、添付する集合、添付先、メモ内容を取り込む（ＳＣ２）。
【０２９９】
次に、ＣＰＵ１３は、取り込んだメモＩＤおよびメモ内容からメモのインスタンスであるメモＩＤ×｛ε＋テキスト情報｝を生成する。そして、ＣＰＵ１３は、インスタンス挿入関数を用いて、メモセル空間情報に、メモのインスタンスを挿入し、メモリ１２または不図示の外部記憶装置に保存する（ＳＣ３）。なお、入力されたメモＩＤの代わりに、情報管理部１０２がユニークなメモＩＤ生成するようにしてもよい。すなわち、現在のメモ集合から、すべてのメモＩＤを読み出し、メモＩＤをソーティングし、最後尾のメモＩＤに１を加えた値をメモＩＤとすればよい。
【０３００】
次に、ＣＰＵ１３は、メモを添付する接着箇所、すなわち、セル空間情報（例えば、集合ＩＤが社員データ）、および添付先（例えば、コードに対する値１０１のインスタンスの指定）を受け付ける（ＳＣ４）。
【０３０１】
そして、ＣＰＵ１３は、指定されたセル空間情報中の指定されたインスタンスであるコード１０１のインスタンスと、作成したメモＩＤのメモとの接着演算を実行する（ＳＣ５）。これによって、コード１０１の社員データに、メモが添付されたことになる。
【０３０２】
図３２に、属性追加処理（図２８ＢのＳＫ）の詳細処理フローを示す。この処理では、ＣＰＵ１３は、出力部１４に、属性追加設定画面を表示する（ＳＫ１）。
【０３０３】
次に、ユーザが、属性追加設定画面に対して、属性を追加するセル空間ＩＤ、属性追加位置、および追加属性を入力する。すると、すると、ＣＰＵ１３は、入力インターフェース部１０１を通じて、追加するセル空間ＩＤ、属性追加位置、および追加属性を取り込む（ＳＫ２）。
【０３０４】
次に、指定されたセル空間ＩＤのセル空間情報に、属性を示す文字列を和演算で追加する（ＳＫ３）。
【０３０５】
次に、既存のインスタンスに対して、追加された属性に対する属性値Φを設定する（ＳＫ４）。
【０３０６】
なお、以上の説明では、社員データ削除処理（図２８ＡのＳ８）、社員データ変更処理（同図のＳＡ）、メモ切り離し処理（同図のＳＥ）、集合接着（同図のＳＧ）、接着集合切り離し処理（同図のＳＩ）、属性値構成変更処理（同図のＳＭ）については、省略した。しかし、これらの処理は、図２９−３２の処理とほぼ同様の手順で構成できる。
【０３０７】
例えば、まず、社員データ削除処理については、Ｓ６の社員データ検索処理を実行し、検索された結果をメモリ１２から削除すればよい。その場合に、共通関数として、戻り値＝delete(セル空間ＩＤ、インスタンス)；を用意してもよい。
【０３０８】
また、社員データ変更処理については、Ｓ６の社員データ検索処理を実行し、検索された結果をメモリ１２から変更すればよい。その場合に、共通関数として、戻り値＝replac
e(セル空間ＩＤ、変更前のインスタンス、変更後のインスタンス)；を用意してもよい。
【０３０９】
また、メモ切り離し処理（図２８ＡのＳＥ）については、以下の手順である。
（１）同値関係を指定する因子１と、因子２の指定を受け付ける。
（２）｛因子１×因子２｝を含む式表現をメモリ１２にて検索する。
（３）｛（左因子１の和）、（左因子２の和｝｝×｛因子１＋因子２｝×｛（右因子１の
和）＋（右因子２の和）｝の関係から、左因子１×因子１×右因子１の和＋左因子２×因子２×右因子２の和という式表現を構成する。
（４）得られた式表現をメモリ１２に格納する。
【０３１０】
また、集合接着演算は、以下の手順で構成できる。
（１）接着する２つの集合情報の集合ＩＤ（例えば、集合ＩＤ１、集合ＩＤ２）と、同値
関係を指定する因子１、因子２を受け付ける。
（２）集合ＩＤ１の集合情報に商演算を実行し、因子１を含む商（同値要素１）と、剰余
に分ける。
（３）集合ＩＤ２の集合情報に商演算を実行し、因子１を含む商（同値要素２）と、剰余
に分ける。
（４）同値要素１の左因子ｌ１、右因子ｒ１，同値要素２の左因子ｌ２、右因子ｒ２を求
め、以下の商空間の式を求める。｛ｌ１＋ｌ２｝｛因子１＋因子２｝｛ｒ１＋ｒ２｝
（５）商空間の式に、集合ＩＤ１の集合情報の剰余の式と、集合ＩＤ２の集合情報の剰余の式とを和演算する。
【０３１１】
以上説明した本実行形態に係る情報処理装置によれば対象を所定の表現形式を用いて表現して処理することで、異なる対象同士の情報の一貫性を図るとともに新たな様々な対象情報のデータベース化及び処理が可能となる。また、所定の処理を実行することにより情報の管理に適したレベルに移行することができる。また、新たな情報を追加した場合やレベルを変化せせる場合も予め本発明に係る情報処理装置が有するプログラムに基づいて実行することができる。すなわち、プログラムの再構築を行う必要もない。
【０３１２】
以上、本発明の好適な実行形態を説明したが、本発明に係る情報処理装置は、これらに限らず、可能な限りこれらの組み合わせを含むことができる。また、本実施の形態は、さらに、以下の態様を含む。
（態様１）
識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
前記対象情報を操作する処理部と、
情報の入力を受け付ける入力部を接続可能なインターフェースと、
情報を出力する出力部を接続可能なインターフェースと、を備え、
前記処理部は、
前記インターフェースに接続された入力部から入力される情報を前記識別子、因子、項および項の組み合わせを含む式のいずれか１以上として前記対象情報に設定し、前記記憶部に記憶させる入力処理部と、
前記記憶部に記憶されている対象情報を参照し、参照した対象情報中の識別子、因子、項および式のいずれか１以上が前記入力部から入力される情報と所定の関係にあるときに、前記対象情報を前記インターフェースに接続された出力部に出力する出力処理部と、を有する情報処理装置。
（態様２）
前記対象情報は、前記組み合わせ中の項の順序を維持して前記項の組み合わせを関係付けることによって因子または新たな項を構成する順序構成演算子と、前記組み合わせ中の項の順序を維持しないで前記項の組み合わせを関係付けることによって因子または新たな項を構成する集合因子構成演算子とをさらに含み、
前記処理部は、前記積演算子によって、複数の識別子を複数結合する積演算部と、
前記積演算子によって結合された複数の識別子からいずれかの識別子を抽出する因子抽出部と、
前記識別子、または積演算子によって結合された識別子をさらに前記和演算子によって組み合わせて、項の組み合わせを構成する和演算部と、
前記項の組み合わせに含まれるいずれかの項を抽出する項抽出部と、
前記項の組み合わせに順序構成演算子を付加することによって因子または項を構成する順序生成部と、
前記項の組み合わせに順序構成演算子を付加された因子または項から前記順序構成演算子を除去する順序展開部と、
前記項の組み合わせに集合因子構成演算子を付加することによって因子または項を構成する集合因子構成部と、
前記項の組み合わせに集合因子構成演算子を付加された因子または項から前記集合因子構成演算子を除去する集合因子展開部と、
前記対象情報を構成する一の因子が項の組み合わせと前記順序構成演算子とによって構成されているとき、または前記一の因子が項の組み合わせと前記集合因子構成演算子とによって構成されているときに、前記一の因子と同一の項に含まれる、前記一の因子と積演算子で結合されている共通因子を前記項の組み合わせ中のそれぞれの項に付加して前記積演算子によって結合することによって、前記共通因子を展開する共通因子展開部と、をさらに有する態様１に記載の情報処理装置。
（態様３）
前記因子または前記項には、前記和演算子による演算に対して単位元となる記号、前記積演算子による演算に対して単位元となる記号、および前記積演算子に対して、演算結果が、識別子が存在しないことを示す零値となる、零元の少なくとも１つを含めることができる態様１または２に記載の情報処理装置。
（態様４）
前記処理部は、項の組み合わせを、第１の因子を含む第１の項と前記第１の因子を含まない第２の項とに分類し、第１の因子を含む第１の項が複数存在したときに、第１の項の組み合わせから前記第１の因子を共通因子として抽出する部分集合形成部をさらに有する
態様１から３のいずれかに記載の情報処理装置。
（態様５）
前記部分集合形成部は、前記共通因子を含む項から、積演算子によって共通因子の左側に結合される左因子と、積演算子によって共通因子の右側に結合される右因子とを抽出するとともに、前記左因子または右因子がない項に対しては、左因子または右因子に代えて単位元を抽出する因子抽出部と、
前記第１の項として複数の項が分類されたときに、前記因子抽出部から抽出された複数の左因子から、和演算子と順序構成演算子とによって複数の左因子を含む左値因子を構成し、前記因子抽出部から抽出された複数の右因子から、和演算子と順序構成演算子とによって複数の右因子を含む右値因子を構成し、前記左値因子、共通因子、および右値因子列を積演算子で結合する左右因子括り出し部と、を有する態様４に記載の情報処理装置。
（態様６）
いずれかの項を構成する因子中に、前記集合因子構成演算子が付加された項の組み合わせである集合因子が含まれるときに、前記処理部は、前記集合因子中の項に対して、前記部分集合形成部による部分集合の形成を実行する態様４または５に記載の情報処理装置。
（態様７）
前記処理部は、
項または複数の項の組み合わせに対して、前記項に適用される演算用因子の指定を受け、前記項を構成する因子中に前記演算用因子を含むときにその項を選択する第１の選択演算を実行し、項を構成する因子中に前記演算用因子が含まれておらず、かつ、前記集合因子構成演算子によって関係付けられた項の組み合わせである集合因子を含むときに、前記集合因子中の項に対して前記第１の選択演算を実行し、前記集合因子中のいずれかの項が選択できたときに、前記集合因子中の選択された項と前記項を構成する因子中の前記集合因子以外の因子とを前記積演算子によって結合し、前記演算用因子が含まれる項を抽出する商演算部と、
項または複数の項の組み合わせに対して、前記項を構成する因子中に前記演算用因子を含まないときにその項を構成する因子を選択する第２の選択演算を実行するとともに選択された因子を保持し、前記保持された因子に前記集合因子構成演算子によって関係付けられた項の組み合わせである集合因子を含むときに、前記集合因子中の項に対して前記第２の選択演算を実行し、前記集合因子中のいずれかの項が選択できたときに、前記集合因子中の選択された項と前記保持されている因子のうちの前記集合因子以外の因子とを前記積演算子によって結合し、前記演算用因子が含まれない項を抽出する剰余演算部と、をさらに有する態様１から６のいずれかに記載の情報処理装置。
（態様８）
前記対象情報は、項または和演算子で構成された複数の項によって集合情報を構成し、前記項または複数の項は、集合情報を識別する情報である第１の識別因子と、前記集合情報に含まれる値である因子とを含む、態様１から７のいずれかに記載の情報処理装置。
（態様９）
前記対象情報は、集合情報から前記共通因子が括り出された部分集合と他の部分集合に分類され、前記部分集合を少なくとも１つ含むトポロジー空間情報を構成し、
前記トポロジー空間情報は、そのトポロジー空間情報を識別する情報である第２の識別因子と、前記部分集合がなす因子または部分集合の組み合わせに集合因子構成演算子を付加した因子とが、積演算子によって結合されている、態様８に記載の情報処理装置。
（態様１０）
前記対象情報は、属性と属性値との対応関係を含むセル空間情報を構成する態様１から９のいずれかに記載の情報処理装置。
（態様１１）
前記セル空間情報は、
セル空間情報を他のセル空間情報と識別するセル空間識別因子と、
属性を指定する識別子、属性を指定する複数の識別子を積演算子によって結合した属性列、および、前記属性を指定する識別子および属性列のいずれかまたは双方の組み合わせを
順序構成演算子で構成した属性の順序因子のいずれかである属性因子と、
前記属性因子に対応する値を指定する識別子、値を指定する複数の識別子を積演算子によって結合した値列、および、前記属性の順序因子に対応する値を指定する項の組み合わせを順序構成演算子によって構成した値の順序因子のいずれかを１以上含む単一の項またはそのような項の組み合わせを含む値因子と、を積演算子で結合して構成される態様１０に記載の情報処理装置。
（態様１２）
前記処理部は、前記項、前記集合情報、前記トポロジー空間情報、および前記セル空間情報の少なくとも１つを被接着情報とし、被接着情報を２以上結合した接着空間情報を構成する接着処理部を有し、
前記接着空間情報は、第１の被接着情報と第２の被接着情報を含み、
第１の被接着情報は、被接着情報同士を関連づける情報である第１の同値因子と、第１の値因子と積演算子で結合される第１の被接着因子とを含み、
第２の被接着情報は、被接着情報同士を関連づける情報である第２の同値因子と、第２の値因子と積演算子で結合される第２の被接着因子とを含み、
前記接着処理部は、第１の同値因子と第２の同値因子との関連付けの指定を受ける指定部と、
前記第１の同値因子と第２の同値因子との関連付けとともに、第１の被接着情被接着因子と第２の被接着因子との関連づけを前記記憶部に記憶させる接着部と、を有する態様１から１１のいずれかに記載の情報処理装置。
（態様１３）
前記接着処理部は、前記第１の同値因子を前記演算用因子として、前記第１の被接着情報を商演算部で演算することによって、前記第１の同値因子を含む第１の関連項を抽出し、前記第２の同値因子を前記演算用因子として、前記第２の被接着情報を商演算部で演算することによって、前記第２の同値因子を含む第２の関連項を抽出する関連項抽出部と、
前記第１の同値因子を前記演算用因子として、前記第１の被接着情報を剰余演算部で演算することによって、前記第１の同値因子を含ない非関連項を抽出し、前記第２の同値因子を前記演算用因子として、前記第２の被接着情報を剰余演算部で演算することによって、前記第２の同値因子を含ない非関連項を抽出する非関連項抽出部と、
前記第１の関連項から第１の同値因子を括り出すとともに、前記第２の関連項から第２の同値因子を括り出し、さらに、括り出された第１の同値因子と第２の同値因子と順序構成演算子によって関連づける関連づけ部とを有する態様１２に記載の情報処理装置。
（態様１４）
前記接着空間情報は、前記項、前記集合情報、前記トポロジー空間情報、前記セル空間情報、および他の接着空間情報の少なくとも１つとさらに、接着される態様１２または１３に記載の情報処理装置。
（態様１５）
識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
情報の入力を受け付ける入力部を接続可能なインターフェースと、
情報を出力する出力部を接続可能なインターフェースと、を備えるコンピュータが、
前記インターフェースに接続された入力部から入力される情報を前記識別子、因子、項および項の組み合わせを含む式のいずれか１以上として前記対象情報に設定し、前記記憶部に記憶させる入力処理ステップと、
前記記憶部に記憶されている対象情報を参照し、参照した対象情報中の識別子、因子、項および式のいずれか１以上が前記入力部から入力される情報と所定の関係にあるときに、前記対象情報を前記インターフェースに接続された出力部に出力する出力処理ステッ
プと、を実行する情報処理方法。
（態様１６）
識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
情報の入力を受け付ける入力部を接続可能なインターフェースと、
情報を出力する出力部を接続可能なインターフェースと、を備えるコンピュータに、前記対象情報を操作させるプログラムであり、
前記インターフェースに接続された入力部から入力される情報を前記識別子、因子、項および項の組み合わせを含む式のいずれか１以上として前記対象情報に設定し、前記記憶部に記憶させる入力処理ステップと、
前記記憶部に記憶されている対象情報を参照し、参照した対象情報中の識別子、因子、項および式のいずれか１以上が前記入力部から入力される情報と所定の関係にあるときに、前記対象情報を前記インターフェースに接続された出力部に出力する出力処理ステップと、を有するプログラム。
（態様１７）
前記対象情報は、前記組み合わせ中の項の順序を維持して前記項の組み合わせを関係付けることによって因子または新たな項を構成する順序構成演算子と、前記組み合わせ中の項の順序を維持しないで前記項の組み合わせを関係付けることによって因子または新たな項を構成する集合因子構成演算子とをさらに含み、
前記積演算子によって、識別子を複数結合する積演算ステップと、
前記積演算子によって結合された複数の識別子からいずれかの識別子を抽出する因子抽出ステップと、
前記識別子、または積演算子によって結合された識別子をさらに前記和演算子によってさらに組み合わせて、項の組み合わせを構成する和演算ステップと、
前記項の組み合わせに含まれるいずれかの項を抽出する項抽出ステップと、
前記項の組み合わせに順序構成演算子を付加することによって因子または項を構成する順序生成ステップと、
前記項の組み合わせに順序構成演算子を付加された因子または項から前記順序構成演算子を除去する順序展開ステップと、
前記項の組み合わせに集合因子構成演算子を付加することによって因子または項を構成する集合構成ステップと、
前記項の組み合わせに集合因子構成演算子を付加された因子または項から前記集合因子構成演算子を除去する集合展開ステップと、
前記対象情報を構成する一の因子が項の組み合わせと前記順序構成演算子とによって構成されているとき、または前記一の因子が項の組み合わせと前記集合因子構成演算子とによって構成されているときに、前記一の因子と同一の項に含まれる、前記一の因子と積演算子で結合されている共通因子を前記項の組み合わせ中のそれぞれの項に付加して前記積演算子によって結合することによって、前記共通因子を展開する因子展開ステップと、をさらに有する態様１６に記載のプログラム。
（態様１８）
前記因子または前記項には、前記和演算子による演算に対して単位元となる記号、前記積演算子による演算に対して単位元となる記号、および前記積演算子に対して、演算結果が、識別子が存在しないことを示す零値となる、零元の少なくとも１つを含めることができる態様１６または１７に記載のプログラム。
（態様１９）
項の組み合わせを、第１の因子を含む第１の項と前記第１の因子を含まない第２の項とに分類し、第１の因子を含む第１の項が複数存在したときに、第１の項の組み合わせから前記第１の因子を共通因子として抽出する部分集合形成ステップをさらに有する態様１６から１８のいずれかに記載のプログラム。
（態様２０）
前記部分集合形成ステップは、前記共通因子を含む項から、積演算子によって共通因子の
左側に結合される左因子と、積演算子によって共通因子の右側に結合される右因子とを抽出するとともに、前記左因子または右因子がない項に対しては、左因子または右因子に代えて単位元を抽出する因子抽出ステップと、
前記第１の項として複数の項が分類されたときに、前記因子抽出ステップにて抽出された複数の左因子から、和演算子と順序構成演算子とによって複数の左因子を含む左値因子を構成し、前記因子抽出ステップにて抽出された複数の右因子から、和演算子と順序構成演算子とによって複数の右因子を含む右値因子を構成し、前記左値因子、共通因子、および右値因子列を積演算子で結合する左右因子括り出しステップと、を有する態様１９に記載のプログラム。
（態様２１）
部分集合形成ステップは、いずれかの項を構成する因子中に、前記集合因子構成演算子が付加された項の組み合わせである集合因子が含まれるときに、前記集合因子中の項に対して、部分集合の形成を実行するステップをさらに有する態様１９または２０に記載のプログラム。
（態様２２）
項または複数の項の組み合わせに対して、前記項に適用される演算用因子の指定を受け、前記項を構成する因子中に前記演算用因子を含むときにその項を選択する第１の選択演算を実行し、項を構成する因子中に前記演算用因子が含まれておらず、かつ、前記集合因子構成演算子によって関係付けられた項の組み合わせである集合因子を含むときに、前記集合因子中の項に対して前記第１の選択演算を実行し、前記集合因子中のいずれかの項が選択できたときに、前記集合因子中の選択された項と前記項を構成する因子中の前記集合因子以外の因子とを前記積演算子によって結合し、前記演算用因子が含まれる項を抽出する商演算ステップと、
項または複数の項の組み合わせに対して、前記項を構成する因子中に前記演算用因子を含まないときにその項を構成する因子を選択する第２の選択演算を実行するとともに選択された因子を保持し、前記保持された因子に前記集合因子構成演算子によって関係付けられた項の組み合わせである集合因子を含むときに、前記集合因子中の項に対して前記第２の選択演算を実行し、前記集合因子中のいずれかの項が選択できたときに、前記集合因子中の選択された項と前記保持されている因子のうちの前記集合因子以外の因子とを前記積演算子によって結合し、前記演算用因子が含まれない項を抽出する剰余演算ステップと、をさらに有する態様１６から２１のいずれかに記載のプログラム。
（態様２３）
前記対象情報は、項または和演算子で構成された複数の項によって集合情報を構成し、前記項または複数の項は、集合情報を識別する情報である第１の識別因子と、前記集合情報に含まれる値である因子とを含む、態様１６から２２のいずれかに記載のプログラム。
（態様２４）
前記対象情報は、集合情報から前記共通因子が括り出された部分集合と他の部分集合に分類され、前記部分集合を少なくとも１つ含むトポロジー空間情報を構成し、
前記トポロジー空間情報は、そのトポロジー空間情報を識別する情報である第２の識別因子と、前記部分集合がなす因子または部分集合の組み合わせに集合因子構成演算子を付加した因子とが、積演算子によって結合されている、態様２３に記載のプログラム。
（態様２５）
前記対象情報は、属性と属性値との対応関係を含むセル空間情報を構成する態様１６から２４のいずれかに記載のプログラム。
（態様２６）
前記セル空間情報は、
セル空間情報を他のセル空間情報と識別するセル空間識別因子と、
属性を指定する識別子、属性を指定する複数の識別子を積演算子によって結合した属性列、および、前記属性を指定する識別子および属性列のいずれかまたは双方の組み合わせを順序構成演算子で構成した属性の順序因子のいずれかである属性因子と、
前記属性因子に対応する値を指定する識別子、値を指定する複数の識別子を積演算子によって結合した値列、および、前記属性の順序因子に対応する値を指定する項の組み合わせを順序構成演算子によって構成した値の順序因子のいずれかである値因子と、を積演算子で結合して構成される態様２５に記載のプログラム。
（態様２７）
前記項、前記集合情報、前記トポロジー空間情報、および前記セル空間情報の少なくとも１つを被接着情報とし、被接着情報を２以上結合した接着空間情報を構成する接着処理ステップをさらに有し、
前記接着空間情報は、第１の被接着情報と第２の被接着情報を含み、
第１の被接着情報は、被接着情報同士を関連づける情報である第１の同値因子と、第１の値因子と積演算子で結合される第１の被接着因子とを含み、
第２の被接着情報は、被接着情報同士を関連づける情報である第２の同値因子と、第２の値因子と積演算子で結合される第２の被接着因子とを含み、
前記接着処理ステップは、第１の同値因子と第２の同値因子との関連付けの指定を受けるステップと、
前記第１の同値因子と第２の同値因子との関連付けとともに、第１の被接着情被接着因子と第２の被接着因子との関連づけを記憶するステップと、を有する態様１６から２６のいずれかに記載のプログラム。
（態様２８）
前記接着処理ステップは、前記第１の同値因子を前記演算用因子として、前記第１の被接着情報を商演算部で演算することによって、前記第１の同値因子を含む第１の関連項を抽出し、前記第２の同値因子を前記演算用因子として、前記第２の被接着情報を商演算部で演算することによって、前記第２の同値因子を含む第２の関連項を抽出する関連項抽出ステップと、
前記第１の同値因子を前記演算用因子として、前記第１の被接着情報を剰余演算部で演算することによって、前記第１の同値因子を含ない非関連項を抽出し、前記第２の同値因子を前記演算用因子として、前記第２の被接着情報を剰余演算部で演算することによって、前記第１の同値因子を含ない非関連項を抽出する非関連項抽出ステップと、
前記第１の関連項から第１の同値因子を括り出すとともに、前記第２の関連項から第２の同値因子を括り出し、さらに、括り出された第１の同値因子と第２の同値因子と順序構成演算子によって関連づける関連づけステップとを有する態様２７に記載のプログラム。
（態様２９）
前記接着空間情報は、前記項、前記集合情報、前記トポロジー空間情報、前記セル空間情報、および他の接着空間情報の少なくとも１つとさらに、接着される態様２８に記載のプログラム。
（態様３０）
識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述されるデータ構造であり、
前記データ構造で記述される対象情報を記憶する記憶部と、
前記対象情報を操作する処理部と、
情報の入力を受け付ける入力部を接続可能なインターフェースと、
情報を出力する出力部を接続可能なインターフェースと、を備えるコンピュータが、
前記インターフェースに接続された入力部から入力される情報を前記識別子、因子、項および項の組み合わせを含む式のいずれか１以上として前記対象情報に設定し、前記記憶部に記憶させる入力処理ステップと、
前記記憶部に記憶されている対象情報を参照し、参照した対象情報中の識別子、因子、項および式のいずれか１以上が前記入力部から入力される情報と所定の関係にあるときに、前記対象情報を前記インターフェースに接続された出力部に出力する出力処理ステップと、を実行し、前記記憶部に構成されるデータ構造。
【符号の説明】
【０３１３】
１１・・・入力部
１２・・・メモリ
１３・・・ＣＰＵ
１４・・・出力部
２１・・・ホモトピーレベル
２２・・・集合レベル
２３・・・トポロジー空間レベル
２４・・・接着空間レベル
２５・・・セル空間レベル
【図１】
0005357313.tif 000002
【図２】
0005357313.tif 000003
【図３】
0005357313.tif 000004
【図４】
0005357313.tif 000005
【図５】
0005357313.tif 000006
【図６Ａ】
0005357313.tif 000007
【図６Ｂ】
0005357313.tif 000008
【図６Ｃ】
0005357313.tif 000009
【図７】
0005357313.tif 000010
【図８Ａ】
0005357313.tif 000011
【図８Ｂ】
0005357313.tif 000012
【図８Ｃ】
0005357313.tif 000013
【図８Ｄ】
0005357313.tif 000014
【図９】
0005357313.tif 000015
【図１０】
0005357313.tif 000016
【図１１Ａ】
0005357313.tif 000017
【図１１Ｂ】
0005357313.tif 000018
【図１１Ｃ】
0005357313.tif 000019
【図１２Ａ】
0005357313.tif 000020
【図１２Ｂ】
0005357313.tif 000021
【図１２Ｃ】
0005357313.tif 000022
【図１３】
0005357313.tif 000023
【図１４】
0005357313.tif 000024
【図１５】
0005357313.tif 000025
【図１６Ａ】
0005357313.tif 000026
【図１６Ｂ】
0005357313.tif 000027
【図１７】
0005357313.tif 000028
【図１８】
0005357313.tif 000029
【図１９】
0005357313.tif 000030
【図２０】
0005357313.tif 000031
【図２１Ａ】
0005357313.tif 000032
【図２１Ｂ】
0005357313.tif 000033
【図２２Ａ】
0005357313.tif 000034
【図２２Ｂ】
0005357313.tif 000035
【図２３】
0005357313.tif 000036
【図２４】
0005357313.tif 000037
【図２５】
0005357313.tif 000038
【図２６】
0005357313.tif 000039
【図２７】
0005357313.tif 000040
【図２８Ａ】
0005357313.tif 000041
【図２８Ｂ】
0005357313.tif 000042
【図２９】
0005357313.tif 000043
【図３０】
0005357313.tif 000044
【図３１】
0005357313.tif 000045
【図３２】
0005357313.tif 000046