par Jacques Gressier
A propos de la notion de moteur d’inférences
Cet article peut être librement diffusé à l’identique suivant la license CC-by-nd
Nous avons présenté dans un article précédent un compte rendu d’expérimentation concernant le module de construction de Géométrix. Ce lien vous conduira aux ressources développées par les collègues sous la forme d’un document pour l’enseignant et d’une batterie d’exercices pour les élèves.
Nous décrirons dans cet article les fonctionnalités principales du module de démonstration ainsi que l’environnement général dont dispose l’élève pour construire et rédiger sa démonstration.
Ecrit en Turbo Prolog et en C en 1990/1991, le module de démonstration a progressé lentement. A l’origine, le professeur devait écrire lui même en langage naturel, pour chaque exercice, les données de l’énoncé et un ensemble de théorèmes avec leurs conclusions instanciées. Le moteur d’inférences se chargeait d’en vérifier la cohérence puis d’en tirer tous les chemins possibles conduisant aux solutions. Une deuxième version du moteur d’inférences, écrite en Visual Prolog et VB, aboutit en 2004 à une automatisation partielle de la conception d’un exercice de démonstration. Le professeur construisait la figure, puis Géométrix démontrait en fonction de sa base de théorèmes tout ce qui était démontrable et recherchait toutes les solutions pour chaque but. Une dernière étape était nécessaire au cours de laquelle le concepteur de l’exercice devait intervenir sur la rédaction du raisonnement établi par Géométrix. Cette version a été décrite en 2006 dans un article de Sésamath.
La version écrite en Swi-Prolog et FreePascal/Lazarus a progressivement pris forme en 2012 pour évoluer ensuite vers son état actuel numéroté 4.1.
Cette version est fondamentalement différente tant sur le plan pédagogique que sur le plan technique. Le professeur doit savoir que le moteur d’inférences de Géométrix est par défaut activé lorsque l’élève construit la figure. Pendant cette construction, Géométrix recherche toutes les propositions démontrables de la figure en fonction de sa bibliothèque de théorèmes. Sur un processeur multi-core, ce calcul parallèle n’affectera pas les performances de Géométrix qui est alors en mesure d’afficher quasiment en temps réel les propriétés de la figure classées dans deux boîtes distinctes (figure 1).
- Figure 1
On remarque ici que l’élève a construit une série de parallèles (AG) // ( RS) et (AS) // (GR). Ces propositions apparaissent dans la boîte réservée aux données de la figure. Dans le même temps sont apparues dans la boîte réservée aux propositions démontrées celles que Géométrix a calculées. Il en est ainsi tout au long de la construction. On voit ici que l’élève peut tenter de démontrer que AGRS est un parallélogramme. Une fois la construction terminée, l’élève peut entreprendre la démonstration d’une ou plusieurs de ces propositions. Il a aussi la possibilité de changer au préalable le statut des propositions afin de se conformer exactement à l’énoncé ou pour explorer et décliner une série d’exercices. Il peut par exemple faire glisser les propositions concernant les parallèles dans la boîte des propositions démontrées et faire « monter » la proposition « AGRS est un parallélogramme » dans la boîte des données. L’objectif de l’exercice consistera alors à démontrer par exemple le parallélisme des droites.
Par un simple clic sur un bouton, l’élève pourra basculer sur une autre interface qui lui permettra de construire sa démonstration pas à pas, sous le contrôle de Géométrix (figure 2).
- Figure 2
On retrouve nos deux boîtes (données / propositions démontrables). L’élève a la possibilité de construire sa démonstration comme il l’entend. Il peut tout aussi bien commencer par glisser des données (ou des propositions non encore démontrées) dans la boîte « Conditions nécessaires » ou au contraire glisser par exemple « AGRS est un parallélogramme » dans la boîte « Ce que vous voulez démontrer » ; Géométrix s’adapte aux deux types de cheminement, chaînage arrière ou chaînage avant (cf annexe ci-dessous) et saura guider l’élève. A l’instant où l’élève laisse tomber une proposition dans une des deux boîtes, Géométrix affiche à l’écran quelques théorèmes dont au moins un pourra servir à la démonstration. (figure 3)
- Figure 3
L’étape suivante consiste à glisser l’un des théorèmes dans la boîte des théorèmes puis à sélectionner les propositions qui appartiennent aux prémisses. (figure 4)
- Figure 4
Enfin, quand l’élève aura ici ajouté à la boîte « Conditions nécessaires » la dernière condition ( (AS) parallèle à (GR) ), Géométrix validera le pas de raisonnement en en présentant un résumé. A la fin de l’exercice, l’élève pourra aussi obtenir la rédaction complète de son raisonnement dans le traitement de texte par défaut du poste de travail. Il est difficile de se représenter clairement (et favorablement) une séance de travail à partir de pages statiques, aussi ce lien vous permettra de voir tout son déroulement de façon plus précise dans une animation.
Pour une première approche, la présentation de Géométrix dans sa partie démonstration aura été ici considérablement simplifiée. Notamment, nous n’avons pas évoqué le dictionnaire dynamique de théorèmes que l’élève peut appeler à tout instant pour obtenir des explications sur le théorème sélectionné avec une illustration de celui-ci dans le contexte de l’exercice en cours. Pour aller un peu plus loin, il est nécessaire de jeter un coup d’œil sur une partie de la documentation en ligne.
La prochaine version de Géométrix (4.2 dans quelques mois) pourra exposer son moteur d’inférences dans une interface dédiée…. aux autres logiciels de Géométrie. En effet, le noyau principal a été conçu dès le départ pour être détaché sur n’importe quel serveur (interne ou web). Tout logiciel de géométrie dynamique pourra ainsi adresser ce moteur d’inférences pour obtenir une analyse logique de la figure. Le deuxième objectif, ambitieux, consiste à développer un module d’apprentissage automatique en Géométrie. En effet, le fait de disposer d’un moteur d’inférences sur un serveur permettra de multiplier ses expériences de résolution de problèmes et d’augmenter ainsi ses bases de connaissances, son pouvoir de résolution et sa vitesse. Restera à mettre aussi en relation ces serveurs Géométrix pour aller plus loin et pourquoi pas commencer à entreprendre une analyse automatique des cheminements des élèves…. mais ce ne sera pas pour la 4.2.
Annexe :
De façon informelle, le chaînage avant, au sens strict, peut être décrit ainsi. Nous avons la figure suivante : ABC est un triangle quelconque, M1, M2 et M3 sont les milieux respectifs des côtés [AB], [AC] et [BC]. Voilà ! C’est tout ce que l’on sait. Bien sûr, vous êtres professeur de mathématiques et vous pensez déjà à la droite des milieux .… certes mais on ne nous a pas dit quoi démontrer ! Alors vous partez de ce que vous avez (les données), par exemple M1 est le milieu de [AB] et parce que vous connaissez et pensez à un théorème précis vous en déduisez que AM1 = BM1. Vous en profitez pour utiliser le même théorème que vous appliquez sur les deux autres milieux. Après ce premier round que faire ? M1 et M2 sont les milieux de [AB] et [AC], on en déduit que (M1M2) est parallèle à (BC), on poursuit avec M2 et M3 et le même théorème pour démontrer que (M1M3) // (AC) et (M2M3) // (AB). Ces nouvelles propositions démontrées nous autorisent à « déclencher » le théorème permettant de démontrer que le quadrilatère non croisé AM1M3M2 est un parallélogramme etc.…. Nous continuons ainsi jusqu’à ce qu’il ne soit plus possible de démontrer de nouvelles propositions. Le moteur d’inférences qui copie cette démarche fonctionne en chaînage avant par saturation.
Supposons maintenant que nous disposions de la même figure, avec les mêmes « données » et que l’on sache cette fois-ci qu’il faut démontrer que l’angle M1M3M2 est égal à l’angle M1AM2. Le chaînage arrière consistera à sélectionner parmi tous les théorèmes démontrant l’égalité de deux angles ceux qui permettront de faire la démonstration de cette proposition. On pense à des angles alternes-internes...non... le chemin semble un peu trop tortueux.... à des angles opposés dans un parallélogramme .… AM1M3M2 est-il un parallélogramme ? …. ce n’est pas une donnée, essayons de le démontrer. Pour le démontrer, plusieurs théorèmes nous viennent à l’esprit (2 côtés opposés égaux et parallèles, 4 côtés parallèles 2 à 2 ….), choisissons (M1M3) // (AC) et (M2M3) // (AB). Avec quel théorème allons-nous démontrer que (M1M3) // (AC)….. la droite des milieux bien sûr …..les milieux M1 et M3 sont des données de l’énoncé etc.…Nous procéderons de même pour démontrer (M2M3) // (AB).