lower(X,X).
lower
(X
,U
):- X
is U
-1. % duplicatelower
(X
,U
):- U
> 0, U1
is U
-1, !, lower
(X
, U1
).
init(U):-
lower(X,U),
\+(foo(X)), assert(foo(X)),
show_all:-
:- init(5), show_all.
Oi0gZHluYW1pYyBmb28vMS4KIApsb3dlcihYLFgpLgpsb3dlcihYLFUpOi0gWCBpcyBVLTEuICUgZHVwbGljYXRlCmxvd2VyKFgsVSk6LSBVID4gMCwgVTEgaXMgVS0xLCAhLCBsb3dlcihYLCBVMSkuCiAKaW5pdChVKTotCiAgbG93ZXIoWCxVKSwKICBcKyhmb28oWCkpLCBhc3NlcnQoZm9vKFgpKSwKICBmYWlsOyAhLCB0cnVlLgogCnNob3dfYWxsOi0KICBmb28oWCksIHByaW50KFgpLCBubCwgZmFpbDsgISwgdHJ1ZS4KIAo6LSBpbml0KDUpLCBzaG93X2FsbC4=