blob: 95e027179699103f6fde37446d6f8096349d00ff (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
open Sexplib.Std
type binding_expr =
| Var of string
| Const of Drl.Ast.value (** reuse DRL value for literals *)
[@@deriving sexp]
type constraint_body =
| MemberOf of { target: string; binding: (string * binding_expr) list }
| Not of { body: constraint_body; universe: string }
| And of constraint_body list
| Or of constraint_body list
| Exists of { variable: string; quantifier: string; body: constraint_body }
| Forall of { variable: string; quantifier: string; body: constraint_body }
[@@deriving sexp]
type statement =
| RegisterConstraint of {
constraint_name: string;
relation_name: string;
body: constraint_body;
}
[@@deriving sexp]
|