X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Ftactics%2Ffilter_auto.ml;h=b5fa2e2d79df12e44f5c398e699518a88de97620;hb=ebc089606ccbb3e9dbde142542a1f98f5020b4dd;hp=a87be6c49bd8408f8c46b443a8505e004fa735e5;hpb=2a1bb9ea2a09b4b64ae8b61144da4c1035d1c1f1;p=helm.git diff --git a/helm/ocaml/tactics/filter_auto.ml b/helm/ocaml/tactics/filter_auto.ml index a87be6c49..b5fa2e2d7 100644 --- a/helm/ocaml/tactics/filter_auto.ml +++ b/helm/ocaml/tactics/filter_auto.ml @@ -67,7 +67,7 @@ let filter_new_constants (conn:Mysql.dbd) const (_,uri) = -let rec exec_query (conn:Mysql.dbd) uris k = +let rec exec_query (conn:Mysql.dbd) (uris,main) k = let add_must (n,from,where) uri = let refObjn = "refObj" ^ (string_of_int n) in let new_must = @@ -83,14 +83,17 @@ let rec exec_query (conn:Mysql.dbd) uris k = let (_,from,where) = List.fold_left add_must (0,[],[]) uris in let from,where = - "no_concl_hyp"::from, - ("no=" ^ (string_of_int k)):: - ("no_concl_hyp.source = refObj0.source")::where + ["no_concl_hyp";"refObj as main"]@from, + ["no=" ^ (string_of_int k); + "no_concl_hyp.source = refObj0.source"; + "main.source = refObj0.source"; + "main.h_occurrence = '" ^ main ^ "'"; + "main.h_position = " ^ main_conclusion]@where in let from = String.concat "," from in let where = String.concat " and " where in let query = "select distinct(refObj0.source) from " ^ from ^ " where " ^ where in - (* prerr_endline query;*) + (*prerr_endline query;*) Mysql.exec conn query ;; @@ -127,15 +130,23 @@ List.exists ex list_of_uris ;; -let filter_uris (conn:Mysql.dbd) const uris = +let filter_uris (conn:Mysql.dbd) const uris main = let subsets_of_consts = setset_to_listlist (powerset const) in + let ex u = + if u = main then true + else false + in + let subsets_of_consts = + List.filter + (fun (_,b) -> (List.exists ex b)) + subsets_of_consts in let uris_of_const = List.concat (List.map (fun (m,s) -> (let res = - exec_query conn s m in + exec_query conn (s,main) m in let f a = match (Array.to_list a) with [Some uri] -> uri