mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-05 04:27:09 +00:00
fix(ltl): eliminate implies and bounded-always false-negatives
Rewrite a -> b to (not a) or b in NNF so a pending temporal antecedent can no longer defer the whole implication and drop a consequent that was false at the current step. Carry a pending inner past a bounded-Always window close instead of dropping it to holds, so a deferred obligation is resolved by a later step or Finalize.
This commit is contained in:
1 parent
283bf44920
commit
1834019419
2 files changed
+27
-19
No files matched your search
+7
-3
@@ -26,9 +26,13 @@ func nnf(formula Formula) Formula {
|
||||
case OrFormula:
|
||||
return OrFormula{Left: nnf(concrete.Left), Right: nnf(concrete.Right)}
|
||||
case ImpliesFormula:
|
||||
return ImpliesFormula{
|
||||
Antecedent: nnf(concrete.Antecedent),
|
||||
Consequent: nnf(concrete.Consequent),
|
||||
// a -> b is rewritten to (not a) or b so the consequent is always
|
||||
// reduced live each step. Keeping it as ImpliesFormula let a pending
|
||||
// (temporal) antecedent defer the whole implication and silently drop a
|
||||
// consequent that was false at the current step.
|
||||
return OrFormula{
|
||||
Left: pushNot(concrete.Antecedent),
|
||||
Right: nnf(concrete.Consequent),
|
||||
}
|
||||
default:
|
||||
return formula
|
||||
|
||||
Reference in new issue
Block a user