diff --git a/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/VCChecker.java b/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/VCChecker.java index 39a155d3..228a318a 100644 --- a/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/VCChecker.java +++ b/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/VCChecker.java @@ -252,20 +252,6 @@ private VCImplication joinPredicates(Predicate expectedType, List())) lastSi = si; } } + + for (RefinedVariable var : mainVars) { // join main refinements of mainVars + addMap(var, map); + VCImplication si = new VCImplication(var.getName(), var.getType(), var.getMainRefinement()); + if (lastSi != null) { + lastSi.setNext(si); + lastSi = si; + } + if (firstSi == null) { + firstSi = si; + lastSi = si; + } + } VCImplication cSMT = new VCImplication(new Predicate()); if (firstSi != null) { cSMT = firstSi.clone(); @@ -331,6 +330,8 @@ private void getVariablesFromContext(List lvars, List a .filter(rv -> !allVars.contains(rv)).forEach(rv -> { allVars.add(rv); recAuxGetVars(rv, allVars); + allVars.remove(rv); + allVars.add(rv); }); }