:- 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).



% ?- mortgage(100000, 180, 0.01, 0, MP).
% MP = 1200.1680620915147 ? 
% yes
% | ?- mortgage(100000, T, 0.01, 0, 1400).
% T = 125.90119773832774 ? 
% yes
% | ?- mortgage(100000, 180, 0.01, B, 1000).
% B = 1.0E+05 ? 
% yes
% | ?- mortgage(100000, 180, 0.01, B, 800).
% B = 199916.039507124 ?
