Esempio n. 1
0
 public MultiLattice(IPropExprFactory /*!*/ propExprFactory, IValueExprFactory /*!*/ valueExprFactory)
     : base(valueExprFactory)
 {
     Contract.Requires(valueExprFactory != null);
     Contract.Requires(propExprFactory != null);
     this.propExprFactory = propExprFactory;
     // base(valueExprFactory);
 }
Esempio n. 2
0
 public DynamicTypeLattice(ITypeExprFactory /*!*/ factory, IPropExprFactory /*!*/ propFactory)
 {
     Contract.Requires(propFactory != null);
     Contract.Requires(factory != null);
     this.factory     = factory;
     this.propFactory = propFactory;
     // base();
 }
Esempio n. 3
0
 /// <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);
 }
Esempio n. 5
0
 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);
 }
Esempio n. 6
0
 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);
 }
Esempio n. 7
0
 public DynamicTypeLattice(ITypeExprFactory/*!*/ factory, IPropExprFactory/*!*/ propFactory) {
   Contract.Requires(propFactory != null);
   Contract.Requires(factory != null);
   this.factory = factory;
   this.propFactory = propFactory;
   // base();
 }
Esempio n. 8
0
 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);
 }
Esempio n. 9
0
 /// <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)));
 }
Esempio n. 10
0
 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;
 }