• Nenhum resultado encontrado

PROGRAMAÇÃO EM LÓGICA

N/A
N/A
Protected

Academic year: 2022

Share "PROGRAMAÇÃO EM LÓGICA"

Copied!
18
0
0

Texto

(1)

Universidade Do Minho

Mestrado Integrado Em Engenharia Biomédica

Braga, Novembro 2012

Programação Em Lógica, Conhecimento e Raciocínio

PROGRAMAÇÃO EM LÓGICA

Trabalho Prático - 1ª Parte

(2)

Docentes: César Analide José Neves

Hugo Gomes (58536) Marta Moreira (54459) Telma Veloso (58521) Grupo 5:

Universidade Do Minho

Mestrado Integrado Em Engenharia Biomédica Programação Em Lógica, Conhecimento e Raciocínio

PROGRAMAÇÃO EM LÓGICA

Trabalho Prático - 1ª Parte

(3)

RESUMO

Pretendia-se, partindo de um problema aproximado à realidade, desenvolver uma solução em lógica adaptada a um dado universo de discurso, a partir do qual se pretendia representar uma árvore genealógica familiar afectada de Hemofilia.

Neste sentido, foi caracterizada uma base de conhecimento e desenvolvido um conjunto de mecanismos de raciocínio que viabilizassem a implementação de diversas funcionalidades, desde a determinação de relações familiares entre indivíduos à previsão da compleição genética de um novo descendente. De forma a maximizar a consistência do sistema, foram criadas condições restritivas à inserção e remoção de conhecimento, sobretudo com o intuito de prevenir a duplicação e a desagregação do mesmo.

O referido sistema de representação de conhecimento e raciocínio foi implementado recorrendo à linguagem de programação Prolog e ao software SICStus.

(4)

 

ÍNDICE

1. Introdução

2. Preliminares

3. Abordagem ao Problema 3.1. Cláusulas

3.1.1. Construção da Base de Conhecimento 3.1.2. Definição de cláusulas de reacções familiares

3.1.3. Definição de cláusulas dependentes de relações familiares 3.1.4. Definição de cláusulas dependentes do indivíduo

3.1.5. Definição de cláusulas de casamento 3.1.6. Definição de cláusulas relativas à hemofilia 3.1.7. Definição de cláusulas auxiliares

3.2. Invariantes

3.2.1 Invariantes de inserção 3.2.2. Invariantes de Remoção 4. Conclusão

5. Bibliografia

Í

2 3 4 5 5 6 7 8 9 9 10 11 11 12 14 15

(5)

1. INTRODUÇÃO

O presente relatório, elaborado no âmbito da Unidade Curricular de Programação em Lógica, Conhecimento e Raciocínio, visa descrever o processo de desenvolvimento de uma solução capaz de dar resposta ao problema de criar um sistema de representação de conhecimento e raciocínio com capacidade para representar um universo de discurso através do qual se pretende descrever uma árvore genealógica familiar.

Como objectivos centrais do trabalho desenvolvido, destacam-se a caracterização de uma base de conhecimento precisa e coesa, o desenvolvimento de mecanismos de raciocínio capazes de fazer face aos problemas passíveis de derivar dessa mesma base e a criação de soluções que vão ao encontro da satisfação das necessidades de um hipotético utilizador final do sistema. No sentido de enquadrar o problema desenvolvido na área da Engenharia Biomédica, optou-se por associar uma doença genética – a Hemofilia – aos indivíduos da linhagem representada, utilizando-se como base de construção da árvore genealógica o modelo da Família Real Britânica, amplamente afectada por esta condição durante várias gerações. A inclusão deste parâmetro visou ainda alargar o conjunto de mecanismos de raciocínio passíveis de desenvolver, possibilitando a construção de um universo mais completo e realista. De forma a contextualizar o leitor, e dado que existem determinados conceitos fundamentais à compreensão de algumas das metodologias desenvolvidas, proceder- se-á a uma breve introdução teórica à doença (vide Preliminares).

