:- use_module(library(clpr)).

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

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


% Monatliche Rueckzahlung einer Hypothek:
% ?- mortgage(100000, 180, 0.01, 0, MP).
% MP = 1200.168

% Zeitdauer zur Finanzierung einer Hypothek:
% ?- mortgage(100000, T, 0.01, 0, 1400).
% T = 125.901

% Relation zwischen P,B und MR:
% ?- mortgage(P, 180, 0.01, B, MP).
% {MP=0.012*H-0.002*B}
