# From: "Dat Nguyen" # Subject: Is Socrates Mortal? # Date: Mon, 10 May 2004 11:08:39 -0400 # # Prolog-like declarative logic programming in Kermit. # define being { _asg \%1.being \m(\%1.being)|\%2 _asg \%2.having \m(\%2.having)|\%1 } define findtheTruth { local \%i \&w[] for \%i 1 \fsplit(\m(\%1.being),&w,|) 1 { if > \find(\%2,\&w[\%i]) 0 return 1 findtheTruth \&w[\%i] \%2 if success return 1 } END -999999 } define isTrue { findtheTruth \%1 \%2 if success { echo yes return 1 } else { echo no return 0 } } define whois { local \%i \&w[] for \%i 1 \fsplit(\m(\%1.having),&w,|) 1 { if not define \m(\&w[\%i].having) { echo \&w[\%i] } whois \&w[\%i] } } being Socrates human being human mortal being venus_williams tennisPlayer being tennisPlayer makeslotsmoney being makeslotsmoney rich being rich happy being Donna makeslotsmoney being steffi_graf tennisPlayer being andre_aggassi tennisPlayer # Is Socrates a human? isTrue Socrates human # Is Socrates mortal? isTrue Socrates mortal # Is Venus Williams a tennis player? isTrue venus_williams tennisPlayer # Who is tennis player? whois tennisPlayer # Who is human? whois human # Who is rich? whois rich