Pretende-se, por intermédio deste trabalho escrito, explicitar e dar a compreender não só o problema proposto, mas também a abordagem seguida até à implementação da solução final.

(6)

  3

2. PRELIMINARES

A palavra Hemofilia designa um grupo de distúrbios genéticos hereditários que afectam a capacidade fisiológica do controlo da coagulação, nomeadamente ao nível da diminuição dos níveis de factores de coagulação presentes no sangue [1]. Como consequência, em caso de lesão ao nível dos vasos sanguíneos, existe efectivamente a formação de um trombo plaquetário, mas a ausência de factores de coagulação impede a formação de fibrina, responsável pela formação e manutenção de um coágulo. Assim, um indivíduo hemofílico não sangra necessariamente de forma mais intensa do que um indivíduo normal, mas pode sangrar durante períodos de tempo bastante mais prolongados, o que pode revelar-se fatal ou permanentemente debilitante, caso as hemorragias ocorram ao nível do cérebro ou das articulações [1,2]. As duas variantes de Hemofilia, A e B – denominadas, respectivamente, de Hemofilia Clássica e de Doença de Christmas –, diferem no factor de coagulação afectado (VIII ou IX) e a respectiva incidência é de 1 para cada 5.000 e 1 para cada 20.000 nascimentos do sexo masculino.

Analogamente à grande maioria das doenças genéticas recessivas associadas ao cromossoma X, a Hemofilia apresenta uma probabilidade de ocorrência bastante mais elevada em indivíduos do sexo masculino, já que as mulheres possuem dois cromossomas X, enquanto que os homens possuem apenas um – o que garante que a doença se manifesta obrigatoriamente, na presença de um cromossoma defeituoso. Nas mulheres, a Hemofilia é considerada muito rara, já que, para que se manifestasse, seria necessário herdar dois cromossomas defeituosos – isto é, ser descendente de um Pai hemofílico e de uma Mãe portadora –, pelo que o cenário mais comum é os indivíduos do sexo feminino serem apenas portadores [1]. Na sequência desta explicação, consideram-se quatro realidades genéticas possíveis (considerem-se os genes a representados tipograficamente a negrito e sublinhado genes defeituosos):

§ Pai Normal (XY) & Mãe Normal (XX): XY, XX, XY, XX

§ Pai Normal (XY) & Mãe Portadora (XX): XY, XX, XY, XX

§ Pai Hemofílico (XY) & Mãe Normal (XX): XY, XX, XY, XX

§ Pai Hemofílico (XY) & Mãe Portadora (XX): XY, XX, XY, XX

É possível extrapolar, a partir desta informação, as probabilidades associadas às possíveis condições genéticas de um descendente, dada a informação genética dos respectivos progenitores.

(7)

3. ABORDAGEM AO PROBLEMA

O problema de representação do universo de discurso que veicula a descrição de uma árvore genealógica pressupõe a definição de um conjunto de axiomas e regras de inferência capazes de caracterizá-lo [3]. Neste sentido, extrapolaram-se, a partir da árvore representada na Fig. 1, os elementos necessários à construção de uma base de conhecimento precisa e consistente, tendo presente a necessidade de adaptar a representação de informação de forma a maximizar a eficiência da solução encontrada.

Numa primeira fase, e de modo a clarificar as exigências inerentes ao sistema, delinearam-se as funcionalidades a implementar:

01. Determinar as relações familiares de um indivíduo;

02. Determinar o género e a naturalidade de um indivíduo;

03. Determinar a relação familiar entre dois indivíduos;

04. Determinar os descendentes e antecessores de um indivíduo;

Fig. 1 – Esquema conceptual da árvore genealógica utilizada. Os indivíduos associados ao gene da Hemofilia encontram-se representados por um quadrado ou círculo bicolor – Homem Hemofílico ou Mulher Portadora, respectivamente.

(8)

  5 05. Determinar a idade de um indivíduo;

06. Determinar se um indivíduo se encontra vivo ou morto;

