apalache
apalache copied to clipboard
[BUG] Skolem operator wrapping a non-existential triggers unrelated exceptions
Input specification
---------- MODULE test ----------
EXTENDS Apalache
Init == TRUE
Next == TRUE
Inv == Skolem(TRUE)
====================
The command line parameters used to run the tool
--inv=Inv --length=1
Description
BMC pass fails with:
PASS #13: BoundedChecker I@14:59:47.324
State 0: Checking 1 state invariants I@14:59:47.811
test.tla:6:8-6:19: rewriter error: No rewriting rule applies to expression: Apalache!Skolem(TRUE) E@14:59:47.819
at.forsyte.apalache.tla.bmcmt.RewriterException: No rewriting rule applies to expression: Apalache!Skolem(TRUE)
at at.forsyte.apalache.tla.bmcmt.SymbStateRewriterImpl.doRecursive$1(SymbStateRewriterImpl.scala:382)
at at.forsyte.apalache.tla.bmcmt.SymbStateRewriterImpl.rewriteUntilDone(SymbStateRewriterImpl.scala:401)
at at.forsyte.apalache.tla.bmcmt.rules.NegRule.apply(NegRule.scala:28)
at at.forsyte.apalache.tla.bmcmt.SymbStateRewriterImpl.rewriteOnce(SymbStateRewriterImpl.scala:336)
at at.forsyte.apalache.tla.bmcmt.SymbStateRewriterImpl.doRecursive$1(SymbStateRewriterImpl.scala:367)
at at.forsyte.apalache.tla.bmcmt.SymbStateRewriterImpl.rewriteUntilDone(SymbStateRewriterImpl.scala:401)
at at.forsyte.apalache.tla.bmcmt.trex.TransitionExecutorImpl.assertState(TransitionExecutorImpl.scala:196)
at at.forsyte.apalache.tla.bmcmt.trex.FilteredTransitionExecutor.assertState(FilteredTransitionExecutor.scala:88)
at at.forsyte.apalache.tla.bmcmt.trex.ConstrainedTransitionExecutor.assertState(ConstrainedTransitionExecutor.scala:102)
at at.forsyte.apalache.tla.bmcmt.SeqModelChecker.$anonfun$checkInvariants$2(SeqModelChecker.scala:267)
at at.forsyte.apalache.tla.bmcmt.SeqModelChecker.$anonfun$checkInvariants$2$adapted(SeqModelChecker.scala:255)
at scala.collection.TraversableLike$WithFilter.$anonfun$foreach$1(TraversableLike.scala:985)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:984)
at at.forsyte.apalache.tla.bmcmt.SeqModelChecker.checkInvariants(SeqModelChecker.scala:255)
at at.forsyte.apalache.tla.bmcmt.SeqModelChecker.$anonfun$prepareTransitionsAndCheckInvariants$6(SeqModelChecker.scala:177)
at at.forsyte.apalache.tla.bmcmt.SeqModelChecker.$anonfun$prepareTransitionsAndCheckInvariants$6$adapted(SeqModelChecker.scala:141)
at scala.collection.TraversableLike$WithFilter.$anonfun$foreach$1(TraversableLike.scala:985)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:984)
at at.forsyte.apalache.tla.bmcmt.SeqModelChecker.prepareTransitionsAndCheckInvariants(SeqModelChecker.scala:141)
at at.forsyte.apalache.tla.bmcmt.SeqModelChecker.makeStep(SeqModelChecker.scala:63)
at at.forsyte.apalache.tla.bmcmt.SeqModelChecker.run(SeqModelChecker.scala:47)
at at.forsyte.apalache.tla.bmcmt.passes.BoundedCheckerPassImpl.runIncrementalChecker(BoundedCheckerPassImpl.scala:131)
at at.forsyte.apalache.tla.bmcmt.passes.BoundedCheckerPassImpl.execute(BoundedCheckerPassImpl.scala:98)
at at.forsyte.apalache.infra.passes.PassChainExecutor.exec$1(PassChainExecutor.scala:22)
at at.forsyte.apalache.infra.passes.PassChainExecutor.run(PassChainExecutor.scala:37)
at at.forsyte.apalache.tla.Tool$.runCheck(Tool.scala:187)
at at.forsyte.apalache.tla.Tool$.$anonfun$run$3(Tool.scala:95)
at at.forsyte.apalache.tla.Tool$.handleExceptions(Tool.scala:322)
at at.forsyte.apalache.tla.Tool$.run(Tool.scala:95)
at at.forsyte.apalache.tla.Tool$.main(Tool.scala:45)
at at.forsyte.apalache.tla.Tool.main(Tool.scala)
Expected behavior
Static analysis should report that Skolem
is wrapping a non-existential and exit cleanly.
@konnov did this get fixed with the latest changes to Skolem
?
Not present in the current version anymore.