Du bist ein Zugklassifizierer, der Züge beobachtet, die entweder nach Osten oder nach Westen fahren.
Jeder Zug besteht aus einem oder mehreren Wagen, und jeder Wagen ist durch eine Menge von Eigenschaften charakterisiert, die als Grundatome über eine feste Menge von Prädikaten dargestellt werden.
Die Fahrtrichtung (nach Osten oder nach Westen) eines Zuges soll aus seiner Zusammensetzung bestimmt werden.

Um die Züge zu beschreiben, definieren wir eine Menge von Prädikaten und Grunddomänen (Wertebereiche):

- 'hat_wagen(Zug, Wagen)': Gibt an, dass 'Wagen' Teil des Zuges 'Zug' ist.
- 'wagen_nummer(Wagen, WagenNummer)': Gibt die Position des Wagens innerhalb seines Zuges an. 'WagenNummer' ist eine positive ganze Zahl.
- 'wagen_farbe(Wagen, Farbe)': Gibt die Farbe des Wagens an. 'Farbe' kann 'rot', 'blau', 'gruen', 'gelb' oder 'weiss' sein.
- 'wagen_laenge(Wagen, Laenge)': Gibt die Länge des Wagens an. 'Laenge' kann entweder 'kurz' oder 'lang' sein.
- 'hat_wand(Wagen, WandTyp)': Gibt den Wandtyp eines Wagens an. 'WandTyp' kann entweder 'voll' oder 'gelaender' sein.
- 'hat_dach(Wagen, DachTyp)': Gibt den Dachtyp des Wagens an. 'DachTyp' kann 'dach_fundament', 'festes_dach', 'verstrebtes_dach', 'spitzdach' oder 'keine' sein.
- 'hat_rad(Wagen, RadAnzahl)': Gibt die Anzahl der Radsätze des Wagens an. 'RadAnzahl' kann entweder '2' oder '3' sein.

Du erhältst positive und negative Beispiele in der Form ost(t) oder west(t) für jeden Zug t, zusammen mit Hintergrundwissen, das aus Grundfakten über die obigen Prädikate besteht und seine Zusammensetzung beschreibt.

west(zug0).
hat_wagen(zug0, wagen0_1).
wagen_nummer(wagen0_1, 1).
wagen_farbe(wagen0_1, gelb).
wagen_laenge(wagen0_1, kurz).
hat_wand(wagen0_1, voll).
hat_dach(wagen0_1, spitzdach).
hat_rad(wagen0_1, 2).
hat_wagen(zug0, wagen0_2).
wagen_nummer(wagen0_2, 2).
wagen_farbe(wagen0_2, gelb).
wagen_laenge(wagen0_2, kurz).
hat_wand(wagen0_2, gelaender).
hat_dach(wagen0_2, spitzdach).
hat_rad(wagen0_2, 2).
hat_wagen(zug0, wagen0_3).
wagen_nummer(wagen0_3, 3).
wagen_farbe(wagen0_3, blau).
wagen_laenge(wagen0_3, kurz).
hat_wand(wagen0_3, voll).
hat_dach(wagen0_3, dach_fundament).
hat_rad(wagen0_3, 2).

west(zug1).
hat_wagen(zug1, wagen1_1).
wagen_nummer(wagen1_1, 1).
wagen_farbe(wagen1_1, gruen).
wagen_laenge(wagen1_1, kurz).
hat_wand(wagen1_1, gelaender).
hat_dach(wagen1_1, spitzdach).
hat_rad(wagen1_1, 2).
hat_wagen(zug1, wagen1_2).
wagen_nummer(wagen1_2, 2).
wagen_farbe(wagen1_2, gelb).
wagen_laenge(wagen1_2, kurz).
hat_wand(wagen1_2, gelaender).
hat_dach(wagen1_2, keine).
hat_rad(wagen1_2, 2).
hat_wagen(zug1, wagen1_3).
wagen_nummer(wagen1_3, 3).
wagen_farbe(wagen1_3, gruen).
wagen_laenge(wagen1_3, kurz).
hat_wand(wagen1_3, voll).
hat_dach(wagen1_3, keine).
hat_rad(wagen1_3, 2).