07. Determinar a condição genética de um indivíduo relativamente à Hemofilia;

08. Determinar a probabilidade de um descendente vir a sofrer ou ser portador de Hemofilia;

09. Inserir e remover relações familiares independentes;

10. Inserir e remover informação pessoal acerca dos indivíduos.

Duas das premissas mais importantes às quais as duas últimas funcionalidades devem obedecer são a de não permitir a inserção de conhecimento repetido nem a remoção de informação da qual dependam outras informações, sendo, por isso, necessário definir invariantes que delimitem as possibilidades de manipulação do conhecimento.

3.1 CLÁUSULAS

Por definição, uma cláusula é constituída por um átomo – cabeça da cláusula – seguido de um sinal equiparável ao sinal ⟸ de implicação da lógica (:-) e de uma sucessão finita de átomos – corpo da cláusula –, separados por um sinal equiparável ao

∧ da lógica (,), sendo terminada por um ponto (.). No caso específico de o corpo da cláusula ser vazio, esta denomina-se de facto, denominando-se de regra em caso contrário [3,4].

3.1.1. CONSTRUÇÃO DA BASE DE CONHECIMENTO

Os dados de suporte ao problema, isto é, a informação factual, são inseridos na base de conhecimento sob a forma de factos. Interessa, neste contexto, explicitar factualmente as relações de parentesco representadas na árvore genealógica, bem como a informação pessoal relativa a cada indivíduo. Posto isto, estabeleceram-se cinco predicados:

§ progenitor(Z,X).

§ masculino(X)

§ feminino(X).

§ casamento(M,F,D).

§ individuo(N,L,DN,DM,H).

(9)

Os predicados progenitor – que define o progenitor de um indivíduo – e casamento – que define o casamento entre dois indivíduos – têm, respectivamente, aridade 2 e 3, tomando como argumentos o nome do progenitor e do descendente, no primeiro caso, e o nome de cada um dos cônjuges e a data do casamento, no segundo.

Por sua vez, os predicados masculino e feminino – que definem o género de um indivíduo – apresentam aridade 1 e tomam como argumentos apenas o nome do indivíduo em questão. Por último, o predicado individuo – que define a informação pessoal de um indivíduo – possui aridade 5, sendo definido através de cinco argumentos, nomeadamente o nome, a naturalidade, os anos de nascimento e de morte e a condição genética relativamente à Hemofilia. Constituem exemplos de aplicação de cada um dos predicados mencionados anteriormente:

§ progenitor(‘vitoria guerra’,’leopoldo bravo’).

§ masculino(‘alberto bravo’).

§ feminino(‘vitoria guerra’).

§ casamento(‘vitoria guerra’,’alberto bravo’,1902).

§ individuo(‘vitoria guerra’,braga,1883,1941,1).

3.1.2. DEFINIÇÃO DE CLÁUSULAS DE RELAÇÕES FAMILIARES

Partindo do modelo de representação de cláusulas supracitado, estabeleceram- se as cláusulas referentes às diferentes relações familiares – todas elas binárias, de aridade 2. A título de exemplo, apresenta-se a cláusula do problema que representa a relação “é Mãe de”, acompanhada do respectivo cabeçalho (Fig. 2):

Daqui se retira que o átomo mae(M,F) é verdadeiro, independentemente da afectação, se, e somente se, quaisquer que sejam M e F, existe um M tal que progenitor(M,F) e feminino(M) sejam ambos verdadeiros [4]. De forma semelhante, extrapolaram-se as cláusulas para as restantes relações familiares consideradas relevantes neste contexto específico: pai, filhos (filha e filho), avós (avó e avô), netos (neta e neto), irmãos (irmã e irmão), tios (tia e tio), sobrinhos (sobrinha e sobrinho), primos (prima e primo), bisavós (bisavó e bisavô) e bisnetos (bisneta e bisneto). Casos

Fig. 2 – Cláusula respeitante à relação familiar de Mãe.

(10)

  7 de definições de predicados que envolvem, iterativamente, um grande número de relações familiares – por exemplo, primos – beneficiam da aplicação do comando trace.

