Vous êtes sur la page 1sur 75

Algorithmes et logique au lyce

Octobre 2009

N36 Publication de l'IREM de l'Acadmie d'Aix-Marseille

IREM - Campus de Luminy, case 901, 163, avenue de Luminy - 13288 Marseille cedex 9 - Tl.04 91 82 94 87/90 91 Tlcopie 04 91 82 93 43 - e-mail : dir@irem.univ-mrs.fr http://www.irem.univ-mrs.fr

Algorithmes et logique au lyce


P. Bouttier A. Crumire F. Didier J-M. Fillia M. Quatrini H. Roland IREM Campus de Luminy

Table des matires


Prsentation 1 Algorithmique 1.1 Quelques ides en vrac . . . . . . . . . . . . . . . . . . . . . . . 1.2 Prsentation dun langage dcriture des algorithmes . . . . . . . 1.2.1 Linstruction daffectation . . . . . . . . . . . . . . . . . 1.2.2 Les instructions conditionnelles . . . . . . . . . . . . . . 1.2.3 Les instructions itratives . . . . . . . . . . . . . . . . . . 1.3 Illustration des notions de preuve et de terminaison dun algorithme 1.3.1 Algorithme de multiplication : Un premier algorithme . . 1.3.2 Algorithme de multiplication : Un deuxime algorithme . 1.3.3 Algorithme de multiplication : Un troisime algorithme . . 1.3.4 Algorithme dEuclide pour le calcul du PGCD de nombres entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.5 Algorithme dEuclide tendu . . . . . . . . . . . . . . . . 1.3.6 Division euclidienne . . . . . . . . . . . . . . . . . . . . 1.4 Un principe fondamental : la dichotomie . . . . . . . . . . . . . . 1.4.1 Mthode de dichotomie pour le calcul dun zro dune fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 Quelques algorithmes lmentaires en arithmtique . . . . . . . . 1.5.1 Construction de la liste des nombres premiers par la mthode du crible dErathostne . . . . . . . . . . . . . . . 1.5.2 Dcomposition dun entier n en produit de facteurs premiers 1.5.3 Dcomposition en base b dun entier a . . . . . . . . . . 1.5.4 Conversion dun nombre crit en base b en dcimal . . . . 1.5.5 Lalgorithme de Hrner . . . . . . . . . . . . . . . . . . . 1.5.6 Construction dun nombre dcimal n infrieur 1 partir de la liste a de ses chiffres . . . . . . . . . . . . . . . . . 1.5.7 Gnration dun nombre entier alatoire n dont la dcomposition binaire comporte exactement k bits . . . . . . . 1.5.8 Dveloppements dcimaux illimits . . . . . . . . . . . . iii v 1 1 3 4 4 6 7 7 8 9 10 12 13 14 15 17 17 19 20 21 22 23 23 24

iv 1.6

TABLE DES MATIRES Les algorithmes de la brochure avec Excel et VBA . . 1.6.1 Les formules avec Excel . . . . . . . . . . . . 1.6.2 Le langage Visual Basic for Applications . . . 1.6.3 La multiplication simple . . . . . . . . . . . . 1.6.4 La multiplication gyptienne . . . . . . . . . . 1.6.5 La multiplication dcimale . . . . . . . . . . . 1.6.6 Algorithme deuclide . . . . . . . . . . . . . . 1.6.7 Mthode de dichotomie . . . . . . . . . . . . . 1.6.8 Crible dEratosthne . . . . . . . . . . . . . . 1.6.9 Dcomposition en produit de facteurs premiers 1.6.10 Dcomposition en base b . . . . . . . . . . . . 1.6.11 Conversion en dcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 28 29 30 31 32 33 34 35 38 39 41 41 44 44 48 53 55 55 58 59 59 61 61 61 63 64 65 67

Introduction la logique mathmatique 2.1 Bref survol historique . . . . . . . . . . . . . . . . . . . . . . . 2.2 Un langage mathmatiquement dni . . . . . . . . . . . . . . . 2.2.1 Le calcul propositionnel . . . . . . . . . . . . . . . . . . 2.2.2 Le calcul des prdicats . . . . . . . . . . . . . . . . . . . 2.3 La formalisation des dmonstrations . . . . . . . . . . . . . . . . 2.3.1 Un peu de vocabulaire . . . . . . . . . . . . . . . . . . . 2.3.2 Rgles de la Dduction Naturelle en calcul propositionnel 2.3.3 Dduction Naturelle en calcul des prdicats . . . . . . . . 2.3.4 Compltude de la logique du premier ordre . . . . . . . . 2.4 Illustration de quelques rgles . . . . . . . . . . . . . . . . . . . 2.5 La logique au quotidien en classe de mathmatiques . . . . . . . . 2.5.1 Le modus ponens omniprsent : un exemple en gomtrie 2.5.2 La pratique du contre-exemple . . . . . . . . . . . . . . . 2.5.3 Les raisonnements par labsurde et par rcurrence . . . . . 2.5.4 Utilisation de la contrapose propos dun exercice de perspective . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.5 La dmonstration par disjonction des cas . . . . . . . . . 2.6 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Prsentation
Ce document a pour but dapporter un complment dinformation dans le domaine de lalgorithmique et de la logique aux professeurs de mathmatiques. Ces chapitres sont actuellement enseigns, de manire transversale, dans la spcialit mathmatique du cycle terminal de la srie L. Ce document peut aussi intresser les autres enseignants de lyce, notamment ceux de la classe de seconde, puisque les nouveaux programmes intgrent ces deux domaines. La premire partie aborde la partie algorithmique de ce programme. Aprs avoir introduit succintement et navement la notion dalgorithme, suit une description du langage dans lequel les algorithmes seront dcrits. Les instructions de ce langage sont communes la plupart des langages de programmation ; ainsi ils pourront tre facilement transcriptibles dans nimporte lequel de ces langages en vue dtre tests. La notion de preuve de la validit dun algorithme est aborde par la notion dinvariant de boucle. Elle donne un autre clairage du raisonnement par rcurrence, raisonnement que les lves ont souvent du mal matriser. Les exemples prsents sont principalement issus du domaine des mathmatiques et plus particulirement de larithmtique. Deux algorithmes fondamentaux, qui ont la particularit dtre utiliss dans de nombreux domaines de par leur efcacit, sont prsents : la mthode de dichotomie et lalgorithme de Hrner. La deuxime partie propose une introduction la partie de la logique mathmatique qui dnit les formules mathmatiques formelles. Cette prsentation est destination des professeurs souhaitant complter leurs connaissances en ce domaine an de mieux dominer les savoirs logiques implicites dans les mathmatiques de la classe, tant dans les objets enseigns que dans la pratique des exercices. Ces notions sont illustres et dclines sur des exercices du programme de spcialit mathmatique en srie L mais sont adaptables aux programmes venir.

Chapitre 1 Algorithmique
Les algorithmes sont trs souvent considrs comme du domaine des mathmatiques et de linformatique, leur champ dapplication est en ralit beaucoup plus vaste. Les historiens saccordent pour dire que le mot "algorithme" vient du nom du grand mathmaticien persan Al Khowrizm (an 825 environ) qui introa i duisit en Occident la numration dcimale et les rgles de calculs sy rapportant. La notion dalgorithme est donc historiquement lie aux manipulations numriques, mais ces dernires dcennies elle sest progressivement dveloppe sur des objets plus complexes, graphes, textes, images, son, formules logiques, robotique, etc. . . Le but de ce chapitre est de prciser ce quon entend par algorithme, de prsenter un langage dans lequel on pourra les exprimer, dvoquer et dillustrer les problmes qui se posent dans leur laboration.

1.1

Quelques ides en vrac

Approche nave : Cest une mthode i.e une faon systmatique de procder pour faire quelque chose : trier, rechercher, calculer,. . . Il rpond des questions du type : comment faire ceci ?, obtenir cela ?, trouver telle information ?, calculer tel nombre ?, . . . Cest un concept pratique, qui traduit la notion intuitive de procd systmatique, applicable mcaniquement, sans rchir, en suivant simplement un mode demploi prcis. Tentative de dnition : Suite dordres prcis, comprhensibles et excutables de manire non ambige par un automate, devant tre excuts suivant un ordre parfaitement dtermin en vue de rsoudre une classe de problmes. Par exemple : classer des suites de nombres, chercher des mots dans un dictionnaire sont des exemples de classe de problmes que des algorithmes sont capables de rsoudre.

Algorithmique

On vitera de prendre des exemples de la vie courante pour illustrer le concept dalgorithme : une recette de cuisine est un mauvais exemple dalgorithme car elle est toujours trop imprcise : une pince de sel (combien de grammes ?), faire bouillir dix minutes (la temprature dbulition dpend entre autre de laltitude laquelle on se trouve),. . . En gnral lautomate est une machine, et trs souvent un ordinateur. Lactivit principale en algorithmique est de concevoir et dexprimer, puis de coder dans un langage de programmation un algorithme. En gnral, on lexprime dans un langage proche de la langue naturelle, en utilisant des expressions dont on sait quelles seront facilement transcrites dans un langage de programmation. Algorithme en franais Codage dans un langage de programmation Traduction automatique en langage machine (compilation) Excution Points importants de la conception dun algorithme : Une des difcults dans llaboration dun algorithme est de contrler son aspect dynamique (excution) partir de son criture statique (suite nie dinstructions). Un algorithme de tri peut scrire en quelques lignes et peut trier aussi bien une suite de 10 lments quune suite de 100 000 lments. Les problmes importants qui se posent dans la conception dun algorithme sont : La preuve : prouver que lalgorithme rsout la classe de problmes pour laquelle il a t crit. Larrt : prouver que quelles que soient les donnes fournies en entre lalgorithme sarrte toujours. Le choix des structures des donnes : il est fondamental que les donnes manipules soient sous un format bien prcis et structures. Par exemple, dans un dictionnaire, mots franais, crits en lettres latines et surtout classs par ordre alphabtique. . . Lessentiel, dans llaboration dun algorithme, est de percevoir les lments cls dun processus quelconque, et dimaginer la suite doprations logiques les plus astucieuses et les plus efcaces pour le mettre en uvre de manire automatique et performante. Un algorithme peut tre vu comme le squelette abstrait du programme informatique, sa substantique moelle, indpendant du codage particulier qui permettra sa mise en oeuvre avec un ordinateur ou une machine mcanique.

1.2 Prsentation dun langage dcriture des algorithmes

Domaines o interviennent les algorithmes : Lalgorithmique intervient dans des domaines divers et varis : Numriques. Tri, recherche de mots, plus gnralement recherche dinformation. Algorithmes gomtriques, images de synthse. Recherche de formes, gnomes, internet (moteur de recherche). Compression des donnes. Cryptographie. ... Malgr les normes progrs de la technologie, les ordinateurs seront toujours soumis des limitations physiques : nombre doprations par seconde, taille mmoire,. . . Une part importante de la recherche en algorithmique consiste laborer des algorithmes de plus en plus efcaces. Par exemple, en 1950 on pouvait calculer quelques milliers de dcimales de et en 2002 on en tait plus dun trillion (1018 ). Cest peu prs part gale en raison des avances technologiques et algorithmiques. La recherche systmatique defcacit passe aussi par la recherche de nouveaux types de reprsentation et dorganisation des donnes : classement des mots, organisation arborescente, . . . D.Knuth 1 considre les arbres comme la structure la plus fondamentale de toute linformatique.

1.2

Prsentation dun langage dcriture des algorithmes

Certaines des instructions prsentes ci-dessous utilisent la notion dexpression boolenne : ces expressions ne peuvent avoir que deux valeurs possibles, vrai et faux. On peut dire simplement quelles sont obtenues en comparant entre elles deux expressions, dont la comparaison est possible, laide des oprateurs classiques de comparaison : <, , >, , =, =. Des expressions plus complexes pouvant tre construites en utilisant les oprateurs logiques classiques : ou, et , non qui dnotent respectivement la disjonction, la conjonction et la ngation.
1. informaticien clbre pour ses travaux en algorithmique, crateur de TEX

Algorithmique

1.2.1

Linstruction daffectation

La syntaxe de cette instruction varie suivant les langages utiliss. Elle a pour but daffecter une variable la valeur dune expression. En gnral, dans les langages de programmation, sa forme est : "expression partie gauche" "symbole" "expression partie droite" Lexpression en partie gauche doit imprativement dsigner une adresse et une valeur est associe lexpression de la partie droite. Elle a pour but de ranger la valeur de lexpression ladresse indique par la partie gauche. Comme il a t dit le symbole varie suivant les langages de programmation. := en Algol, Pascal, Maple,. . . = en Basic , C, CAML,. . . en LSE Signalons que sur certaines calculatrices de poche TI (Texas Instrument) le symbole utilise pour laffectation est . Cela est trs ennuyeux car les lves qui ont lhabitude de manipuler ces matriels ont tendance inverser le sens de laffectation lorsquils se mettent programmer sur ordinateurs. . . Nous choisirons comme symbole car il est cohrent avec les notions de "partie gauche" et "partie droite" qui se retrouvent dans tous les langages utiliss par les ordinateurs et il ne comporte pas le symbole = qui perturbe les lves, car il a pour eux une autre signication (lgalit). En rsum notre instruction daffectation sera : "expression partie gauche" "expression partie droite" et se lit Lexpression partie gauche reoit la valeur de lexpression partie droite Exemples : k 0, la variable k reoit la valeur 0. k k+1, la variable k reoit la valeur de lexpression k+1. k a*(10+b)/n, la variable k reoit la valeur de lexpression a*(b+10)/n.

