Station MinuitExplorer, comprendre, pratiquer

RAISONNEMENT — Raisonner et résoudreAutomne 2026

Semaine 7 — Logique et raisonnement : récursion et listes Prolog

6. Si-alors-sinon

LECTURE 08 / 123 repèresCouverture déclarée complète
Sommaire de cet article
  1. 6. Si-alors-sinon
  2. 6.1 Écriture et choix de méthode
  3. 6.2 Véhicules, sélecteur et contraintes partagées
Autres lectures de cette unité
  1. Couverture et repères
  2. Table des matières
  3. 1. Progression et objectifs
  4. 2. Relier les formalismes
  5. 3. Unification, arithmétique et comparaison
  6. 4. Récursion et recherche
  7. 5. Listes et prédicats fondamentaux
  8. 6. Si-alors-sinon
  9. 7. Exercices corrigés et raisonnements
  10. 8. Acquis et points de vigilance
  11. 9. Actions personnelles et évaluations
  12. 10. Carte des sources et limites
Couverture et sources

6. Si-alors-sinon

6.1 Écriture et choix de méthode

Code (prolog) · sélectionner pour copier

relation(...) :-
    ( Condition
    -> Alors
    ;  Sinon
    ).

Il s’agit d’un schéma : les points de suspension doivent être remplacés par de vrais arguments et buts. Une condition réussie choisit la branche Alors; sinon, la branche Sinon. -> s’engage sur le premier succès de la condition; si la branche choisie échoue ensuite, cela ne fait pas automatiquement basculer vers Sinon.

Plusieurs buts d’une branche se combinent avec des virgules et se regroupent clairement : (Condition -> (A1,A2) ; (S1,S2)). Sans branche Sinon, (Condition -> Alors) échoue lorsque la condition échoue. La vidéo conseille de commencer par les formes simples.

L’enseignante autorise les solutions par plusieurs clauses ou par si-alors-sinon et n’impose pas l’une des deux pour ces exercices. La vidéo de conseils indique qu’en maîtriser une suffit pour ce type de travail, sous réserve des restrictions expressément indiquées dans une question d’examen. Les deux versions de l’intersection sont développées en §7.2.

6.2 Véhicules, sélecteur et contraintes partagées

Base de l’exemple :

Code (prolog) · sélectionner pour copier

possede(julie,auto,rouge).
possede(jean,auto,rouge).
possede(jean,auto,verte).
possede(marc,auto,rouge).
possede(jean,bicycle,rouge).
possede(nathalie,auto,noire).
possede(julie,bicycle,blanc).

Version par clauses :

Code (prolog) · sélectionner pour copier

v_poss(1,X) :- possede(X,bicycle,Y).
v_poss(2,X) :- possede(X,bicycle,Y), possede(X,auto,Y).
v_poss(R,X) :- R>2, possede(X,auto,Y).

Pour 1, chercher les propriétaires d’un vélo; pour 2, chercher ceux qui ont un vélo et une auto; pour un sélecteur supérieur à 2, ceux qui ont une auto. Le code du cas 2 impose en plus la même couleur Y aux deux véhicules. Jean satisfait cette condition avec rouge; Julie ne la satisfait pas, car son vélo est blanc et son auto rouge. Bien que l’oral dise ne pas utiliser la couleur, la répétition de Y constitue une contrainte réelle. Deux variables de couleur distinctes exprimeraient la possession des deux véhicules sans exiger une couleur commune.

Version conditionnelle du support, mise en forme :

Code (prolog) · sélectionner pour copier

v_poss_bis(R,X) :-
    ( R=1
    -> possede(X,bicycle,Y)
    ; R=2
    -> possede(X,bicycle,Y), possede(X,auto,Y)
    ;  possede(X,auto,Y)
    ).

Pour un entier fixé au moins égal à 1, on retrouve les cas prévus. Mais le dernier Sinon ne teste plus R>2 : avec R=0, la première version échoue et la deuxième cherche les propriétaires d’auto. Avec R libre, R=1 est une unification qui la lie à 1 et engage cette branche; il ne s’agit pas d’un simple test numérique sur une valeur déjà donnée. L’oral suppose des entrées positives; préciser le contrat évite de généraliser l’équivalence des deux écritures à tous les appels.

Retour au sommaire de l’unitéHaut de page
Récupérer manuellement les données locales

Copier séparément les données ci-dessous dans des fichiers texte avant de fermer la page ou de modifier le stockage. Une valeur illisible ou incompatible reste en place. Aucun effacement ni rétablissement écrasant n’est effectué automatiquement. L’export/import JSON est disponible sur la page Progression du thème. Cette récupération séparée reste utile pour une valeur brute ou un conflit.

Clé de ce cours : . Format v1 porté par cette clé; dates UTC et identifiants durables.

Si l’accès est refusé, la valeur persistée peut rester inaccessible. Réautoriser le stockage dans le navigateur puis rouvrir ce cours permet de la relire. Une réinitialisation exige une décision explicite après récupération; aucune commande de suppression n’est proposée ici. Les données restent sur cette origine et cet appareil, sans transfert automatique.