home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 05 / pannen.pro < prev    next >
Encoding:
Text File  |  1987-04-15  |  9.0 KB  |  260 lines

  1.         "==================================="
  2.         " DIAGNOSE-SYSTEM MIT ERKLAERUNGEN "
  3.         "==================================="
  4.  
  5.  
  6. " W I S S E N S B A S I S "
  7.  
  8.  
  9. Regel(1,<Kabel-am-Zuendschloss-lose,pos>.nil,<Kabel-lose,pos>) ->;
  10. Regel(2,<Batteriekabel-lose,pos>.nil,<Kabel-lose,pos>) ->;
  11. Regel(3,<Kabel-an-der-Zuendspule-lose,pos>.nil,<Kabel-lose,pos>) ->;
  12. Regel(4,<Kabel-am-Verteiler-lose,pos>.nil,<Kabel-lose,pos>) ->;
  13. Regel(5,<Kabel-an-den-Zuendkerzen-lose,pos>.nil,<Kabel-lose,pos>) ->;
  14. Regel(6,<Kabel-am-Zuendschloss-lose,neg>.
  15.           <Batteriekabel-lose,neg>.
  16.           <Kabel-an-der-Zuendspule-lose,neg>.
  17.           <Kabel-am-Verteiler-lose,neg>.
  18.           <Kabel-an-den-Zuendkerzen-lose,neg>.nil,
  19.           <Kabel-lose,neg>) ->;
  20. Regel(7,<Funke-am-Unterbrecherhebel,neg>.nil,
  21.           <zu-starker-Funke-am-Unterbrecherhebel,neg>) ->;
  22. Regel(8,<Unterbrecherkontakte-verschmort,pos>.
  23.           <Unterbrecher-o-Kondensator-o-Zuendspule,pos>.nil,
  24.           <Funke-am-Unterbrecherhebel,neg>) ->;
  25. Regel(9,<Ladekontrollampe-verloescht-beim-Starten,pos>.nil,
  26.           <Anlasser-dreht-Motor-durch,neg>) ->;
  27. Regel(10,<Kabel-lose,neg>.
  28.           <Anlasser-dreht-Motor-durch,pos>.
  29.           <Batterie-leer,neg>.
  30.           <Zuendspule-gibt-starken-Funken,pos>.nil,
  31.           <Hauptzuendkabel-o-Verteiler-o-Zuendkerzen-o-Motor,pos>) ->;
  32. Regel(11,<Kabel-lose,neg>.
  33.           <Anlasser-dreht-Motor-durch,pos>.
  34.           <Zuendspule-gibt-starken-Funken,neg>.nil,
  35.           <Unterbrecher-o-Kondensator-o-Zuendspule,pos>) ->;
  36. Regel(12,<Anlasser-dreht-Motor-durch,pos>.
  37.           <starker-Benzingeruch-am-Auspuff,pos>.
  38.           <Elektroden-der-Zuendkerzen-trocken-und-sauber,neg>.nil,
  39.           <Motor-ersoffen,pos>) ->;
  40. Regel(13,<Unterbrecher-o-Kondensator-o-Zuendspule,pos>.
  41.           <Unterbrecherkontakte-blau,pos>.
  42.           <zu-starker-Funke-am-Unterbrecherhebel,pos>.nil,
  43.           <Kondensator-defekt,pos>) ->;
  44. Regel(14,<Unterbrecher-o-Kondensator-o-Zuendspule,pos>.
  45.           <Unterbrecherkontakte-verschmort,pos>.nil,
  46.           <Unterbrecher-defekt,pos>) ->;
  47. Regel(15,<Unterbrecher-o-Kondensator-o-Zuendspule,pos>.
  48.           <Unterbrecherhebel-hebt-ab,neg>.nil,
  49.           <Unterbrecher-defekt,pos>) ->;
  50. Regel(16,<Unterbrecherhebel-hebt-ab,pos>.
  51.           <Unterbrecherkontakte-verschmort,neg>.
  52.           <Unterbrecherkontakte-verschmutzt>.nil,
  53.           <Unterbrecher-defekt,neg>) ->;
  54. Regel(17,<Ladekontrollampe-brennt,pos>.nil,
  55.           <Batteriekabel-lose,neg>) ->;
  56. Regel(18,<Innenraumleuchte-brennt,pos>.nil,
  57.           <Batteriekabel-lose,neg>) ->;
  58. Regel(19,<Batteriekabel-lose,pos>.nil,
  59.           <Ladekontrollampe-brennt,neg>) ->;
  60. Regel(20,<Batteriekabel-lose,pos>.nil,
  61.           <Innenraumleuchte-brennt,neg>) ->
  62. Regel(21,<Innenraumleuchte-brennt,pos>.nil,
  63.           <Batterie-leer,neg>) ->;
  64. Regel(22,<Ladekontrollampe-brennt,neg>.
  65.           <Innenraumleuchte-brennt,pos>.
  66.           <Kabel-am-Zuendschloss-lose,neg>.nil,
  67.           <Zuendschloss-defekt,pos>) ->;
  68. Regel(23,<Ladekontrollampe-brennt,neg>.
  69.           <Innenraumleuchte-brennt,neg>.
  70.           <Batteriekabel-lose,neg>.nil,
  71.           <Batterie-leer,pos>) ->;
  72. Regel(24,<Ladekontrollampe-brennt,pos>.
  73.           <Kabel-lose,neg>.
  74.           <Ladekontrollampe-verloescht-beim-Starten,neg>.
  75.           <Anlasser-dreht-Motor-durch,neg>.nil,
  76.           <Anlassschalter-defekt,pos>) ->;
  77. Regel(25,<Ladekontrollampe-brennt,pos>.
  78.           <Kabel-lose,neg>.
  79.           <Ladekontrollampe-verloescht-beim-Starten,pos>.
  80.           <Anlasser-dreht-Motor-durch,neg>.
  81.           <Batterie-leer,neg>.nil,
  82.           <Kurzschluss-im-Anlasser,pos>) ->;
  83. Regel(26,<Hauptzuendkabel-o-Verteiler-o-Zuendkerzen-o-Motor,pos>.
  84.           <Elektroden-der-Zuendkerzen-trocken-und-sauber,pos>.
  85.           <Zuendkerze-gibt-starken-Funken,pos>.
  86.           <Kraftstoffanlage-ok,pos>.nil,
  87.           <Motoreinstellung-falsch,pos>) ->;
  88. Regel(27,<Hauptzuendkabel-o-Verteiler-o-Zuendkerzen-o-Motor,pos>.
  89.           <Elektroden-der-Zuendkerzen-trocken-und-sauber,pos>.
  90.           <Zuendkerze-gibt-starken-Funken,neg>.
  91.           <Zuendkerzenstecker-gibt-starken-Funken,pos>.nil,
  92.           <Zuendkerzen-defekt,pos>) ->;
  93. Regel(28,<Hauptzuendkabel-o-Verteiler-o-Zuendkerzen-o-Motor,pos>.
  94.           <Elektroden-der-Zuendkerzen-trocken-und-sauber,neg>.
  95.           <Verteiler-defekt,neg>.nil,
  96.           <Zuendkerzenkabel-defekt,pos>) ->;
  97. Regel(29,<Hauptzuendkabel-o-Verteiler-o-Zuendkerzen-o-Motor,pos>.
  98.           <Verteilerkappe-nass-oder-gebrochen,pos>.nil,
  99.           <Verteiler-defekt,pos>) ->;
  100. Regel(30,<Hauptzuendkabel-o-Verteiler-o-Zuendkerzen-o-Motor,pos>.
  101.           <Verteilerfinger-defekt,pos>.nil,
  102.           <Verteiler-defekt,pos>) ->;
  103. Regel(31,<Verteilerfinger-defekt,neg>.
  104.           <Verteilerkappe-nass-oder-gebrochen,neg>.nil,
  105.           <Verteiler-defekt,neg>) ->;
  106. Regel(32,<Unterbrecher-o-Kondensator-o-Zuendspule,pos>.
  107.           <Funke-am-Unterbrecherhebel,pos>.
  108.           <Unterbrecherkontakte-blau,neg>.nil,
  109.           <Zuendspule-defekt,pos>) ->;
  110. Regel(33,<Unterbrecher-o-Kondensator-o-Zuendspule,pos>.
  111.           <Funke-am-Unterbrecherhebel,neg>.
  112.           <Unterbrecher-defekt,neg>.nil,
  113.           <Zuendspule-defekt,pos>) ->;
  114.  
  115.  
  116.  
  117. Defekt(Batterie-leer) ->;
  118. Defekt(Zuendschloss-defekt) ->;
  119. Defekt(Batteriekabel-lose) ->;
  120. Defekt(Kabel-am-Zuendschloss-lose) ->;
  121. Defekt(Kabel-an-der-Zuendspule-lose) ->;
  122. Defekt(Kabel-am-Verteiler-lose) ->;
  123. Defekt(Kabel-an-den-Zuendkerzen-lose) ->;
  124. Defekt(Anlassschalter-defekt) ->;
  125. Defekt(Kurzschluss-im-Anlasser) ->;
  126. Defekt(Unterbrecher-defekt) ->;
  127. Defekt(Verteiler-defekt) ->;
  128. Defekt(Zuendspule-defekt) ->;
  129. Defekt(Motor-ersoffen) ->;
  130. Defekt(Zuendkerzen-defekt) ->;
  131. Defekt(Zuendkerzenkabel-defekt) ->;
  132. Defekt(Motoreinstellung-falsch) ->;
  133.  
  134.  
  135. " I N F E R E N Z - M E C H A N I S M U S "
  136.  
  137. Loesung(d) ->
  138.         Defekt(d)
  139.         wahres-Faktum(<d,pos>,<0,<d,pos>>.nil)
  140.         /;
  141.  
  142. wahres-Faktum(<q,r>,l-a) -> Antwort(<q,r1>) / eq(r,r1);
  143. wahres-Faktum(<q,r>,l-a) -> Folgerung(<q,r1>) / eq(r,r1);
  144. wahres-Faktum(<q,r>,k.l-a) ->
  145.         Regel(n,l-f,<q,r'>)
  146.         nicht-enthalten(n,l-a)
  147.         Liste-wahrer-Fakten(l-f,n,k.l-a)
  148.         /
  149.         eq(r,r');
  150. wahres-Faktum(<q,r>,l-a) ->
  151.         keine-Regel-trifft-zu(<q,r>)
  152.         Frage-Antwort(<q,r>,l-a,r);
  153.  
  154. Liste-wahrer-Fakten(nil,n,l-a) ->;
  155. Liste-wahrer-Fakten(f.l-f,n,l-a) ->
  156.         wahres-Faktum(f,<n,f>.l-a)
  157.         speichere(f)
  158.         Liste-wahrer-Fakten(l-f,n,l-a);
  159.  
  160. keine-Regel-trifft-zu(f) -> Regel(n,l-f,f) / fail;
  161. keine-Regel-trifft-zu(f) ->;
  162.  
  163.  
  164. " B E N U T Z E R - S C H N I T T S T E L L E "
  165.  
  166. experte ->
  167.         message
  168.         loesche-alte-Antworten-und-Folgerungen
  169.         Loesung(d)
  170.         outm("Moeglicher Defekt <  ")
  171.         out(d)
  172.         outml("  >")
  173.         fail;
  174.  
  175. message ->
  176.         outml("Ihr Wagen springt nicht an?")
  177.         line
  178.         outml("Keine Sorge, ich helfe Ihnen bei der Fehlersuche! ")
  179.         outml("Hierzu werde ich Ihnen eine Reihe von Fragen stellen:");
  180.  
  181. Frage-Antwort(<q,r>,l-a,r) -> Antwort(<q,r1>) / eq(r,r1);
  182. Frage-Antwort(<q,r>,l-a,r) -> Folgerung(<q,r1>) / eq(r,r1);
  183. Frage-Antwort(<q,r>,l-a,r) ->
  184.         Frage(q,l-a,r')
  185.         assert(Antwort(<q,r'>),nil)
  186.         eq(r,r');
  187.  
  188. Frage(q,l-a,r) ->
  189.         line
  190.         outm("Ist es wahr, dass :   ")
  191.         outl(q)
  192.         outm("ja/nein/warum ? ")
  193.         in-ident(r')
  194.         verarbeite(r',q,l-a,r);
  195.  
  196. verarbeite(ja,q,l-a,pos) ->;
  197. verarbeite(nein,q,l-a,neg) ->;
  198. verarbeite(warum,q,<n,p>.l-a,r) ->
  199.         Regel(n,l-p,c)
  200.         outm("Weil ich mit Regel Nummer ")
  201.         out(n)
  202.         outml(" zu zeigen versuche, dass :")
  203.         outm("    ")
  204.         Aussagen-Ausgabe(c)
  205.         conc(l1,p.l2,l-p)
  206.         outml("Ich weiss bereits, dass gilt :")
  207.         Listen-Ausgabe1(l1)
  208.         outml("Ich weiss noch nicht, ob gilt :")
  209.         Listen-Ausgabe2(p.l2)
  210.         Frage(q,l-a,r);
  211. verarbeite(warum,q,<0,d>.nil,r) ->
  212.         Aussagen-Ausgabe(d)
  213.         outml(" ist der Defekt, den ich nachzuweisen versuche")
  214.         Frage(q,<0,d>.nil,r);
  215. verarbeite(r1,q,l-a,r') ->
  216.         dif(r1,ja)
  217.         dif(r1,nein)
  218.         dif(r1,warum)
  219.         Frage(q,l-a,r');
  220.  
  221. Listen-Ausgabe1(nil) -> outm("    * * * * * *") line;
  222. Listen-Ausgabe1(x.y) -> Listen-Ausgabe2(x.y);
  223.  
  224. Listen-Ausgabe2(nil) ->;
  225. Listen-Ausgabe2(x.y) ->
  226.         outm("    ")
  227.         Aussagen-Ausgabe(x)
  228.         Listen-Ausgabe2(y);
  229.  
  230. Aussagen-Ausgabe(<x,pos>) -> out(x) line;
  231. Aussagen-Ausgabe(<x,neg>) -> outm("non ") out(x) line;
  232.  
  233.  
  234. " H I L F S P R A E D I K A T E "
  235.  
  236. loesche-alte-Antworten-und-Folgerungen ->
  237.         rule(Antwort(q),t)
  238.         suppress(1)
  239.         fail;
  240. loesche-alte-Antworten-und-Folgerungen ->
  241.         rule(Folgerung(q),t)
  242.         suppress(1)
  243.         fail;
  244. loesche-alte-Antworten-und-Folgerungen ->;
  245.  
  246. speichere(f) ->
  247.         Folgerung(f)
  248.         /;
  249. speichere(f) ->
  250.         Antwort(f)
  251.         /;
  252. speichere(f) ->
  253.         assert(Folgerung(f),nil);
  254.  
  255. nicht-enthalten(n,nil) ->;
  256. nicht-enthalten(m,<n,q>.l) -> dif(m,n) nicht-enthalten(m,l);
  257.  
  258. conc(nil,l,l) ->;
  259. conc(x.l1,l2,x.l3) -> conc(l1,l2,l3);
  260.