Z3
RelationSort.cs
Go to the documentation of this file.
1 /*++
2 Copyright (c) 2012 Microsoft Corporation
3 
4 Module Name:
5 
6  RelationSort.cs
7 
8 Abstract:
9 
10  Z3 Managed API: Relation Sorts
11 
12 Author:
13 
14  Christoph Wintersteiger (cwinter) 2012-11-23
15 
16 Notes:
17 
18 --*/
19 
20 using System;
21 using System.Diagnostics.Contracts;
22 
23 namespace Microsoft.Z3
24 {
28  [ContractVerification(true)]
29  public class RelationSort : Sort
30  {
34  public uint Arity
35  {
36  get { return Native.Z3_get_relation_arity(Context.nCtx, NativeObject); }
37  }
38 
42  public Sort[] ColumnSorts
43  {
44  get
45  {
46  Contract.Ensures(Contract.Result<Sort[]>() != null);
47 
48  if (m_columnSorts != null)
49  return m_columnSorts;
50 
51  uint n = Arity;
52  Sort[] res = new Sort[n];
53  for (uint i = 0; i < n; i++)
54  res[i] = Sort.Create(Context, Native.Z3_get_relation_column(Context.nCtx, NativeObject, i));
55  return res;
56  }
57  }
58 
59  #region Internal
60  private Sort[] m_columnSorts = null;
61 
62  internal RelationSort(Context ctx, IntPtr obj)
63  : base(ctx, obj)
64  {
65  Contract.Requires(ctx != null);
66  }
67  #endregion
68  }
69 }
static uint Z3_get_relation_arity(Z3_context a0, Z3_sort a1)
Definition: Native.cs:3334
using System
static Z3_sort Z3_get_relation_column(Z3_context a0, Z3_sort a1, uint a2)
Definition: Native.cs:3342
The main interaction with Z3 happens via the Context.
Definition: Context.cs:31
The Sort class implements type information for ASTs.
Definition: Sort.cs:29