You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
proofs(coq): close build-oracle cascade + re-enable verify-proofs (closes#49)
Completes the verify-proofs CI guard from issue #49. After PR #50's first
wave (file_content_operations + filesystem_model + copy_move is_prefix
reorder), the cascade ran deeper than the 5 enumerated errors:
Fixed (extends #49):
* copy_move_operations.v: 6 contradiction-direction + reflexivity-via-Hfile
fixes (copy_file_preserves_source, move_creates_destination,
move_preserves_content, move_reversible, copy_preserves_other_paths,
copy_then_move).
* filesystem_composition.v: 4 issues from #49 closed (Lia import,
operation_sequence_reversible rewrite direction + apply_sequence_app
helper, reversible_creates_CNO stale app_nil_r, path_prefix_app_invert
arg shape via Hpre_path save). Plus 4 not-in-#49: well_formed_ancestor_exists
(absurd typo + IHn vs Hind scope + symmetry), mkdir_preserves_well_formed
rewrite direction, rmdir_precondition_after_mkdir repeat-split overshoot.
* posix_errors.v: classic returns Prop but goal is sumbool — switch to
excluded_middle_informative; safe_rmdir <-> rmdir_precondition needs
explicit split (not repeat-split, since is_empty_dir nests).
* rmo_operations.v: omega → lia (Coq 8.14+); multi_pass helpers reordered
before obliterate_removes_path so the proof can use them; rewrite
multi_pass_preserves_tree/mapping in obliterate_preserves_other_*.
* extraction.v: missing Require Import String (Coq doesn't auto-import
on Extract Inductive); proofs/coq/.gitignore adds extracted/.
Three admits added (each model-gap, not laziness):
* filesystem_composition.v:611 Example mkdir_two_dirs_reversible —
non-LIFO sequence-reversal order; not derivable from
two_op_sequence_reversible as stated.
* rmo_operations.v:420 overwrite_pass_equalizes_storage — geometry
hypothesis missing block_overwritten constraint; conclusion provably
false for inputs with mismatched overwrite counters.
* rmo_operations.v:531 obliterate_not_injective — depends on the
admitted overwrite_pass_equalizes_storage.
(Pre-existing: filesystem_composition.v:238 single_op_reversible from
PR #48, OpRmdir/OpDeleteFile model gap.)
CI re-enablement:
* .github/workflows/validation.yml verify-proofs job: drop `if: false`,
install coq via apt-get (37s vs ~5min for coqorg image per
ephapax CI build oracle memory), build with coq_makefile + make -j1,
then Print Assumptions for single_op_reversible,
operation_sequence_reversible, reversible_creates_CNO,
copy_file_reversible to surface the registered model gaps in
the build log.
* proofs/coq/_CoqProject: remove "currently disabled" note,
bump last-verified to Coq 8.18.0 2026-06-01.
Build verified locally: 11/11 .vo files green from clean state.
0 commit comments