The following program causes silicon to crash when using the flags --moreJoins=1 or --moreJoins=2.
domain Array {
function array_loc(a: Array, i: Int): Ref
function alen(a: Array): Int
function loc_inv_1(loc: Ref): Array
function loc_inv_2(loc: Ref): Int
axiom {
(forall a: Array, i: Int ::
{ array_loc(a, i) }
loc_inv_1(array_loc(a, i)) == a && loc_inv_2(array_loc(a, i)) == i)
}
axiom {
(forall a: Array :: { alen(a) } alen(a) >= 0)
}
}
field int: Int
function aloc(a: Array, i: Int): Ref
requires 0 <= i
requires i < alen(a)
ensures loc_inv_1(result) == a
ensures loc_inv_2(result) == i
{
array_loc(a, i)
}
method sort(contrib: Array)
requires (forall i: Int ::
{ aloc(contrib, i) }
0 <= i && i < alen(contrib) ==>
acc(aloc(contrib, i).int, write))
{
if (0 < alen(contrib)) {
var i: Int
assume 0 <= i && i < alen(contrib)
label BEFOREFRAME
var once: Bool := true
while (once)
invariant once ==>
acc(aloc(contrib, i).int, write) &&
[(forperm obj: Ref [obj.int] :: obj.int == old[BEFOREFRAME](obj.int)), true]
{
once := false
}
}
}
The error message is:
[0] Verification aborted exceptionally (java.lang.RuntimeException: java.lang.RuntimeException: State merging failed: unexpected mismatch between symbolic states:
Field index h not equal
state1: viper.silicon.state.ListBackedHeap@6f8ec85a
state2: viper.silicon.state.ListBackedHeap@5a5130b
Field index quantifiedVariables not equal
state1: List((obj@13@16,None))
state2: List(), java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77))
Also included is the message Error at new merge function
Full output
Silicon 1.1-SNAPSHOT (274254ee+)
Error at new merge function:
Verification aborted exceptionally: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: State merging failed: unexpected mismatch between symbolic states:
Field index h not equal
state1: viper.silicon.state.ListBackedHeap@32a8cd83
state2: viper.silicon.state.ListBackedHeap@7e64ca94
Field index quantifiedVariables not equal
state1: List((obj@13@16,None))
state2: List()
java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: State merging failed: unexpected mismatch between symbolic states:
Field index h not equal
state1: viper.silicon.state.ListBackedHeap@32a8cd83
state2: viper.silicon.state.ListBackedHeap@7e64ca94
Field index quantifiedVariables not equal
state1: List((obj@13@16,None))
state2: List()
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at viper.silicon.Silicon.verify(Silicon.scala:205)
at viper.silicon.Silicon.verify(Silicon.scala:163)
at viper.silver.frontend.DefaultFrontend.verification(Frontend.scala:270)
at viper.silver.frontend.DefaultFrontend.verification$(Frontend.scala:268)
at viper.silicon.SiliconFrontend.viper$silver$frontend$SilFrontend$$super$verification(Silicon.scala:319)
at viper.silver.frontend.SilFrontend.verification(SilFrontend.scala:286)
at viper.silver.frontend.SilFrontend.verification$(SilFrontend.scala:259)
at viper.silicon.SiliconFrontend.verification(Silicon.scala:319)
at viper.silver.frontend.DefaultPhases.$anonfun$Verification$1(Frontend.scala:117)
at viper.silver.frontend.Frontend.$anonfun$runAllPhases$1(Frontend.scala:62)
at viper.silver.frontend.Frontend.$anonfun$runAllPhases$1$adapted(Frontend.scala:60)
at scala.collection.immutable.List.foreach(List.scala:333)
at viper.silver.frontend.Frontend.runAllPhases(Frontend.scala:60)
at viper.silver.frontend.Frontend.runAllPhases$(Frontend.scala:59)
at viper.silicon.SiliconFrontend.runAllPhases(Silicon.scala:319)
at viper.silver.frontend.SilFrontend.execute(SilFrontend.scala:221)
at viper.silver.frontend.SilFrontend.execute$(SilFrontend.scala:195)
at viper.silicon.SiliconFrontend.execute(Silicon.scala:319)
at viper.silicon.SiliconRunnerInstance.runMain(Silicon.scala:392)
at viper.silicon.SiliconRunner$.main(Silicon.scala:380)
at viper.silicon.SiliconRunner.main(Silicon.scala)
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: State merging failed: unexpected mismatch between symbolic states:
Field index h not equal
state1: viper.silicon.state.ListBackedHeap@32a8cd83
state2: viper.silicon.state.ListBackedHeap@7e64ca94
Field index quantifiedVariables not equal
state1: List((obj@13@16,None))
state2: List()
at java.base/java.util.concurrent.ForkJoinTask.reportExecutionException(ForkJoinTask.java:605)
at java.base/java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:981)
at viper.silicon.verifier.DefaultMainVerifier.$anonfun$verify$13(DefaultMainVerifier.scala:290)
at scala.collection.immutable.List.flatMap(List.scala:293)
at scala.collection.immutable.List.flatMap(List.scala:79)
at viper.silicon.verifier.DefaultMainVerifier.verify(DefaultMainVerifier.scala:290)
at viper.silicon.Silicon.viper$silicon$Silicon$$runVerifier(Silicon.scala:245)
at viper.silicon.Silicon$$anon$1.call(Silicon.scala:199)
at viper.silicon.Silicon$$anon$1.call(Silicon.scala:198)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: State merging failed: unexpected mismatch between symbolic states:
Field index h not equal
state1: viper.silicon.state.ListBackedHeap@32a8cd83
state2: viper.silicon.state.ListBackedHeap@7e64ca94
Field index quantifiedVariables not equal
state1: List((obj@13@16,None))
state2: List()
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:562)
at java.base/java.util.concurrent.ForkJoinTask.reportExecutionException(ForkJoinTask.java:604)
... 12 more
Caused by: java.lang.RuntimeException: State merging failed: unexpected mismatch between symbolic states:
Field index h not equal
state1: viper.silicon.state.ListBackedHeap@32a8cd83
state2: viper.silicon.state.ListBackedHeap@7e64ca94
Field index quantifiedVariables not equal
state1: List((obj@13@16,None))
state2: List()
at scala.sys.package$.error(package.scala:27)
at viper.silicon.state.State$.generateStateMismatchErrorMessage(State.scala:265)
at viper.silicon.state.State$.merge(State.scala:462)
at viper.silicon.rules.JoinDataEntry.pathConditionAwareMergeWithoutConsolidation(Joiner.scala:32)
at viper.silicon.rules.producer$.$anonfun$produceTlc$8(Producer.scala:246)
at viper.silicon.rules.joiner$.$anonfun$join$3(Joiner.scala:95)
at viper.silicon.interfaces.VerificationResult.combine(Verification.scala:45)
at viper.silicon.rules.joiner$.join(Joiner.scala:86)
at viper.silicon.rules.producer$.$anonfun$produceTlc$2(Producer.scala:250)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:173)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.producer$.produceTlc(Producer.scala:224)
at viper.silicon.rules.producer$.wrappedProduceTlc(Producer.scala:200)
at viper.silicon.rules.producer$.produceTlcs(Producer.scala:149)
at viper.silicon.rules.producer$.produces(Producer.scala:131)
at viper.silicon.rules.executor$.$anonfun$exec$5(Executor.scala:263)
at viper.silicon.rules.executionFlowController$.$anonfun$locally$1(ExecutionFlowController.scala:99)
at viper.silicon.rules.executionFlowController$.locallyWithResult(ExecutionFlowController.scala:62)
at viper.silicon.rules.executionFlowController$.locally(ExecutionFlowController.scala:99)
at viper.silicon.rules.executor$.exec(Executor.scala:260)
at viper.silicon.rules.executor$.follow(Executor.scala:86)
at viper.silicon.rules.executor$.follows(Executor.scala:121)
at viper.silicon.rules.executor$.$anonfun$exec$1(Executor.scala:217)
at viper.silicon.rules.executor$.execs(Executor.scala:319)
at viper.silicon.rules.executor$.$anonfun$execs$1(Executor.scala:317)
at viper.silicon.rules.executor$.$anonfun$exec$25(Executor.scala:327)
at viper.silicon.rules.executor$.$anonfun$exec2$1(Executor.scala:336)
at viper.silicon.rules.executor$.$anonfun$exec2$3(Executor.scala:366)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:157)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.executor$.exec2(Executor.scala:364)
at viper.silicon.rules.executor$.exec(Executor.scala:325)
at viper.silicon.rules.executor$.execs(Executor.scala:316)
at viper.silicon.rules.executor$.$anonfun$execs$1(Executor.scala:317)
at viper.silicon.rules.executor$.$anonfun$exec$25(Executor.scala:327)
at viper.silicon.rules.executor$.$anonfun$exec2$1(Executor.scala:336)
at viper.silicon.rules.executor$.exec2(Executor.scala:356)
at viper.silicon.rules.executor$.exec(Executor.scala:325)
at viper.silicon.rules.executor$.execs(Executor.scala:316)
at viper.silicon.rules.executor$.exec(Executor.scala:216)
at viper.silicon.rules.executor$.follow(Executor.scala:86)
at viper.silicon.rules.executor$.follows(Executor.scala:121)
at viper.silicon.rules.executor$.$anonfun$exec$1(Executor.scala:217)
at viper.silicon.rules.executor$.execs(Executor.scala:319)
at viper.silicon.rules.executor$.$anonfun$execs$1(Executor.scala:317)
at viper.silicon.rules.executor$.$anonfun$exec$25(Executor.scala:327)
at viper.silicon.rules.executor$.$anonfun$exec2$1(Executor.scala:336)
at viper.silicon.rules.executor$.$anonfun$exec2$35(Executor.scala:489)
at viper.silicon.rules.producer$.$anonfun$wrappedProduceTlc$1(Producer.scala:202)
at viper.silicon.rules.producer$.$anonfun$produceTlc$1(Producer.scala:217)
at viper.silicon.rules.producer$.$anonfun$produceTlc$87(Producer.scala:553)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.$anonfun$eval2$77(Evaluator.scala:472)
at viper.silicon.rules.evaluator$.$anonfun$evalBinOp$3(Evaluator.scala:1504)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.$anonfun$eval2$113(Evaluator.scala:536)
at viper.silicon.rules.evaluator$.$anonfun$evals2$2(Evaluator.scala:85)
at viper.silicon.rules.evaluator$.evals2(Evaluator.scala:82)
at viper.silicon.rules.evaluator$.$anonfun$evals2$1(Evaluator.scala:85)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:173)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.evaluator$.evals2(Evaluator.scala:84)
at viper.silicon.rules.evaluator$.evals(Evaluator.scala:75)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:531)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.evaluator$.$anonfun$evalBinOp$2(Evaluator.scala:1503)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:173)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.evaluator$.evalBinOp(Evaluator.scala:1502)
at viper.silicon.rules.evaluator$.evalBinOp(Evaluator.scala:1489)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:472)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.producer$.produceTlc(Producer.scala:551)
at viper.silicon.rules.producer$.wrappedProduceTlc(Producer.scala:200)
at viper.silicon.rules.producer$.produceTlcs(Producer.scala:149)
at viper.silicon.rules.producer$.produceR(Producer.scala:185)
at viper.silicon.rules.producer$.produce(Producer.scala:109)
at viper.silicon.rules.executor$.exec2(Executor.scala:487)
at viper.silicon.rules.executor$.exec(Executor.scala:325)
at viper.silicon.rules.executor$.execs(Executor.scala:316)
at viper.silicon.rules.executor$.$anonfun$execs$1(Executor.scala:317)
at viper.silicon.rules.executor$.$anonfun$exec$25(Executor.scala:327)
at viper.silicon.rules.executor$.$anonfun$exec2$1(Executor.scala:336)
at viper.silicon.rules.executor$.$anonfun$exec2$35(Executor.scala:489)
at viper.silicon.rules.producer$.$anonfun$wrappedProduceTlc$1(Producer.scala:202)
at viper.silicon.rules.producer$.$anonfun$produceTlc$1(Producer.scala:217)
at viper.silicon.rules.producer$.$anonfun$produceTlc$87(Producer.scala:553)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.$anonfun$eval2$75(Evaluator.scala:469)
at viper.silicon.rules.evaluator$.$anonfun$evalBinOp$3(Evaluator.scala:1504)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:173)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.evaluator$.$anonfun$evalBinOp$2(Evaluator.scala:1503)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:161)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.evaluator$.evalBinOp(Evaluator.scala:1502)
at viper.silicon.rules.evaluator$.evalBinOp(Evaluator.scala:1489)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:469)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.producer$.produceTlc(Producer.scala:551)
at viper.silicon.rules.producer$.wrappedProduceTlc(Producer.scala:200)
at viper.silicon.rules.producer$.produceTlcs(Producer.scala:149)
at viper.silicon.rules.producer$.produceR(Producer.scala:185)
at viper.silicon.rules.producer$.produce(Producer.scala:109)
at viper.silicon.rules.executor$.exec2(Executor.scala:487)
at viper.silicon.rules.executor$.exec(Executor.scala:325)
at viper.silicon.rules.executor$.execs(Executor.scala:316)
at viper.silicon.rules.executor$.$anonfun$execs$1(Executor.scala:317)
at viper.silicon.rules.executor$.$anonfun$exec$25(Executor.scala:327)
at viper.silicon.rules.executor$.$anonfun$exec2$1(Executor.scala:336)
at viper.silicon.rules.executor$.exec2(Executor.scala:361)
at viper.silicon.rules.executor$.exec(Executor.scala:325)
at viper.silicon.rules.executor$.execs(Executor.scala:316)
at viper.silicon.rules.executor$.$anonfun$execs$1(Executor.scala:317)
at viper.silicon.rules.executor$.$anonfun$exec$25(Executor.scala:327)
at viper.silicon.rules.executor$.$anonfun$exec2$1(Executor.scala:336)
at viper.silicon.rules.executor$.exec2(Executor.scala:361)
at viper.silicon.rules.executor$.exec(Executor.scala:325)
at viper.silicon.rules.executor$.execs(Executor.scala:316)
at viper.silicon.rules.executor$.exec(Executor.scala:216)
at viper.silicon.rules.executor$.$anonfun$follow$2(Executor.scala:75)
at viper.silicon.rules.brancher$.$anonfun$branch$10(Brancher.scala:198)
at viper.silicon.rules.executionFlowController$.$anonfun$locally$1(ExecutionFlowController.scala:99)
at viper.silicon.rules.executionFlowController$.locallyWithResult(ExecutionFlowController.scala:62)
at viper.silicon.rules.executionFlowController$.locally(ExecutionFlowController.scala:99)
at viper.silicon.rules.brancher$.branch(Brancher.scala:194)
at viper.silicon.rules.executor$.$anonfun$follow$1(Executor.scala:79)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.$anonfun$eval2$77(Evaluator.scala:472)
at viper.silicon.rules.evaluator$.$anonfun$evalBinOp$3(Evaluator.scala:1504)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.$anonfun$eval2$113(Evaluator.scala:536)
at viper.silicon.rules.evaluator$.$anonfun$evals2$2(Evaluator.scala:85)
at viper.silicon.rules.evaluator$.evals2(Evaluator.scala:82)
at viper.silicon.rules.evaluator$.$anonfun$evals2$1(Evaluator.scala:85)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:173)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.evaluator$.evals2(Evaluator.scala:84)
at viper.silicon.rules.evaluator$.evals(Evaluator.scala:75)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:531)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.evaluator$.$anonfun$evalBinOp$2(Evaluator.scala:1503)
at viper.silicon.rules.evaluator$.$anonfun$eval$1(Evaluator.scala:97)
at viper.silicon.rules.evaluator$.$anonfun$eval3$3(Evaluator.scala:149)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:161)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.evaluator$.evalBinOp(Evaluator.scala:1502)
at viper.silicon.rules.evaluator$.evalBinOp(Evaluator.scala:1489)
at viper.silicon.rules.evaluator$.eval2(Evaluator.scala:472)
at viper.silicon.rules.evaluator$.eval3(Evaluator.scala:134)
at viper.silicon.rules.evaluator$.eval(Evaluator.scala:95)
at viper.silicon.rules.executor$.follow(Executor.scala:69)
at viper.silicon.rules.executor$.$anonfun$follows$14(Executor.scala:195)
at viper.silicon.interfaces.VerificationResult.combine(Verification.scala:45)
at viper.silicon.rules.executor$.$anonfun$follows$13(Executor.scala:195)
at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:183)
at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:179)
at scala.collection.immutable.List.foldLeft(List.scala:79)
at viper.silicon.rules.executor$.follows(Executor.scala:189)
at viper.silicon.rules.executor$.$anonfun$exec$1(Executor.scala:217)
at viper.silicon.rules.executor$.execs(Executor.scala:319)
at viper.silicon.rules.executor$.exec(Executor.scala:216)
at viper.silicon.rules.executor$.exec(Executor.scala:207)
at viper.silicon.supporters.DefaultMethodVerificationUnitProvider$methodSupporter$.$anonfun$verify$16(MethodSupporter.scala:113)
at viper.silicon.rules.executionFlowController$.$anonfun$locally$1(ExecutionFlowController.scala:99)
at viper.silicon.rules.executionFlowController$.locallyWithResult(ExecutionFlowController.scala:62)
at viper.silicon.rules.executionFlowController$.locally(ExecutionFlowController.scala:99)
at viper.silicon.supporters.DefaultMethodVerificationUnitProvider$methodSupporter$.$anonfun$verify$15(MethodSupporter.scala:112)
at viper.silicon.interfaces.NonFatalResult.$amp$amp(Verification.scala:84)
at viper.silicon.supporters.DefaultMethodVerificationUnitProvider$methodSupporter$.$anonfun$verify$11(MethodSupporter.scala:112)
at viper.silicon.rules.producer$.$anonfun$wrappedProduceTlc$1(Producer.scala:202)
at viper.silicon.rules.producer$.$anonfun$produceTlc$1(Producer.scala:217)
at viper.silicon.rules.quantifiedChunkSupporter$.$anonfun$produce$13(QuantifiedChunkSupport.scala:1074)
at viper.silicon.rules.quantifiedChunkSupporter$.$anonfun$produce$13$adapted(QuantifiedChunkSupport.scala:1003)
at viper.silicon.decider.DefaultDeciderProvider$decider$.assert(Decider.scala:386)
at viper.silicon.rules.quantifiedChunkSupporter$.$anonfun$produce$12(QuantifiedChunkSupport.scala:1003)
at viper.silicon.rules.quantifiedChunkSupporter$.$anonfun$produce$12$adapted(QuantifiedChunkSupport.scala:981)
at viper.silicon.decider.DefaultDeciderProvider$decider$.assert(Decider.scala:386)
at viper.silicon.rules.quantifiedChunkSupporter$.produce(QuantifiedChunkSupport.scala:981)
at viper.silicon.rules.producer$.$anonfun$produceTlc$58(Producer.scala:457)
at viper.silicon.rules.evaluator$.$anonfun$evalQuantified$16(Evaluator.scala:1372)
at viper.silicon.rules.executionFlowController$.$anonfun$locallyWithResult$3(ExecutionFlowController.scala:89)
at viper.silicon.interfaces.NonFatalResult.$amp$amp(Verification.scala:84)
at viper.silicon.rules.executionFlowController$.locallyWithResult(ExecutionFlowController.scala:89)
at viper.silicon.rules.evaluator$.evalQuantified(Evaluator.scala:1368)
at viper.silicon.rules.producer$.produceTlc(Producer.scala:430)
at viper.silicon.rules.producer$.wrappedProduceTlc(Producer.scala:200)
at viper.silicon.rules.producer$.produceTlcs(Producer.scala:149)
at viper.silicon.rules.producer$.produces(Producer.scala:131)
at viper.silicon.supporters.DefaultMethodVerificationUnitProvider$methodSupporter$.$anonfun$verify$9(MethodSupporter.scala:101)
at viper.silicon.rules.executionFlowController$.$anonfun$locally$1(ExecutionFlowController.scala:99)
at viper.silicon.rules.executionFlowController$.locallyWithResult(ExecutionFlowController.scala:62)
at viper.silicon.rules.executionFlowController$.locally(ExecutionFlowController.scala:99)
at viper.silicon.supporters.DefaultMethodVerificationUnitProvider$methodSupporter$.verify(MethodSupporter.scala:100)
at viper.silicon.verifier.DefaultMainVerifier.$anonfun$verify$8(DefaultMainVerifier.scala:265)
at viper.silicon.verifier.VerificationPoolManager$WorkerAwareForkJoinTask.compute(VerificationPoolManager.scala:153)
at viper.silicon.verifier.VerificationPoolManager$WorkerAwareForkJoinTask.compute(VerificationPoolManager.scala:146)
at java.base/java.util.concurrent.RecursiveTask.exec(RecursiveTask.java:100)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Cause: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: State merging failed: unexpected mismatch between symbolic states:
Field index h not equal
state1: viper.silicon.state.ListBackedHeap@32a8cd83
state2: viper.silicon.state.ListBackedHeap@7e64ca94
Field index quantifiedVariables not equal
state1: List((obj@13@16,None))
state2: List()
Silicon found 1 error in 4.49s:
[0] Verification aborted exceptionally (java.lang.RuntimeException: java.lang.RuntimeException: State merging failed: unexpected mismatch between symbolic states:
Field index h not equal
state1: viper.silicon.state.ListBackedHeap@32a8cd83
state2: viper.silicon.state.ListBackedHeap@7e64ca94
Field index quantifiedVariables not equal
state1: List((obj@13@16,None))
state2: List(), java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77))
Somewhere along the way of minimising this the Field index smCache is not equal part of the error message stopped appearing.
The following program causes silicon to crash when using the flags
--moreJoins=1or--moreJoins=2.The error message is:
Also included is the message
Error at new merge functionFull output
Somewhere along the way of minimising this the
Field index smCache is not equalpart of the error message stopped appearing.