Vous êtes un classificateur de trains qui observe des trains se déplaçant soit vers l'est soit vers l'ouest.
Chaque train est composé d'un ou plusieurs wagons, et chaque wagon est caractérisé par un ensemble de propriétés, représentées comme des atomes de base sur un ensemble fixe de prédicats.
La direction (vers l'est ou vers l'ouest) d'un train doit être déterminée à partir de sa composition.

Pour décrire les trains, nous définissons un ensemble de prédicats et de domaines de base :

- 'a_wagon(Train, Wagon)' : Indique que 'Wagon' fait partie du train 'Train'.
- 'numero_wagon(Wagon, Numero)' : Indique la position du wagon dans son train. 'Numero' est un entier positif.
- 'couleur_wagon(Wagon, Couleur)' : Indique la couleur du wagon. 'Couleur' peut être 'rouge', 'bleu', 'vert', 'jaune' ou 'blanc'.
- 'longueur_wagon(Wagon, Longueur)' : Indique la longueur du wagon. 'Longueur' peut être 'court' ou 'long'.
- 'a_paroi(Wagon, TypeParoi)' : Indique le type de paroi d'un wagon. 'TypeParoi' peut être 'complet' ou 'rampe'.
- 'a_toit(Wagon, TypeToit)' : Indique le type de toit du wagon. 'TypeToit' peut être 'fondation_toit', 'toit_solide', 'toit_renforce', 'toit_pointu' ou 'aucun'.

Vous disposez d'exemples positifs et négatifs sous la forme est(t) ou ouest(t) pour chaque train t, ainsi que de faits de base décrivant sa composition sur les prédicats ci-dessus.

ouest(train0).
a_wagon(train0, wagon0_1).
numero_wagon(wagon0_1, 1).
couleur_wagon(wagon0_1, vert).
longueur_wagon(wagon0_1, court).
a_paroi(wagon0_1, complet).
a_toit(wagon0_1, toit_renforce).
a_wagon(train0, wagon0_2).
numero_wagon(wagon0_2, 2).
couleur_wagon(wagon0_2, jaune).
longueur_wagon(wagon0_2, long).
a_paroi(wagon0_2, rampe).
a_toit(wagon0_2, toit_pointu).

ouest(train1).
a_wagon(train1, wagon1_1).
numero_wagon(wagon1_1, 1).
couleur_wagon(wagon1_1, rouge).
longueur_wagon(wagon1_1, long).
a_paroi(wagon1_1, complet).
a_toit(wagon1_1, aucun).
a_wagon(train1, wagon1_2).
numero_wagon(wagon1_2, 2).
couleur_wagon(wagon1_2, rouge).
longueur_wagon(wagon1_2, long).
a_paroi(wagon1_2, rampe).
a_toit(wagon1_2, toit_renforce).
a_wagon(train1, wagon1_3).
numero_wagon(wagon1_3, 3).
couleur_wagon(wagon1_3, bleu).
longueur_wagon(wagon1_3, court).
a_paroi(wagon1_3, complet).
a_toit(wagon1_3, toit_solide).

est(train2).
a_wagon(train2, wagon2_1).
numero_wagon(wagon2_1, 1).
couleur_wagon(wagon2_1, vert).
longueur_wagon(wagon2_1, court).
a_paroi(wagon2_1, complet).
a_toit(wagon2_1, aucun).
a_wagon(train2, wagon2_2).
numero_wagon(wagon2_2, 2).
couleur_wagon(wagon2_2, jaune).
longueur_wagon(wagon2_2, long).
a_paroi(wagon2_2, complet).
a_toit(wagon2_2, fondation_toit).
a_wagon(train2, wagon2_3).
numero_wagon(wagon2_3, 3).
couleur_wagon(wagon2_3, bleu).
longueur_wagon(wagon2_3, long).
a_paroi(wagon2_3, rampe).
a_toit(wagon2_3, aucun).

