21 using System.Diagnostics.Contracts;
23 namespace Microsoft.Z3
28 [ContractVerification(
true)]
37 return Object.ReferenceEquals(a, b) ||
38 (!Object.ReferenceEquals(a, null) &&
39 !Object.ReferenceEquals(b, null) &&
40 a.Context.nCtx == b.Context.nCtx &&
56 public override bool Equals(
object o)
59 if (casted == null)
return false;
60 return this == casted;
66 public override int GetHashCode()
74 public override string ToString()
99 public uint DomainSize
111 Contract.Ensures(Contract.Result<
Sort[]>() != null);
116 for (uint i = 0; i < n; i++)
129 Contract.Ensures(Contract.Result<
Sort>() != null);
149 Contract.Ensures(Contract.Result<
Symbol>() != null);
157 public uint NumParameters
165 public Parameter[] Parameters
169 Contract.Ensures(Contract.Result<
Parameter[]>() != null);
171 uint num = NumParameters;
173 for (uint i = 0; i < num; i++)
200 throw new Z3Exception(
"Unknown function declaration parameter kind encountered");
213 readonly
private int i;
214 readonly
private double d;
215 readonly
private Symbol sym;
216 readonly
private Sort srt;
217 readonly
private AST ast;
219 readonly
private string r;
224 public double Double {
get {
if (ParameterKind !=
Z3_parameter_kind.Z3_PARAMETER_DOUBLE)
throw new Z3Exception(
"parameter is not a double ");
return d; } }
234 public string Rational {
get {
if (ParameterKind !=
Z3_parameter_kind.Z3_PARAMETER_RATIONAL)
throw new Z3Exception(
"parameter is not a rational string");
return r; } }
287 internal FuncDecl(Context ctx, IntPtr obj)
290 Contract.Requires(ctx != null);
293 internal FuncDecl(Context ctx, Symbol name, Sort[] domain, Sort range)
295 AST.ArrayLength(domain), AST.ArrayToNative(domain),
298 Contract.Requires(ctx != null);
299 Contract.Requires(name != null);
300 Contract.Requires(range != null);
303 internal FuncDecl(Context ctx,
string prefix, Sort[] domain, Sort range)
305 AST.ArrayLength(domain), AST.ArrayToNative(domain),
308 Contract.Requires(ctx != null);
309 Contract.Requires(range != null);
313 internal override void CheckNativeObject(IntPtr obj)
315 if (Native.Z3_get_ast_kind(Context.nCtx, obj) != (uint)
Z3_ast_kind.Z3_FUNC_DECL_AST)
316 throw new Z3Exception(
"Underlying object is not a function declaration");
317 base.CheckNativeObject(obj);
327 public Expr
this[params Expr[] args]
331 Contract.Requires(args == null || Contract.ForAll(args, a => a != null));
344 Contract.Requires(args == null || Contract.ForAll(args, a => a != null));
346 Context.CheckContextMatch(args);