1 (* =========================================================== *)
\r
2 (* Commonly used variables and constants *)
\r
3 (* Author: Alexey Solovyev *)
\r
4 (* Date: 2012-10-27 *)
\r
5 (* =========================================================== *)
\r
7 module Misc_vars = struct
\r
10 let s_var_bool = `s:bool` and
\r
11 s1_var_bool = `s1:bool` and
\r
12 s2_var_bool = `s2:bool`;;
\r
15 let n_var_num = `n:num` and
\r
16 m_var_num = `m:num` and
\r
17 t_var_num = `t:num` and
\r
18 p_var_num = `p:num` and
\r
19 q_var_num = `q:num` and
\r
20 k_var_num = `k:num` and
\r
21 e_var_num = `e:num` and
\r
22 e1_var_num = `e1:num` and
\r
23 e2_var_num = `e2:num` and
\r
24 r_var_num = `r:num` and
\r
25 r1_var_num = `r1:num` and
\r
26 r2_var_num = `r2:num` and
\r
27 n1_var_num = `n1:num` and
\r
28 n2_var_num = `n2:num` and
\r
29 m1_var_num = `m1:num` and
\r
30 m2_var_num = `m2:num` and
\r
31 x_var_num = `x:num` and
\r
32 y_var_num = `y:num` and
\r
33 i_var_num = `i:num` and
\r
34 j_var_num = `j:num`;;
\r
36 (* real variables *)
\r
37 let x_var_real = `x : real` and
\r
38 y_var_real = `y : real` and
\r
39 z_var_real = `z : real` and
\r
40 w_var_real = `w : real` and
\r
41 a_var_real = `a : real` and
\r
42 b_var_real = `b : real` and
\r
43 m_var_real = `m : real` and
\r
44 n_var_real = `n : real` and
\r
45 x1_var_real = `x1 : real` and
\r
46 x2_var_real = `x2 : real` and
\r
47 y1_var_real = `y1 : real` and
\r
48 y2_var_real = `y2 : real` and
\r
49 f1_var_real = `f1 : real` and
\r
50 f2_var_real = `f2 : real` and
\r
51 f_var_fun = `f : real->real` and
\r
52 g_var_fun = `g : real->real` and
\r
53 f1_var_fun = `f1 : real->real` and
\r
54 f2_var_fun = `f2 : real->real` and
\r
55 int_var = `int : real#real` and
\r
56 f_bounds_var = `f_bounds : real#real` and
\r
57 df_bounds_var = `df_bounds : real#real` and
\r
58 dd_bounds_var = `dd_bounds : real#real` and
\r
59 x_lo_var = `x_lo : real` and
\r
60 x_hi_var = `x_hi : real` and
\r
61 lo_var_real = `lo : real` and
\r
62 hi_var_real = `hi : real` and
\r
63 dd_var_real = `dd : real` and
\r
64 df_lo_var = `df_lo : real` and
\r
65 df_hi_var = `df_hi : real` and
\r
66 df_var_real = `df : real` and
\r
67 f_lo_var = `f_lo : real` and
\r
68 f_hi_var = `f_hi : real` and
\r
69 w1_var_real = `w1 : real` and
\r
70 w2_var_real = `w2 : real` and
\r
71 t_var_real = `t : real` and
\r
72 g_bounds_var = `g_bounds : real#real` and
\r
73 dg_bounds_var = `dg_bounds : real#real` and
\r
74 bounds_var = `bounds : real#real` and
\r
75 d_bounds_var = `d_bounds : real#real` and
\r
76 x0_var_real = `x0 : real` and
\r
77 z0_var_real = `z0 : real` and
\r
78 w0_var_real = `w0 : real` and
\r
79 error_var = `error : real` and
\r
80 d_bounds_list_var = `d_bounds_list : (real#real)list` and
\r
81 dd_bounds_list_var = `dd_bounds_list : ((real#real)list)list` and
\r
82 df_bounds_list_var = `df_bounds_list : (real#real)list` and
\r
83 dd_list_var = `dd_list : (real#real)list` and
\r
84 x_var_real_list = `x:(real)list` and
\r
85 y_var_real_list = `y:(real)list` and
\r
86 z_var_real_list = `z:(real)list` and
\r
87 w_var_real_list = `w:(real)list` and
\r
88 yw_var = `yw : (real#real)list` and
\r
89 xz_var = `xz : (real#real)list` and
\r
90 xz_pair_var = `xz : real#real` and
\r
91 yw_pair_var = `yw : real#real` and
\r
92 list_var_real_pair = `list : (real#real)list`;;
\r
94 (* bool constants *)
\r
95 let t_const = `T` and
\r
99 let zero_const = `_0` and
\r
102 (* num operations *)
\r
103 let add_op_num = `(+) : num->num->num` and
\r
104 sub_op_num = `(-) : num->num->num` and
\r
105 mul_op_num = `( * ) : num->num->num` and
\r
106 eq_op_num = `(=) : num->num->bool` and
\r
107 le_op_num = `(<=) : num->num->bool` and
\r
108 lt_op_num = `(<) : num->num->bool` and
\r
109 div_op_num = `(DIV): num->num->num` and
\r
110 pre_op_num = `PRE: num->num` and
\r
111 suc_op_num = `SUC : num->num`;;
\r
114 (* real constants *)
\r
115 let real_empty_list = `[]:(real)list`;;
\r
117 (* real operations *)
\r
118 let add_op_real = `(+) : real->real->real` and
\r
119 mul_op_real = `( * ) : real->real->real` and
\r
120 sub_op_real = `(-) : real->real->real` and
\r
121 div_op_real = `(/) :real->real->real` and
\r
122 inv_op_real = `inv : real->real` and
\r
123 neg_op_real = `(--) : real->real` and
\r
124 eq_op_real = `(=) : real->real->bool` and
\r
125 lt_op_real = `(<) : real->real->bool` and
\r
126 le_op_real = `(<=):real->real->bool` and
\r
127 ge_op_real = `(>=):real->real->bool` and
\r
128 amp_op_real = `(&) : num->real` and
\r
129 pow_op_real = `(pow) : real->num->real`;;
\r
132 let real_ty = `:real` and
\r
133 real_list_ty = `:(real)list` and
\r
134 real_pair_ty = `:real#real` and
\r
135 real_pair_list_ty = `:(real#real)list` and
\r
136 num_type = `:num` and
\r
140 (* Simple operations *)
\r
141 let mk_real_list tms = mk_list (tms, real_ty);;
\r
143 let mk_names n prefix = map (fun i -> prefix^(string_of_int i)) (1--n);;
\r
145 let mk_real_vars n prefix = map (C (curry mk_var) real_ty) (mk_names n prefix);;
\r