diff options
author | Rustan Leino <leino@microsoft.com> | 2011-12-12 13:53:32 -0800 |
---|---|---|
committer | Rustan Leino <leino@microsoft.com> | 2011-12-12 13:53:32 -0800 |
commit | de994ac942cd6a017f2f277bd0be37a7e8cc0c98 (patch) | |
tree | 3975ed67095183873585b88b018656841ab4a153 /Source/AbsInt/NativeLattice.cs | |
parent | a0331bcece67f35325fe70f2fda1b87d66397ab1 (diff) |
Dafny: implemented thresholds for the new interval domain (/infer:j)
Diffstat (limited to 'Source/AbsInt/NativeLattice.cs')
-rw-r--r-- | Source/AbsInt/NativeLattice.cs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Source/AbsInt/NativeLattice.cs b/Source/AbsInt/NativeLattice.cs index 7abe52e2..d02e6f31 100644 --- a/Source/AbsInt/NativeLattice.cs +++ b/Source/AbsInt/NativeLattice.cs @@ -46,6 +46,13 @@ namespace Microsoft.Boogie.AbstractInterpretation public abstract Element Update(Element element, AssignCmd cmd); // requiers 'cmd' to be a simple (possibly parallel) assignment command
public abstract Element Eliminate(Element element, Variable v);
+ /// <summary>
+ /// Specialize the lattice to implementation "impl", if non-null.
+ /// If "impl" is null, remove specialization.
+ /// </summary>
+ public virtual void Specialize(Implementation impl) {
+ }
+
public virtual void Validate() {
Contract.Assert(IsTop(Top));
Contract.Assert(IsBottom(Bottom));
@@ -136,7 +143,10 @@ namespace Microsoft.Boogie.AbstractInterpretation Expr e = Substituter.Apply(formalProcImplSubst, pre.Condition);
start = lattice.Constrain(start, e);
}
+
+ lattice.Specialize(impl);
Analyze(impl, lattice, start);
+ lattice.Specialize(null);
}
}
}
|