Include Paulo Moura's Logtalk OO LP system

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@53 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2001-06-06 19:40:57 +00:00
parent 38247e38fc
commit cc4531cd1e
344 changed files with 27125 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
=================================================================
Logtalk - Object oriented extension to Prolog
Release 2.8.4
Copyright (c) 1998-2001 Paulo Moura. All Rights Reserved.
=================================================================
This example is an adaptation of a LPA Prolog++ example.
To load all objects in this example consult the lpa.loader utility
file.
You will also need to consult the library/hierarchies.loader file.
Note that the *.loader files are Prolog files.

View File

@@ -0,0 +1,21 @@
=================================================================
Logtalk - Object oriented extension to Prolog
Release 2.8.4
Copyright (c) 1998-2001 Paulo Moura. All Rights Reserved.
=================================================================
| ?- fault::findall.
Please answer all questions with yes or no.
The starter turns but the engine doesnt fire? no.
The engine has difficulty starting? yes.
The engine cuts out shortly after starting? yes.
Location : distributor
Possible Fault: Worn distributor brushes
No (more) explanations found.
yes.

View File

@@ -0,0 +1,6 @@
:- object(cylinders,
extends(engine)).
:- end_object.

View File

@@ -0,0 +1,25 @@
:- object(distributor,
extends(sparking)).
fault(f1001, 'Condensation in the distributor cap').
fault(f1002, 'Faulty distributor arm').
fault(f1003, 'Worn distributor brushes').
symptom(s1001, 'The starter turns but the engine doesnt fire').
symptom(s1002, 'The engine has difficulty starting').
symptom(s1003, 'The engine cuts out shortly after starting').
symptom(s1004, 'The engine cuts out at speed').
effect(f1001, s1001).
effect(f1002, s1001).
effect(f1002, s1004).
effect(f1003, s1002).
effect(f1003, s1003).
contrary(s1002, s1001).
contrary(s1003, s1001).
:- end_object.

View File

@@ -0,0 +1,6 @@
:- object(electrical,
extends(fault)).
:- end_object.

View File

@@ -0,0 +1,6 @@
:- object(engine,
extends(mechanical)).
:- end_object.

View File

@@ -0,0 +1,72 @@
:- object(fault,
imports(proto_hierarchy)).
:- info([
authors is 'Paulo Moura',
version is 1.0,
date is 2000/4/22,
comment is 'Expert system for automobile fault diagnosis.',
source is 'Example adopted from the LPA Prolog++ documentation.']).
:- public(findall/0).
:- mode(findall, one).
:- private(told_by_user_/2).
:- dynamic(told_by_user_/2).
:- mode(told_by_user_(?nonvar, ?nonvar), zero_or_more).
:- public(find/1).
:- mode(find(?nonvar), zero_or_more).
:- private(exhibited/1).
:- mode(exhibited(+nonvar), zero_or_one).
:- public(contrary/2).
:- mode(contrary(?nonvar, ?nonvar), zero_or_more).
:- public(fault/2).
:- mode(fault(?nonvar, ?nonvar), zero_or_more).
:- public(effect/2).
:- mode(effect(?nonvar, ?nonvar), zero_or_more).
:- public(symptom/2).
:- mode(symptom(?nonvar, ?nonvar), zero_or_more).
findall :-
retractall(told_by_user_(_, _)),
write('Please answer all questions with yes or no.'), nl, nl,
forall(
(::descendant(Where), Where::find(Description)),
(nl, write('Location : '), write(Where), nl,
write('Possible Fault: '), write(Description), nl)),
nl, write('No (more) explanations found.').
find(Description) :-
::fault(Fault, Description),
forall(::effect(Fault, Symptom), exhibited(Symptom)).
exhibited(Symptom) :-
told_by_user_(Symptom, Reply),
!,
Reply = yes.
exhibited(Symptom) :-
::symptom(Symptom, Description),
write(Description), write('? '),
read(Reply),
asserta(told_by_user_(Symptom, Reply)),
Reply = yes,
forall(
(::contrary(Symptom, Contrary);
::contrary(Contrary, Symptom)),
asserta(told_by_user_(Contrary, no))).
:- end_object.

View File

@@ -0,0 +1,6 @@
:- object(fuel_system,
extends(fault)).
:- end_object.

View File

@@ -0,0 +1,6 @@
:- object(lights,
extends(electrical)).
:- end_object.

View File

@@ -0,0 +1,15 @@
:- initialization(
logtalk_load([
cylinders,
distributor,
electrical,
engine,
fault,
fuel_system,
lights,
mechanical,
plugs,
sparking,
starter_motor,
starting])).

View File

@@ -0,0 +1,6 @@
:- object(mechanical,
extends(fault)).
:- end_object.

View File

@@ -0,0 +1,6 @@
:- object(plugs,
extends(sparking)).
:- end_object.

View File

@@ -0,0 +1,6 @@
:- object(sparking,
extends(starting)).
:- end_object.

View File

@@ -0,0 +1,6 @@
:- object(starter_motor,
extends(starting)).
:- end_object.

View File

@@ -0,0 +1,6 @@
:- object(starting,
extends(electrical)).
:- end_object.