galaxia(via-lactea). galaxia(hidra). galaxia(.:.). % é_uma_estrela_da(sol,via_lactea). sol é_uma_estrela_da via_lactea. estrela(sol,via-lactea). estrela(epsilon,hidra). estrela('<|>', .:.). planeta(terra,sol). planeta(marte,sol). planeta(venus,sol). planeta(jupiter,sol). planeta(saturno,sol). planeta(e1,epsilon). planeta(e2,epsilon). planeta(e3,epsilon). cometa(halley,sol). cometa(hale-bopp,sol). satelite(lua,terra). satelite(deimos,marte). satelite(fobos,marte). satelite(europa,jupiter). satelite(ganimedes,jupiter). satelite(io,jupiter). satelite(pan,saturno). satelite(atlas,saturno). satelite(prometeu,saturno):- true. orbita(X,Y):- satelite(X,Y). orbita(X,Y):- planeta(X,Y). orbita(X,Y):- cometa(X,Y). orbita(X,Y):- estrela(X,Y). orbita(X,Y):- satelite(X,Z), planeta(Z,Y). orbita(X,Y):- planeta(X,Z), estrela(Z,Y). orbita(X,Y):- cometa(X,Z), estrela(Z,Y). orbita(X,Y):- satelite(X,Z), planeta(Z,W), estrela(W,Y). /* orbita(X,Y):- satelite(X,Z), orbita(Z,Y). orbita(X,Y):- planeta(X,Z), orbita(Z,Y). orbita(X,Y):- cometa(X,Z), orbita(Z,Y). orbita(X,Y):- estrela(X,Z), orbita(Z,Y). orbita(X,Y):- ( satelite(X,Y) ; planeta(X,Y) ; cometa(X,Y) ; estrela(X,Y)) ; ( satelite(X,Z) ; planeta(X,Z) ; cometa(X,Z) ; estrela(X,Z)), orbita(Z,Y). */ origem(X,'Universo'):- galaxia(X). origem(X,Y):- orbita(X,Y). originou(X,Y):- origem(Y,X). /* Atomos */ nat(0). nat(s(X)):- nat(X). soma(0,X,X). soma(s(X),Y,s(Z)):- soma(X,Y,Z). traduz(0,0). traduz(s(X), 1+N):- traduz(X,N). /* traduz(0,0). traduz(s(X),N):- traduz(X,N1), N is 1+N1. */ sub(X,Y,Z):- soma(Y,Z,X). sub1(X,Y,Z):- soma(Z,Y,X). pessoa(nome('João','G. Rosa'),masc,data_nasc(27,6,1908),est-civil(casado,nome('Ligia','Cabral Penna'),filhos([nome('Vilma'),sexo(fem),nome('Agnes'),sexo(fem)])),escritor). pessoa(nome('Fernando','Pessoa'),masc, data_nasc(20,1,1900), est-civil(solteiro,_,filhos([])), poeta). pessoa(nome('Cecilia','Meirelles'),fem,data_nasc(3,2,1901),est-civil(viuva,nome('Jose','Pinheiro'), filhos([nome('Antonio'),sexo(masc),nome('Maria'),sexo(fem)])), poeta). /* Quem sao os poetas? */ poeta(X):- pessoa(X,_,_,_,poeta). /* Quem e casado? */ casado(X):- pessoa(X,_,_,est-civil(casado,_,_),_). /* Quem tem filhos? */ filhos(X):- pessoa(X,_,_,est-civil(_,_,filhos([_|_])),_).