diff options
| author | msozeau | 2009-09-11 04:57:19 +0000 |
|---|---|---|
| committer | msozeau | 2009-09-11 04:57:19 +0000 |
| commit | b8cba846d5ad1c5e15b25fa824a77e81d6a7723c (patch) | |
| tree | 26d6a594e5ab784c469a2d60f3ee2c4c2d239b3a | |
| parent | 809c9dd5a2f0bedbbd3ef55809748dd1a56837f0 (diff) | |
- 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
| -rw-r--r-- | plugins/subtac/subtac_command.ml | 6 | ||||
| -rw-r--r-- | theories/Program/Syntax.v | 4 |
2 files changed, 9 insertions, 1 deletions
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]]. |
