Download Le Coq` Art (V8)
Transcript
3.1. PREMIERS PAS 39 Coq permet d’ouvrir (c’est à dire rendre actives) simultanément plusieurs portées, chacune permettant d’interpréter un ensemble de notations. Ces portées sont placées sur une pile contenant au départ une portée minimale appelée core_scope définissant les notations de base de Gallina. Par ailleurs, dès que l’analyse syntaxique attend un type, une portée contenant les notations spécifiques aux types, et appelée type_scope est empilée automatiquement. La commande pour empiler une portée est “ Open Scope portée ”. Si deux portées définissant la même notation (par exemple l’opérateur ‘*’ de multiplication des nombres entiers et le produit cartésien) sont ouvertes, la portée la plus récemment ouverte masque la plus ancienne. Il peut être utile d’empiler une portée pour une seule expression. La syntaxe est alors “ exp%k ”, où k est un symbole associé à la portée à ouvrir (“delimiting key”). Cette facilité permet alors de disposer de plusieurs conventions d’écriture au sein d’une même commande, par exemple si une expression contient à la fois des nombres entiers et des nombres réels. La commande Locate permet de connaître à tout moment quelles interprétations sont associées à une notation donnée. Dans l’exemple suivant, nous demandons quelles sont les interprétations de l’opérateur infixe ‘*’ : Open Scope Z_scope. Locate ... "x * y" "x * y" "x * y" "x * y" "x * y" "_ * _". := := := := := prod x y : type_scope Ring_normalize.Pmult x y : ring_scope Pmult x y : positive_scope mult x y : nat_scope Zmult x y : Z_scope (default interpretation) Ce dialogue montre que, par défaut, la notation “x * y” doit s’interpréter comme l’application de la fonction Zmult (multiplication des nombres entiers), selon la portée Z_scope. La commande “ Print Scope ” permet de connaître toutes les notations définies par une portée, ainsi que la clef associée (champ “Delimiting key”) : Print Scope Z_scope. Scope Z_scope Delimiting key is Z Bound to class Z "- x" := Zopp x "x * y" := Zmult x y "x + y" := Zplus x y "x - y" := Zminus x y "x / y" := Zdiv x y "x < y" := Zlt x y
Related documents
Le Coq` Art (V8)
Assistants de preuve
Matita Tutorial - Dipartimento di Informatica
MYWIHGQN \12. File 111011011 work/Pace Manager
Preuves Constructives
Manual/PartI/Your First Animation in 30 plus 30 Minutes Part I Your
User Manual Carbo 1000
E! @ @ - Chinavasion
as Authoring Tool for Formal Developments - Informatik - FB3
MARS CLIMATE DATABASE v5.0 USER MANUAL
MARS CLIMATE DATABASE v4.3 USER MANUAL
Topcom CLIP 160 User's Manual