Vérification des textes mathématiques par un ordinateur

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "Vérification des textes mathématiques par un ordinateur"

Transcription

1 Vérification des textes mathématiques par un ordieur de Bruijn, N.G. Gepubliceerd: 01/01/1969 Document Version Uitgevers PDF, ook bekend als Version of Record Please check the document version of this publication: A submitted manuscript is the author's version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website. The final author version and the galley proof are versions of the publication after peer review. The final published version features the final layout of the paper including the volume, issue and page numbers. Link to publication Citation for published version (APA): Bruijn, de, N. G. (1969). Vérification des textes mathématiques par un ordieur: conférence à Lille, le 21 novembre Eindhoven: Technische Hogeschool Eindhoven. General rights Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. Users may download and print one copy of any publication from the public portal for the purpose of private study or research. You may not further distribute the material or use it for any profit-making activity or commercial gain You may freely distribute the URL identifying the publication in the public portal? Take down policy If you believe that this document breaches copyright please contact us providing details, and we will remove access to the work immediately and investigate your claim. Download date: 11. Oct. 2018

2 Notitie Nr. 18 ( ) 14 november 1969 Technological University Eindhoven Department of Mathematics Verification textes mathematiques jar un ordieur. Conference & Lille, le 21 novembre 1969, par N. G. de Brui jn (~indhoven). Le probleme de ve'rification des textes mathdmatiques est au fond le probleme de d6finir un.langage. I1 faut que ce hngage satisfait aux propriet6s suivantes: 1. Tout ce qu'est correct en mathe'matiques peut &re exprim6 avec ce langage, conform 8, sa grammaire, et tout ce qulon peut dire au moyen ce langage est correct en math6matiques. 2. On admet que les textes de mathematiques ordinaires stallongent par lb traduction, mais on nladmet pas que la proportion de l'allongement tend vers lfinfini b mesure qu'on fait des progrbs. 3. On dispose dlun programme avec lequel un ordieur peut trancher si un livre donnd est correct ou non. La tache no. 1 est vraiment impossible, En premier lieu, il semble impossible de prdciser ce qulil veut dire "math6matiques". Pourtant, on peut essayer de circonscrire une partie de math6matiques, assez large pour la pratique quotidienne. I1 semble que le langage AUTOMATH, ddveloppe & Eindhoven depuis 1 967, satisfait % cette condition, ainsi qu aux conditions 2 et 3. Dans cette conference-ci, nous considdrons principalement la definition du langage. A fin de mieux Qtablir les difficult& principales, nous allons discuter d'abord deux langages plus simples:premi&rement SEMIPAL, oh on a d6j& la structure de bloc et le systhme dlabr&viation, et ensuite PAL, oh on a, en outre, lladministration de cat6gories. On arrive &. AUTOMATH en ajoutant un systeme de quantification en forme dlun calcul lambda g6ndralise'.

3 PremiBre phase: le langage SEMIPAL. SEMIPAL est un systijme pour exprimer des notions en termes dtautres, en utilisant la structure de blocs imbriqu6sd Les expressions en SjEMIPAL ont une structure donnee par <expression> ::= < identif icat eu& identificateur list; dl expressions>) <liste dl expressions > : : = <expression > k liste dt expressions>,<expression> Un livre en SEMIPAL consiste dtun liste de lignes. Les lignes ont la < explication > : : = - I PN I <expression Les identificateurs des lignes diverses sont tous diffdrents; si lton veut, on peut choisir le numdro dtune ligne comme son identificateur. La liste des limes est structurben blocs qui peuvent slimbriquer les uns dans les autres, sans se chevaucher. A la t&e dtun bloc on trouve une ligne de la forme < identif icateur >: = - En ce cas-ci, llidentificateur slappelle variable. Lfindicateur dtune ligne est le variable B la tgte du plus petit bloc contenant cette ligne, sauf pour les tgtes de bloc elles-m&nes,oh llindicateur est la tete du plus petit bloc un seul except6, dam aucun bloc, lfindicateur est le symbole 0. Si une ligne ne se trouve La 1-2 dlindicateurs dlune ligne est la liste des variables de t&tes de blocs contenant cette ligne, dans ltordre impose par le livre. Encore, quad la ligne est B la t&e liste. dlun bloc, son identificateur ntappartient pas 8, cette Quand une expression figure dans une ligne, elle ne peut pas contenir desvariablesqui nlappartiennent pas 8. la liste dlidentificateurs. D1autre part, les identificateurs non variables peuvent &re utilises partout, pourvu qulils sont rnunis dfune liste de sous-expressions dont la longueur satisfait B une certaine condition. Pour lfexpression b(zl,..., zd). utilisge dans la ligne A, eette condition stexprime comme suit: Si x,,..., x est la liste r

