let active = others @ others_simpl in
let tbl =
List.fold_left
- (fun t e -> Indexing.index t e)
+ (fun t e ->
+ if Equality.is_weak_identity e then t else Indexing.index t e)
Indexing.empty active
in
let res = forward_simplify eq_uri env e (active, tbl) in
;;
let check_if_goal_is_subsumed ((_,ctx,_) as env) table (goalproof,menv,ty) =
- let names = Utils.names_of_context ctx in
+(* let names = Utils.names_of_context ctx in *)
match ty with
| Cic.Appl[Cic.MutInd(uri,_,_);eq_ty;left;right]
when LibraryObjects.is_eq_URI uri ->
let saturate
caso_strano
dbd ?(full=false) ?(depth=default_depth) ?(width=default_width)
- ?(timeout=600.) status =
+ ?(timeout=600.) ?auto status =
let module C = Cic in
reset_refs ();
Indexing.init_index ();
let cleaned_goal = Utils.remove_local_context type_of_goal in
Utils.set_goal_symbols cleaned_goal;
let names = Utils.names_of_context context in
- let eq_indexes, equalities, maxm = Inference.find_equalities context proof in
+ let eq_indexes, equalities, maxm, universe, cache =
+ Inference.find_equalities ?auto context proof AutoTypes.cache_empty
+ in
+ prerr_endline ">>>>>>>>>> gained from the context >>>>>>>>>>>>";
+ List.iter (fun e -> prerr_endline (Equality.string_of_equality e)) equalities;
+ prerr_endline ">>>>>>>>>>>>>>>>>>>>>>";
let ugraph = CicUniv.empty_ugraph in
let env = (metasenv, context, ugraph) in
let goal = [], List.filter (fun (i,_,_)->i<>goalno) metasenv, cleaned_goal in
let res, time =
let t1 = Unix.gettimeofday () in
- let lib_eq_uris, library_equalities, maxm =
- Inference.find_library_equalities caso_strano dbd context (proof, goalno) (maxm+2)
+ let lib_eq_uris, library_equalities, maxm, universe, cache =
+ Inference.find_library_equalities
+ ?auto caso_strano dbd context (proof, goalno) (maxm+2)
+ ?universe cache
in
+ prerr_endline ">>>>>>>>>> gained from the library >>>>>>>>>>>>";
+ List.iter
+ (fun (_,e) -> prerr_endline (Equality.string_of_equality e))
+ library_equalities;
+ prerr_endline ">>>>>>>>>>>>>>>>>>>>>>";
let library_equalities = List.map snd library_equalities in
let t2 = Unix.gettimeofday () in
maxmeta := maxm+2;
(Printf.sprintf "Time to retrieve equalities: %.9f\n" (t2 -. t1)));
let t1 = Unix.gettimeofday () in
let theorems =
- if full then
- let thms = Inference.find_library_theorems dbd env (proof, goalno) lib_eq_uris in
- let context_hyp = Inference.find_context_hypotheses env eq_indexes in
- context_hyp @ thms, []
- else
- let refl_equal = LibraryObjects.eq_refl_URI ~eq:eq_uri in
- let t = CicUtil.term_of_uri refl_equal in
- let ty, _ = CicTypeChecker.type_of_aux' [] [] t CicUniv.empty_ugraph in
- [(t, ty, [])], []
+ let refl_equal = LibraryObjects.eq_refl_URI ~eq:eq_uri in
+ let t = CicUtil.term_of_uri refl_equal in
+ let ty, _ = CicTypeChecker.type_of_aux' [] [] t CicUniv.empty_ugraph in
+ [(t, ty, [])], []
in
let t2 = Unix.gettimeofday () in
let _ =
let uri, metasenv, meta_proof, term_to_prove = proof in
let _, context, type_of_goal = CicUtil.lookup_meta goal' metasenv in
let eq_uri = eq_of_goal type_of_goal in
- let eq_indexes, equalities, maxm = Inference.find_equalities context proof in
+ let eq_indexes, equalities, maxm,universe,cache =
+ Inference.find_equalities context proof AutoTypes.cache_empty in
let ugraph = CicUniv.empty_ugraph in
let env = (metasenv, context, ugraph) in
let t1 = Unix.gettimeofday () in
- let lib_eq_uris, library_equalities, maxm =
- Inference.find_library_equalities false dbd context (proof, goal') (maxm+2) in
+ let lib_eq_uris, library_equalities, maxm, unvierse, cache =
+ Inference.find_library_equalities
+ false dbd context (proof, goal') (maxm+2) ?universe cache
+ in
let t2 = Unix.gettimeofday () in
maxmeta := maxm+2;
let equalities = (* equalities @ *) library_equalities in
let _, metasenv, meta_proof, _ = proof in
let _, context, goal = CicUtil.lookup_meta goal' metasenv in
let eq_uri = eq_of_goal goal in
- let eq_indexes, equalities, maxm = Inference.find_equalities context proof in
- let lib_eq_uris, library_equalities, maxm =
- Inference.find_library_equalities false dbd context (proof, goal') (maxm+2)
+ let eq_indexes, equalities, maxm, universe, cache =
+ Inference.find_equalities context proof AutoTypes.cache_empty in
+ let lib_eq_uris, library_equalities, maxm,universe,cache =
+ Inference.find_library_equalities
+ false dbd context (proof, goal') (maxm+2) ?universe cache
in
let library_equalities = List.map snd library_equalities in
maxmeta := maxm+2; (* TODO ugly!! *)
let curi,metasenv,pbo,pty = proof in
let metano,context,ty = CicUtil.lookup_meta goal metasenv in
let eq_uri = eq_of_goal ty in
- let eq_indexes, equalities, maxm =
- Inference.find_equalities context proof
+ let eq_indexes, equalities, maxm, universe, cache =
+ Inference.find_equalities context proof AutoTypes.cache_empty
+ in
+ let lib_eq_uris, library_equalities, maxm, universe, cache =
+ Inference.find_library_equalities
+ false dbd context (proof, goal) (maxm+2) ?universe cache
in
- let lib_eq_uris, library_equalities, maxm =
- Inference.find_library_equalities false dbd context (proof, goal) (maxm+2) in
if library_equalities = [] then prerr_endline "VUOTA!!!";
let irl = CicMkImplicit.identity_relocation_list_for_metavariable context in
let library_equalities = List.map snd library_equalities in
let eq_uri,tty = eq_and_ty_of_goal ty in
let env = (metasenv, context, CicUniv.empty_ugraph) in
let names = Utils.names_of_context context in
- let eq_index, equalities, maxm = Inference.find_equalities context proof in
+ let eq_index, equalities, maxm,universe,cache =
+ Inference.find_equalities context proof AutoTypes.cache_empty
+ in
let eq_what =
let what = find_in_ctx 1 target context in
List.nth equalities (position_of 0 what eq_index)