% vertex/1
:- dynamic vertex/1.
vertex('A').
vertex('B').
vertex('C').
vertex('D').
?- vertex(X).
% X = 'A' ;
% X = 'B' ;
% X = 'C' ;
% X = 'D'.
% edge/2
:- dynamic edge/2.
edge('A', 'B').
edge('B', 'A').
edge('A', 'C').
% edge('C', 'A').
edge('C', 'D').
edge('D', 'C').
?- edge('A', X).
% X = 'B' ;
% X = 'C'.
% graph/1
:- dynamic graph/1.
graph(['A', 'B', 'C', 'D']).
?- graph(X).
% X = ['A', 'B', 'C', 'D'].
% undirected_edge/2
undirected_edge(X, Y) :-
edge(X, Y),
edge(Y, X).
?- undirected_edge('A', X).
% X = 'B' ;
% false.
% remove_edge/2
remove_edge(X, Y) :-
edge(X, Y),
retract(edge(X, Y)).
?- remove_edge('A', 'B').
% true ;
% false.
?- edge('A', 'B').
% false.
Updated on May 27, 2023 Changelog