X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Ftactics%2FmetadataQuery.ml;h=9b4f565c801a5bad56419ec2bebedbc3f15b7cb8;hb=c27196f6d80ddc6964fa58ded13bbf7fa9802beb;hp=cd14f3f5eb8d6be766c272b73e5af3fd9aa730fa;hpb=041ad23b567b9844ec187ad436595868441802f4;p=helm.git diff --git a/helm/software/components/tactics/metadataQuery.ml b/helm/software/components/tactics/metadataQuery.ml index cd14f3f5e..9b4f565c8 100644 --- a/helm/software/components/tactics/metadataQuery.ml +++ b/helm/software/components/tactics/metadataQuery.ml @@ -192,7 +192,26 @@ let cmatch' = *) let apply_tac_verbose = PrimitiveTactics.apply_tac_verbose let cmatch' = Constr.cmatch' - + +(* used only by te old auto *) +let signature_of_goal ~(dbd:HMysql.dbd) ((proof, goal) as _status) = + let (_, metasenv, _, _) = proof in + let (_, context, ty) = CicUtil.lookup_meta goal metasenv in + let main, sig_constants = Constr.signature_of ty in + let set = signature_of_hypothesis context metasenv in + let set = + match main with + None -> set + | Some (main,l) -> + List.fold_right Constr.UriManagerSet.add (main::l) set in + let set = Constr.UriManagerSet.union set sig_constants in + let all_constants_closed = close_with_types set metasenv context in + let uris = + sigmatch ~dbd ~facts:false ~where:`Statement (None,all_constants_closed) in + let uris = List.filter nonvar (List.map snd uris) in + let uris = List.filter Hashtbl_equiv.not_a_duplicate uris in + uris + let is_predicate u = let ty, _ = try CicTypeChecker.type_of_aux' [] [] @@ -212,11 +231,16 @@ let only constants uri = let t = CicUtil.term_of_uri uri in (* FIXME: write ty_of_term *) let ty,_ = CicTypeChecker.type_of_aux' [] [] t CicUniv.empty_ugraph in let consts = Constr.constants_of ty in +(* + prerr_endline ("XXX " ^ UriManager.string_of_uri uri); + Constr.UriManagerSet.iter (fun u -> prerr_endline (" - " ^ + UriManager.string_of_uri u)) consts; + Constr.UriManagerSet.iter (fun u -> prerr_endline (" + " ^ + UriManager.string_of_uri u)) constants;*) Constr.UriManagerSet.subset consts constants ;; -let universe_of_goals ~(dbd:HMysql.dbd) proof goals = - let (_, metasenv, _, _) = proof in +let universe_of_goals ~(dbd:HMysql.dbd) metasenv goals = let add_uris_for acc goal = let (_, context, ty) = CicUtil.lookup_meta goal metasenv in let main, sig_constants = Constr.signature_of ty in @@ -262,13 +286,15 @@ let filter_out_predicate set ctx menv = ;; let equations_for_goal ~(dbd:HMysql.dbd) ?signature ((proof, goal) as _status) = -(* let to_string set = - "{ " ^ - (String.concat ", " +(* + let to_string set = + "{\n" ^ + (String.concat "\n" (Constr.UriManagerSet.fold - (fun u l -> (UriManager.string_of_uri u)::l) set [])) - ^ " }" - in *) + (fun u l -> (" "^UriManager.string_of_uri u)::l) set [])) + ^ "\n}" + in +*) let (_, metasenv, _, _) = proof in let (_, context, ty) = CicUtil.lookup_meta goal metasenv in let main, sig_constants = @@ -306,11 +332,13 @@ let equations_for_goal ~(dbd:HMysql.dbd) ?signature ((proof, goal) as _status) = (* Printf.printf "\ndopo close_with_types: %s\n\n" (to_string set); *) let set = close_with_constructors set metasenv context in (* Printf.printf "\ndopo close_with_constructors: %s\n\n" (to_string set); *) - let set = List.fold_right Constr.UriManagerSet.remove l set in + let set_for_sigmatch = List.fold_right Constr.UriManagerSet.remove l set in let uris = - sigmatch ~dbd ~facts:false ~where:`Statement (main,set) in + sigmatch ~dbd ~facts:false ~where:`Statement (main,set_for_sigmatch) in let uris = List.filter nonvar (List.map snd uris) in let uris = List.filter Hashtbl_equiv.not_a_duplicate uris in + let set = List.fold_right Constr.UriManagerSet.add l set in + let uris = List.filter (only set) uris in uris (* ) *) (* else raise Goal_is_not_an_equation *)