let debug_print = Utils.debug_print;;
+(*
+for debugging
+let check_equation env equation msg =
+ let w, proof, (eq_ty, left, right, order), metas, args = equation in
+ let metasenv, context, ugraph = env in
+ let metasenv' = metasenv @ metas in
+ try
+ CicTypeChecker.type_of_aux' metasenv' context left ugraph;
+ CicTypeChecker.type_of_aux' metasenv' context right ugraph;
+ ()
+ with
+ CicUtil.Meta_not_found _ as exn ->
+ begin
+ prerr_endline msg;
+ prerr_endline (CicPp.ppterm left);
+ prerr_endline (CicPp.ppterm right);
+ raise exn
+ end
+*)
type retrieval_mode = Matching | Unification;;
Inference.ProofGoalBlock (Inference.BasicProof refl, target_proof))
in
let left, right = if is_left then newterm, right else left, newterm in
- let m = (Inference.metas_of_term left) @ (Inference.metas_of_term right) in
+ let m =
+ (Inference.metas_of_term left)
+ @ (Inference.metas_of_term right)
+ @ (Inference.metas_of_term eq_ty) in
(* let newmetasenv = List.filter (fun (i, _, _) -> List.mem i m) (metas @ menv') *)
let newmetasenv = List.filter (fun (i, _, _) -> List.mem i m) (metasenv' @ menv')
and newargs = args
let module HL = HelmLibraryObjects in
let module CR = CicReduction in
let module U = Utils in
- let weight, proof, (eq_ty, left, right, ordering), _, _ = target in
+ let weight, proof, (eq_ty, left, right, ordering), menv, _ = target in
let expansions, _ =
let term = if ordering = U.Gt then left else right in
betaexpand_term metasenv context ugraph table 0 term
let res =
let w = Utils.compute_equality_weight eq_ty left right in
- (w, newproof, (eq_ty, left, right, neworder), [], [])
+ (w, newproof, (eq_ty, left, right, neworder), menv @ menv', [])
in
res
in