no decorrer da sua utilização, já que esta ferramenta permite acompanhar iteração a iteração a solução do problema, veiculando uma compreensão mais completa do funcionamento dos predicados e permitindo identificar e corrigir quaisquer erros que possam eventualmente surgir na construção de um mecanismo.

Note-se que existem, para cada uma das relações, três cláusulas distintas, o que veicula um leque de questões no universo mais amplo e realista. Torna-se, assim, possível colocar a questão da relação “é Avó de”, por exemplo, de três formas (Fig. 3):

As cláusulas de relação familiar foram, então, construídas de forma a que o utilizador possa colocar a questão tendo ou não em consideração o género do parente.

Assim, a relação “Vitória Guerra é Avó de Alice Bravo” é apenas considerada válida no universo contextual do problema nos casos em que a cláusula consultada não define o genero (avos) ou possui, no corpo, um átomo que especifica o género feminino (avof).

Pese embora se pudesse facilmente manipular o mesmo conhecimento partindo apenas de um predicado – o avos –, procurou-se simplificar a tarefa do utilizador.

3.1.3. DEFINIÇÃO DE CLÁUSULAS DEPENDENTES DE RELAÇÕES FAMILIARES

Para além das cláusulas de relações familiares descritas em 3.1.2., definiram-se mecanismos de raciocínio cuja construção se socorre destas, como é o caso das cláusulas indicadas de seguida1.

§ grau(X,Y,G) :- <corpo>.

§ descendente(X,Y) :- <corpo>.

§ antecessor(X,Y) :- <corpo>.

§ ascende(X,G,S) :- <corpo>.

§ relacao(X,Y,R) :- <corpo>.

Pretende-se com o grau representar o grau de parentesco entre dois indivíduos,                                                                                                                

1  por questões de simplificação e organização, apresentam-se apenas as cabeças das cláusulas.  

Fig. 3 – Formas possíveis de apresentação da questão da relação “é Avó de”.

(11)

sendo, por isso, os argumentos definidos pelo nome de dois indivíduos e uma variável em representação do valor numérico do grau. A construção deste predicado envolve necessariamente a definição prévia dos predicados progenitor(Z,X). e filhos(X,Y)., na medida em que a determinação do grau implica que se especifique como base o grau mínimo 1, que ocorre na relação entre progenitores e respectivos filhos. De forma análoga, o predicado descendente apoia-se nesses mesmos dois predicados para representar as relações de descendência entre indivíduos, estando o predicado antecessor responsável pela funcionalidade inversa, a de determinar relações de ascendência. Complementarmente, o predicado ascende permite, dado um grau de parentesco N, determinar todos os indivíduos de grau N que ascendem a um dado indivíduo X. Por último, o predicado relacao propõe-se aferir a relação familiar entre dois dados indivíduos. Logicamente, a construção deste predicado baseou-se em todos os predicados de relações familiares mencionados em 3.1.2.

3.1.4. DEFINIÇÃO DE CLÁUSULAS DEPENDENTES DO INDIVÍDUO

No que concerne o desenvolvimento de mecanismos de raciocínio que manipulem o conhecimento armazenado no predicado individuo(N,L,DN,DM,H)., optou- se por incorporar quatro clásulas:

§ falecido(N) :- <corpo>.

§ vivo(N). :- <corpo>.

§ idade(N,I). :- <corpo>.

§ idademorte(N,I). :- <corpo>.

§ naturalidade(N,L). :- <corpo>.

A cláusula falecido – de aridade 1, pois apenas toma como argumento um nome – permite determinar se um indivíduo da árvore se encontra morto, com base no conhecimento associado à variável que armazena a data de morte (DM). No caso de o indivíduo se encontrar vivo, o valor armazenado na variável DM é não numérico. De forma considerar os predicados anteriores no cálculo da idade do indivíduo, definiram- se, partindo da premissa de que não é lógico determinar a idade de alguém que já faleceu, duas regras distintas: idade e idademorte. A regra idade possibilta o cálculo da idade de um indivíduo na condição, e somente na condição, de este estar vivo. A tentativa de cálculo de idade de um indivíduo falecido resulta num aviso ao utilizador de que deve usar não o predicado idade, mas o idademorte, que procede ao cálculo da idade do indivíduo aquando da sua morte. A título de exemplo, apresenta-se uma

