Exemple #1
0
        /// <summary>
        /// Verify that if the function satisfies the precondition,
        /// then it also satisfies the postcondition.
        /// </summary>
        /// <param name="invariant">The invariant.</param>
        /// <param name="backend">The backend.</param>
        /// <returns>An input if one exists satisfying the constraints.</returns>
        public bool Assert(Func <Zen <T>, Zen <bool> > invariant, Backend backend = Backend.Z3)
        {
            var result = invariant(this.function());

            return(CommonUtilities.RunWithLargeStack(() => SymbolicEvaluator.Find(result, backend)));
        }
Exemple #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ZenConstantStringExpr"/> class.
 /// </summary>
 /// <param name="unescapedValue">The unescaped value.</param>
 private ZenConstantStringExpr(string unescapedValue)
 {
     this.UnescapedValue = unescapedValue;
     this.EscapedValue   = CommonUtilities.ConvertCSharpStringToZ3(unescapedValue);
 }
Exemple #3
0
 /// <summary>
 /// Create a new instance of the <see cref="ZenFunction{T}"/> class.
 /// </summary>
 /// <param name="function">The function.</param>
 public ZenFunction(Func <Zen <T> > function)
 {
     CommonUtilities.ValidateNotNull(function);
     this.function = function;
 }
Exemple #4
0
 /// <summary>
 /// Simplify an expression recursively.
 /// </summary>
 /// <returns></returns>
 public Zen <T> Simplify()
 {
     return(CommonUtilities.RunWithLargeStack(() => this.Unroll()));
 }