Mathématice, intégration des Tice dans l'enseignement des mathématiques  

Géométrix
Logiciel de géométrie dynamique, assistant de construction, assistant de preuve
Moteur de recherche
Mis en ligne le 29 novembre 2006, par Jacques Gressier

Cet article peut être librement diffusé à l’identique suivant la licence CC-by-nd
http://creativecommons.org/licenses/by-nd/3.0/fr/legalcode

http://geometrix.free.fr/geom3exos

I Généralités

Géométrix est différent de la plupart des logiciels de géométrie dynamique pour plusieurs raisons. La première, d’ordre pédagogique, tient au fait que son développement a toujours été orienté pour tenter d’en faire un outil que l’élève puisse réellement utiliser, lui même, éventuellement seul, en autonomie. Si je peux me permettre une formule à l’emporte pièce, je dirais que ce n’est pas un logiciel pour montrer mais pour faire. L’objectif est bien d’obtenir de la part des élèves une certaine maîtrise dans l’usage du logiciel afin qu’ils puissent l’utiliser pour ce qu’il a de spécifique : son aptitude à corriger en direct l’utilisateur sur tout problème de construction ou de démonstration. Bien entendu l’enseignant pourra toujours mener les activités traditionnelles au cours desquelles on déplace tel ou tel point de la figure afin d’observer tel invariant ou telle propriété géométrique. Mais il s’agirait alors d’une utilisation minimaliste du logiciel. Si le logiciel, gratuit, est « livré » avec un très grand nombre d’exercices de construction et de démonstration, il permet aussi à l’enseignant de créer ses propres exercices et l’on verra dans un prochain article qu’avec le nouveau module de démonstration automatique, quelques minutes peuvent suffire pour générer un exercice de démonstration tiré de n’importe quel manuel de collège. Enfin Géométrix contraint son utilisateur à définir ses objets à partir de phrases qu’il complète en cliquant sur les noms des objets mis en relation dans la phrase. On espère ainsi limiter la confusion entre dessin et construction géométrique, fixer le vocabulaire et préparer à intégrer les relations entres les objets, relations sur lesquelles on demande par ailleurs à l’élève de raisonner.

II Le module de construction géométrique

Quelles sont en résumé les principales fonctionnalités du logiciel en ce qui concerne les exercices de construction géométrique ? Géométrix est capable de vérifier si une figure construite par un élève possède les mêmes propriétés que la figure construite par son professeur indépendamment des méthodes de construction. Donc, en cas d’erreur, quelle qu’elle soit, le logiciel la signale. C’est là que l’affaire se corse. Quand intervenir et que dire à l’élève ? Le concepteur de l’exercice n’a pas réellement le pouvoir de décider du moment de l’intervention. La détection de l’erreur est à la fois fonction de la méthode de construction du professeur et de l’élève. Geometrix se « débrouille » avec les 2 figures pour décider et son intervention est la plupart du temps immédiate. En revanche, le concepteur doit bien évidemment préparer la nature de l’intervention. Il dispose pour cela de plusieurs outils. Il peut afficher un message à l’écran dès que telle ou telle propriété géométrique n’a pas été respectée par l’élève, il peut intervenir oralement, il peut animer la figure de l’élève, il peut même faire apparaître sur la figure de l’élève des objets que ce dernier n’a pas construits afin de lui suggérer des pistes de recherches ou de lui rappeler certaines propriétés. On peut l’observer sur la copie d’écran ci-dessous. En haut à gauche un modèle de la figure de l’énoncé (facultatif, c’est le concepteur de l’exercice qui le décide). Il s’agit de construite le losange ABCD. A et C sont donnés. La diagonales [BD] doit mesurer 9 cm. L’élève n’a pas construit correctement le point B. Geometrix intervient en lui suggérant la médiatrice de [AC] et l’égalité des côtés [AB] et [BC].

Ces interventions peuvent se déclencher après la nième erreur ; c’ est le concepteur qui décide. Elles peuvent également être définies sous la forme de suggestions. Dans ce cas, elles sont déclenchées après un minutage ou à la demande de l’élève.

Bien évidemment, lorsque l’élève est arrivé au terme de sa construction, un message l’avertit et lui propose éventuellement, là encore c’est un choix du concepteur, de voir la solution de son professeur si elle est différente. (Ce n’est pas la figure construite par le professeur que l’élève voit alors mais la sienne reconstruite avec la méthode du professeur).

