(* =========================================================== *)
(* Commonly used variables and constants *)
(* Author: Alexey Solovyev *)
(* Date: 2012-10-27 *)
(* =========================================================== *)
module Misc_vars = struct
(* bool variables *)
let s_var_bool = `s:bool` and
s1_var_bool = `s1:bool` and
s2_var_bool = `s2:bool`;;
(* num variables *)
let n_var_num = `n:num` and
m_var_num = `m:num` and
t_var_num = `t:num` and
p_var_num = `p:num` and
q_var_num = `q:num` and
k_var_num = `k:num` and
e_var_num = `e:num` and
e1_var_num = `e1:num` and
e2_var_num = `e2:num` and
r_var_num = `r:num` and
r1_var_num = `r1:num` and
r2_var_num = `r2:num` and
n1_var_num = `n1:num` and
n2_var_num = `n2:num` and
m1_var_num = `m1:num` and
m2_var_num = `m2:num` and
x_var_num = `x:num` and
y_var_num = `y:num` and
i_var_num = `i:num` and
j_var_num = `j:num`;;
(* real variables *)
let x_var_real = `x : real` and
y_var_real = `y : real` and
z_var_real = `z : real` and
w_var_real = `w : real` and
a_var_real = `a : real` and
b_var_real = `b : real` and
m_var_real = `m : real` and
n_var_real = `n : real` and
x1_var_real = `x1 : real` and
x2_var_real = `x2 : real` and
y1_var_real = `y1 : real` and
y2_var_real = `y2 : real` and
f1_var_real = `f1 : real` and
f2_var_real = `f2 : real` and
f_var_fun = `f : real->real` and
g_var_fun = `g : real->real` and
f1_var_fun = `f1 : real->real` and
f2_var_fun = `f2 : real->real` and
int_var = `int : real#real` and
f_bounds_var = `f_bounds : real#real` and
df_bounds_var = `df_bounds : real#real` and
dd_bounds_var = `dd_bounds : real#real` and
x_lo_var = `x_lo : real` and
x_hi_var = `x_hi : real` and
lo_var_real = `lo : real` and
hi_var_real = `hi : real` and
dd_var_real = `dd : real` and
df_lo_var = `df_lo : real` and
df_hi_var = `df_hi : real` and
df_var_real = `df : real` and
f_lo_var = `f_lo : real` and
f_hi_var = `f_hi : real` and
w1_var_real = `w1 : real` and
w2_var_real = `w2 : real` and
t_var_real = `t : real` and
g_bounds_var = `g_bounds : real#real` and
dg_bounds_var = `dg_bounds : real#real` and
bounds_var = `bounds : real#real` and
d_bounds_var = `d_bounds : real#real` and
x0_var_real = `x0 : real` and
z0_var_real = `z0 : real` and
w0_var_real = `w0 : real` and
error_var = `error : real` and
d_bounds_list_var = `d_bounds_list : (real#real)list` and
dd_bounds_list_var = `dd_bounds_list : ((real#real)list)list` and
df_bounds_list_var = `df_bounds_list : (real#real)list` and
dd_list_var = `dd_list : (real#real)list` and
x_var_real_list = `x:(real)list` and
y_var_real_list = `y:(real)list` and
z_var_real_list = `z:(real)list` and
w_var_real_list = `w:(real)list` and
yw_var = `yw : (real#real)list` and
xz_var = `xz : (real#real)list` and
xz_pair_var = `xz : real#real` and
yw_pair_var = `yw : real#real` and
list_var_real_pair = `list : (real#real)list`;;
(* bool constants *)
let t_const = `T` and
f_const = `F`;;
(* num constants *)
let zero_const = `_0` and
zero_num = `0`;;
(* num operations *)
let add_op_num = `(+) : num->num->num` and
sub_op_num = `(-) : num->num->num` and
mul_op_num = `( * ) : num->num->num` and
eq_op_num = `(=) : num->num->bool` and
le_op_num = `(<=) : num->num->bool` and
lt_op_num = `(<) : num->num->bool` and
div_op_num = `(DIV): num->num->num` and
pre_op_num = `PRE: num->num` and
suc_op_num = `SUC : num->num`;;
(* real constants *)
let real_empty_list = `[]:(real)list`;;
(* real operations *)
let add_op_real = `(+) : real->real->real` and
mul_op_real = `( * ) : real->real->real` and
sub_op_real = `(-) : real->real->real` and
div_op_real = `(/) :real->real->real` and
inv_op_real = `inv : real->real` and
neg_op_real = `(--) : real->real` and
eq_op_real = `(=) : real->real->bool` and
lt_op_real = `(<) : real->real->bool` and
le_op_real = `(<=):real->real->bool` and
ge_op_real = `(>=):real->real->bool` and
amp_op_real = `(&) : num->real` and
pow_op_real = `(pow) : real->num->real`;;
(* types *)
let real_ty = `:real` and
real_list_ty = `:(real)list` and
real_pair_ty = `:real#real` and
real_pair_list_ty = `:(real#real)list` and
num_type = `:num` and
nty = `:N`;;
(* Simple operations *)
let mk_real_list tms = mk_list (tms, real_ty);;
let mk_names n prefix = map (fun i -> prefix^(string_of_int i)) (1--n);;
let mk_real_vars n prefix = map (C (curry mk_var) real_ty) (mk_names n prefix);;
end;;