1.2.2

Les instructions conditionnelles

Ces instructions sont le si alors et le si alors sinon. Linstruction si alors Elle scrit :

1.2 Prsentation dun langage dcriture des algorithmes si "expression boolenne" alors "instruction".

Si lvaluation de lexpression donne la valeur vrai cest linstruction qui suit immdiatement le alors qui est excute, sinon cest linstruction suivante (celle qui suit le si alors ) qui est excute. Dans le cas o lon souhaiterait excuter aprs le alors non pas une, mais plusieurs instructions, on crira ces instructions sur plusieurs lignes (une instruction par ligne) prcdes par un trait vertical qui englobe toutes ces instructions. si "expression boolenne" alors instruction1 instruction2 . . . instruction n Linstruction si alors sinon Elle scrit : si "expression boolenne" alors "instruction 1" sinon "instruction 2". Si lvaluation de lexpression donne la valeur vrai, cest linstruction 1 qui suit immdiatement le alors qui est excute, sinon cest linstruction 2 qui suit le sinon qui est excute. Dans le cas o lon souhaiterait excuter non pas une, mais plusieurs instructions, on crira ces instructions sur plusieurs lignes (une instruction par ligne) prcdes par un trait vertical. si "expression boolenne" alors instruction1 instruction2 . . . instruction n sinon instruction1 instruction2 . . . instruction p

Algorithmique

1.2.3

Les instructions itratives

La boucle tant que Elle scrit : tant que "expression boolenne " faire " instruction". Tant que lexpression boolenne est vraie on excute linstruction qui suit faire, ds quelle devient fausse, on passe linstruction suivante. Dans le cas o lon souhaiterait excuter non pas une, mais plusieurs instructions, on crira ces instructions sur plusieurs lignes (une instruction par ligne) prcdes par un trait vertical. tant que "expression boolenne "faire instruction1 instruction2 . . . instruction n La boucle pour Elle scrit : pour "variable" variant de "expr. init" jusqu "expr. n" faire "instruction". ou encore pour "variable " variant de "expr. init" jusqu "expr. n" avec un pas de "expr. pas" faire "instruction". Linstruction qui suit faire est excute pour les diffrentes valeurs de la "variable". La variable est appele variable de contrle de la boucle. Si lexpression pas nest pas prcise, la variable de contrle est incrmente de 1 aprs chaque tour de boucle. Dans le cas o lon souhaiterait excuter non pas une, mais plusieurs instructions, on crira ces instructions sur plusieurs lignes (une instruction par ligne) prcdes par un trait vertical. pour variable variant de "expr. init" jusqu "expr. n" faire instruction1 instruction2 . . . instruction n En gnral la variable de contrle, lexpression initiale, lexpression nale et lexpression pas (si elle est prsente) ont des valeurs entires. Ce sera toujours le cas dans les algorithmes tudis. Par ailleurs, on interdit de modier la variable de contrle lintrieur de la boucle.

1.3 Illustration des notions de preuve et de terminaison dun algorithme

1.3

Illustration des notions de preuve et de terminaison dun algorithme

Ces notions sont illustres travers cinq exemples. On prsente tout dabord trois algorithmes qui permettent de calculer le produit a b de nombres entiers naturels a et b, puis le trs connu algorithme dEuclide pour calculer le PGCD de deux nombres entiers et enn un algorithme un peu moins connu permettant de calculer le quotient et le reste de la division euclidienne de deux nombres entiers.

1.3.1

Algorithme de multiplication : Un premier algorithme

Algorithme 1. Ce premier algorithme calcule le produit de deux nombres entiers (a b) en neffectuant que des additions. xa yb z0 tant que y = 0 faire z z+x y y1 rsultat z Terminaison : y tant dcrment de 1 chaque itration, il deviendra ncessairement nul au bout de b itrations. Validit : Il suft dtablir que z + x y reste en permanence gal a b. On dit que cette quantit est invariante. Cest linvariant qui caractrise la boucle. Cet invariant joint la condition darrt (y = 0) prouve que la variable z vaut a b la sortie de la boucle. Cest trivialement vrai avant la boucle. Montrons que cette proprit reste vraie la n de chaque itration. Pour cela nous noterons x , y et z les valeurs respectives de x, y et z la n dune itration. Bien videmment, ces valeurs deviendront les nouvelles valeurs de x, y et z pour litration suivante. On a x = x, y = y 1 et z = z + x. z + x y = z + x + x (y 1) =z+xy = a b par hypothse de rcurrence .

Algorithmique

1.3.2

Algorithme de multiplication : Un deuxime algorithme

Algorithme 2. Ce second algorithme calcule le produit de deux nombres entiers en neffectuant que des multiplications et divisions par 2. xa yb z0 tant que y = 0 faire si y impair alors z z + x x2x y y div 2 rsultat z Terminaison : y tant divis par 2 chaque itration, il deviendra ncessairement nul aprs un nombre ni ditrations. Validit : Il suft dtablir que z + x y reste en permanence gal a b. Cet invariant joint la condition darrt (y = 0) prouve, ici encore, que la variable z vaut a b la sortie de la boucle. Cest trivialement vrai avant la boucle. Montrons que cette proprit reste vraie la n de chaque itration. Pour cela nous noterons x , y et z les valeurs respectives de x, y et z la n dune itration. Bien videmment, ces valeurs deviendront les nouvelles valeurs de x, y et z pour litration suivante. Deux cas sont envisager : y pair On a x = 2 x , y = y/2 et z = z. z + x y = z + (2 x) (y/2) =z+xy = a b par hypothse de rcurrence . y impair On a x = 2 x , y = (y 1)/2 et z = z + x. z + x y = z + x + (2 x) ((y 1)/2) = z + x + x (y 1) =z+xy = a b par hypothse de rcurrence. Cet algorithme est connu sous divers noms : multiplication russe, multiplication gyptienne,. . . Notons que son codage en informatique donne un algorithme trs efcace car multiplications et divisions par 2 consistent en des dcalages, et ces

1.3 Illustration des notions de preuve et de terminaison dun algorithme

oprations lmentaires dans tout langage machine sont effectues trs rapidement. On peut donner une justication de sa validit autre que celle utilisant la notion dinvariant. Il suft de considrer lcriture binaire de y, y = k y[i]2i o les coefcients y[i] valent 0 ou 1. Le produit x y est donc i=0 gal k y[i] (x 2i ). Tous les termes intervenant dans la somme sont de i=0 la forme x 2i et correspondent des coefcients y[i] non nuls, i.e aux valeurs impaires que prend la variable y dans lalgorithme 2. Dans la pratique on organise les calculs en faisant deux colonnes, une contenant respectivement les valeurs des quotients successifs de y par 2 et lautre les valeurs de la forme x 2i . Il suft alors de sommer les lments de la deuxime colonne (en gras dans lexemple ci-dessous) qui sont en face dlments impairs de la premire colonne. Exemple, soit calculer le produit de x= 12 par y= 22. Calcul en dcimal x y 22 12 11 24 5 48 2 96 1 192 Calcul en binaire x y 10110 1100 1011 11000 101 110000 10 1100000 1 11000000

On trouve que le rsultat de 12 22 est gal 24 + 48 + 192 = 264 En binaire, 11000 + 110000 + 11000000 = 100001000.

1.3.3

Algorithme de multiplication : Un troisime algorithme

Algorithme 3. Ce troisime algorithme est celui que lon apprend lcole primaire, il utilise des multiplications et divisions par 10 (systme dcimal) et lalgorithme de multiplication dun nombre entier quelconque par un nombre ayant un seul chiffre (utilisation des tables de multiplication). xa yb z0 tant que y = 0 faire z z + x y mod 10 x 10 x y y div 10 rsultat z

10

Algorithmique

Terminaison : y tant divis par 10 chaque itration, il deviendra ncessairement nul aprs un nombre ni ditrations. Validit : Il suft dtablir que z + x y reste en permanence gal a b. Cet invariant joint la condition darrt (y = 0) prouve, ici encore, que la variable z vaut a b la sortie de la boucle. Cest trivialement vrai avant la boucle. Montrons que cette proprit reste vraie la n de chaque itration. Pour cela nous noterons x , y et z les valeurs respectives de x, y et z la n dune itration. Bien videmment, ces valeurs deviendront les nouvelles valeurs de x,y et z pour litration suivante. On a x = 10 x , y = y div 10 et z = z + x (y mod 10). z + x y = z + x (y mod 10) + (10 x) (y div 10) = z + x (y mod 10 + 10 (y div 10)) =z+xy = a b par hypothse de rcurrence

1.3.4

Algorithme dEuclide pour le calcul du PGCD de nombres entiers

Algorithme 4 (Euclide). Cet algorithme prend deux entiers naturels en entre a et b et retourne leur pgcd. xa yb tant que y = 0 faire r x mod y xy yr rsultat x Le principe de lalgorithme dEuclide sappuie sur les deux proprits suivantes : Le pgcd(a, 0) est a. Le pgcd(a, b) est gal au pgcd(b, r) o r est le reste de la division euclidienne de a par b. Cette dernire proprit est trs facile tablir. On dmontre que lensemble des diviseurs de a et b est le mme que lensemble des diviseurs de b et r. Il est vident que tout nombre divisant a et b divise r, car r = a b q et rciproquement, tout nombre divisant b et r divise aussi a, car a = r + b q. Pour dmontrer que cet algorithme calcule bien le pgcd de a et b, il faut dmontrer que cet algorithme fournit dans tous les cas une rponse (terminaison de

1.3 Illustration des notions de preuve et de terminaison dun algorithme 11 lalgorithme) et que cette rponse est bien le pgcd de a et b (validit de lalgorithme).

Terminaison : chaque itration y est affect avec le reste de la division euclidienne de x par y. On sait, par dnition de la division euclidienne, que ce reste r est strictement infrieur au diviseur y. Ainsi chaque itration y, entier naturel, diminue strictement. Il existe donc une tape o y recevra la valeur 0, permettant ainsi la boucle de se terminer.

Validit : Il suft dtablir que le pgcd(x, y) reste en permanence gal au pgcd(a, b). On dit que cette quantit est invariante. Cest linvariant qui caractrise la boucle. Plus prcisment linvariant est la proposition logique pgcd(x, y) = pgcd(a, b). Cest trivialement vrai avant la boucle. Montrons que cette proprit reste vraie la n de chaque itration. Pour cela nous noterons x et y les valeurs de x et y la n dune itration. Bien videmment, ces valeurs deviendront les nouvelles valeurs de x et y pour litration suivante. On a x qui est gal y et y qui est gal r (r reste de la division euclidienne de x par y), ainsi le pgcd(x , y ) est gal au pgcd(y, r) qui est gal au pgcd(x, y)(proprit 2 ci-dessus), or par hypothse de rcurrence on a pgcd(x, y) = pgcd(a, b). Ainsi pgcd(x , y ) = pgcd(a, b). Linvariant joint la condition darrt (y = 0) prouve qu la sortie de la boucle x est gal au pgcd(a, b). Cette faon dtablir la validit de lalgorithme dEuclide parat pour le moins aussi simple que la dmonstration qui introduit des suites indexes. Peut-tre, pour un public non initi, est-il prfrable dcrire lalgorithme sous la forme suivante : Algorithme 5 (Algorithme dEuclide, 2eme version). xa yb tant que y = 0 faire r x mod y x y y r xx yy rsultat x

12

Algorithmique

1.3.5

Algorithme dEuclide tendu

Algorithme 6 (Euclide tendu). Etant donns deux entiers naturels a et b, cet algorithme calcule leur pgcd, ainsi que deux entiers u et v tels que a u + b v = pgcd(a, b). A la n de cet algorithme, x est le pgcd de a et b, car si lon examine les lignes qui ne concernent que x et y (en gras) on retrouve exactement lalgorithme dEuclide. xa yb u1 v0 u1 0 v1 1 tant que y = 0 faire q x div y r x mod y xy yr aux u; u u1 ; u1 aux q u1 aux v; v v1 ; v1 aux q v1 rsultat x,u,v Linvariant de la boucle est la conjonction des deux galits : a u + b v = x et a u1 + b v1 = y Ceci est trivialement vrai avant la boucle. Notons x , y , u , v , u1 , v1 les valeurs respectives de x, y, u, v, u1 , v1 la n dune itration. Les valeurs ayant un prime devenant les nouvelles valeurs au dbut de litration suivante. Ainsi par hypothse de rcurrence on a a u + b v = x et a u1 + b v1 = y. Montrons qu la n dune itration les galits au +bv =x et a u1 + b v1 = y sont encore satisfaites : 1. a u + b v = x . Dans la boucle, on a les affectations : u u1 v v1 x y Ainsi a u + b v = a u1 + b v1 qui vaut y par hypothse, donc x . (1.2) (1.1)

1.3 Illustration des notions de preuve et de terminaison dun algorithme 13 2. a u1 + b v1 = y . Dans la boucle, on a les affectations : u1 u q u1 v1 v q v1 y r , o q et r sont respectivement le quotient et le reste de la division euclidienne de x par y. a u1 + b v1 = a (u q u1 ) + b (v q v1 ) = a u + b v q (a u1 + b v1 ) = x q y par hypothse de rcurrence = r par dnition du reste =y Ainsi, lorsque lalgorithme se termine on a bien : a u + b v = x = pgcd(a, b).

1.3.6

Division euclidienne

