Skip to content

Commit a2b727a

Browse files
authored
Merge pull request #679 from viperproject/meilers_issue_678
Fix for issue #678
2 parents 39cd08d + 07a4142 commit a2b727a

4 files changed

Lines changed: 15 additions & 4 deletions

File tree

src/main/scala/supporters/DefaultSetsContributor.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,11 @@ class DefaultSetsContributor(val domainTranslator: DomainsTranslator[Term], conf
3434
* However, it is currently not (easily) possible for the latter to contribute instances
3535
* of set axioms.
3636
*/
37-
if (program.existsDefined { case f: ast.Forall if (f.triggers flatMap (_.exps)) exists (e => e.existsDefined { case _: ast.ResourceAccess => }) =>
38-
case q: ast.QuantifiedExp if !q.isPure => }) {
37+
if (program.existsDefined {
38+
case f: ast.Forall if (f.triggers flatMap (_.exps)) exists (e => e.existsDefined { case _: ast.ResourceAccess => }) =>
39+
case q: ast.Exists if (q.triggers flatMap (_.exps)) exists (e => e.existsDefined { case _: ast.ResourceAccess => }) =>
40+
case q: ast.QuantifiedExp if !q.isPure =>
41+
}) {
3942
program.fields foreach {f => setTypeInstances += ast.SetType(f.typ)}
4043

4144
setTypeInstances += ast.SetType(ast.Ref) /* $FVF.domain_f is of type Set[Ref] */

src/main/scala/supporters/qps/FieldValueFunctionsContributor.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import viper.silicon.interfaces.{PreambleContributor, PreambleReader}
1414
import viper.silicon.interfaces.decider.{ProverLike, TermConverter}
1515
import viper.silicon.state.SymbolConverter
1616
import viper.silicon.state.terms.{SortDecl, sorts}
17-
import viper.silver.ast.{FieldAccess, Forall}
17+
import viper.silver.ast.{Exists, FieldAccess, Forall}
1818

1919
trait FieldValueFunctionsContributor[SO, SY, AX] extends PreambleContributor[SO, SY, AX]
2020

@@ -55,6 +55,10 @@ class DefaultFieldValueFunctionsContributor(preambleReader: PreambleReader[Strin
5555
val trigExps = triggers flatMap (_.exps)
5656
val fieldAccesses = trigExps flatMap (e => e.deepCollect {case fa: FieldAccess => fa})
5757
collectedFields ++= (fieldAccesses map (_.field))
58+
case Exists(_, triggers, _) =>
59+
val trigExps = triggers flatMap (_.exps)
60+
val fieldAccesses = trigExps flatMap (e => e.deepCollect { case fa: FieldAccess => fa })
61+
collectedFields ++= (fieldAccesses map (_.field))
5862
}
5963

6064
// WARNING: DefaultSetsContributor contributes a sort that is due to QPs over fields

src/main/scala/supporters/qps/PredicateAndWandSnapFunctionsContributor.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ class DefaultPredicateAndWandSnapFunctionsContributor(preambleReader: PreambleRe
8585
val trigExps = triggers flatMap (_.exps)
8686
val predicateAccesses = trigExps flatMap (e => e.deepCollect {case pa: PredicateAccess => pa})
8787
collectedPredicates ++= (predicateAccesses map (_.loc(program)))
88+
case ast.Exists(_, triggers, _) =>
89+
val trigExps = triggers flatMap (_.exps)
90+
val predicateAccesses = trigExps flatMap (e => e.deepCollect { case pa: PredicateAccess => pa })
91+
collectedPredicates ++= (predicateAccesses map (_.loc(program)))
8892
}
8993

9094
collectedWandIdentifiers =

0 commit comments

Comments
 (0)