YONAPO RESEARCH
研究記録
MedDSL(仮称)

RESEARCH / RECORD

P2-m:縦断比較の手指定期待

原文 docs/research/57-p2-m-cases.md

18 KB

GitHubで見る

版 be280c0

この文書の目次 8項目

作成日:2026-10-21。状態:作成者側の手指定。実装前に固定する。設計56 の§8 の予測 W1〜W8 と反例 X1〜X9 に、具体的な入力と期待を与えます。期待は設計から手で導いた値で、runtime の出力から作りません。実装の結果と食い違った場合は、実装・期待・設計のどれが誤りかを調べて記録し、期待を実行結果に合わせて黙って更新しません。独立確認・評価用正解の凍結は未実施です。数値・単位・property はすべて架空です。

1. 標準の入力

P2-i の標準の入力 を使います。

項目 標準
slot S(主体 u)
数量 Q=点 2 u_ten(量種 k_a)。QB=点 3、QC=点 4(いずれも u_ten)
記録 A(S、期間 [10/1, 10/10)、記録 10/2、確定、method m v1、specimen s v1、property A@1、観測)。B は A を 10/4〜10/6 で部分訂正(QB、記録 10/6、確認 10/7)。C は B を 10/5〜10/6 で部分訂正(QC、記録 10/8、確認 10/9)
確認 RA(10/3)、RB(10/7)、RC(10/9)。いずれも人・内容一致
view v(参照時点 k=10/8)。方針 fiction:reviewed-scoped-measurement@1
query a(S、u_base、target_at 10/3)、b(S、u_base、target_at 10/5)。時点 n は 10/n
比較 c(view v、from a、to b、方針 fiction:independent-time-variables@1、必須能力 [p2-longitudinal-comparison-draft-1])

換算:u_base=1、u_ten=10、u_half=1/2、u_hundred=100(P2-l 後の表)、次元の違う v_base。標準の A は 2 u_ten=20 u_base。

2. 料金の設計値(手計算)

C は P2-i の全計画の料金(設計43の§6)、M=1+C+18×比較数+1。

入力 内訳 C 比較数 M
標準(記録A一つ、query a・b) 3+(1+1)+2×(2+1+0+8)=27 27 1 47
同じで比較二つ 27 2 65
A/B(B が A を部分訂正、k=10/8)、query a・b 4+(2+2)+2×(2+2+1+8)=34 34 1 54
A/B/C(k=10/9)、query 4つ(3・4・5・6) 5+(3+3)+4×(2+3+2+8)=71 71 3 127
標準に参照時点より後の記録Fを追加(Q を共有、記録 10/12、確認 10/13) 3+(2+2)+2×(2+1+0+8)=29 29 1 49
A/B、二view(k=10/6、10/8)、query a・b 4+[(2+2)+2×(2+2+0+8)]+[(2+2)+2×(2+2+1+8)]=4+28+30=62 62 2 100

k=10/6 の view では B は見えるが確認(10/7)が見えないので適格でなく、訂正辺を数えない。

3. 意味の期待(L:選択・関係・文脈・停止)

行は比較 c の行。特記がなければ、root は ok、meaning_mode=longitudinal_measurement_comparison、converted_to_base=false、clinical_assertions_added=[]、clinical_confirmation=not_evaluated、review_verification=structural_only、uncertainty_propagated=false、time_correlation_assumed=false、clinical_significance=not_evaluated、certificate.status=not_certified。computed の行は context_differences=[]、comparison_evidence.assumptions=[independent_time_variables, explicit_period_quantity_domain, scoped_revision]、comparison_evidence.direction=from_relative_to_to、quantity_compare の予約12・実費12、temporal_measurement の予約=実費=C。

3.1 関係(X1・X9・W2・W7)