ouest(train3).
a_wagon(train3, wagon3_1).
numero_wagon(wagon3_1, 1).
couleur_wagon(wagon3_1, vert).
longueur_wagon(wagon3_1, long).
a_paroi(wagon3_1, rampe).
a_toit(wagon3_1, toit_renforce).
a_wagon(train3, wagon3_2).
numero_wagon(wagon3_2, 2).
couleur_wagon(wagon3_2, blanc).
longueur_wagon(wagon3_2, long).
a_paroi(wagon3_2, rampe).
a_toit(wagon3_2, aucun).

ouest(train4).
a_wagon(train4, wagon4_1).
numero_wagon(wagon4_1, 1).
couleur_wagon(wagon4_1, rouge).
longueur_wagon(wagon4_1, court).
a_paroi(wagon4_1, rampe).
a_toit(wagon4_1, toit_renforce).
a_wagon(train4, wagon4_2).
numero_wagon(wagon4_2, 2).
couleur_wagon(wagon4_2, vert).
longueur_wagon(wagon4_2, court).
a_paroi(wagon4_2, complet).
a_toit(wagon4_2, toit_renforce).
a_wagon(train4, wagon4_3).
numero_wagon(wagon4_3, 3).
couleur_wagon(wagon4_3, vert).
longueur_wagon(wagon4_3, court).
a_paroi(wagon4_3, rampe).
a_toit(wagon4_3, toit_pointu).

est(train5).
a_wagon(train5, wagon5_1).
numero_wagon(wagon5_1, 1).
couleur_wagon(wagon5_1, jaune).
longueur_wagon(wagon5_1, court).
a_paroi(wagon5_1, rampe).
a_toit(wagon5_1, toit_pointu).
a_wagon(train5, wagon5_2).
numero_wagon(wagon5_2, 2).
couleur_wagon(wagon5_2, vert).
longueur_wagon(wagon5_2, long).
a_paroi(wagon5_2, rampe).
a_toit(wagon5_2, toit_solide).
a_wagon(train5, wagon5_3).
numero_wagon(wagon5_3, 3).
couleur_wagon(wagon5_3, bleu).
longueur_wagon(wagon5_3, court).
a_paroi(wagon5_3, rampe).
a_toit(wagon5_3, toit_solide).

est(train6).
a_wagon(train6, wagon6_1).
numero_wagon(wagon6_1, 1).
couleur_wagon(wagon6_1, blanc).
longueur_wagon(wagon6_1, court).
a_paroi(wagon6_1, complet).
a_toit(wagon6_1, toit_pointu).
a_wagon(train6, wagon6_2).
numero_wagon(wagon6_2, 2).
couleur_wagon(wagon6_2, vert).
longueur_wagon(wagon6_2, court).
a_paroi(wagon6_2, rampe).
a_toit(wagon6_2, toit_solide).
a_wagon(train6, wagon6_3).
numero_wagon(wagon6_3, 3).
couleur_wagon(wagon6_3, bleu).
longueur_wagon(wagon6_3, long).
a_paroi(wagon6_3, rampe).
a_toit(wagon6_3, toit_renforce).

est(train7).
a_wagon(train7, wagon7_1).
numero_wagon(wagon7_1, 1).
couleur_wagon(wagon7_1, vert).
longueur_wagon(wagon7_1, court).
a_paroi(wagon7_1, complet).
a_toit(wagon7_1, toit_pointu).
a_wagon(train7, wagon7_2).
numero_wagon(wagon7_2, 2).
couleur_wagon(wagon7_2, rouge).
longueur_wagon(wagon7_2, court).
a_paroi(wagon7_2, rampe).
a_toit(wagon7_2, aucun).
a_wagon(train7, wagon7_3).
numero_wagon(wagon7_3, 3).
couleur_wagon(wagon7_3, bleu).
longueur_wagon(wagon7_3, long).
a_paroi(wagon7_3, rampe).
a_toit(wagon7_3, toit_solide).


