domains
element = integer
arbre = a (arbre, element, arbre) ; buit
predicates
nondeterm ordenat (arbre)
nondeterm ordenat2 (arbre, element)
clauses
ordenat2 (a (buit, E, buit), E).
ordenat2 (a (buit, E, R), MR) :-
ordenat2 (R, MR),
E<MR.
ordenat2 (a (L, E, buit), E) :-
ordenat2 (L, ML),
ML<E.
ordenat2 (a (L, E, R), MR) :-
ordenat2 (L, ML), ML<E,
ordenat2 (R, MR), E<MR.
ordenat (A) :-
ordenat2 (A, _).
goal
B=a (a (a (buit, 1, buit), 2, a (buit, 3, buit)), 4, a (a (buit, 5, buit), 6, a (buit, 7, buit))),
ordenat (B)
.
Результат: да