ID 入力 期待
L01 標準。A を t=3 と 5 で比べる computed。relation_set=[equal]、certain equal。端点は両方 A。M=47
L02 Q を幅 [1,2] u_ten(閉)にする 両端点 [10,20]。relation_set=[less, equal, greater]、certain null(同じ記録でも alias にしない)
L03 Q を [1,2)(上端開)にする 両端点 [10,20)。[less, equal, greater]、certain null
L04 A/B。B は QB=点 3、文脈は A と同じ。t=3 と 5 端点 A(20)と B(30)。[less]、certain less。M=54
L05 L04 で QB=点 1 端点 A(20)、B(10)。[greater]、certain greater
L06 L04 で QB=点 2 A(20)と B(20)。[equal]、certain equal(別の記録でも点どうしは定まる)
L07 A/B。QA=[1,2]、QB=[2,3](いずれも閉)。t=3 と 5 [10,20] と [20,30]。[less, equal]、certain null
L08 QA=[1,2)(下端閉・上端開)、QB=(2,3](下端開・上端閉) [10,20) と (20,30]。接する点 20 はどちらも含まない。[less]、certain less
L09 QA=点 3/2、QB=[1,2] 15 と [10,20]。[less, equal, greater]
L10 QA=点 1/2、QB=[1,2] 5 と [10,20]。[less]、certain less
L11 QA=点 −3/2、QB=点 −2 −15 と −20。[greater]、certain greater
L12 L01 で端点の目標単位を変える:a→u_base、b→u_ten(同じ記録 A) 端点 from は 20 u_base、to は 2 u_ten。[equal]、certain equal
L13 L01 で b→u_half 端点 from は 20 u_base、to は 40 u_half(u_half の倍率は 1/2)。同じ量なので [equal]、certain equal

L12・L13 は、表す数が違っても同じ量なので関係は equal です。数だけを比べると less や greater に誤るため、導出リテラルが目標単位を保つことの検出に使います(W7)。

3.2 比較可能性(X2・W4)

A/B。B は A を部分訂正し、特記の欄だけ A と違う。t=3(A)と t=5(B)。

ID B の違い 期待
L20 method の version だけ(2) not_comparable、[different_method]、context_differences=[{field: method, from: A の method, to: B の method}]。relation_set/certain null、comparison_evidence null。端点の行は保持。M=54
L21 method の ref だけ [different_method]
L22 specimen の ref だけ [different_specimen]
L23 specimen の version だけ [different_specimen]
L24 property を A-other@1 にする(量種は同じ k_a) [different_property]
L25 上の三つ全部 [different_method, different_property, different_specimen]。context_differences は同じ順
L26 値・origin(観測→判断)だけ違う computed(文脈の一致は値・出自に依らない)。値は L04 に従う
L27 L20 の B で、t=3 と t=7(B の期間外)を比べる 両端点が A。文脈は一致。computed、[equal](B の文脈の違いは、選ばれなかった記録なので影響しない)
L28 L20 の B で、t=5 と t=6 を比べる(t=6 では A) 端点 B と A。[different_method] で not_comparable(比べる順に依らず不一致)

3.3 端点が止まる場合(X3・W5)

ID 入力 期待
L30 標準で b の target_at を 10/11(A の期間外) 端点 to が unassessed/no_adopted_measurement。比較は unassessed、理由 [no_adopted_measurement]、context_differences null、endpoints.from.status=computed、endpoints.to.status=unassessed、comparison_evidence null。M=47
L31 a を 10/11、b を 10/12 両端点が no_adopted_measurement。理由は重複なしで [no_adopted_measurement]
L32 A(期間 [1,10))と D(別数量 QD、期間 [1,4)、確認あり)に、訂正の関係がない。a=10/3、b=10/11 a は競合 unresolved_measurement_conflict、b は no_adopted_measurement。比較は unassessed、理由 [no_adopted_measurement, unresolved_measurement_conflict]
L33 A と、期間が unknown の確認済み記録 U(記録 10/4、確認 10/5) 両端点が validity_unknown。理由 [validity_unknown]
L34 可視の記録に未知の能力 両端点が unknown_capability。比較は unassessed、理由 [unknown_capability]、endpoints は保持(診断あり)
L35 比較自身の必須能力に未知のもの unassessed/[unknown_capability]。endpoints・evidence・context_differences は null。M=47
L36 比較が二つ(c1:未知能力、c2:標準)。同じ計画 c2 は computed [equal]。c1 の停止が c2 に影響しない。M=65
L37 b の目標単位を次元の違う v_base にする 端点 to は not_comparable/incompatible_dimension。比較は unassessed、理由 [incompatible_dimension]、endpoints.to.status=not_comparable
L38 B が suspected(確認あり)で、t=3 と 5 B は適格でない。t=5 は A。computed [equal]、端点は両方 A。endpoints.to.diagnostics.pending_records に B