west(zug2).
hat_wagen(zug2, wagen2_1).
wagen_nummer(wagen2_1, 1).
wagen_farbe(wagen2_1, rot).
wagen_laenge(wagen2_1, kurz).
hat_wand(wagen2_1, gelaender).
hat_dach(wagen2_1, verstrebtes_dach).
hat_rad(wagen2_1, 2).
hat_wagen(zug2, wagen2_2).
wagen_nummer(wagen2_2, 2).
wagen_farbe(wagen2_2, rot).
wagen_laenge(wagen2_2, kurz).
hat_wand(wagen2_2, gelaender).
hat_dach(wagen2_2, festes_dach).
hat_rad(wagen2_2, 2).

west(zug3).
hat_wagen(zug3, wagen3_1).
wagen_nummer(wagen3_1, 1).
wagen_farbe(wagen3_1, blau).
wagen_laenge(wagen3_1, kurz).
hat_wand(wagen3_1, voll).
hat_dach(wagen3_1, keine).
hat_rad(wagen3_1, 2).
hat_wagen(zug3, wagen3_2).
wagen_nummer(wagen3_2, 2).
wagen_farbe(wagen3_2, weiss).
wagen_laenge(wagen3_2, lang).
hat_wand(wagen3_2, gelaender).
hat_dach(wagen3_2, dach_fundament).
hat_rad(wagen3_2, 3).

ost(zug4).
hat_wagen(zug4, wagen4_1).
wagen_nummer(wagen4_1, 1).
wagen_farbe(wagen4_1, gruen).
wagen_laenge(wagen4_1, lang).
hat_wand(wagen4_1, voll).
hat_dach(wagen4_1, spitzdach).
hat_rad(wagen4_1, 3).
hat_wagen(zug4, wagen4_2).
wagen_nummer(wagen4_2, 2).
wagen_farbe(wagen4_2, blau).
wagen_laenge(wagen4_2, kurz).
hat_wand(wagen4_2, voll).
hat_dach(wagen4_2, spitzdach).
hat_rad(wagen4_2, 2).
hat_wagen(zug4, wagen4_3).
wagen_nummer(wagen4_3, 3).
wagen_farbe(wagen4_3, rot).
wagen_laenge(wagen4_3, kurz).
hat_wand(wagen4_3, gelaender).
hat_dach(wagen4_3, spitzdach).
hat_rad(wagen4_3, 2).

west(zug5).
hat_wagen(zug5, wagen5_1).
wagen_nummer(wagen5_1, 1).
wagen_farbe(wagen5_1, gelb).
wagen_laenge(wagen5_1, kurz).
hat_wand(wagen5_1, gelaender).
hat_dach(wagen5_1, festes_dach).
hat_rad(wagen5_1, 2).
hat_wagen(zug5, wagen5_2).
wagen_nummer(wagen5_2, 2).
wagen_farbe(wagen5_2, gruen).
wagen_laenge(wagen5_2, lang).
hat_wand(wagen5_2, gelaender).
hat_dach(wagen5_2, dach_fundament).
hat_rad(wagen5_2, 2).
hat_wagen(zug5, wagen5_3).
wagen_nummer(wagen5_3, 3).
wagen_farbe(wagen5_3, gelb).
wagen_laenge(wagen5_3, kurz).
hat_wand(wagen5_3, gelaender).
hat_dach(wagen5_3, festes_dach).
hat_rad(wagen5_3, 2).

west(zug6).
hat_wagen(zug6, wagen6_1).
wagen_nummer(wagen6_1, 1).
wagen_farbe(wagen6_1, weiss).
wagen_laenge(wagen6_1, lang).
hat_wand(wagen6_1, voll).
hat_dach(wagen6_1, verstrebtes_dach).
hat_rad(wagen6_1, 2).
hat_wagen(zug6, wagen6_2).
wagen_nummer(wagen6_2, 2).
wagen_farbe(wagen6_2, rot).
wagen_laenge(wagen6_2, kurz).
hat_wand(wagen6_2, voll).
hat_dach(wagen6_2, keine).
hat_rad(wagen6_2, 2).

