X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fmathql_interpreter%2FmQIUtil.ml;h=00f5390b512a545b9fb29b5cd672cfbe7e5c4b7a;hb=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=537e32d77e9cddd02be0c91bcff8dbffb2a554d1;hpb=48b9bb5e9504aba97cff28a9d7e2797feb42972e;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/mQIUtil.ml b/helm/ocaml/mathql_interpreter/mQIUtil.ml index 537e32d77..00f5390b5 100644 --- a/helm/ocaml/mathql_interpreter/mQIUtil.ml +++ b/helm/ocaml/mathql_interpreter/mQIUtil.ml @@ -23,16 +23,8 @@ * http://cs.unibo.it/helm/. *) -(******************************************************************************) -(* *) -(* PROJECT HELM *) -(* *) -(* Ferruccio Guidi *) -(* 06/01/2003 *) -(* *) -(* *) -(******************************************************************************) - +(* AUTOR: Ferruccio Guidi + *) (* boolean constants *******************************************************) @@ -64,11 +56,19 @@ let set_eq v1 v2 = let rec set_union v1 v2 = match v1, v2 with | [], v -> v - | v, [] -> v (* (zz h1 ">" h2); *) + | v, [] -> v | h1 :: t1, h2 :: t2 when h1 < h2 -> h1 :: set_union t1 v2 | h1 :: t1, h2 :: t2 when h1 > h2 -> h2 :: set_union v1 t2 | h1 :: t1, _ :: t2 -> h1 :: set_union t1 t2 +let rec set_intersect v1 v2 = + match v1, v2 with + | [], v -> [] + | v, [] -> [] + | h1 :: t1, h2 :: _ when h1 < h2 -> set_intersect t1 v2 + | h1 :: _, h2 :: t2 when h1 > h2 -> set_intersect v1 t2 + | h1 :: t1, _ :: t2 -> h1 :: set_intersect t1 t2 + let rec iter f = function | [] -> [] | head :: tail -> set_union (f head) (iter f tail) @@ -93,7 +93,7 @@ let rec mql_iter f = function let rec mql_iter2 f l1 l2 = match l1, l2 with | [], [] -> [] | h1 :: t1, h2 :: t2 -> mql_union (f h1 h2) (mql_iter2 f t1 t2) - | _ -> raise (Invalid_argument "mql_itwr2") + | _ -> raise (Invalid_argument "mql_iter2") let rec mql_prod g1 g2 = let mql_prod_aux a = iter (fun h -> [mql_union a h]) g2 in @@ -106,7 +106,7 @@ let rec mql_intersect s1 s2 = | (r1, _) :: t1, (r2, _) :: _ when r1 < r2 -> mql_intersect t1 s2 | (r1, _) :: _, (r2, _) :: t2 when r1 > r2 -> mql_intersect s1 t2 | (r1, g1) :: t1, (_, g2) :: t2 -> - (r1, mql_prod g1 g2) :: mql_intersect t1 t2 + (r1, set_intersect g1 g2) :: mql_intersect t1 t2 let rec mql_diff s1 s2 = match s1, s2 with @@ -151,15 +151,3 @@ let rec set ap = function | [] -> [ap] | head :: tail when fst head = fst ap -> ap :: tail | head :: tail -> head :: set ap tail - -(* time handling ***********************************************************) - -type time = float * float - -let start_time () = - (Sys.time (), Unix.time ()) - -let stop_time (s0, u0) = - let s1 = Sys.time () in - let u1 = Unix.time () in - Printf.sprintf "%.2fs,%.2fs" (s1 -. s0) (u1 -. u0)