3.4 参照時点・再現(C・G)

ID 入力 期待
L40 標準に、参照時点より後の記録 F(10/12)と確認(10/13)を追加 関係・端点の選択は L01 と同じ。source hash・料金だけが変わる(M=49)
L41 A/B、二view(k=10/6 と 10/8)。比較 c6(view=6)と c8(view=8)、query a・b c6:B の確認が見えないので両端点が A、[equal]。c8:A と B、[less]。M=100
L42 標準の四表・views・queries・comparisons を逆順にする 結果は ID 順で L01 と同じ関係・端点。入力 hash は変わり得る
L43 同じ組を二つの ID(c1、c2)で比べる 二行は ID 以外同一
L44 A/B/C(k=10/9)、query t=3・4・5・6(ID a・b・c・d)、比較 ab・bc・cd 値は A=20(t=3、6)、B=30(t=4)、C=40(t=5)。ab [less]、bc [less]、cd [greater]。M=127。ac のような比較を 推移から導くことはしない
L45 A と Q を ai_candidate にし、内容一致の確認を付ける computed [equal]。端点の record_origin.kind/quantity_origin.kind が ai_candidate。clinical_assertions_added=[]

3.5 接続面の閉包(X6・W6)

ID 入力 期待
L50 Q=点 2^62(63bit)u_ten。a・b とも目標 u_base P2-i は 10×2^62(66bit)を計算する。P2-f の入力は63bitまで。root は resource_limit、reason_codes=[rational_integer_limit]、steps_used=1+27+18=46、行は unassessed/未完了で五欄 null、incomplete=[{comparison: c, reason_codes: [rational_integer_limit]}]、認定なし
L51 L50 で目標を u_ten(元の単位) 値は 2^62 のまま(63bit)。computed [equal]
L52 Q=点 2^62 u_base、目標 u_base computed [equal](境界:63bit は通る)
L53 L50 で a だけ u_ten、b を u_base 端点 from の導出リテラルは63bit、to は66bit。どちらか一方の超過でも止まる。L50 と同じ resource_limit

4. 静的検査の期待(N)

状態と理由コード(予算に依らず同じ)。

ID 入力 状態 reason_codes
N01-missing comparisons/temporal_measurement_plan/consumer/budget のいずれかを欠く invalid_input missing_field
N01-null 計画が null invalid_input expected_object
N01-extra 要求・比較に未知の欄(例:artifact、child_result、certificate) invalid_input unknown_field
N01-duplicate 比較 ID の重複 invalid_input duplicate_identifier
N01-empty 比較が空 invalid_input empty_collection
N01-count 比較が65件 resource_limit item_limit
N02-view/from/to 参照が計画にない invalid_input unresolved_view_ref/unresolved_from_query_ref/unresolved_to_query_ref
N03-same/equal-time/reversed from=to の query、異なる query で target_at が同じ、from が後 invalid_input invalid_comparison_order
N04 二つの query の slot が異なる unsupported_profile unsupported_cross_slot_comparison
N05-policy 方針が fiction:same-variable-within-record@1 unsupported_profile unsupported_comparison_policy
N05-type 方針が文字列でない invalid_input expected_nonempty_string
N06-missing 必須能力に自己の profile がない invalid_input missing_comparison_capability
N06-type 必須能力が配列でない invalid_input expected_array
N07 consumer の profile・仕様 hash・P2-i の profile・仕様 hash・量の profile・仕様 hash の誤り unsupported_profile unsupported_profile/profile_spec_mismatch/temporal_measurement_profile_mismatch(二つ)/quantity_profile_mismatch(二つ)
N07-format 仕様 hash が64桁の16進でない invalid_input invalid_sha256
N08-schema/policy/compare 計画の schema の誤り、P2-i の view の方針の誤り、query が compare unsupported_profile unsupported_temporal_measurement_schema/unsupported_policy/unsupported_query_kind
N09-budget 計画に予算の欄がある invalid_input unknown_field
N10-quantity/validity/review 数量・期間を変えたのに確認の hash が旧い、確認が記録より前 invalid_input quantity_reference_hash_mismatch/review_record_hash_mismatch/review_precedes_record
N11-budget 予算が負・bool・100001 invalid_input/resource_limit invalid_step_budget/step_budget_limit