ost(zug7).
hat_wagen(zug7, wagen7_1).
wagen_nummer(wagen7_1, 1).
wagen_farbe(wagen7_1, blau).
wagen_laenge(wagen7_1, lang).
hat_wand(wagen7_1, voll).
hat_dach(wagen7_1, keine).
hat_rad(wagen7_1, 3).
hat_wagen(zug7, wagen7_2).
wagen_nummer(wagen7_2, 2).
wagen_farbe(wagen7_2, gelb).
wagen_laenge(wagen7_2, kurz).
hat_wand(wagen7_2, gelaender).
hat_dach(wagen7_2, spitzdach).
hat_rad(wagen7_2, 2).
hat_wagen(zug7, wagen7_3).
wagen_nummer(wagen7_3, 3).
wagen_farbe(wagen7_3, rot).
wagen_laenge(wagen7_3, kurz).
hat_wand(wagen7_3, voll).
hat_dach(wagen7_3, keine).
hat_rad(wagen7_3, 2).

ost(zug8).
hat_wagen(zug8, wagen8_1).
wagen_nummer(wagen8_1, 1).
wagen_farbe(wagen8_1, gruen).
wagen_laenge(wagen8_1, lang).
hat_wand(wagen8_1, gelaender).
hat_dach(wagen8_1, spitzdach).
hat_rad(wagen8_1, 2).
hat_wagen(zug8, wagen8_2).
wagen_nummer(wagen8_2, 2).
wagen_farbe(wagen8_2, gelb).
wagen_laenge(wagen8_2, lang).
hat_wand(wagen8_2, voll).
hat_dach(wagen8_2, dach_fundament).
hat_rad(wagen8_2, 3).

ost(zug9).
hat_wagen(zug9, wagen9_1).
wagen_nummer(wagen9_1, 1).
wagen_farbe(wagen9_1, blau).
wagen_laenge(wagen9_1, lang).
hat_wand(wagen9_1, voll).
hat_dach(wagen9_1, dach_fundament).
hat_rad(wagen9_1, 2).
hat_wagen(zug9, wagen9_2).
wagen_nummer(wagen9_2, 2).
wagen_farbe(wagen9_2, gelb).
wagen_laenge(wagen9_2, kurz).
hat_wand(wagen9_2, voll).
hat_dach(wagen9_2, dach_fundament).
hat_rad(wagen9_2, 2).
hat_wagen(zug9, wagen9_3).
wagen_nummer(wagen9_3, 3).
wagen_farbe(wagen9_3, weiss).
wagen_laenge(wagen9_3, lang).
hat_wand(wagen9_3, voll).
hat_dach(wagen9_3, spitzdach).
hat_rad(wagen9_3, 3).

ost(zug10).
hat_wagen(zug10, wagen10_1).
wagen_nummer(wagen10_1, 1).
wagen_farbe(wagen10_1, blau).
wagen_laenge(wagen10_1, lang).
hat_wand(wagen10_1, gelaender).
hat_dach(wagen10_1, festes_dach).
hat_rad(wagen10_1, 3).
hat_wagen(zug10, wagen10_2).
wagen_nummer(wagen10_2, 2).
wagen_farbe(wagen10_2, blau).
wagen_laenge(wagen10_2, lang).
hat_wand(wagen10_2, voll).
hat_dach(wagen10_2, dach_fundament).
hat_rad(wagen10_2, 2).
hat_wagen(zug10, wagen10_3).
wagen_nummer(wagen10_3, 3).
wagen_farbe(wagen10_3, blau).
wagen_laenge(wagen10_3, lang).
hat_wand(wagen10_3, voll).
hat_dach(wagen10_3, keine).
hat_rad(wagen10_3, 3).

ost(zug11).
hat_wagen(zug11, wagen11_1).
wagen_nummer(wagen11_1, 1).
wagen_farbe(wagen11_1, weiss).
wagen_laenge(wagen11_1, lang).
hat_wand(wagen11_1, voll).
hat_dach(wagen11_1, spitzdach).
hat_rad(wagen11_1, 2).
hat_wagen(zug11, wagen11_2).
wagen_nummer(wagen11_2, 2).
wagen_farbe(wagen11_2, weiss).
wagen_laenge(wagen11_2, lang).
hat_wand(wagen11_2, voll).
hat_dach(wagen11_2, dach_fundament).
hat_rad(wagen11_2, 3).