Algorithme 7 (Division euclidienne). Cet algorithme effectue la division euclidienne de deux nombres entiers a et b en calculant le quotient q et le reste r. Les oprations utilises sont la soustraction, la multiplication par 2 et la division par 2. q0 wb ra tant que w r faire w 2w tant que w = b faire q 2q w w div 2 si w r alors r rw q q+1 rsultat [q, r] Cet algorithme est trs performant lorsque la base est une puissance de 2, car multiplications et divisions consistent alors en des dcalages. Linvariant de la seconde boucle est la conjonction des deux proprits q w +r = a et 0 r < w. Terminaison : w est de la forme 2p b au dpart et est divis par 2 chaque itration. Il deviendra ncessairement gal b aprs p itrations.

14

Algorithmique

Validit : Il suft dtablir que q w + r = a et 0 r < w reste vrai chaque tape. Cet invariant joint la condition darrt (w = b) prouve, ici encore, que lon a bien calcul le quotient et le reste de la division euclidienne de a par b. Cest trivialement vrai avant la boucle. Montrons que cette proprit reste vraie la n de chaque itration. On commence par modier q et w : q = 2 q et w = w (w tant divible par 2). 2 Deux cas sont envisager : r<w On a q = 2 q, w = w et r = r. 2 q w +r =2q w +r 2 =qw+r = a par hypothse de rcurrence . Par ailleurs on a 0 r < w w r On a q = 2 q + 1 , w = w et r = r w . 2 q w + r = (2 q + 1) w + r w 2 2 =qw+ w +r w 2 2 =qw+r = a par hypothse de rcurrence. On est dans le cas o w r et r = r w , ainsi on a 0 r . Dautre part par hypothse de rcurrence r < w, donc r w < w w = w , ainsi 2 2 2 r <w. Ainsi la n dune tape on a encore les ingalits : 0 r < w .

1.4

Un principe fondamental : la dichotomie

Le mot dichotomie provient du grec di (deux) et tomein (couper), ce qui signie littralement " couper en deux ". Ce principe trs efcace et relativement facile mettre en uvre intervient dans de nombreux algorithmes : Calcul des zros dune fonction Algorithmes de recherche Algorithmes de classement ...

Sa mise en uvre permet daborder et dillustrer les problmes fondamentaux que nous avons voqus prcdemment.

1.4 Un principe fondamental : la dichotomie

15

1.4.1

Mthode de dichotomie pour le calcul dun zro dune fonction

Soit f une fonction continue sur un intervalle [a, b], qui change de signe entre a et b. Le principe de dichotomie permet en divisant chaque tape lintervalle de moiti, en considrant le milieu c, de trouver une valeur approche dune racine de f prs. Pour atteindre la prcision , arbitrairement petite, il suft ditrer ce processus n fois, o n est le plus petit entier tel |ab| . On peut aussi dire 2n que n est le plus petit entier suprieur ou gal log2 ( |ab| ).

chaque tape, il faut veiller ce que la fonction f ait une racine sur le nouvel intervalle. Cette condition, indispensable pour la validit de lalgorithme nest pas toujours respecte, et bon nombre de versions que lon peut rencontrer dans la littrature peuvent dans certains cas donner des rsultats errons. On rencontre aussi, trs souvent, une erreur dans la condition darrt : le test nest pas fait sur la comparaison de la longueur de lintervalle avec , mais sur la comparaison |f (c)| , o c est un point de lintervalle qui contient une racine exacte. Clairement, |f (c)| nimplique pas |x0 c| .

Un premier algorithme Algorithme 8 (Recherche dune racine par dichotomie). Entres : a rel, b rel, a < b, f fonction continue sur [a, b] telle que f (a) f (b) < 0, un nombre rel arbitrairement petit. Sorties : un nombre rel qui approche une racine x0 de f prs. Invariant : (f (a) f (b) < 0) ou (a = b et f (a) = 0).

16 tant que b a > faire a+b c 2 si f (c) = 0 alors ac bc sinon si f (a) f (c) < 0 alors b c sinon a c rsultat a

Algorithmique

Dans la pratique, il est peu probable que la variable c prenne pour valeur une des racines de la fonction f , ainsi le test f (c) = 0 devient inutile et nuit lefcacit de ce premier algorithme. En effet les valeurs donnes aux bornes de lintervalle de dpart sont trs souvent des nombres entiers alors que les racines de f sont gnralement des nombres irrationnels. Un deuxime algorithme Algorithme 9 (Recherche dune racine par dichotomie, 2me version). Entres : a rel, b rel, a < b, f fonction continue sur [a, b] telle que f (a) f (b) 0, un nombre rel arbitrairement petit. Sortie : un nombre rel qui approche une racine de f prs. Invariant : f (a) f (b) 0 tant que b a > faire a+b c 2 si f (a) f (c) 0 alors b c sinon a c rsultat a On aurait pu aussi crire autrement le corps de la boucle en gardant le mme invariant : Algorithme 10. Autre version de lalgorithme 9. tant que b a > faire a+b c 2 si f (a) f (c) > 0 alors a c sinon b c rsultat a Mais la version qui suit , bien que trs proche, peut savrer errone : Algorithme 11. Version errone de lalgorithme 9. tant que b a > faire a+b c 2 si f (a) f (c) < 0 alors b c sinon a c rsultat a

1.5 Quelques algorithmes lmentaires en arithmtique

17

En effet, linvariant nest plus satisfait dans le cas o le milieu de lintervalle c est par "malchance" une racine de la fonction f . Ce cas, peu frquent, comme on la dj dit, peut nanmoins se produire, et lalgorithme ci-dessus fournit alors un rsultat faux ! Dans cette conguration, le produit f (a)f (c) est nul, a prend donc la valeur c, et par la suite le produit f (a) f (c) ntant jamais ngatif, on trouve comme valeur approche de la racine un point proche de b prs ! chaque itration les algorithmes prcdents valuent deux fois la fonction f et effectuent un produit, on peut tre plus efcace en crivant les choses diffremment. Un troisime algorithme Algorithme 12 (Recherche dune racine par dichotomie, 3me version). Entres : a rel, b rel, f fonction continue sur [a, b] telle que f (a) 0 et f (b) > 0, un nombre rel arbitrairement petit. Sortie : un nombre rel qui approche une racine de f prs. Invariant : (f (a) 0 et f (b) > 0 tant que b a > faire a+b c 2 si f (c) 0 alors a c sinon b c rsultat a

1.5

Quelques algorithmes lmentaires en arithmtique

Nous allons prsenter ici quelques algorithmes lmentaires en arithmtique comme cration de la liste des nombres premiers, dcomposition dun nombre entier en facteurs premiers, liste des diviseurs dun nombre entier, changement de base, . . .

1.5.1

Construction de la liste des nombres premiers par la mthode du crible dErathostne

Cette mthode permet dtablir la liste de nombres premiers infrieurs un nombre entier n donn. Son principe est trs simple. On crit la squence de tous les nombres entiers de 1 jusqu n, on barre 1 qui nest pas premier, on garde 2 qui est premier et on barre tous les nombres multiples de 2, on garde 3 et on barre tous ses multiples, puis on recherche partir de 3 le premier nombre non barr, on le garde et on limine, en les barrant, tous les multiples de ce nombre, et on continue ainsi jusqu puiser toute la liste. Les nombres non barrs constituent la liste

18

Algorithmique

des nombres premiers infrieurs ou gaux n. Avant dcrire plus prcisment cet algorithme, il nous faut choisir une reprsentation informatique qui traduit le fait quun nombre soit barr ou non. Pour cela on peut utiliser un tableau de n lments indexs de 1 jusqu n. Les composantes de ce tableau pouvant avoir soit une valeur boolenne (vrai, faux), soit une des deux valeurs 0 ou 1. Ainsi la valeur de la composante de rang i nous indiquera si le nombre i est premier ou non : la valeur vrai ou 1 signie oui, la valeur faux ou 0 signiant non.

Algorithme 13 (Crible dErathostne). Entre : un nombre entier n. Sortie : la liste des nombres premiers infrieurs ou gaux n. pour i variant de 1 jusqu n faire t[i] vrai t[1] faux pour i variant de 2 jusqu n si t[i] alors *** On barre les multiples de i *** k2 tant que k i n faire t[k i] faux k k+1 L [ ] *** On initialise la liste L avec la liste vide *** pour i variant de 2 jusqu n si t[i] alors L L, i *** i est un nombre premier on lajoute la liste L *** rsultat L

On peut crire partir de cet algorithme une version un peu plus performante en tenant compte des remarques suivantes : On peut passer dun multiple m de i au multiple suivant en y ajoutant i, une addition est plus rapide quune multiplication. Il est inutile dexaminer les multiples m de i infrieurs i2 , car ils ont t dj barrs. Il est inutile de chercher barrer des nombres plus grands que n, car tous ceux ne sont pas premiers lont dj t. En effet un nombre plus grand qui que n qui nest pas premier a forcment un facteur premier plus petit que n, donc il aura t barr lorsque les multiples de ce facteur lont t. Ce qui conduit crire lalgorithme suivant :

Algorithme 14 (Crible dErathostne, version optimise).

1.5 Quelques algorithmes lmentaires en arithmtique

19

pour i variant de 1 jusqu n faire t[i] vrai t[1] faux pour i variant de 2 jusqu n si t[i] alors *** On barre les multiples de i *** m i2 tant que m n faire t[m] faux mm+i L [ ] *** On initialise la liste L avec la liste vide *** pour i variant de 2 jusqu n si t[i] alors L L, i *** i est un nombre premier on lajoute la liste L *** rsultat L

1.5.2

Dcomposition dun entier n en produit de facteurs premiers

On sait quun nombre entier se dcompose de manire unique en un produit de facteurs premiers. Le principe de la dcomposition est trs simple. Il consiste essayer de diviser n par les nombres premiers successifs. Lorsquun nombre premier p divise n, il faut continuer diviser n par ce nombre tant que cela est possible an de connatre lexposant de p. Voici lalgorithme : Algorithme 15 (Dcomposition dun entier n en produits de facteurs premiers). Entre : un nombre entier naturel n. Sortie : la liste des nombres premiers p1 , p2 , . . . , pr et de leur exposant respectif e1 , e2 , . . . , er tel que n soit gal pe1 pe2 . . . per . 1 2 r P la liste des nombres premiers infrieurs ou gaux n F [ ] *** On initialise la liste des facteurs F avec la liste vide *** E [ ] *** On initialise la liste des exposants E avec la liste vide *** i1 tant que n = 1 faire si pi ne divise pas n alors i i + 1 sinon k0 tant que pi divise n faire n n/pi k k+1 F F , pi *** pi est un facteur premier on lajoute la liste F *** E E, k *** On ajoute son exposant k la liste E des exposants *** rsultat F, E

20

Algorithmique

1.5.3

Dcomposition en base b dun entier a


(ak ak1 . . . a1 a0 )b = ak bk + ak1 bk1 + . . . + a1 b + a0 (1.3)

De faon gnrale, lcriture dun nombre a en base b est dnie par la formule

o les coefcients ai sont des nombres entiers vriant 0 ai < b. Le systme dcimal tant le cas particulier o b est gal 10, les coefcients ai prenant pour valeur un des dix chiffres 0, 1, 2, . . . , 9. Dcomposer un nombre a en base b revient trouver les k + 1 coefcients ai , 0 ai < b, tels que a = ak bk + ak1 bk1 + . . . + a1 b + a0 . Pour cela il suft de savoir faire la division euclidienne de a par b dans le systme dcimal. En effet, on obtient facilement le coefcient de poids le plus faible a0 en calculant le reste de la division de a par b, puis on considre le nombre entier a , quotient de a par b, a = a div b = ak bk1 + ak1 bk2 + . . . + a2 b + a1 (1.4) Le reste de la division euclidienne de a par b nous donne a1 , et ainsi de suite pour obtenir les autres coefcients de lcriture binaire de a. On peut choisir de ranger les coefcients soit dans une liste, soit dans une table. Algorithme 16 (Dcomposition dun entier n en base b avec une liste). Entre : Un nombre n crit en base 10. Sortie : La liste L des coefcients ai de lcriture de n en base b. an L[] tant que a = 0 faire r a mod b L r, L a a div b rsultat L = [ ak , ak1 , . . . a1 , a0 ] Algorithme 17 (Conversion dun entier n en base b avec une table). Entre : Un nombre n crit en base 10. Sortie : La table T des coefcients ai de lcriture de n en base b. an i0 tant que a = 0 faire r a mod b Ti r ii+1 a a div b rsultat T = [ a0 , a1 , . . . ak1 , ak ]

1.5 Quelques algorithmes lmentaires en arithmtique

21

1.5.4

Conversion dun nombre crit en base b en dcimal

Soit (ak ak1 . . . a1 a0 )b lcriture en base b du nombre que lon veut convertir en criture dcimale. Pour obtenir cette conversion, il suft dvaluer ak bk + ak1 bk1 + . . . + a1 b + a0 en effectuant les calculs en base 10. On suppose dans les algorithmes prsents ci-dessous que les coefcients de lcriture en base b sont rangs dans une table. Algorithme 18 (Conversion en dcimal dun nombre crit en base b). Entre : Un nombre (ak ak1 . . . a1 a0 )b crit en base b. Sortie : Le nombre n qui correspond la conversion de (ak ak1 . . . a1 a0 )b en base 10. n0 pour i variant de 0 jusqu k faire n n + ai b i rsultat n Lalgorithme prcdent nest pas performant car il effectue un trop grand nombre de multiplications. En effet pour calculer bi , il est ncessaire de faire i1 multiplications, ainsi ltape i on effectue i multiplications, soit au total 1+2+. . . +k = k(k+1) multiplications. Cest beaucoup trop ! 2 Voici un algorithme qui nen effectue plus que 2(k + 1) pour calculer la mme expression. Algorithme 19 (Conversion en dcimal dun nombre crit en base b). Entre : Un nombre (ak ak1 . . . a1 a0 )b crit en base b. Sortie : Le nombre n qui correspond la conversion de (ak ak1 . . . a1 a0 )b en base 10. f 1 n0 pour i variant de 0 jusqu k faire n n + ai f f f b rsultat n On peut encore diminuer le nombre de multiplications en utilisant lalgorithme de Hrner, prsent dans la section suivante, pour valuer lexpression polynomiale ak bk + ak1 bk1 + + a1 b + a0 . Algorithme 20 (Conversion en dcimal dun nombre crit en base b). Entre : Un nombre (ak ak1 . . . a1 a0 )b crit en base b. Sortie : Le nombre n qui correspond sa conversion en base 10.

22 n0 pour i variant de k jusqu 0 avec un pas de 1 faire n n b + ai rsultat n

Algorithmique

Cet algorithme neffectue plus que k + 1 multiplications pour valuer lexpression, on ne peut pas faire mieux. Les trois algorithmes prcdents effectuent le mme nombre k dadditions.

1.5.5

Lalgorithme de Hrner

Lalgorithme de Hrner est trs connu et trs facile mettre en oeuvre. Soit x un nombre rel et p(x) = ak xk + ak1 xk1 + . . . + a1 x + a0 un polynme de degr k dont les coefcients sont aussi des rels, ak distinct de 0. En remarquant quon peut crire le polynme sous la forme suivante : p(x) = (ak xk1 + ak1 xk2 + . . . + a2 x + a1 )x + a0 p(x) = ((ak xk2 + ak1 xk3 + . . . + a2 )x + a1 )x + a0 p(x) = (((ak xk3 + ak1 xk4 + . . . + a3 )x + a2 )x + a1 )x + a0 .............................. p(x) = ((. . . ((ak )x + ak1 )x + . . . + a2 )x + a1 )x + a0 Ainsi pour calculer p(x), on organise les calculs de manire calculer successivement les valeurs bk , bk1 , . . . , b0 dnies par : b k = ak bk1 = bk x + ak1 ... bi = bi+1 x + ai ... b 0 = b 1 x + a0 On a donc b0 = p(x), cest ce procd qui est parfois appel "schma de Hrner".

Algorithme 21 (Schma de Hrner). Entres : Un tableau a de k + 1 coefcients indexs de 0 k et un nombre rel x. Sortie : Le nombre s = k ai xi i=0 s0 pour i variant de k jusqu 0 avec un pas de 1 faire s s x + ai rsultat s

1.5 Quelques algorithmes lmentaires en arithmtique

23

1.5.6

Construction dun nombre dcimal n infrieur 1 partir de la liste a de ses chiffres

Cet algorithme est encore une application directe de lalgorithme de Hrner. En effet si la liste a est [a1 ,a2 ,. . . ,ak1 ,ak ], le nombre n corrrespondant est : n = ak 10k + ak1 10(k1) + . . . + a1 101 Ce qui conduit crire lalgorithme suivant :

Algorithme 22 (Schma de Hrner appliqu la construction dun nombre dcimal plus petit que 1). Entre : un tableau de chiffres a index de 1 k Sortie : un nombre dcimal n = k ai 10i infrieur 1 i=1 n0 pour i variant de k jusqu 1 avec un pas de 1 faire n n 10 + ai rsultat n

1.5.7

Gnration dun nombre entier alatoire n dont la dcomposition binaire comporte exactement k bits

Cet algorithme est encore une application directe de lalgorithme de Hrner. En effet il suft que le bit de poids fort soit gal 1 et de choisir alatoirement entre 0 et 1 pour les k 1 autres bits. On valuera au fur et mesure lentier dcimal correspondant, exactement comme dans lalgorithme "Hrner" dans le cas o la base est 2. Voici lalgorithme correspondant :

Algorithme 23 (Gnration dun nombre entier alatoire n dont la dcomposition binaire comporte exactement k bits). Entre : k un nombre entier Sortie : un nombre entier alatoire n crit en dcimal dont la dcomposition binaire comporte exactement k bits n1 pour i variant de 1 jusqu k faire n 2 n + hasard(2) rsultat n o hasard est la fonction qui renvoie pour rsultat un nombre alatoire suprieur ou gal 0 et strictement plus petit que son argument.

24

Algorithmique

1.5.8

Dveloppements dcimaux illimits

Prsentation Un nombre rationnel peut tre reprsent soit par son criture fractionnaire N Q= o N est un entier relatif et D un entier naturel non nul ou par un dveD loppement dcimal illimit priodique de la forme : Q = 0, r1 r2 ri p1 p2 pj 10n o les rk et les pk sont des chiffres du
Partie rgulire Partie priodique

systme dcimal et n un entier naturel. Obtention de la fraction partir du dveloppement Si on pose a = 0, r1 r2 ri et b = 0, p1 p2 pj on a alors : Q = (a + b 10i ) 10n r1 r2 ri avec a = et 10j b = p1 p2 pj , p1 p2 pj = p1 p2 pj + b 10i p1 p2 pj do b = 10j 1 10i r1 r2 ri + p1 p2 pj j donc Q = 10n 10i 10 1 (r1 r2 ri ) (10j 1) + (p1 p2 pj ) Q= 10n 10i (10j 1) Il suft maintenant de rendre cette fraction irrductible. Il ny a donc pas dalgorithme de calcul de Q sous forme de fraction mais simplement une mthode mathmatique. Obtention du dveloppement partir de la fraction N N N Q= =E+ o E est la partie entire de Q et sa partie dcimale D D D (illimite) On aura donc : N = 0, r1 r2 ri p1 p2 pj D
Partie rgulire Partie priodique

Pour dterminer les suites de dcimales rk et pk ainsi que i et j on construit les suites (Nk ) , (Qk ) et (Rk ) de la faon suivante : Rk = Nk mod D (reste euclidien de Nk par D) Nk Rk Qk = (quotient euclidien de Nk par D) D Nk+1 = 10 Rk avec R0 = N Remarques a) Rk peut prendre D valeurs entires comprises entre 0 et D 1

