invest(ali,500). invest(reza,1300). child(ali,0). child(reza,2). age(ali,45). age(reza,35). len(ali,12). len(reza,8). len(zahra,2). layoff(ali,0). layoff(reza,0). layoff(zahra,1). asset(ali,3000). asset(reza,2000). asset(zahra,10000). liability(ali,5000). liability(reza,1500). liability(zahra,4000). invest(narges,900). age(narges,29). len(narges,12). child(narges,0). asset(narges,5000). liability(narges,2000). age(hasan,50). asset(hasan,5000). liability(hasan,3000). child(hasan,0). %al(ali,3000,5000) name,asset,liability advice(X,0,0,100):-invest(X,N),N<1000. %name,stock,bond,saving advice(X,0,0,100) :-p_state(X,0),f_state(X,0). advice(X,60,30,10):-p_state(X,0),f_state(X,1). advice(X,20,40,40):-p_state(X,1),f_state(X,0). advice(X,100,0,0) :-p_state(X,1),f_state(X,1). p_state(X,0):-old(X). p_state(X,0):-job(X,0). p_state(X,0):-young(X), job(X,1), child(X,N),N>0. p_state(X,1):-young(X), job(X,1), child(X,0). young(X):-age(X,N),N<40. old(X):-age(X,N),N>=40. job(X,1):-len(X,N),N>=10. job(X,1):-len(X,N),N>=3,N<10, layoff(X,0). job(X,0):-len(X,N),N>=3,N<10, layoff(X,1). job(X,0):-len(X,N),N<3. f_state(X,0):-asset(X,N), liability(X,M), NM,N<2*M, child(X,K),K>0. f_state(X,1):-asset(X,N), liability(X,M), N>2*M. f_state(X,1):-asset(X,N), liability(X,M), N>M,N<2*M, child(X,0). % layoff: 0=low 1=high % job: 0=not steady, 1=steady % 0=conservative 1=aggressive