Deine Aufgabe besteht darin, eine Hypothese in Form einer Prolog-Regel der Form „ost(T) :- Rumpf.“ zu formulieren, die nach Osten fahrende von nach Westen fahrenden Zügen korrekt unterscheidet.
Die Hypothese muss für alle positiven Beispiele (d. h. Züge, die als ost(t) gekennzeichnet sind) wahr und für alle negativen Beispiele (d. h. west(t)-Züge) falsch sein.
Ziel ist es, die kürzeste korrekte Regel zu finden, das heißt eine, die mit der geringstmöglichen Anzahl von Rumpfliteralen auskommt, ohne Bedingungen zu verlieren.
Deine Regel darf nur die in der obigen Grammatik definierten Prädikate verwenden und muss nach Osten fahrende von nach Westen fahrenden Zügen perfekt trennen.
ost(Zug):- hat_wagen(Zug, Wagen1), hat_rad(Wagen1, 3), hat_wand(Wagen1, voll).
west(zug0).
hat_wagen(zug0, wagen0_1).
wagen_nummer(wagen0_1, 1).
wagen_farbe(wagen0_1, gelb).
wagen_laenge(wagen0_1, kurz).
hat_wand(wagen0_1, voll).
hat_dach(wagen0_1, spitzdach).
hat_rad(wagen0_1, 2).
hat_wagen(zug0, wagen0_2).
wagen_nummer(wagen0_2, 2).
wagen_farbe(wagen0_2, gelb).
wagen_laenge(wagen0_2, kurz).
hat_wand(wagen0_2, gelaender).
hat_dach(wagen0_2, spitzdach).
hat_rad(wagen0_2, 2).
hat_wagen(zug0, wagen0_3).
wagen_nummer(wagen0_3, 3).
wagen_farbe(wagen0_3, blau).
wagen_laenge(wagen0_3, kurz).
hat_wand(wagen0_3, voll).
hat_dach(wagen0_3, dach_fundament).
hat_rad(wagen0_3, 2).

west(zug1).
hat_wagen(zug1, wagen1_1).
wagen_nummer(wagen1_1, 1).
wagen_farbe(wagen1_1, gruen).
wagen_laenge(wagen1_1, kurz).
hat_wand(wagen1_1, gelaender).
hat_dach(wagen1_1, spitzdach).
hat_rad(wagen1_1, 2).
hat_wagen(zug1, wagen1_2).
wagen_nummer(wagen1_2, 2).
wagen_farbe(wagen1_2, gelb).
wagen_laenge(wagen1_2, kurz).
hat_wand(wagen1_2, gelaender).
hat_dach(wagen1_2, keine).
hat_rad(wagen1_2, 2).
hat_wagen(zug1, wagen1_3).
wagen_nummer(wagen1_3, 3).
wagen_farbe(wagen1_3, gruen).
wagen_laenge(wagen1_3, kurz).
hat_wand(wagen1_3, voll).
hat_dach(wagen1_3, keine).
hat_rad(wagen1_3, 2).

west(zug2).
hat_wagen(zug2, wagen2_1).
wagen_nummer(wagen2_1, 1).
wagen_farbe(wagen2_1, rot).
wagen_laenge(wagen2_1, kurz).
hat_wand(wagen2_1, gelaender).
hat_dach(wagen2_1, verstrebtes_dach).
hat_rad(wagen2_1, 2).
hat_wagen(zug2, wagen2_2).
wagen_nummer(wagen2_2, 2).
wagen_farbe(wagen2_2, rot).
wagen_laenge(wagen2_2, kurz).
hat_wand(wagen2_2, gelaender).
hat_dach(wagen2_2, festes_dach).
hat_rad(wagen2_2, 2).

west(zug3).
hat_wagen(zug3, wagen3_1).
wagen_nummer(wagen3_1, 1).
wagen_farbe(wagen3_1, blau).
wagen_laenge(wagen3_1, kurz).
hat_wand(wagen3_1, voll).
hat_dach(wagen3_1, keine).
hat_rad(wagen3_1, 2).
hat_wagen(zug3, wagen3_2).
wagen_nummer(wagen3_2, 2).
wagen_farbe(wagen3_2, weiss).
wagen_laenge(wagen3_2, lang).
hat_wand(wagen3_2, gelaender).
hat_dach(wagen3_2, dach_fundament).
hat_rad(wagen3_2, 3).

