module Quantifier:sig
..end
Quantifier expressions
type
quantifier
val expr_of_quantifier : quantifier -> Expr.expr
val quantifier_of_expr : Expr.expr -> quantifier
module Pattern:sig
..end
Quantifier patterns
val get_index : Expr.expr -> int
The de-Bruijn index of a bound variable.
Bound variables are indexed by de-Bruijn indices. It is perhaps easiest to explain
the meaning of de-Bruijn indices by indicating the compilation process from
non-de-Bruijn formulas to de-Bruijn format.
abs(forall (x1) phi) = forall (x1) abs1(phi, x1, 0)
abs(forall (x1, x2) phi) = abs(forall (x1) abs(forall (x2) phi))
abs1(x, x, n) = b_n
abs1(y, x, n) = y
abs1(f(t1,...,tn), x, n) = f(abs1(t1,x,n), ..., abs1(tn,x,n))
abs1(forall (x1) phi, x, n) = forall (x1) (abs1(phi, x, n+1))
The last line is significant: the index of a bound variable is different depending
on the scope in which it appears. The deeper ( x : expr ) appears, the higher is its
index.
val is_universal : quantifier -> bool
Indicates whether the quantifier is universal.
val is_existential : quantifier -> bool
Indicates whether the quantifier is existential.
val get_weight : quantifier -> int
The weight of the quantifier.
val get_num_patterns : quantifier -> int
The number of patterns.
val get_patterns : quantifier -> Pattern.pattern list
The patterns.
val get_num_no_patterns : quantifier -> int
The number of no-patterns.
val get_no_patterns : quantifier -> Pattern.pattern list
The no-patterns.
val get_num_bound : quantifier -> int
The number of bound variables.
val get_bound_variable_names : quantifier -> Symbol.symbol list
The symbols for the bound variables.
val get_bound_variable_sorts : quantifier -> Sort.sort list
The sorts of the bound variables.
val get_body : quantifier -> Expr.expr
The body of the quantifier.
val mk_bound : context -> int -> Sort.sort -> Expr.expr
Creates a new bound variable.
val mk_pattern : context -> Expr.expr list -> Pattern.pattern
Create a quantifier pattern.
val mk_forall : context ->
Sort.sort list ->
Symbol.symbol list ->
Expr.expr ->
int option ->
Pattern.pattern list ->
Expr.expr list ->
Symbol.symbol option ->
Symbol.symbol option -> quantifier
Create a universal Quantifier.
val mk_forall_const : context ->
Expr.expr list ->
Expr.expr ->
int option ->
Pattern.pattern list ->
Expr.expr list ->
Symbol.symbol option ->
Symbol.symbol option -> quantifier
Create a universal Quantifier.
val mk_exists : context ->
Sort.sort list ->
Symbol.symbol list ->
Expr.expr ->
int option ->
Pattern.pattern list ->
Expr.expr list ->
Symbol.symbol option ->
Symbol.symbol option -> quantifier
Create an existential Quantifier.
val mk_exists_const : context ->
Expr.expr list ->
Expr.expr ->
int option ->
Pattern.pattern list ->
Expr.expr list ->
Symbol.symbol option ->
Symbol.symbol option -> quantifier
Create an existential Quantifier.
val mk_lambda_const : context -> Expr.expr list -> Expr.expr -> quantifier
Create a lambda binding.
val mk_lambda : context ->
(Symbol.symbol * Sort.sort) list ->
Expr.expr -> quantifier
Create a lambda binding where bound variables are given by symbols and sorts
val mk_quantifier : context ->
bool ->
Sort.sort list ->
Symbol.symbol list ->
Expr.expr ->
int option ->
Pattern.pattern list ->
Expr.expr list ->
Symbol.symbol option ->
Symbol.symbol option -> quantifier
Create a Quantifier.
val mk_quantifier_const : context ->
bool ->
Expr.expr list ->
Expr.expr ->
int option ->
Pattern.pattern list ->
Expr.expr list ->
Symbol.symbol option ->
Symbol.symbol option -> quantifier
Create a Quantifier.
val to_string : quantifier -> string
A string representation of the quantifier.