1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2% Pretty portrayal of literals
    3% for the Michalski trains problem
    4
    5aleph_portray(eastbound(T)):-
    6	write('Train '), write(T), write(' is eastbound').
    7aleph_portray(short(C)):-
    8	write('car '), write(C), write(' is short').
    9aleph_portray(closed(C)):-
   10	write('car '), write(C), write(' is closed').
   11aleph_portray(long(C)):-
   12	write('car '), write(C), write(' is long').
   13aleph_portray(open_car(C)):-
   14	write('car '), write(C), write(' is open').
   15aleph_portray(double(C)):-
   16	write('car '), write(C), write(' is double-walled').
   17aleph_portray(jagged(C)):-
   18	write('car '), write(C), write(' has a jagged roof').
   19aleph_portray(shape(C,S)):-
   20	write('car '), write(C), write(' is '), write(S), write('-shaped').
   21aleph_portray(load(C,S,N)):-
   22	write('car '), write(C), write(' has '), write(N),
   23	write(' '), write(S),
   24	(N > 1 -> write('-shaped loads'); write('-shaped load')).
   25aleph_portray(wheels(C,N)):-
   26	write('car '), write(C), write(' has '), write(N), write(' wheels').
   27aleph_portray(has_car(T,C)):-
   28	write(T), write(' has a car '), write(C)