aboutsummaryrefslogblamecommitdiffstats
path: root/lib/dcl/ast.ml
blob: 95e027179699103f6fde37446d6f8096349d00ff (plain) (tree)






















                                                                             
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]