aboutsummaryrefslogtreecommitdiff
path: root/interp
diff options
context:
space:
mode:
authorherbelin2008-08-04 18:10:48 +0000
committerherbelin2008-08-04 18:10:48 +0000
commit7d515acbc5d83aa2300b71a9b7712b3da1d3d2e3 (patch)
tree01b9d71f3982ebee13c41cd9c2d5d6960c317eee /interp
parent0721090dea4d9018f4c4cad8cefa1a10fb0d5a71 (diff)
Évolutions diverses et variées.
- Correction divers messages d'erreur - lorsque rien à réécrire dans une hyp, - lorsqu'une variable ltac n'est pas liée, - correction anomalie en présence de ?id dans le "as" de induction, - correction mauvais env dans message d'erreur de unify_0. - Diverses extensions et améliorations - "specialize" : - extension au cas (fun x1 ... xn => H u1 ... un), - renommage au même endroit. - "assert" et "pose proof" peuvent réutiliser la même hyp comme "specialize". - "induction" - intro des IH toujours au sommet même si induction sur var quantifiée, - ajout d'un hack pour la reconnaissance de schémas inductifs comme N_ind_double mais il reste du boulot pour reconnaître (et/ou réordonner) les composantes d'un schéma dont les hypothèses ne sont pas dans l'ordre standard, - vérification de longueur et éventuelle complétion des intropatterns dans le cas de sous-patterns destructifs dans induction (par exemple "destruct n as [|[|]]" sur "forall n, n=0" ne mettait pas le n dans le contexte), - localisation des erreurs d'intropattern, - ajout d'un pattern optionnel après "as" pour forcer une égalité et la nommer (*). - "apply" accepte plusieurs arguments séparés par des virgules (*). - Plus de robustesse pour clear en présence d'evars. - Amélioration affichage TacFun dans Print Ltac. - Vieux pb espace en trop en tête d'affichage des tactiques EXTEND résolu (incidemment, ça remodifie une nouvelle fois le test output Fixpoint.v !). - Fusion VTactic/VFun dans l'espoir. - Mise en place d'un système de trace de la pile des appels Ltac (tout en préservant certains aspects de la récursivité terminale - cf bug #468). - Tactiques primitives - ajout de "move before" dans les tactiques primitives et ajout des syntaxes move before et move dependent au niveau utilisateur (*), - internal_cut peuvent faire du remplacement de nom d'hypothèse existant, - suppression de Intro_replacing et du code sous-traitant - Nettoyage - Suppression cible et fichiers minicoq non portés depuis longtemps. (*) Extensions de syntaxe qu'il pourrait être opportun de discuter git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11300 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'interp')
-rw-r--r--interp/genarg.ml22
-rw-r--r--interp/genarg.mli21
2 files changed, 22 insertions, 21 deletions
diff --git a/interp/genarg.ml b/interp/genarg.ml
index b371582a15..e962880978 100644
--- a/interp/genarg.ml
+++ b/interp/genarg.ml
@@ -75,24 +75,24 @@ let create_arg s =
let exists_argtype s = List.mem s !dyntab
type intro_pattern_expr =
- | IntroOrAndPattern of case_intro_pattern_expr
- | IntroWildcard of loc
- | IntroIdentifier of identifier
- | IntroAnonymous
+ | IntroOrAndPattern of or_and_intro_pattern_expr
+ | IntroWildcard
| IntroRewrite of bool
+ | IntroIdentifier of identifier
| IntroFresh of identifier
-and case_intro_pattern_expr = intro_pattern_expr list list
+ | IntroAnonymous
+and or_and_intro_pattern_expr = (loc * intro_pattern_expr) list list
-let rec pr_intro_pattern = function
- | IntroOrAndPattern pll -> pr_case_intro_pattern pll
- | IntroWildcard _ -> str "_"
- | IntroIdentifier id -> pr_id id
- | IntroAnonymous -> str "?"
+let rec pr_intro_pattern (_,pat) = match pat with
+ | IntroOrAndPattern pll -> pr_or_and_intro_pattern pll
+ | IntroWildcard -> str "_"
| IntroRewrite true -> str "->"
| IntroRewrite false -> str "<-"
+ | IntroIdentifier id -> pr_id id
| IntroFresh id -> str "?" ++ pr_id id
+ | IntroAnonymous -> str "?"
-and pr_case_intro_pattern = function
+and pr_or_and_intro_pattern = function
| [pl] ->
str "(" ++ hv 0 (prlist_with_sep pr_coma pr_intro_pattern pl) ++ str ")"
| pll ->
diff --git a/interp/genarg.mli b/interp/genarg.mli
index da03718999..bbdc7f7f0a 100644
--- a/interp/genarg.mli
+++ b/interp/genarg.mli
@@ -32,16 +32,16 @@ type open_rawconstr = unit * rawconstr_and_expr
type 'a with_ebindings = 'a * open_constr bindings
type intro_pattern_expr =
- | IntroOrAndPattern of case_intro_pattern_expr
- | IntroWildcard of loc
- | IntroIdentifier of identifier
- | IntroAnonymous
+ | IntroOrAndPattern of or_and_intro_pattern_expr
+ | IntroWildcard
| IntroRewrite of bool
+ | IntroIdentifier of identifier
| IntroFresh of identifier
-and case_intro_pattern_expr = intro_pattern_expr list list
+ | IntroAnonymous
+and or_and_intro_pattern_expr = (loc * intro_pattern_expr) list list
-val pr_intro_pattern : intro_pattern_expr -> Pp.std_ppcmds
-val pr_case_intro_pattern : case_intro_pattern_expr -> Pp.std_ppcmds
+val pr_intro_pattern : intro_pattern_expr located -> Pp.std_ppcmds
+val pr_or_and_intro_pattern : or_and_intro_pattern_expr -> Pp.std_ppcmds
(* The route of a generic argument, from parsing to evaluation
@@ -128,15 +128,16 @@ val wit_int_or_var : (int or_var,tlevel) abstract_argument_type
val rawwit_string : (string,rlevel) abstract_argument_type
val globwit_string : (string,glevel) abstract_argument_type
+
val wit_string : (string,tlevel) abstract_argument_type
val rawwit_pre_ident : (string,rlevel) abstract_argument_type
val globwit_pre_ident : (string,glevel) abstract_argument_type
val wit_pre_ident : (string,tlevel) abstract_argument_type
-val rawwit_intro_pattern : (intro_pattern_expr,rlevel) abstract_argument_type
-val globwit_intro_pattern : (intro_pattern_expr,glevel) abstract_argument_type
-val wit_intro_pattern : (intro_pattern_expr,tlevel) abstract_argument_type
+val rawwit_intro_pattern : (intro_pattern_expr located,rlevel) abstract_argument_type
+val globwit_intro_pattern : (intro_pattern_expr located,glevel) abstract_argument_type
+val wit_intro_pattern : (intro_pattern_expr located,tlevel) abstract_argument_type
val rawwit_ident : (identifier,rlevel) abstract_argument_type
val globwit_ident : (identifier,glevel) abstract_argument_type