aboutsummaryrefslogtreecommitdiff
path: root/toplevel
diff options
context:
space:
mode:
authorjforest2010-07-16 20:00:04 +0000
committerjforest2010-07-16 20:00:04 +0000
commitadf6390ab7bf96b0ffd699e96bd6b27bd9d99d98 (patch)
tree7565397787178d5f70aaa79e4d8dafdd4bc6b933 /toplevel
parentfa50dd40b26000c0fe1083fc7c5e76d45ebe6261 (diff)
Amelioration dans Function
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@13292 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'toplevel')
-rw-r--r--toplevel/command.ml9
-rw-r--r--toplevel/command.mli2
2 files changed, 6 insertions, 5 deletions
diff --git a/toplevel/command.ml b/toplevel/command.ml
index 21fb277e2b..3fa83662b2 100644
--- a/toplevel/command.ml
+++ b/toplevel/command.ml
@@ -593,15 +593,16 @@ let declare_cofixpoint boxed ((fixnames,fixdefs,fixtypes),fiximps) ntns =
(* Declare notations *)
List.iter Metasyntax.add_notation_interpretation ntns
-let extract_decreasing_argument = function
+let extract_decreasing_argument limit = function
| (na,CStructRec) -> na
+ | (na,_) when not limit -> na
| _ -> error
"Only structural decreasing is supported for a non-Program Fixpoint"
-let extract_fixpoint_components l =
+let extract_fixpoint_components limit l =
let fixl, ntnl = List.split l in
let fixl = List.map (fun ((_,id),ann,bl,typ,def) ->
- let ann = extract_decreasing_argument ann in
+ let ann = extract_decreasing_argument limit ann in
{fix_name = id; fix_annot = ann; fix_binders = bl; fix_body = def; fix_type = typ}) fixl in
fixl, List.flatten ntnl
@@ -612,7 +613,7 @@ let extract_cofixpoint_components l =
List.flatten ntnl
let do_fixpoint l b =
- let fixl,ntns = extract_fixpoint_components l in
+ let fixl,ntns = extract_fixpoint_components true l in
let fix = interp_fixpoint fixl ntns in
let possible_indexes =
List.map compute_possible_guardness_evidences (snd fix) in
diff --git a/toplevel/command.mli b/toplevel/command.mli
index 779e77f313..818b81ec69 100644
--- a/toplevel/command.mli
+++ b/toplevel/command.mli
@@ -103,7 +103,7 @@ type structured_fixpoint_expr = {
(** Extracting the semantical components out of the raw syntax of
(co)fixpoints declarations *)
-val extract_fixpoint_components :
+val extract_fixpoint_components : bool ->
(fixpoint_expr * decl_notation list) list ->
structured_fixpoint_expr list * decl_notation list