ost(zug4).
hat_wagen(zug4, wagen4_1).
wagen_nummer(wagen4_1, 1).
wagen_farbe(wagen4_1, gruen).
wagen_laenge(wagen4_1, lang).
hat_wand(wagen4_1, voll).
hat_dach(wagen4_1, spitzdach).
hat_rad(wagen4_1, 3).
hat_wagen(zug4, wagen4_2).
wagen_nummer(wagen4_2, 2).
wagen_farbe(wagen4_2, blau).
wagen_laenge(wagen4_2, kurz).
hat_wand(wagen4_2, voll).
hat_dach(wagen4_2, spitzdach).
hat_rad(wagen4_2, 2).
hat_wagen(zug4, wagen4_3).
wagen_nummer(wagen4_3, 3).
wagen_farbe(wagen4_3, rot).
wagen_laenge(wagen4_3, kurz).
hat_wand(wagen4_3, gelaender).
hat_dach(wagen4_3, spitzdach).
hat_rad(wagen4_3, 2).

west(zug5).
hat_wagen(zug5, wagen5_1).
wagen_nummer(wagen5_1, 1).
wagen_farbe(wagen5_1, gelb).
wagen_laenge(wagen5_1, kurz).
hat_wand(wagen5_1, gelaender).
hat_dach(wagen5_1, festes_dach).
hat_rad(wagen5_1, 2).
hat_wagen(zug5, wagen5_2).
wagen_nummer(wagen5_2, 2).
wagen_farbe(wagen5_2, gruen).
wagen_laenge(wagen5_2, lang).
hat_wand(wagen5_2, gelaender).
hat_dach(wagen5_2, dach_fundament).
hat_rad(wagen5_2, 2).
hat_wagen(zug5, wagen5_3).
wagen_nummer(wagen5_3, 3).
wagen_farbe(wagen5_3, gelb).
wagen_laenge(wagen5_3, kurz).
hat_wand(wagen5_3, gelaender).
hat_dach(wagen5_3, festes_dach).
hat_rad(wagen5_3, 2).

west(zug6).
hat_wagen(zug6, wagen6_1).
wagen_nummer(wagen6_1, 1).
wagen_farbe(wagen6_1, weiss).
wagen_laenge(wagen6_1, lang).
hat_wand(wagen6_1, voll).
hat_dach(wagen6_1, verstrebtes_dach).
hat_rad(wagen6_1, 2).
hat_wagen(zug6, wagen6_2).
wagen_nummer(wagen6_2, 2).
wagen_farbe(wagen6_2, rot).
wagen_laenge(wagen6_2, kurz).
hat_wand(wagen6_2, voll).
hat_dach(wagen6_2, keine).
hat_rad(wagen6_2, 2).

ost(zug7).
hat_wagen(zug7, wagen7_1).
wagen_nummer(wagen7_1, 1).
wagen_farbe(wagen7_1, blau).
wagen_laenge(wagen7_1, lang).
hat_wand(wagen7_1, voll).
hat_dach(wagen7_1, keine).
hat_rad(wagen7_1, 3).
hat_wagen(zug7, wagen7_2).
wagen_nummer(wagen7_2, 2).
wagen_farbe(wagen7_2, gelb).
wagen_laenge(wagen7_2, kurz).
hat_wand(wagen7_2, gelaender).
hat_dach(wagen7_2, spitzdach).
hat_rad(wagen7_2, 2).
hat_wagen(zug7, wagen7_3).
wagen_nummer(wagen7_3, 3).
wagen_farbe(wagen7_3, rot).
wagen_laenge(wagen7_3, kurz).
hat_wand(wagen7_3, voll).
hat_dach(wagen7_3, keine).
hat_rad(wagen7_3, 2).

ost(zug8).
hat_wagen(zug8, wagen8_1).
wagen_nummer(wagen8_1, 1).
wagen_farbe(wagen8_1, gruen).
wagen_laenge(wagen8_1, lang).
hat_wand(wagen8_1, gelaender).
hat_dach(wagen8_1, spitzdach).
hat_rad(wagen8_1, 2).
hat_wagen(zug8, wagen8_2).
wagen_nummer(wagen8_2, 2).
wagen_farbe(wagen8_2, gelb).
wagen_laenge(wagen8_2, lang).
hat_wand(wagen8_2, voll).
hat_dach(wagen8_2, dach_fundament).
hat_rad(wagen8_2, 3).