入力の不正は予算に依らず同じ結果です(予算0、1、7でも)。

5. 資源の期待(B)

ID 入力 期待
B01 標準(M=47)。予算 0・1・27・28・45・46・47・48 状態は予算≧47 で ok、他は resource_limit。steps_used=min(予算, 47)。行は予算≧46 で完成(関係あり)、未満で未完了(五欄 null、reason_codes=[step_limit])。予算=46 は行が完成し incomplete=[{stage: completion, reason_codes: [step_limit]}]。認定なし
B02 比較二つ(M=65)。予算 27・28・45・46・63・64・65 行0 は予算≧46 で、行1 は予算≧64 で完成。他は未完了。完成した行は後の停止で変わらない
B03 A/B(C=34、M=54)。予算 34・35・52・53・54 予算 34 は子の先払いの途中、35 は子を実行した後で行は未払い(steps_used=35)、53 で行が完成、54 で ok
B04 意味上停止する標準(L30、M=47)。予算 47 状態 ok、steps_used=47(意味上止まる行でも全額を払う)
B05 全計画の料金が上限を超える(64 view × 64 query、記録20)。予算 100000 resource_limit、steps_used=100000、全行未完了、子の P2-i は呼ばれない
B06 子の P2-f が部分結果を返す/資源停止する(注入) root は resource_limit。途中の値を拾わない。先に完成した比較は保持

予算の掃引では、完成した行の値が予算を増やしても変わらず、未完了の行の五欄はすべて null(空の object・配列・false にしない)、資源停止の root は認定されません。

6. 差分・不変性の検査(有限)

ID 検査 期待
D1 全ての(view、query)について、endpoints の行は、同じ計画を P2-i に直接渡した結果の行と完全に一致する 継承の差分 0(W8、LC-7)
D2 文脈を property(A@1、A-other@1)× specimen(s v1、s v2、別 ref)× method(m v1、m v2、別 ref)の18通りに変えた二つの記録の全324対について、P2-m(A と、A を部分訂正する B を、t=3 と 5 で比較)の different_* の理由集合は、P2-g(二つの slot に同じ主体・同じ瞬間の記録を置き、文脈だけを同じ組にして matched_context で比較)の different_property/different_specimen/different_method の部分と一致する 一致(W4)
D3 目標単位を同じ次元の単位の全ての組(63bit に収まる範囲)で変えて、関係の集合が不変 不変(W7)
D4 点・幅(閉・開・半開)・符号・単位の全数(小さい列挙)で、P2-m の関係が、元のリテラルを直接 P2-f の別計算で比べた関係と一致する 一致(第二の経路)
D5 妥当な未来の記録・確認の追加 完成した比較の関係・端点の選択は不変
D6 入力の不変性(呼び出しの前後で入力が同一)、四表の並べ替えで結果の意味が不変 不変

7. 検出すべき変異(実装時に選ぶ候補)

alias(二端点を同じ ID にする)、文脈の判定の省略、property だけを見る、slot の最初の記録の文脈で代用、最新の記録の文脈で代用、端点の入れ替え(from/to を逆にする)、値の中点で比べる、順序の検査の省略、slot の検査の省略、理由の和集合を一方だけにする、unassessed の端点でも関係を作る、先払いの省略(18→6)、子の実費の未照合(P2-i の C、P2-f の 12)、導出リテラルの上限超過時に元のリテラルへ切り替える、導出リテラルで目標単位を無視して数だけ渡す、認定票を certified にする、臨床の語(improved など)を結果に加える。

8. 前提と限界

  • 期待は設計56から手で導いた値です。標準の入力と料金は P2-i の手指定44 の計算規則に従い、L13 の単位換算と L08 の接する開区間は、手で端点の包含を確かめた値です。
  • 関係の語(less/equal/greater)は算術の関係で、増減・悪化・改善の意味を持ちません。equal は「同じ値でありうる」ことを含み、変化がないという臨床の判断ではありません。
  • 二点の関係から三点以上の関係を導きません(L44)。
  • 導出リテラルの上限(L50〜L53)は、この断片の接続面の制約の記録で、一般の数値処理の性能を主張しません。

P2-m

同じ区分の文書