De cette façon nous sommes assurés que le logiciel saura intervenir sur le travail de l’élève, à tout moment, quelle que soit son erreur. Nous sommes donc en possession d’une plate-forme qui autorise toutes sortes de déclinaisons pédagogiques. Travail individuel en classe avec l’aide de l’enseignant qui se tient alors derrière ses élèves et non pas exclusivement face à eux, en frontal, aux commandes d’un logiciel destiné à révéler les mystères de la géométrie au cours de contemplations groupées. Travaux de groupes avec comparaison des solutions des uns et des autres. Ensembles d’exercices libres organisés sous la forme d’un parcours à effectuer sur un moyen terme. Entraînement à la maison. Bref, les travaux dirigés, les travaux pratiques, les expériences de mathématiques sont fortement encouragés par l’usage d’un tel logiciel ; le travail en autonomie également avec en retour une exploitation en classe du travail des uns et des autres. Certes les inégalités numériques pèsent alors de tout leur poids, inégalités sociales, inégalités entre les régions. C’est un autre débat. Sur ce point la gratuité définitive du logiciel et son portage prochain sous Linux constituent une réponse partielle mais certes très modeste.

Un exemple d’utilisation du logiciel dans un environnement propice est le suivant. L’Académie de Lille a mis en place le concept pupitre. Chaque collège dispose d’une salle (environ 25 postes pilotés par un poste maître) et pour un tiers d’entre eux à très court terme, de 3 salles. Je passe sur toutes les fonctionnalités dont on dispose alors car ce serait nous entraîner trop loin du sujet. Quelques établissements bien organisés ouvrent la salle de 8H à 18H. Si la salle n’est pas utilisée par la classe pupitre officielle (en général une ou deux sixièmes), une autre classe peut y venir et si aucune classe ne s’y trouve, les élèves en permanence peuvent s’y rendre et y travailler en autonomie sous la responsabilité d’un assistant d’éducation. Des postes supplémentaires sont aussi à la disposition des élèves au CDI. Il est possible de se connecter de chez soi sur son espace de travail personnel conservé sur le serveur de l’établissement. Bref des conditions intéressantes de travail apparaissent et laissent envisager la possibilité de rendre les élèves beaucoup plus actifs. C’est dans ce type d’environnement par exemple que l’on peut donc organiser avec Géométrix toutes sortes d’activités de résolutions de problèmes planifiées sur un parcours.

III Le module de démonstration

Qu’en est-il du module de démonstration de Géométrix ? Vu du côté de l’élève, la séance de travail se déroule de la façon suivante. Après sélection d’un exercice, il doit construire la figure en regard de l’énoncé, puis après validation par Géométrix il peut entreprendre sa démonstration. L’élève raisonne sur la figure qu’il a lui même construite. Pour avancer dans son raisonnement il dispose de l’écran suivant :

A gauche une fenêtre avec à la figure qu’il a construite. Certains objets qu’il n’a pas nécessairement construits apparaîtront automatiquement. C’est le cas ici. Les 2 droites n’ont pas été construites par l’élève mais le fait d’avoir sélectionné une proposition qui les mentionne suffit à les faire apparaître. Une autre fenêtre contient les hypothèses de l’énoncé, hypothèses correspondant à la partie de la figure construite bien évidemment.

A droite une fenêtre contient l’ensemble des théorèmes mis à la disposition de l’élève. C’est le choix du concepteur de l’exercice.

Dans les anciennes versions de Géométrix, le concepteur de l’exercice avait tapé dans l’éditeur les théorèmes qu’il mettait à la disposition de l’élève. La syntaxe était libre ; l’analyseur syntaxique était capable de recompiler l’ensemble sous la forme d’un calcul propositionnel que le moteur d’inférences traîtait ensuite. Dans la nouvelle version, le professeur laisse faire Géométrix qui génère automatiquement tous les raisonnements menant à la démonstration voulue. Il peut ensuite, éventuellement, en modifier librement la rédaction et faire disparaître ce qui est inutile. Les théorèmes qui apparaissent dans cette fenêtre peuvent donc se limiter aux seuls nécessaires à la résolution du problème.

Enfin, une dernière fenêtre en bas à droite, contient l’ensemble des propositions démontrables compte tenu des hypothèses et des théorèmes disponibles.

