EXPLIQUER le changement de Fact (JCF ??)

Langage

- Ajout de dfinitions locales (Let-In) avec la syntaxe [x:=u]t. Cela
  peut entrainer des comportements nouveaux pour certaines tactiques.

- Les dfinitions globales de la bibliothque standard sont associes
   un nom long refltant la structure logique de la notion. Un tel nom
  long a la forme Coq.Lists.PolyList.Map.flat_map o Coq dnote que la
  dfinition flat_map fait partie de la bibliothque standard, Lists
  qu'elle se trouve dans le rpertoire Lists, PolyList qu'elle se trouve
  dans le module PolyList, et Map qu'elle se trouve dans la section Map.

- On peut (et il est conseill) associer  un rpertoire physique un
  nom logique dans la structure des noms de Coq. Les dfinitions de la
  bibliothque standard sont associes au prfixe logique `Coq'. Pour
  associer un rpertoire physique  un nom logique, il faut utiliser
  l'option -R de coqtop et coqc (cf Outils). Par dfaut, le nom logique
  "Scratch" est utilis pour toute dfinition globale non associe  un
  module non associ  un nom logique.

- Le nom long des dfinitions globales est accessible pour
  l'utilisateur par la notation pointe (style Coq.Arith.Plus.plus_assoc_l).
  La syntaxe du "." final change (cf Vernac). Le nommage des dfinitions
  globales change (cf Mtathorie).

- Le problme avec les identificateurs se terminant par un nombre
  suprieur  2^30 est rsolu.

- Le caractre "$" n'est plus autoris dans les identificateurs.

Extensions de syntaxe avec Grammar et Syntax

- L'analyseur lexical considre maintenant comme lexme toute suite de
  symboles. Des exceptions ont t codes dans l'analyseur lexical pour sparer
  des lexmes que l'on a l'habitude de "coller" (par exemple A->~B), mais ce
  n'est pas exhaustif et des espaces doivent tre insrs dans certains cas
  qui n'ont pas t traits (source d'incompatibilit).

- L'entre "command" dans "Grammar" et dans les piquants s'appelle
  maintenant "constr" comme dans "Syntax".

- Ajout de la syntaxe "[" phrase_1 ... phrase_n"]." pour grouper des
  phrases (utile pour Time et pour des grammaires abrgeant plusieurs
  commandes).

- Le parseur par dfaut des actions des rgles de grammaires et des
  motifs des rgles d'affichage est maintenant celui associ au nom de
  la grammaire (vernac, tactic ou constr). Donc plus de piqants
  <:vernac:<...>> etc. Pour retourner de l'ast, il faut typer
  explicitement la grammaire avec "ast" ou "List" (renomm d'ailleurs
  "ast list"), ou, si c'est dans une rgle Syntax, utiliser la quotation
  << ... >> qui replace dans ast. Pour les nouvelles grammaires (autre
  que les 3 primitives), on peut typer avec "constr", "tactic", ou
  "vernac" pour utiliser le parseur correspondant.

- L'interprtation des noms dans les rgles de grammaire (Grammar) se
  font maintenant avec un nom long. Ceci interdit la surcharge de
  notation base uniquement sur le nom court.

- Le non affichage des Infix est corrig.

- Ajout d'une syntaxe pour les rels: ``Rexpr``.
  Point noir d aux constantes: (Rplus (Rplus (Rplus R1 R1) (Rplus R1 R1)) R1)
  est toujours (2+2+1) au lieu de 2+2+1 


Syntaxe des constructions

- Cases engendre parfois des noms differents (source thorique
  d'incompatibilit mais insensible dans la pratique)

- Les alias de motifs ayant un type dpendant ne sont pour l'instant
  pas traits

- Davantage d'infrence automatique de "?".

- Davantage d'arguments implicites engendrs par le discharge.

- Les cas des Cases ne se lisent plus de manire squentielle, sauf en
  cas de clauses par dfaut redondantes auquel cas la premire est prise
  avec un avertissement.


Commandes

- Changement de nom de certaines commandes

  AddPath -> Add LoadPath;
  Print LoadPath -> Print LoadPath;
  DelPath -> Remove LoadPath;
  AddRecPath -> Add Rec LoadPath
  Print Path -> Print Coercion Paths.

  Implicit Arguments On -> Set Implicit Arguments
  Implicit Arguments Off -> Unset Implicit Arguments

  Nouveau: Test Implicit Arguments

- End Silent tait interprt comme une fin de section 
  Begin Silent -> Set Silent
  End Silent -> Unset Silent.

- Commandes pour associer des chemins physiques  des chemins logiques

  Add LoadPath physical_dir as logical_dir
  Add Rec LoadPath physical_dir as logical_dir

- Import module (re-)rend visible toutes les dfinitions et thormes
  dfinis dans module.

- Dclaration manuelle des implicites avec

  "Implicits ident." pour activer les arguments implicites pour ident
  indpendamment de l'tat courant du mode implicite.

  "Implicits ident [ num num ... num ]." pour donner explicitement
  quels arguments doivent tre implicites.

- SearchPattern / SearchRewrite (contribution de Yves Bertot); Search
  peut lui aussi tre restreint  une recherche dans ou  l'extrieur de
  modules.

- SearchIsos n'a pas encore t port.

- Le point final des commandes doit tre suivi d'un blanc (retour
  chariot, tabulation ou espace)

- Lgre restriction de la syntaxe de Cbv Delta : l'option [-myconst]
  de Cbv doit immdiatement suivre Delta

- Nouveau: Debug On/Off positionne/dbranche le dbogueur de tactiques
  (encore trs exprimental).

- Fact se comporte diffremment (comment, JCF ??)

Tactiques

- Langage de tactiques Ltac: nouvelle couche de mtalangage pour traiter de
  petites automatisations. C'est essentiellement un petit noyau fonctionnel
  muni d'oprateurs de filtrage labors (sur les termes, les contextes de
  preuves et ralisant du backtracking). Pour connatre les justifications
  d'un tel language et se procurer une documentation provisoire de Ltac, se
  rfrer  l'URL suivante:

      http://logical.inria.fr/~delahaye/

- Tactique Let renomm en LetTac et utilise le let-in primitif;
  Induction renomm en OldInduction et nouveau Induction plus
  "convivial".

- Elim avec un schma d'limination diffrent de celui cr  la
  dfinition d'un inductif n'est plus possible. Il faut utiliser Elim
  <hyp> with <nom du schma d'limination>.

- Decompose
  - Numrotation dans l'ordre des hypothses cres
  - Correction de bugs (quand le type ne commence pas par un inductif)
    et refus d'agir sous les ->.

- Simpl ne dplie plus les appels rcursifs d'un Fix mutuel rduit. 
  Rem: c'est une source d'incompatibilit.

- Intro choue si le nom d'hypothse existe au lieu de mettre un avertissement

- Plus de "Require Prolog" (intgr par dfaut)

- Unfold choue si on lui donne en argument une dfinition non dpliable

- Tauto et Intuition ont t intgralement rcrites en utilisant le nouveau
  langage de tactiques Ltac. Les consquences sont un gain considrable en
  compacit et en performances. Tauto est totalement conservatif. Intuition
  perd lgrement en puissance mais gagne une smantique plus claire.

- AutoRewrite ne s'occupe maintenant que du but principal et c'est les
  Hint Rewrite qui grent les sous-buts gnrs.

- Les instantiations redondantes ou incompatibles de Apply ... with ...
  sont maintenant correctement traites.


Outils

- Deux binaires maximum : coqtop.byte et coqtop.opt si plateforme native; 
  coqtop est un lien vers le plus efficace possible (coqtop.opt s'il existe,
  coqtop.byte sinon); -full maintenant obsolete

- do_Makefile s'appelle maintenant coq_makefile

- Utilisation de l'option -R de coqtop et coqc pour associer un
  rpertoire physique  un rpertoire logique (cf Mtathorie) 

- La plupart des erreurs de typage sont maintenant localise dans le
  source ( l'exception des erreurs d'univers et de garde).


Dveloppeurs

- Beaucoup de modification dans le sens de la simplification et de la
  documentation (mais cela reste une version de transition)