4 d'indicateurs de b, nous convenons quer 4 r et que la ligne A se troilve dam le bloc de xr - Dans ce cas on peut consid~rer b( El,.., zr) et b(xl, a.e, Xr-pE1 9. triviales quand r = 0 ou r = A..., z ~) comme identiques. On a des modifications Exemple. Nous prenons le texte qui s'ecrit normalement comme non (x) := notion primitive et (x,y) := notion primitive ou (x,y) := non (et(non(x), imp1 (x,~):= ou (non(x), y) n~n(~)) equiv (x,y) := et (impl(x,y), impl (y,x)) outroi (x,y,z):= ou (ou(x,y), z) tralala (x, y) := outroi (et (x,~), non(imp1 (x,y)), non(impl(y, x ) Ce text. se lit en SEMIPAL cornme suit: X := non := PN 1 y := I et := PN ou : = non ( et (non, non(y) ) ) impl : = ou (non,y) equiv := et (impl, impl(y,x)) Z := outroi : = ou (ou, z) tralaa := outroi (et, non(impl), non(impl(y,x))) Dans la premiere colome on trouve les indicateurs. Remarque. Sans changer lteffet, on peut remplacer, par exemple, la definition de "equiv" par equiv : = et (impl (y), impl (y,x)), ou : equiv: := et (impl(x,y), impl(y,x)).

5 DeuxiBme phase. Le langage PAL. En PAL chdque expression a une cat&orie, sauf les expressions qui sont des cate'gories elles-mbmes. Dans le cas dernier, on 6crit au lieu de la cattlgorie le symbole type. On a le droit dtintroduire des cat6gories nouvelles, ti=== soit comme des variables, soit comme des notions primitives, soit comme des expressions. I1 y a quelques restrictions que nous donnons en forme abrdgge: 1. Une tete de bloc doit avoir une categorie qui est valable dans le bloc o'u cette t&te de bloc est insqr6e. 2. h'catbgorie dfune notion primitive doit &re une catdgorie valable au m&me lieu. 3. Quand on Ccrit des expressions comme b(e I. '...,,TI), on demande (quand xi,,.., xr est la liste d'indicateurs de b) que 2, s la catggorie de 5 - que Z2 a la catdgorie de xr - I+i avec substitution de2,pour xrmj, etc pot :=- reel x :=- I m22 y :=- produit cartqsien := PN 3x22 I u := - produit cartdsien (, ) On peut Qcrire des assertions en PAL, et par suite, on peut donner certaines dbmonstrations. Pour $a on convient quluneassertion correspond & une catqgorie. Alors, faire llassertion veut dire: exprimer qulon a une expression avec cette cat6gorie. Par exemple si l1on veut introduire Qgalit6 de nombres reels comme notion primitive, on Qcrit

6 0 x : = rdel X 1 y: := rdel Y EGAL : = PN La!? Par suite, quand on a les reas $2 et q, on peut dcrire lfhypoth8se p = q comme O l u : = lau ( ~ D'ailleurs,on peut dcrire llaxi.ome p = q come v := PN EGfi (P&), et le th6orhme p = q comme W :=... BxTJ (p,q), bu... est une expression qui peut Qtre considdrde cornmela d6monstration du th6or8me. Cette expression contient, soit implicitement, soit explicitement, toute information necessaire pour comprendre la dtlmonstration. Le thqor&me n'est pas Bnonc4 avant que la ddmonstration soit termin6e. Si 1 on veut, on peut cansiderer les propositions comme ob jets mathdmatiques: boo1 := PN LYE et on peut postuler que chaque proposition,ba son categorie d'affirmation:. - boo1 b IiRUE :=PN ALlE Alors, si c est une proposition queloonque, on peut affirmer c (soit comme hypothbe, soit comme axiome, soit comme th6orsme) par une ligne... e TRUE (c). CTest ainsi qulen PAL on peut ddcrire la structure de blocs en mathtlmatiques oh les t8tes de blocs sont des variables aussi bien que des hypoth&ses. Exemple. Nous introduirons 1s notion de conjunction de deux propositions odmme notion primitive*nous exprimerons quelques axiomes et un theorbe; aprh fa nous indiquerons comment on peut appliquer ce resultat dam une.situation d onnde.

7 0 0 b 0 X Y Y asp 1 asp 2 Y asp 3 asp 3 asp.3 b ImUE X Y and ax 2 1 theorem 3zE SxE TRUE (x) w2u-e (Y TRUE (and) TRUE (and) TRUE (x) TRUE (Y TRUE(and(y,x) Maintenant, supposons que les lignes suivantes sont disponibles: alors nous pouvons Qcrire...a boo1... boo1... TRu~(and(u,v) ) 3. Troisieme phase: le langage AUTOMATH. ATJTCWIATH est plus gdndral que PAL; chaque texte en PAL est aussi valable en AUTOMATH. La diff e'rence entre les deux est qul en AUTOMATH on se sert du calcul lambda de Church, ou plut8t dlune extension de ce ca,lcul. Si 6 est me catggorie quelconque, une application qui donne, B tout x du type 6, une valeur f(x) du type q(x), est Qcrite oome et on dit que son type est

8 Une telle application peut &tre introduite comme une variable: p := [x,~ 3.. q(x> ou comme notion primitive q : E PN [xl] +)* EII outre, si llexpression c a le type [x, 51 dx), et si llexpression A a le type r, on a le droit de former (4 c Du reste, si Z a la forme Ex, t] I' (oh I? est une expression qui contient x), il est entendu que (A) I: peut gtre rempla~6 par 1 expression obtenue- par substitution de A pour x dam I',.. IExernple. f := [x,~] plus (x,x) [x&] rdel a :=... rdel b : (a)f rdel Ainsi b et plus (a,a) sont interchangeables (dgal par d6finition). Les r&gles dl operation pour [I et ( 1 sont intuitivement claires. Pourtant, cette matiere nlest pas simple. En particulier, la substitution peut Btre assez compliqude & cause des variables cachdes, Dans les pages suivantes on trouve un exemple dlun texte un peu plus long, Qcrit en AUTOMATH. On verra la possibilitd de donner des ddfinitions assez compliqudeset partagdes en Qtappes, Sans doute, le lecteur remarquera que ce texte est difficile & dcrire et difficile B lire. C1est vrai, mais - dans le sens de langages de programmacion - on peut le comparer avec un langage de machine, et nous esp6rons qufon reusisse & construire des langages artificiels plus simples, lesquels peuvent 6tre dcrits et lus plus facilement, et lesquels peuvent &re traduits par un ordieur en notre Illangage de machine".

9 1. Q.uelaues fondaments de mathgmatiaues aui suffisent pour le theoreme sur limites. 0 0 b? bl TBUE 3Y.E LUE 0 ksi ksi iks ' 8 ksi P P V ass I P P rsi nonempty 1 iks Ithen 2 I 1 exists lv I i I ass 1! i i 1 I then 13* AXE2 ksi T~ (nonempty) 3YE 0 b2 b3 b3 AE

10 -9-2. Ddfinition de limite dtune suite. r i I r2 i ' dis tame /less null s equence 1 Ikl 1 lk2 ; 1 / ~less a 1 I I 1 eps I'i I i m i ~ I '! ; i conv impl(lesaurt(mo,m),~ less(distance((m)a,l),eps)) all(, [spat 3 wb)) exists(, [t, ] z(t)) imp1 (less(nul1, eps),y) all(rea1, [t,] q(t)) exists(re&, [t,] lim(t)) &E. re aj. red LYE LYE2 sequence rlat

11 XI 3.3 YA 3.4 if XI YI 3. Un lemme introduit come axione, TRUE(1ess (null, yl ) ) ~~~~(less(distance(x1,xi ),yl)) 4. Chaaue suite constants est conver~ente c 4.3 c 4.4 delta 4-5 delta 4.6 ass 4.7 no 4.8 n 4.9 n 4.10 n 4.11 n 4.12 n 4.73 no 4.14 ass 4.15 delta 4.16 c 4.17 c C P 4 delta abbrev 1 l abbrev :=! then -. - i a.- _ i aa. - b. - h : = : = [x,] c sequence T~TJ~(less(nul1,delta)) LXE,i( I it abbrev 1 ~~UE(less(distance((n)p,c),delta)) tme lemma( (n)~,delta,ass) abbrev 2 less(no,n) boo1 dp,c,delta,no,n) boo1 then 2 ( [u,true(a)] abbrev 2, [U,TRUE(~)]then) TRUE (aa) then 2([s,] TRUE(aa(s)), [s,l b(s)) TRUE( 4p, c,delta,no) then 13*(, [x, Jz(P, c,delta, 1 ),I, h(u ) ~R~E(y(p,c,delta) then 2( [x, abbrev 11 TRUE(Y(P, c,delta) ), [x, abbrev 13 d(x) ) ~~~~(q(~,c,delta)) then 2( [s,3rmm~(q(p,c,s)), [s,] e(s)) m(lim(p,c)) then 13*(,[~,]lim(~,s),c,f) ~RUE(conv(~))

12 1. N.G. de Bruijn : AUTOMATH, a language for mathematics. Report 68-WSX-05(1968) Technological University Eindhoven, The Netherlands. 2. N.G. de Bruijn : The mathematical language AUTOMATH, its usage, and some of its extensions. To be published in the Proceedings of the Symposium on Automatic Demonstration (IRIA, Versailles, Becember 1968). Springer Lecture Notes Series.