:- use_module(library(clpr)).

% Parameter bei Berechnung einer Hypothek:
% P : Kapital
% T : Laufzeit in Monaten
% IR: monatliche Zinssatz (z.B. 0.01)
% B : Restbetrag nach Ende der Laufzeit
% MP: monatliche Rueckzahlung

% Laufzeit maximal ein Monat:
mortgage(P,T,IR,B,MP) :-
        { T >= 0, T =< 1, B = P * (1 + IR*T) - MP*T }.

% Laufzeit mehr als ein Monat:
mortgage(P,T,IR,B,MP) :-
        { T > 1 }, mortgage(P * (1+IR) - MP, T-1, IR, B, MP).



% ?- mortgage(100000, 180, 0.01, 0, MP).
% MP = 1200.1680620915147 ? 

% | ?- mortgage(100000, T, 0.01, 0, 1400).
% T = 125.90119773832774

% | ?- mortgage(100000, 180, 0.01, B, 1000).
% B = 1.0E+05

% | ?- mortgage(100000, 180, 0.01, B, 800).
% B = 199916.039507124

% | ?- mortgage(P,180,0.01,B,MP).
% {MP=0.012001680620915141*P-0.002001680620915135*B}