home *** CD-ROM | disk | FTP | other *** search
-
- ausdruck(e,n,m,[x,y]) :- formel(e,n,m,[x,y]).
-
- formel(e,n_,m,[x,y]) :- formel_(v,0,p,n,m,[x,z]),
- rest-formel(p,e,n_,n,[z,y]).
-
- formel_(v,w,p,n_,m,[x,y]) :- primary(f,n,m,[x,z]),
- rest-formel_(v,w,f,p,n_,n,[z,y]).
-
- primary(e,n,m,[x,y]) :-
- wort('(',[x,z]),
- ausdruck(e,n,m,[z,t]),
- wort(')',[t,y]).
- primary(p,n,m,[x,y]) :-
- praedikat(p,n,m,[x,y]).
- primary(e,n_,m,[x,y]) :-
- quantifizierung(p,e,n,m,[x,z]),
- primary(p,n_,n,[z,y]).
- primary([o-a,p],n,m,[x,y]) :-
- wort(a,[x,z]),
- junktor(6,a,o-a),
- primary(p,n,m,[z,y]).
-
- rest-formel_(v_,v,p,[o-a,p,p_],n,m,[x,y]) :-
- wort(o,[x,z]),
- junktor(w,o,o-a),
- eval(v,w),
- formel_(v_,w,p_,n,m,[z,y]).
- rest-formel_(v,v,e,e,m,m,[x,x]) .
-
- rest-formel(p,[o-a,p,p_],n,m,[x,y]) :-
- wort(o,[x,z]),
- junktor(w,o,o-a),
- formel(p_,n,m,[z,y]).
- rest-formel(e,e,m,m,[x,x]) .
-
- quantifizierung(p-atom,uni(n,p-atom),p,q,[x,y]) :-
- wort(a,[x,z]),
- quantor(k,a,uni),
- wort(v-ar,[z,y]),
- diff-oder-gleich([n,v-ar],q,p).
- quantifizierung(p-atom,exi(n,p-atom),p,q,[x,y]) :-
- wort(a,[x,z]),
- quantor(k,a,exi),
- wort(v-ar,[z,y]),
- diff-oder-gleich([n,v-ar],q,p).
-
- praedikat([a,a-rg],n,m,[x,y]) :-
- wort(a,[x,u]),
- upletter(a),
- wort('(',[u,v]),
- argumente(a-rg,n,m,[v,w]),
- wort(')',[w,y]).
-
- upletter(a) :-
- char-code(a,a_),
- val(inf(a_,91),b),
- val(inf(64,a_),b).
-
- /* argumente(n;b,p,q,[x,y]) :-
- wort(a,[x,z]),
- wort(',',[z,v]),
- diff-oder-gleich-argumente([n,a],q,p_),
- argumente(b,p,p_,[v,y]).
- argumente(n;nil,p,q,[x,y]) :-
- wort(a,[x,y]),
- diff-oder-gleich-argumente([n,a],q,p).
- argumente(nil,p,p,[x,x]) . */
-
- junktor(6,'┬',neg) .
- junktor(5,'&',konj) .
- junktor(4,'#',disj) .
- junktor(3,']',re-impl) .
- junktor(3,'[',li-impl) .
-
- quantor(2,'⌐',uni) .
- quantor(1,'¿',exi) .
-
- wort(a,[a;x,x]) .
-
- eval(w_,w) :-
- val(eql(w_,w),1).
- eval(w_,w) :-
- val(inf(w_,w),1).
-
- diff-oder-gleich([k_,n],nil,[k_,n];nil) .
- diff-oder-gleich([k,n],[k,m];q,[k,m];q) :-
- eq(n,m).
- diff-oder-gleich([k,n],[k_,m];q,[k_,m];p) :-
- dif(n,m),
- diff-oder-gleich([k,n],q,p).
-
- diff-oder-gleich-argumente([k,n],[k,m];q,[k,m];q) :-
- eq(n,m).
- diff-oder-gleich-argumente([k,n],[k_,m];q,[k_,m];p) :-
- dif(n,m),
- diff-oder-gleich-argumente([k,n],q,p).
-
- lesen(nil) :- next-char_('.') / in-char_('.').
- lesen('⌐';b) :- next-char_('⌐') / in-char_('⌐'), lesen(b).
- lesen('¿';b) :- next-char_('¿') / in-char_('¿'), lesen(b).
- lesen(a.b) :- in-char_(a) / lesen(b).
- lesen(a.b) :- in-integer(a), lesen(b).
-
- pl :-
- terminologie,
- repeat,
- line,
- outm('Ausdruck: '),
- lesen(p),
- analysiere(p,e),
- outm('Semantik: '),
- outl(e),
- fail.
-
- terminologie :-
- line,
- outml('Junktoren: & Konjunktion'),
- outml(' # Adjunktion'),
- outml(' ] Implikation (rechts-gerichtet)'),
- outml(' [ Implikation (links-gerichtet)'),
- outml(' ┬ Negation (ASCII 194)')
- line
- outml('Quantoren: ⌐ Allquantor (ASCII 169)')
- outml(' ¿ Existenzquantor (ASCII 168)')
- line
- outml('Funktion: alphabetische GROSSE Einzel-Zeichen oder Zeichenfolgen')
- outml('Atome: alphabetische kleine Einzel-Zeichen oder Zeichenfolgen').
-
- /* repeat .
- repeat :- repeat. */
-
- analysiere(p,e) :- ausdruck(e,n,nil,[p,nil]) .
- analysiere(p,e) :- outml('... ist nicht wohlgeformt'), fail.
-
-
-
-