How to make rules work within the recommendation?

0

People, how do I display the recommended application. Example: 'You should apply in saving'. The swi-prolog returns singleton variables and arguments are not sufficiently instantiated. I'm having a great difficulty in this exercise.

% metapredicate

:-dynamic idadeMaior50/1.
:-dynamic idadeMenor30/1.
:-dynamic casado/1.
:-dynamic filhos/1.
:-dynamic renda10k/1.

:-retractall(idadeMaior50(I)).
:-retractall(idadeMenor30(Y)).
:-retractall(casado(C)).
:-retractall(filhos(F)).
:-retractall(renda(R)).




form:-
    write('Sua idade eh maior que 50? [s/n]'),
    read(I), asserta(idadeMaior50(I)),
    write('Sua idade eh menor que 30? [s/n]'),
    read(Y), asserta(idadeMenor30(Y)),
    write('Casado?' [s/n]),
    read(C), asserta(casado(C)),
    write('Filhos? [s/n]'),
    read(F), asserta(filhos(F)),
    write('Renda maior que R$10.000? [s/n]'),
    read(R), assert(renda10k(R)).




%perfil cliente
Co:-idadeMaior50(sim); (idadeMenor30(nao), casado(sim), filhos(sim)), !.
Ar:- (idadeMenor30(sim);idadeMaior50(nao)), casado(nao), filhos(nao),!.
Mo:- (idadeMenor30(sim); idadeMaior50(sim)), fail.
Mo:- idadeMenor30(sim),casado(sim),filhos(sim).
Mo:- idadeMaior50(sim),casado(nao),filhos(nao).

%recomendacao

poup :- Co.
poup :- Mo,renda10k(nao),filhos(sim).
Mx :- Co,renda10k(sim).
Mx :- Ar,renda10k(nao).
Mx :- Mo.
Ac :- Ar.
Ac :- Mo,(renda10k(sim);filhos(nao)).
    
asked by anonymous 30.06.2018 / 01:27

0 answers