diff options
| author | msozeau | 2009-03-28 21:31:54 +0000 |
|---|---|---|
| committer | msozeau | 2009-03-28 21:31:54 +0000 |
| commit | 8cadbeff68559ee4a621f9ac3ed44c5e5da7a8ba (patch) | |
| tree | a4e14a85d40935e3a2a1cde398961489e5568062 /toplevel | |
| parent | 8ef8ea4a7d2bd37d5d6fa55d482459881c067e85 (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.ml | 2 | ||||
| -rw-r--r-- | toplevel/record.ml | 2 | ||||
| -rw-r--r-- | toplevel/vernacentries.ml | 2 |
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) |