ost(zug9).
hat_wagen(zug9, wagen9_1).
wagen_nummer(wagen9_1, 1).
wagen_farbe(wagen9_1, blau).
wagen_laenge(wagen9_1, lang).
hat_wand(wagen9_1, voll).
hat_dach(wagen9_1, dach_fundament).
hat_rad(wagen9_1, 2).
hat_wagen(zug9, wagen9_2).
wagen_nummer(wagen9_2, 2).
wagen_farbe(wagen9_2, gelb).
wagen_laenge(wagen9_2, kurz).
hat_wand(wagen9_2, voll).
hat_dach(wagen9_2, dach_fundament).
hat_rad(wagen9_2, 2).
hat_wagen(zug9, wagen9_3).
wagen_nummer(wagen9_3, 3).
wagen_farbe(wagen9_3, weiss).
wagen_laenge(wagen9_3, lang).
hat_wand(wagen9_3, voll).
hat_dach(wagen9_3, spitzdach).
hat_rad(wagen9_3, 3).

ost(zug10).
hat_wagen(zug10, wagen10_1).
wagen_nummer(wagen10_1, 1).
wagen_farbe(wagen10_1, blau).
wagen_laenge(wagen10_1, lang).
hat_wand(wagen10_1, gelaender).
hat_dach(wagen10_1, festes_dach).
hat_rad(wagen10_1, 3).
hat_wagen(zug10, wagen10_2).
wagen_nummer(wagen10_2, 2).
wagen_farbe(wagen10_2, blau).
wagen_laenge(wagen10_2, lang).
hat_wand(wagen10_2, voll).
hat_dach(wagen10_2, dach_fundament).
hat_rad(wagen10_2, 2).
hat_wagen(zug10, wagen10_3).
wagen_nummer(wagen10_3, 3).
wagen_farbe(wagen10_3, blau).
wagen_laenge(wagen10_3, lang).
hat_wand(wagen10_3, voll).
hat_dach(wagen10_3, keine).
hat_rad(wagen10_3, 3).

ost(zug11).
hat_wagen(zug11, wagen11_1).
wagen_nummer(wagen11_1, 1).
wagen_farbe(wagen11_1, weiss).
wagen_laenge(wagen11_1, lang).
hat_wand(wagen11_1, voll).
hat_dach(wagen11_1, spitzdach).
hat_rad(wagen11_1, 2).
hat_wagen(zug11, wagen11_2).
wagen_nummer(wagen11_2, 2).
wagen_farbe(wagen11_2, weiss).
wagen_laenge(wagen11_2, lang).
hat_wand(wagen11_2, voll).
hat_dach(wagen11_2, dach_fundament).
hat_rad(wagen11_2, 3).


west 26 1 gelb kurz voll spitzdach 2 2 gelb kurz gelaender spitzdach 2 3 blau kurz voll dach_fundament 2
west -33 1 gruen kurz gelaender spitzdach 2 2 gelb kurz gelaender keine 2 3 gruen kurz voll keine 2
west 219 1 rot kurz gelaender verstrebtes_dach 2 2 rot kurz gelaender festes_dach 2
west 40 1 blau kurz voll keine 2 2 weiss lang gelaender dach_fundament 3
ost 159 1 gruen lang voll spitzdach 3 2 blau kurz voll spitzdach 2 3 rot kurz gelaender spitzdach 2
west 183 1 gelb kurz gelaender festes_dach 2 2 gruen lang gelaender dach_fundament 2 3 gelb kurz gelaender festes_dach 2
west 224 1 weiss lang voll verstrebtes_dach 2 2 rot kurz voll keine 2
ost -26 1 blau lang voll keine 3 2 gelb kurz gelaender spitzdach 2 3 rot kurz voll keine 2
ost 215 1 gruen lang gelaender spitzdach 2 2 gelb lang voll dach_fundament 3
ost 181 1 blau lang voll dach_fundament 2 2 gelb kurz voll dach_fundament 2 3 weiss lang voll spitzdach 3
ost 50 1 blau lang gelaender festes_dach 3 2 blau lang voll dach_fundament 2 3 blau lang voll keine 3
ost 211 1 weiss lang voll spitzdach 2 2 weiss lang voll dach_fundament 3