Votre tâche consiste à formuler une hypothèse sous la forme d'une règle Prolog „est(T) :- Corps.“ qui distingue correctement les trains se dirigeant vers l'est de ceux se dirigeant vers l'ouest.
L'hypothèse doit être vraie pour tous les exemples positifs (c'est-à-dire les trains étiquetés est(t)) et fausse pour tous les exemples négatifs (c'est-à-dire les trains ouest(t)).
L'objectif est de trouver la règle correcte la plus courte, c'est-à-dire celle qui utilise le nombre minimal de littéraux dans le corps sans perdre de conditions nécessaires.
Votre règle ne peut utiliser que les prédicats définis dans l'ouverture ci-dessus et doit parfaitement séparer les trains vers l'est des trains vers l'ouest.
est(Train):- a_wagon(Train, Wagon1), couleur_wagon(Wagon1, bleu), a_paroi(Wagon1, rampe).
ouest(train0).
a_wagon(train0, wagon0_1).
numero_wagon(wagon0_1, 1).
couleur_wagon(wagon0_1, vert).
longueur_wagon(wagon0_1, court).
a_paroi(wagon0_1, complet).
a_toit(wagon0_1, toit_renforce).
a_wagon(train0, wagon0_2).
numero_wagon(wagon0_2, 2).
couleur_wagon(wagon0_2, jaune).
longueur_wagon(wagon0_2, long).
a_paroi(wagon0_2, rampe).
a_toit(wagon0_2, toit_pointu).

ouest(train1).
a_wagon(train1, wagon1_1).
numero_wagon(wagon1_1, 1).
couleur_wagon(wagon1_1, rouge).
longueur_wagon(wagon1_1, long).
a_paroi(wagon1_1, complet).
a_toit(wagon1_1, aucun).
a_wagon(train1, wagon1_2).
numero_wagon(wagon1_2, 2).
couleur_wagon(wagon1_2, rouge).
longueur_wagon(wagon1_2, long).
a_paroi(wagon1_2, rampe).
a_toit(wagon1_2, toit_renforce).
a_wagon(train1, wagon1_3).
numero_wagon(wagon1_3, 3).
couleur_wagon(wagon1_3, bleu).
longueur_wagon(wagon1_3, court).
a_paroi(wagon1_3, complet).
a_toit(wagon1_3, toit_solide).

est(train2).
a_wagon(train2, wagon2_1).
numero_wagon(wagon2_1, 1).
couleur_wagon(wagon2_1, vert).
longueur_wagon(wagon2_1, court).
a_paroi(wagon2_1, complet).
a_toit(wagon2_1, aucun).
a_wagon(train2, wagon2_2).
numero_wagon(wagon2_2, 2).
couleur_wagon(wagon2_2, jaune).
longueur_wagon(wagon2_2, long).
a_paroi(wagon2_2, complet).
a_toit(wagon2_2, fondation_toit).
a_wagon(train2, wagon2_3).
numero_wagon(wagon2_3, 3).
couleur_wagon(wagon2_3, bleu).
longueur_wagon(wagon2_3, long).
a_paroi(wagon2_3, rampe).
a_toit(wagon2_3, aucun).

ouest(train3).
a_wagon(train3, wagon3_1).
numero_wagon(wagon3_1, 1).
couleur_wagon(wagon3_1, vert).
longueur_wagon(wagon3_1, long).
a_paroi(wagon3_1, rampe).
a_toit(wagon3_1, toit_renforce).
a_wagon(train3, wagon3_2).
numero_wagon(wagon3_2, 2).
couleur_wagon(wagon3_2, blanc).
longueur_wagon(wagon3_2, long).
a_paroi(wagon3_2, rampe).
a_toit(wagon3_2, aucun).

ouest(train4).
a_wagon(train4, wagon4_1).
numero_wagon(wagon4_1, 1).
couleur_wagon(wagon4_1, rouge).
longueur_wagon(wagon4_1, court).
a_paroi(wagon4_1, rampe).
a_toit(wagon4_1, toit_renforce).
a_wagon(train4, wagon4_2).
numero_wagon(wagon4_2, 2).
couleur_wagon(wagon4_2, vert).
longueur_wagon(wagon4_2, court).
a_paroi(wagon4_2, complet).
a_toit(wagon4_2, toit_renforce).
a_wagon(train4, wagon4_3).
numero_wagon(wagon4_3, 3).
couleur_wagon(wagon4_3, vert).
longueur_wagon(wagon4_3, court).
a_paroi(wagon4_3, rampe).
a_toit(wagon4_3, toit_pointu).

est(train5).
a_wagon(train5, wagon5_1).
numero_wagon(wagon5_1, 1).
couleur_wagon(wagon5_1, jaune).
longueur_wagon(wagon5_1, court).
a_paroi(wagon5_1, rampe).
a_toit(wagon5_1, toit_pointu).
a_wagon(train5, wagon5_2).
numero_wagon(wagon5_2, 2).
couleur_wagon(wagon5_2, vert).
longueur_wagon(wagon5_2, long).
a_paroi(wagon5_2, rampe).
a_toit(wagon5_2, toit_solide).
a_wagon(train5, wagon5_3).
numero_wagon(wagon5_3, 3).
couleur_wagon(wagon5_3, bleu).
longueur_wagon(wagon5_3, court).
a_paroi(wagon5_3, rampe).
a_toit(wagon5_3, toit_solide).

est(train6).
a_wagon(train6, wagon6_1).
numero_wagon(wagon6_1, 1).
couleur_wagon(wagon6_1, blanc).
longueur_wagon(wagon6_1, court).
a_paroi(wagon6_1, complet).
a_toit(wagon6_1, toit_pointu).
a_wagon(train6, wagon6_2).
numero_wagon(wagon6_2, 2).
couleur_wagon(wagon6_2, vert).
longueur_wagon(wagon6_2, court).
a_paroi(wagon6_2, rampe).
a_toit(wagon6_2, toit_solide).
a_wagon(train6, wagon6_3).
numero_wagon(wagon6_3, 3).
couleur_wagon(wagon6_3, bleu).
longueur_wagon(wagon6_3, long).
a_paroi(wagon6_3, rampe).
a_toit(wagon6_3, toit_renforce).

est(train7).
a_wagon(train7, wagon7_1).
numero_wagon(wagon7_1, 1).
couleur_wagon(wagon7_1, vert).
longueur_wagon(wagon7_1, court).
a_paroi(wagon7_1, complet).
a_toit(wagon7_1, toit_pointu).
a_wagon(train7, wagon7_2).
numero_wagon(wagon7_2, 2).
couleur_wagon(wagon7_2, rouge).
longueur_wagon(wagon7_2, court).
a_paroi(wagon7_2, rampe).
a_toit(wagon7_2, aucun).
a_wagon(train7, wagon7_3).
numero_wagon(wagon7_3, 3).
couleur_wagon(wagon7_3, bleu).
longueur_wagon(wagon7_3, long).
a_paroi(wagon7_3, rampe).
a_toit(wagon7_3, toit_solide).


ouest -51 1 vert court complet toit_renforce 2 jaune long rampe toit_pointu
ouest 4 1 rouge long complet aucun 2 rouge long rampe toit_renforce 3 bleu court complet toit_solide
est 156 1 vert court complet aucun 2 jaune long complet fondation_toit 3 bleu long rampe aucun
ouest -28 1 vert long rampe toit_renforce 2 blanc long rampe aucun
ouest -22 1 rouge court rampe toit_renforce 2 vert court complet toit_renforce 3 vert court rampe toit_pointu
est 214 1 jaune court rampe toit_pointu 2 vert long rampe toit_solide 3 bleu court rampe toit_solide
est 230 1 blanc court complet toit_pointu 2 vert court rampe toit_solide 3 bleu long rampe toit_renforce
est 187 1 vert court complet toit_pointu 2 rouge court rampe aucun 3 bleu long rampe toit_solide