%advice: person,stock,bond,saving %invest: person,invest amount %state: 0=conservative 1=aggressive %job: 0=not steady 1=steady %layoff 0=low 1=high invest(ali,500). invest(reza,1500). child(ali,0). child(reza,2). age(ali,25). age(reza,45). len(ali,5). len(reza,12). layoff(ali,0). layoff(reza,1). asset(ali,3000). asset(reza,4000). liability(ali,4000). liability(reza,3000). len(zahra,4). layoff(zahra,1). asset(zahra,5000). liability(zahra,2000). age(sima,34). len(sima,12). child(sima,0). asset(sima,3000). liability(sima,2000). advice(X,0,0,100) :-invest(X,N),N<1000. 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):-old(X);job(X,0). p_state(X,0):-young(X), job(X,1), child(X,N),N>0. %p_state(X,0):-young(X), % job(X,1), % child(X,1). 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. %old(X):-age(X,41);age(X,42);age(X,43);.... 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).