【誤訳訂正書】
【提出日】平成23年6月3日(2011.6.3)
【誤訳訂正１】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
実行トレースを検証することによってプログラム実行の整合性を制御する方法であって、
プログラム実行に関する実行経路及び／または処理されたデータを示すトレースプリントを更新するステップと、
チェックフローについての特定の収束ポイントに至る前に前記実行経路に沿って前記トレースプリントを調整して、収束している経路のトレースプリント同士を等しくするステップと、
前記プログラムの決定されたポイントにおいて、前記トレースプリントを、静的に固定されておりかつプログラム実行が妨げられない場合にトレースプリントが有するべき値に等しい期待値と動的に比較するステップと、
前記トレースプリントが前記期待値と異なる場合に特別な処理を実行するステップと、
を含むことを特徴とする方法。
【請求項２】
前記トレースプリントが前記期待値と異なる場合の前記プログラムの前記特別な処理は、特定のデータを保護するステップ、及び／またはうまく機能していないことをユーザに音または視覚の信号によって警告するステップ、及び／または前記プログラムの前記実行を完全にまたは完全にではなくても中断するステップから成ることを特徴とする請求項１記載の方法。
【請求項３】
前記トレースプリントは、前記プログラムのクリティカルなコード部分及び／またはクリティカルなプログラム状態にだけ関係することを特徴とする請求項１記載の方法。
【請求項４】
前記トレースプリントは、関数の連続した合成によって前記プログラムの前記実行経路に沿って増分的に算出され、前記関数の１つの引数が前記トレースプリントの値でありもう１つの引数が前記プログラムのローカルな実行結果もしくは動的プログラムデータに関係する式を表すことを特徴とする請求項１記載の方法。
【請求項５】
前記関数が、以下の関数のうちの１つから成り、
前記以下の関数は、チェックサム、線形合同、周期的冗長検査（CRC）、暗号化トレーシングプリントまたは以下の演算の組み合わせであり、
前記以下の演算は、定数もしくは前記観察データ項目を用いた加算、減算、排他的論理和、ビット定数のローテーション、または奇数定数による乗算であることを特徴とする請求項４記載の方法。
【請求項６】
前記調整の演算が、以下の関数の組み合せから成り、前記以下の関数の組み合わせは、定数値へのアサインメント、定数の加算、定数値との排他的論理和であることを特徴とする請求項１記載の方法。
【請求項７】
前記プログラムのあるポイントにおいて、前記トレースプリントが、先行するトレースプリント値から差し引かれるのではなくある値にアサインメントされることを特徴とする請求項１記載の方法。
【請求項８】
前記プログラムポイントは、ある閾値より大きい数の実行分岐が収束するプログラムポイントであり、かつ／または、サブルーチン及び／または例外ハンドラのエントリポイントであるプログラムポイントであり、前記アサインメントの行われた値は、所定の値及び／またはランダムな抽出によって決定された何らかの値、並びに／または対象としている前記プログラムポイントにおいて不変式と事前の解析によって決定されたプログラム式であることを特徴とする請求項７記載の方法。
【請求項９】
前記トレースプリント値が、プログラムポイントにおいて前記期待値と比較され、前記プログラムポイントは前記プログラムの前記チェックフローグラフ中の前記プログラムポイントの特定の特徴によってかつ／または前記プログラムポイントで実行される演算の型によって決定されることを特徴とする請求項１記載の方法。
【請求項１０】
前記プログラムポイントは、前記チェックフローの各々の分岐の後及び／または各々の結合の前、及び／または不揮発性メモリに書き込む各々の演算の前、及び／または特定の暗号演算の前、及び／または特定のライブラリルーチンに対する呼び出しの前及び／または特定のライブラリルーチンに対する呼び出しの後、に位置することを特徴とする請求項９記載の方法。
【請求項１１】
トレースプリント設定及び／またはトレースプリント制御が、
前記プログラムの構成によって明示的に行われ、かつ／または
トレースプリント設定演算及び／またはトレースプリント制御演算がどのプログラムポイントでかつ／またはどの値を用いてなされるかを前記実行マシンに指示する補完的なプログラムデータに基づいて前記実行マシンによって明示的に行われ、前記値は複合の演算から得られる値を含み、かつ／または
実行された命令の特定の観察に基づいて、前記実行マシンによって黙示的に行われることを特徴とする請求項１記載の方法。
【請求項１２】
前記プログラムコードの前記構成は、前記トレースプリントを示す変数の明示的な処理であるレジスタの明示的な処理に基づきかつ／または特定のルーチンに対する呼び出しに基づきかつ／または前記実行マシンの特定の命令の使用に基づいていることを特徴とする請求項１１記載の方法。
【請求項１３】
前記補完的なプログラムデータは、実行されるべき前記演算を定義しているコードとプログラムポイントを関連させかつ特定の命令を実行する場合に前記実行マシンによって参考にだけされるテーブルにおいてコード化されることを特徴とする請求項１１記載の方法。
【請求項１４】
前記特定の命令が、分岐及び／または不揮発性メモリにおける書き込み及び／またはあるプログラムルーチンに対する呼び出し及び／または特定の暗号演算であることを特徴とする請求項１３記載の方法。
【請求項１５】
所定のプログラムポイントにおける前記期待されるトレースプリント値及びトレースプリント調整値が、前記プログラムの静的解析によって決定され、前記プログラムの静的解析は、いくつかのループ及び再帰をほどくことをシミュレーションすることができ、前記プログラムを修正して前記トレースプリント値を予測可能にしかつ／またはトレースプリントの値を点検することができることを特徴とする請求項１記載の方法。
【請求項１６】
前記解析の目的で、プログラムポイント及びこのプログラムポイントにおける実行観察の型に対応するトレースプリント更新に関する情報及び／またはトレースプリントが特定の値に調整されなければならないプログラムポイントに対応するトレースプリント調整に関する情報及び／または前記トレースプリントがある値に強制的になされなければならないプログラムポイントに対応するトレースプリントアサインメントに関する情報及び／または前記トレースプリントがチェックされなければならないプログラムポイントに対応するトレースプリント制御に関する情報が提供され、この情報が、
自動的に決定され、
前記プログラムコードに配置される命令から成っていて、引数としていかなる整数をとっても、プログラムルーチン呼び出しである前記トレースプリントに基づいて動作する指令の形で与えられ、かつ／または前記プログラムに補完的なテーブルの形で与えられ、
前記解析によって算出される前記値に従って完了され、かつ／または修正されることが可能である、
ことを特徴とする請求項８記載の方法。
【請求項１７】
各々のプログラムルーチンに対して、前記期待されるトレースプリント値が、以下の演算手順で決定され、前記以下の演算手順は、
調査されるべき全てのプログラムポイントを、第１のプログラムルーチン命令の形をなすシングルトンを用いて初期化するステップと、
前記プログラムルーチンのエントリポイントで、所定の初期トレースプリント値に等しいトレースプリント値を記憶するステップと、
調査されるべき前記一組のプログラムポイントがボイドでない限り、以下のステップを行うステップを含み、
前記以下のステップは、
調査されるべき前記一組のプログラムポイントから起点である１つのプログラムポイントを抽出するステップと、
目標ポイントとなる前記第１のプログラムルーチン命令の実行後に得られる可能なプログラムポイントの各々に対して以下のことを行うステップと、を含み、前記以下のことは、
前記目標ポイントがトレースプリントアサインメントを含む場合、かつ、この目標ポイントがまだ調査されていない場合に、前記目標ポイントにおいて、前記アサインメントによって画定される前記トレースポイント値を記憶するステップと、
前記目標ポイントがトレースプリントアサインメントを含まない場合、かつ、この目標ポイントがすでに調査されている場合に、前記起点におけるトレースプリント値を前記目標ポイントにおいて記憶された前記トレースポイント値上へと送出するトレースプリント調整を、前記起点における命令と前記目標ポイントにおける命令との間に、挿入するステップと、
前記目標ポイントがトレースプリントアサインメントを含まない場合、かつ、この目標ポイントがまだ調査されていない場合、前記起点と前記目標ポイントとの間に１つがある場合にトレースプリント更新によって任意に変更される、前記起点における前記トレースプリント値を前記目標ポイントにおいて記憶するステップと、
前記目標ポイントがまだ調査されていない場合、調査されるべき前記一組のプログラムポイント中の前記目標ポイントを追加するステップと、
であることを特徴とする請求項１６記載の方法。
【請求項１８】
前記トレースプリントは、そのエントリポイントからの、プログラムルーチン呼び出しを含む前記プログラムの完全な実行に関係し、
前記方法は、静的プログラムルーチン呼び出しの命令を前記呼び出されたプログラムルーチンの第１の命令に従って無条件分岐として処理することによって、動的プログラムルーチン呼び出しの命令を前記対応する呼び出されたプログラムルーチンの前記第１の命令に従って条件付き分岐として処理することによって、かつ前記復帰呼び出しの命令を前記対応する呼び出し直後に続く前記命令への分岐として処理することによって、一組のルーチンに適用されることを特徴とする請求項１６記載の方法。
【請求項１９】
前記プログラム及び／または前記実行マシンは、プログラムの一部でないルーチンまたは解析することができないルーチンであるルーチンに対する特定の呼び出しで保存されて、復帰呼び出しで復帰するように構成されていることを特徴とする請求項１１記載の方法。
【請求項２０】
前記プログラム及び／または前記実行マシンは、前記トレースプリントが、呼び出しの時点で動的に決定されるプログラムルーチンを含む特定のルーチンからの呼び出し及び復帰で調整されて以下の値に等しくなるよう構成されていて、
前記以下の値は、
呼び出されたプログラムルーチンのエントリ時に、前記呼び出されたプログラムルーチンの名前及び／またはシグネチャによって決まる値であって、前記名前及び／または前記シグネチャの暗号トレーシングプリントによって得られる値であり、
前記呼び出し中のプログラムルーチンにおける復帰後に、前記呼び出されたプログラムルーチンの前記名前及び／または前記シグネチャによって同様に決まる値であって、前記プログラムルーチン呼び出しが関係している各々の例外ハンドラは決定された値に前記トレースプリントをアサインメントしなければならず、例外が前記呼び出されたプログラムルーチンにおいて取り除かれると、前記例外ハンドラは影響を及ぼされることを特徴とする請求項１１記載の方法。
【請求項２１】
前記トレースプリントが実行マシンによって暗黙的に更新される場合に、
前記プログラムの非クリティカルコード部分を実行する場合、及び／またはプログラム状態がクリティカルでない場合、及び／またはトレースプリントチェックを実行していない前記特定のルーチンの実行の間、不必要な計算を避けるためにトレースプリント設定を一時的に停止することができ、
トレースプリント設定を停止していない場合、トレースプリント設定は各々の実行された命令に関係し、
当該実行された命令は、
そのすぐ次の引数のうちのいくつか、及び／または前記オペランドスタックの高さまたは前記オペランドにおける値の特定の型の存在である当該命令に対するいくつかのプログラム不変式、及び／または前記命令が分岐である場合に行われた分岐の選択を含み、
前記実行された命令が観察されるべき所定の命令のクラスに属するように設けられているならば、前記クラスは前記実行マシンに対して固定されるか、またはあらゆる命令コードをブール型で示して前記命令が観察されることになっているかどうかがわかるテーブルによって与えられ、前記テーブルは異なるプログラムルーチン及び／または異なるプログラムで異なっていることを特徴とする請求項３記載の方法。
【請求項２２】
トレースプリントアサインメント及びトレースプリント制御である前記トレースプリントに関する演算は、前記プログラムコードに明示的に挿入され、
トレースプリント調整である前記トレースプリントに関する演算は、補完的なプログラム情報に関して前記実行マシンによって明示的に実行され、
トレースプリント更新である前記トレースプリントに関する演算は、前記実行マシンによって暗黙的に実行される、
ことを特徴とする請求項１１記載の方法。
【請求項２３】
トレースプリント設定演算及び／またはチェック演算がプログラムルーチン呼び出しによって行われる場合、前記プログラムにはこれらのルーチンを実行するライブラリが付随されており、前記ライブラリは、実行プラットフォームにロードすると、必要なときは特別な作業をして前記プログラムに用いられ、
前記トレースプリントセット及びチェック演算が、補完的なプログラム情報によって表現され、かつ、前記実行プラットフォームが、この情報を用いることを知らず、かつ／または用いることができず、かつ／または用いたくない場合に、前記情報は無視されて整合性制御を用いることなく実行を可能にする、
ことを特徴とする請求項１１記載の方法。
【請求項２４】
前記プログラムの前記実行マシンは、トレースプリント算出についての特定の命令及び／またはトレースプリント更新についての特定の命令及び／またはトレースプリント調整についての特定の命令及び／またはトレースプリントアサインメントについての特定の命令及び／またはトレースプリント制御についての特定の命令及び／またはプログラムルーチンへの呼び出しに関するトレースプリント保存についての特定の命令、及びプログラムルーチンからの復帰に関するトレースプリント回復についての特定の命令を受け、これらの命令が前記プログラムコードにおいて明示的に現れ、かつ／または前記実行マシンを実行するために用いられることを特徴とする請求項１９記載の方法。
【請求項２５】
実行整合性の制御を可能にする実行システムであって、
前記システムはマイクロプロセッサを含み、前記マイクロプロセッサは、トレースプリント算出についての特定の命令及び／またはトレースプリント更新についての特定の命令及び／またはトレースプリント調整についての特定の命令及び／またはトレースプリントアサインメントについての特定の命令及び／またはトレースプリント制御についての特定の命令及び／またはルーチンへの呼び出しを減らすトレースプリントについての特定の命令、及びプログラムルーチンからの復帰でのトレースプリント回復についての特定の命令を受け、
前記制御は、
プログラム実行中に実行経路及び／または処理されるデータを表すトレースプリントを更新するステップと、
チェックフローについての特定の収束ポイントに至る前に前記実行経路に沿って前記トレースプリントを調整して、収束している経路のトレースプリント同士を等しくするステップと、
前記プログラムの決定されたポイントにおいて前記トレースプリントを期待値と比較するステップとを含み、
前記トレースポイントは、動的に算出された現在の値であり、前記期待値は、プログラム実行が妨げられない場合に前記トレースプリントが有するべき値に等しいよう静的に固定されており、
前記制御は更に、前記現在のトレースプリントが前記期待値と異なる場合に特定の処理を行うステップを含むことを特徴とする実行システム。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】００１５
【訂正方法】変更
【訂正の内容】
【００１５】
上記にあげた例における場合のように、例えば、≪h≫に対する線形合同を用いることが可能である。この線形合同も可逆的であるという特性を有する。より一般的には、以下の演算を結合するいかなる関数が用いられてもよい。即ち、加算、減算または、定数または≪x≫を用いる排他的論理（xor）、ビット定数のローテーション、奇数定数による乗算、である。
【誤訳訂正３】
【訂正対象書類名】明細書
【訂正対象項目名】００２２
【訂正方法】変更
【訂正の内容】
【００２２】
いずれにしても、プログラムは、プログラムがそのために設計されたサービスをもはや提供することができない。クリティカルなシステムにおいて、かかる状況下でとられる手段は、通常、いくつかのプログラムデータを保護することと完全にまたは完全にではなくてもプログラム実行を中断することとから成る。具体的に可能なときに、音または視覚の信号によって、うまく機能していないことをユーザに警告してもよい。
【誤訳訂正４】
【訂正対象書類名】明細書
【訂正対象項目名】００２６
【訂正方法】変更
【訂正の内容】
【００２６】
この方法は、以下を考慮に入れてもよい。
・トレースプリントは、プログラムのクリティカルなコード部分に関係するだけである。
・プログラムの所定のポイントにおいて、トレースプリントの期待値が、トレースプリント値が予測可能であるように、プログラムコードを任意に修正してもよい静的プログラム解析によって決定される。
【誤訳訂正５】
【訂正対象書類名】明細書
【訂正対象項目名】００２８
【訂正方法】変更
【訂正の内容】
【００２８】
期待されるトレースプリント値を決定するプログラム解析は、いくつかのステップに分割され得る。先ず、プログラムのプログラムルーチン（方法、サブプログラム、その他）が考慮される。
【誤訳訂正６】
【訂正対象書類名】明細書
【訂正対象項目名】００３５
【訂正方法】変更
【訂正の内容】
【００３５】
トレースプリント調整演算≪アジャストトレース(N)(adjustTrace(N))≫は、必ずしも≪トレース=トレース+N;（trace =trace+N;）≫の型の加算演算に基づく演算である必要はない。それは、より一般的には、≪トレース=アジャスト（トレース,N）;trace=adjust(trace,N); ≫として定義され得る。そこで、≪アジャストトレース(T,N) ((adjust(T,N)))がその第１の引数において可逆的な関数である。いかなる始点≪T≫のトレースプリント及びいかなる目標トレースプリント≪T'≫に対しても、知ることが必要とされる全ては、≪アジャストトレース(T,N) = T'( adjust(T,N) = T')≫であるようにどのように≪N = デルタ(T,T')(N = delta(T,T'))≫を決定するかである。
【誤訳訂正７】
【訂正対象書類名】明細書
【訂正対象項目名】００３７
【訂正方法】変更
【訂正の内容】
【００３７】
プログラムの例外ハンドラは、静的にトレースプリント値を決定することを難しくする。実行は、このハンドラによってカバーされるいかなる命令からも、ハンドラコードの開始上へとそれ自体を接続することができる。よって、ハンドラコードの開始時にトレースプリント値は、静的に予測できない。上記の通りの例外ハンドラによってカバーされる全ての命令のトレースプリント調整の挿入は、理論的にはハンドラの開始時に周知のトレースプリント値を確実にすることを可能にする。しかしながら、必要な調整の数が多いので、特に調整が≪アジャストトレース(N)(adjustTrace(N))≫型のプログラムルーチン呼び出しによって明示的にコード化される場合、これはコードサイズに関して高価であるかもしれない。加えて、調整は、例外ハンドラによってカバーされるコードの全区間にわたってトレースプリントを一定にする悪影響を有するだろう。そのときトレースプリントは、実行妨害を検出することにおいて効果がない。
【誤訳訂正８】
【訂正対象書類名】明細書
【訂正対象項目名】００４２
【訂正方法】変更
【訂正の内容】
【００４２】
同様に、トレースプリント算出及びその制御は、常にプログラムのクリティカルなコード部分に限られていてもよい。トレースプリント上で演算によって表されるような冗長を導くときに、このことがコードのサイズ増加を減少させることを可能にする。このことは、同様に、プログラムの追加の演算による低速化を減少させる。
【誤訳訂正９】
【訂正対象書類名】明細書
【訂正対象項目名】００４３
【訂正方法】変更
【訂正の内容】
【００４３】
トレースプリント上の演算は、プログラム演算（妨害がない場合）を修正しない。（≪アッドトレース(addTrace)≫型の）演算を更新するトレースプリント及び（≪アジャストトレース(adjustTrace)≫型の）トレースプリント調整演算は、プログラム実行ポイントとリンクしているチェックフローグラフのアーク上に概念的に配置される。このような方法で、トレースプリント更新及び調整が、実行の間カバーされるプログラムポイントだけでなく、いくつかの分岐が２つの同じポイントをリンクする場合を含むことに続く特定の分岐にも依存する。実際問題として、トレースプリント更新及び調整演算が効果的に実行可能プログラムコードに挿入されるときに、それらは、それらが配置されるアークの２つのプログラムポイントの間で、順番に実行されるように配置される。この挿入は、付加的な分岐の追加などのプログラムの軽微な局部的な変更を要求してもよい。
【誤訳訂正１０】
【訂正対象書類名】明細書
【訂正対象項目名】００４４
【訂正方法】変更
【訂正の内容】
【００４４】
その一方、（≪セットトレース(setTrace)≫型の）アサインメント演算及び（≪チェックトレース(checkTrace)≫型の）トレースポイント制御演算は、プログラムポイント上に概念的に配置されるか、これらのポイントの間でアーク以外の上に配置される。トレースプリント値は、プログラムポイントの特性である。所定のプログラムポイントに至る実行経路にかかわりなく、（動的に算出した）トレースプリントの現在値は、（静的に周知の）期待される固定値に等しくなければならない。さらに、この期待値は、トレースプリントアサインメント演算によって強制されてもよい。
【誤訳訂正１１】
【訂正対象書類名】明細書
【訂正対象項目名】００４５
【訂正方法】変更
【訂正の内容】
【００４５】
プログラムルーチンの各々の実行ポイントにおけるトレースプリント値及びトレースプリントを予測可能にするために挿入されるべき調整が、静的プログラム解析によって自動的に決定されてもよい。静的プログラム解析はトレースプリントを予測可能にしそれらを制御するために任意にプログラムコードを修正する。
【誤訳訂正１２】
【訂正対象書類名】明細書
【訂正対象項目名】００４７
【訂正方法】変更
【訂正の内容】
【００４７】
トレースプリント更新、アサインメント及び制御に関する情報は、例えば、プログラムコードにおける命令（コメント、プラグマ、効果的に実行されたコード、その他）の明示的な挿入によって与えられてもよい。かかる指令は、プログラム・チェックフローに関する所定の中立な考慮として与えられる。≪アッドトレース(addTrace)≫型のトレースプリント更新指令は、プログラムの（指令を除外する）２つの効果的実行位置の間に位置する。従って、概念的にプログラムを結びつけるアークに関して、トレースプリントアサインメント指令（≪セットトレース(setTrace)≫）及びトレースプリントチェック指令（≪チェックトレース(checkTrace)≫）はあとに続いている実行位置に関連する。同じことは、プログラム変換によって任意に挿入される指令にあてはまる。≪アジャストトレース(adjustTrace)≫型の調整指令は、同様に、（プログラムポイントに着く前にトレースプリント値を訂正するために）アーク上に、即ち、２つの実行位置の間に位置する。
【誤訳訂正１３】
【訂正対象書類名】明細書
【訂正対象項目名】００４８
【訂正方法】変更
【訂正の内容】
【００４８】
トレースプリントアサインメント指令は、従来のプログラム変換によって適当に導入されてもよい。実行分岐の数が所定の閾値より多い多くの実行分岐が集中するプログラムポイント毎に、この変換はたとえば組織的に≪セットトレース(setTrace)≫型の指令を配置してもよい。指令は、同様に、サブルーチン及び／または例外ハンドラ毎のエントリポイントにおいて組織的に配置されてもよい。
【誤訳訂正１４】
【訂正対象書類名】明細書
【訂正対象項目名】００４９
【訂正方法】変更
【訂正の内容】
【００４９】
同様に、トレースプリント更新指令によって処理される値は、従来のプログラム変換によって前もって決定されていてもよい。この更新に用いられる値（≪アッドトレース(addTrace)≫引数）は、一般に任意の定数である。従って、いかなる値（例えばランダム値など）が、指令の各々の出現に自動的に割り当てられてもよい。場合によっては、プログラムの不変式を用いることが望まれるかもしれない。この場合に、プログラムの静的解析が行われて、例えば、２つの変数の合計が一定であるという事実、変数が特定の閾値未満であるという事実、ループ繰り返しの数が周知であるという事実などといったあるプログラムポイントにおける不変式、を決定するために実行される。続いて、定数に関してトレースプリントを更新する代わりに、式がダイナミックプログラムに関連していたとしても、一定の値を有していなければならない式が用いられる。
【誤訳訂正１５】
【訂正対象書類名】明細書
【訂正対象項目名】００５０
【訂正方法】変更
【訂正の内容】
【００５０】
期待されるトレースプリント値を自動的に決定する方法は、そのとき、以下の演算手順によって定義される。即ち、
・第１のプログラムルーチンの命令の形をなすシングルトンによって、調査されるべき全てのプログラムポイントを初期化するステップと、
・プログラムルーチンエントリポイントで、得られた最初のトレースプリント値に等しいトレースプリント値を記憶するステップと、
・調査されるべき一組のプログラムポイントがボイドでない限り、
・調査されるべき一組のプログラムポイントから１つのプログラムポイント（起点）を抽出するステップと、
・命令の実行後に生じる可能なプログラムポイント（目標ポイント）の各々に対して、
目標ポイントがトレースプリントアサインメントを含み、かつ、この目標ポイントがまだ調査されていない場合、アサインメントによって定義されるトレースプリント値を目標ポイントで記憶するステップと、
目標ポイントがトレースプリントアサインメントを含まず、かつ、この目標ポイントがすでに調査されている場合、起点における命令と目標ポイントにおける命令との間に、目標ポイントにおいて記憶されたトレースにプリント値上へと起点におけるトレースプリント値を送出するトレースプリント調整を挿入するステップと、
目標ポイントがトレースプリントアサインメントを含まず、かつ、この目標ポイントがまだ調査されていない場合、起点と目標ポイントとの間に１つが存在する場合にトレースプリント更新によって任意に変更される起点におけるトレースプリント値を、目標ポイントで記憶するステップと、
目標ポイントがまだ調査されていない場合、調査されるべき一組のプログラムポイントにおいて目標ポイントを加えるステップと、
によってである。
【誤訳訂正１６】
【訂正対象書類名】明細書
【訂正対象項目名】００５１
【訂正方法】変更
【訂正の内容】
【００５１】
いくつかの言語は、上記に説明したような型トレースプリントセット及びトレースプリントチェックの中立の指令の簡単な取り扱いを許容しない。この場合、実際の命令を用いてプログラムコードを構成することから成る技術が用いられてもよい。
【誤訳訂正１７】
【訂正対象書類名】明細書
【訂正対象項目名】００５７
【訂正方法】変更
【訂正の内容】
【００５７】
sspush 13991
invokestatic checkTrace
自動的にトレースプリント値決定するこの方法は、プログラムループ及び再帰の巻き戻しを場合によっては実行するプログラム解析と組み合わされてもよい。そのとき、自動算出は、≪トレース=h(トレース,i)(trace=h(trace,i))≫がインデックス≪i≫のループ内にある上記の例においてのように、プログラム変数に関するトレースプリントで可能である。
【誤訳訂正１８】
【訂正対象書類名】明細書
【訂正対象項目名】００５８
【訂正方法】変更
【訂正の内容】
【００５８】
トレースプリントは、プログラムコード中に明示的に挿入される所定の観察ポイントから、上記に示したように算出されてもよい。トレースプリントは、また、バーチャルマシンのインタプリタによって自動的にかつ暗黙的に算出されてもよい。
【誤訳訂正１９】
【訂正対象書類名】明細書
【訂正対象項目名】００６１
【訂正方法】変更
【訂正の内容】
【００６１】
このコードは、次のように構成されてもよい。即ち、
while(1)｛
opcode = *pc++;
addTrace(opcode);
switch(opcode)｛
…
｝
｝
である。
【誤訳訂正２０】
【訂正対象書類名】明細書
【訂正対象項目名】００６３
【訂正方法】変更
【訂正の内容】
【００６３】
この間接的なトレースプリント更新は、期待されるトレースプリント値の自動決定について上記で説明した方法によって、明示的にかつ自動的に考慮に入れられてもよい。バーチャルマシンで見えるプログラムの不変式が、トレースプリント更新のために用いられてもよい。即ち、オペランドスタックの高さ、（スタックがタイプされる場合、または、データがそれらの型の識別を可能にする場合に）オペランドスタックにおけるある種の値の出現、である。
【誤訳訂正２１】
【訂正対象書類名】明細書
【訂正対象項目名】００６４
【訂正方法】変更
【訂正の内容】
【００６４】
バーチャルマシンによる間接的なトレースプリント算出用モデルは、ネイティブコードを実行しているマイクロプロセッサの場合に直接置き換えられてもよい。そうするために、マイクロプロセッサは、各々の実行された命令に対してトレースプリントを更新されるように設計されていなければならない。この方法で、≪トレース（trace）≫変数は、（入退出手順に関するトレース値を保存しかつ復帰するための）≪ロード(load)≫及び≪ストア(store)≫型、（トレース値を修正しかつ初期化するための）≪addi≫及び≪movi≫の命令を介してアクセスされる、プロセッサの特別なレジスタになる。
【誤訳訂正２２】
【訂正対象書類名】明細書
【訂正対象項目名】００６５
【訂正方法】変更
【訂正の内容】
【００６５】
実際的な視点から、トレースプリント設定は、プロセッサのクリティカルな経路がわずかに低速化されるようになされなければならない。それはまた、クリティカルなコードセクションでトレースプリント算出を実行することだけを可能にする、プロセッサの開放可能な機能モードであってもよい。この種の動的開放は、また、バーチャルマシンによる間接的なトレースプリント算出のために用いられてもよい。
【誤訳訂正２３】
【訂正対象書類名】明細書
【訂正対象項目名】００６７
【訂正方法】変更
【訂正の内容】
【００６７】
専用の命令は、また、バーチャルマシンの一組の命令に明示的に含まれてもよい。≪トレース(trace)≫変数に関して明示的に演算するかまたは≪アッドトレース(N) (addTrace(N))≫、≪セットトレース(T)(setTrace(T))≫、≪アジャストトレース(N))(adjustTrace(N))≫、及び≪チェックトレース(T)(checkTrace(T))≫といった型のプログラムルーチン呼び出しを生成する代わりに、これらの演算が、バーチャルマシンの専用の命令によって実行されてもよい。この場合、トレースプリント算出は暗黙的でない。それは、明示的であり、（任意に自動の）プログラムの構成を必要とする。
【誤訳訂正２４】
【訂正対象書類名】明細書
【訂正対象項目名】００６８
【訂正方法】変更
【訂正の内容】
【００６８】
この方法の有利な点は、速度の増加だけでだけでなくメモリサイズの増加でもある。例えば、JCVMオブジェクトコードにおいて呼び出し≪チェックトレース(42)(checkTrace(42))≫によって必要とされる６オクテットの代わりに、３オクテット（命令のための１及び短い整数引数に対する２）だけ必要になるだろう。トレースプリントが、実行マシン（バーチャルマシンまたはプロセッサ）によって自動的にかつ暗黙的に更新される場合、いくつかの改良が意図されてもよい。
【誤訳訂正２５】
【訂正対象書類名】明細書
【訂正対象項目名】００７４
【訂正方法】変更
【訂正の内容】
【００７４】
全ての上記の説明において、トレースプリントは、プログラムルーチンによる算出されたプログラムルーチンである。目的がなく、この変数の値を調べない、即ち≪チェックトレース(checkTrace)≫の型演算を含まないプログラムルーチンをインタプリティングする場合に変数≪トレース(trace)≫を更新することにおいて、実行時間に関して潜在的に高価である。プログラムルーチンが≪チェックトレース(checkTrace)≫演算を含むかどうか指示する情報が、プログラムルーチンコードの簡単な審査によって容易に決定されてもよい。
【誤訳訂正２６】
【訂正対象書類名】明細書
【訂正対象項目名】００７８
【訂正方法】変更
【訂正の内容】
【００７８】
理由は二重である。先ず、単一の≪チェックトレース(checkTrace)≫演算において、プログラムの完全な実行における、かつ、ちょうど≪チェックトレース(checkTrace)≫があるプログラムルーチンの実行においてでなく、妨害の欠如を制御する可能性であり、次に、トレースプリントが実行マシンによって暗黙的にセットされる場合に対して、このマシンの簡略化（各々の呼び出し上の≪トレース(trace)≫）を保存して元に戻すことはもはや必要ない）である。
【誤訳訂正２７】
【訂正対象書類名】明細書
【訂正対象項目名】００７９
【訂正方法】変更
【訂正の内容】
【００７９】
この方法での主な問題点は、プログラムポイント毎のトレースプリント値の静的算出である。この算出は、可能なままであるが、完全なプログラム（相互手続き的な）の解析かまたは各々のプログラムルーチンの開始時及び終了時においてトレースプリント値に関する不変式を決めることのいずれかを必要とする。
【誤訳訂正２８】
【訂正対象書類名】明細書
【訂正対象項目名】００８０
【訂正方法】変更
【訂正の内容】
【００８０】
全体的解析の方法では、静的解析の時点で、特にライブラリのプログラムにおいて他のプログラムに属しているプログラムルーチンを含む、プログラムエントリポイントから直接または間接に呼び出されてもよい全てのプログラムルーチンとしてコードが周知であると考えられる。
【誤訳訂正２９】
【訂正対象書類名】明細書
【訂正対象項目名】００８１
【訂正方法】変更
【訂正の内容】
【００８１】
この仮定の下で、トレースプリントの静的判定のための上記の方法は、次のように進む：各々のプログラムルーチンを個々に解析して変換する代わりに、呼び出されたプログラムルーチンの第１の命令に関する無条件の分岐としてのプログラムルーチン呼び出し命令（≪インヴォーク(invoke)≫, ≪コール(call)≫,その他）、及び、対応する呼び出しの直後に続いている命令の方への分岐としての復帰呼び出し命令（≪リターン(return)≫,その他）、を処理することによって、同時にすべて変換される。
【誤訳訂正３０】
【訂正対象書類名】明細書
【訂正対象項目名】００８２
【訂正方法】変更
【訂正の内容】
【００８２】
換言すれば、手順は、もはやプログラムルーチンのチェックフローグラフに関してではないが、プログラムルーチン呼び出し及び復帰命令に対応する追加のアークを含む相互手続き的チェックフローグラフに関してである。効果的に呼び出されるべきプログラムルーチンを動的に決定する命令（例えば、仮想方法またはインタフェース方法への呼び出しなど）に対して、呼び出しが動的に解決され得る全てのプログラムルーチンから／へ、アークが加えられるという点が注目される。例えば、JVMにおいて、≪インヴォークバーチャルC.m (invokevirtual C.m)≫の全ての目標方法の単純な近似が、クラス≪C≫またはそのサブクラスのうちの１つにおいて定義される方法≪m≫のグループである。（このグループのより良い近似は、静的チェックフロー解析を用いて得られてもよい）。
【誤訳訂正３１】
【訂正対象書類名】明細書
【訂正対象項目名】００８６
【訂正方法】変更
【訂正の内容】
【００８６】
相互手続き的チェック解析も軽減する別の解決法は、全てのプログラムルーチンの間で次の≪コントラクト(contract)≫を決めることから成る。名前≪r≫の各々のプログラムルーチンに対して、トレースプリント値がプログラムルーチンへのエントリで≪E(r)≫である場合、そのとき、トレースプリント値はプログラムルーチンを去るときに≪S(r)≫である。ここで、≪E≫及び≪S≫は、例えば暗号追跡プリントによって算出されるといった、プログラムルーチン名を任意のトレースプリント値に関連付ける関数である。特にそれがお互いに無関係なプログラムルーチンを区別することが可能である場合に、プログラムルーチンのシグネチャ（その引数及び戻り値の型）が同様に名前と関連付けられてもよい。
【誤訳訂正３２】
【訂正対象書類名】明細書
【訂正対象項目名】００８８
【訂正方法】変更
【訂正の内容】
【００８８】
この原則は、呼び出しの時点で動的に決定される方法に及ぶ。例えば≪ジャバ(Java)（登録商標）≫または≪ジャバカード(JavaCard)（登録商標）≫において、≪m≫が方法名であり≪s≫が方法のシグネチャである≪（m、s）≫の対が用いられてもよい。この一組のトレースプリントは、≪E(m、s)≫及び≪S(m（s）)の定義を可能にする。仮想方法が他の方法を再定義する場合、これらの２つの方法が同じ名前及び同じシグネチャ、よって、同じ値≪E≫及び≪S≫を有するということが注目されてもよい。方法呼び出し及び復帰に対するトレースプリントに関する≪コントラクト(contract)≫は、従って、同様の方法で適用される。
【誤訳訂正３３】
【訂正対象書類名】明細書
【訂正対象項目名】００８９
【訂正方法】変更
【訂正の内容】
【００８９】
プログラムルーチンの名前だけ（そして、任意にそれらのシグネチャ）が考慮に入れられる限り、トレースプリント値の決定は、プログラムルーチンによってプログラムの全部を知ることなくプログラムルーチンでなされてもよい。非回復の例外を介してプログラムルーチンから早期に出ることは、例外が引き起こされるときに、バーチャルマシン（暗黙的に）または例外ハンドラ（明示的に）が周知の定数値までトレースプリントを常に再初期化するという仮定上のいかなる追加の問題をも提起しない。
【誤訳訂正３４】
【訂正対象書類名】明細書
【訂正対象項目名】００９４
【訂正方法】変更
【訂正の内容】
【００９４】
コード（例えば、≪アッドトレース(addTrace)）、≪チェックトレース(checkTrace)≫、≪アジャストトレース(adjustTrace)≫及び≪セットトレース(setTrace)≫型のプログラムルーチンに対する呼び出しなど）において命令を挿入することによって明確にプログラムを修正するよりはむしろ、トレースプリントセット及びチェック・データがプログラムの実行可能なコードから独立しているテーブルに記憶されてもよい。これらのデータ項目は、トレースプリント演算が実行されるプログラムポイント及び関連する値（これらの演算の引数）を含んでもよい。それは、現在のプログラムポイントがテーブルに記憶されたプログラムポイントを通過する時に、これらの演算を担当して実行する実行マシン（例えばバーチャルマシン）である。
【誤訳訂正３５】
【訂正対象書類名】明細書
【訂正対象項目名】００９７
【訂正方法】変更
【訂正の内容】
【００９７】
トレースプリント算出及びチェック演算が標準化されない限り、上記に記載したような実行の整合性を制御するための構成されたプログラムが、適合されない実行プラットフォーム上で機能しないかもしれない。
【誤訳訂正３６】
【訂正対象書類名】明細書
【訂正対象項目名】００９８
【訂正方法】変更
【訂正の内容】
【００９８】
コードが、（型≪アッドトレース(addTrace)）、≪チェックトレース(checkTrace)≫、≪アジャストトレース(adjustTrace)≫及び≪セットトレース(setTrace)≫）のトレースプリントに関するプログラムルーチン呼び出しを明示的に示す場合、プログラムは、これらのプログラムルーチンを実行するライブラリによって付随されてもよい。そのとき、それは、全ての実行プラットフォーム上で可搬である。しかしながら、プラットフォームにより効果的な実行がある場合、それはプログラムに従属する実行の代わりに、後者を置換してもよい。