public MultiLattice(IPropExprFactory /*!*/ propExprFactory, IValueExprFactory /*!*/ valueExprFactory) : base(valueExprFactory) { Contract.Requires(valueExprFactory != null); Contract.Requires(propExprFactory != null); this.propExprFactory = propExprFactory; // base(valueExprFactory); }
public DynamicTypeLattice(ITypeExprFactory /*!*/ factory, IPropExprFactory /*!*/ propFactory) { Contract.Requires(propFactory != null); Contract.Requires(factory != null); this.factory = factory; this.propFactory = propFactory; // base(); }
/// <summary> /// A default implementation of the <see cref="CheckVariableDisequality"/> given /// the appropriate expression factories by calling CheckPredicate. /// </summary> protected Answer DefaultCheckVariableDisequality(IPropExprFactory /*!*/ propExprFactory, IValueExprFactory /*!*/ valExprFactory, Element /*!*/ e, IVariable /*!*/ var1, IVariable /*!*/ var2) { Contract.Requires(propExprFactory != null); Contract.Requires(valExprFactory != null); Contract.Requires(e != null); Contract.Requires(var1 != null); Contract.Requires(var2 != null); return(this.CheckPredicate(e, propExprFactory.Not(valExprFactory.Eq(var1, var2)))); }
public PolyhedraLattice(ILinearExprFactory/*!*/ linearFactory, IPropExprFactory/*!*/ propFactory) : base(linearFactory) { Contract.Requires(propFactory != null); Contract.Requires(linearFactory != null); log.Enabled = Lattice.LogSwitch; this.factory = linearFactory; this.propFactory = propFactory; // base(linearFactory); }
public PolyhedraLattice(ILinearExprFactory /*!*/ linearFactory, IPropExprFactory /*!*/ propFactory) : base(linearFactory) { Contract.Requires(propFactory != null); Contract.Requires(linearFactory != null); log.Enabled = Lattice.LogSwitch; this.factory = linearFactory; this.propFactory = propFactory; // base(linearFactory); }
public VariableMapLattice(IPropExprFactory /*!*/ propExprFactory, IValueExprFactory /*!*/ valueExprFactory, MicroLattice /*!*/ microLattice, /*maybe null*/ IComparer variableComparer) : base(valueExprFactory) { Contract.Requires(microLattice != null); Contract.Requires(valueExprFactory != null); Contract.Requires(propExprFactory != null); this.propExprFactory = propExprFactory; this.microLattice = microLattice; this.variableComparer = variableComparer; // base(valueExprFactory); }
public DynamicTypeLattice(ITypeExprFactory/*!*/ factory, IPropExprFactory/*!*/ propFactory) { Contract.Requires(propFactory != null); Contract.Requires(factory != null); this.factory = factory; this.propFactory = propFactory; // base(); }
public VariableMapLattice(IPropExprFactory/*!*/ propExprFactory, IValueExprFactory/*!*/ valueExprFactory, MicroLattice/*!*/ microLattice, /*maybe null*/IComparer variableComparer) : base(valueExprFactory) { Contract.Requires(microLattice != null); Contract.Requires(valueExprFactory != null); Contract.Requires(propExprFactory != null); this.propExprFactory = propExprFactory; this.microLattice = microLattice; this.variableComparer = variableComparer; // base(valueExprFactory); }
/// <summary> /// A default implementation of the <see cref="CheckVariableDisequality"/> given /// the appropriate expression factories by calling CheckPredicate. /// </summary> protected Answer DefaultCheckVariableDisequality(IPropExprFactory/*!*/ propExprFactory, IValueExprFactory/*!*/ valExprFactory, Element/*!*/ e, IVariable/*!*/ var1, IVariable/*!*/ var2) { Contract.Requires(propExprFactory != null); Contract.Requires(valExprFactory != null); Contract.Requires(e != null); Contract.Requires(var1 != null); Contract.Requires(var2 != null); return this.CheckPredicate(e, propExprFactory.Not(valExprFactory.Eq(var1, var2))); }
public MultiLattice(IPropExprFactory/*!*/ propExprFactory, IValueExprFactory/*!*/ valueExprFactory) : base(valueExprFactory) { Contract.Requires(valueExprFactory != null); Contract.Requires(propExprFactory != null); this.propExprFactory = propExprFactory; // base(valueExprFactory); }
public static IExpr/*!*/ SimplifiedOr(IPropExprFactory/*!*/ factory, IEnumerable/*<IExpr!>*//*!*/ exprs) { Contract.Requires(exprs != null); Contract.Requires(factory != null); Contract.Ensures(Contract.Result<IExpr>() != null); IExpr/*!*/ result = factory.False; Contract.Assert(result != null); foreach (IExpr/*!*/ disj in exprs) { Contract.Assert(disj != null); result = SimplifiedOr(factory, result, disj); } return result; }
public static IExpr/*!*/ SimplifiedOr(IPropExprFactory/*!*/ factory, IExpr/*!*/ e0, IExpr/*!*/ e1) { Contract.Requires(e1 != null); Contract.Requires(e0 != null); Contract.Requires(factory != null); Contract.Ensures(Contract.Result<IExpr>() != null); IFunApp fun0 = e0 as IFunApp; if (fun0 != null) { if (fun0.FunctionSymbol.Equals(Prop.False)) { return e1; } else if (fun0.FunctionSymbol.Equals(Prop.True)) { return e0; } } IFunApp fun1 = e1 as IFunApp; if (fun1 != null) { if (fun1.FunctionSymbol.Equals(Prop.False)) { return e0; } else if (fun1.FunctionSymbol.Equals(Prop.True)) { return e1; } } return factory.Or(e0, e1); }
public static IExpr/*!*/ SimplifiedAnd(IPropExprFactory/*!*/ factory, IEnumerable/*<IExpr!>*//*!*/ exprs) { Contract.Requires(exprs != null); Contract.Requires(factory != null); Contract.Ensures(Contract.Result<IExpr>() != null); IExpr/*!*/ result = factory.True; Contract.Assert(result != null); foreach (IExpr/*!*/ conjunct in exprs) { Contract.Assert(conjunct != null); result = SimplifiedAnd(factory, result, conjunct); } return result; }