(12)

  9 demonstração do funcionamento de ambos os predicados, na Fig. 4:

Por último, o predicado naturalidade reporta-se à localidade de onde o indivíduo é natural, recebendo como argumentos, precisamente, o nome do indivíduo e a localidade, manipulando o conhecimento definido no facto individuo. Pese embora existam duas outras cláusulas dependentes do individuo, optou-se por segregá-las das restantes, dado que envolvem a problemática da Hemofilia.

3.1.5. DEFINIÇÃO DE CLÁUSULAS DE CASAMENTO

A união entre dois indivíduos – definida factualmente na base de conhecimento através da cláusula casamento(M,F,D)., explanada em 3.1.1. – encontra-se associada a duas clásulas:

§ casado(F,M) :- <corpo>.

§ datacasamento(F,M,D) :- <corpo>.

A primeira regra permite determinar se um dado par de indivíduos é casado, abrindo ainda a hipótese de colocar a pergunta “Com quem é F (ou M) casado?”, caso se especifique apenas um dos indivíduos, deixando uma das variáveis insubstituídas – como, aliás, acontece para todos os predicados previamente referidos. A cláusula datacasamento veicula o conhecimento acerca da data de um matrimónio entre dois indivíduos.

3.1.6. DEFINIÇÃO DE CLÁUSULAS RELATIVAS À HEMOFILIA

No que concerne a doença introduzida na árvore genealógica, o conhecimento genético associado a cada indivíduo encontra-se, conforme referido anteriormente, armazenado no predicado individuo, mais precisamente na variável H, que pode assumir dois valores distintos: 0 e 1. Ao valor 0 está associado um indivíduo normal, não afectado pela doença, enquanto que o valor 1 representa ou um homem hemofílico ou uma mulher portadora (vide Preliminares). Com base na informação disponível, optou-se

Fig. 4 – Funcionamento dos predicados idade e idademorte.

(13)

por criar dois predicados, analise e probabilidade, com vista a manipular o conhecimento no sentido de, respectivamente, determinar a condição genética do indivíduo – portador, hemofílico ou normal – e aferir, dado dois indivíduos, a probabilidade de ocorrência de cada uma das referidas condições genéticas no descendente.

§ analise(N,R) :- <corpo>.

§ probabilidade(NP,NM,R) :- <corpo>.

O predicado probabilidade representa outro exemplo de grande interesse a nível de desconstrução através da ferramenta trace. – que, aliás, se revelou, neste caso específico, fundamental na identificação de erros que sucessivamente impediam o correcto funcionamento da regra, numa fase inicial –, dado que fornece um desdobramento extremamente elucidativo das tentativas de unificação dos valores de H de cada indivíduo com a combinação de valores definida para cada uma das situações possíveis.

3.1.7. DEFINIÇÃO DE CLÁUSULAS AUXILIARES

Por último, foram construídos predicados que, não derivando directamente do problema central, se revelam fundamentais no processo de implementação das funcionalidades que se pretendiam inerentes ao sistema, como seja a de inserir e remover relações familiares independentes. Neste sentido, foram desenvolvidas quatro regras:

§ solucoes(T,Q,S) :- <corpo>.

§ comprimento([X|L],N) :- <corpo>.

§ nao(Questao) :- <corpo>.

§ evolucao(T) :- <corpo>.

§ regressao(T) :- <corpo>.

O predicado solucoes, de aridade 3, veicula um mecanismo que permite calcular todas as soluções de uma dada questão Q, inserindo, uma primeira fase, todas as respostas na memória – utilizando um assert – e agrupando-as, de seguida, numa lista.

