(57)【特許請求の範囲】
【請求項１】
識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
前記対象情報を操作する処理部と、を備え、
前記処理部は、
指定を受けた指定識別子を基に前記対象情報中で指定識別子に関連する項または項の組み合わせを取得する分割部と、
前記分割部によって取得された項または項の組み合わせ中の数字を含む識別子を、数値であることを数値演算子によって明示する数値識別子に変換する変換部と、
前記変換された数値識別子を含む対象情報中で、因子の列として積演算子で結合される因子のうち、前記数値識別子以外の非数値識別子を残して数値識別子で表される数値間で乗算を実行し、前記変換された数値識別子を含む対象情報中で、項の組み合わせに対して前記非数値識別子を共通の因子とする複数の項について数値識別子で表される数値間で加算を実行する代数演算部と、有する情報処理装置。
【請求項２】
数値の単位を示す単位指定識別子を記憶した単位指定識別子記憶部をさらに備え、
前記変換部は、前記単位指定識別子記憶部に記憶された単位指定識別子に積演算子で結合されている１以上の数字を前記数値識別子に変換する請求項１に記載の情報処理装置。
【請求項３】
数値の単位を示す単位指定識別子を記憶した単位指定識別子記憶部をさらに備え、
前記変換部は、前記識別子中の数値部分に隣接する非数字部分が前記単位指定識別子記憶部に記憶された単位指定識別子であるときに、前記数値部分を数値識別子に変換する請求項１に記載の情報処理装置。
【請求項４】
前記対象情報は、さらに因子間の除算を示す除算演算子によって記述され、
前記代数演算部は、前記除算演算子で関係付けられた因子間の数値識別子が示す数値によって除算を実行し、前記除算演算子間で関係付けられた因子間で共通する識別子を削除する請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記対象情報は、さらに第１の因子を底とし、第２の因子を指数とするべき乗を示す指数演算子によって記述され、
前記処理部は、共通の因子を底とするべき乗が積演算子で結合されるときに、指数となっている前記第２の因子間を和演算子によって項の組み合わせに変換する請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記代数演算部は、前記第２の因子間で、数値識別子が示す数値の加算を実行し、前記共通の因子を底とするべき乗が積演算子と除算演算子とによって結合されるときに、前記第２の因子間で、数値識別子が示す数値の減算を実行する請求項５に記載の情報処理装置。
【請求項７】
前記代数演算部は、第１の対象情報と第２の対象情報との関係が等価であることを示す等価演算子によって、前記第１の対象情報と前記第２の対象情報とが関連づけされているときに、前記第１の対象情報と第２の対象情報の両方に、共通の非数値識別子を因子とする項間の同一の数値識別子による加算、または同一の数値識別子による乗算を実行する請求項１から６のいずれか１項に記載に情報処理装置。
【請求項８】
前記対象情報は、前記対象情報が記述する対象に含まれる構成要素を識別する識別子と構成要素の属性値とを含み、
前記情報処理装置は、前記構成要素を識別する識別子によって前記対象の特徴量を指定する指定対象情報の入力を受け付ける手段をさらに備え、
前記処理部は、前記指定対象情報に含まれる構成要素を識別する識別子を前記構成要素の属性値に変換する手段と、
前記構成要素の属性値によって前記指定対象情報によって指定される特徴量を算出する手段と、を有する請求項１から７のいずれか１項に記載の情報処理装置。
【請求項９】
コンピュータが、
識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶部から読み出すステップと、
指定を受けた指定識別子を基に前記読み出された対象情報中で指定識別子に関連する項または項の組み合わせを取得するステップと、
前記取得された項または項の組み合わせ中の数字を含む識別子を、数値であることを数値演算子によって明示する数値識別子に変換するステップと、
前記変換された数値識別子を含む対象情報中で、因子の列として積演算子で結合される因子のうち、前記数値識別子以外の非数値識別子を残して数値識別子で表される数値間で乗算を実行するステップと、
前記変換された数値識別子を含む対象情報中で、項の組み合わせに対して前記非数値識別子を共通の因子とする複数の項について数値識別子で表される数値間で加算を実行するステップと、を実行する情報処理方法。
【請求項１０】
前記コンピュータは、単位指定識別子記憶部から数値の単位を示す単位指定識別子を読み出すステップをさらに実行し、
前記変換ステップでは、前記単位指定識別子記憶部に記憶された単位指定識別子に積演算子で結合されている１以上の数字を前記数値識別子に変換する請求項９に記載の情報処
理方法。
【請求項１１】
前記コンピュータは、単位指定識別子記憶部から数値の単位を示す単位指定識別子を読み出すステップをさらに実行し、
前記変換ステップでは、前記識別子中の数値部分に隣接する非数字部分が前記単位指定識別子記憶部に記憶された単位指定識別子であるときに、前記数値部分を数値識別子に変換する請求項９に記載の情報処理方法。
【請求項１２】
前記対象情報は、さらに因子間の除算を示す除算演算子によって記述され、
前記コンピュータは、前記除算演算子で関係付けられた因子間の数値識別子が示す数値によって除算を実行し、前記除算演算子間で関係付けられた因子間で共通する識別子を削除するステップをさらに実行する請求項９から１１のいずれか１項に記載の情報処理方法。
【請求項１３】
前記対象情報は、さらに第１の因子を底とし、第２の因子を指数とするべき乗を示す指数演算子によって記述され、
前記コンピュータは、共通の因子を底とするべき乗が積演算子で結合されるときに、指数となっている前記第２の因子間を和演算子によって項の組み合わせに変換するステップをさらに実行する請求項９から１２のいずれか１項に記載の情報処理方法。
【請求項１４】
前記コンピュータは、前記第２の因子間で、数値識別子が示す数値の加算を実行し、前記共通の因子を底とするべき乗が積演算子と除算演算子とによって結合されるときに、前記第２の因子間で、数値識別子が示す数値の減算を実行する請求項１３に記載の情報処理方法。
【請求項１５】
前記コンピュータは、第１の対象情報と第２の対象情報との関係が等価であることを示す等価演算子によって、前記第１の対象情報と前記第２の対象情報とが関連づけされているときに、前記第１の対象情報と第２の対象情報の両方に、共通の非数値識別子を因子とする項間の同一の数値識別子による加算、または同一の数値識別子による乗算を実行する請求項９から１４のいずれか１項に記載に情報処理方法。
【請求項１６】
前記対象情報は、前記対象情報が記述する対象に含まれる構成要素を識別する識別子と構成要素の属性値とを含み、
前記コンピュータは、
前記構成要素を識別する識別子によって前記対象の特徴量を指定する指定対象情報の入力を受け付けるステップと、
前記指定対象情報に含まれる構成要素を識別する識別子を前記構成要素の属性値に変換するステップと、
前記構成要素の属性値によって前記指定対象情報によって指定される特徴量を算出するステップと、をさらに実行する請求項９から１５のいずれか１項に記載の情報処理方法。
【請求項１７】
コンピュータに、
識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶部から読み出すステップと、
指定を受けた指定識別子を基に前記読み出された対象情報中で指定識別子に関連する項または項の組み合わせを取得するステップと、
前記取得された項または項の組み合わせ中の数字を含む識別子を、数値であることを数値演算子によって明示する数値識別子に変換するステップと、
前記変換された数値識別子を含む対象情報中で、因子の列として積演算子で結合される因子のうち、前記数値識別子以外の非数値識別子を残して数値識別子で表される数値間で乗算を実行するステップと、
前記変換された数値識別子を含む対象情報中で、項の組み合わせに対して前記非数値識別子を共通の因子とする複数の項について数値識別子で表される数値間で加算を実行するステップと、を実行させるためのプログラム。
【請求項１８】
前記コンピュータに、単位指定識別子記憶部から数値の単位を示す単位指定識別子を読み出すステップをさらに実行させ、
前記変換ステップでは、前記単位指定識別子記憶部に記憶された単位指定識別子に積演算子で結合されている１以上の数字を前記数値識別子に変換させるための請求項１７に記載のプログラム。
【請求項１９】
前記コンピュータに、単位指定識別子記憶部から数値の単位を示す単位指定識別子を読み出すステップをさらに実行させ、
前記変換ステップでは、前記識別子中の数値部分に隣接する非数字部分が前記単位指定識別子記憶部に記憶された単位指定識別子であるときに、前記数値部分を数値識別子に変換させるための請求項１７に記載のプログラム。
【請求項２０】
前記対象情報は、さらに因子間の除算を示す除算演算子によって記述され、
前記コンピュータは、前記除算演算子で関係付けられた因子間の数値識別子が示す数値によって除算を実行し、前記除算演算子間で関係付けられた因子間で共通する識別子を削除するステップをさらに実行させるための請求項１７から１９のいずれか１項に記載のプログラム。
【請求項２１】
前記対象情報は、さらに第１の因子を底とし、第２の因子を指数とするべき乗を示す指数演算子によって記述され、
前記コンピュータは、共通の因子を底とするべき乗が積演算子で結合されるときに、指数となっている前記第２の因子間を和演算子によって項の組み合わせに変換するステップをさらに実行させるための請求項１７から２０のいずれか１項に記載のプログラム。
【請求項２２】
前記コンピュータに、前記第２の因子間で、数値識別子が示す数値の加算を実行させ、前記共通の因子を底とするべき乗が積演算子と除算演算子とによって結合されるときに、前記第２の因子間で、数値識別子が示す数値の減算を実行させるための請求項２１に記載のプログラム。
【請求項２３】
前記コンピュータは、第１の対象情報と第２の対象情報との関係が等価であることを示す等価演算子によって、前記第１の対象情報と前記第２の対象情報とが関連づけされているときに、前記第１の対象情報と第２の対象情報の両方に、共通の非数値識別子を因子とする項間の同一の数値識別子による加算、または同一の数値識別子による乗算を実行させるための請求項１７から２２のいずれか１項に記載にプログラム。
【請求項２４】
前記対象情報は、前記対象情報が記述する対象に含まれる構成要素を識別する識別子と構成要素の属性値とを含み、
前記コンピュータに、
前記構成要素を識別する識別子によって前記対象の特徴量を指定する指定対象情報の入力を受け付けるステップと、
前記指定対象情報に含まれる構成要素を識別する識別子を前記構成要素の属性値に変換するステップと、
前記構成要素の属性値によって前記指定対象情報によって指定される特徴量を算出す
るステップと、をさらに実行させるための請求項１７から２３のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、事物、例えば、物品、事象、環境、社会、組織等をコンピュータで処理可能な所定の表現形式を用いて表現し、コンピュータの記憶装置に記憶し、コンピュータで処理することで、その事物を管理する情報処理装置、情報処理方法等の技術に関する。
【背景技術】
【０００２】
既存のデータベースのデータモデルとして、正規化表構造によるリレーショナルモデルや、ノードに属性を持つツリー構造で表現されるオブジェクト指向モデルが知られている。しかし、従来の情報処理装置、情報処理技術では、格納されるデータの構造が事前に設計されていることが前提であった。したがって、データが格納された後にデータの構造を変更することは極めて困難であった。
【０００３】
そこで、発明者らは、式表現という概念を提示し、既存のデータベースのデータモデルとは異なり、データの構造に拘束されることを低減し、コンピュータ上に柔軟に事物を記述できる情報処理技術を提案してきた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−９２８５５号公報
【特許文献２】国際公開公報ＷＯ２００７／０８８９８２
【特許文献３】特開２００９−１１０４４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、既存データモデルによるデータベースでは、格納されるデータの構造が事前に設計されている上に、格納されたデータに対する演算も事前に設計されたデータの構造を前提とする。例えば、リレーショナルモデルでは、表を構成するレコードにおいて、レコード内の要素の型は固定されており、その固定された型を前提としてデータベースの演算が実行される。同様に、例えば、オブジェクト指向モデルでは、オブジェクトに含まれる要素の型は固定されており、その固定された型を前提としてオブジェクトに対する処理が実行される。
【０００６】
そこで、開示の技術の一側面は、対象を記述する式表現中に、数値化された情報の組み込みを可能とし、データの構造による拘束を低減した上で、コンピュータが事物に係る情報をコンピュータ上に蓄積し、蓄積された情報を基に、データの構造への依存を低減した上で、蓄積した事物の数値に係る情報を演算可能にする、情報処理装置、情報処理方法等の情報処理技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
開示の技術の一側面は、識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述され、識別子として数字を含み数値であることを数値演算子によって明示する数値識別子と前記数値識別子以外の非数値識別子とを含む、対象情報を記憶する記憶部と、対象情報を操作する処理部と、を備える情報処理装置として例示できる。ここで、処理部は、因子の列として積演算子で結合される因子のうち、前記非数値識別子を残して数値識別子で表される数値間で乗算を実行し、項の組み合わせに対して前記非数値識別子を共通の因子とする複数の項について数値識別子で表される数値間で加算を実行する。
【０００８】
なお、本発明は、一の側面では、本情報処理装置が実行する手順を含む情報処理方法として特定することもできる。また、本発明は、他の側面では、本情報処理装置が実行する手順をコンピュータに実行させるコンピュータプログラム、コンピュータプログラムを記憶した記憶媒体として特定することもできる。
【発明の効果】
【０００９】
本情報処理装置によれば、事物を記述する式表現中に、数値化された情報を組み込み可能とし、データの構造による拘束を低減した上で、コンピュータが事物に係る情報をコンピュータ上に蓄積し、蓄積された情報を基に、データの構造への依存を低減した上で、蓄積した事物の数値に係る情報を演算することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係る情報処理装置のメモリに格納される第一のデータ構造を示す。
【図２】第１の実施形態に係る情報処理装置のメモリに格納される第二のデータ構造を示す。
【図３】第１の実施形態に係る情報処理装置のメモリに格納される第三のデータ構造を示す。
【図４】第１の実施形態に係る情報処理装置におけるプログラム構成を示す図である。
【図５Ａ】商演算処理（サブルーチン１）を実行する処理のフローを示す図である。
【図５Ｂ】商演算処理（サブルーチン１）を実行中の対象情報の状態の詳細を示す表（その１）である。
【図５Ｃ】商演算処理（サブルーチン１）を実行中の対象情報の状態の詳細を示す表（その２）である。
【図６Ａ】商演算処理（サブルーチン２）を実行する処理のフローを示す図である。
【図６Ｂ】商演算処理（サブルーチン２）を実行中の対象情報の状態の詳細を示す表（その１）である。
【図６Ｃ】商演算処理（サブルーチン２）を実行中の対象情報の状態の詳細を示す表（その２）である。
【図７】部分集合取得処理を実行する処理のフローを示す。
【図８Ａ】部分集合取得処理を実行中の対象情報の状態の詳細を示す表である。
【図８Ｂ】部分集合取得処理を実行中の対象情報の状態の詳細を示す表である。
【図９】第２実施形態に係る情報処理装置のハードウェア構成を例示する図である。
【図１０】第２実施形態に係る情報処理装置の機能ブロックを例示する図である。
【図１１】数値因子化処理を例示する図である。
【図１２】入力式を数値因子化処理するときの情報処理装置の内部状態を例示する遷移テーブルである。
【図１３】数値計算処理を例示する図である。
【図１４】数値計算処理を例示する図である。
【図１５Ａ】入力式を数値計算処理するときの情報処理装置の内部状態を例示する遷移テーブルである。
【図１５Ｂ】入力式を数値計算処理するときの情報処理装置の内部状態を例示する遷移テーブル（続き）である。
【図１６】識別子の置換処理を例示する図である。
【図１７】入力式を置換処理するときの情報処理装置の内部状態を例示する遷移テーブルである。
【図１８】フィルタ処理を例示する図である。
【図１９Ａ】入力式をフィルタ処理するときの情報処理装置の内部状態を例示する遷移テーブルである。
【図１９Ｂ】入力式をフィルタ処理するときの情報処理装置の内部状態を例示する遷移テーブル（続き）である。
【図２０】第３実施形態に係る式表現で記述される集合に属する事物の属性値の合計値を求める処理を例示する図である。
【図２１】第３実施形態に係る式表現で記述される集合に属する事物の属性値の合計値を求める処理を例示する図である。
【図２２】第４実施形態に係る設計対象の特徴量の算出処理を例示する図である。
【図２３】第５実施形態に係る情報処理装置の機能ブロックを例示する図である。
【図２４】第６実施形態に係る情報処理装置２００の構成を例示する図である。
【図２５】第６実施形態に係る数値化処理フローを例示する図である。
【図２６】数値化処理の他の処理例を例示する図である。
【図２７】数値変数と、等価因子による数値計算処理を実行する処理フローを例示する図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明を実施するための形態（以下、実施形態という）に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本情報処理装置は実施形態の構成には限定されない。
【００１２】
《第１実施形態》
以下、第１実施形態に係る情報処理装置を説明する。本情報処理装置の記憶手段に記憶され、本情報処理装置で処理される情報を対象情報という。対象情報は、識別子、因子、項（要素）、集合情報、トポロジー空間情報等の情報を含む。対象情報をオブジェクト情報とも呼ぶ。ただし、本実施形態でのオブジェクト情報は、いわゆるオブジェクト指向データベース、オブジェクト指向言語、オブジェクト指向設計等でいうオブジェクトとは、概念が異なる。そこで、以下では、もっぱらオブジェクト情報という代わりに、対象情報と呼ぶことにする。
【００１３】
また、本実施形態では、項の組み合わせから因子を構成する集合因子構成演算子および順序構成演算子が使用される。集合因子構成演算子は、第一の括弧“（）”により表現される。また、順序構成演算子は第二の括弧“｛｝”により表現される。
【００１４】
本情報処理装置によれば、対象情報を所定の表現形式のデータとして記憶手段に格納し、これに所定のプログラムに基づいて処理を実行することができる。その結果、異なる対象情報同士の情報の一貫性を図るとともに新たな様々な対象情報のデータベース化および処理が可能な情報処理装置を提供することが可能となる。また、従来のリレーショナルモデルやオブジェクト指向モデルでは、対応できないデータに対応することができるシステムを開発することができる。
【００１５】
記憶手段は、抽象度に応じた各レベルの所定の表現形式によって表現される対象情報を例えばテキストファイルとして格納する。記憶手段は、前記対象情報を十分に格納できる容量を有するものであればよく、ハードディスク等がこれに該当する。対象情報とは、システム開発におけるデータベースを構成するすべての情報を含むものである。例えば既存のデータモデルの正規化表構造を構成するレコードの構成要素や正規化表構造では入力不可能なデータ構造も含む。正規化表構造では入力不可能な情報とは、例えば正規化表構造で表現されるようなデータがある場合に、これに付箋のような前記正規化表構造とは全く関連性のない、すなわち属性の定義のない対象情報を意味する。また、この対象情報は、本情報処理装置の処理を実行することによりその抽象度が変化することを特徴とする。す
なわち、あるレベルで入力された対象情報は、本情報処理装置の処理が実行されることによりそのレベルが変化する。そして、そのレベルが変化しても対象情報は、変化前と同一の演算によって、取り扱うことができる。すなわち、対象情報は、抽象レベルが変化しても対象情報の性質には一貫性が保たれるので、同一の演算による操作が可能である。したがって、ある抽象度で格納された対象情報、すなわちデータは本情報処理装置の処理が実行されることにより様々なレベルに変化する。また、上述のように全く関連性のないデータも入力してこれを関連付けることが可能である。したがって、異なる抽象度のレベルにおいて、情報の性質の一貫性が保たれるとともに、新たな様々な事物を示す情報のデータベース化およびデータベース化された情報に対する演算処理が可能となる。
【００１６】
前記対象情報は、記号、識別子、第一の括弧および第二の括弧により表現される因子と、前記因子の積によって表現される項と、前記項の和によって表現される式と、により構成することができる。式を構成する項、および項を構成する因子は、前記対象情報を構成する最小単位である識別子と、前記処理手段において１として処理される単位元ε（”ｅｐｓ”とも記述する）と、前記処理手段において０として処理される零元Φとにより構成することができる。前記第一の括弧は、（）により表現することができる。また、前記第二の括弧は｛｝により表現することができる。このように本情報処理装置によれば、対象情報が非常に簡単なデータ構造で表現されている。したがって、高度な技術を有さないユーザであっても容易に理解することが可能となる。
【００１７】
前記第一の括弧と前記第二の括弧は演算時の強さが異なる。演算時の強さが異なるとは、前記処理手段の処理を実行する際の展開順序が異なることを意味する。項は、前述した因子の積によって表現され、積は×により表現することができる。本実施形態では、積を構成する因子に、可換律は、成立しない。すなわち、ａ×ｂとｂ×ａは、同一とは見なされない。また、式は前記項の和によって表現され、和は＋により表現することができる。本実施形態では、和を構成する項に、可換律が、成立する。すなわち、ａ＋ｂとｂ＋ａは、同一とは見なされる。以上より、例えばある対象情報は数１のように表現することができる。
【００１８】
（ａ＋ｂ）×｛ｃ＋ｄ＋ｅ｝＋ｆ｛ｇ＋ｈ｝×｛ｉ＋ｊ｝・・・（数１）
【００１９】
上記数１で表現される対象情報は、第一の項の（ａ＋ｂ）×｛ｃ＋ｄ＋ｅ｝と、第二の項のｆ｛ｇ＋ｈ｝×｛ｉ＋ｊ｝により構成されている。すなわち、数１は第一の項と第二の項との和により構成されている。次に、第一の項と第二の項のそれぞれについてみると、第一の項は、第一の因子の（ａ＋ｂ）と、第二の因子の｛ｃ＋ｄ＋ｅ｝とにより構成されている。また、第二の項についてみると、第三の因子のｆと、第四の因子の｛ｇ＋ｈ｝と、第五の因子の｛ｉ＋ｊ｝とにより構成されている。なお、上記数１において、“ｆ”の後に、積演算子“×”を明示し、“ｆ×”としてもよい。そして第一の因子から第五の因子のそれぞれについてみると、第一の因子は、第一の括弧と識別子ａおよびｂにより構成されている。また、第二の因子は第二の括弧と識別子ｃ、ｄおよびｅにより構成され、第三の因子は識別子ｆにより構成され、第四の因子は第二の括弧と識別子ｇおよびｆにより構成され、第五の因子は第二の括弧と識別子ｉおよびｊにより構成されている。なお、括弧の中は換言すると再帰的に式になっている。例えば、上記のうち（ａ＋ｂ）についてみると、括弧の中は再帰的に式ａ＋ｂになっている。すなわち、上記式は項としての識別子ａと項としての識別子ｂの和によってなっている。このように、式は、（）または｛｝、およびその両方が複数回入れ子になった構造を含むことができる。
【００２０】
対象情報は、上記のように因子、項からなる式で表現される。そしてこのように表現された対象情報は、例えばテキストファイルとして前記記憶手段に格納される。なお、記憶手段への対象情報の格納、換言すると入力は、例えば、ユーザ操作に応答して実行される
。この入力時に、グラフィカルユーザインターフェースを用いたユーザインターフェース部を提供してもよい。簡易的には、テキストエディタで、識別子、項、あるいは、項の和を入力するようにしてもよい。情報処理手段は、記憶手段に格納されたその対象情報を処理する。これにより、前記対象情報の抽象度を変化させることが可能となる。
【００２１】
次に、図面に基づいて基本システムを説明する。
【００２２】
《基本システム》
（データ構造）
まず、情報処理装置のメモリに格納される対象情報の構造、すなわちデータ構造について説明する。なお、本実施形態の情報処理装置は、以下のデータ構造によって、処理対象のデータを記述し、記憶し、演算処理を行う。
【００２３】
（１）対象情報の構成要素
本情報処理装置は、対象情報を式の形式で表現する。式は、和演算子“＋”、積演算子“×”、第１の括弧“（”“）”、および第２の括弧“｛”“｝”によって記述される。第１の括弧が集合因子構成演算子に相当する。また、第２の括弧が順序構成演算子に相当する。このような対象情報の表現形式を式表現とも呼ぶ。
【００２４】
式は、１以上の識別子を含む。識別子は、記号または記号列で表現される。本実施形態では、記号として、英数字、および特殊文字（ただし、和演算子“＋”、積演算子“×”、第１の括弧“（”“）”、および第２の括弧“｛”“｝”を除外する）を用いることとする。ただし、記号は、一般的にアルファベットとも呼ばれ、必ずしも、これらの文字には限定されない。
【００２５】
本実施形態では、特殊な識別子として、Φおよびεを用いる。Φは、値ゼロ、和演算子において演算結果を変化させない値、または空集合を示す識別子である。本実施形態では、Φを零元と呼ぶ。また、εは、値１、あるいは、積演算子において演算結果を変化させない値である。本実施形態では、εを単位元と呼ぶ。なお、Φを和演算の単位元と呼ぶ場合もあるが、本実施形態では、Φを零元と呼ぶことにする。
【００２６】
また、本情報処理装置は、所定の識別子を、演算を表す予約語として使用する。例えば、Ｆ（式）は、式を展開する演算である。これらの予約語については、ユーザは、通常の識別子として使用することができない、という点で制限がある。
【００２７】
本実施形態では、以下の規則によって対象情報、すなわち、識別子、因子、項（要素ともいう）、集合情報、トポロジー空間情報等の情報を記述する式表現が生成される。
（ａ）識別子、単位元、および零元はいずれも式表現、すなわち、対象情報を記述する表現である。
（ｂ）ｒとｓとがともに、式表現である場合、ｒ＋ｓも式表現である。
（ｃ）ｒとｓとがともに、式表現である場合、ｒ×ｓも式表現である。この場合、演算の結合の強さは、通常の代数と同様に、ｒ×ｓの方が、ｒ＋ｓよりも強い。
（ｄ）ｒが式表現である場合、（ｒ）、｛ｓ｝も式表現である。
【００２８】
（２）式表現の代数的構造
本実施形態において、式表現ｒ、ｓ、ｔ、ｙは、次の代数の性質を有する。
（ａ）結合律
ｒ＋（ｓ＋ｔ）＝（ｒ＋ｓ）＋ｔ
ｒ×（ｓ×ｔ）＝（ｒ×ｓ）×ｔ
（ｂ）可換律
ｒ＋ｓ＝ｓ＋ｒ
なお、本実施形態の式表現では、積演算子の可換律は成立しない。したがって、積演算子で複数の因子が結合されている場合に、個々の因子位置が情報（あるいは意味）を持つ。すなわち、因子は、いわゆる位置を指定してされた位置パラメータとしての機能を有する。「積演算子の可換律は成立しない」ことは、積演算子が「順序を持つ因子の列として複数の識別子を結合する」ことに相当する。
（ｃ）積演算の単位元
ｒ×ε＝ε×ｒ＝ｒ
（ｄ）積演算、和演算の零元
ｒ×Φ＝Φ×ｒ＝Φ
ｒ＋Φ＝ｒ
（ｅ）分配率
ｒ×（ｓ＋ｔ）＝ｒ×ｓ＋ｒ×ｔ
（ｒ＋ｓ）×ｔ＝ｒ×ｔ＋ｓ×ｔ
（ｆ）
｛ｒ＋ｓ｝×｛ｔ＋ｕ｝＝｛ｒ×ｔ＋ｓ×ｕ｝
【００２９】
（３）集合情報
集合情報は、項の組み合わせ、あるいは、項の和として、定義される。ここで、それぞれの項は集合ＩＤ（第１の識別因子に相当）となる識別子と値となる識別子の積、すなわち、集合ＩＤ×値として定義される。ただし、値は、複数の識別子の積であってもよい。集合の情報の式表現は、典型的には、集合ＩＤ×値１＋集合ＩＤ×値２＋・・・である。集合情報の例として、以下のものを挙げることができる。
【００３０】
上述のように、本実施形態のデータ構造では、和演算子に可換律が成立することから、集合情報は、順序のない項の組み合わせということができる。一方、項を構成する因子間の位置関係は維持されることになる。
【００３１】
このような因子間の位置関係の維持機能は、コンピュータ上で事物、あるいは、概念を表現する場合に、極めて大きな効果を発揮する。すなわち、一般的に、事物、あるいは概念を記述する修飾関係には、可換律が成立しない。例えば、”児玉の机”は、”机の児玉”と意味が異なる。
【００３２】
本実施形態の因子と積演算子によれば、このような修飾関係を極めて単純化して、記述することができる。さらに、そのような修飾関係で記述された項を和演算子によって組み合わせることで事物の集合、あるいは、概念の集合を記述し、極めて単純な形式のデータベースを構築できる。
【００３３】
さらにまた、管理対象の事物あるいは概念を項の集合として管理する場合に、項における因子の位置関係に意味を付与することもできる。また、項を構成する因子は、それぞれ、いわゆる位置パラメータとしての意義を有するということもできる。
【００３４】
例えば、集合情報が、果物×任意形状×任意色×バナナ＋果物×任意形状×任意色×リンゴ＋果物×細長×黄色×バナナ＋果物×丸×赤×リンゴという集合情報を考える。この場合、項の第１因子は、集合ＩＤである果物であり、第２因子は形状示し、第３因子は色を示し、第４因子は名称を示す。このように、それぞれの因子の位置に意味上の制限を加えて使用することで、属性と属性値との関係を集合レベルでも処理できることを示している。本情報処理装置では、集合情報は、このような順序が維持された因子によって事物の属性を自在に定義することができ、そのような項の組み合わせによって、事物の集合をコンピュータ上に表現する。
（例）
Ａ×ａ１＋Ａ×ａ２＋Ａ×ａ３、ｂ１×Ｂ＋ｂ２×Ｂ×Ｂ、果物×リンゴ＋果物×バナナ＋果物×ミカン、野菜×キャベツ＋野菜×キュウリ＋野菜×ゴボウ、社員×Ａ＋社員×Ｂ＋社員×Ｃ
【００３５】
すなわち、集合情報は、集合ＩＤで識別される集合に所属する項の組み合わせを記述し、メモリ１２に記憶される。この場合、社員Ｃが退職し、社員Ｄと社員Ｅが入社した場合には、社員×Ａ＋社員×Ｂ＋社員×Ｃのようにメモリ１２に格納される。
【００３６】
（４）トポロジー空間情報
トポロジー空間情報は、トポロジーＩＤ（第２の識別因子に相当）となる識別子と部分集合の和との積によって以下のように記述される。すなわち、トポロジーＩＤ×（部分集合の和）である。ここで、部分集合は、部分集合を識別する部分集合ＩＤと、その部分集合に含まれる項の和との積で表現される。すなわち、部分集合ＩＤ×（項の和）である。ただし、項には、さらに項の和を第１の括弧“（）”または第２の括弧”｛｝”で組み合わせたもの、およびそれらの積が含まれてもよい。
（例）トポロジー空間情報の例は、
Ｔ×（ＡＢＣ×（ａｂ１＋ａｃ２＋ｂｃ３）＋Ａ×（ａｂ１＋ａｃ２）＋Ｂ×（ａｂ１＋ｂｃ３）＋Ｃ（ａｃ２＋ｂｃ３））、
果物×（全種×（リンゴ＋バナナ＋ミカン）＋赤×リンゴ＋黄×（バナナ＋ミカン））、果物×（全種×（リンゴ＋バナナ＋ミカン）＋丸×（リンゴ＋ミカン）＋細長×バナナ）、
野菜×（全種×（大根＋キュウリ＋ゴボウ）＋太×大根＋細×（キュウリ＋ゴボウ））、会社×（社員×（社員１＋社員２＋社員３＋社員４）＋営業×（社員１＋社員２）＋経理×（社員３＋社員４））、等である（この例で、読点“、”は、式の構成要素ではなく、例の区切りである）。この場合に、最後の例について、例えば、総務が新設され、社員５が採用され、総務に配属された場合には、会社×（社員×（社員１＋社員２＋社員３＋社員４＋社員５）＋営業×（社員１＋社員２）＋経理×（社員３＋社員４）＋総務×社員５）のように記述し、メモリ１２に格納できる。
【００３７】
（記述例）
以下、従来のデータ構造である表およびツリー構造が、本実施形態のデータ構造でどのように記述できるかを示す。
【００３８】
図１は、第１実施形態に係る情報処理装置のメモリに格納されるセル空間情報の第一のデータ構造例を示す。同図に示すように、第１実施形態に係る情報処理装置では、従来正規化表構造として表形式で表現される対象情報は、表現形式１の状態でメモリ１２に格納することができる。表現形式１で、Ａは、キー属性（例えば社員番号等）、Ｂ，Ｃ，Ｄ，Ｅ等は、その他の属性（例えば、氏名、性別、入社年、所属部署等）である。
【００３９】
図２は、第１実施形態に係る情報処理装置のメモリに格納されるセル空間情報の第二のデータ構造例を示す。同図に示すように、第１実施形態に係る情報処理装置では、従来ツリー構造として表現される対象情報は、表現形式２又は３でメモリ１２に格納することができる。そして、同図に示すように有向グラフの一部としてのツリー構造について対応可能である。表現形式２で、ａは、例えば、動物、ｂはほ乳類、ｃは魚類、ｄは人、ｅは鯨、ｆはマグロ、ｇは鯉等である。この場合、ｂ（ほ乳類）およびｃ（魚類）は、ａ（動物）の属性、例えば、食する、呼吸する等を継承する。ｂ（ほ乳類）およびｃ（魚類）の共通の属性は、ａ（動物）に定義される。
【００４０】
したがって、本情報処理装置は、本実施形態の式表現によって、フレーム等の知識ベー
ス、あるいは、オブジェクト指向データベース等を記述し、メモリに格納できる。情報処理装置は、これらに対応する事物に関する情報の入力を入力部から受け付け、対応する情報を生成し、メモリに格納し、メモリから読み出し、出力部に出力できる。
【００４１】
また、逆ツリー構造で表現される対象情報についても、表現形式３のようにメモリに格納することができる。逆ツリー情報は、基本的な情報からより複雑な情報を構成する場合に適用できる。表現形式３では、例えば、ａはＣＰＵであり、ｂはインターフェースであり、ｃは外部記憶装置の駆動部であり、ｄはＣＰＵボードであり、ｅは外部記憶装置であり、ｆはパーソナルコンピュータである。
【００４２】
このように逆ツリー構造は、製品の設計書、事業の工程管理図等、基本情報からより複雑な情報を組み上げて管理することができる。したがって、本実施形態の式表現によって、製品の設計情報、事業の工程等を記述し、メモリに格納できる。情報処理装置は、これらに対応する事物に関する情報の入力を入力部から受け付け、対応する情報を生成し、メモリに格納し、メモリから読み出し、出力部に出力できる。
【００４３】
図３は、第１実施形態に係る情報処理装置のメモリに格納される第三のデータ構造例を示す。同図に示すように、第１実施形態に係る情報処理装置では、非正規化表構造と属性のない対象情報についても図３の状態でメモリに格納することができる。ここで、非正規化表構造と属性のない対象情報とは、図３に示すように伝票を示す対象情報と、その対象情報に追加される付箋メモに相当する対象情報とが例示できる。接着処理を実行し、接着空間を作成することで、コンピュータ上で伝票に付箋メモの内容を添付することと同等の処理が実現される。
【００４４】
なお、伝票の種類ごとにテーブルに格納する場合には、リレーショナルモデルによって従来のデータベースで情報を管理できる。しかしながら、伝票の種類数が変動する場合、既存の伝票の構成が変更された場合には、リレーショナルモデルでは、対応できない。
【００４５】
ここで、所定の表現形式、すなわちデータ構造についてより詳細に上記図３の形式に基づいて説明する。ＩＤまたはｉｄ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）は、格納される対象情報を識別するものである。そしてこの対象情報は、識別子Ａ〜Ｅ２，ａ〜ｅ２と、演算時の結合強さが異なる第一の括弧（）および第二の括弧｛｝と、これらにより表現される因子｛Ｃ１＋Ｃ２｝，｛Ｅ１＋Ｅ２｝等と、これら因子の積によって表現される項Ｅ｛Ｅ１＋Ｅ２｝等と、前記項の和によって表現される式と、により構成される。なお、本実施形態では、項を要素ともいう。また、すでに述べたように、単位元εは、所定の処理を実行した場合に１として処理される記号である。上記以外の特別な記号として、所定の処理を実行した場合に０として処理される零元Φが存在する。このような状態でメモリに格納された対象情報は、情報処理装置のＣＰＵが所定のプログラムを実行することによって、入力装置から入力された伝票データにしたがって、生成され、メモリに格納され、部分集合に分離され、他の部分集合と接着され、あるいは、検索されることになる。
【００４６】
図３の例では、インスタンスとして、伝票ＩＤ１で示される１枚目の伝票、伝票ＩＤ２で示される２枚目の伝票、およびＭＥＭＯで示されるメモが例示されている。また、この場合に、１枚目の伝票と２枚目以降の伝票で、項目の構成が異なっても構わない。本情報処理装置は、対象情報を構成する識別子、あるいは項に、個々に属性を付与できるので、異なる属性の並びを有する異なる識別子、あるいは項を自在に記憶し、検索し、変更できる。また、｛｝内に、＋識別子の形式で追加するとともに、属性に対応する値を追加すれば、データベースとして運用中においても、自在に属性と属性値とを追加、変更、削除できる。したがって、本実施形態のデータ構造によれば、情報処理装置が取り扱うデータを柔軟に変更でき、厳密、正確なファイル設計の必要性が軽減される。
【００４７】
（基本演算手順）
図４に、本情報処理装置におけるプログラム構成を示す。本情報処理装置は、例えば、データを格納し、検索し、変更し、表示するデータベースシステム等、様々事物を管理するシステムに適用できる。以下、情報処理装置のハードウェア構成としては、図９を例示できる。その場合、個々の管理対象に応じた機能は、例えばメモリ１２上のアプリケーションプログラムＡＰを実行するＣＰＵ１３によって提供される。すなわち、情報処理装置のＣＰＵ１３は、入力部１１から入力されたデータをメモリ１２あるいは外部記憶装置に格納し、これらに格納されたデータにアクセスし、検索し、出力部１４に表示する。
【００４８】
一方、アプリケーションプログラムがメモリ１２あるいは、外部記憶装置に格納するデータの生成、格納、検索等の機能は、上述の式表現を処理する共通関数ライブライリが提供する。共通関数ライブラリは、アプリケーションインターフェースを備えており、アプリケーションプログラムへのこれらの機能、あるいは、サービスを提供する。以下、本情報処理装置で典型的な共通関数の例を説明する。これらの共通関数は、プリミティブ関数、あるいは、基本演算とも呼ばれる。以下、式表現に対する基本演算、つまり共通関数の典型例として、商演算および部分集合取得処理を例示する。
【００４９】
（１）商演算処理
以下、商演算処理について説明する。商演算処理は、対象情報を記述する集合から、指定された因子（識別子を含む）を含む式表現（項、あるいは要素）と、そのような因子を含まない式表現とに分離する処理である。商演算処理のアプリケーションインターフェースは、例えば、戻り値＝divide(商演算される式表現、商演算する因子、商の式表現、剰
余の式表現)；のように定義できる。本実施形態で、商演算は、“商演算する因子”を含
む式表現を取り出す処理となる。そのため、商演算する因子のことを、同値関係を指定する因子ともいう。商演算する因子は、演算用因子に相当する。
【００５０】
図５Ａは、商演算処理（サブルーチン１）を実行する処理のフローを示す。サブルーチン１を実行するＣＰＵ１３が商演算部に相当する。なお、図６Ａは、商演算のうち、剰余を求める処理（サブルーチン２）である。サブルーチン１は、商演算される式表現である式１、商演算する因子を入力され、商の式表現である式２を出力する。
【００５１】
まずステップＳ３０１では、商演算処理が実行される前の所定の表現形式によって表現される式１（“商演算される式表現”）、および商演算する因子（これを同値関係示す因子ともいう）ｐが入力される。以下、数２により表現される対象情報が入力された場合について説明する。また、１を商演算する因子（同値関係を示す因子ｐ）と設定する。
【００５２】
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））・・・（数２）
【００５３】
次に、ステップＳ３０２では、ＣＰＵ１３は、演算後の商（商項ともいう、ここでは、項２で表す）を初期化する。このとき、項２の値は、Φ（空、または０）である。
【００５４】
次に、ステップＳ３０３では、ＣＰＵ１３は、式１の長さが０であるか否かを判定する。式１の長さが０である場合、ＣＰＵ１３は、サブルーチン１の処理を終了する。
【００５５】
一方、ステップＳ３０３の判定において、式１の長さが０でなかった場合、ＣＰＵ１３は、ステップ３０４に処理を進める。そして、ＣＰＵ１３は、式１から始めの項（以下、項１という）を取得する。ここで、項１は、数２の全体である。さらに、ステップＳ３０５において、ＣＰＵ１３は、式１から項１を削除する。
【００５６】
次に、ステップＳ３０６において、ＣＰＵ１３は、項１が因子ｐ（ここでは、“１”）を含んでいるか否かを判定する。ここで、因子ｐを含んでいるとは、項１の因子としては、あるいは、項１の第１の括弧で括られた因子内の項のいずれかに、因子ｐを含むことをいう。すなわち、項１の式表現中に因子ｐが含まれるか否かを判定する。項１が因子ｐを含んでいない場合、ＣＰＵ１３は、項１を空とし（ステップＳ３０７）、処理をステップＳ３０３に戻す。
【００５７】
一方、ステップＳ３０６の判定において、項１が因子ｐを含んでいる場合、ＣＰＵ１３は、処理をステップＳ３０８に進める。そして、ＣＰＵ１３は、項３を初期化し、空とする。ここで、項３は、始めの項である項１の商演算結果を格納する変数（メモリ１２の領域）である。ここでは、数２の構成から、項１に因子ｐ（＝１）が含まれていると判定される。
【００５８】
そして、ステップＳ３０９において、ＣＰＵ１３は、項１の長さが０であるか否かを判定する（ステップＳ３０９）。項１の長さが０でない場合、ステップＳ３１０において、ＣＰＵ１３は、項１から始めの因子（以下、因子１という）を取得する。数２の構成から、因子“ｃｅｌｌ”が取得される。そして、ステップＳ３１１において、ＣＰＵ１３は、項１から因子１を削除する。
【００５９】
次に、ステップＳ３１２において、ＣＰＵ１３は、因子１に商演算する因子ｐが含まれ、かつ、因子１が第１の括弧“（”と“）”とによって形成された因子であるとき、その括弧内の式を式１に設定し、サブルーチン１を再帰呼び出しする。そして、その再帰呼び出しによる処理結果を因子１とする。この処理によって、商演算される式中で、項に“（）”による因子を含む場合は、その項は、（）内の式が商演算されることになる。数２の構成の場合、“ｃｅｌｌ”が因子１の場合には、ステップＳ３１２は、実行されない。また、ｃｅｌｌの次の因子（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））が、因子１の場合には、ステップＳ３１２により、再起呼び出しが実行されることになる。その結果、式表現中に因子ｐ（この例では、１）を含む因子が抽出されることになる。
【００６０】
さらに、ステップＳ３１３によって、ＣＰＵ１３は、項３に対し因子１を積演算し、結果を項３とする。この処理によって、因子１に商演算される因子ｐが含まれる場合、そのまま項３に積演算されることになる。また、因子１が（）の形式の因子の場合に、（）内から因子ｐを含む項が取り出されることになる。そして、ＣＰＵ１３は、処理をステップＳ３０９に戻す。
【００６１】
ステップＳ３０９の判定で、項１の長さが０となった場合、ＣＰＵ１３は、処理をステップＳ３１４に進める。そして、ステップＳ３１４において、ＣＰＵ１３は、項２（商項）に対して、得られている項３を和演算する。さらに、ステップＳ３１５の処理で、ＣＰＵ１３は、項２を商演算後の式である式２に設定する。その後、ＣＰＵ１３は、処理をステップＳ３０３に戻す。
【００６２】
そして、ステップＳ３０３の判定で、式１の長さが０になると、ＣＰＵ１３は、サブルーチン１の処理を終了する。このような処理により、式２に、以下の数３の式表現が出力され、アプリケーションプログラムに引き渡される。
【００６３】
ｃｅｌｌ×ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝×１｛ε＋ａ１＋ｂ１＋ｃ１｝・・・（数３）
【００６４】
図５Ｂおよび図５Ｃに、数２の式表現に対して、サブルーチン１が実行された場合の式
１、項１、項２、項３、因子１、および式２の変化を示す。図５Ｂおよび図５Ｃの第１行目は、各列の要素、すなわち、図５Ａ中の該当する処理を示す番号、式１、項１、項２、項３、因子１、および式２を示している。第２行以下の各行は、一連の処理ステップであり、図５Ｂ上から下へ、さらに、図５Ｃの上から下へ実行される。
【００６５】
そして、まず、ステップＳ３０１で、共通関数へのパラメータを介して、式１である数２が入力され、メモリ１２に保持される。
【００６６】
項１、因子１および項３に着目すると、これらのうち、“ｃｅｌｌ”および、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が順次サブルーチン１で処理されることが分かる。
【００６７】
さらに、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が因子１としてステップＳ３１２で処理されるときに、再起呼び出しが発生する。そして、同様に、“ｉｄ”、｛ε＋Ａ＋Ｂ＋Ｃ｝、および（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）がサブルーチン１の再起呼び出し１で処理される。
【００６８】
さらに、（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が、ステップＳ３１２で処理されるときに、再起呼び出し２が発生する。そして、同様に、１｛ε＋ａ１＋ｂ１＋ｃ１｝については、商演算する因子“１“が含まれているので、ステップＳ３０６で、ＹＥＳの判定がなされる。そして、ステップＳ３１３によって、１と｛ε＋ａ１＋ｂ１＋ｃ１｝とが項３に積演算される。
【００６９】
一方、２｛ε＋ａ２＋ｂ２＋ｃ２｝については、商演算する因子“１”が含まれていないので、ステップＳ３０６で、ＮＯの判定がなされる。その結果、これらの因子は、ステップＳ３０７において、Φに設定され、削除される。その結果、再起呼び出し２で商演算の結果、式２として出力されるのは、１｛ε＋ａ１＋ｂ１＋ｃ１｝となる。
【００７０】
さらに、再起呼び出し１では、ステップＳ３１３の処理で、項３に積演算されていたｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝と再起呼び出し２での商演算の結果である１｛ε＋ａ１＋ｂ１＋ｃ１｝とが、積演算され、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝）が、式２として出力される。
【００７１】
さらに、そして、再起呼び出し１の前に、項３に積演算されていたｃｅｌｌと、再起呼び出し１による商演算の結果が積演算され、数３が式２として、最終的に出力されることになる。
【００７２】
次に、図６Ａにより、剰余を求める処理（サブルーチン２）を説明する。サブルーチン２を実行するＣＰＵ１３が剰余演算部に相当する。サブルーチン２は、商演算される式である式１、商演算する因子ｐを入力され、剰余の式３を出力する。
【００７３】
まずステップＳ３２１では、商演算処理が実行される前の所定の表現形式によって表現される式１（“商演算される式”）、および商演算する因子（同値関係示す因子ｐ）が入力される。以下、図５Ａの場合と同様、数２により表現される対象情報が入力された場合について説明する。また、１を商演算する因子（同値関係ｐ）と設定する。
【００７４】
次に、ステップＳ３２２では、ＣＰＵ１３は、演算後の式（ここでは、式３と呼ぶ）を初期化する。このとき、式３の値は、Φ（空、または０）になる。
【００７５】
次に、ステップＳ３２３では、ＣＰＵ１３は、式１の長さが０であるか否かを判定する
。式１の長さが０である場合、ＣＰＵ１３は、サブルーチン２の処理を終了する。
【００７６】
一方、ステップＳ３２３の判定において、式１の長さが０でなかった場合、ＣＰＵ１３は、ステップＳ３２４に処理を進める。そして、ＣＰＵ１３は、ステップＳ３２４において、式１から始めの項（以下、項１という）を取得する。さらに、ステップＳ３２５において、ＣＰＵ１３は、式１から項１を削除する。
【００７７】
次に、ステップＳ３２６において、ＣＰＵ１３は、演算後の項（以下、項４と呼ぶ）を初期化する。このとき、項４の値は、Φ（空、または０）になる。
【００７８】
次に、ステップＳ３２７において、ＣＰＵ１３は、項１の長さが０であるか否かを判定する。そして、項１の長さが０でない場合、ＣＰＵ１３は、ステップＳ３２８に処理を進める。そして、ステップＳ３２８において、ＣＰＵ１は、項１から始めの因子（因子１）を取得する。さらに、ステップＳ３２９において、ＣＰＵ１３は、項１から因子１を削除する。
【００７９】
次に、ステップＳ３３０において、ＣＰＵ１３は、因子１が因子ｐと等しいか否かを判定する。そして因子１が因子ｐと等しい場合、ステップＳ３３１において、ＣＰＵ１３は、因子１をΦ（空、または０）にする。
【００８０】
次に、ステップＳ３３２において、ＣＰＵ１３は、因子１が第１の括弧“（”と“）”とによって形成された因子であるとき、その括弧内の式を式１に設定し、サブルーチン２を再帰呼び出しする。そして、その再帰呼び出しによる処理結果を因子１とする。この処理によって、商演算される式中で、“（）”による因子を含む場合は、その因子は、（）が外され、内の式から剰余（すなわち、因子ｐを含まない項）が抽出されることになる。
【００８１】
さらに、ステップＳ３３３によって、ＣＰＵ１３は、項４に対し因子１を積演算し、結果を項４とする。この処理によって、因子１が商演算される因子ｐと異なる場合に、そのまま項３に積演算されることになる。また、因子１が（）の形式の因子の場合に、（）内から因子ｐを含まない項が取り出されることになる。そして、ＣＰＵ１３は、処理をステップＳ３２７に戻す。
【００８２】
ステップＳ３２７の判定で、項１の長さが０となった場合、ＣＰＵ１３は、処理をステップＳ３３４に進める。そして、ＣＰＵ１３は、ステップＳ３３４において、式３（剰余項）に対して、得られている項４を和演算する。その後、ＣＰＵ１３は、処理をステップＳ３２３に戻す。
【００８３】
そして、ステップＳ３２３の判定で、式１の長さが０になると、ＣＰＵ１３は、サブルーチン２の処理を終了する。このような処理により、式３に、以下の数４の式表現が剰余として出力され、アプリケーションプログラムに引き渡される。
【００８４】
ｃｅｌｌ（ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（Φ＋２｛ε＋ａ２＋ｂ２＋ｃ２｝））・・（数４）
【００８５】
図６Ｂおよび図６Ｃに、数２の式表現に対して、サブルーチン２が実行された場合の式１、項１、項４、因子１、および式３の変化を示す。図６Ｂおよび図６Ｃの第１行目は、各列の要素、すなわち、図６Ａ中の該当する処理を示す番号、式１、項１、項、項４、因子１、および式３を示している。第２行以下の各行は、一連の処理ステップであり、図６Ｂの表の上から下へ、さらに、図６Ｃの表の上から下へ実行される。
【００８６】
そして、まず、ステップＳ３２１で、共通関数へのパラメータを介して、式１である数２が入力され、メモリ１２に保持される。
【００８７】
項１、因子１および項４に着目すると、これらのうち、“ｃｅｌｌ”および、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が順次サブルーチン２で処理されることが分かる。
【００８８】
さらに、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が因子１としてステップＳ３３２で処理されるときに、再起呼び出しが発生する。そして、同様に、“ｉｄ”、｛ε＋Ａ＋Ｂ＋Ｃ｝、および（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）がサブルーチン２の再起呼び出し１で処理される。
【００８９】
さらに、（１｛ε＋ａ１＋ｂ１＋ｃ１｝＋２｛ε＋ａ２＋ｂ２＋ｃ２｝）が、ステップＳ３３２で処理されるときに、再起呼び出し２が発生する。そして、１｛ε＋ａ１＋ｂ１＋ｃ１｝については、商演算する因子“１”が含まれているので、ステップＳ３３０で、ＹＥＳの判定がなされる。そして、ステップＳ３３１によって、因子１にΦに設定され、因子１を含む項１全体がΦとなり、削除される。
【００９０】
一方、２｛ε＋ａ２＋ｂ２＋ｃ２｝については、商演算する因子“１”が含まれていないので、ステップＳ３３０で、それぞれの因子１について、ＮＯの判定がなされる。その結果、これらの因子は、ステップＳ３３３において、項４に積演算される。その結果、再起呼び出し２の剰余演算の結果、式３として出力されるのは、２｛Φ＋ａ１＋ｂ１＋ｃ１｝となる。
【００９１】
さらに、再起呼び出し１では、ステップＳ３３３の処理で、項４に積演算されていたｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝と再起呼び出し２での商演算の結果である２｛Φ＋ａ１＋ｂ１＋ｃ１｝とが、積演算され、ｉｄ｛ε＋Ａ＋Ｂ＋Ｃ｝（２｛Φ＋ａ１＋ｂ１＋ｃ１｝）が、式３として出力される。
【００９２】
さらに、そして、再起呼び出し１の前に、項４に積演算されていたｃｅｌｌと、再起呼び出し１による商演算の結果が積演算され、数４が式３として、最終的に出力されることになる。
【００９３】
（２）部分集合取得処理
部分集合取得処理は、集合から、指定された因子（以下、指定因子という）を有する項を含む式（部分集合）と、指定因子を有しない項の式（部分集合）に分離する処理である。この処理を実行するＣＰＵ１３が、部分集合形成部に相当する。ただし、本実施形態では、指定因子（今ｐとする）を有する項が複数個存在する場合には、｛左因子１＋左因子２＋・・・｝ｐ｛左因子１が含まれていた項の右因子＋左因子２が含まれていた項の右因子＋・・・｝＋因子ｐを含まない部分集合の和のように、指定された因子ｐで括り出す。このように、部分集合取得処理の括り出しでは、括り出し前の各項において、指定因子ｐの左側に結合する因子（左因子と呼ぶ）と、指因子ｐの右側に結合する因子（右因子と呼ぶ）とをそれぞれ、第２の｛｝内に和演算する。そして、左因子の和は、第２の｛｝によって括られ、その順序を維持して、指定された因子の左側に結合される。
【００９４】
また、右因子の和は、第２の｛｝によって括られ、その順序を維持して、指定された因子の右側に結合される。さらに、同一の左因子に対して、異なる右因子を有する項が複数存在する場合、それらの右因子は、第１の括弧“（）”で括り出される。この場合、左因子は、集合情報の識別情報として機能する。例えば、
ａ１×ｂ×ｃ１＋ａ１×ｂ×ｃ２＋ａ２×ｂ×ｃ１＋ａ２×ｂ×ｃ２＋ａ３×ｂ×ｃ３＋
ａ×ｕ×ｖという式表現に対して、因子ｂを指定因子として部分集合取得演算を実行すると、
｛ａ１＋ａ２＋ａ３｝ｂ｛（ｃ１＋ｃ２）＋（ｃ１＋ｃ２）＋ｃ３｝＋ａ×ｕ×ｖ
となる。この場合、右因子の列は、それぞれ、集合ＩＤがａ１の集合の部分集合ｂ（ｃ１＋ｃ２）、集合ＩＤがａ２の集合の部分集合ｂ（ｃ１＋ｃ２）、集合ＩＤがａ３の集合の部分集合ｂ×ｃ３を表している。
【００９５】
さらに、部分集合取得処理の対象となる項に、第１の括弧“（）”または第２の括弧“｛｝”が含まれている場合には、これらの括弧内の式表現に対して、再起的に部分集合取得処理が実行される。したがって、第１の括弧“（）”または第２の括弧“｛｝”で括られた個々の括弧内で、部分集合取得処理が実行される。
【００９６】
部分集合取得処理のアプリケーションインターフェースは、例えば、部分集合取得後の式表現は、戻り値＝separate(部分集合取得前の式表現、指定因子)；のように定義できる。対象の式、因子を指定すると、括った後の式（戻り値）となる。
【００９７】
次に部分集合取得処理について説明する。図７は、部分集合取得処理を実行する処理のフローを示す。ステップＳ５０１では、演算前の所定の表現形式で表現される対象情報と、部分集合を指定するための指定因子ｐを入力する。以下、対象情報として数５に示すデータを用いて、指定因子“ｐ”で部分集合を取得する場合について説明する。
【００９８】
ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）＋ｉｄ（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））・・・（数５）
【００９９】
ステップＳ５０２では、部分集合を取得するための因子以外（ここでは、「その他の式」「左因子式」および「右因子式」）をΦと設定する。ステップＳ５０３では「処理後の項」をεに設定する。ステップＳ５０４では、対象情報を構成する式の長さが０であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが０であると判断した場合には、ステップＳ５１７へ進む。一方、式の長さが０であると判断しなかった場合には、ステップＳ５０５へ進む。
【０１００】
ステップＳ５０５では、数５から第一項を取得し保存する。次にステップＳ５０６では、数５から第一項を削除する。次にステップＳ５０７では、取得した項に因子ｐが含まれるか判断する。取得した項に因子ｐが含まれると判断した場合にはステップＳ５１５へ進む。一方、取得した項に因子ｐが含まれると判断しなかった場合には、ステップＳ５０８へ進む。
【０１０１】
ステップＳ５０８では、項の長さが０であるか否かを判断する。項の長さが０であると判断した場合にはステップＳ５１４へ進む。一方、項の長さが０であると判断しなかった場合には、項から第一因子を取得し、これを保存し（ステップＳ５０９）、次に項から第一因子を削除する（ステップＳ５１０）。
【０１０２】
次にステップＳ５１１では、第一因子が第一の括弧または第二の括弧で括られているか判断する。因子が第一の括弧または第二の括弧で括られていると判断した場合には、第一の括弧または第二の括弧で括られている式に対して、本部分集合取得処理を実行する（ステップＳ５１２）。すなわち、再起呼び出しを実行する。一方、第一の括弧または第二の括弧で括られていると判断しなかった場合には、第一因子を取得した因子とし（Ｓ５２０）、ステップＳ５１３へ進む。ステップＳ５１３では、処理後の項に取得した因子によって積演算処理を実行し、その結果を処理後の項とし、ステップＳ５０８の処理を再度実行する。
【０１０３】
ステップＳ５０８において、項の長さが０であると判断した場合には、その他の式に処理後の項を和演算処理し、その結果をその他の式とする（ステップＳ５１４）。ステップＳ５１４の処理を実行後、再度ステップＳ５０３の処理を実行する。次にステップＳ５０４において式の長さが０であると判断した場合には、部分集合の項として｛左因子式｝ｐ｛右因子式｝を作成し（ステップＳ５１７）、その他の式に部分集合項を和演算し，演算後の式とし（ステップＳ５１８）、処理を終了する。以上の処理を実行することにより、数５により表現される対象情報は、数６により表現される対象情報となる。なお、部分集合取得処理を実行中の対象情報の状態の詳細は図８Ａ、図８Ｂに示す。
【０１０４】
ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋ｐ４）｝）＋｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋ｐ４）｝・・・（数６）
【０１０５】
図８Ａおよび図８Ｂに、数５の式表現に対して、部分集合取得処理が実行された場合の「演算前の式」、「部分集合取得のための因子」、「左因子式」、「右因子式」、「左因子」、「右因子」「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」の変化を示す。図８Ａの各行と、図８Ｂの各行は、図７の処理での同一の処理を示している。すなわち、図８Ａおよび図８Ｂを横に接続して、部分集合取得処理の状態変化が表されることになる。
【０１０６】
図８Ａおよび図８Ｂの第１行目は、各列の要素、すなわち、図７中の該当する処理を示す番号、「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」を示している。第２行以下の各行は、一連の処理ステップであり、図８Ａおよび図８Ｂの表の上から下へ実行される。以下、フローチャートの処理（ボックス）を処理（ボックス）に付された符号で、単に、Ｓ５０５のように呼称する。
【０１０７】
ここでは、数５の式表現を処理対象とする。部分集合取得処理を実行する共通関数separateに対して、まず、部分集合取得前の式表現である数５が与えられる。この式表現はメモリ１２に格納される。また、指定因子はｐであるとする。
【０１０８】
まず、Ｓ５０５、Ｓ５０５の処理で、式から第一項ｓ×ｐ（ｐ１＋ｐ２）が取得される。ｓ×ｐ（ｐ１＋ｐ２）に指定因子ｐが含まれているので、Ｓ５１５およびＳ５１６が実行され、左因子ｓおよび右因子（ｐ１＋ｐ２）がそれぞれ左因子式および右因子式に和演算される。
【０１０９】
次に、Ｓ５０５、Ｓ５０６の処理で、式から第二項ｔ×ｐ（ｐ３＋ｐ４）が取得される。ｔ×ｐ（ｐ３＋ｐ４）に指定因子ｐが含まれているので、Ｓ５１５およびＳ５１６が実行され、左因子ｔおよび右因子（ｐ３＋ｐ４）がそれぞれ左因子式および右因子式に和演算される。
【０１１０】
さらに、Ｓ５０５、Ｓ５０６の処理で、式から第三項ｉｄ（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））が取得される。そして、Ｓ５０９において、第一因子としてｉｄが取得される。項ｉｄは、Ｓ５１３にて、処理後の項に積演算される。さらに、Ｓ５０９において、第一項として、次の項（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））が取得される。これは、Ｓ５１１の判定で、第１の括弧を含むとされるので、Ｓ５１２が実行される。
【０１１１】
そして、式表現ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）に対して、部分集合取得処理が再起呼び出しで実行される。図８Ａおよび図８Ｂでは、再起呼び出し中の状態は、省略されているので、本文にて説明する。この場合も、ｓ×ｐ（ｐ１＋ｐ２）から、左因
子ｓ、右因子（ｐ１＋ｐ２）が取得される。また、ｔ×ｐ（ｐ３＋ｐ４）から、左因子ｔ、右因子（ｐ３＋ｐ４）が取得される。これらの左因子および右因子は、Ｓ５１６において、それぞれ左因子式、および右因子式に和演算される。そして、式表現ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）の末尾まで処理が進み、Ｓ５０４で、残りの式の長さが０であると判定される。すると、ＣＰＵ１３は、部分集合の項として、｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝を作成する。そして、ＣＰＵ１３は、部分集合の項を演算後の式として、再起呼び出しを終了する。
【０１１２】
再起呼び出しを終了すると、演算後の式を取得するので、これを取得した因子とする。この場合、取得した因子は、（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）である。そして、ＣＰＵ１３は、Ｓ５１３にて、再起呼び出し前に計算しておいた処理後の項（“ｉｄ”が積演算されている）に、取得した因子を積演算する。その結果、Ｓ５１３において、処理後の項は、ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）となる。ＣＰＵ１３は、Ｓ５１４にて、処理後の項をその他の式として和演算する。
【０１１３】
そして、Ｓ５０４にて、残りの式の長さが０であると判定されると、ＣＰＵ１３は、再起呼び出し前に作成していた左因子式ｓ＋ｔおよび右因子式（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）から、部分集合の項｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）｝を作成する。そして、ＣＰＵ１３は、Ｓ５１８にて、その他の式に部分集合の項を和演算する。これによって、演算後の式ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）＋｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）｝が作成されることになる。
【０１１４】
《第２実施形態》
以下、第２実施形態では、上記第１実施形態の情報処理装置を応用し、式表現を用いて事物に係る情報をメモリ１２等の記憶装置に蓄積し、蓄積された式表現を基に、その事物に係る数値を計算する処理を実現する情報処理装置を例示する。
【０１１５】
（明示的な数値表現）
今、ｎを数値とし、ａを数値以外の記号あるいは記号列とする。例えば、ｎは、整数を示す記号または記号の列である。また、ａは、文字等を示す記号または記号の列である。式表現で、数値ｎと数値以外の記号ａとが、ｎａと記述された場合、ｎａは、整数などの数値を示す記号と数値以外の記号とを組み合わせた識別子ということができる。
【０１１６】
本実施形態では、情報処理装置は、このような数値を示す記号（列）と数値以外の記号（列）とを含む識別子”ｎａ”について、識別子ａがｎ個あるものとして取り扱う。ただし、このような記述に代えて、識別子”ａｎ”について、識別子ａがｎ個あるものとして取り扱う、と定義してもよい。なお、ｎは、負の数値も含む。また、数値を示す記号は、小数等の実数を示すものでもよい。例えば、識別子”ａｎ．ｍ”、例えば、a1.005、b12345678.9については、情報処理装置は、ａの量が1.005、ｂの量が12345678.9であるとして取り扱う。
【０１１７】
さらに、ａがｎ個あることを明示的に示す式表現として、ａ×'ｎ'と記述することにする。さらにまた、ｎが負数である場合、例えば、―ｍ（ｍは正数）の場合は、ａ×‘―ｍ’のように例示される。なお、×は積演算子である。ここで、ｎを挟む''は、数値ｎを明示的に示す演算子であり、数値演算子と呼ぶ。また、数値演算子によって数値であることが明示された識別子'ｎ'を数値識別子と呼ぶ。積演算子が数値演算子によって数値として明示された識別子に適用された場合、積演算子は乗算を示す。
【０１１８】
ただし、数値を明示的に示す数値演算子が、''に限定される訳ではない。情報処理装置上で使用可能な記号から、他の演算子等と重複のないものを数値演算子として定義すれば
よい。例えば、数値をｎ！のように明示してよい。また、数値を＄ｎのように明示してもよい。
【０１１９】
また、数値を示す記号等を含まない識別子ａだけを含む式表現についは、ａが１個あることを明示的に示す式表現として、ａ×'１'と記述することにする。同様に、式表現（ａ＋ａ＋ａ）は、数値を明示的に示す式表現として、（ａ×'1'＋ａ×'1'＋ａ×'1'）と記
述する。同様に、式表現｛ａ＋ａ＋ａ｝は、数値を明示的に示す式表現として、｛ａ×'1'＋ａ×'1'＋ａ×'1'｝と記述する。
【０１２０】
さらに、例えば、式表現２ａ（３ｂ＋ｃ（２ｄ＋３ｅ＋４ｆ＋ｅ））は、数値を明示的に示す式表現として、ａ×'２'×（ｂ×'３'＋ｃ×'１'×（ｄ×'２'＋ｅ×'３'＋ｆ×'
４'＋ｅ×'１'））のように記述される。ただし、×'1'は、省略してもよい。つまり、識別子ａは、明示的にａが１個あるものとして０取り扱うことができる。
【０１２１】
数値を明示的に示す式表現では、数値以外の識別子による因子と、数値識別子による因子の間は、式表現の代数的構造で示した可換律が適用される。例えば、ａ×'ｎ'＝'ｎ'×ａである。
【０１２２】
（数値計算処理）
数値を明示的に示す式表現において、四則演算、べき乗等の演算は、以下のように処理される。以下、数値を明示的に示す式表現を代数演算式と呼ぶ。
【０１２３】
（１）乗算
積演算子で結合される複数の因子中の２以上の因子が数値演算子によって数値として明示されている式表現を考える。このような式表現については、本情報処理装置は、数値演算子によって数値として明示されている因子間の乗算を実行する。例えば、ａ×'１'×ｂ×'ｍ'＝ａ×ｂ×'１×ｍ'となる。ここで、'１×ｍ'は、数１と数ｍを乗算した積である。具体的には、ａ×'２'×ｂ×'４'＝ａ×ｂ×'８'である。また、例えば、ａ×'０'＝φである。
【０１２４】
（２）べき乗と除算
以下にべき乗と除算を例示する。べき乗は、同一の数を複数回掛ける演算、あるいは、その演算結果をいう。本情報処理装置では、べき乗は、”底を示す識別子Ｍ×＾指数を示す識別子ｎ”という形式で記述する。例えば、ａ×ａ×ａ＝ａ×＾'３'である。識別子ａのｎ乗は、ａ×＾'ｎ'で表す。つまり、この場合には、”×＾”がべき乗を示す予約語となる。ただし、べき乗が、このような記述形式に限定されるわけではない。この例では、”×＾”が指数演算子に相当する。なお、べき乗の底（上記識別子Ｍ）および指数部分（上記識別子ｎ）の一方または両方が、小数等の実数であってもよい。
【０１２５】
例えば、識別子ａのｎ乗をａ＊＊'ｎ'のように表してもよい。この場合には、”＊＊”がべき乗を示す予約語となる。また、識別子ａのｎ乗をａ×Ｅ'ｎ'のように表してもよい。この場合には、”×Ｅ”がべき乗を示す予約語となる。以下、べき乗の記述例、およびべき乗を含む除算を例示する。
ａ×＾'０'＝'１'
（ａ×ｂ）×＾'０'＝'１'
／（ａ×ａ×ａ）＝ａ×＾'−３'
同様に、ａのマイナスｎ乗は、ａ×＾'−ｎ'で表す。一方、／'０'はエラーである。さらに、除算記号で、分母分子として関係付けられる２つの式表現中で、互いに共通の因子（識別子）は削除可能である。この場合の共通の因子（識別子）については、いわゆる約分が実行される。識別子の削除は、例えば、ａ×ｃ／ａ＝ｃのように示される。
【０１２６】
（３）加算
和演算子で構成される項の組み合わせ中に、数値演算子で数値として明示されている因子以外の因子が共通する複数の項については、本情報処理装置は、数値演算子で数値として明示されている因子を加算する。以下に、演算結果を例示する。
（ａ×'１'＋ａ×'ｍ'）＝ａ×'（１＋ｍ）'
（ａ×'２'＋ａ×'４'）＝ａ×'６'
（ａ×'１'＋ｂ×'ｍ'）は、これ以上加算できない。
（ａ＋ａ＋ｃ）＝（ａ×'１'＋ａ×'１'＋ｃ×'１'）＝（ａ×'２'＋ｃ×'１'）
なお、第２の括弧”｛｝”内の複数の式表現同士は、加算できない。例えば、｛ａ＋ａ＋ｃ｝の｛｝内のａとａの加算はできない。ただし、第２の括弧”｛｝”を和演算子で組み合わせた式表現において、｛｝内の位置が同一位置の式表現同士の加算は可能である。例えば、｛ａ＋ａ＋ｃ｝＋｛ａ＋ｂ＋ｃ｝＝｛（ａ＋ａ）＋（ａ＋ｂ）＋（ｃ＋ｃ）｝＝｛（ａ×'１'＋ａ×'１'）＋（ａ×'１'＋ｂ×'１'）＋（ｃ×'１'＋ｃ×'１'）｝＝｛ａ×'２'＋（ａ×'１'＋ｂ×'１'）＋ｃ×'２'｝
さらに、減算は、数値に負数を用いることで、加算を用いて、実現できる。以下に負の数値の加算を例示する。
（ａ×'１'＋ａ×'−ｍ'）＝ａ×'（１−ｍ）'
（ａ×'２'＋ａ×'−４'）＝ａ×'−２'
（ａ＋ａ×−１＋ｃ）＝（ａ×'１'＋ａ×'−１'＋ｃ×'１'）＝ｃ×'１'
【０１２７】
（ハードウェア構成）
次に、本実施形態に係る情報処理装置２００の構成例について説明する。
【０１２８】
図９は、情報処理装置２００のハードウェア構成を例示する図である。情報処理装置２００は、コンピュータプログラムを実行し、情報処理装置２００の機能を提供するＣＰＵ１３と、ＣＰＵ１３で実行されるプログラム、あるいは、ＣＰＵ１３が処理するデータを格納するメモリ１２と、インターフェース１５を介してＣＰＵ１３に接続される入力部１１と、インターフェース１６を介してＣＰＵ１３に接続される出力部１４とを有する。さらに、情報処理装置２００は、インターフェース３１を介してＣＰＵ１３に接続される通信部３２と、インターフェース３３を介してＣＰＵ１３に接続される外部記憶装置３４と、インターフェース３５を介してＣＰＵ１３に接続される着脱可能な記憶媒体アクセス装置３６とを有する。
【０１２９】
ＣＰＵ１３と、メモリ１２および各インターフェース１５、１６、３１、３３、および３５は、通常、ＣＰＵ１３の内部バスに接続される。インターフェース１５は、一般的には、ＵＳＢ等のシリアルインターフェースである。入力部１１は、キーボード、あるいは、マウス等のポインティングデバイスである。ポインティングデバイスは、機械的手段、光学的手段、または、静電容量でユーザの操作を検知するものでもよい。また、ポインティングデバイスとして、タッチパネルを用いてもよい。さらに、入力装置１１としてスキャナを用いてもよい。
【０１３０】
インターフェース１６は、例えば、アナログのＲＧＢ（赤緑青）の指定を含むインターフェースである。ただし、インターフェース１６は、シリアルまたはパラレルのデジタル信号インターフェースでもよい。例えば、ＩＥＥＥ１３４９、ＵＳＢ、ＤＶＩ（Digital Visual Interface) 、ＨＤＭ（High Definition Multimedia Interface) 等でもよい。出力部１４は、例えば、液晶ディスプレイ、プリンタ等である。
【０１３１】
インターフェース３１、３３、および３５は、ＵＳＢ等のシリアルインターフェース、ＳＣＳＩ（Small Computer System Interface）、ＩＤＥ（Integrated Drive Electronic
s）等のパラレルインターフェースである。通信部３２は、Ethernet（登録商標）等のＬ
ＡＮ基板である。
【０１３２】
このような情報処理装置の具体的な例としては、パーソナルコンピュータを例示できる。また、このような情報処理装置は、クライアント装置とサーバ装置を用いても構成できる。そして、サーバ装置としては、JSP1.4（登録商標）、ウェブサーバにはTomcat（登録商標）5.0を含むコンピュータを例示できる。クライアント装置とサーバ装置は同一種類
のパーソナルコンピュータで実現してもよい。情報処理装置２００の機能は、ＣＰＵ１３がプログラムを実行することで実現される。このプログラムは、メモリ１３あるいは外部記憶装置３４にインストールされる。プログラムは、通信部３２を通じてネットワークから、あるいは、着脱可能な記憶媒体からインストールされる。したがって、このプログラムは、ネットワークあるいは着脱可能な記憶媒体等を通じて流通される。
【０１３３】
図１０は、第２実施形態に係る情報処理装置２００の機能ブロックを例示する図である。情報処理装置２００のＣＰＵ１３は、例えば、メモリ１２に実行可能に記憶された命令列を含むコンピュータプログラムを実行し、各機能ブロックの処理を実現する。
【０１３４】
図１０は、情報処理装置２００の機能が、例えば、入力部１１と、出力部１４と、処理部４０と、通信部３２と、外部記憶装置３４等によって実現できることを示している。処理部４０は、図１０に示した、ＣＰＵ１３、メモリ１２を含む。また、外部記憶装置３４は、処理部４０で処理されるデータ、あるいは、処理部４０で実行されるコンピュータプログラムＡＰ１等を格納する。なお、情報処理装置２００は、図１０の構成のうち、少なくとも処理部４０に相当するＣＰＵ１３およびメモリ１２を有していればよく、他の構成は適宜設ければよい。
【０１３５】
処理部４０は、アプリケーションプログラムＡＰ１、共通関数ライブラリ４６、データ部４５を含む。なお、ここでは、図９のメモリ１２がデータ部４５の例である。
【０１３６】
情報処理装置２００のＣＰＵ１３は、アプリケーションプログラムＡＰ１を実行し、情報処理装置２００の機能を提供する。例えば、情報処理装置２００は、入力部１１、通信部３２等からデータの入力を受け付け、加工し、データ部４５に格納する。そして、情報処理装置２００は、出力部１４、あるいは通信部３２に接続されるネットワーク上の他の装置にデータを出力する処理を実行する。以下、情報処理装置２００のＣＰＵ１３がアプリケーションプログラムＡＰ１を実行し、処理を行う場合に、単に、アプリケーションプログラムＡＰ１が処理を行うものとして説明する。
【０１３７】
例えば、アプリケーションプログラムＡＰ１は、出力部１４に、ユーザインターフェース画面を表示する。そして、アプリケーションプログラムＡＰ１は、入力部１１からのユーザ操作を検出し、情報処理装置２００にそのユーザ操作に対応した指令を処理部４０のプログラムあるいはハードウェア等に送る。ここで、検出されるユーザ操作は、例えば、各種入力欄へのユーザ入力データの検出、各種ボタンの押下、メニューの選択、コマンドの入力等である。
【０１３８】
さらに、アプリケーションプログラムＡＰ１は、出力部１４に表示されたユーザインターフェース画面を通じて、ユーザからの式表現の定義、代数演算式の定義等を受け取り、データ部４５に格納する。ただし、式表現の定義、代数演算式の定義等は、テキストエディタ等から入力されることもある。また、例えば、情報処理装置２００は、入力部１１として、スキャナを接続し、紙面上の式表現の定義、代数演算式等を入力してもよい。また、情報処理装置２００は、通信部３２を通じて、ネットワーク上の他のコンピュータ等から、式表現の定義、代数演算式等を入力してもよい。また、情報処理装置２００は、通信
部３２を通じて、ネットワーク上の他のコンピュータ等に、ユーザインターフェース画面を表示してもよい。以上のように、情報処理装置２００は、入力部１１、出力部１４を設けることなく、通信部３２を入力部１１、出力部１４の代わりとして用いてもよい。
【０１３９】
さらにまた、アプリケーションプログラムＡＰ１は、出力部１４に表示されたユーザインターフェース画面を通じて、ユーザから特定の識別子（例えば、集合ＩＤ、トポロジーＩＤ等）の指定を受け取る。そして、アプリケーションプログラムＡＰ１は、は、その識別子によって、ユーザが指定した式表現中から、その指定された識別子を含む式表現を抽出する。この処理は、例えば、基本システムで説明した商演算、あるいは、部分集合取得処理により実行される。そして、アプリケーションプログラムＡＰ１は、その指定された識別子を含む式表現に対して種々の演算、例えば、数値計算処理を実行する。数値計算処理は、例えば、通常の四則演算、べき乗の処理等である。
【０１４０】
以上のように、本実施形態では、情報処理装置２００の主要な機能はＣＰＵ１３で実行されるコンピュータプログラム、あるいはＣＰＵ１１と連携する専用ハードウェア回路として実現される。ただし、入力部１１、出力部１４、処理部４０、アプリケーションプログラムＡＰ１その他、図１０に示した構成要素は、例えば、それぞれユニット（Ｕｎｉｔ）という用語で記述してもよい。ここでユニットとは、モジュールあるいはテーブル等を含み、以下のソフトウェアの構成要素（Ｃｏｍｐｏｎｅｎｔ）、または、ハードウェアの構成要素（Ｃｏｍｐｏｎｅｎｔ）によって実現される。ただし、ユニットが、以下の例に限定されるわけではない。
【０１４１】
すなわち、ユニットは、例えば、フィールド・プログラマブル・ゲートウェイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、ゲートアレイ、論理ゲートの組み合わせ、信号処理回路、アナログ回路、その他の回路網等であって、上記それぞれの構成要素の機能を実現するものを含む。
【０１４２】
ソフトウェアのユニット、例えば、ソフトウェアモジュールは、例えば、ソフトウェア部品、手続き型言語による部品、オブジェクト指向ソフトウェア部品、クラス部品、タスクとして管理される部品、プロセスとして管理される部品、関数、属性、手続き（プロシジャともいう）、サブルーチン（ソフトウェアルーチンともいう）、プログラムコードの断片・部分、ドライバ、ファームウェア、マイクロコード、データ、データベース、データ構造、テーブル、配列、変数、パラメータ等の構成要素を含む。さらに、これらの構成要素は、１または複数のＣＰＵ(Central Processing Unit)、あるいはＤＳＰ（Digital Signal Processor）等の処理装置上で実現される。
【０１４３】
ソフトウェアのユニットは、Ｃ言語、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｖｉｓｕａｌ 
Ｂａｓｉｃ（登録商標）または他の多くの言語で記述できる。これらのソフトウェアのユニットは、１または複数の機械（あるいはコンピュータ）読み取り可能な記憶装置、例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、消去およびプログラム可能なリード・オンリー・メモリ（ＥＥＰＲＯＭｓ）、フラッシュメモリ、およびこれらいずれかのメモリを含むメモリカード、磁気ディスク、例えば、ハードディスク、フレキシブルディスク（フロッピー（登録商標）等）、および他の着脱可能なディスク媒体、他の磁気媒体、例えば、テープ、光媒体、例えば、コンパクトディスク（ＣＤ）、ＤＶＤ（Ｄｉｇｉｔａｌ Ｖｉｄｅ Ｄｉｓｋ，Ｄｉｇｉｔａｌ Ｖｅｒｓａｔｉｌｅ Ｄｉｓｋ）、ブルーレイディスク等に格納できる。ただし、ソフトウェアのユニットに含まれる命令は、有線ネットワークカードと有線ネットワーク、あるいは無線カードと無線ネットワークを通じて情報処理装置２００で例示される機械、あるいは装置に転送あるいはローディングし、実行できる。そのような転送処理、あるいは、ローディング処理において、データ信号は例えば搬送波に組み込ま
れ（embodied as carrier waves）、有線あるいは無線ネットワークを転送される。ただ
し、データ信号が搬送波によらず、いわゆるベースバンド信号のまま転送される場合もある。
【０１４４】
以上のような機能を実現するプログラム、命令コード、コードセグメントは、本技術分野の通常のプログラマであれば構成できる。また、上記機能を実現する電気回路網は、本技術分野の通常の回路技術者であれば構成できる。
【０１４５】
（数値処理フロー）
以下、本情報処理装置２００が実行する数値処理フローを例示する。図１１は、数値因子を明示的に表示しない式表現から数値因子を明示的に表示した式表現である代数演算式に変換する数値因子化処理を例示する図である。以下、例示するフローチャートは、例えば、情報処理装置２００のＣＰＵ１３が、メモリ１２に格納されたコンピュータプログラムにより実行する。ただし、以下に述べる処理の少なくとも一部は、情報処理装置２００のＣＰＵ１３がコンピュータプログラムを実行する代わりに、ＦＰＧＡ等を用いた専用のハードウェア回路が実行してもよい。
【０１４６】
この処理では、情報処理装置２００は、数値因子を明示的に表示しない式表現（以下、対象の入力式ｅ１）の入力を受け、数値因子を明示的に表示した式表現（以下、戻り式ｒ）を出力する。ここで、情報処理装置２００は、対象の入力式ｅ１と、戻り式ｒを、例えば、コンピュータプログラムの引数として入出力してもよい。また、情報処理装置２００は、図９、図１０に示した入力部１１および出力部１４等を通じて、対象の入力式ｅ１と、戻り式ｒを入出力してもよい。また、情報処理装置２００は、通信部３２を介してネットワーク上の他の装置との間で、対象の入力式ｅ１と、戻り式ｒを入出力してもよい。さらにまた、情報処置装置２００は、例えば、外部記憶装置３４に格納された入力式ｅ１を読み出し、戻り式ｒを外部記憶装置３４に格納するようにしてもよい。
【０１４７】
また、図１２は、情報処理装置２００が、入力式ｅ１＝３ａ（ｂ＋ｃ）＋ｄ｛４ｅ＋ｆ｝を処理するときの情報処理装置２００の内部状態を例示する遷移テーブルである。以下の説明で例示される入力式ｅ１、戻り式ｒ等に含まれる式表現は例示である。例えば、図１２では、識別子ａ、ｂ、ｃ、ｄ、ｅ、およびｆを含む式表現が例示されるが、情報処理装置２００の処理がこのような式表現に限定される訳ではない。
【０１４８】
図１１の処理では、情報処理装置２００は、まず、対象の入力式ｅ１を入力し、さらに、戻り式ｒを宣言する（Ｆ１）。情報処理装置２００は、入力式ｅ１を、例えば、入力コンピュータプログラムの引数として情報処理装置２００が取得する。一方、戻り式ｒを宣言するとは、例えば、情報処理装置２００が、メモリ１２上に、戻り式ｒの格納先を確保することをいう。
【０１４９】
次に、情報処理装置２００は、入力式ｅ１がφか否かを判定する（Ｆ２）。入力式ｅ１がφでない場合、情報処理装置２００は、入力式ｅ１中の始めの項ｔ１を取得し、入力式ｅ１から始めの項ｔ１を削除する。さらに、情報処理装置２００は、戻り項ｔ２を宣言する（Ｆ３）。
【０１５０】
ここで、Ｆ１−Ｆ３の処理を図１２の例によって説明する。ここでは、式の構成を示すため、等号（＝）を用いて説明する。ただし、等号は、本実施形態における説明のために用いる記号である。したがって、情報処理装置２００の処理は、等号を用いずに実行できる。例えば、以下の加算等の演算は、演算実行前の式を情報処理装置２００の第１の引数に対応するメモリ１２上の領域に設定し、演算の実行結果を第２の引数に対応するメモリ１２上の領域に格納するようにすればよい。なお、宣言された戻り項ｔ２の初期値は、１
（あるいは単位元ε）である。
【０１５１】
入力式ｅ１＝３ａ（ｂ＋３ｃ）＋ｄ｛４ｅ＋ｆ｝
始めの項ｔ１＝３ａ（ｂ＋３ｃ）
したがって、図１２で、始めの項ｔ１を削除した入力式ｅ１は、次の通りである。
【０１５２】
入力式ｅ１＝ｄ｛４ｅ＋ｆ｝
次に、図１１に戻って説明を継続する。情報処理装置２００は、始めの項ｔ１の長さが０か否かを判定する（Ｆ４）。なお、始めの項ｔ１の長さが０ということは、始め項ｔ１がφであることと同義である。
【０１５３】
そして、始めの項ｔ１の長さが０でない場合、情報処理装置２００は、始めの項ｔ１から始めの因子ｆ１を取得し、始めの因子ｆ１を始めの項ｔ１から削除する（Ｆ５）。図１２の例では、例えば、以下のようになる。
【０１５４】
始めの因子ｆ１＝３ａ
また、始めの因子ｆ１削除後の始めの項ｔ１は、以下の通りである。
【０１５５】
始めの因子ｔ１＝（ｂ＋３ｃ）
次に情報処理装置２００は、始めの因子ｆ１が括弧型か否かを判定する（Ｆ６）。因子が括弧型とは、因子である式表現が第１の括弧”（）”または第２の括弧”｛｝”で括られた形式であることをいう。始めの因子が括弧型のとき、情報処理装置２００は、括弧内の式表現を再帰処理し、再帰処理した結果を始めの因子ｆ１とする（Ｆ８）。ここで、再帰処理とは、コンピュータプログラムの処理では、再帰呼び出しともいい、括弧（”（）”または”｛｝”）内の式表現を入力式ｅ１として、図１１の処理を再度実行することをいう。
【０１５６】
Ｆ６の判定で、始めの因子ｆ１が括弧型でない場合、情報処理装置２００は、因子ｆ１が数字を含むか識別子か否かを判定する（Ｆ７）。始めの因子ｆ１が数字を含む識別子でない場合、情報処理装置２００は、処理をＦ１０に進める。一方、始めの因子ｆ１が数字を含む識別子である場合、情報処理装置２００は、始めの因子ｆ１を数値化し、その結果を始めの因子ｆ１とする（Ｆ９）。ここで、因子を数値化するとは、因子である識別子中の数字を数値化することをいう。例えば、始めの因子ｆ１が３ａの場合に、数値すると、ａ×'３'と表される。また、例えば、始めの因子ｆ１が５００円の場合には、円×’500
’に変換される。すなわち、数字の部分が数値演算子によって数値であることを明示され、数値識別子に変換される。一方、数字部分以外の部分は、通常の識別子（非数値識別子ともいう）となる。さらにまた、始めの因子ｆ１が１以上の数字の場合には、’0’、’1’、’0123456789’のように変換される。また、始めの因子ｆ１が複数の数字部分を複数含む場合、例えば、012ab345cdf89の場合には、各数字部分をそれぞれ数値識別子に変換
し、非数字識別子と積演算子で結合すればよい。例えば、012ab345cdf89は、ab×’012’×cdf×’345’×’89’のように変換すればよい。また、始めの因子ｆ１が3.1234567890aの場合に、は、a×’3.1234567890’のように数値化すればよい。すなわち、数字部分が整数以外の場合、例えば、小数等の実数の場合には、小数等の実数として数値演算子により数値化すればよい。なお、数字部分と非数字部分を含む識別子の数字部分を数値識別子に変換した場合に、変換された数値識別子と、非数字部分による非数値識別子の順序は、情報処理装置２００内の規則、あるいは、処理部４０の規則として、例えば、メモリ１２、外部記憶装置３４に格納しておけばよい。したがって、例えば、ｆ１が３ａの場合に、'３'×ａのように数値化してもよい。なお、因子が数字を含まない識別子である場合には、数値化したものは、数値化前のものと同一の式表現である。
【０１５７】
次に、情報処理装置２００は、数値化した始めの因子ｆ１と戻り項ｔ２との積を取得し、その結果を戻り項ｔ２とする（Ｆ１０）。そして、情報処理装置１０は、制御をＦ４に戻す。
【０１５８】
例えば、図１２の例では、２回目のＦ４、Ｆ５の処理において、始めの項ｆ１＝（ｂ＋３ｃ）となる。その結果、Ｆ７の処理において、再帰処理が実行される。そして、（）が数値化され、ｆ１＝ｂ＋ｃ×'３'が得られる。
【０１５９】
同様に、入力式ｅ１の第２項の第２因子｛４ｅ＋ｆ｝の処理において、再帰処理が実行され、ｅ×'４'＋ｆが得られる。  
【０１６０】
Ｆ４の判定で、始めの項ｔ１の長さが０である場合、始めの項ｔ１についての処理が完了したので、情報処理装置２００は、制御をＦ１１に進める。そして、情報処理装置２００は、戻り式ｒと、現在までに処理された戻り項ｔ２との和を取得し、その結果を戻り式ｒとする（Ｆ１１）。そして、情報処理装置２００は、制御をＦ２に戻す。
【０１６１】
Ｆ２の判定で、入力式ｅがφの場合には、処理対象の入力式が存在しないので、情報処理装置２００は、制御をＦ１２に進める。そして、情報処理装置２００は、戻り式ｒを出力し（Ｆ１２）、処理を終了する。以上の結果、以下の戻り式ｒが得られる。
【０１６２】
ｒ＝ａ×'３'（ｂ＋ｃ×'３'）＋ｄ｛ｅ×'４'＋ｆ｝
図１３、図１４は、数値計算処理を例示する図である。この処理では、情報処理装置２００は、数値計算処理前の入力式ｅ１の入力を受け、数値計算処理後の戻り式ｒを出力する。
【０１６３】
また、図１５Ａ、図１５Ｂは、情報処理装置２００が、入力式ｅ１＝（ａ×ｂ×'２０
０'×／×ｃ×ｃ'３'＋ａ×ｂ×'３００'×／×ｃ×ｃ×'４'）／×ｅ×ｅ×'３'＋（ａ
×ｂ×'１８０'×／×ｃ×ｃ×'４'）／×ｄ×ｄ×'２'を処理するときの情報処理装置２００の内部状態を例示する遷移テーブルである。
【０１６４】
図１３、図１４の処理では、情報処理装置２００は、処理対象の入力式ｅ１を入力し、式ｒ１、および戻り式ｒ２を宣言する（Ｆ２０）。ここで、式ｒ１は、作業用の記憶領域を示すパラメータである。
【０１６５】
そして、情報処理装置２００は、入力式ｅ１がφか否かを判定する（Ｆ２１）。入力式ｅ１がφでない場合、情報処理装置２００は、始めの項ｔ１を取得し、入力式ｅ１から始めの項ｔ１を削除する。さらに、情報処理装置２００は、戻り項ｔ２を宣言する（Ｆ２２）。なお、戻り項ｔ２は、１（単位元ε）に、初期化する。
【０１６６】
そして、情報処理装置２００は、始めの項ｔ１の積演算を実行し、積演算の結果をｔ１とする（Ｆ２３）。ここで、始めの項ｔ１の積演算とは、始めの項ｔ１に含まれる因子間において、数値が明示されている因子間で乗算を実行することをいう。ただし、Ｆ２３の処理では、始めの項ｔ１に括弧が含まれている場合には、括弧を１つの因子として取り扱う。また、因子中に、除算を示す記号"／"が含まれる場合には、記号"／"の前後の数値（'N'）については除算を実行する。記号"／"は、除算演算子の一例である。
【０１６７】
また、記号"／"の前後に、数値以外の共通の識別子がある場合には、記号"／"の前後の共通の識別子を削除する。つまり、情報処理装置２００は、いわゆる約分を実行する。
【０１６８】
また、始めの項ｔ１に含まれる２つの因子に共通する識別子がべき乗で記述されている
場合には、情報処理装置２００は、指数部分の加算を実行する。また、記号"／"の前後の２つの因子に共通する識別子がべき乗で記述されている場合には、情報処理装置２００は、指数部分の減算を実行する。
【０１６９】
例えば、図１５Ａの例では、以下の通りである。
始めの項ｔ１＝（ａ×ｂ×'２００'×／×ｃ×ｃ'３'＋ａ×ｂ×'３００'×／×ｃ×ｃ×'４'）／×ｅ×ｅ×'３'
始めの項ｔ１の因子は、（）、／×ｅ×ｅ、×'３'に区分される。このうち、／×ｅと×ｅとが約分される。その結果は、以下の通りである。
【０１７０】
始めの項ｔ１＝（ａ×ｂ×'２００'×／×ｃ×ｃ'３'＋ａ×ｂ×'３００'×／×ｃ×ｃ×'４'）×'３'
次に、情報処理装置２００は、始めの項ｔ１に括弧因子があり、かつ、始めの項ｔ１の長さが０でない、という条件が満たされるか否かを判定する（Ｆ２４）。Ｆ２４の条件が満たされる場合、情報処理装置２００は、始めの項ｔ１から始めの因子ｆ１を取得する。そして、情報処理装置２００は、始めの項ｔ１から、始めの因子ｆ１を削除する（Ｆ２５）。Ｆ２５−Ｆ２８の処理は、始めの項ｔ１中の括弧を処理する処理である。
【０１７１】
図１５Ａの例では、以下の通りである。
ｆ１＝（ａ×ｂ×'２００'×／×ｃ×ｃ'３'＋ａ×ｂ×'３００'×／×ｃ×ｃ×'４'）
ｔ１＝'３'
そして、情報処理装置２００は、始めの因子ｆ１が括弧型か否かを判定する（Ｆ２６）。始めの因子ｆ１が括弧型の場合、情報処理装置２００は、括弧内の式表現に再帰処理を実行し、その結果をｆ１とする（Ｆ２７）。図１５Ａ、図１５Ｂの例では、ｆ１＝ａ×ｂ×'６００'＋ａ×ｂ×'１２００'＝ａ×ｂ×'１８００'が得られる（図１５ＢのＬ１参照）。
【０１７２】
一方、Ｆ２６の判定で、始めの因子ｆ１が括弧型でない場合、情報処理装置２００は、制御をＦ２８に進める。そして、情報処理装置２００は、式ｔ２と始めの因子ｆ１との積演算を実行し、その結果を式ｔ２とする（Ｆ２８）。そして、情報処理装置２００は、制御をＦ２４に戻す。
【０１７３】
積演算は、Ｆ２３の場合と同様、数値と数値の乗算である。Ｆ２８の処理でも、Ｆ２３の処理と同様、乗算される戻りの項ｔ２に対して、始めの因子ｆ１の先頭に除算を示す記号／が指定されている場合には、数値間の除算が実行される。また、Ｆ２８の処理で、乗算される戻りの項ｔ２および始めの因子ｆ１の少なくとも一方にべき乗の表現が含まれている場合には、べき乗の底が共通である指数間で指数部分の数値の加算が実行される。
【０１７４】
「乗算される戻りの項ｔ２および始めの因子ｆ１の少なくとも一方」としたのは、べき乗表現ではない因子ｆ１については、底がｆ１であり指数が１であるべき乗とみなすことで、必ずしも戻りの項ｔ２および始めの因子ｆ１の両方がべき乗でなくても、べき乗の演算が実行できるからである。
【０１７５】
また、Ｆ２８の処理で、乗算される戻りの項ｔ２および始めの因子ｆ１の少なくとも一方にべき乗の表現が含まれ、始めの因子ｆ１の先頭に除算を示す記号／が指定されている場合には、べき乗の底が共通である指数間で指数部分の数値の減算が実行される。
【０１７６】
さらにまた、Ｆ２８の処理で、始めの因子ｆ１の先頭に除算を示す記号／が指定され乗算され、戻りの項ｔ２および始めの因子ｆ１の双方に共通する識別子が含まれている場合には、共通の識別子が削除される。すなわち、いわゆる約分が実行される。情報処理装置
２００のＣＰＵ１３は、代数演算部の一例として、ＦＦ２３−２８の処理を実行する。
【０１７７】
一方、Ｆ２４の判定で、始めの項ｔ１に括弧因子がない場合、あるいは、始めの項ｔ１の長さが０である場合には、情報処理装置２００は、制御をＦ２９に進める。そして、情報処理装置２００は、式ｒ１と戻り項ｔ２の和を取得し、その結果を式ｒ１とする（Ｆ２９）。
【０１７８】
図１５Ａ、図１５Ｂの処理例では、以上のＦ２２−Ｆ２９の処理を再帰的に事項した結果、戻りの項ｔ２＝ａ×ｂ×’1800’、始めの項ｆ１＝’3’となり、戻りの項ｔ２＝ａ
×ｂ×’5400’、ｒ１＝ａ×ｂ×’5400’となる（図１５ＢのＬ２参照）。
【０１７９】
また、Ｆ２１の判定で、入力式ｅ１の長さが０である場合に、情報処理装置２００は、制御を図１４のＦ３０に進める。そして、情報処理装置２００は、式ｒ１がφであるか否かを判定する（Ｆ３０）。
【０１８０】
そして、式ｒ１がφでない場合、式ｒ１から始めの項ｔ１を取得し、項ｔ１を式ｒ１から削除する（Ｆ３１）。次に、情報処理装置２００は、式ｒ１中に、数値部分以外の部分について、始めの項ｔ１と等しい他の項があるか否かを判定する（Ｆ３２）。
【０１８１】
例えば、図１５Ｂの例では、２回の再帰処理が終了した後の式の状態（図１５ＢのＬ３）においては、式ｒ１は以下の通りである。
【０１８２】
ｒ１＝ａ×ｂ×'5400'＋ａ×ｂ×'1440'
そして、式ｒ１中に、数値部分以外の部分について、始めの項ｔ１と等しい他の項がある場合、情報処理装置２００は、数値以外の部分が始めの項ｔ１と等しい他の項を式ｒ１から削除する。さらに、数値以外の部分が始めの項ｔ１と等しい他の項と、始めの項ｔ１との間で、数値部分の和演算（加算）を実行する。そして、和演算の結果をｔ１とする（Ｆ３３）。そして、情報処理装置２００は、戻り式ｒ２と始めの項ｔ１との和を取得し、その結果を戻り式ｒ２とする（Ｆ３４）。そして、情報処理装置２００は、制御をＦ３０に戻す。このとき、戻りの式ｒ２は、以下の通りである（図１５ＢのＬ４参照）。
【０１８３】
ｒ２＝ａ×ｂ×'6840'
Ｆ３０の判定で、式ｒ１がφになると、情報処理装置２００は、制御をＦ３５に進める。そして、情報処理装置２００は、戻り式ｒ２を出力する（Ｆ３５）。
【０１８４】
図１６は、識別子の置換処理を例示する図である。この処理では、情報処理装置２００は、数値計算処理前の入力式ｅ１と、置換情報ｅ２の入力を受け、識別子置換後の戻り式ｒを出力する。また、図１７は、情報処理装置２００が、入力式ｅ１＝Ａ×／（Ｂ×Ｃ）を処理するときの情報処理装置２００の内部状態を例示する遷移テーブルである。
【０１８５】
置換情報は、置換前の式表現と置換後の式表現の組みを定義する。例えば、Ａ＝ａという置換情報は、式表現Ａを式表現ａに置換することを指定する。置換情報として複数の置換の指定を定義してよい。例えば、図１７に示す置換情報ｅ２として、Ａ＝ａ＋Ｂ＝ｂ＋Ｃ＝ｃのように、３つの置換の指定がなされている。この指定では、Ａはａに置換され、Ｂはｂに置換され、Ｃはｃに置換される。
【０１８６】
置換処理の用途は、例えば、式表現で数量を表現する場合の単位の変換を例示できる。例えば、ミリメートルで記述された式表現をセンチメートル、メートルのように長さを換算する場合である。その他、面積、体積、重量、角度、時間、速度、力、エネルギー、熱量等の様々な物理量、あるいは情報量等の単位の置換が可能である。
【０１８７】
図１６の処理では、情報処理装置２００は、入力式ｅ１、置換情報ｅ２を入力する（Ｆ４０）。そして、情報処理装置２００は、入力式ｅ１が０であるか、否かを判定する（Ｆ４１）。
【０１８８】
入力式ｅ１が０でない場合、情報処理装置２００は、始めの項ｔ１を取得し、入力式ｅ１から始めの項ｔ１を削除する。さらに、情報処理装置２００は、戻り項ｔ２を宣言する（Ｆ４２）。戻り項ｔ２の初期値は１（単位元ε）とする。
【０１８９】
次に、情報処理装置２００は、始めの項ｔ１の長さが０であるか否かを判定する（Ｆ４３）。始めの項ｔ１の長さが０でない場合、情報処理装置２００は、始めの項ｔ１から始めの因子ｆ１を取得し、始めの項ｔ１から始めの因子ｆ１を削除する（Ｆ４４）。
【０１９０】
次に、情報処理装置２００は、始めの因子ｆ１が括弧であるか否かを判定する（Ｆ４５）。始めの因子ｆ１が括弧型である場合に、情報処理装置２００は、括弧内の式表現について、置換処理を再帰処理として実行し、再帰処理の結果を括弧内に入れて始めの項ｆ１とする（Ｆ４７）。そして、情報処理装置２００は、制御をＦ４８に進める。
【０１９１】
一方、Ｆ４５の判定で、因子が括弧型でない場合、情報処理装置２００は、始めの因子ｆ１が識別子であって、置換情報で指定されている識別子か否かを判定する（Ｆ４６）。始めの因子ｆ１が識別子であって、置換情報で指定されている識別子である場合、情報処理装置２００は、置換情報に基づき、置換前の識別子を置換後の識別子に置換する。そして、情報処理装置２００は、戻りの項ｔ２と置換した結果との積を取得し、取得した積を戻りの項ｔ２とする（Ｆ４８）。そして、情報処理装置２００は、制御をＦ４３に戻す。なお、Ｆ４６の判定で、始めの因子ｆ１が置換情報で指定された識別子でない場合も、情報処理装置２００は、制御をＦ４３に戻す。
【０１９２】
また、Ｆ４３の判定で、始めの項ｔ１の長さが０である場合、情報処理装置２００は、制御をＦ４９に進める。そして、情報処理装置２００は、戻り式ｒと戻りの項ｔ２との積を取得し、取得した積を戻り式ｒとする（Ｆ４９）。そして、情報処理装置２００は、制御をＦ４１に戻す。
【０１９３】
さらに、Ｆ４１の判定で、入力式ｅ１がφである場合に、情報処理装置２００は、制御をＦ５０に進める。そして、情報処理装置２００は、戻り式ｒを出力する（Ｆ５０）。
【０１９４】
例えば、図１７の例では、ｅ１＝Ａ×／（Ｂ×Ｃ）について、置換情報Ａ＝ａ＋Ｂ＝ｂ＋Ｃ＝ｃが指定されている。この場合、入力式ｅ１には、項が１つだけ含まれている。したがって、始めの項ｔ１＝Ａ×／（Ｂ×Ｃ）を取得すると、入力式は、ｅ１＝φとなる。
【０１９５】
さらに、始めの項ｔ１中で、始めの因子ｆ１＝Ａを所得すると、ｔ１＝／（Ｂ×Ｃ）となる。そして、始めの因子ｆ１は、置換情報Ａ＝ａによって、ｆ１＝ａに置換される。さらに、戻りの項ｔ２＝ａとなる。
【０１９６】
次に、／が始めの因子として取得され、置換されることなく戻りの項ｔ２と積演算され、ｔ２＝ａ×／となる。
【０１９７】
同様に、順次、始めの項ｆ１として、（Ｂ×Ｃ）が取得される。（Ｂ×Ｃ）のうち、括弧内の式表現に置換処理が再帰処理として実行される。その結果、Ｂ、およびＣがそれぞれ取得され、順次置換されて戻りの項ｔ２と積演算される。その結果、ｔ２＝ａ×／（ｂ×ｃ）となる。
【０１９８】
図１８は、フィルタ処理を例示する図である。この処理では、情報処理装置２００は、数値計算処理前の入力式ｅ１と、フィルタ識別子ｅ２の入力を受け、識別子置換後の戻り式ｒを出力する。また、図１９Ａ、図１９Ｂは、情報処理装置２００が、入力式ｅ１をフィルタ指定ｂ＋ｃ＋ｄ＋／＋'[０．．．９]'で処理するときの情報処理装置２００の内部状態を例示する遷移テーブルである。ここで、入力式ｅ１＝ａ×（ｂ×ｃ×'２００'×／×ｄ×ｄ×'３'）／×ｅ×ｅ×'３'＋ｆ×（ｂ×ｃ×'１８０'×／×ｄ×ｄ×'４'）／×ｇ×ｇ×'２'である。
【０１９９】
ここで、フィルタ識別子ｅ２には、入力式から削除されない識別子が指定される。複数種類の識別子を削除する場合には、削除する複数の識別子を和演算で組み合わせて指定する。また、[０．．．９]は、数字０から９までを要素する集合を説明するため便宜的に導入した形式である。したがって、数字の指定は、[０．．．９]に限られず、フィルタ指定する数字を個々に列挙してもよい。また、集合の指定が［］に限定される訳でもない。
【０２００】
フィルタ処理の用途は、式表現中で複数の項がそれぞれ異なる因子を含む場合に、例えば、項と項との間の因子の違い無視して式表現を処理したいときに、因子の除去に用いられる。項と項との間の因子の違い無視して式表現を処理したいときとは、例えば、式表現が商品ごとの売り上げの加算値を表す場合に、商品の違いを無視して、売り上げの総計を算出したいときである。この場合に、例えば、商品の種類を示す識別子×商品ごとの売り上げという形式で項が記述され、各商品を加算して形式で式表現が作成される。この場合に、商品の種類を示す識別子を除外して、フィルタ処理で削除することで総計を求めることができる。
【０２０１】
図１８の処理では、情報処理装置２００は、入力式ｅ１とフィルタ識別子ｅ２を入力する（Ｆ６０）。そして、情報処理装置２００は、入力式ｅ１が０であるか、否かを判定する（Ｆ６１）。
【０２０２】
入力式ｅ１が０でない場合、情報処理装置２００は、始めの項ｔ１を取得し、入力式ｅ１から始めの項ｔ１を削除する。さらに、情報処理装置２００は、戻り項ｔ２を宣言する（Ｆ６２）。戻り項ｔ２の初期値は１（単位元ε）とする。
【０２０３】
次に、情報処理装置２００は、始めの項ｔ１の長さが０であるか否かを判定する（Ｆ６３）。始めの項ｔ１の長さが０でない場合、情報処理装置２００は、始めの項ｔ１から始めの因子ｆ１を取得し、始めの項ｔ１から始めの因子ｆ１を削除する（Ｆ６４）。
【０２０４】
次に、情報処理装置２００は、始めの因子ｆ１が括弧であるか否かを判定する（Ｆ６５）。始めの因子ｆ１が括弧型である場合に、情報処理装置２００は、括弧内の式表現について、置換処理を再帰処理として実行し、再帰処理の結果を括弧内に入れて始めの項ｆ１とする（Ｆ６７）。そして、情報処理装置２００は、制御をＦ６８に進める。
【０２０５】
一方、Ｆ６５の判定で、因子が括弧型でない場合、情報処理装置２００は、始めの因子ｆ１が識別子であって、フィルタ識別子ｅ２で指定されている識別子か否かを判定する（Ｆ６６）。始めの因子ｆ１が識別子であって、フィルタ識別子ｅ２で指定されている識別子である場合、情報処理装置２００は、始めの項ｔ１と始めの因子ｆ１との積を取得し、取得した積を戻りの項ｔ２とする（Ｆ６８）。そして、情報処理装置２００は、制御をＦ６３に戻す。
【０２０６】
また、Ｆ６６の判定で、始めの因子ｆ１が置換情報で指定された識別子でないには、情報処理装置２００は、そのまま制御をＦ６３に戻す。その結果、戻り項２に始めの因子ｆ
１の積を追加されないことになる。
【０２０７】
また、Ｆ６３の判定で、始めの項ｔ１の長さが０である場合、情報処理装置２００は、制御をＦ６９に進める。そして、情報処理装置２００は、戻り式ｒと戻りの項ｔ２との積を取得し、取得した積を戻り式ｒとする（Ｆ６９）。そして、情報処理装置２００は、制御をＦ６１に戻す。
【０２０８】
さらに、Ｆ６１の判定で、入力式ｅ１がφである場合に、情報処理装置２００は、制御をＦ７０に進める。そして、情報処理装置２００は、戻り式ｒを出力する（Ｆ７０）。
【０２０９】
例えば、図１９Ａ、図１９Ｂでは、以下のように処理されている。
入力式ｅ１＝ａ×（ｂ×ｃ×'２００'×／×ｄ×ｄ×'３'）／×ｅ×ｅ×'３'＋ｆ×（ｂ×ｃ×'１８０'×／×ｄ×ｄ×'４'）／×ｇ×ｇ×'２'に対して、
ｔ１＝ａ×（ｂ×ｃ×'２００'×／×ｄ×ｄ×'３'）／×ｅ×ｅ×'３'
ｆ１＝ａとなる。
【０２１０】
しかし、識別子ａは、フィルタ識別子に指定されていないので、戻り項ｔ２に和演算されない。
【０２１１】
次に、ｔ１＝（ｂ×ｃ×'２００'×／×ｄ×ｄ'×３'）／×ｅ×ｅ×'３'
ｆ１＝（ｂ×ｃ×'２００'×／×ｄ×ｄ×'３'）となる。ｆ１は、再帰処理される。そして、括弧内の識別子のうち、識別子ｅは、フィルタ識別子で指定されていない。その結果、ｅ以外の因子が維持される。したがって、戻りの項ｔ２＝ｂ×ｃ×'２００'×／×ｄ×ｄ×'３'となる。始めの項ｔ１が
ｔ１＝ｆ×（ｂ×ｃ×'１８０'×／×ｄ×ｄ×'４'）／×ｇ×ｇ×'２'についても同様である。この場合には、識別子ｆ、ｇ以外の識別子が維持される。以上の結果、戻りの式ｒ２は、以下の通りとなる。
【０２１２】
ｒ２＝ｂ×ｃ×'２００'×／×ｄ×ｄ×'３'＋ｂ×ｃ×'１８０'×／×ｄ×ｄ×'４'×'２'
【０２１３】
以上述べたように、本実施形態の情報処理装置２００によれば、式表現中の数値の記号を明示的な数値に変換する。そして、式表現中で、数値と数値以外の部分を区別して、加算、積、乗算、べき乗等の演算を実行できる。その結果、例えば、事物の識別子と、その事物に関連するする量を積演算し、複数種類の事物に関連する数量を事物の種類ごとに数式で加算できるようになる。また、減算は、負数の加算で実現できる。例えば、商品の売り上げ、商品サービスの見積もり額、作業の工数等、様々な事物と事物に関連する量を管理できる。例えば、売り上げ＝商品１×売り上げ額＋商品２×売り上げ額＋・・・のように、記述し、同一商品ごとに、売り上げをまとめることができる。
【０２１４】
また、例えば、除算を表す識別子"／"を導入することにより、除算を表す識別子"／"の前後で、共通の識別子を削除し、いわゆる約分を実行できる。例えば、売り上げ＝商品１×'50'×ＹＥＮ／個×個×'10'＋・・・のように、単価と個数で示される売り上げは、売り上げ＝商品１×'50'×ＹＥＮ×'10'＋・・・＝商品１×'500'×ＹＥＮ＋・・・のよう
に、簡略化した売り上げの式表現に変更できる。
【０２１５】
また、例えば、べき乗を示す式表現を導入することで、共通の識別子をそれぞれ底とするべき乗同士の乗算または除算を指数同士の加算、減算として処理できる。
【０２１６】
さらに、本情報処理装置２００は、図１６のような置換関数の処理によって、式表現中
の項、因子等を置換し、例えば、物理量等の単位換算を実行できる。さらに、本情報処理装置２００は、図１８のようなフィルタ関数の処理によって、事物の数量を記述した式表現中で、不要な因子を削除することで、複数種類の事物の相違を無視した合計値の算出を実行できる。
【０２１７】
情報処理装置２００は、以上のような処理を従来のようなデータ構造が固定されたデータベースによることなく、柔軟な式表現の記述の対して実行できる。その結果、情報処理装置２００は、例えば、管理対象の事物に関する情報を極めて柔軟な形式でメモリ１２、外部記憶装置３４等に保持する一方、管理対象に要求される様々な情報処理機能を実現できる。
【０２１８】
上記第２実施形態では、減算は、負数の加算として実現した。しかし、このような処理に代えて、減算を示す演算子を用いてもよい。例えば、ａn−ａｍ＝ａ×’ｎ’−ａ×’
ｍ’＝ａ×‘ｎ−ｍ’のように演算を実現してもよい。ただし、式表現自体は、和演算子と積演算子で記述されるため、別途減算を示す演算子を導入することにより、減算を示す演算子を実行する処理が必要となる。したがって、式表現との整合性を考慮する場合には、上記第２実施形態のように負数の加算によって減算を実現することが望ましい。
【０２１９】
《第３実施形態》
図２０、図２１を参照して、第３実施形態に係る情報処理装置２００について説明する。上記第１実施形態、および第２実施形態では、情報処理装置２００が有するハードウェア構成および数値因子化処理、数値計算処理、置換処理、および、フィルタ処理について説明した。本実施形態では、第１実施形態、および第２実施形態で説明した情報処理装置２００を適用した応用装置の例を説明する。したがって、基本的には、第１実施形態、および第２実施形態の構成要素は、そのまま第３実施形態でも用いられる。
【０２２０】
図２０は、第３実施形態に係る情報処理装置２００の処理を例示するフローチャートである。図２０の処理では、情報処理装置２００は、種々の事物に関する情報の入力を例えば入力部１１から受け、式表現の形式でメモリ１２、または外部記憶装置３４に格納する。この場合の事物は、例えば、集合と、集合に含まれる事物を特定する識別子と、その事物の属性値と、その事物の数量と、集合の数量を含む。
【０２２１】
説明のための簡単な例として、商店で販売されている商品について考える。この商店では、野菜かごと、野菜セットが販売されている。野菜かごの内容は、人参が２本と、リンゴ（Ａ種）が３個であるとする。また、人参は１本１００円であり、リンゴは１個２００円であるとする。
【０２２２】
また、野菜セットの内容は、卵が６０個、ハム３パック、リンゴ（Ｂ種）４個である。また、卵は、１２個３００円であり、ハムは１パック３００円であり、リンゴ（Ｂ種）は、１個１８０円である。
【０２２３】
今、野菜かごを３かごと、野菜セットを２セット購入する場合の費用を考える。式表現では、以上の状況は、以下の式ＡＰ１で表すことができる。
【０２２４】
野菜かご×(人参×100円×/×本×2本+リンゴ×200円×/×1個×3個)/×かご×3かご+
野菜セット×(たまご×3０0円×/×12個×60個+ハム×300円×/×1パック×3パック+リンゴ×180円×/×1個×4個)/×セット×2セット・・・（数ＡＰ１）
【０２２５】
ここで、野菜かご、野菜セット等は、集合を識別する情報ということができる。また、”野菜かご×”に続く第１の括弧内の情報は、集合”野菜かご”の構成要素ということができる。したがって、人参、リンゴ等の物品名は集合”野菜かご”の構成要素を識別する情報ということができる。また、“人参×100円×/×本”で指定される“１００円”は、構成要素の属性値ということができる。
【０２２６】
図２０のように、情報処理装置２００は、まず、数ＡＰ１のような式表現の入力を受け付ける（Ｆ１０１）。このような式表現は、例えば、テキストエディタで情報処理装置２００に入力してもよい。また、出力部１４、例えば、表示装置上のグラフィカルユーザインターフェースを用いて、専用の入力画面を作成し、入力部１１を通じて式表現を情報処理装置２００に入力できるようにしてもよい。また、例えば、紙面に記述された情報をスキャナから読み取り、ＯＣＲ（Optical Character Reader）による文字列に変換して情報処理装置２００に入力するようにしてもよい。また、情報処理装置２００は、通信部３２を介して、ネットワーク上の他の情報処理装置から入力を受け付けるようにしてもよい。
【０２２７】
図２０の処理では、情報処理装置２００は、このような式表現から、ユーザが着目する事物、あるいは、集合に関する情報を切り出し、数値因子化し、その事物に関する属性値を処理する。例えば、購入する複数の商品中の特定の商品の属性値（例えば、商品の単価）に基づく特徴量（合計の購入額等）を算出する。そこで、情報処理装置２００は、次に、注目する事物あるいは物品の指定を受け付ける（Ｆ１０２）。注目する事物あるいは物品の指定は、入力部１１、例えば、キーボード等から入力を受け付けるようにすればよい。ただし、通信部３２を介して、ネットワーク上の他の情報処理装置から入力を受け付けるようにしてもよい。情報処理装置２００のＣＰＵ１３は、指定対象情報の入力を受け付ける手段の一例として、Ｆ１０２の処理を実行する。
【０２２８】
例えば、情報処理装置２００は、上記数ＡＰ１の例では、”リンゴ”の指定を受け付ける。すなわち、リンゴのような商品の指定が事物の指定の一例である。なお、事物の指定としては、例えば、提供されるサービスの種類等も例示できる。
【０２２９】
次に、情報処理装置２００は、注目する事物に関する式表現を切り出す（Ｆ１０３）。例えば、Ｆ１０２の処理で、”リンゴ”の指定を受け付けた場合、数ＡＰ１からリンゴに関する式表現を取得する。このように、数ＡＰ１のような式表現から特定の識別子（例えば、”リンゴ”）に関連する式表現を取得する演算を分割写像という。分割写像として、図５Ａ、図５Ｂに示した商演算処理を例示できる。ここでは、数ＡＰ１を商演算される式表現、例えば、"リンゴ"を商演算する因子として、図５Ａに示した商演算を実行する。すると、情報処理装置２００は、分割写像の結果として、リンゴに関連する以下の数ＡＰ２を得る。
【０２３０】
野菜かご×(リンゴ×200円×/×1個×3個)/×かご×3かご+野菜セット×(リンゴ×180
円×/×1個×4個)/×セット×2セット・・・（数ＡＰ２）
【０２３１】
次に、情報処理装置２００は、Ｆ１０３の処理で求めた式表現を数値因子化する（Ｆ１０４）。数値因子化処理に関しては、第２実施形態の図１１と同様である。すると、情報処理装置２００は、式表現数ＡＰ３を得る。情報処理装置２００のＣＰＵ１３は、属性値に変換する手段の一例として、Ｆ１０２の処理を実行する。
【０２３２】
野菜かご×(リンゴ×円×'200'×/×個×個×'3')/×かご×かご×'3'+野菜セット×(
リンゴ×円×'180'×/×個×個×'4')/×セット×セット×'2'・・・（数ＡＰ３）
【０２３３】
次に、情報処理装置２００は、集合の区別をなくし、集合によらず、注目する事物の情報を取得する。例えば、数ＡＰ３の例では、野菜かご、および野菜セットの区別をなくす。そのため、数ＡＰ３を入力式とし、リンゴ＋／＋円＋個＋かご＋セット＋'[0...9]'をフィルタ識別子として、フィルタ処理を実行する（Ｆ１０５）。
【０２３４】
次に、情報処理装置２００は、数値因子化した式表現を基に数値計算を実行する（Ｆ１０６）。数値計算処理に関しては、第２実施形態の図１３、図１４と同様である。情報処理装置２００のＣＰＵ１３は、特徴量を算出する手段の一例として、Ｆ１０６の処理を実行する。
【０２３５】
そして、情報処理装置２００は、得られた数値計算結果を出力部１４に出力する（Ｆ１０７）。ただし、出力先は、図２０の処理を実行する関数の戻り値として定義されるメモリ１２上の領域でもよい。また、出力先は、例えば、外部記憶装置３４上のファイルであってもよい。また、出力先は、例えば、通信部３２を介して接続されるネットワーク上の他の情報処理装置でもよい。
【０２３６】
以上の処理の結果、例えば、以下の数ＡＰ３のような結果が得られる。その結果、上記の数ＡＰ１で定義される式表現中でリンゴの購入分は、３２４０円であることが分かる。
【０２３７】
なお、以上の説明では、数ＡＰ３の式表現によって、リンゴに関する価格を算出する例を示したが、情報処理装置２００の処理が数ＡＰ１に限定される訳ではない。例えば、商品の見積もり、サービスの見積もり、請負作業の見積もり、原材料の見積もり等、式表現を用いて記述される様々な事物あるいは物品、事物の集合、あるいは物品の集合、事物の属性値、あるいは物品の属性値等、様々な対象に関して、図２０のような処理を実行できる。
【０２３８】
したがって、ユーザは、入力部１１、通信部３２その他、様々な装置を介して入力される事物、例えば物品等に関する情報を式表現で記述し、メモリ１２、外部記憶装置３４に格納し、管理することができる。例えば、管理している複数の集合に含まれる特定の事物に関する属性値の合計を算出できる。
【０２３９】
図２１に、式表現で記述される集合に属する事物の属性値の合計値を求める処理を例示する。図２１で、Ｆ１１２Ａ、Ｆ１１３Ａ、Ｆ１１３Ｂ以外の処理は、図２０と同様である。そこで、図２０と同一の処理については、説明を省略する。
【０２４０】
図２１では、情報処理装置２００は、例えば、注目する集合の指定を受け付ける（Ｆ１１２Ａ）。そして、そして、情報処理装置２００は注目する集合に関する式表現を切り出す（Ｆ１１３Ａ）。さらに、情報処理装置２００は、Ｆ１１３Ａで得られた式表現（集合）中で、事物の区別を削除するため、フィルタ処理を実行する（Ｆ１１３Ｂ）。
【０２４１】
例えば、数ＡＰ１の例では、情報処理装置２００は、Ｆ１１２Ａにおいて、集合として、野菜かごの指定を受ける。そして、情報処理装置２００は、Ｆ１１３Ａにおいて、例えば、数ＡＰ１を商演算される式表現、"野菜かご"を商演算する因子として、図５Ａに示した商演算を実行する。すると、情報処理装置２００は、以下の数ＡＰ４を得る。
【０２４２】
野菜かご×(人参×100円×/×本×2本+リンゴ×200円×/×1個×3個)/×かご×3かご・・・（数ＡＰ４）
【０２４３】
さらに、情報処理装置２００は、数ＡＰ４に対して、フィルタ後に残す識別子として、'野菜かご+/+円+個+かご+かご+[0...9]'を指定して、フィルタ処理を実行する。その結果、数ＡＰ４の事物の区別、例えば、にんじん、リンゴが削除される。さらに、情報処理装置２００は、数値因子化処理、数値計算処理、および出力を実行し、以下の処理結果を得る。すなわち、野菜かごの合計が２４００円であることが分かる。
【０２４４】
野菜かご×円×'2400'・・・（数ＡＰ５）
【０２４５】
以上述べたように、図２１によれば、注目する集合に含まれる事物の属性値の合計値を算出できる。図２１では、数ＡＰ１で示される式表現中の"野菜かご"の合計を求めたが、情報処理装置２００の処理が、数ＡＰ１に限定される訳ではない。
【０２４６】
すなわち、情報処理装置２００は、式表現のように、項の和、あるいは項の集合と、項に含まれる因子とによって、従来のデータベースシステムのようにデータ構造したデータとデータへの情報処理を行う代わりに、柔軟な構造で様々な事物、例えば物品に関する情報のコンピュータ上の処理を可能とする。第３実施形態では、さらに、そのような情報のうち、数値因子の部分を明示的な記述とすることで、様々な事物あるいは物品に関連する数値上の処理を可能とする。例えば、情報処理装置２００は、物品の個数、価格、あるいはそれらの集計値に関する取り扱いを可能とする。したがって、情報処理装置２００によれば、従来、人がメモを取り、あるいはコンピュータ上の固定のデータ構造を用いて行っていた管理処理が、式表現による柔軟な形態で実行可能となる。
【０２４７】
したがって、情報処理装置２００が提供する情報処理機能は、従来のデータ構造が固定されたデータベースを用いる場合と比較して、飛躍的な設計自由度と、情報処理の改造容易化を実現する。例えば、数ＡＰ１のような式表現で記述された情報から、簡易に管理対象の特徴量、例えば、特定商品の合計金額、特定の商品集合の合計金額等を算出できる。
【０２４８】
《第４実施形態》
図２２を参照して、第４実施形態に係る情報処理装置２００について説明する。上記第３実施形態では、第１実施形態の情報処理装置、および第２実施形態で説明した情報処理装置２００を適用した応用装置の例として、式表現で表現される事物の特徴量の１つとして、特定商品の価格、特定の商品集合の価格を算出する処理を例示した。第４実施形態では、式表現を事物の設計データに適用した情報処理装置２００を例示する。したがって、基本的には、第１実施形態から第３実施形態の構成要素は、そのまま第４実施形態でも用いられる。
【０２４９】
図２２は、第４実施形態に係る情報処理装置２００の処理、例えば、設計対象の特徴量の算出処理を例示する図である。図２２の処理では、情報処理装置２００は、種々の設計対象に関する情報の入力を例えば入力部１１から受け、式表現の形式でメモリ１２、または外部記憶装置３４に格納する。この場合の設計対象は、例えば、建築物、機械、機器、容器等の構造物、電気回路、電子回路、半導体の構造、化学物質の構造、薬品の構造、分子の構造、コンピュータ上でシミュレーションされるシミュレーション対象のモデル構造等、特に限定はない。ただし、実施例１、２と同様、設計対象である事物、物品等は、例えば、集合と、集合に含まれる事物を特定する識別子と、その事物の属性値と、その事物の数量と、集合の数量を含む。実施例３では、構造物の特徴量の算出を例示する。すなわち、以下では、一例として、設計対象の３次元オブジェクトを処理する処理例を説明する。ここで、３次元オブジェクトは、体積１２００立方ミリメートル、直方体の側面が縦５センチメートル、横１２ミリメートルであると想定する。以下、このような直方体について、側面からの奥行きを求める。また、以下では、設計対象の特徴量を特性ともいう。特性は、例えば、事物の属性値、物品の属性値等を含み、例えば、設計上の主要な管理項目となる情報等として例示できる。
【０２５０】
図２２のように、情報処理装置２００は、設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性等、特徴量示す式表現を入力し、式表現をメモリに格納する（Ｆ１２１）。
【０２５１】
さらに、奥行きを記述する式表現中の項および因子の式を設定する。ここでは、例えば、設計対象を示す３次元オブジェクトについて、設計対象に含まれる要素の識別子、要素の属性値を例示すると以下式数ＡＰ６の通りである。
【０２５２】
体積＝１００ｍｍ^3＋縦＝５ｃｍ＋横＝１２ｍｍ＋ｃｍ＝１０ｍｍ（数ＡＰ６）
【０２５３】
ここで、例えば、体積＝１２００ｍｍ^3＋縦＝５ｃｍ＋横＝１２ｍｍ等は要素の属性値ということができる。さらに、ｃｍ＝１０ｍｍは、単位の換算の定義を示す式表現である。このような設計対象に含まれる要素の識別子、要素の属性値等については、特徴量を求める処理実行時に、情報処理装置２００が入力部１１から入力を受け付けるようにしてもよい。また、情報処理装置２００は、事前に設計対象を記述した式表現をデータベース（例えば、図１０のデータ部４５、外部記憶装置３４等）に格納しておき、特徴量を求める処理実行時に、データベースから設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係等を読み出すようにしてもよい。なお、データベースには、式表現で設計対象を記述して置けばよい。
【０２５４】
次に、情報処理装置２００は、特徴量を求める式表現の入力を受け付ける（Ｆ１２２）。例えば、体積、側面の縦と横の寸法が既知の直方体について、奥行きは、以下の式数ＡＰ７で記述できる。この奥行きの式表現は、要素と構造との関係と呼ぶこともできる。情報処理装置２００のＣＰＵ１３は、指定対象情報の入力を受け付ける手段として、Ｆ１２２の処理を実行する。
【０２５５】
体積×／（縦×横）・・・（数ＡＰ７）
【０２５６】
次に、情報処理装置２００は、注目する式表現中の項、因子の式表現を取得し、置換処理で特徴量の式表現に設定する（Ｆ１２３）。式数ＡＰ７の例では、項が１つの式表現であるので、式数ＡＰ７に含まれるそれぞれの因子に対して、具体的な式表現を設定することになる。数ＡＰ７の各因子に設定すべき式表現は、式数ＡＰ６で与えられている。そこで、式数ＡＰ６で与えられる各要素の式表現で、式数ＡＰ７の各因子を置換すればよい。置換としては、情報処理装置２００は、第２実施形態で説明した置換処理（図１６）を実行すればよい。情報処理装置２００は、置換処理によって、式数ＡＰ８を得る。
【０２５７】
１２００ｍｍ^3／（５ｃｍ×１２ｍｍ）・・・（数ＡＰ８）
【０２５８】
次に、情報処理装置２００は、式表現中の単位を換算するための置換処理を実行する（Ｆ１２４）。置換処理のパラメータは、式数ＡＰ６中のｃｍ＝１０ｍｍで指定される。単位換算の結果、情報処理装置２００は、式数ＡＰ９を得る。
【０２５９】
１２００ｍｍ^3／（５０ｍｍ×１２ｍｍ）・・・（数ＡＰ９）
【０２６０】
さらに、情報処理装置２００は、式表現に対して、数値因子化処理を実行する（Ｆ１２５）。数値因子化処理は、第２実施形態で説明した数値因子化処理（図１１）を実行すればよい。数値因子化処理の結果、情報処理装置２００は、式数ＡＰ１０を得る。情報処理装置２００のＣＰＵ１３は、構成要素の属性値に変換する手段の一例として、Ｆ１２２およびＦ１２４の処理を実行する。
【０２６１】
ｍｍ×^3×'1200'×／（ｍｍ×'50'×ｍｍ×'12'）・・・（数ＡＰ１０）
【０２６２】
さらに、情報処理装置２００は、数値因子化された式表現に対して、数値計算処理を実
行する（Ｆ１２６）。情報処理装置２００のＣＰＵ１３は、特徴量を算出する手段の一例として、Ｆ１２２およびＦ１２６の処理を実行する。
【０２６３】
そして、情報処理装置２００は、求めた特徴量を出力する（Ｆ１１７）。すなわち、式数ＡＰ１０の演算結果として、奥行き２ｍｍが出力される。なお、このとき因子ｍｍ×^3と因子／（ｍｍ×'50'×ｍｍ×'12'）との間で識別子であるｍｍの約分が実行される。
【０２６４】
以上述べたように、第４実施形態に係る情報処理装置２００は設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性を示す式表現の入力を受け付ける。また、情報処理装置２００は、図１０のデータ部４５等で例示されるデータベースに、設計対象の設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性、属性値等示す式表現を格納しておく。また、要素は識別子で特定される。ただし、情報処理装置２００は、ネットワーク上の他の情報処理装置から、設計対象の設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性、属性値等示す式表現を取得してもよい。
【０２６５】
そして、情報処理装置２００は、構造物の特徴量を記述した式表現を受け付ける。この場合に受け付ける式表現は、項、因子等の要素に自然言語等を含む識別子を用いて記述してよい。そして、情報処理装置２００は、自然言語等を項、因子等の要素に含む構造物の特徴量の式表現を、構造物の要素の属性値を用いた式表現に置換する。さらに、情報処理装置２００は、単位換算、数値因子化処理、および数値計算処理を実行することにより、構造物の特徴量を算出することができる。
【０２６６】
すなわち、第４実施形態の情報処理装置２００は、自然言語等によって記述される設計対象の構造、設計対象に含まれる要素の識別子、要素の属性値、要素と構造との関係、設計対象の特性等示す式表現をメモリ１２、外部記憶装置３４等に格納しておき、データベースを構築することができる。そして、構築された設計対象を記述するデータベースから構造物の式表現に含まれる要素の属性値を取得し、構造物の特徴量を出力できる。
【０２６７】
以上のような処理は、構造物に限定される訳ではなく、電気回路、電子回路、半導体の構造、化学物質の構造、薬品の構造、分子の構造、コンピュータ上でシミュレーションされるシミュレーション対象のモデル構造等、様々な対象に適用できる。
【０２６８】
《第５実施形態》
図２３を参照して、第５実施形態に係る情報処理装置２００について説明する。図２３のように、第５実施形態に係る情報処理装置２００は、処理部４０とデータ部４５を有する。ただし、基本的には、第１実施形態から第４実施形態で説明した構成要素は、そのまま第５実施形態でも用いることができる。
【０２６９】
また、図２３では省略しているが、第２実施形態の図９と同様に、情報処理装置２００は、入力部１１、出力部１４、通信３２、外部記憶装置３４、着脱可能記憶媒体アクセス装置３６等を接続してもよい。ただし、入力部１１、出力部１４、通信３２、外部記憶装置３４、着脱可能記憶媒体アクセス装置３６等は、必須の構成ではなく、情報処理装置２００に要求される仕様にしたがって、適宜設ければよい。
【０２７０】
処理部４０の構成は、第１実施形態から第４実施形態と同様である。処理部４０の機能は、例えば、ＣＰＵ１３がメモリ１２上のコンピュータプログラムを実行することで実現される。処理部４０は、データ部４５内の式表現に対して、第１実施形態から第４実施形態で説明した処理と同様の処理を実行する。
【０２７１】
また、例えば、処理部４０は、代数演算部４０Ａを有する。代数演算部４０Ａは、因子の列として積演算子で結合される数値識別子間で乗算を実行し、前記項の組み合わせに対して数値識別子間で加算を実行する。代数演算部４０Ａの処理は、例えば、第２実施形態の図１３、図１４で例示される。
【０２７２】
データ部４５は、記憶部の一例であり、式表現で記述される対象情報を格納する。データ部４５の構成は、第１実施形態から第４実施形態と同様である。
【０２７３】
例えば、データ部４５は、メモリ１２、外部記憶装置３４等に構築される。ただし、データ部４５としては、外部記憶装置４５を用いなくてもよい。また、外部記憶装置４５に代えて、通信部３２を介して接続されるネットワーク上の他の情報処理装置の外部記憶装置を用いてもよい。
【０２７４】
ここで、例えば、データ部４５に格納される対象情報は、識別子と、因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される。また、識別子は、数値を表す数値識別子を含む。
【０２７５】
以上述べたように、情報処理装置２００は、処理部４０とデータ部４５とによって、第１実施形態から第３実施形態と同様の処理を実行する。
【０２７６】
情報処理装置２００が、他の情報処理装置と式表現等の情報を授受するには、例えば、情報処理装置２００に、通信部３２を接続し、通信部３２を介して、他の情報処理装置と通信すればよい。情報処理装置２００は、通信部３２から受信した式表現等の情報をデータ部４５に格納すればよい。また、情報処理装置２００は、代数演算等の加工を実行した式表現等の情報を通信部３２を介して、他の情報処理装置と出力すればよい。
【０２７７】
情報処理装置２００に、着脱可能記憶媒体アクセス装置３６が接続されている場合には、着脱媒体との間で式表現等の情報を授受すればよい。また、情報処理装置２００に、入力部１１、出力部１４が接続されている場合には、情報処理装置２００は、入力部１１から式表現等の情報を入力し、出力部１４に加工した式表現等の情報を出力すればよい。
【０２７８】
したがって、少なくとも、代数演算部４０Ａを含む処理部４０と、データ部４５とよって、情報処理装置２００は機能し、第１実施形態から第４実施形態で説明したものと同様、式表現に対する代数演算処理を実行する。したがって、本実施形態の情報処理装置２００は、従来のようにデータモデルを固定することなく、様々な事物を式表現で記述し、データ部４５に格納し、代数演算部４０Ａの処理の含む、式表現に対する処理を実行することができる。
【０２７９】
以下、情報処理装置２００が式表現を代数演算式に変換して実行する処理を例示する。ここでは、単価・数量を基に、処理対象（以下、オブジェクトともいう）を再帰的構造によって記述する。ここで、再帰的構造とは、例えば、式表現の第１の括弧“（）”による項の集合を階層的に記述した構造、第２の括弧“｛｝”による項の並びを複数階層に渡って記述した構造をいう。なお、第１の括弧“（）”による項の集合中の項の順序の入れ替えは可能であるが、第２の括弧“｛｝”による項の並びにおいて、項の順序の入れ替えはできない。再帰的構造は、階層的構造ということもできる。
【０２８０】
以下の処理では、情報処理装置２００は、再帰的構造によって記述されたオブジェクトを、階層別、オブジェクト別等で計算する。ここでは、以下のような商品、すなわち、買
い物セット１と買い物セット２を販売、あるいは購入する場合と想定する。
【０２８１】
買い物セット１は２セットある。買い物セット１には、たまごと、ハムと、リンゴが含まれている。買い物セット１のたまご（３００円／１２個）は、６０個ある。買い物セット１のハムは、ロースハム（３００円／１パック）が３パックと、生ハム（５００円／１パック）が１パックある。買い物セット１のリンゴは、青森産（１８０円/個）が１個、
宮城産（１５０円/個）が１個である。
【０２８２】
一方、買い物セット２は、３セットある。買い物セット２には、梨とリンゴが含まれる。買い物セット２のなしは、山梨産（１２０円/個）が２個、山形産（１００円/個）が３個である。買い物セット２のリンゴは、青森産（１８０円/個）が４個、福島産（２００円/個）が５個である。
以上の商品を式表現で記述すると、以下の数ＦＭＬ１で表すことができる。
【０２８３】
買い物セット１×(たまご×300円×/×12個×60個+ハム×(ロース×300円×/×1本×2
本+生×500円×/×1パック×1パック)+リンゴ×(青森産×１８０円×/×個×1個+宮城産
×150円×/×個×1個))/×セット×2セット+買い物セット２×(梨×(山梨産×120円×/×1個×2個+山形産×100円×/×1個×3個)+リンゴ×(青森産×１８０円×/×個×４個+福島産×200円×/×個×5個))/×セット×3セット・・・（数ＦＭＬ１）
【０２８４】
このような商品を記述する式は、例えば、入力部１１を含むユーザインターフェースから、ユーザが入力するようにしてもよい。ここでは、情報処理装置２００が処理する情報は、数ＦＭＬ１のように式表現で記述され、メモリ１２等に格納されているとする。
【０２８５】
（Ａ）リンゴの合計金額を求める処理
ここで、情報処理装置２００が、メモリ１２に格納された数ＡＰ２１の式表現からリンゴの合計金額を求める処理は、以下の通りである。
（Ａ１）情報処理装置２００は、分割写像により、数ＦＭＬ１から”リンゴ”で式表現を切り出す。分割写像は、第３実施形態と同様に、商演算を用いて実現される。切り出された式表現は、数ＦＭＬ２のようになる。
【０２８６】
買い物セット１×(リンゴ×(青森産×１８０円×/×個×1個+宮城産×150円×/×個×1個))/×セット×2セット+買い物セット２×(リンゴ×(青森産×１８０円×/×個×４個+
福島産×200円×/×個×5個))/×セット×3セット・・・（数ＦＭＬ２）
【０２８７】
（Ａ２）情報処理装置２００は、数値化処理を実行する。数値化処理は、図１１に例示したものと同様である。数値化された式表現（代数演算式）は以下の通りである。
【０２８８】
買い物セット１×(リンゴ(青森産×'180'×円×/×個×'1'×個+宮城産×'180'×円×/×個×'1'×個))/×セット×'2'×セット+買い物セット２×(リンゴ(青森産×'180'×円
×/×個×'4'×個+福島産×'200'×円×/×個×'5'×個))/×セット×'3'×セット・・・（数ＦＭＬ３）
【０２８９】
（Ａ３）情報処理装置２００は、フィルタ処理により、リンゴの金額の判定に用いない識別子を除去する。すなわち、情報処理装置２００は、フィルタ後に残す識別子として、'リンゴ+/+円+個+かご+セット+[0...9]'を指定して、数ＦＭＬ３の代数演算式にフィルタ処理を実行する。なお、フィルタ処理で指定さされる、フィルタ後に残す識別子は、ユーザが指定するようにしてもよい。また、例えば、「リンゴの合計金額を求める処理」を実行する場合に、リンゴの識別子を自動選択するとともに、セットのように集合を示す識別子、円、個のように単位を示す識別子、および数字を示す識別子[0...9]を初期値として
情報処理装置２００がメモリ１２等に保持するようにしてもよい。フィルタ処理は、図１８に示したものと同様である。フィルタ処理の結果は、以下の通りである。
【０２９０】
(リンゴ×('180'×円×/×個×'1'×個+'150'×円×/×個×'1'×個))/×セット×'2'
×セット+(リンゴ×('180'×円×/×個×'4'×個+'200'×円×/×個×'5'×個))/×セッ
ト×'3'×セット・・・（数ＦＭＬ４）
【０２９１】
（Ａ４）情報処理装置２００は、数ＦＭＬ４に対して、数値計算処理を行う。数値計算処理は、図１３、図１４に示したものと同様である。数値計算書の結果は、(リンゴ×円
×'330')×'2'+(リンゴ×円×'1720')×'3'=リンゴ×円×'5490'となる。すなわち、数ＦＭＬ１で記述される式表現中のリンゴの合計額は５４９０円となる。
【０２９２】
（Ｂ）リンゴの産地別の合計金額を求める処理
福島産、青森産、宮城産のリンゴのそれぞれのトータル金額を求める処理は以下の通りである。
【０２９３】
（Ｂ１）情報処理装置２００は、分割写像により”リンゴ×福島産”（リンゴかつ福島産を含んだ部分集合を取得の意味）で、数ＦＭＬ１から式表現を切り出す。分割写像によって切り出された式表現は、以下の通りである。
【０２９４】
買い物セット２×リンゴ×(福島産×200円×/×個×5個)/×セット×3セット・・・（
ＦＭＬ１２）
【０２９５】
（Ｂ２）情報処理装置２００は、数値化処理を実行する。数値化された式表現（代数演算式）は以下の通りである。
【０２９６】
買い物セット２×リンゴ×(福島産×'200'×円×/×個×'5'×個)/×セット×'3'×セ
ット・・・（ＦＭＬ１３）
【０２９７】
（Ｂ３）情報処理装置２００は、フィルタ処理により、福島産のリンゴの金額の判定に用いない識別子を除去する。すなわち、情報処理装置２００は、フィルタ後に残す識別子として、'リンゴ+福島産+/+円+個+セット+[0...9]'を指定して、数ＦＭＬ１３の代数演算式にフィルタ処理を実行する。フィルタ処理の結果は、以下の通りである。
【０２９８】
リンゴ×(福島産×'200'×円×/×個×'5'×個)/×セット×'3'×セット・・・（ＦＭ
Ｌ１４）
【０２９９】
（Ｂ４）情報処理装置２００は、数ＦＭＬ１４に対して、数値計算処理を行う。数値計算書の結果は、リンゴ×福島産×'3000'×円となる。すなわち、福島産のリンゴの合計額は３０００円となる。
【０３００】
（Ｃ）同様に、青森産のリンゴについて、情報処理装置２００は、リンゴ×青森産×'2340'×円を求めることができる。
【０３０１】
（Ｄ）同様に、宮城産のリンゴについて、情報処理装置２００は、リンゴ×宮城産×'150'×円を求めることができる。
【０３０２】
（Ｅ）さらに、（Ｂ４）、（Ｃ）、（Ｄ）の処理が終わった後に、リンゴの合計金額、あるいは、福島産、青森産、宮城産のリンゴの合計金額は、次のように、求めることができる。
【０３０３】
（Ｅ１）情報処理装置２００は、（Ｂ４）、（Ｃ）、（Ｄ）で得られた式表現（代数演
算式）を和演算子で結合する。
【０３０４】
リンゴ×福島産×'3000'×円+リンゴ×青森産×'2340'×円+リンゴ×宮城産×'150'×
円・・・（数ＦＭＬ１５）
【０３０５】
（Ｅ２）情報処理装置２００は、数ＦＭＬ１５に対して、数値計算処理を行う。その結果、リンゴ×'5490'×円が得られ、リンゴの合計金額は、５４９０円と計算される。
【０３０６】
以上述べたように、本実施形態の情報処理装置２００によれば、数ＦＭＬ１のような事物、例えば、複数の買い物セットに含まれる商品構成、単価、および個数を階層的に記述した式表現に対して、（Ａ）のように、リンゴを特定して合計金額を求めることができる。一方、（Ｂ４）（Ｃ）（Ｄ）のように、一旦、福島産、青森産、宮城産のように種別が分類されて商品の金額を示す式表現（代数演算式）が得られている場合に、これらの式表現を和演算子で結合することで、種類別の合計を商品の複数種別の小計、全体の合計等の演算に流用できる。すなわち、このような小計、あるいは合計は、式表現で集合を取り扱う演算子である和演算子をそのまま使用すればよい。すなわち、情報処理装置２００によれば、数値ｎを明示的に示す演算子であり、数値演算子（例えば、コーテーションマーク’’）により、数値を示す数値識別子（’n’）を明示的に記述するので、数値以外の識別子と数値識別子とを含む式表現において、和演算子を用いて、式表現を作成することにより、数値演算を実行できる。
【０３０７】
また、情報処理装置２００によれば、数値以外の識別子と数値識別子とを含む式表現が得られている場合、例えば、１個２００円のリンゴの単価がデータベースに記述され、リンゴ１０個の購入が決まった場合に、情報処理装置２００は、以下の式表現を作成できる。すなわち、情報処理装置２００は、データベースから読み出したリンゴ×'200'×円×/×個と、購入個数を示す’10’個について、積演算子で結合し、リンゴ×'200'×円×/×個×’10’個から、リンゴ×'2000'×円を計算することができる。
【０３０８】
すなわち、情報処理装置２００によれば、事物を記述する識別子と、事物の数量を示す識別子を混在させて、集合を示す和演算子と積演算子の組み合わせによって、集合の概念と数値の加算（負の数による減算を含む）の概念とを区別なく記述し、数値の演算を実行できる。また、情報処理装置２００によれば、積演算子が構成する因子について、事物の修飾の概念、例えば、リンゴ、リンゴ×青森、ハム、ハム×ロース等と、数量の概念、例えば、リンゴについての'200'×円、’10’個等とを混在させて取り扱うことができる。
【０３０９】
《第６実施形態》
図２４および図２５を参照して、第６実施形態に係る情報処理装置２００について説明する。上記第２実施形態から第５実施形態では、式表現を用いて事物に係る情報をメモリ１２等の記憶装置に蓄積し、蓄積された式表現を基に、その事物に係る数値を計算する処理を実現する情報処理装置２００を例示した。これらの実施形態では、図１１の数値処理フローに例示したように、情報処理装置２００は、まず、数値識別子を明示的に表示しない式表現から数値識別子を明示的に表示した式表現である代数演算式に変換した。そして、図１３、図１４のように、数値計算処理を実行した。
【０３１０】
第６実施形態では、代数演算式への変換処理として、例えば、図１１で例示される数値処理フローとは異なる処理が例示される。例えば、図１１の処理では、変換対象の入力式に含まれる識別子が数字を含むか否かが判定され、識別子中の数字部分、あるいは数字で定義された識別子自体が数値化された。また、識別子が複数の数値部分を含む場合、すべての数値部分が数値化された。すなわち、図１１の数値化処理で処理される式表現中の数字は、区別なく、そのまま数値された。
【０３１１】
第６実施形態では、式表現中の識別子が数字を含み、予め定義された識別子（以下、単位指定識別子と呼ぶ）と関連付けされているときに、式表現中の識別子が数値化される。ここで、単位指定識別子とは、数値が示す量あるいは数の単位を示す識別子である。したがって、第６実施形態の処理では、単位指定識別子と関連付けされていない識別子は、数字を含んでいても数値化されない。ここで、識別子が関連づけされている例としては、以下を例示できる。
【０３１２】
（１）識別子が単位識別子と積演算子で結合されている場合である。
（２）識別子中に、単位指定識別子として定義された記号列と、数字部分とが混在する場合である。
【０３１３】
第６実施形態における数値処理以外の構成は、第１実施形態から第５実施形態と同様である。そこで、第６実施形態の情報処理装置２００は、数値処理以外の構成については、第１実施形態から第５実施形態の構成をそのまま有するものとする。
【０３１４】
図２４に第６実施形態に係る情報処理装置２００の構成を例示する。図２４のように、第６実施形態に係る情報処理装置２００は、処理部４０とデータ部４５と単位識別子記憶部４５Ｂを有する。処理部４０のうち、代数演算部４０Ａについては、第５実施形態の図２３と同様であるので、その説明を省略する。
【０３１５】
なお、図２４では省略しているが、第２実施形態の図９と同様に、情報処理装置２００は、入力部１１、出力部１４、通信３２、外部記憶装置３４、着脱可能記憶媒体アクセス装置３６等を接続してもよい。ただし、入力部１１、出力部１４、通信３２、外部記憶装置３４、着脱可能記憶媒体アクセス装置３６等は、必須の構成ではなく、情報処理装置２００に要求される仕様にしたがって、適宜設ければよい。
【０３１６】
処理部４０のうち、変換部４０Ｂは、単位指定識別子記憶部４５Ｂを参照し、単位指定識別子を取得する。そして、変換部４０Ｂは、単位指定識別子記憶部４５Ｂに登録されている単位指定識別子と関連づけられた識別子、あるいは識別子中の数字部分を数値化する。
【０３１７】
単位指定識別子記憶部４５Ｂは、例えば、メモリ１２、外部記憶装置３４等に構築される。また、情報処理装置２００は、外部記憶装置３４に代えて、通信部３２を介して接続されるネットワーク上の他の情報処理装置の外部記憶装置を用いてもよい。単位指定識別子記憶部４５Ｂには、例えば、入力部１１、通信３２等を介して、情報処理装置２００から、単位指定識別子を登録できるようにすればよい。単位指定識別子としては、例えば、そのまま単位を示す記号列を登録すればよい。
【０３１８】
例えば、通貨の単位として、円、￥（円の通貨記号）、doller（ドル）、＄（ドルの通貨記号）、ＥＵＲ（ユーロ）、ユーロの通貨記号等を例示できる。また、重さを示すグラム、g(グラムの記号)、キログラム、ｋｇ（キログラムの記号）を例示できる。長さの単
位として、メートル、meter（メートル）、ｍ（メートルの記号）等を例示できる。単位
指定識別子は、任意にユーザが単位指定識別子記憶部４５Ｂに定義できるようにしてもよい。例えば、ユーザは、特定の業界で用いられる所望の単位を単位指定識別子記憶部４５Ｂに定義すればよい。また、ユーザは、単位を示す記号列として、任意に定義すればよい。例えば、ユーザは、円の代わりに、yen,あるいはYEN等を定義してもよい。
【０３１９】
なお、図２４では、式表現を格納するデータ部４５とは別に、単位指定識別子記憶部４５Ｂが設けられている。しかし、式表現を格納するデータ部４５と単位指定識別子記憶部４５Ｂが一体のものでもよい。例えば、情報処理装置２００は、データ部４５に、式表現とともに、単位指定識別子を登録しておいてもよい。
【０３２０】
図２５に、第６実施形態に係る数値化処理フローを例示する。図２５の数値化処理は、単位指定数値化処理と呼ばれる。この処理では、情報処理装置２００は、まず、式表現を入力する（Ｆ２０１）。式表現の入力とは、例えば、図９に例示した入力部１１等のユーザインターフェースからの入力、通信部３２からの入力、外部記憶装置３４からの入力等である。ただし、例えば、図２５に示した処理がコンピュータプログラムのモジュールとして記述される場合には、式表現の入力は、モジュールの引数、共有メモリ等を通じた入力であってもよい。
【０３２１】
次に、情報処理装置２００は、入力された式表現から次の識別子を取得する（Ｆ２０２）。「次の」と記述されるのは、Ｆ２０２の処理が繰り返し実行されるからである。そして、情報処理装置２００は、取得した識別子が単位指定識別子か否かを判定する（Ｆ２０３）。Ｆ２０３の判定では、情報処理装置２００は、Ｆ２０２で取得した識別子と、単位指定識別子記憶部４５Ｂで定義された単位指定識別子を照合する。そして、Ｆ２０２で取得した識別子が、単位指定識別子記憶部４５Ｂに定義されている場合には、情報処理装置２００は、その識別子が単位指定識別子であると判定すればよい。
【０３２２】
そして、Ｆ２０２で取得した識別子が単位指定識別子である場合、情報処理装置２００は、単位指摘識別子と積演算子で結合された識別子を取得する。そして、情報処理装置２００は、単位指摘識別子と積演算子で結合された識別子が数字を含むか否かを判定する（Ｆ２０４）。そして、単位指摘識別子と積演算子で結合された識別子が数字を含む場合に、情報処理装置２００は、単位指摘識別子と積演算子で結合された識別子の数値を数値化する（Ｆ２０５）。数値化の手順、表記法は、図１１の場合と同様である。
【０３２３】
なお、Ｆ２０３の判定において、単位指定識別子と積演算子で結合する識別子が、単位指定識別子の右側に結合するか、左側に結合するかは、情報処理装置２０内の規則、あるいは、変換部４０Ｂの規則として、メモリ１２、あるいは、外部記憶装置４３等に格納しておけばよい。例えば、Ｆ２０３の処理を実行する変換部４０Ｂの設計時に規則を確定し、変換部の処理に組み込めばよい。
【０３２４】
Ｆ２０３、Ｆ２０４で、判定が偽（ＮＯ）の場合には、情報処理装置２００は、処理をＦ２０６に進める。そして、情報処理装置は、次の識別子がＦ２０１で入力した識別子中に残っているか否かを判定する。次の識別子が残っている場合には、情報処理装置２００は、処理をＦ２０２に戻す。一方、次の識別子が残っていない場合には、情報処理装置２００は、変換後の式表現を出力する（Ｆ２０７）。ここで、出力先は、Ｆ２０１で式表現の入力先と同一とすればよい。ただし、図２５に示した処理がコンピュータプログラムのモジュールとして記述される場合には、式表現の出力先は、モジュールの引数、関数の戻り値、共有メモリ等を通じた出力であってもよい。
【０３２５】
以下、Ｆ２０３−Ｆ２０５の処理による変換結果を例示する。今、単位指定識別子記憶部４５Ｂには、例えば、YEN、グラム、個が定義されていると仮定する。この場合に、式
表現として、豚肉×２00×YEN×/×１００×グラム×３００×グラムは、豚肉×“200” ×YEN×/×’100’×グラム×’300’×グラムのように数値化される。そして、図１３、図１４の数値計算処理を実行すると、豚肉×”600”×YENが算出される。すなわち、１００グラムあたり２００円の豚肉を３００グラム購入すると、６００円となることが算出される。
【０３２６】
図２５の処理は、単位指定識別子と積演算子で結合する識別子中の一部の記号が数字で
あればよいので、次のような記述も可能である。例えば、式表現として、豚肉２00×YEN
×/×１００×グラム×３００×グラム＋リンゴ100×YEN×/×1×個×４×個は、Ｆ２０
３−２０５の処理によって、豚肉×“200” ×YEN×/×グラム×’100’×グラム×’300’＋リンゴ×’100’×YEN×/×’1’×個×’4’×個のように数値化される。
【０３２７】
さらに、数値計算処理を実行すると、豚肉×”600”×YEN＋リンゴ×’400’×YENのように、豚肉の購入費用が６００円、リンゴの購入費用が４００円であることが算出される。
【０３２８】
また、例えば、部品×パーツ番号×１０１０×５００×YEN／１×個×１０×個は、部
品×パーツ番号×１０１０×’500’×YEN／’1’×個×’10’×個のように、数値化さ
れる。この場合、部品×パーツ番号×１０１０については、単位指定識別子と積演算子で結合していないので、数値化されない。そして、数値計算処理を実行すると、部品×パーツ番号×１０１０×’5000’×YENが得られる。すなわち、パーツ番号１０１０の部品の
購入費用が５０００円であることが算出される。
【０３２９】
なお、以上の例示では、数字を含む識別子と、単位指定識別子の関係が、積演算子に対して左側に数字を含む識別子、右側に単位指定識別子が記述される例を説明した。しかし、逆に、積演算子に対して右側に数字を含む識別子、左側に単位指定識別子が記述されるようにしてもよい。要するに、情報処理装置２００の変換部４０Ｂにおいて、順序を決めておけばよい。また、単位指定識別子に積演算子で結合される数字を数値識別子に変換する場合に、変換後の数値識別子と単位指定識別子との順序も、情報処理装置２００の変換部４０Ｂにおいて決めておけばよい。したがって、情報処理装置２００は、例えば、５００×YENがＹＥＮ×’500’に変換するようにしてもよい。
【０３３０】
図２６に、数値化処理の他の処理例を例示する。図２５では、単位指定識別子と積演算子で結合される識別子中の数字を数値化した。図２６では、識別子中の記号列として、単位指定識別子と数字部分を含む識別子を数値化する処理例を説明する。図２６の処理を識別子の分割処理と呼ぶ。
【０３３１】
単位指定識別子と数字部分を含む識別子とは、例えば、５００円、５００ＹＥＮ、ＹＥＮ５００、＄１０００等である。この場合も、単位指定識別子と数字部分の記述順は、情報処理装置２００の数値化処理および数値計算処理において、順序を決めておけばよい。
【０３３２】
図２６の処理で、Ｆ２１１およびＦ２１２の処理は、図２５のＦ２０１、Ｆ２０２と同様である。そして、情報処理装置２００は、Ｆ２１２で取得した識別子が、数字部分と数字以外の記号部分を含み、数字以外の記号部分が単位指定識別子であるか、否かを判定する。すなわち、情報処理装置２００は、Ｆ２１２で取得した識別子が数字を含む場合に、数字以外の記号部分を取得する。そして、数字以外の記号部分と、単位指定識別子記憶部４５ｂとを照合し、数字以外の記号部分が、単位指定識別子記憶部４５ｂに登録されているか否かを判定する（Ｆ２１３）。
【０３３３】
Ｆ２１３の判定が真（ＹＥＳ）の場合、情報処理装置２００は、識別子の数字部分を数値化し、数字以外の記号部分と積演算子で結合する（Ｆ２１４）。Ｆ２１５、Ｆ２１６の処理は、図２５のＦ２０６、Ｆ２０７の処理と同様であるので、その説明を省略する。
【０３３４】
以下、Ｆ２１３、Ｆ２１４の処理による変換結果を例示する。今、単位指定識別子記憶部４５Ｂには、例えば、YEN、グラム、個が定義されていると仮定する。この場合に、式
表現として、部品×パーツ番号１０１０×５００YEN／１個×１０個は、部品×パーツ番
号１０１０×’500’×YEN／’1’×個×’10’個のように、数値化される。そして、数
値計算処理によって、部品×パーツ番号１０１０×’5000’×YENが算出される。すなわ
ち、バーツ番号１０１０の部品の購入額が５０００円であることが算出される。
【０３３５】
この場合にも、Ｆ２１３の判定において、数字部分と非数字部分の識別子内の並びの順序関係は、情報処理装置２００において規定し、メモリ１２あるいは外部記憶装置３４等に格納しておけばよい。あるいは、Ｆ２１３の判定において、数字部分と記号部分の識別子内の並びの順序関係は、変換部４０Ｂの設計段階で規定し、変換部４０Ｂの処理に反映しておけばよい。例えば、識別子中で、数字部分と非数字部分とが、左右に隣接する場合に、Ｆ２１３の判定を真（ＹＥＳ）としてもよい。また、逆に、例えば、識別子中で、非数字部分と数字部分とが、左右に隣接する場合に、Ｆ２１３の判定を真（ＹＥＳ）としてもよい。
【０３３６】
同様に、Ｆ２１４において、数字部分が数値化されたときに、数値化された数値識別子と、非数字の記号を含む非数値識別子を積演算子で結合する順序も、情報処理装置２００において規定し、メモリ１２あるいは外部記憶装置３４等に格納しておけばよい。また、数値化された数値識別子と、非数字の記号を含む非数値識別子を積演算子で結合する順序は、変換部４０Ｂの設計段階で規定し、変換部４０Ｂの処理に反映しておけばよい。したがって、５００YENを数値化する場合に、’500’×ＹＥＮとしてもよいし、ＹＥＮ×’500’としてもよい。
【０３３７】
以上述べたように、第６実施形態の情報処理装置２００によれば、単位指定識別子記憶部４５ｂに登録された単位指定識別子と積演算子で結合される識別子中の数字部分が数値化され、図１３、図１４で述べた数値演算処理によって、数値演算される。また、１つの識別子中に、数字部分と数字以外の記号部分が含まれる場合で、数字以外の記号部分が単位指定識別子記憶部４５ｂに登録された単位指定識別子である場合も、数字部分が数値化される。
【０３３８】
一方、単位指定識別子と関連づけられていない数字は、数値化されない。例えば、数字の識別子ｎｎｎが、単位指定識別子と積演算子で結合されていない場合には、変換部４０Ｂによって数値化されない。また、１つの識別子中に、数字部分と非数字部分を含む識別子で、非数字部分が単位指定識別子でない識別子も、数値化されない。したがって、部品×パーツ番号×１０１０のような式表現、あるいは、部品×パーツ番号１０１０のような式表現を維持した上で、５００×YEN／１×個×１０×個あるいは５００YEN／１個×１０個のような数字の部分だけを数値化し、数値計算することができる。すなわち、第６実施形態の情報処理装置２００によれば、数値計算の対象としたい数字には、単位指定識別子を関連づけておけばよい。そして、パーツ番号のように、数値計算対象としたくない識別を維持した上で、量を示す識別子の数字部分を数値計算の対象とすることができる。
【０３３９】
以上の情報処理装置２００の処理によれば、事物の識別情報としての数字と、事物の量を示す識別情報としての数字を混在して、式表現中に記述できる。そして、事物の量を示す識別情報としての数字に、単位指定識別子を付与し、その単位指定識別子を単位指定識別子記憶部４５Ｂに登録しておくことで、事物の量を示す識別子、つまり数字の数値計算処理を実行できる。このような処理は、例えば、商品の販売額、人事部門での社員の給与、調達部門の調達額、設計部門での設計上の見積もり、研究部門での研究記録、実験記録等を式表現で記述し、記憶し、集計処理等を実行する上で、極めて有用である。すなわち、情報処理装置２００では、式表現によって、種々の事物を示すデータを柔軟に記述し、データ部４５に登録しておくことができる。そして、単位指定識別子記憶部４５Ｂに登録された単位指定識別子を基に、式表現中の数字を数値化し、様々なデータの集計、商演算よる検索、部分集合の取得等を実行し、事物の記録と代数演算処理を実行できる。
【０３４０】
なお、上記では、数値が整数の場合を例示したが、数値が整数以外の実数であっても上記と同様である。情報処理装置２００は、例えば、豚肉２00×YEN×/×１００×グラム×３００．２８×グラムを豚肉’２００’×YEN×/×’１００’×グラム×’３００．２８’の数値化する。また、情報処理装置２００は、例えば、式表現である部品×パーツ番号１０１０×５．１２ｋｇ／１個×１０個を、部品×パーツ番号１０１０×’５．１２’×ｋｇ／’１’×個×’１０’×個のように数値化する。
【０３４１】
《第７実施形態》
第２実施形態では、情報処理装置２００は、式表現中の数字を数値化し、数値計算を実行した。また、第６実施形態では、情報処理装置２００は、単位指定識別子と関連づけされた数値を含む識別子を数値化し、数値計算を実行した。第７実施形態では、数値計算処理に数値を表す文字変数を導入する。例えば、第２実施形態から第６実施形態では、数値（ｎ）を示す数値識別子（’n’）は、数値演算子（’’）によって、明示的に記述され
た。本実施形態では、数値演算子（’’）によって、数値を示す変数識別子（例えば、’X’,’Y’,’Z’等）を記述し、変数識別子の値を求める処理を例示する。ここで、変数識別子（’X’等）の値を求めるための条件として、第１の式表現と、第１の式表現に対して等価な第２の式表現とを関係づけるための等価演算子を導入する。変数識別子と等価演算子よる等価因子が導入される点以外の情報処理装置２００の構成および処理は、第１実施形態から第６実施形態と同様である。すなわち、第７実施形態における情報処理装置２００の構成および処理は、第１実施形態から第６実施形態の構成および処理と組み合わせて実行される。
【０３４２】
本実施形態では、等価演算子は、例えば、等号（＝）で示される。ただし、等価演算子として、他の記号を用いてもよい。また、等価演算子によって、関係づけられた第１の式表現と第２の式表現とを等価因子と呼ぶ。
【０３４３】
ここでは、等価因子に対して、以下の等価因子処理ｈを定義する。等価因子となる第１の式表現と第２の式表現は、以下のように表される。
【０３４４】
第１の式表現＝第２の式表現
等価因子処理ｈは、等価因子となっている式表現に、以下の３つの処理を実行する。
【０３４５】
（１）等価因子間で共通の因子を削除する処理
ｈ：a×b×=×a×c  ＝＞b×=×c・・・（数ＡＰ２１）
すなわち、等価因子処理ｈは、等価識別子で関係付けられた２つの等価因子間（a×b×と×a×cとの間）の関係に対して、共通の因子を削除し、共通でない因子を含む第１の式表現b×と、第２の式表現との関係に変換する。
【０３４６】
（２）等価因子間の数値識別子の乗算および除算処理
ｈ：'p'×a×=×'q'×c  ＝＞  a×=×'q/p'×c・・・（数ＡＰ２２）
すなわち、等価因子処理ｈは、等価識別子で関係付けられた２つの等価因子間（'p'×a×と×'q'×cとの間）の関係に対して、同一の数値識別子（’p’）の乗算または除算を実行する。ただし、除算処理は、べき乗の指数として、（―１）を用いることによって、乗算として記述できる。
【０３４７】
（３）等価因子間の数値識別子の加算（および減算）処理
ｈ：'p'+a×=×'q'+c  ＝＞  'a×=×'(q-p)'+c・・・（数ＡＰ２３）
すなわち、等価因子処理ｈは、等価識別子で関係付けられた２つの等価因子間（'p'+a
×と×'q'+cとの間）の関係に対して、同一の数値識別子（’p’）の加算または減算を実行する。ただし、減算処理は、負の数を用いることによって、加算として記述できる。
【０３４８】
以下に処理例を示す。ここでは、青森県産のリンゴ（１個１８０円）、宮城県産のリンゴ（１個１５０円）、福島県産のリンゴ（１個２００）とする。さらに、次のような買い物セット１と買い物セット２を設定する。例えば、買い物セット１は、青森県産のリンゴ１個と、宮城県産のリンゴを１個含む。また、買い物セット１は、青森県産のリンゴ４個と、福島県産のリンゴ５個を含む。ここでは、買い物セット１を２セット、買い物セット２を３セット購入する場合を検討する。この場合の購入した商品と金額を示す式表現は以下の通りである。
【０３４９】
買い物セット１×(リンゴ×(青森産×１８０円×/×個×1個+宮城産×150円×/×個×1個))/×セット×2セット+買い物セット２×(リンゴ×(青森産×１８０円×/×個×４個+
福島産×200円×/×個×5個))/×セット×3セット・・・（数ＡＰ２４）
【０３５０】
この式表現に対して、第２実施形態の数値化処理を実行すると、以下の代数演算式が得られる。
【０３５１】
買い物セット１×(リンゴ×(青森産×'180'×円×/×個×'1'×個+宮城産×'180'×円
×/×個×'1'×個))/×セット×'2'×セット+買い物セット２×(リンゴ×(青森産×'180'×円×/×個×'4'×個+福島産×'200'×円×/×個×'x'×個))/×セット×'3'×セット=リンゴ×'5000'×円・・・（数ＡＰ２５）
【０３５２】
さらに、情報処理装置は、リンゴ+/+円+個+セット+=+[0...9]によってフィルタ処理を
実行する。すなわち、ここでは、情報処理装置は、代数演算式の識別子として、リンゴ、／、円、個、セット、＝および数字の０から９以外の因子を除去する処理を実行する。フィルタ処理の結果、得られる代数演算式は、以下の通りである。
【０３５３】
(リンゴ×('180'×円×/×個×'1'×個+'150'×円×/×個×'1'×個))/×セット×'2'
×セット+(リンゴ×('180'×円×/×個×'4'×個+'200'×円×/×個×'5'×個))/×セッ
ト×'3'×セット・・・（数ＡＰ２６）
【０３５４】
この代数演算式に対して、図１３、図１４に示した数値計算処理を実行すると、(リン
ゴ×円×'330')×'2'+(リンゴ×円×'1720')×'3'となり、さらに、リンゴ×円×'5490'
が得られる。
【０３５５】
ここで、数ＡＰ２４で定義される商品と金額の買い物おいて、合計金額が５０００円以下になるように、例えば、福島県産のリンゴの数を調整する場合を考える。つまり、ここでは、買い物セット２における福島県産のリンゴの数を調整し、購入額の合計が例えば、予算５０００円に収まるように、買い物セットの構成を変更する。そこで、数ＡＰ２４の式表現において、買い物セット２の福島県産のリンゴの数をｘ個に置き換えて、等価因子として、リンゴ×５０００円を設定する。
【０３５６】
買い物セット１×(リンゴ×(青森産×１８０円×/×個×1個+宮城産×150円×/×個×1個))/×セット×2セット+買い物セット２×(リンゴ×(青森産×１８０円×/×個×４個+
福島産×200円×/×個×x個))/×セット×3セット=リンゴ×５０００円・・・（数ＡＰ２７）
【０３５７】
数ＡＰ２７を数値化すると以下の通りである。
【０３５８】
買い物セット１×(リンゴ×(青森産×'180'×円×/×個×'1'×個+宮城産×'180'×円
×/×個×'1'×個))/×セット×'2'×セット+買い物セット２×(リンゴ×(青森産×'180'
×円×/×個×'4'×個+福島産×'200'×円×/×個×'x'×個))/×セット×'3'×セット=
リンゴ×'5000'×円・・・（数ＡＰ２８）
【０３５９】
さらに、リンゴ+/+円+個+セット+=+[0...9]でフィルタ処理を実行すると、以下の通り
である。
【０３６０】
(リンゴ×('180'×円×/×個×'1'×個+'150'×円×/×個×'1'×個))/×セット×'2'
×セット+(リンゴ×('180'×円×/×個×'4'×個+'200'×円×/×個×'x'×個))/×セッ
ト×'3'×セット=リンゴ×'5000'×円・・・（数ＡＰ２９）
【０３６１】
さらに、数値計算処理を実行すると、以下の通りである。
【０３６２】
(リンゴ×円×'330')×'2'+(リンゴ×円×('720'+'200'×'x')×'3'=リンゴ×'5000'×円
リンゴ×円×('2820'+'600'×'x')=リンゴ×'5000'×円・・・（数ＡＰ３０）
【０３６３】
数ＡＰ３０において、等価因子間の数値識別子の加算処理および等価因子間の数値識別子の乗算処理を実行すると、('2820'+'600'×'x')='5000'が得られ、'x'='3.63'が得られる。よって、買い物セット１の福島県産のリンゴを３個以下にすれば、数ＡＰ２４での買い物の合計金額を５０００円以下にすることができる。
【０３６４】
図２７に、数値変数と、等価因子による数値計算処理を実行する処理フローを例示する。この処理では、情報処理装置２００は、数値変数を含む第１の式表現を設定する（Ｆ２２１）。数値変数は、例えば、変数Ｘ、Ｙ、Ｚ等を予約語としておいてもよい。あるいは、数値識別子（例えば、‘’）で数値として定義された数字以外の記号の識別子（例えば、’X’,’Y’,’Z’等）を、数値変数を表す識別子として処理してもよい。数値識別子によって数値変数を表す識別子を定義する場合には、予約語は不要となる。第１の式表現の例は、例えば、数ＡＰ２７の等価識別子（＝）の左側の式表現である。
【０３６５】
次に、情報処理装置２００は、第１の式表現と等価な関係にある式表現を等価因子に設定する（Ｆ２２２）。第１の式表現と等価な関係にある式表現の例は、例えば、数ＡＰ２７の等価識別子（＝）の右側の式表現（リンゴ×５０００円）である。Ｆ２２１、およびＦ２２２の処理は、例えば、式表現を設定するユーザインターフェースへのユーザの入力にしたがった実行すればよい。また、例えば、テキストエディタ等を用いて、ユーザが第１の式表現および等価な式表現（以下、第２の式表現という）を設定してもよい。ただし、例えば、図２７に示した処理がコンピュータプログラムのモジュールとして記述される場合には、Ｆ２２１、Ｆ２２２の処理は、モジュールの引数、共有メモリ等を通じた設定であってもよい。
【０３６６】
次に、情報処理装置２００は、第１の式表現および等価因子として定義された第２の式表現に数値化処理を実行する（Ｆ２２３）。数値化処理は、等価識別子（＝）の左右に設定されたそれぞれの式表現に対して実行すればよい。この場合、数値変数が予約語（Ｘ等）の場合には、単に予約語に数値識別子を設定し、数値変数（’X’等）とすればよい。また、数値変数としてすでに、数値識別子が設定されている場合、すなわち、Ｆ２２１の処理で、数値変数として、’X’等の記述されている場合には、そのまま数値変数（’X’等）を代数演算式に設定すればよい。
【０３６７】
さらに、情報処理装置２００は、数値化された第１の式表現および、数値化された第２の式表現に、フィルタ処理を実行する（Ｆ２２４）。フィルタ処理は、図１８の処理と同様である。そして、情報処理装置２００は、数値変数を含む項と項の加算、および、数値
変数を含む項以外の項の減算（負の符号を項に付した加算）を実行する（Ｆ２２５）。このような処理によって、等価演算子の一方側に、数値変数（例えば、’X’）を含む項だ
けが残される。
【０３６８】
次に、情報処理装置２００は、数値変数を含む項の数値変数以外の因子を除算（―１のべき乗を付した因子の乗算）を実行する（Ｆ２２６）。その結果、等価演算子の一方側に、数値変数（例えば、’X’）だけが残され、’X’＝代数演算式の形式で、数値変数’X’の値が得られる。代数演算式に、数値計算を実行することで数値変数の’X’の値が得られる。そして、情報処理装置は、数値変数’X’の値を出力する（Ｆ２２７）。ここで、出力先は、Ｆ２２１、Ｆ２２での入力先と同一（ユーザインターフェース等）とすればよい。ただし、図２７に示した処理がコンピュータプログラムのモジュールとして記述される場合には、式表現の出力先は、モジュールの引数、関数の戻り値、共有メモリ等を通じた出力であってもよい。
【０３６９】
以上述べたように、数値演算子（’’）と変数（Ｘ，Ｙ，Ｚ等）とによって、数値であることを明示する数値変数（’Ｘ’，’Ｙ’，’Ｚ’等）を定義し、等価因子によって、２つの等価な式表現（あるいは、代数演算式）を結合することで、情報処理装置２００のメモリ１２、あるいは外部記憶装置３４上に、方程式を記述できる。
【０３７０】
等価因子によって結合される式表現、あるいは、代数演算式は、第１実施形態から第６実施形態で情報処理装置２００が処理したものと同様のものである。すなわち、本実施形態の情報処理装置２００は、様々な事物を式表現で記述し、ユーザ所望の式表現の部分を商演算等の分割演算で取得し、代数演算式に変換する。その場合に、特定の事物の数量を数値変数（’ ’Ｘ’，’Ｙ’，’Ｚ’等）に設定し、等価因子によって、数値変数（’
Ｘ’，’Ｙ’，’Ｚ’等）を含む２つの式表現（あるいは代数演算式）を結合することで、方程式を記述できる。そして、等価因子で結合された２つの式表現を代数演算式に変換し、数値演算処理を実行することで、変数（’Ｘ’等）の値を求めることができる。
【０３７１】
上記第７実施形態では、簡単な処理例として、リンゴの個数を求める問題の解析例を示したが、数値変数（’Ｘ’等）と等価因子による処理は、このような簡単なものに限定される訳ではない。例えば、情報処理装置２００は、物品の単価と、販売量、購入量、消費量等を管理するデータベースを式表現で構築しておき、予算額から、物品の販売量、購入量、消費量等を決定する処理、物品の販売量、購入量、消費量等の増加量を求める処理などを実行できる。また、情報処理装置２００は、例えば、材料毎の単位体積当たりの要求数量等を式表現で記述しておき、設計上の寸法から構造物の体積を記述する式表現を作成し、それぞれの材料の必要量を求める処理などを実行してもよい。すなわち、等価因子と数値変数（’x’，’y’，’z’等）を式表現あるいは代数演算式に導入することによっ
て、様々な事物の量を求める方程式をコンピュータ上で記述し、解を求めることができる。
【符号の説明】
【０３７２】
１００、２００ 情報処理装置
１１ 入力部
１２ メモリ
１３ ＣＰＵ
１４ 出力部
１５、１６、３１、３３、３３ インターフェース
３２ 通信部
３４ 外部記憶装置
３６ 着脱可能記憶媒体アクセス装置
４０ 処理部
４０Ａ 代数演算部
４１ ユーザインターフェース画面
４２ 要素情報編集・格納部
４３ 要素情報抽出・演算部
４４ 代数演算部
４６ 共通関数ライブラリ
【図１】
0005357286.tif 000002
【図２】
0005357286.tif 000003
【図３】
0005357286.tif 000004
【図４】
0005357286.tif 000005
【図５Ａ】
0005357286.tif 000006
【図５Ｂ】
0005357286.tif 000007
【図５Ｃ】
0005357286.tif 000008
【図６Ａ】
0005357286.tif 000009
【図６Ｂ】
0005357286.tif 000010
【図６Ｃ】
0005357286.tif 000011
【図７】
0005357286.tif 000012
【図８Ａ】
0005357286.tif 000013
【図８Ｂ】
0005357286.tif 000014
【図９】
0005357286.tif 000015
【図１０】
0005357286.tif 000016
【図１１】
0005357286.tif 000017
【図１２】
0005357286.tif 000018
【図１３】
0005357286.tif 000019
【図１４】
0005357286.tif 000020
【図１５Ａ】
0005357286.tif 000021
【図１５Ｂ】
0005357286.tif 000022
【図１６】
0005357286.tif 000023
【図１７】
0005357286.tif 000024
【図１８】
0005357286.tif 000025
【図１９Ａ】
0005357286.tif 000026
【図１９Ｂ】
0005357286.tif 000027
【図２０】
0005357286.tif 000028
【図２１】
0005357286.tif 000029
【図２２】
0005357286.tif 000030
【図２３】
0005357286.tif 000031
【図２４】
0005357286.tif 000032
【図２５】
0005357286.tif 000033
【図２６】
0005357286.tif 000034
【図２７】
0005357286.tif 000035