6b4bde14e1
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1903 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
80 lines
1.6 KiB
Plaintext
80 lines
1.6 KiB
Plaintext
|
|
:- category(proto_hierarchy,
|
|
implements(proto_hierarchyp)).
|
|
|
|
:- info([
|
|
version is 1.1,
|
|
author is 'Paulo Moura',
|
|
date is 2006/2/20,
|
|
comment is 'Prototype hierarchy predicates.']).
|
|
|
|
parent(Parent) :-
|
|
self(Self),
|
|
extends_object(Self, Parent).
|
|
|
|
parents(Parents) :-
|
|
self(Self),
|
|
findall(Parent, extends_object(Self, Parent), Parents).
|
|
|
|
ancestor(Ancestor) :-
|
|
self(Self),
|
|
ancestor(Self, Ancestor).
|
|
|
|
ancestor(Self, Ancestor) :-
|
|
extends_object(Self, Ancestor).
|
|
ancestor(Self, Ancestor) :-
|
|
extends_object(Self, Parent),
|
|
ancestor(Parent, Ancestor).
|
|
|
|
ancestors(Ancestors) :-
|
|
self(Self),
|
|
findall(Ancestor, ancestor(Self, Ancestor), Ancestors).
|
|
|
|
extension(Prototype) :-
|
|
self(Self),
|
|
extends_object(Prototype, Self).
|
|
|
|
extensions(Prototypes) :-
|
|
self(Self),
|
|
findall(Prototype, extends_object(Prototype, Self), Prototypes).
|
|
|
|
leaf(Leaf) :-
|
|
self(Self),
|
|
leaf(Self, Leaf).
|
|
|
|
leaf(Self, Leaf) :-
|
|
extends_object(Leaf, Self),
|
|
\+ extends_object(_, Leaf).
|
|
leaf(Self, Leaf) :-
|
|
extends_object(Object, Self),
|
|
leaf(Object, Leaf).
|
|
|
|
leaves(Leaves) :-
|
|
self(Self),
|
|
( setof(Leaf, leaf(Self, Leaf), Leaves) ->
|
|
true
|
|
; Leaves = []
|
|
).
|
|
|
|
descendant(Descendant) :-
|
|
self(Self),
|
|
descendant(Self, Descendant).
|
|
|
|
descendant(Self, Descendant) :-
|
|
extends_object(Descendant, Self).
|
|
descendant(Self, Descendant) :-
|
|
extends_object(Descendant, Self),
|
|
\+ extends_object(Descendant, Self).
|
|
descendant(Self, Descendant) :-
|
|
extends_object(Subclass, Self),
|
|
descendant(Subclass, Descendant).
|
|
|
|
descendants(Descendants) :-
|
|
self(Self),
|
|
( setof(Descendant, descendant(Self, Descendant), Descendants) ->
|
|
true
|
|
; Descendants = []
|
|
).
|
|
|
|
:- end_category.
|