Tanto a cláusula solucoes como a cláusula comprimento, que quantifica o número de elementos de uma dada lista, se revelam fundamentais na implementação dos invariantes, discutidos mais à frente. A negação por falha, por sua vez, é veiculada pelo predicado nao.

A inserção e remoção de conhecimento são reguladas pelas cláusulas evolucao e

(14)

  11 regressao, que se encontram delimitadas por predicados lógicos que devem ser cumpridos de forma a que as referidas funcionalidades possam suceder – os já referidos invariantes.

3.2 INVARIANTES

A garantia de consistência e coerência de um dado sistema passa, invariavelmente, pela estipulação de “condições que devem manter-se verdadeiras na base de conhecimento sempre que nova informação é inserida ou algo é removido” [5] – os invariantes.

3.2.1. INVARIANTES DE INSERÇÃO

Os invariantes de inserção assumem, conforme referido anteriormente, um papel fundamental na garantia de consistência do sistema implementado, sobretudo devido à impossibilidade que imputa ao utilizador de introduzir na base conhecimento duplicado.

Definiram-se, neste contexto, seis invariantes gerais para a inserção, que vinculam as seguintes restrições à manipulação do conhecimento:

§ A informação relativa à relação familiar progenitor, definida entre dois dados indivíduos, quando existe, apenas pode constar da base de conhecimento uma única vez;

§ A informação de um indivíduo relativa ao género (masculino e feminino) apenas pode constar da base de conhecimento uma única vez;

§ Não pode existir mais do que um registo do mesmo indivíduo na base de conhecimento;

§ Cada indivíduo pode estar associado a apenas um registo de casamento, na base de conhecimento.

A título de demonstração do funcionamento destas estruturas restritivas, expõe- se, na Fig. 5 uma tentativa de inserir o registo duplicado de cada um dos predicados implicitamente referidos acima:

Fig. 5 – Demonstração da tentativa de inserção de informação duplicada na base de conhecimento.

(15)

De forma a fortalecer as restrições em torno da adição de conhecimento à base, definiram-se ainda nove outros invariantes, mais específicos:

§ Cada indivíduo não pode ter mais do que dois progenitores;

§ Cada indivíduo não pode ter mais do que um Pai;

§ Cada indivíduo não pode ter mais do que uma Mãe;

§ O ano de nascimento de um indivíduo tem de ser igual ou inferior ao ano actual;

§ O ano de morte de um indivíduo tem de ser igual ou inferior ao ano actual e igual ou superior ao seu ano de nascimento;

§ O ano de nascimento de um progenitor tem de ser inferior ao ano de nascimento do seu descendentes.

§ O ano de casamento de um indivíduo tem de ser igual ou inferior ao ano actual e superior ao ano de nascimento de cada um dos cônjuges.

Torna-se necessário referir que a limitação de inserção de conhecimento repetido ao nível do predicado progenitor delimita necessariamente as restantes relações familiares, já que, ao não ser admissível a existência de mais de dois Progenitores, nunca será plausível a existência de, por exemplo, mais de quatro Avós, uma vez que o predicado avos é construído tendo como base dois predicados progenitor.

Visto que a grande maioria dos invariantes necessita da data – mais precisamente, do ano – actual do sistema, definiu-se, no conjunto de declarações iniciais, a cláusula :-use_module(library(system))., que permite implementar um módulo que veicula a funcionalidade datime – manipulada, no âmbito do problema, de forma a retornar apenas o ano actual do sistema.

3.2.2 INVARIANTES DE REMOÇÃO

Assim como o processo de inserção, também o de remoção de conhecimento necessita de obedecer a determinadas formulações restritivas. O conceito de construção dos invariantes referenciais de remoção baseou-se, sobretudo, na ideia de não permitir a desagregação do conhecimento e a introdução de incoerências na base. Definiram-se, neste sentido, quatro invariantes, destinados a impedir a remoção de um indivíduo caso exista informação que lhe esteja associada, nomeadamente informação relativa ao género, ao casamento e à qualidade de progenitor ou descendente. Segue-se um

