sorry を含む宣言に依存している公開定理が、proof_status を持たないため site 上で verified として表示される。
schema の定義
docs/schemas/corpus.schema.json は contains-sorry を次のように定義している。
'contains-sorry' = the proof body has a literal sorry (directly or via a sorry-dependent private helper).
つまり推移的な依存も対象である。一方、proof_status の欠落は verified と解釈される(同 schema)。したがって依存側に印が無いと、未証明に依存する定理が完了済みとして提示される。
実測(PIN 2a0679058d97979a4fba589bd92d0786ed09b97f)
自身の証明本体に literal sorry を持つ宣言は 6 件で、いずれも corpus 側で contains-sorry が付いている(notes#74 Wave 12 / PR #145 で 1 件の欠落を復元し、test/issue74_proof_status_preserved.test.py で固定した)。
問題はその呼び出し側である。sorry を持つ宣言は private または同一ファイル内にあるため、呼び出し元を同一ファイル内で機械的に洗い出した結果:
呼び出し元(tier: full・public) |
使っている sorry 宣言 |
呼び出し元の proof_status |
LerayHopf.Bochner.timeConvL2_weakDeriv_comm |
timeConv_prod_integrable(private) |
なし → verified 扱い |
LerayHopf.Bochner.timeMollification_of_w1pTime |
timeMollification_exists |
なし → verified 扱い |
LerayHopf.Bochner.w1pTime_continuous_in_Vprime |
isWeakTimeDeriv_primitive |
なし → verified 扱い |
いずれも Bochner の実験的な時間層のもので、本 issue 起票時点で 3 件とも corpus ファイルは存在するが proof_status を持たない。
1 件目は schema の文言に真正面から該当する
timeConv_prod_integrable は private であり、schema の「via a sorry-dependent private helper」にそのまま当てはまる。証明本体に呼び出しがあることをソースで確認済み。
-- TimeMollifierInterval.lean, timeConvL2_weakDeriv_comm の証明中
have hint_u := timeConv_prod_integrable hψ'cont hψ'cs hρ hu
なお残っている sorry は Fubini 適用の側条件(コンパクトな箱の上での $L^1$ 評価)であり、上流に ALLOW_SORRY の注記がある。入れ替えの等式そのものは無条件に証明されている。
2・3 件目は schema の文言が明示していない
timeMollification_exists と isWeakTimeDeriv_primitive は private ではない(それ自体が contains-sorry として印付けされている公開宣言)。schema の文言は private helper 経由の場合しか述べていないため、公開宣言経由の推移的依存を印付けするかどうかは方針判断になる。
判断が必要な点
機械化の障害: decls.json の uses は今回の依存を捉えていない(timeConvL2_weakDeriv_comm の uses に timeConv_prod_integrable が現れない)。private 宣言が依存グラフに記録されていない可能性が高く、推移閉包を自動で出すには抽出側の変更か Lean 環境からの取得が要る。
Acceptance criteria
関連
sorryを含む宣言に依存している公開定理が、proof_statusを持たないため site 上で verified として表示される。schema の定義
docs/schemas/corpus.schema.jsonはcontains-sorryを次のように定義している。つまり推移的な依存も対象である。一方、
proof_statusの欠落はverifiedと解釈される(同 schema)。したがって依存側に印が無いと、未証明に依存する定理が完了済みとして提示される。実測(PIN
2a0679058d97979a4fba589bd92d0786ed09b97f)自身の証明本体に literal
sorryを持つ宣言は 6 件で、いずれも corpus 側でcontains-sorryが付いている(notes#74 Wave 12 / PR #145 で 1 件の欠落を復元し、test/issue74_proof_status_preserved.test.pyで固定した)。問題はその呼び出し側である。
sorryを持つ宣言は private または同一ファイル内にあるため、呼び出し元を同一ファイル内で機械的に洗い出した結果:tier: full・public)proof_statusLerayHopf.Bochner.timeConvL2_weakDeriv_commtimeConv_prod_integrable(private)LerayHopf.Bochner.timeMollification_of_w1pTimetimeMollification_existsLerayHopf.Bochner.w1pTime_continuous_in_VprimeisWeakTimeDeriv_primitiveいずれも
Bochnerの実験的な時間層のもので、本 issue 起票時点で 3 件とも corpus ファイルは存在するがproof_statusを持たない。1 件目は schema の文言に真正面から該当する
timeConv_prod_integrableはprivateであり、schema の「via a sorry-dependent private helper」にそのまま当てはまる。証明本体に呼び出しがあることをソースで確認済み。なお残っている$L^1$ 評価)であり、上流に
sorryは Fubini 適用の側条件(コンパクトな箱の上でのALLOW_SORRYの注記がある。入れ替えの等式そのものは無条件に証明されている。2・3 件目は schema の文言が明示していない
timeMollification_existsとisWeakTimeDeriv_primitiveはprivateではない(それ自体がcontains-sorryとして印付けされている公開宣言)。schema の文言は private helper 経由の場合しか述べていないため、公開宣言経由の推移的依存を印付けするかどうかは方針判断になる。判断が必要な点
Bochner実験層に依存する広い範囲に波及しうるextracted/decls.jsonの依存情報から機械生成するか機械化の障害:
decls.jsonのusesは今回の依存を捉えていない(timeConvL2_weakDeriv_commのusesにtimeConv_prod_integrableが現れない)。private 宣言が依存グラフに記録されていない可能性が高く、推移閉包を自動で出すには抽出側の変更か Lean 環境からの取得が要る。Acceptance criteria
関連
timeConv_prod_integrableのproof_status欠落を復元し、test/issue74_proof_status_preserved.test.pyを追加した。同検査は自身の証明にsorryを持つ 6 件を固定するもので、本 issue の推移的依存は対象外である。