The standard compare/3 predicate already does what you want:
?- compare(O, time(1,1), time(1,1)). O = (=). ?- compare(O, time(1,1), time(1,2)). O = (<). ?- compare(O, time(1,3), time(1,2)). O = (>). ?- compare(O, time(1,3), time(2,2)). O = (<). ?- compare(O, time(3,2), time(2,2)). O = (>).
So...
earlier(T1, T2) :- compare((<), T1, T2).
source share