(16)

  13 exemplo de implementação de um dos invariantes de remoção, mais precisamente aquele relativo à não permissão de remoção de um indivíduo associado a uma cláusula enquanto progenitor:

-individuo(N,L,DN,DM,H) :: (solucoes( N,progenitor(N,X),S ),comprimento( S,C ), C == 0).

Através da postulação dos invariantes de remoção, estabelece-se a garantia de que o conhecimento não é fragmentado nem perde coerência.

(17)

4. CONCLUSÃO

Criou-se com sucesso uma solução capaz de fazer face ao problema de implementação de um sistema de representação de conhecimento e raciocínio cuja envolvência implicava a descrição de uma árvore genealógica familiar, sendo que se logrou ainda a associação de uma condição genética à mesma. Expandiu-se, desta forma, a esfera de situações problemáticas passíveis de serem resolvidas por intermédio do desenvolvimento e aplicação de mecanismos de raciocínio apropriados à especificidade de cada uma.

A abordagem utilizada envolveu a descontrução lógica dos problemas a representar, previamente ao recurso à linguagem de programação Prolog para efectivamente associar-lhes uma vertente de representação física. Desta forma, assegurou-se que não só a base de conhecimento, mas também os predicados e as condições de controlo foram construídas de forma pautada, maximizando a consistência e coerência do sistema final.

(18)

 

15

5. BIBLIOGRAFIA

[1] PINTO, G. et al. Hemofilia A. Faculdade Federal de Ciências Médicas de Porto Alegre. Brasil, 2001. Disponível em:

<http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=9&ved=0CE0 QFjAI&url=http%3A%2F%2Fgenetica.ufcspa.edu.br%2Fseminarios%2520textos%

2FHemofiliaA.pdf&ei=GGqYULXBAYy5hAeS6IHoBA&usg=AFQjCNEXwp5sDceYxA8 3lVVpVrL6hEcmTw&sig2=LBF2c2t4QcpijyYMCvbCDw>.

[2] What Is A Bleeding Disorder? National Hemophilia Foundation. USA, 2006.

Disponível em:

<http://www.hemophilia.org/NHFWeb/MainPgs/MainNHF.aspx?menuid=26&content id=5&rptname=bleeding>.

[3] BRATKO, I. PROLOG: Programming for Artificial Intelligence. Third Edition.

Pearson, 2009.

[4] TORRES, D. Introdução à Programação em Lógica. Universidade de Aveiro – Departamento de Matemática, 2000.

[5] NEVES, J. et al. Paradigmas da Representação do Conhecimento: Uma Abordagem Prática. Universidade do Minho, 2000.

 

Referências

Documentos relacionados

Antes de passar à representação de conhecimento através da Programação em Lógica, usando Prolog, apresenta-se um breve enquadramento da Programação em Lógica

Algoritmos e Programação Estruturada – Conceitos Importantes Estrutura de dados.. Algoritmos e Programação Estruturada –

A Tabela 3 apresenta os parâmetros de perda de cocção, volume específico, dureza, atividade de água (Aa) e escore total para o pão controle e para os pães adicionados de mucilagem

A correlação significativa entre a presença de zona afótica na caverna e de riqueza total e de troglóbios (Tabela 1) pode se dever meramente ao fato de cavernas

Um comando de atribuição permite-nos fornecer um valor a uma variável (guardar um valor em uma gaveta), em que o tipo do dado deve ser compatível com o tipo da

Já, outro estudo demonstrou que os resultados mostraram que os fatores que mais motivam as pessoas a praticarem academia são: saúde, aptidão física, disposição,

Takeuchi e Nonaka (2008), apresentam a importância de se estimular e/ou proporcionar condição para a criação de conhecimento dos indivíduos, de modo que a organização

● Dica: ao utilizar o método puts com as aspas (para escrever textos), dentro das aspas você pode acessar as variáveis com #{IDENTIFICADOR} , trocando IDENTIFICADOR pelo