% Relation Number Number % % fact % fact fact_fact(_x,_y,_upvals):-_upvals=[],(((_x = 0.0,_y = 1.0);(dif(_x,0.0),{_x-1.0=T2},call(fact_fact(T2,_T1),_upvals),{_x*_T1=T3},_y = T3))). % main fact(X):-_fact = clos([],fact_fact),call_cl(_fact,[2.0,_y]),writeln_(_y),X=_fact.