Pour faire un pas de raisonnement, l’élève sélectionne une ou plusieurs hypothèses, sélectionne la proposition qu’il souhaite démontrer et enfin le théorème à appliquer. En appliquant le théorème, une fenêtre apparaît dans laquelle on lui résume le pas de raisonnement qu’il vient de construire. A lui de le confirmer ou de l’infirmer.

S’il confirme et si son pas de raisonnement est valide alors la proposition qui se trouvait à droite de l’écran passe à gauche dans le cadre des hypothèses.

De cette façon il avancera progressivement vers la solution. Evidemment les erreurs de raisonnement sont traitées et il se verra proposer éventuellement d’autres solutions au terme de son raisonnement.

Du côté professeur, le générateur de problème de démonstration se présente de façon très simplifiée par rapport à toutes les versions antérieures. Ce module est encore en phase bêta de développement jusqu’en Décembre 2006 mais il est d’ores et déjà utilisable à 90%. Pour générer un exercice de démonstration, le concepteur construit la figure puis il lance le module de raisonnement automatique. Première phase : Touche F1, Géométrix génère les hypothèses qui correspondent à l’énoncé. La figure apparaît en filigrane. Les hypothèses sont classés en deux groupes. Celles que l’élève verra et sera obligé de sélectionner pour avancer dans son raisonnement et les autres, qui lui seront cachées mais indispensables au système pour résoudre le problème. On peut faire passer une hypothèse d’un groupe à l’autre.

Deuxième phase : Touche F3, recherche par Géométrix de tout ce qui est démontrable compte tenu de la base de théorèmes sélectionnées. A l’heure actuelle, Géométrix connaît un peu plus de 300 theorèmes de niveau collège que l’on peut afficher en cliquant sur l’onglet « Base de theorèmes ». C’est là que le concepteur de l’exercice pourra inhiber l’usage de tel ou tel théorème et même se constituer un modèle pour un niveau de classe. Une autre approche consiste à laisser faire Géométrix en inhibant éventuellement seulement quelques groupes de théorèmes, par exemple tout ce qui concerne la trigonométrie, ou le raisonnement sur les angles etc... L’interface est la suivante :

Cette approche est plus confortable mais elle a l’inconvénient d’aboutir parfois à la démonstration d’un très grand nombre de propositions sans intérêt en regard de l’énoncé. On peut assez facilement les faire disparaître. On peut aussi en laisser un certain nombre. L’élève aura alors la possibilité de faire des démonstrations inutiles en regard du problème posé ; ce qui peut être voulu par le concepteur sachant que Géométrix saura signaler à l’élève ses pas de raisonnement inutiles.

Que se passe-t-il lorsque Géométrix a terminé sa démonstration ?

Dans la colonne de gauche apparaissent toutes les propositions démontrées. Elles peuvent l’avoir été de plusieurs manières. Pour suivre le raisonnement de Géométrix il suffit de cliquer sur une quelconque de ces propositions. Si l’on souhaite exclure une solution, un clic sur le pas de raisonnement utilisé par le logiciel permettra de l’exclure ou même d’exclure tout usage du théorème. Le logiciel met alors à jour tout le raisonnement qu’il a effectué. Le plus souvent Géométrix démontre de très nombreuses propositions, plusieurs milliers en quelques minutes sur une figure composées de quelques points. Le concepteur de l’exercice dispose heureusement d’un certain nombre d’outils d’élagage des arbres de preuves qui permettent de ramener l’exercice à taille humaine. Il peut aussi intervenir directement sur le raisonnement du logiciel en le complétant manuellement et en usant d’une syntaxe libre. Un deuxième moteur d’inférences viendra vérifier la cohérence de ce raisonnement et l’intégrera dans la partie déjà faite.

IV Où il est question de programmation et d’entraide.

