Skip to content

Commit

Permalink
Support expected/unexpected results in parallel proofs
Browse files Browse the repository at this point in the history
Ref. #625
  • Loading branch information
Alexander Senier committed Aug 18, 2021
1 parent 01696ce commit f333e33
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions rflx/model/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -641,13 +641,13 @@ def __compute_field_condition(self, final: Field) -> expr.Expr:
)


class Proofs:
class ParallelProofs:
def __init__(self) -> None:
self.proofs: List[
List[Tuple[expr.Expr, List[expr.Expr], expr.ProofResult, RecordFluxError, bool]]
List[Tuple[expr.Expr, List[expr.Expr], expr.ProofResult, RecordFluxError, bool, bool]]
] = []
self.current: List[
Tuple[expr.Expr, List[expr.Expr], expr.ProofResult, RecordFluxError, bool]
Tuple[expr.Expr, List[expr.Expr], expr.ProofResult, RecordFluxError, bool, bool]
] = []

def add(
Expand All @@ -656,9 +656,10 @@ def add(
facts: List[expr.Expr],
expected: expr.ProofResult,
message: RecordFluxError,
unexpected: bool = False,
add_unsat: bool = False,
) -> None:
self.current.append((goal, facts, expected, message, add_unsat))
self.current.append((goal, facts, expected, message, unexpected, add_unsat))

def pop(self) -> None:
if self.current:
Expand All @@ -671,9 +672,9 @@ def check_proof(
argument: List[Tuple[expr.Expr, List[expr.Expr], expr.ProofResult, RecordFluxError, bool]],
) -> RecordFluxError:
result = RecordFluxError()
for goal, facts, expected, message, add_unsat in argument:
for goal, facts, expected, message, unexpected, add_unsat in argument:
proof = goal.check(facts)
if proof.result == expected:
if unexpected == (proof.result != expected):
continue
result.extend(message)
if add_unsat:
Expand All @@ -688,7 +689,7 @@ def check_proof(
def check(self, error: RecordFluxError) -> None:
self.pop()
with ProcessPoolExecutor() as executor:
for e in executor.map(Proofs.check_proof, self.proofs):
for e in executor.map(ParallelProofs.check_proof, self.proofs):
error.extend(e)
error.propagate()

Expand Down Expand Up @@ -1416,7 +1417,7 @@ def __prove_overlays(self) -> None:

def __prove_field_positions(self) -> None:
# pylint: disable=too-many-locals
proofs = Proofs()
proofs = ParallelProofs()
for f in (*self.fields, FINAL):
for path in self.paths(f):
last = path[-1]
Expand Down

0 comments on commit f333e33

Please sign in to comment.