Dennis J. Darland’s Philosophy in Prolog
By Dennis J. Darland
June 10, 2007
/* Prolog database for use with predicates to simulate Dennis J. Darland's philosophy. */
/* Written 6/10/2007 */
/* mydb.db */
belief_r(tom,'denounced','cicero','cataline',now).
belief_r(tom,'not_denounced','tully','cataline',now).
symbol1_r(tom,'denounced',denounced,now).
symbol1_r(tom,'not_denounced',not_denounced,now).
symbol0_r(tom,'cicero',cicero,now).
symbol0_r(tom,'cataline',cataline,now).
symbol0_r(tom,'tully',cicero,now).
pred(denounced,cicero,cataline).
/* Prolog predicates to simulate Dennis J. Darland's philosophy. */
/* Written 6/10/2007 */
/* myphil.db */
understand(S,R,A,B,T) :- symbol1_r(S,W,R,T) ,symbol0_r(S,X,A,T) ,symbol0_r(S,Y,B,T).
logical_form(RF,W,X,Y) :- RF == 'r(a,b)', symbol1_r(S,W,R,T), symbol0_r(S,X,A,T), symbol0_r(S,Y,B,T).
belief(S,R,A,B,T) :- belief_r(S,W,X,Y,T) , symbol1_r(S,W,R,T) ,symbol0_r(S,X,A,T) ,symbol0_r(S,Y,B,T).
proposition(R,A,B) :- understand(S,R,A,B,T).
true_proposition(R,A,B) :- proposition(R,A,B) , pred(R,A,B).
true_belief(S,R,A,B,T) :- belief(S,R,A,B,T) , pred(R,A,B).
symbol0(X) :- symbol0_r(S,X,A,T).
symbol1(X) :- symbol1_r(S,X,A,T).
name_1(W) :- belief_r(S,W,X,Y,T).
name_1(X) :- belief_r(S,W,X,Y,T).
name_1(Y) :- belief_r(S,W,X,Y,T).
[note the transcript doesn’t show the difference between ‘cicero’ & cicero, but the distinction is made logically in the program.]
Yes
?- [mydb,myphil].
% mydb compiled 0.02 sec, 1,988 bytes
Warning: (/cygdrive/c/Users/Dennis/src/mine/myphil/myphil.pl:5):
Singleton variables: [W, X, Y]
Warning: (/cygdrive/c/Users/Dennis/src/mine/myphil/myphil.pl:7):
Singleton variables: [R, A, B]
Warning: (/cygdrive/c/Users/Dennis/src/mine/myphil/myphil.pl:11):
Singleton variables: [S, T]
Warning: (/cygdrive/c/Users/Dennis/src/mine/myphil/myphil.pl:17):
Singleton variables: [S, A, T]
Warning: (/cygdrive/c/Users/Dennis/src/mine/myphil/myphil.pl:19):
Singleton variables: [S, A, T]
Warning: (/cygdrive/c/Users/Dennis/src/mine/myphil/myphil.pl:21):
Singleton variables: [S, X, Y, T]
Warning: (/cygdrive/c/Users/Dennis/src/mine/myphil/myphil.pl:23):
Singleton variables: [S, W, Y, T]
Warning: (/cygdrive/c/Users/Dennis/src/mine/myphil/myphil.pl:25):
Singleton variables: [S, W, X, T]
% myphil compiled 0.00 sec, 3,076 bytes
Yes
?- name_1(A).
A = denounced ;
A = not_denounced ;
A = cicero ;
A = tully ;
A = cataline ;
A = cataline ;
No
?- symbol1(A).
A = denounced ;
A = not_denounced ;
No
?- symbol0(A).
A = cicero ;
A = cataline ;
A = tully ;
No
?- understand(S,R,A,B,T).
S = tom
R = denounced
A = cicero
B = cicero
T = now ;
S = tom
R = denounced
A = cicero
B = cataline
T = now ;
S = tom
R = denounced
A = cicero
B = cicero
T = now ;
S = tom
R = denounced
A = cataline
B = cicero
T = now ;
S = tom
R = denounced
A = cataline
B = cataline
T = now ;
S = tom
R = denounced
A = cataline
B = cicero
T = now ;
S = tom
R = denounced
A = cicero
B = cicero
T = now ;
S = tom
R = denounced
A = cicero
B = cataline
T = now ;
S = tom
R = denounced
A = cicero
B = cicero
T = now ;
S = tom
R = not_denounced
A = cicero
B = cicero
T = now ;
S = tom
R = not_denounced
A = cicero
B = cataline
T = now ;
S = tom
R = not_denounced
A = cicero
B = cicero
T = now ;
S = tom
R = not_denounced
A = cataline
B = cicero
T = now ;
S = tom
R = not_denounced
A = cataline
B = cataline
T = now ;
S = tom
R = not_denounced
A = cataline
B = cicero
T = now ;
S = tom
R = not_denounced
A = cicero
B = cicero
T = now ;
S = tom
R = not_denounced
A = cicero
B = cataline
T = now ;
S = tom
R = not_denounced
A = cicero
B = cicero
T = now ;
No
?- proposition(R,A,B).
R = denounced
A = cicero
B = cicero ;
R = denounced
A = cicero
B = cataline ;
R = denounced
A = cicero
B = cicero ;
R = denounced
A = cataline
B = cicero ;
R = denounced
A = cataline
B = cataline ;
R = denounced
A = cataline
B = cicero ;
R = denounced
A = cicero
B = cicero ;
R = denounced
A = cicero
B = cataline ;
R = denounced
A = cicero
B = cicero ;
R = not_denounced
A = cicero
B = cicero ;
R = not_denounced
A = cicero
B = cataline ;
R = not_denounced
A = cicero
B = cicero ;
R = not_denounced
A = cataline
B = cicero ;
R = not_denounced
A = cataline
B = cataline ;
R = not_denounced
A = cataline
B = cicero ;
R = not_denounced
A = cicero
B = cicero ;
R = not_denounced
A = cicero
B = cataline ;
R = not_denounced
A = cicero
B = cicero ;
No
?- belief(S,R,A,B,T).
S = tom
R = denounced
A = cicero
B = cataline
T = now ;
S = tom
R = not_denounced
A = cicero
B = cataline
T = now ;
No
?- belief_r(S,R,A,B,T).
S = tom
R = denounced
A = cicero
B = cataline
T = now ;
S = tom
R = not_denounced
A = tully
B = cataline
T = now ;
No
?- true_proposition(R,A,B).
R = denounced
A = cicero
B = cataline ;
R = denounced
A = cicero
B = cataline ;
No
?- true_belief(S,R,A,B,T).
S = tom
R = denounced
A = cicero
B = cataline
T = now ;
No
?- noprotocol.
Back to Top http://dennisdarland.com/philosophy/index.html