Géométrix est le fruit d’un travail de très longue haleine. Ce sont quinze années de développement avec des pauses entre 1998 et 2003. La toute première version (Hypothèses) est sortie en 1992 ; sous DOS, intégralement écrite en Turbo Prolog à l’exception de quelques dizaines de lignes en C ; absolument tout avait été conçu pour tourner sous 500 Ko. Un cauchemar, un enfer, mais quelle école ! Bien entendu, le logiciel ne disposait pas à l’époque de toutes les fonctionnalités de cette nouvelle version mais les 2 modules principaux, vérification de la figure de l’élève et vérification du raisonnement, étaient déjà fonctionnels. A partir de 1993, l’arrivée du premier système RAD sur PC (Visual Basic) a tout de suite permis d’envisager un développement infiniment plus rapide de l’interface homme-machine. Mais l’interface n’est que la partie émergée de l’iceberg et ne pose d’ailleurs avec un système RAD absolument aucun problème. Comment développer rapidement et confortablement l’essentiel, c’est à dire cet ensemble d’algorithmes traitant de problèmes manifestement composé d’espaces de nature très différente (analyseurs syntaxiques, analyseur algébrique, grapheur et surtout moteurs d’inférences et module de vérification de la figure, le tout interconnecté et interdépendant). Comment développer rapidement de façon incrémentale plusieurs prototypes, quel outil pour s’affranchir des milliers de détails infimes qui bouchent l’horizon du développeur prisonnier des contraintes imposées par les langages de type impératif. A mon sens, on ne peut pas envisager le développement d’un tel logiciel sans faire appel à des langages de programmation dits de haut niveau. Les langages impératifs, C, Pascal, VB (à l’heure actuelle Java est très tendance) compliquent infiniment la tâche et toutes les couches objets que l’on y ajoute (C++, Delphi, Vbnet) à grand renfort de pub (et pour cause ! ) ne changent absolument rien à l’affaire quand il s’agit de résoudre des problèmes de la nature de ceux auxquels on est confronté ici.

L’essentiel étant déjà écrit en Prolog , langage dit de très haut niveau et en l’occurrence parfaitement adapté à la problématique, c’est avec lui que j’ai poursuivi non sans au préalable devoir définir un environnement de développement spécifique permettant d’embarquer Prolog dans VB. Enfin Python qui a superficiellement un petit air de Lisp, est venu renforcer l’ensemble ; c’est un langage disposant d’une gigantesque bibliothèque de fonctions, libres de droits, développées par une communauté active et experte, qui par certains côtés annonce les méthodes de travail à venir, fondées sur la coopération et non sur la concurrence. Intégrer Python dans un autre langage est un jeu d’enfant.

Pour conclure sur ce point, je crois bien que sans Prolog, PROgrammation LOGique (pour les anglais pince sans rire, PRObably the Language Of God), je n’aurais jamais pu trouver rapidement les algorithmes, les mettre au point et les implémenter. On voudra bien me pardonner cette petite tendresse publicitaire à l’égard d’un langage de programmation magnifique. (Ci-dessous, en fin d’article, quelques lignes qui tentent d’expliquer brièvement en quoi la famille des langages logiques est unique).

La décision de développer sous Linux a longtemps été retardée par la lourdeur extrême des outils de développement de type GUI (interface graphique) disponibles alors sous cet OS. D’ailleurs à cette époque et longtemps encore après, le seul sujet de conversation avec un Linuxien tournait autour de la ligne de commande dont la maîtrise semblait particulièrement grisante. Ce n’est plus le cas. Pas pour la ligne de commande qui reste bien entendu tout aussi fascinante mais pour l’interface homme-machine qui maintenant existe. L’avenir de Géométrix à court terme est donc le suivant. Simultanément à la réécriture intégrale du logiciel sous Linux dans un environnement de développement indépendant des plates-formes, il me faudra augmenter progressivement la puissance de résolution du principal moteur d’inférences en augmentant sa base de connaissances et en introduisant un module capable d’apprendre. Je projette aussi l’introduction d’un module d’analyse automatique du langage naturel, future interface entre l’élève et le module de démonstration automatique. C’est ce futur module, qui me trotte dans la tête depuis 10 ans, que j’ai tant hâte de développer. C’est lui qui autorisera l’élève à écrire son raisonnement et l’analysera.

Le développement de Géometrix s’appuie aussi de plus en plus sur un travail collaboratif. Ce fut pratiquement le cas dès le départ puisque c’est à la suite de cours de programmation (en Prolog) à l’intention de professeurs de mathématiques que le projet a pris forme, de façon fortuite, alors que je travaillais sur un générateur de système expert. Sans leurs conseils, sans leurs suggestions, sans les nombreuses heures passées à observer leurs élèves, rien n’aurait été possible. Depuis quelques mois, ce sont Franck Jarnier et Régis Deleuze qui ont été les principaux artisans des changements notamment en ce qui concerne le module de construction géométrique que j’avais laissé à l’abandon en 1998. Qu’ils en soient chaleureusement remerciés ici.


ps

Prolog, un langage pas comme les autres