1.5 Quelques algorithmes lmentaires en arithmtique b) Si Rk = 0 alors tous les restes suivants sont nuls c) Il en dcoule que i + j < D

25

Calcul des dcimales Il faut vrier que les quotients calculs sont bien les dcimales du dveloppement cherch Procdons par rcurrence sur k N1 On a bien N1 = 10 N et Q1 = partie enti`re e = r1 puisque D 10 N = r1 , r2 D Nk Si on suppose quau rang k, = rk , rk+1 rk+2 alors D Nk 10 Rk 10 (Nk D Qk ) Nk+1 Qk = partie enti`re e = = = = rk et D D D D Nk 10 Qk = 10(rk , rk+1 rk+2 rk ) = 10(0, rk+1 rk+2 )) = rk+1 , rk+2 D Nk+1 donc Qk+1 = partie enti`re e = rk+1 D Conclusion : les Qk sont les chiffres du dveloppement dcimal illimit assoN . ci D Calcul de i et j Daprs la remarque a) partir dun certain rang on va retrouver un des restes prcdents. Soit i et j les plus petits entiers tels que Ri+j = Ri . On a donc Qi+j+1 = Qi+1 et pj+1 = ri+j+1 = Qi+j+1 = Qi+1 = ri+1 = p1 ce qui prouve que la priode du dveloppement dcimal est j. N Algorithme 24 (Dveloppement dcimal dun nombre rationnel ). D N Entre : Un nombre rationnel sous la forme . D N Sortie : Le quotient entier e de , la liste N onP eriodique des chiffres de la partie D non priodique, la liste P eriodique des chiffres de la partie priodique.

26

Algorithmique num N den D *** Initialisation, T abReste[i] indique la position o le reste i a t obtenu*** pour i variant de 0 jusqu den 1 faire T abReste[i] 0 e num div den r num mod den *** Initialisation de la liste des quotients avec la liste vide*** ListeQuotient [ ] i0 tant que T abReste[r] = 0 faire ii+1 T abReste[r] i num 10 r q num div den ListeQuotient ListeQuotient, q r num mod den k T abReste[r] N onP eriodique ListeQuotient[0..k 1] P eriodique ListeQuotient[k..i] rsultat e, N onperiodique, P eriodique

1.6 Les algorithmes de la brochure avec Excel et VBA

27

1.6

Les algorithmes de la brochure avec Excel et VBA

VBA (Visual Basic for Applications) fait partie intgrante dExcel. En tapant ALT+F11 dans Excel vous accdez VBA et il suft dajouter un module pour pouvoir crire des programmes et les tester dans Excel.

1.6.1
Le =

Les formules avec Excel

Une formule Excel commence toujours par le symbole = Les rfrences A3 fait rfrence la cellule situe la premire colonne et troisime ligne du tableau. A3 ;B7 fait rfrence deux cellules du tableau (numration). A3 :B7 fait rfrence une rgion rectangulaire du tableau allant de la cellule A3 la cellule B7. Par exemple : A8 = somme(A3 ; B7) calcule dans A8 la somme de deux cellules A8 = somme(A3 : B7) calcule dans A8 la somme de 2 5 = 10 cellules. La recopie des formules Lorsquune formule est recopie dune cellule vers une autre et que la recopie correspond une translation de l lignes et c colonnes dans la grille, toutes les rfrences des cellules sont dcales de l lignes et c colonnes. Par exemple si on a C3 = C2 + B3 et que lon recopie la cellule C3 dans la cellule D5 ce qui correspond un dcalage de deux lignes et dune colonne, on pourra lire dans la cellule D5 = D4 + C5. Cette fonctionnalit sera trs utile pour recopier une formule dans une ligne ou une colonne. Le $ Lors dune recopie, il est parfois ncessaire quune rfrence ne soit pas "dcale". Pour cela il suft de mettre un "$" devant la rfrence de ligne ou de colonne pour "ger" cette rfrence. Par exemple si on a C3 = $C2 + B$3 et que lon recopie la cellule C3 dans la cellule D5, on pourra lire dans la cellule D5 = $C4 + C$3.

28

Algorithmique

Dans la premire rfrence, on a g le numro de ligne mais pas lindice de colonne et dans la seconde, cest le contraire. Le SI ALORS SINON Cette formule correspond une affectation conditionnelle. Par exemple, la formule suivante C3 = SI ( C2 > 0 ; C2 + B3 ; B3 ) correspond linstruction suivante : Si C2 > 0 alors C3 C2 + B3 sinon C3 B3 la syntaxe gnrale est SI ( <condition> ; <valeur-si-vrai> ) ou SI ( <condition> ; <valeur-si-vrai> ; <valeur-si-faux> ) Les fonctions Excel Excel dispose de nombreuses fonctions mathmatiques, statistiques etc. Pour en voir la liste il suft de cliquer sur licne fx

1.6.2

Le langage Visual Basic for Applications

Prsentation Cest un langage de programmation avec des sous-programmes (Sub) et des fonctions (Function) et qui permet aussi la programmation objet. Les variables sont rparties dans de nombreux types. Les fonctions cres dans VBA sont utilisables dans Excel de la mme faon que les fonctions Excel de base qui sont elles aussi crites en VBA. Les types de variables Les variables utilises dans le cadre des mathmatiques seront de type : Integer ou long si elles doivent contenir des entiers Single ou Double si elles doivent contenir des nombres virgule String si elles correspondent des chanes de caractres Variant pour des variables pouvant contenir nimporte quel type de donnes Array si ce sont des tableaux.

1.6 Les algorithmes de la brochure avec Excel et VBA Les instructions

29

= dsigne aussi bien laffectation que le test dgalit (cest le contexte qui dcide) If Then Else Endif ou If Then Endif est linstruction conditionnelle Do Loop indique le dbut et la n dune boucle While est synonyme de Tant que For to Next indique un groupe dinstructions rpter un certain nombre de fois. Les fonctions Function End Function indique le dbut et la n dune dclaration de fonction. Le mot Function est suivi sur la mme ligne du nom de la fonction et des paramtres de la fonction entre parenthses. Ces paramtres servent fournir la fonction les donnes dont elle a besoin pour fonctionner. Les variables dclares dans la fonction aprs linstruction Dim ne seront visibles et utilisables qu lintrieur de la fonction (variables locales). La dernire instruction de la fonction doit tre de la forme : nom-de-la-fonction = valeur--retourner Cette instruction dtermine quel sera le rsultat de la fonction lorsquelle sera utilise.

1.6.3

La multiplication simple

Avec Excel

Formules A3 = A2 B3 = SI ( B2 <> 0 ; B2 - 1 ; 0 ) correspond y y1 C3 = SI ( B2 = 0 ; C2 ; C2 + A2 ) correspond z z + x et ces formules contiennent le test darrt tant que y = 0 faire.

30

Algorithmique Ces formules sont ensuite recopies vers le bas dans les trois colonnes.

Programme en VBA Public Function MultSimple(a As Integer, b As Integer) As Integer Dim r As Integer r=0 Do While b <> 0 r=r+a b=b-1 Loop MultSimple = r End Function

1.6.4

La multiplication gyptienne

Avec Excel

Formules A3 = 2 * A2 correspond a 2 a B3 = quotient ( B2 ; 2 ) correspond b b div 2 C3 = SI ( reste ( B2 ; 2 ) = 0 ; C2 ; C2 + A2 ) correspond si b impair alors r r+a Lalgorithme se termine lorsque 0 apparat dans la colonne B. Ces formules sont recopies vers le bas dans les trois colonnes. Remarque : quotient et reste sont des fonctions crites en VBA qui correspondent la division euclidienne. Programme en VBA Public Function Reste(a As Integer, b As Integer) As Integer Reste = a Mod b

1.6 Les algorithmes de la brochure avec Excel et VBA End Function Public Function Quotient(a As Integer, b As Integer) As Integer Quotient = (a - a Mod b) / b End Function Public Function MultEgypt(a As Integer, b As Integer) As Integer Dim r As Integer r=0 Do While b <> 0 If Reste(b, 2) = 1 Then r=r+a End If a=2*a b = Quotient(b, 2) Loop MultEgypt = r End Function

31

1.6.5

La multiplication dcimale

Avec Excel

Formules A3 = 10 * A2 correspond a 10 a B3 = quotient ( B2 ; 10 ) correspond b b div 10 C3 = C2 + A2 * reste ( B2 ; 10 ) correspond r r + a (b mod 10) Lalgorithme se termine lorsque 0 apparat dans la colonne B. Ces formules sont recopies vers le bas dans les trois colonnes. Programme en VBA Public Function MultDecimale(a As Integer, b As Integer) As Integer Dim r As Integer r=0 Do While b <> 0

32 r = r + a * Reste(b, 10) a = 10 * a b = Quotient(b, 10) Loop MultDecimale = r End Function

Algorithmique

1.6.6

Algorithme deuclide

Avec Excel

Formules A5 = A2 B5 = B2 C6 = reste ( A5 ; B5 ) correspond r a mod b A6 = B5 correspond a b B6 = D5 correspond b r Lalgorithme se termine lorsque 0 apparat dans la colonne B. Ces formules sont recopies vers le bas dans les trois colonnes. Programme en VBA Public Function PGCD(a As Integer, b As Integer) Dim r As Integer, q As Integer Do While b <> 0 q = Quotient(a, b) r=a-b*q a=b b=r

1.6 Les algorithmes de la brochure avec Excel et VBA Loop PGCD = a End Function

33

1.6.7

Mthode de dichotomie

Avec Excel

Formules a+b C7 = ( A6 + B6 ) / 2 correspond c 2 D7 = C7 ^ 3 - 2 correspond y f (c) E7 = B7 - A7 correspond e b a A7 = SI ( D7 <= 0 ; C7 ; A6 ) correspond si f (c) 0 alors a c B7 = SI ( D7 <= 0 ; B6 ; C7 ) correspond si f (c) > 0 alors b c et ces formules sont recopies vers le bas. Programme en VBA Public Function f(x As Double) As Double =x*x*x-2 End Function Public Function Dichotomie(a As Double, b As Double, epsi As Double) As Double

34 Dim c As Double, ya As Double ya = f(a) Do While b - a > epsi c = (a + b) / 2 If ya * f(c) <= 0 Then b=c Else a=c End If Loop Dichotomie = a End Function

Algorithmique

1.6.8

Crible dEratosthne

Avec Excel La prsence dune double boucle fait que cet algorithme ne peut pas tre simul directement avec Excel. Programme en VBA Public Function Crible(nmax As Integer) As String Dim i As Integer, j As Integer, Liste As String Dim T(1 To 2000) As Boolean For i = 1 To nmax T(i) = True Next i T(1) = False i=2 Liste = "" Do While i * i <= nmax If T(i) = True Then j=i+i Liste = Liste & "-" & Str(i) Do While j <= nmax T(j) = False j=j+i Loop End If

1.6 Les algorithmes de la brochure avec Excel et VBA i=i+1 Loop il faut maintenant ajouter la liste les nombres premiers restants For j = i To nmax If T(j) Then Liste = Liste & "-" & Str(j) End If Next j Crible = Liste End Function

35

1.6.9

Dcomposition en produit de facteurs premiers

Avec Excel

Nous avons vu que nous ne pouvions pas simuler dans Excel la double boucle de la recherche des nombres premiers, donc pour raliser avec Excel la dcomposition en produit de facteurs premiers, nous devons disposer dune liste de nombres premiers. Cette liste est crite dans la colonne G. Formules B2 = 1 correspond linitialisation i 1 C2 = INDEX (G :G ; B2 ; 1 ) correspond c pi car INDEX renvoie la valeur situe dans la colonne G la ligne dont lindice est donn par B2 (ici il renvoie donc la valeur de la cellule G1) D3 = RESTE( A2 ; C2 ) correspond r n mod pi A3 = SI ( D3 = 0 ; A2 / C2 ; A2 ) correspond si r = 0 alors n n/pi B3 = SI ( D3 <> 0 ; B2 + 1 ; B2 ) correspond si r = 0 alors i i + 1

36

Algorithmique C3 = INDEX ( G :G ; B3 ; 1 ) Calcule la valeur de pi E3 = SI ( D3 = 0 ; C2 ; 1 ) si r = 0 alors on ajoute pi la liste des diviseurs Ces formules sont ensuite recopies vers le bas.

1.6 Les algorithmes de la brochure avec Excel et VBA Programme en VBA

37

Public Function decomposition(n As Integer) As String Dim T, Nombre As Integer, NumDiv As Integer, Diviseur As Integer, Liste As String Const nmax = 2500 If n > nmax Then Exit Function T = Array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47) Nombre = n : NumDiv = 0 Diviseur = T(NumDiv) : Liste = "" Do While Nombre <> 1 If Reste(Nombre, Diviseur) <> 0 Then NumDiv = NumDiv + 1 Diviseur = T(NumDiv) Else Liste = Liste & Diviseur & "*" Nombre = Nombre / Diviseur End If Loop decomposition = Liste & 1 End Function

38

Algorithmique

1.6.10

Dcomposition en base b

Avec Excel

Formules L r, L E2 = $C$3 correspond linitialisation de a F3 = reste ( E2 ; $C$1 ) correspond r a mod b E3 = quotient ( E2 ; $C$1 ) correspond n a div b Ces formules sont ensuite recopies vers le bas. Lalgorithme sarrte lorsque n = 0. La liste des chiffres peut tre lue dans la colonne F.

Programme en VBA Public Function VersBase(b As Integer, N As Integer) As String Dim Mot As String, Chiffre As String Dim T T = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F") Mot = "" Do While N <> 0 Chiffre = Reste(N, b) Mot = T(Chiffre) & Mot N = Quotient(N, b) Loop VersBase = Mot End Function

1.6 Les algorithmes de la brochure avec Excel et VBA

39

1.6.11

Conversion en dcimal

Avec Excel

Le nombre en base b est crit " lenvers" dans la ligne 3 Le rsultat est le plus grand des nombres crits dans la ligne 5 Le cas des bases suprieures 10 nest pas trait avec Excel Formules C5 = C3 D5 = SI ( D3 = "" ; "" ; C5 * $C$1 + D3 ) correspond linstruction s s b + ai o ai correspond au chiffre de la cellule D3. Le test permet larrt de lalgorithme lorsquil ny a plus de chiffres traiter. Cette formule est ensuite recopie vers la droite. Programme en VBA Public Function EnDecimal(N As String, b As Integer) As Long Dim i As Integer, c As Integer, Chiffre As String Dim Resultat As Long Dim T T = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F") Resultat = 0 For i = 1 To Len(N) Chiffre = Mid(N, i, 1) on extrait le chiffre N i on recherche le chiffre dans la table For j = 0 To 15 If T(j) = Chiffre Then c=j End If Next j Resultat = Resultat * b + c algorithme de Hrner

40 Next i EnDecimal = Resultat End Function

Algorithmique

Chapitre 2 Introduction la logique mathmatique

Je confesse bien comme vous, Que tous les potes sont fous. Mais puisque potes vous ntes, Tous les fous ne sont pas potes. Scvole de Sainte-Marthe (1536 - 1623)

2.1

Bref survol historique

On fait remonter traditionnellement, lhistoire de la logique lantiquit grecque ; cette histoire se confond, au moins jusqu une priode rcente, avec lhistoire des mathmatiques et de la philosophie. La logique contemporaine : mathmatique et symbolique apparat au cours de la seconde moiti du 19me sicle. On peut reprer cette naissance autour de trois moments : - G. Boole ralise une algbrisation de la logique en dveloppant le calcul propositionnel comme un calcul dpendant uniquement de la combinaison de symboles et non de linterprtation de ceux-ci. Les travaux contemporains de De Morgan qui initient la logique des relations dveloppe ensuite par Pierce, Schrder et Russel, contribuent au dveloppement de cette nouvelle forme de logique. - La publication du Begriffsschrift de Frege en 1879 marque le dbut de la

42

Introduction la logique mathmatique

formalisation de la logique et du formalisme comme philosophie programmatique des mathmatiques. Dans les travaux de Frege la logique sapplique dabord et essentiellement dterminer les lois mmes de la dduction. - la logique joue un rle dcisif dans le vaste mouvement daxiomatisation des mathmatiques. Lanalyse sera axiomatiquement ramene larithmtique grce Bolzano, Weierstrass, Dedekind, Mray, Cantor (avec donc des grandes questions sur la nature des entiers, des ensembles dentiers, des ensembles. . .) ; Hilbert mnera bien laxiomatisation complte de la gomtrie euclidienne. Les principaux acquis de cette priode ne vont pas tarder tre remis en cause par une profonde crise au tournant du 20me sicle (connue sous le nom de crise des fondements). La thorie des ensembles a provoqu beaucoup de rsistance chez de nombreux mathmaticiens. Elle sest labore comme tentative de fonder les mathmatiques partir dingrdients de base bien dnis : les ensembles, et de tout reconstruire partir de l. Mais vite sont apparus de nombreux paradoxes. Par exemple le paradoxe de Russel : soit a lensemble des ensembles ne se contenant pas eux-mmes ; il est facile de montrer que a a ssi a a, ce qui est manifes/ tement contradictoire. Il tait alors ncessaire de mettre de lordre dans tout cela. Il sagissait de prciser quels taient les raisonnements ables, qui mettraient labri de toute contradiction. cette crise on distingue trois rponses : - le projet logistique dune rduction des mathmatiques une logique cohrente et sufsamment dveloppe. Projet illustr par la Thorie des Types de Russel qui cesse vite davoir une inuence directe en logique mathmatique, mais qui tient aujourdhui une place importante dans certaines recherches en informatique thorique. - le projet formaliste nonc par Hilbert au dbut du 20me sicle est celui dune solution dnitive tous les problmes de fondement par lapplication des mathmatiques leur propre langage pris dans sa dimension formelle. Rsum grossirement il sagissait de re-traduire toutes les mathmatiques (mme celles concernant linni) des noncs lmentaires : dune part on rduit les dmonstrations des suites nies de symboles et on construit un algorithme qui permet de transformer une dmonstration de la thorie des ensembles en une dmonstration nitaire. Ce projet sera dnitivement mis en chec par le thorme dincompltude de Gdel. Mais la tentative de Hilbert a quand mme permis un travail de formalisation des mathmatiques qui sest rvl fructueux et a donn naissance une branche importante de la logique : la thorie de la dmonstration dont les applications, notamment en informatique se sont rvles trs importantes. - le projet intuitionniste dune profonde rforme des mathmatiques considres comme saisies dgarement, qui a donn naissance certaines branches marginales des mathmatiques (le constructivisme) et qui trouve galement des applications importantes en logique avec le dveloppement de linformatique.

2.1 Bref survol historique

43

Avec le thorme dincompltude en 1931 ( une thorie axiomatisable, sufsamment dveloppe ne peut contenir la dmonstration de sa propre cohrence), Gdel ouvre deux voies : le dveloppement de la thorie de la dmonstration et la thorie des fonctions rcursives. la mme poque Tarsky cre la smantique scientique. Ce qui importe ce nest pas la notion dinterprtation dun langage formel dans un domaine dobjets (notion parfaitement claire depuis le 19me sicle) mais un traitement mathmatique de la question. Il ouvre la voie la thorie des modles. La logique (notamment les branches que nous avons soulignes) se dveloppe alors, gagnant peu peu le statut de discipline mathmatique part entire. Un change fructueux sest tabli avec dautres branches des mathmatiques, lalgbre mais aussi diverses parties de lanalyse, de la topologie, de la thorie des nombres, de la thorie des catgories. De plus linformatique thorique a repris son compte de vastes fragments de la logique fournissant en change la matire de nouvelles investigations. Soulignons, pour conclure ce bref survol historique, limportance du rle jou par lirruption et lexplosion de linformatique dans tous les domaines de la vie conomique et scientique sur les dveloppement rcents de la logique. En effet les bases thoriques de cette nouvelle science sont justement la logique mathmatique. Tout dabord, les modles thoriques des premiers ordinateurs sont les machines de Tring. Rappelons ensuite quelques unes des interactions entre la logique et linformatique : le calcul boolen pour la conception et ltude des circuits ; la rcursivit qui est la thorie des fonctions calculables sur machines. Lapproche logique savre galement pertinente pour le dveloppement des langages de programmation. Par exemple la programmation logique, ne en 1973 Luminy (PROLOG, quipe dA. Colmerauer) est un langage informatique dans lequel on peut considrer un programme comme une recherche de preuve base sur des mthodes de dmonstration automatique. Autre exemple : les langages de programmation fonctionnelle. Le paradigme connu sous le nom disomorphisme de Curry-Howard tablit une parfaite correspondance entre programmes et dmonstrations formelles : on identie une tche avec une formule mathmatique et on identie un programme satisfaisant cette tche avec une preuve de lnonc. Notons que ces mthodes permettent dobtenir des programmes "srs" (i.e. qui font bien ce que lon attend deux). Enn, le cadre thorique pour tudier certains aspects de la complexit des programmes 1 se situe dans le champ de la Logique.

1. Il nest pas sufsant de savoir que lon dispose dun algorithme (dun programme) pour rsoudre un problme, encore faut-il que la rponse rendue par lordinateur arrive en temps "raisonnable".

44

Introduction la logique mathmatique

2.2

Un langage mathmatiquement dni

Un des premiers objets de la logique mathmatique est la formalisation du langage mathmatique. Il sagit de dnir les noncs que lon manipule et ce de telle faon que lon puisse les analyser relativement une notion de vrit. Traditionnellement, cette formalisation seffectue en deux tapes : on sintresse dans un premier temps larticulation logique des noncs (calcul propositionnel) puis aux contenus des noncs mathmatiques (calcul des prdicats). Lapproche syntaxique permet de construire des formules correctes (du point de vue du langage et de la prouvabilit), lapproche smantique permet de vrier la validit des formules en calculant leur valeur de vrit ou en se plaant dans des modles. On utilise dans ce qui suit les notions de mots et darbres, qui permettent lagencement et la manipulation des symboles, et sur lesquelles reposent les dnitions syntaxiques.

2.2.1

Le calcul propositionnel

Cette partie de la logique mathmatique ne sintresse pas au contenu des propositions mais seulement la manire dont elles sont logiquement articules. Ltude du calcul propositionnel est une premire tape pour aborder ltude complte des noncs mathmatiques. Les formules propositionnelles Dans un premier temps il sagit de dnir prcisment les objets dtude : les propositions ou formules propositionnelles. Ainsi nous allons manipuler des symboles de variables propositionnelles ou atomes A, B, C et des symboles de combinateurs ou oprations logiques : les connecteurs. On en retient traditionnellement cinq : un connecteur unaire pour la ngation, not et lu "non", quatre connecteurs binaires, celui de conjonction, not et lu "et", de disjonction, not et lu "ou", celui de limplication, not et lu "implique" et celui dquivalence, not et lu "si et seulement si" . On se donne un ensemble P ni ou dnombrable de variables propositionnelles, P = {A, B, . . ., X, Y , Z . . .}. On considre lalphabet A = P { , , , , } {(, )}. Les formules vont tre certains mots sur A. Dnition 1. Lensemble F des formules propositionnelles est le plus petit ensemble de mots sur A tels que : - F contient P ; - si F contient F alors F contient F ;

2.2 Un langage mathmatiquement dni

45

- si F contient F et G alors F contient (F G), (F G), (F G) et (F G) ; Cest dire que si F et G sont des formules alors F , (F G), (F G), (F G), (F G) sont des formules.
Une formule contient par dnition un assez grand nombre de parenthses qui parfois semblent inutiles. Aussi pour ne pas alourdir lcriture, on convient de se donner la possibilit de supprimer certaines parenthses. La rgle tant que les suppressions faites napportent pas dambiguts, cest dire que lon peut toujours reconstituer la "vraie" criture (avec toutes les parenthses). Ainsi, on supprime les parenthses les plus extrieures encadrant une formule ; on supprime les parenthses sparant des connecteurs successifs identiques sil sagit du , du ou de ; on supprime les parenthses sparant des successifs groups par la droite : A B C la place de A (B C),

On peut donner de lensemble F une description plus explicite : on dnit par rcurrence une suite (Fn )n densembles de mots sur A. On pose : -F0 = P -Fn+1 = Fn {F ; F Fn } {(F G); F, G Fn , {, , , }}. Thorme 1. F =
nN

Fn .

Dnition 2. Soit F F une formule propositionnelle. La hauteur de F note h(F ) est le plus petit entier n tel que F Fn . Lorsquil sagit de dmontrer une proprit sur toutes les formules on peut soit faire une dmonstration par rcurrence sur la hauteur des formules, soit revenir la dnition prcdente des formules et montrer que la proprit considre est vraie pour les formules atomiques et quelle se prserve par les oprations de ngation et par les connecteurs binaires. Dans ce dernier cas on dit quon fait une dmonstration par induction sur lensemble des formules. De la mme faon on peut faire des dnitions par induction sur lensemble des formules, par exemple : On peut dnir, par induction, lensemble des sous-formules dune formule. On peut associer une formule F son arbre de dcomposition F . On procde de la faon suivante, par induction sur F : - si F est une variable propositionnelle, F est larbre rduit la racine F ; - si F = G alors F est larbre de racine et de ls G ; - si F = GH (o est un connecteur binaire, alors F est larbre de racine avec comme ls gauche G et comme ls droit H . Distribution de valeurs de vrit : valuation Dnition 3. Une distribution de valeurs de vrit ou valuation est une fonction de lensemble P des variables propositionnelles dans = {0, 1}.

46

Introduction la logique mathmatique

Lemme 1. Une valuation v se prolonge de manire unique en une fonction v de F dans satisfaisant : - v (A) = v(A) lorsque A P ; - v (F ) = 1 ssi (v (F ) = 0 ; - v (F G) = 1 ssi v (F ) = v (G) = 1 ; - v (F G) = 0 ssi v (F ) = v (G) = 0 ; - v (F G) = 0 ssi v (F ) = 1 et v (G) = 0 ; - v (F G) = 1 ssi v (F ) = v (G) ; La dmonstration se fait par induction sur F . Par abus de notation, on note v pour v . Soit F une formule ; la dnition de v sur F nous donne une mthode pour calculer v(F ), on commence par calculer les valeurs prises par v sur les sousformules de F de hauteur 1 et on applique autant de fois que ncessaire les fonctions asssocies aux connecteurs. Lemme 2. La valeur de vrit dune formule ne dpend que des atomes gurant dans cette formule. Ce lemme permet de reprsenter par un tableau la valeur de vrit dune formule F en fonction de toutes les distributions de vrit possibles : la table de vrit dune formule. E XEMPLE : La table de vrit du : A 1 1 0 0 B AB 1 1 0 0 1 1 0 1

Tautologie, formules logiquement quivalentes Dnition 4. Soit F une formule, v une valuation et un ensemble de formules : v satisfait F ssi v(F ) = 1. v satisfait ssi v satisfait toutes les formules de . F est satisfaisable ssi il existe une valuation v qui satisfait F (i.e. telle que v(F ) = 1). F est une tautologie ssi elle est satisfaite par toutes les valuations. F est une antilogie ou une contradiction ssi elle nest satisfaite par aucune valuation. est satisfaisable ssi il existe une valuation qui satifait . est insatisfaisable ou inconsistante ou contradictoire ssi il nexiste pas de valuation qui satisfasse simultanment toutes les formules de .

2.2 Un langage mathmatiquement dni

47

Dnition 5. Soit F et G deux formules sur P . F et G sont logiquement quivalentes ssi pour toute valuation v, v(F ) = v(G). On notera alors F G. Lemme 3 (Quelques quivalences bien connues). Soit F , G et H des formules propositionnelles, on a : 1. F G F G ; 2. (F G) H F (G H) (associativit du ) ; 3. (F G) H F (G H) (associativit du ) ; 4. F G G F (commutativit du ) ; 5. F G G F (commutativit du ) ; 6. (F G) F G (ngation dune conjonction) ; 7. (F G) F G (ngation dune disjonction) ; 8. F F (double ngation) ; 9. F F F (idempotence du ) ; 10. F F F (idempotence du ) ; 11. F G G F (contrapose). Dduction smantique Dnition 6. Soit E un ensemble de formules et une formule. On dit que E valide si toute valuation qui satisfait E satisfait . On note E |= . R EMARQUE : Si est une tautologie on a |= , ce que lon notera |= . Lemme 4 (Quelques tautologies bien connues). Soit F et G des formules propositionnelles, les formules suivantes sont des tautologies : 1. F (G F ) 2. F F G 3. G F G 4. F G F 5. F G G 6. F (F G) 7. F F

48

Introduction la logique mathmatique

2.2.2

Le calcul des prdicats

Le calcul des prdicats comporte deux volets. Tout dabord on se donne les outils adquats pour nommer les objets (les termes) et dcrire leurs proprits (les formules). On tudie ensuite la satisfaction des formules dans telle ou telle structure. Le langage du premier ordre Lobjectif est de dnir les mots que nous appellerons formules. Il sagit de trouver un alphabet et une grammaire permettant dexprimer les noncs mathmatiques tels que : - N n (n > N |un a| < ) - nm(m n) - n P (n (n + 1)) est pair. - n (k k < n) (n = 0) - y(x(sin(x + 2) = y)). Dans ces noncs on distingue : des connecteurs ( , ) ; des quanticateurs (, ) ; les parenthses ouvrantes et fermantes ; des fonctions (unaires comme sin, valeur absolue, binaires comme ou +, . . .) ; des relations ou prdicats (, =, "tre pair", . . .) ; des variables (x, y, n, m, . . .) ; des constantes ( 0, . . .) Ainsi, comme pour le calcul propositionnel, les formules seront des suites de symboles prises dans un alphabet. Toutefois, il ny aura pas un alphabet unique, mais un alphabet appropri (appel souvent langage) pour chaque type de structure envisage. Certains symboles sont communs tous les alphabets : les connecteurs, les parenthses les quanticateurs et les variables. Les autres symboles dpendent du type de structure que lon a en vue. Par exemple si on veut tudier des structures algbriques et plus prcisment les groupes, on a besoin dun symbole de constante (pour llment neutre), dun symbole de fonction binaire (pour lopration interne) et dun symbole de relation binaire (pour lgalit). Pour tudier les ensembles ordonns on a seulement besoin de deux symboles de relation binaire pour la relation dordre et pour lgalit. Les formules que lon va tudier ici sappellent les formules du premier ordre. Ceci est justi par le fait que lon quantie sur les lments de la structure. Mais il y a de nombreuses proprits que lon ne peut pas exprimer ainsi (par exemple la notion de bon ordre), il faut alors se permettre de quantier sur dautres objets que les variables du premier ordre (les relations, les fonctions. . .) Dnition 7 (Langage du premier ordre). Un langage L du premier ordre est un ensemble de symboles qui se compose de deux parties :

2.2 Un langage mathmatiquement dni

49

La premire commune tous les langages du premier ordre est constitue des symboles logiques : les variables, les connecteurs, les quanticateurs et les parenthses, soit : Un ensemble V dnombrable dont les lments sont appels les variables notes x, y, z, n, . . . Lensemble des connecteurs C = { , , , , } Les quanticateurs : et Les parenthses ouvrantes et fermantes. La deuxime partie contient des symboles non logiques et varie dun langage lautre Un ensemble de symboles fonctionnels. Un symbole fonctionnel est constitu par un couple (f, n) o n est appel larit 2 de f . Un ensemble de constantes {a, b, c, . . .} (que lon peut voir aussi comme des symboles fonctionnels darit 0). Un ensemble de symboles relationnels. Un symbole relationnel est constitu par un couple (R, n) o n est appel larit de R. Remarque La donne dun langage du calcul des prdicats se fera par la donne des symboles non logiques. E XEMPLE : L = {(f, 2); (g, 2); (c, 0)} {(R, 2); (S, 2)} o f et g sont des symboles de fonctions binaires, c est un symbole de fonction 0-aire (une constante), R et S sont des symboles de relations binaires. Nous allons construire des mots bien forms appels des termes. Les symboles qui servent dingrdients pour la fabrication des termes sont les variables, les constantes et les symboles de fonctions. E XEMPLE : Dans le langage L, (xf y)gc sera un terme. (On crira aussi ce terme en notation prxe : g(f (x, y), c). Dnition 8 (Termes dun langage L). Un terme t est un mot ni sur L dni par induction par : - les variables et les constantes sont des termes ; - si t1 , . . . , tn sont des termes, si f est un symbole fonctionnel darit n, alors f (t1 , . . . , tn ) est un terme. R EMARQUE : On peut dnir un terme comme tant un arbre ni dont les feuilles sont des variables ou des constantes et dont chaque nud qui nest pas une feuille vrie la rgle de construction suivante : le nud est tiquet par un symbole de fonction n-aire et possde n ls qui sont des termes.
2. le nombre darguments de la fonction ou de la relation

50 Dnition 9.

Introduction la logique mathmatique

1. Un sous-terme u dun terme t est un mot situ un nud de larbre de construction de t. E XEMPLE : h(x, y, a) est un sous terme de f (g(a), h(x, y, a)). 2. Les variables de t sont les variables situes aux feuilles de larbre de construction de t. On note V(t) lensemble des variables de t. 3. t est un terme clos si V(t) est . R EMARQUE : Un langage sans symbole de constante na pas de terme clos. Dnition 10 (Formules du premier ordre sur L). Soit L un langage du premier ordre. On dnit par induction lensemble des formules sur L : Si R est un symbole relationnel darit n et si t1 , . . . , tn sont n termes alors = R(t1 , . . . , tn ) est une formule atomique. Si et sont des formules alors , () o {, , , } sont des formules ; Si est une formule et x est une variable alors x() et x() sont des formules. On peut dnir comme prcdemment larbre de dcomposition dune formule sur L ; les feuilles sont toujours les formules atomiques. E XEMPLE : Considrons la formule [R(x, y) (x(f (a, x) = y))] [y(x((g(a) = x) (x = y)))] son arbre de dcomposition est :
R(x, y) x y x f (a, x) = y g(a) = x x=y

On sattarde ensuite sur la notion doccurrence et surtout de variable libre qui est importante pour linterprtation des formules quanties.

2.2 Un langage mathmatiquement dni Dnition 11 (occurrence).

51

Une occurrence de x dans dsigne une place particulire de cet x dans . On peut reprer cette place dans la feuille de larbre de construction de dans laquelle x est produit. Il peut y avoir plusieurs occurrences de x dans une mme feuille (ex : dans R(x, x, y)) ou plus gnralement dans une mme formule . Une occurrence de x dans est lie ssi la feuille dans laquelle on considre loccurence de x appartient une branche o la rgle de formation x ou x a t applique. Autrement dit cette occurence de x dans est dans une sous formule de qui est de la forme x ou x. Une occurrence de x dans est libre ssi la feuille dans laquelle on considre loccurence de x nappartient pas une branche o la rgle de formation x ou x a t applique. E XEMPLE : Dans la formule (f (x, y) = a y R(y, x)), les occurrences de x sont libres ; y a une occurrence libre et une occurrence lie. Dnition 12 (Variables libres). Une variable x est une variable libre de ssi x possde au moins une occurrence libre dans . On note Vl (), lensemble des variables libres de . E XEMPLE : Dans lexemple ci-dessus, x et y sont des variables libres. Dnition 13 (Formule close). Une formule est une formule close lorsque Vl () = , ouverte si elle possde des variables libres. E XEMPLE : La formule x((yR(x, y)) f (a, x) = a) est close. La formule x (R(x, y) f (a, x) = z) est ouverte. Interprtation Il sagit de donner un sens aux symboles de prdicats et de fonctions, aux variables et aux termes et une valeur de vrit aux formules. Pour cela on va dabord xer lunivers du discours, cest dire lensemble des objets que lon tudie ; les termes seront interprts par des lments de cet ensemble. On peut alors associer chaque symbole fonctionnel une fonction sur cet ensemble (fonction au sens mathmatique habituel) ; de mme les symboles relationnels seront interprts par des relations sur cet ensemble. Ensuite on donnera une valeur de vrit aux formules en tenant compte de leurs variables libres, par le biais des assignations. Dnition 14 (Ralisation dun langage). Soit L = {(fi , ni )/i I}{(Rj , nj )/j J}. Une ralisation M du langage L est la donne :

52

Introduction la logique mathmatique - dun ensemble non vide E appel le domaine de la ralisation (not parfois | M |). - pour chaque symbole fonctionnel (f, n) de L, dune fonction f : E n E - pour chaque symbole relationnel (R, n) de L, dune relation n-aire R , R E n

E XEMPLE : Avec L = {(f, 2) ; (g, 2) ; (h, 1) ; (c, 0)} {(R, 2)} 1) M1 = {N; +, , succ, 0, } 2) M2 = {Le plan euclidien E dorigine O, f : E 2 E dnie par f (A, B) = C tel que OA + OB = OC g : E 2 E dnie par : g (A, B) = C milieu de [AB] h : E E dnie par : h (A) = C symtrique de A par rapport O c est lorigine O R = {(A, B)/A, B, O sont aligns } Une assignation de variables s est une application s : V E. Lorsque V est ni (i.e. V = {x1 , . . . , xn }), s sera plutt not : {x1 = a1 , . . . , xn = an }. Dnition 15 (Ralisation value). Une ralisation value ( une interprtation ) dun langage L est la donne dun couple (M, s) o M est une ralisation du langage et s est une assignation de variables. Une ralisation value (M, s) permet de dnir linterprtation dun terme t par un lment du domaine de la ralisation E, not s(t), puis ensuite de dterminer la satisfaction des formules dans cette ralisation value. Lemme 5 (Interprtation des formules). Soit (M, s) une ralisation value du langage L. Il existe une et une seule fonction boolenne sM (i.e. dnie sur lensemble des formules du premier ordre de L, valeur dans {0, 1}), qui vrie les conditions ci-dessous, en notant M |=s pour sM () = 1 : - Si est une formule atomique R(t1 , . . . , tn ) alors M |=s R ssi (s(t1 ), , s(tn )) R - Si est alors M |=s ssi sM () = 0 - Si est alors sM () = 1 ssi sM () = 1 et sM () = 1 De mme pour , , , on revient aux tables de vrit vues en calcul propositionnel (lemme 1). - Si est x alors M |=s x ssi il existe a |M| tel que sM () = 1 x:=a o sx:=a concide avec s sauf en x pour laquelle sx:=a (x) = a. - Si est x alors sM () = 1 ssi quelque soit a |M| sM () = 1 x:=a Dnition 16 (Formules synonymes). F et G sont synonymes ssi quel que soit (M, s), [M |=s F ssi M |=s G]. On note alors F G.

2.3 La formalisation des dmonstrations E XEMPLES : 1. xF xF 2. xF xF 3. xyF yxF

53

Dnition 17 (Clture universelle). Soit F une formule ayant ses variables libres parmi {x1 , . . . , xn }. On appelle clture universelle de F la formule x1 xn F . R EMARQUE : Une formule F et sa clture universelle ne sont pas ncessairement synonymes. E XEMPLE : Les formules x = y et xy x = y ne sont pas synonymes. Dans une ralisation dont le domaine contient plus dun lment la formule x = y sera satisfaite pour certaines valuations alors que la formule xy x = y ne le sera jamais. Dnition 18. Une formule close est dite universellement valide (ou valide) si elle est satisfaite dans toute ralisation de L. Une formule comportant des variables libres est dite universellement valide si sa clture universelle lest. Etant donn deux formules F et G, on dit que ces formules sont universellement quivalentes ou logiquement quivalentes ou quivalentes si la formule F G est universellement valide. On appelle thorie de L tout ensemble de formules closes de L. Soit une thorie T de L et une ralisation M de L. On dit que M est un modle de T si M satisfait toutes les formules de T . On note M |= T . Une thorie est consistante si elle possde au moins un modle. Une thorie qui nest pas consistante est dite contradictoire. Etant donn une thorie T et une formule close F de L, on dit que F est une consquence smantique (ou consquence) de T si tout modle de T est aussi modle de F .

2.3

La formalisation des dmonstrations

Dans la partie prcdente nous nous sommes appliqus dune part dnir prcisment les formules, dautre part vrier parmi les formules bien dnies lesquelles taient vraies (universellement valides). Nous allons maintenant approfondir cette dmarche : 1. Nous tendons notre effort de formalisation, ralis jusquici sur les formules, aux dmonstrations elle-mmes ;

54

Introduction la logique mathmatique 2. Nous ne nous contentons plus de vrier si une formule est vraie ou pas mais nous allons construire des formules vraies.

Nous allons donc donner un sens prcis lexpression "la formule est dmontrable". Dans la mesure o est tablie, par les thormes de compltude la correspondance entre formules vraies (universellement valides) et formules dmontrables, nous pourrons alors considrer que nous savons, en faisant des dmonstrations formelles, construire des formules vraies. Il existe plusieurs systmes dans lesquels on peut dnir les preuves formelles. De tels systmes sappellent des systmes de dduction ou des systmes formels. Historiquement les premiers systmes formels, par exemple les systmes la Hilbert, taient bass sur des schmas daxiomes (les tautologies du calcul propositionnel ou du calcul des prdicats) ; une dmonstration formelle est une suite de propositions qui appartiennent cette suite soit parce quelles sont des axiomes, soit quelles peuvent se dduire de propositions prcdentes par lapplication dune rgle. Par exemple pour le calcul propositionnel on utilise une seule rgle appele Modus ponens : Si A et A B sont deux propositions qui appartiennent une dmonstration formelle D alors la suite de propositions constitue de D suivie de B est une dmonstration formelle. Gerhard Gentzen est le premier avoir dvelopp des formalismes qui redonnent la logique le caractre dun cheminement naturel. La principale ide de dpart de Gentzen tait simple : pas daxiomes logiques, que des rgles de dduction et autant quil en faut pour reproduire toutes les formes lmentaires et naturelles de raisonnement. Pour raliser cette ide, Gentzen a dvelopp un formalisme o les dductions ne sont pas des suites dnoncs mais des arbres, faits de colonnes dnoncs qui se rejoignent via des rgles de dduction, jusqu la conclusion. G. Gentzen a propos en 1934 plusieurs systmes dinfrence, dont les systmes de dduction naturelle N K pour la logique classique et N J pour la logique intuitionniste. Le choix de graduer les rgles de dduction provient dun souci philosophique que nous nabordons pas ici, bien quil soit du plus grand intrt. Le systme utilis dans les cours de mathmatique quils soient de lenseignement secondaire ou de lenseignement universitaire, est le systme N K ; cest celui qui correspond la smantique prsente ci-dessus 3 .
3. Nous illustrerons les rgles de dduction prsentes ci-dessous dans la section suivante.

2.3 La formalisation des dmonstrations

55

2.3.1

Un peu de vocabulaire

En Dduction Naturelle (ND), on distingue deux types de rgles de dduction : les rgles dintroduction et les rgles dlimination des connecteurs et quanticateurs. le nest pas primitif, mais dni partir du connecteur et de la constante (symbole de lantilogie) : A = A . De mme pour . En effet : A B = (A B) (B A). Dnition 19. Une dmonstration formelle dans un systme de dduction naturelle est un arbre ni. Ses noeuds sont des expressions o est un ensemble de formules et est une formule ; ces expressions sont appeles squents (on peut intuitivement comprendre un tel squent par "la formule est dduite de lensemble dhypothses "). La racine de larbre est la conclusion de la dmonstration, les feuilles sont soit des axiomes dune thorie soit des axiomes logiques, cest dire des squents A o A . Les nuds-pres se dduisent des nuds ls par lapplication dune des rgles de dduction du systme. Ces rgles sont qualies de rgles dintroduction ou rgles dlimination selon quelles permettent dintroduire un connecteur ou bien dliminer un connecteur.

2.3.2

Rgles de la Dduction Naturelle en calcul propositionnel

Les rgles de la logique intuitionniste N J 1. Axiomes logiques A Lorsque A appartient lensemble de formules .

2. Rgles relatives limplication : Introduction de , A B


i

AB

Elimination de AB A e , B

R EMARQUE : Considrons la rgle que lon a appele "limination de " pour commenter la lecture des rgles de dduction. Dans une telle rgle, on distingue un ou deux squents prmisses, ceux qui sont au dessus (ici A B et A) et un squent conclusion, celui qui est au dessous (ici , B). Et la rgle peut tre lue de la faon suivante : on sait que sous les hypothses on peut dduire la formule A B et que sous les hypothses on peut dduire la formule A ; on peut alors afrmer que la runion des hypothses et permet de dduire la formule B.

56

Introduction la logique mathmatique Ainsi une rgle de dduction permet de formuler une nouvelle conclusion (ici la formule B, la formule conclusion du squent conclusion) en contrlant la gestion des hypothses. 3. Rgles relatives au connecteur : Introduction de A B
i

, A B Elimination de AB AB
e1

e2

4. Rgles relatives au connecteur : Introduction de A B


i1

i2

AB

AB

Elimination de , A C , B C A B
e

R EMARQUE : On peut noter que la rgle dlimination du permet de faire des raisonnements par disjonction de cas. 5. Rgle relative au : Elimination du A Pour nimporte quelle formule A Si de lensemble de formules , on dduit labsurdit alors on peut en dduire nimporte quelle formule. Dnition 20. Le systme de dduction naturelle de la logique intuitionniste est lensemble des arbres de drivation construits partir des axiomes logiques ( A lorsque A ) et des rgles relatives aux connecteurs , et . Les rgles classiques de NK LAxiome du tiers exclus (T E) est le fait que lon rajoute comme axiome logique le squent suivant :
te

2.3 La formalisation des dmonstrations La Rgle de labsurde (A) est la rgle suivante : ,
a

57

La Rgle "de la double ngation" () est la rgle suivante :

Les trois rgles (T E), (A) et () sont quivalentes. Elles permettent de faire des raisonnements par labsurde. Dnition 21 (Le Systme de dduction naturelle NK). Cest le systme N J auquel on rajoute la rgle T E. R EMARQUE : Comme on le fait usuellement en mathmatiques, on a envie de rutiliser ce quon a dmontr, sans pour autant refaire la dmonstration chaque fois. On pourra considrer une rgle drive comme une bote noire dont on ne connat que les entres/sorties. E XEMPLES : 1. On peut driver la rgle suivante, qui permet de faire des raisonnements par contrapose : AB B A En effet, en prenant A B comme hypothse on peut faire la drivation suivante : A A AB e A B B B e A, B
i

B A (B ) (A )

2. En logique classique N K les formules A B et A B sont quivalentes. Nous tablissons, ici, comme exemple, la formule (A B) (A B), qui ne ncessite pas lutilisation de la rgle T E, et qui est, par consquent, dmontrable dans N J On fait dabord les deux drivations suivantes, o dsigne lensemble de formules {A B, A, B} : , A A , A A(= A )
e

, B

, B

B(= B )
e

, A

, B

58 puis la drivation : A B

Introduction la logique mathmatique

, A B

, B
e i i

A B, A A B

A B

(A B) (A B)

2.3.3

Dduction Naturelle en calcul des prdicats

Le systme de Dduction Naturelle N K pour le calcul des prdicats est constitu par les axiomes et rgles du calcul propositionnel auxquels on rajoute des rgles dintroduction et dlimination pour les quanticateurs et . Rgles pour - Rgle dintroduction de (y)
i

x (x) y nest pas libre dans - Rgle dlimination de x (x) (t/x) dsigne la formule dans laquelle
e

(t/x)

toutes les occurences libres de x ont t remplaces par un terme quelconque t.

Rgles pour Rgle dintroduction de (t/x)


i

Rgle dlimination de , (y) x (x)


e

x (x)

y nest libre ni dans , ni dans

E XEMPLE : dmonstration formelle de la distributivit du par rapport au x((x) (x)) x((x) (x)) x((x) (x))
e

x((x) (x)) x((x) (x))

x((x) (x))
e

(y) (y)
e1

(z) (z)
e2

x((x) (x)) x((x) (x))

(y)
i

x((x) (x)) x((x) (x)) x(x) x(x)

(z)
i

x(x)

x(x)
i

x((x) (x))

2.4 Illustration de quelques rgles

59

2.3.4

Compltude de la logique du premier ordre

Pour le calcul propositionnel ce thorme de compltude snonce aisment : Thorme 2 (Compltude de la logique propositionnelle). Soit F une formule propositionnelle, F est une tautologie ssi le squent F est dmontrable.

Ce thorme peut tre vu comme un cas particulier du thorme de compltude de la logique du premier ordre, dont la dmonstration est plus complexe. Nous ne ferons ici que lnoncer et nous renvoyons pour sa dmonstration aux ouvrages de rfrence, par exemple lIntroduction la logique de David, Nour et Raffali. Thorme 3 (Compltude de la logique du premier ordre). Soit T une thorie (les formules closes appartenant T sont appels axiomes de la thorie) et F une formule close. T F ssi F est une consquence smantique de T

o la notation T F signie quil existe un sous ensemble ni T de formules de T tel que T F. Ce thorme signie intuitivement quune formule est vraie (quelque soit le sens que lon donne aux symboles propres au langage du premier ordre) si et seulement si elle est dmontrable. Le second sens de lquivalence si une formule est dmontrable alors elle est vraie assure que les rgles de dmonstration que lon sest donn sont correctes. Lautre sens si une formule est vraie alors elle est dmontrable " assure que lon sest donn sufsament de rgles (que le systme de rgles est complet pour dmontrer tout ce qui est vrai).

2.4

Illustration de quelques rgles


, A B
i

1. Introduction de : n est un nombre entier naturel A : lentier n est divisible par 6 B : lentier n est divisible par 3

AB

La rgle dintroduction du formalise la dmonstration dun thorme de la forme Si. . . alors. . . . La formalisation ci-dessus peut tre lue comme : partir des hypothses n est un entier (), et n est divisible par 6 (A),

60

Introduction la logique mathmatique on dmontre n est divisible par 3 (B). On dduit que, sous lhypothse n est un entier (), la formule si n est divisible par 6 alors n est divisible par 3, (A B), est vraie. 2. Elimination de AB
e

A : n est un nombre entier divisible par 6 A : lentier n est divisible par 2 B : lentier n est divisible par 3 3. Elimination de , A D , B D , C D D ABC
e

: n est un nombre entier naturel A : n 0 mod 3 B : n 1 mod 3 C : n 2 mod 3 D : n3 n est divisible par 3 Cette rgle formalise la mthode de dmonstration par disjonction des cas. Ainsi on peut lire la formalisation ci-dessus comme : partir des hypothses n est un entier, (), et n 0 modulo 3, (A), on dmontre que n3 n est divisible par 3, (D). partir des hypothses n est un entier, (), et n 1 modulo 3, (B), on dmontre que n3 n est divisible par 3, (D). partir des hypothses n est un entier, (), et n 2 modulo 3, (C), on dmontre que n3 n est divisible par 3, (D). partir de lhypothse n est un entier, (), on dmontre que n 0 modulo 3 ou n 1 modulo 3 ou n 2 modulo 3, ( A B C). On dduit que, sous lhypothse n est un entier, (), la formule n3 n est divisible par 3, ( D), est vraie. 4. Rgle dlimination de x (x)
e

(t/x)

(t/x) dsigne la formule dans laquelle toutes les occurences libres de x ont t remplaces par un terme quelconque t.

: x est un nombre rel (x) : (x 1)2 = x2 2x + 1 t : le nombre entier 100

Cette rgle reprsente linstanciation dune variable universellement quantie. Lexemple ci-dessus montre son utilisation pour calculer mentalement 992 .

2.5 La logique au quotidien en classe de mathmatiques

61

2.5
2.5.1

La logique au quotidien en classe de mathmatiques


Le modus ponens omniprsent : un exemple en gomtrie

Considrons lexercice suivant : Le triangle ABC est rectangle en A et les cts AB et AC mesurent respectivement 5 et 8 cm. Quelle est la longueur du ct BC ? La rdaction classique de la solution de cet exercice est : le triangle ABC est rectangle en A donc, daprs le thorme de Pythagore, on a BC 2 = AB 2 + AC 2 do BC 2 = 52 + 82 soit BC 2 = 89. On en dduit BC = 89.

Ce type de dmonstration, frquent en mathmatiques, utilise la rgle appele modus ponens (ou rgle dlimination du ). Notons P la proposition le triangle ABC est rectangle en A Q la proposition BC 2 = AB 2 + AC 2 , Linstanciation du thorme de Pythagore sur le triangle ABC peut tre formalise par : P Q et la dmonstration ci-dessus par : P (P Q)
e

Q Le donc de la rdaction ci-dessus reprsente la mise en acte de la rgle dlimination du .

2.5.2

La pratique du contre-exemple
A x M B N O

On considre un carr (ABCD) de 8 cm de ct et de centre O. Soit M un point du segment [AB] et N le point du segment [BC] tel que les droites (OM ) et (ON ) soient perpendiculaires.
D

62

Introduction la logique mathmatique 1. On suppose que AM = 1cm. Calculer la longueur OM . En dduire le primtre du quadrilatre (M ON B). Reprendre les calculs prcdents en supposant que AM = 6cm. Le primtre du quadrilatre (M ON B) est-il constant ? 2. On pose AM = x. Exprimer OM en fonction de x. En dduire lexpression P (x) du primtre du quadrilatre (M ON B) en fonction de x. 3. tudier laire du quadrilatre (M ON B) pour diffrentes positions du point M sur [AB]. Quelle conclusion peut-on tirer de cette tude ? Des calculs simples montrent que, si AM = 1, OM = 5 et le primtre du quadrilatre (M ON B) mesure 18cm. Si AM = 6cm, OM = 2 5 et le primetre mesure 8 + 4 5. On peut donc en conclure que le primtre du quadrilatre (M ON B) nest pas constant. Ltude du 2. montrera que P (x) = 8+2 x2 8x + 32 et que ce primtre est minimal lorsque AM = 4. Ltude, pour plusieurs positions du point M sur [AB] montre que laire correspondante du quadrilatre (M ON B) est de 16cm2 . Cependant ce constat ne suft pas pour en conclure que laire est indpendante de la position du point M sur [AB].
A M B N O

On montre, en utilisant les cas dgalit des triangles, que OM A et ON B sont isomtriques. On dduit, par dcoupage et comparaison des aires, que le quadrilatre M ON B a une aire gale celle du triangle AOB et, donc, que celle-ci est indpendante de la position du point M sur le segment [AB].
D

Si lon note x, y des rels appartenant [0 ;8] et P (x) le primtre du quadrilatre (M ON B) lorsque AM = x, la proposition le primtre du quadrilatre (M ON B) est constant se formalise par x y P (x) = P (y) Montrer que cette proposition est fausse revient vrier que sa ngation est vraie : x y (P (x) = P (y)) La vrication se fait en exhibant deux valeurs x, y pour lesquelles on a P (x) = P (y).

2.5 La logique au quotidien en classe de mathmatiques

63

Pour dmontrer que laire du quadrilatre est constante, on est amen comparer laire du quadrilatre M ON B celle du triangle AOB pour une position quelconque du point M sur [AB] et constater que ces deux aires sont gales. La rgle dintroduction du permet de conclure.

2.5.3

Le raisonnement par labsurde et le raisonnement par rcurrence

Si lon admet comme axiome le principe de raisonnement par rcurrence, on peut dmontrer le rsultat suivant : Toute partie non vide de N admet un plus petit lment. Soit une partie non vide de N. Raisonnons par labsurde et supposons donc que nadmet pas de plus petit lment. Soit n N. Notons P (n) la proposition : P (n) p N, 0 p n, p /

P (0) est vraie car, dans le cas contraire, 0 serait le plus petit lment de . Soit n un entier tel que P (n) soit vraie ; alors P (n + 1) est vraie. En effet, p N, 0 p n, p par hypothse de rcurrence. De plus, / n + 1 sinon n + 1 serait le plus petit lment de . Finalement, / p N, 0 p n + 1, p / ce quil fallait montrer. Daprs le principe de rcurrence on en dduit que n N, P (n) est vraie et en particulier n N, n , ce qui contredit lhypothse est une partie non / vide de N et amne la contradiction cherche. La dmonstration par rcurrence de la proposition n N, P (n) peut tre formalise par : P (0) n P (n) P (n + 1) n P (n)
axiome du principe de rcurrence

Si lon note : B la proposition a un plus petit lment , C la proposition est vide , la proposition n P (n) est quivalente la proposition C et on peut formaliser le raisonnement par labsurde par : B B C C
i a

C C B

64

Introduction la logique mathmatique

2.5.4

Utilisation de la contrapose propos dun exercice de perspective

La photographie ci-dessous montre la faade dun btiment du XVIIIme sicle.

La faade de ce btiment est-elle situe dans un plan frontal 4 ? On peut supposer que la faade du btiment est situe dans un plan vertical et que les bords horizontaux des corniches, des chapiteaux, des balustrades, etc... sont parallles entre eux. Si la faade du btiment tait situe dans un plan frontal, les reprsentations des bords horizontaux des diffrents lments de la faade devraient tre parallles entre eux.
4. Dans une projection centrale, un plan frontal est un plan parallle au plan de projection ne passant pas par le centre de la projection (dit aussi point de vue)

2.5 La logique au quotidien en classe de mathmatiques

65

Or ils ne le sont pas (ce que montre une vrication graphique sur la photographie) donc la faade du btiment nest pas situe dans un plan frontal. La dmonstration repose sur le rsultat de cours suivant : Dans une projection centrale (ou dans une reprsentation en perspective centrale), si des droites coplanaires sont parallles entre elles et si le plan quelles dnissent est un plan frontal, alors leurs projections (leurs reprsentations) sont des droites parallles. Considrons les propositions suivantes o D1 et D2 sont des droites coplanaires : A : les droites D1 et D2 sont parallles B : le plan dni par les droites D1 et D2 est un plan frontal C : les projections des droites D1 et D2 sont parallles Le rsultat de cours peut se formaliser par : (AB) C. Le raisonnement utilis pour rsoudre lexercice sappuie sur la contrapose de cet nonc : C (A B) Il se formalise par 5 : C C (A B)
e

ou encore

C (A B).

A B A A B B

. . . (A B) (A B)
e e

2.5.5

La dmonstration par disjonction des cas

Au IIIme sicle avant JC, Euclide dmontrait dans le livre IX de ses Elments la proposition 20 suivante : Les nombres premiers sont en plus grande quantit que toute quantit propose de nombres premiers que lon nonce maintenant sous la forme : Il existe une innit de nombres premiers. La dmonstration dEuclide 6 :
5. dsigne la dmonstration de limplication (A B) (A B). Cf Section 2.3.2 exemple 2 page 57 6. extraite de L ES QVINZE LIVRES DES E LEMENTS GEOMETRIQVES D E VCLIDE traduicts du Franois par D.H ENRION PARIS MDCXXXII

66

Introduction la logique mathmatique

Soit p1 , p2 , ...,pn , n nombres premiers distincts. Alors il existe un nombre premier p diffrent de p1 , p2 , ..., pn . Soit lentier q dni par q = p1 p2 ... pn + 1. Ou bien q est premier et il est, de faon vidente, diffrent de chacun des pi , ce quil fallait montrer. Ou bien q nest pas premier et il admet un diviseur premier p (proposition 34 du livre VII). Si ce nombre p est lun des pi alors il divise la fois p1 p2 ... pn et p1 p2 ...pn +1 donc il divise leur diffrence, cest dire 1, ce qui est absurde. Donc il est diffrent de chacun des pi . On peut formaliser cette dmonstration de la manire suivante : p1 ,..., pn , q, p sont des constantes, Q dsigne la proposition les constantes p1 ,..., pn reprsentent des nombres premiers distincts , P (x) dsigne la proposition le nombre x est premier , R(x) dsigne la proposition le nombre x est diffrent de chacune des constantes pi et D(x, y) dsigne la proposition le nombre x divise le nombre y . La premire partie de la dmonstration peut se formaliser par : Q, P (q) D(pk , q)
i

Q, P (q) Q, P (q)

i D(pi , q)
i

x P (x) R(x)

2.6 Bibliographie en remarquant que la formule i D(pi , q) est quivalente la formule R(q).

67

La formule P (q) est quivalente p P (p) D(p, q) (cest lapplication de la proposition 34 du livre VII des lments au nombre q) ; la deuxime partie de la dmonstration peut alors se formaliser par : Q, p P (p) D(p, q), R(p) Q, p P (p) D(p, q)
a

x P (x) R(x)

En regroupant les conclusions de ces deux parties, on peut formaliser la n de la dmonstration par : Q, P (q) x P (x) R(x) Q, P (q) Q x P (x) R(x) Q P (q) P (q)
e

x P (x) R(x)

2.6

Bibliographie

Article Logique mathmatique de lEncyclopdia Universalis. Cori R., Lascar D. Logique mathmatique Cours et exercices corrigs, Licence, Master, Tomes 1 et 2, Dunod Dowek G., La logique, Coll. Dominos, Flammarion (1995). David R., Nour K, Raffalli C. Introduction la logique, Thorie de la dmonstration Cours et exercices corrigs, 2nd cycle, Dunod (2001)