aboutsummaryrefslogtreecommitdiff
path: root/toplevel
diff options
context:
space:
mode:
authormsozeau2009-03-28 21:31:54 +0000
committermsozeau2009-03-28 21:31:54 +0000
commit8cadbeff68559ee4a621f9ac3ed44c5e5da7a8ba (patch)
treea4e14a85d40935e3a2a1cde398961489e5568062 /toplevel
parent8ef8ea4a7d2bd37d5d6fa55d482459881c067e85 (diff)
Rewrite of Program Fixpoint to overcome the previous limitations:
- The measure can now refer to all the formal arguments - The recursive calls can make all the arguments vary as well - Generalized to any relation and measure (new syntax {measure m on R}) This relies on an automatic curryfication transformation, the real fixpoint combinator is working on a sigma type of the arguments. Reduces to the previous impl in case only one argument is involved. The patch also introduces a new flag on implicit arguments that says if the argument has to be infered (default) or can be turned into a subgoal/obligation. Comes with a test-suite file. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12030 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'toplevel')
-rw-r--r--toplevel/himsg.ml2
-rw-r--r--toplevel/record.ml2
-rw-r--r--toplevel/vernacentries.ml2
3 files changed, 3 insertions, 3 deletions
diff --git a/toplevel/himsg.ml b/toplevel/himsg.ml
index 9658f792e8..4e5eded8e4 100644
--- a/toplevel/himsg.ml
+++ b/toplevel/himsg.ml
@@ -330,7 +330,7 @@ let explain_hole_kind env evi = function
str "the type of " ++ Nameops.pr_id id
| BinderType Anonymous ->
str "the type of this anonymous binder"
- | ImplicitArg (c,(n,ido)) ->
+ | ImplicitArg (c,(n,ido),b) ->
let id = Option.get ido in
str "the implicit parameter " ++
pr_id id ++ spc () ++ str "of" ++
diff --git a/toplevel/record.ml b/toplevel/record.ml
index fe478f0807..d22735f1dd 100644
--- a/toplevel/record.ml
+++ b/toplevel/record.ml
@@ -281,7 +281,7 @@ let implicits_of_context ctx =
match name with
| Name n -> Some n
| Anonymous -> None
- in ExplByPos (i, explname), (true, true))
+ in ExplByPos (i, explname), (true, true, true))
1 (List.rev (Anonymous :: (List.map pi1 ctx)))
let typeclasses_db = "typeclass_instances"
diff --git a/toplevel/vernacentries.ml b/toplevel/vernacentries.ml
index b146e0c506..5d886c07e6 100644
--- a/toplevel/vernacentries.ml
+++ b/toplevel/vernacentries.ml
@@ -767,7 +767,7 @@ let vernac_syntactic_definition lid =
let vernac_declare_implicits local r = function
| Some imps ->
Impargs.declare_manual_implicits local (global_with_alias r) ~enriching:false
- (List.map (fun (ex,b,f) -> ex, (b,f)) imps)
+ (List.map (fun (ex,b,f) -> ex, (b,true,f)) imps)
| None ->
Impargs.declare_implicits local (global_with_alias r)