Skip to content

Commit 0eb7ea0

Browse files
nwatson22rv-auditorpalinatolmach
authored andcommitted
Fix failure info not being set in advance_proof on done proof (runtimeverification/pyk#951)
runtimeverification/kontrol#413 --------- Co-authored-by: devops <[email protected]> Co-authored-by: Palina Tolmach <[email protected]>
1 parent becb33e commit 0eb7ea0

File tree

5 files changed

+53
-6
lines changed

5 files changed

+53
-6
lines changed

pyk/docs/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
project = 'pyk'
1010
author = 'Runtime Verification, Inc'
1111
copyright = '2024, Runtime Verification, Inc'
12-
version = '0.1.686'
13-
release = '0.1.686'
12+
version = '0.1.687'
13+
release = '0.1.687'
1414

1515
# -- General configuration ---------------------------------------------------
1616
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

pyk/package/version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.1.686
1+
0.1.687

pyk/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
44

55
[tool.poetry]
66
name = "pyk"
7-
version = "0.1.686"
7+
version = "0.1.687"
88
description = ""
99
authors = [
1010
"Runtime Verification, Inc. <[email protected]>",

pyk/src/pyk/proof/proof.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,6 @@ def advance_proof(self, max_iterations: int | None = None, fail_fast: bool = Fal
326326
results = self.step_proof()
327327
for result in results:
328328
self.proof.commit(result)
329-
if self.proof.failed:
330-
self.proof.failure_info = self.failure_info()
331329
self.proof.write_proof_data()
330+
if self.proof.failed:
331+
self.proof.failure_info = self.failure_info()

pyk/src/tests/integration/proof/test_imp.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,6 +1049,53 @@ def test_failure_info(
10491049

10501050
assert actual_path_conds == expected_path_conds
10511051

1052+
@pytest.mark.parametrize(
1053+
'test_id,spec_file,spec_module,claim_id,expected_pending,expected_failing,path_conditions',
1054+
FAILURE_INFO_TEST_DATA,
1055+
ids=[test_id for test_id, *_ in FAILURE_INFO_TEST_DATA],
1056+
)
1057+
def test_failure_info_recomputed_on_proof_reinit(
1058+
self,
1059+
kprove: KProve,
1060+
kcfg_explore: KCFGExplore,
1061+
test_id: str,
1062+
spec_file: str,
1063+
spec_module: str,
1064+
claim_id: str,
1065+
expected_pending: int,
1066+
expected_failing: int,
1067+
path_conditions: tuple[KInner],
1068+
proof_dir: Path,
1069+
) -> None:
1070+
claim = single(
1071+
kprove.get_claims(Path(spec_file), spec_module_name=spec_module, claim_labels=[f'{spec_module}.{claim_id}'])
1072+
)
1073+
1074+
proof = APRProof.from_claim(kprove.definition, claim, logs={}, proof_dir=proof_dir)
1075+
proof_id = proof.id
1076+
kcfg_explore.simplify(proof.kcfg, {})
1077+
prover = APRProver(proof, kcfg_explore=kcfg_explore)
1078+
prover.advance_proof()
1079+
1080+
# reload proof from disk
1081+
proof = APRProof.read_proof_data(proof_dir, proof_id)
1082+
prover = APRProver(proof, kcfg_explore=kcfg_explore)
1083+
prover.advance_proof()
1084+
1085+
failure_info = proof.failure_info
1086+
assert isinstance(failure_info, APRFailureInfo)
1087+
1088+
actual_pending = len(failure_info.pending_nodes)
1089+
actual_failing = len(failure_info.failing_nodes)
1090+
1091+
assert expected_pending == actual_pending
1092+
assert expected_failing == actual_failing
1093+
1094+
actual_path_conds = set({path_condition for _, path_condition in failure_info.path_conditions.items()})
1095+
expected_path_conds = set({kprove.pretty_print(condition) for condition in path_conditions})
1096+
1097+
assert actual_path_conds == expected_path_conds
1098+
10521099
def test_apr_prove_read_write_node_data(
10531100
self,
10541101
kprove: KProve,

0 commit comments

Comments
 (0)