Skip to content

Function with quantification in the precondition crashes with "variable i is not defined" #271

@viper-admin

Description

@viper-admin

Created by @fpoli on 2019-05-06 13:05
Last updated on 2019-09-16 09:13

The following program crashes with Internal Error: variable i is not defined

predicate P(self: Ref)

function foo(s: Seq[Ref]): Bool 
    requires forall i: Int :: { s[i] } 0 <= i && i < |s| ==> P(s[i])
{
    true
}

Exception:

Exception in thread "main" java.lang.RuntimeException: Internal Error: variable i is not defined.
	at scala.sys.package$.error(package.scala:26)
	at viper.carbon.verifier.Environment.get(Environment.scala:53)
	at viper.carbon.modules.impls.DefaultExpModule.translateLocalVar(DefaultExpModule.scala:285)
	at viper.carbon.modules.impls.DefaultExpModule.translateExp(DefaultExpModule.scala:68)
	at viper.carbon.modules.impls.DefaultSeqModule.t$1(DefaultSeqModule.scala:52)
	at viper.carbon.modules.impls.DefaultSeqModule.translateSeqExp(DefaultSeqModule.scala:73)
	at viper.carbon.modules.impls.DefaultExpModule.translateExp(DefaultExpModule.scala:258)
	at viper.carbon.modules.impls.DefaultHeapModule.$anonfun$translateLocation$1(DefaultHeapModule.scala:418)
	at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
	at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:58)
	at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:51)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at scala.collection.TraversableLike.map(TraversableLike.scala:233)
	at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at viper.carbon.modules.impls.DefaultHeapModule.translateLocation(DefaultHeapModule.scala:418)
	at viper.carbon.modules.impls.DefaultHeapModule.predicateTrigger(DefaultHeapModule.scala:386)
	at viper.carbon.modules.impls.DefaultFuncPredModule.$anonfun$definitionalAxiom$8(DefaultFuncPredModule.scala:265)
	at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
	at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:58)
	at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:51)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at scala.collection.TraversableLike.map(TraversableLike.scala:233)
	at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at viper.carbon.modules.impls.DefaultFuncPredModule.definitionalAxiom(DefaultFuncPredModule.scala:265)
	at viper.carbon.modules.impls.DefaultFuncPredModule.translateFunction(DefaultFuncPredModule.scala:198)
	at viper.carbon.modules.impls.DefaultMainModule.$anonfun$translate$3(DefaultMainModule.scala:65)
	at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:240)
	at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:58)
	at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:51)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at scala.collection.TraversableLike.flatMap(TraversableLike.scala:240)
	at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:237)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at viper.carbon.modules.impls.DefaultMainModule.translate(DefaultMainModule.scala:65)
	at viper.carbon.CarbonVerifier.verify(CarbonVerifier.scala:134)
	at viper.silver.frontend.DefaultFrontend.verification(Frontend.scala:242)
	at viper.silver.frontend.DefaultFrontend.verification$(Frontend.scala:240)
	at viper.carbon.CarbonFrontend.verification(Carbon.scala:26)
	at viper.silver.frontend.DefaultPhases.$anonfun$phases$5(Frontend.scala:98)
	at viper.silver.frontend.Frontend.$anonfun$run$1(Frontend.scala:59)
	at viper.silver.frontend.Frontend.$anonfun$run$1$adapted(Frontend.scala:59)
	at scala.collection.immutable.List.foreach(List.scala:388)
	at viper.silver.frontend.Frontend.run(Frontend.scala:59)
	at viper.silver.frontend.Frontend.run$(Frontend.scala:58)
	at viper.carbon.CarbonFrontend.run(Carbon.scala:26)
	at viper.silver.frontend.SilFrontend.execute(SilFrontend.scala:152)
	at viper.silver.frontend.SilFrontend.execute$(SilFrontend.scala:130)
	at viper.carbon.CarbonFrontend.execute(Carbon.scala:26)
	at viper.carbon.Carbon$.main(Carbon.scala:20)
	at viper.carbon.Carbon.main(Carbon.scala)

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingmajor

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions