From b8cba846d5ad1c5e15b25fa824a77e81d6a7723c Mon Sep 17 00:00:00 2001 From: msozeau Date: Fri, 11 Sep 2009 04:57:19 +0000 Subject: - Resolve type class constraints before trying to find unresolved obligations in [Program Fixpoint]. - Add maximal implicits for pairs in [Program.Syntax]. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12319 85f007b7-540e-0410-9357-904b9bb8a0f7 --- plugins/subtac/subtac_command.ml | 6 +++++- theories/Program/Syntax.v | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/subtac/subtac_command.ml b/plugins/subtac/subtac_command.ml index eb135139c4..1095b143cc 100644 --- a/plugins/subtac/subtac_command.ml +++ b/plugins/subtac/subtac_command.ml @@ -383,7 +383,8 @@ let check_evars env initial_sigma evd c = if not (Evd.mem initial_sigma evk) then let (loc,k) = evar_source evk evd in (match k with - | QuestionMark _ -> () + | QuestionMark _ + | ImplicitArg (_, _, false) -> () | _ -> let evi = nf_evar_info sigma (Evd.find sigma evk) in Pretype_errors.error_unsolvable_implicit loc env sigma evi k None) @@ -426,6 +427,9 @@ let interp_recursive fixkind l boxed = (* Instantiate evars and check all are resolved *) let evd,_ = Evarconv.consider_remaining_unif_problems env_rec !evdref in + let evd = Typeclasses.resolve_typeclasses + ~onlyargs:true ~split:true ~fail:false env_rec evd + in let evd = Evarutil.nf_evar_defs evd in let fixdefs = List.map (nf_evar evd) fixdefs in let fixtypes = List.map (nf_evar evd) fixtypes in diff --git a/theories/Program/Syntax.v b/theories/Program/Syntax.v index 25f6a5152f..9828d4b693 100644 --- a/theories/Program/Syntax.v +++ b/theories/Program/Syntax.v @@ -31,6 +31,10 @@ Implicit Arguments inr [[A] [B]]. Implicit Arguments left [[A] [B]]. Implicit Arguments right [[A] [B]]. +Implicit Arguments pair [[A] [B]]. +Implicit Arguments fst [[A] [B]]. +Implicit Arguments snd [[A] [B]]. + Require Import Coq.Lists.List. Implicit Arguments nil [[A]]. -- cgit v1.2.3