Je vais tenter en quelques lignes de montrer l’une des caractéristiques fondamentales de la programmation en Prolog. Nous partons du problème suivant. Je veux une « routine » qui remplace toutes les occurrences d’un mot par un autre dans une liste.

Une liste de mots est représentée entre « [] ». Par exemple [a,b,c]. Un nom de variable commence toujours par une majuscule. Pour « lancer la routine », en fait je devrais plutôt écrire « pour poser la question », j’écris :
remplacer (b,a,[a,b,c],L)
qui signifie quelle est la valeur de L lorsqu’on remplace toutes les occurrences de b par a.
Prolog répond : L=[a,a,c]. On dit qu’il instancie la variable L.

Comment résoudre ce problème ?

En le décrivant tout simplement sous forme d’équations logiques. Une équation par cas.

Commençons par le plus simple. Remplacer les occurrences dans une liste vide. Facile. La réponse c’est une liste vide. Je décris (sous forme d’équation) la situation ; puis je résous.

- La liste est vide :

  1. remplacer (MotAnc,Motnv,[]
  2. L = []

Télécharger

Il reste 2 cas à traiter. Le mot à remplacer est le premier de la liste. Il n’est pas le premier de la liste. Le signe « | » sert à séparer la tête de la liste du reste.

- Premier de la liste :

  1. remplacer (MotAnc,Motnv,[MotAnc|Reste]
  2. L = [Motnv|Reste]

Télécharger


Oui mais comme on n’a pas traité Reste, traitons le en posant une nouvelle équation logique, à savoir :
remplacer (MotAnc,Motnv,Reste,LeResteTraité)
Et donc nous aurons L = [Motnv|LeresteTraité]

- Il n’est pas le premier de la liste :

  1. remplacer (MotAnc,Motnv,[Mot|Reste] avec Mot <> MotAnc
  2. L = [Mot|Reste]

Télécharger

Comme dans le cas précédent. Il faut aussi résoudre dans Reste et nous posons
remplacer (MotAnc,Motnv,Reste,LeResteTraité) . Et donc nous aurons L = [Mot|LeresteTraité]

Ce qui s’écrit en Prolog (on lira «  :- » comme le synonyme de si ) :

  1. % cas 1
  2. remplacer(MotAnc,Motnv,[],[]).
  3. % cas 2
  4. remplacer(MotAnc,Motnv,[MotAnc|Q],[Motnv|R]) :-
  5. remplacer(MotAnc,Motnv,Q,R).
  6. % cas 3
  7. remplacer(MotAnc,Motnv,[Mot|Q],[Mot|R]) :-
  8. MotAnc\==Mot,
  9. remplacer(MotAnc,Motnv,Q,R).

Télécharger

Ce n’est pas tout. Il y a une prime.

Si je pose l’équation logique remplacer (b,a,[a,b,c],L),  Prolog répond : L=[a,a,c]. Et si je pose l’inconnue ailleurs que se passe-t-il ?

remplacer(b,X,[a,b,c],[a,g,c]), Prolog répond X=g

Ce qui correspond en fait à la question : entres les deux listes [a,b,c] et [a,g,c] quel mot a remplacé b ?

Et si j’ai deux inconnues ?

remplacer(Y,X,[a,b,c],[a,g,c]), Prolog répond X=g , Y = b.

Ce qui correspond à la question : entres les deux listes [a,b,c] et [a,g,c] quel mot a remplacé quel mot ?

En fait, en Prolog, on obtient toujours plus que ce que l’on avait prévu au départ. Sans compter les bugs.

A ce stade du cours, j’obtenais (il y a 20 ans) une syncope générale du public pourtant très averti dans l’art de programmer. J’avais noté deux types de pâmoison. Le premier, de simples vapeurs dues à la perte de tous les repères habituels acquis dans les cours d’algorithmique. Le deuxième était du à un excès de béatitude ; le patient entrevoyait le nirvana.

Documents associés à l'article
  GéométriX : conception d’un exercice de construction   |   (PDF - 963.5 ko)
Réagir à cet article
Vous souhaitez compléter cet article pour un numéro futur, réagir à son contenu, demander des précisions à l'auteur ou au comité de rédaction...
À lire aussi ici
MathémaTICE est un projet
en collaboration avec
Suivre la vie du site Flux RSS 2.0  |  Espace de rédaction  |  Nous contacter  |  Site réalisé avec: SPIP  |  N° ISSN 2109-9197