public override Domain <E, V> Assume(APC pc, EdgeTag tag, V condition, Domain <E, V> data) { IExpressionContext <E, V> exprCtx = ContextProvider.ExpressionContext; E expr = exprCtx.Refine(pc, condition); return(exprCtx.Decode <Pair <bool, Domain <E, V> >, Domain <E, V>, ExpressionAssumeDecoder <E, V> > (expr, new ExpressionAssumeDecoder <E, V> (ContextProvider), new Pair <bool, Domain <E, V> > (tag != EdgeTag.False, data))); }
public ProofOutcome ValidateExplicitAssertion(APC pc, V value) { Domain <E, V> domain; if (PreStateLookup(pc, out domain) && !domain.NonNulls.IsBottom) { IExpressionContext <E, V> exprCtx = ContextProvider.ExpressionContext; return(exprCtx.Decode <bool, ProofOutcome, ExpressionAssertDischarger <E, V> > (exprCtx.Refine(pc, value), new ExpressionAssertDischarger <E, V> (this, pc), true)); } return(ProofOutcome.Bottom); }