Programação Lógica. Programação Lógica PROLOG

Tamanho: px
Começar a partir da página:

Download "Programação Lógica. Programação Lógica PROLOG"

Transcrição

1 Programação Lógica PROLOG

2 A programação em lógica se desenvolveu no início dos anos 70 a partir de alguns trabalhos sobre prova de teoremas. Desde então ela tem demonstrado ser um formalismo simples, mas muito poderoso, que é bastante adequado tanto para a representação do conhecimento quanto como ferramenta de programação. Programação Lógica unifica: Engenharia de Software (especificação formal, linguagens de programação) IA (raciocino e Representação do Conhecimento (RC)) Banco de Dados -- Dedutivos (BDDs) Teoria Lógica (TL) das provas

3 Primeira linguagem de programação que seguiu o novo paradigma associado à programação em lógica foi PROLOG. PROLOG é uma linguagem baseada em um conjunto de conceitos: casamento de padrões; estruturação em forma de árvore; backtracking automático É uma linguagem orientada ao processamento simbólico. Representa uma implementação da lógica como linguagem de programação;

4 Paradigmas de linguagem de programação Linguagens Procedimentais (C, Pascal, Basic...) Especifica como realizar determinada tarefa. Linguagens Orientadas a Objetos (C++, Java, C#...) Especifica objetos e seus métodos. Linguagens Lógica (Prolog) Especifica o quê se sabe sobre um problema e o quê deve ser feito. É mais direcionada ao conhecimento e menos direcionada a algoritmos.

5 A programação em lógica baseia-se em estruturas lógicas denominadas Cláusulas de Horn, herdados da lógica de predicados, que se apresentam em quatro formas distintas: fatos, regras, consulta, vazia. Onde: Fatos verdades incondicionais Regras podem ser verdadeiras ou não Consultas provoca a execução do programa O PROLOG é uma linguagem de programação baseada em lógica de primeira ordem.

6 Na lógica de predicados usamos regras de inferência para demonstrar que uma tese é consequência de determinadas hipóteses Programação em Lógica e especificamente a linguagem Prolog Progamming in Logic também pode provar teses a partir de hipóteses A linguagem Prolog inclui: predicados, conectivos lógicos e regras de inferência - Princípio da Resolução

7 Prolog é uma linguagem declarativa ao invés de procedimental Um programa Prolog consiste na declaração (ou descrição de uma interpretação) de hipóteses que são verdadeiras em uma interpretação O conjunto de declarações que forma um programa Prolog é chamada a base de dados (BD) desse programa Para determinar se uma tese (consulta do usuário ao BD) é ou não verdadeira, Prolog aplica suas regras de inferência na BD.

8 Um programa em lógica é um modelo de um determinado problema ou situação expresso por meio de um conjunto de sentenças lógicas. Um programa em lógica não é a descrição de um procedimento para obter soluções de um problema. BD convencionais descrevem apenas fatos Oscar é um avestruz As sentenças de um Programa em Lógica, além de descrever fatos, permite a descrição de regras Todo avestruz é um ave Havendo regras, novos fatos podem ser deduzidos Oscar é uma ave

9 Fatos servem para estabelecer um relacionamento existente entre objetos de um determinado contexto de discurso. Por exemplo, num contexto familiar, pai(sebastião,livia) Predicado ou relação Argumento do predicado é um fato que estabelece que Sebastião é pai de Lívia, ou seja, que a relação pai existe entre os objetos denominados sebastião e livia.

10 Em Prolog, identificadores de relacionamentos são denominados predicados e identificadores de objetos são denominados átomos. Tanto predicados quanto átomos devem iniciar com letra minúscula. Ex.: Programa árvore genealógica. pai(adao,cain). pai(adao,abel). pai(adao,seth). pai(seth,enos).

11 Consulta são usadas para recuperar informações de um programa lógico. Uma consulta pergunta se uma determinado relacionamento existe entre objetos. Por exemplo, a consulta?- pai(sebastião,lívia). pergunta se a relação pai vale para os objetos sebastião e lívia ou, em outras palavras, pergunta se Sebastião é pai de Lívia. Então, dados os fatos estabelecidos no programa, a resposta a essa consulta será yes.

12 Sintaticamente, fatos e consultas são muito similares. pai(sebastiao, livia)?pai(sebastiao, livia) A diferença é que fatos são agrupados no arquivo que constitui o programa, enquanto consultas são sentenças digitadas no prompt (?-) do interpretador Prolog. Responder uma consulta com relação a um determinado programa corresponde a determinar se a consulta é consequência lógica desse programa, ou seja, se a consulta pode ser deduzida dos fatos expressos no programa.

13 Outra consulta que poderíamos fazer com relação ao Programa árvore genealógica é:?- pai(adao,enos). Nesse caso, porém, o sistema responderia no. As consultas tornam-se ainda mais interessantes quando empregamos variáveis, ou seja, identificadores para objetos não especificados. Por exemplo:?- pai(x,livia). pergunta quem é o pai de Livia ou, tecnicamente, que valor de X torna a consulta uma consequência lógica do programa. A essa pergunta o sistema responderá X = sebastiao.

14 Uma consulta com variáveis pode ter mais de uma resposta. Nesse caso, o sistema apresentará a primeira resposta e ficará aguardando até que seja pressionado enter, que termina a consulta, ou ponto-e-vírgula, que faz com que a próxima resposta possível, se houver, seja apresentada.?- pai(adao,x). X = cain ; X = abel ; X = seth ; no (final da consulta)

15 Variável compartilhada Suponha que desejássemos consultar o Programa árvore genealógica para descobrir quem é o avô de Enos. Nesse caso, como a relação avô não foi diretamente definida nesse programa, teríamos que fazer a seguinte pergunta: Quem é o pai do pai de Enos? Então, como o pai de Enos não é conhecido a priori, a consulta correspondente a essa pergunta tem dois objetivos: primeiro, descobrir quem é o pai de Enos, digamos que seja Y; depois, descobrir quem é o pai de Y.

16 Variável compartilhada?- pai(y,enos), pai(x,y). Y = seth X = adão yes Para responder essa consulta, primeiro o sistema resolve pai(y,enos), obtendo a resposta Y = seth. Em seguida, substituindo Y por seth no segundo objetivo, o sistema resolve pai(x,seth), obtendo X = adão. Nessa consulta, dizemos que a variável Y é compartilhada pelos objetivos pai(y,enos) e pai(x,y). Variáveis compartilhadas são úteis porque permitem estabelecer restrições entre objetivos distintos.

17 Variável anônima Uma variável anônima deve ser usada quando seu valor específico for irrelevante numa determinada consulta. Por exemplo, considerando o Programa árvore genealógica, suponha que desejássemos saber quem já procriou, ou seja, quem tem filhos. Então, como o nome dos filhos é uma informação irrelevante, poderíamos digitar:?- pai(x,_). A essa consulta o sistema responderia: X = adão X = seth.

18 Regras permitem definir novas relações em termos de outras relações já existentes. Por exemplo, a regra avô(x,y) :- pai(x,z), pai(z,y). se e define a relação avô em termos da relação pai, ou seja, estabelece que X é avô de Y se X tem um filho Z que é pai de Y. Com essa regra, podemos agora realizar consultas tais como:?- avo(x,enos). X = adão

19 Regras são utilizadas para expressar dependência entre um fato e outro fato: criança(x) :- gosta(x,sorvete). criança(x) :- not odeia(x,sorvete). Ou grupo de fatos: avó(x,z) :- (mãe(x,y),mãe(y,z)); mãe(x,y),pai(y,z)).

20 Fatos e regras são tipos de cláusulas e um conjunto de cláusulas constitui um programa lógico. Como definir a relação irmão em termos da relação pai, já existente? Podemos dizer que duas pessoas distintas são irmãs se ambas têm o mesmo pai. Em Prolog, essa regra é escrita como: irmão(x,y) :- pai(z,x), pai(z,y), X\=Y.

21 Evidentemente, poderíamos definir a relação simplesmente listando todas as suas instâncias. irmão irmão(cain,abel). irmão(cain,seth). irmão(abel,cain). irmão(abel,seth). irmão(seth,cain). irmão(seth,abel). Entretanto, usar regras, além de muito mais elegante e conciso, também é muito mais consistente. Por exemplo, se o fato pai(adão,eloi) fosse acrescentado ao Programa árvore genealógica, usando a definição por regra, nada mais precisaria ser alterado. Por outro lado, usando a definição por fatos, teríamos que acrescentar ao programa mais seis novas instâncias da relação irmão.

22 Fatos para uma base de dados Exemplo: um sistema ecológico para especificar cadeia alimentar a come (urso, peixe) come (urso, raposa) come (cavalo, mato) animal (urso) animal (peixe) animal (raposa % predicado binário % predicado unário

23 Consultas Exemplos:? come (cavalo, mato) Regras Resposta: yes? come (urso, coelho) Resposta: no? come (urso, X) Resposta: peixe coelho Exemplo: um animal é presa se é comido por outro animal. Linguagem simbólica: Prolog: come(y,x) ^ animal(x) -> presa(x) presa(x) :- come(y,x), animal(x)

24 Regras e Consultas Acrescentando a nova regra à BD podemos fazer novo tipo de consulta come (urso, peixe) come (urso, raposa) % predicado binário come (cavalo, mato) animal (urso) animal (peixe) % predicado unário animal (raposa) presa(x) :- come(y,x), animal(x) % regra?-presa(x) resposta: peixe; raposa

25 Regras de inferência: resolução As regras e os fatos de um programa Prolog correspondem à fórmulas de 1 a ordem transformada em Cláusulas de Horn. Prolog trata as regras como sendo quantificadas universalmente. A regra de inferência usada pelo interpretador Prolog é a regra da resolução. Como foi obtida a resposta do exemplo anterior?

26 Regras de inferência: resolução Observe que a regra (Cláusula de Horn) presa(x) :- come(y,x), animal(x) Corresponde a wff (fórmula bem formada) x y(come(y,x) ^ animal(x)) -> presa(x) Corresponde a cláusula ~(come(x,y) ^ animal(x)) v presa(x ~come(x,y) v ~animal(x) v presa(x)

27 Regras de inferência: resolução Regra da resolução : Duas cláusulas de Horn são resolvidas em uma nova cláusula se uma delas contiver um predicado negado que corresponda a um predicado nãonegado na outra cláusula. A nova cláusula elimina o termo de correspondência e fica disponível para uso em resposta a pergunta. As variáveis são substituídas por constantes associadas de maneira consistente

28 Regras de inferência: resolução? presa(x) O Prolog procura, na BD, por uma regra com o predicado presa(x) como o consequente Busca outras cláusulas que possam ser resolvidas com a regra Faz as substituições das variáveis na cláusula regra 1. ~come(x,y) v ~animal(x) v presa(x) 2. come(urso,peixe) 3. ~animal(peixe) v presa(peixe) {resolvente de 1 e 2} 4. animal (peixe) 5. presa (peixe) {resolvente de 3 e 4} Refaz o processo procurando na BD outra cláusula a resolver com a cláusula da regra. Encontrará come(urso,peixe)

29 Regras de inferência: resolução Outro exemplo: acrescentando a BD a regra: x é caçado se é presa equivalente a caçado(x) :- presa(x) Como é feita a consulta que segue?? caçado(x) a regra na forma simbólica é: presa(x) -> caçado(x) a cláusula correspondente é: ~(presa(x) v caçado(x) essa cláusula é resolvida como a regra de definição de presa e seguindo a resolução obtém-se as respostas: peixe raposa

30 Programação em Prolog Programar em Prolog envolve: Declarar alguns fatos a respeito de objetos e seus relacionamentos. Definir algumas regras sobre os objetos e seus relacionamentos. Fazer perguntas sobre os objetos e seus relacionamentos

31 Sentenças Prolog Nomes de constantes e predicados iniciam sempre com letra minúscula. O predicado (relação unária, n-ária ou função) é escrito primeiro e os objetos relacionados são escritos depois entre parênteses. Variáveis sempre começam por letra maiúscula. Toda sentença termina com ponto. Exemplo: gosta(maria, jose).

32 Operadores Lógicos símbolo conectivo Operador lógico :- If (se) implicação, and conjunção ; or disjunção not not negação Operadores relacionais operador X=Y X \= Y X < Y Y > X Y =< X Y >= X significado Igual a Não igual a Menor que Maior que Menor ou igual a Maior ou igual a

33 Regras Regras são utilizadas para expressar dependência entre fatos: criança(x) :- gosta(x,sorvete). criança(x) :- not odeia(x,sorvete). Ou grupo de fatos: avó(x,z) :- (mãe(x,y),mãe(y,z)); (mãe(x,y),pai(y,z)).

34 Fatos Os fatos permitem definir os predicados: - Exemplo: um sistema ecológico para especificar a cadeia alimentar come (urso, peixe) come (urso, raposa) come (cavalo, mato) animal (urso) animal (peixe) animal (raposa) % predicado binário % predicado unário

35 Consultas De posse do programa Prolog (base de dados, podemos fazer consultas. Exemplos:? come (cavalo, mato) Resposta: yes? come (urso, coelho) Resposta: no? come (urso, X) Resposta: peixe raposa

36 Exemplo de um programa em Prolog come (urso, peixe). come (peixe,peixinho). come (peixinho,alga). come (quati,peixe). come(urso,quati). come (urso, raposa). come(raposa,coelho). come (coelho, mato). come(urso,fruta). come(cavalo,mato). come(gato-selvagem,cavalo). animal(urso). animal(peixe). animal(peixinho). animal(quati). animal(raposa). animal(coelho). animal(cavalo). animal(gato-selvagem). planta(mato). planta(alga). presa(x) :- come(y,x), animal(x).

37 Consulta ao programa em Prolog Consultas e respostas: cavalo mato? animal(coelho) yes? come(gato-selvagem,mato) no? come(x,peixe) urso quati? come(x,y),planta(y) peixinho alga coelho mato? presa(x) peixe Peixinho quati raposa coelho cavalo

38 Exercício. 1. Crie uma base de dados com informações de sua família e estabeleça as regras em Prolog que possibilite as seguintes questões: a) Quem são os pais? b) Quem são os avos? (avô, avó) c) Quem são os primos? (primo e prima) d) Quem é cunhado? e) Relação irmãos. f) Relação tios.

39 Referencias Judith L. Gersting: Fundamentos Matemáticos para a Ciência da Computação, LTC Editora, 3 a edição, Luiz A. M. Palazzo: Introdução à Programação PROLOG, Editora da Universidade Católica de Pelotas/UCPEL - Pelotas

INF 1771 Inteligência Artificial

INF 1771 Inteligência Artificial Edirlei Soares de Lima INF 1771 Inteligência Artificial Aula 08 Introdução ao Prolog Introdução O Prolog é uma linguagem de programação baseada em lógica de primeira ordem. Não é

Leia mais

Inteligência Artificial. Prolog. Aula 2 Introdução (cont.)

Inteligência Artificial. Prolog. Aula 2 Introdução (cont.) Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação http://www.inf.unioeste.br/~claudia/ia2017.html Inteligência Artificial Prolog Aula 2 Introdução (cont.) Características

Leia mais

Programação Lógica. A Linguagem Prolog. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia

Programação Lógica. A Linguagem Prolog. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia Programação Lógica A Linguagem Prolog Paulo Henrique Ribeiro Gabriel [email protected] Faculdade de Computação Universidade Federal de Uberlândia 21 de agosto de 2015 Paulo H. R. Gabriel (FACOM/UFU) Programação

Leia mais

Introdução à Programação em Prolog

Introdução à Programação em Prolog Introdução à Programação em Prolog Thiago A. S. Pardo Solange Rezende Exercício em duplas Introdução (1 de 4) Escrever um programa completo em C que armazene quem gosta de quem e que responda sim ou não

Leia mais

03/04/2016 LÓGICA MATEMÁTICA. Prof. Esp. Fabiano Taguchi. Introdução ao Prolog

03/04/2016 LÓGICA MATEMÁTICA. Prof. Esp. Fabiano Taguchi.  Introdução ao Prolog LÓGICA MATEMÁTICA Prof. Esp. Fabiano Taguchi [email protected] http://fabianotaguchi.wordpress.com Introdução ao Prolog 1 PROLOG PROgramming in LOGic Linguagem utilizada para resolver problemas

Leia mais

SCC Capítulo 5 Representação de Conhecimento através do Prolog

SCC Capítulo 5 Representação de Conhecimento através do Prolog SCC-630 - Capítulo 5 Representação de Conhecimento através do Prolog João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São

Leia mais

CENTRO UNIVERSITÁRIO LUTERANO DE PALMAS PROLOG. Elias Melgaço Chaves Júnior Jonatas Luiz da Costa Rafael Gonçalves Barreira

CENTRO UNIVERSITÁRIO LUTERANO DE PALMAS PROLOG. Elias Melgaço Chaves Júnior Jonatas Luiz da Costa Rafael Gonçalves Barreira CENTRO UNIVERSITÁRIO LUTERANO DE PALMAS PROLOG Elias Melgaço Chaves Júnior Jonatas Luiz da Costa Rafael Gonçalves Barreira Roteiro Linguagens de Programação em Lógica: histórico THIS IS PROLOG!!!! SWI-Prolog

Leia mais

Fundamentos de Lógica Matemática

Fundamentos de Lógica Matemática Webconferência 6-29/03/2012 Introdução à Lógica de Predicados Prof. L. M. Levada http://www.dc.ufscar.br/ alexandre Departamento de Computação (DC) Universidade Federal de São Carlos (UFSCar) 2012/1 Introdução

Leia mais

Paradigmas de Linguagens de Programação

Paradigmas de Linguagens de Programação Paradigmas de Linguagens de Programação Faculdade Nova Roma Cursos de Ciências da Computação (6 Período) Prof. Adriano Avelar - Site: www.adrianoavelar.com Email: [email protected] PROGRAMAÇÃO

Leia mais

Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010

Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010 Programação em Lógica UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010 Roteiro Introdução Conceitos Básicos Linguagens Lógicas Semântica de Modelos Semântica de Prova Programação

Leia mais

Matemática Discreta - 01

Matemática Discreta - 01 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta - 01 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

Leia mais

Métodos para a construção de algoritmo

Métodos para a construção de algoritmo Métodos para a construção de algoritmo Compreender o problema Identificar os dados de entrada e objetos desse cenário-problema Definir o processamento Identificar/definir os dados de saída Construir o

Leia mais

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end. SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão

Leia mais

30/04/2013. Prof. Hudson Costa

30/04/2013. Prof. Hudson Costa Prof. Hudson Costa PROLOG é uma linguagem de programação que é utilizada para resolver problemas que envolvam objetos e relações entre objetos. Em PROLOG o que se define basicamente são objetos e relações

Leia mais

Lógica de primeira ordem (Capítulo 8 - Russell) Inteligência Artificial

Lógica de primeira ordem (Capítulo 8 - Russell) Inteligência Artificial Lógica de primeira ordem (Capítulo 8 - Russell) Inteligência Artificial Estrutura 1- Contextualização 2- Definições 3- Lista de exercício 4- Prolog 5- Regras em Prolog - Mundo Wumpus 6- Aplicação do Mundo

Leia mais

Fundamentos 1. Lógica de Predicados

Fundamentos 1. Lógica de Predicados Fundamentos 1 Lógica de Predicados Predicados e Quantificadores Estudamos até agora a lógica proposicional Predicados e Quantificadores Estudamos até agora a lógica proposicional A lógica proposicional

Leia mais

Prof. Jorge Cavalcanti

Prof. Jorge Cavalcanti Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta - 01 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

Leia mais

Cálculo proposicional

Cálculo proposicional O estudo da lógica é a análise de métodos de raciocínio. No estudo desses métodos, a lógica esta interessada principalmente na forma e não no conteúdo dos argumentos. Lógica: conhecimento das formas gerais

Leia mais

Raciocínio Automatizado

Raciocínio Automatizado Raciocínio Automatizado Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo Introdução Raciocínio automatizado simula raciocínio lógico por meio

Leia mais

Lógica. Cálculo Proposicional. Introdução

Lógica. Cálculo Proposicional. Introdução Lógica Cálculo Proposicional Introdução Lógica - Definição Formalização de alguma linguagem Sintaxe Especificação precisa das expressões legais Semântica Significado das expressões Dedução Provê regras

Leia mais

Linguagens de Programação Funcional

Linguagens de Programação Funcional Linguagens de Programação Funcional Conceitos de Linguagens de Programação Pedro Libório Setembro de 2013 2 Roteiro Introdução Funções matemáticas Fundamentos das linguagens de programação funcionais A

Leia mais

Inteligência Artificial. Sistemas Baseados em Conhecimento. Representação de Conhecimento (continuação)

Inteligência Artificial. Sistemas Baseados em Conhecimento. Representação de Conhecimento (continuação) Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação http://www.inf.unioeste.br/~claudia/ia2018.html Inteligência Artificial Sistemas Baseados em Conhecimento Representação

Leia mais

Aula 2 Programação Lógica Sintaxe Prolog. Profa. Elaine Faria UFU -2014

Aula 2 Programação Lógica Sintaxe Prolog. Profa. Elaine Faria UFU -2014 Aula 2 Programação Lógica Sintaxe Prolog Profa. Elaine Faria UFU -2014 Créditos O material a seguir consiste de adaptações e extensões dos originais gentilmente cedidos pelo Prof. Alexsandro Santos Soares

Leia mais

Programação Orientada a Objetos. Programação Lógica

Programação Orientada a Objetos. Programação Lógica Programação Orientada a Objetos Programação Lógica Cristiano Lehrer, M.Sc. Introdução Uma metodologia de programação diferente. Expressar programas na forma de lógica simbólica e a utilização de inferência

Leia mais

Os Fundamentos: Lógica de Predicados

Os Fundamentos: Lógica de Predicados Os Fundamentos: Lógica de Predicados Área de Teoria DCC/UFMG Introdução à Lógica Computacional 2019/01 Introdução à Lógica Computacional Os Fundamentos: Lógica de Predicados Área de Teoria DCC/UFMG - 2019/01

Leia mais

Programação Lógica. (Capítulo 11) LÓGICA APLICADA A COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto

Programação Lógica. (Capítulo 11) LÓGICA APLICADA A COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto Programação Lógica (Capítulo 11) LÓGICA APLICADA A COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Programação Lógica 2. Prolog 3. Exemplos Sintaxe da Programação Lógica Definição

Leia mais

SCC Capítulo 2 Lógica de Predicados

SCC Capítulo 2 Lógica de Predicados SCC-630 - Capítulo 2 Lógica de Predicados João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis

Leia mais

Fundamentos de Lógica Matemática

Fundamentos de Lógica Matemática Webconferência 5-22/03/2012 Prova por resolução Prof. L. M. Levada http://www.dc.ufscar.br/ alexandre Departamento de Computação (DC) Universidade Federal de São Carlos (UFSCar) 2012/1 Introdução É possível

Leia mais

Lógica de primeira ordem First Order Logic (FOL)

Lógica de primeira ordem First Order Logic (FOL) Lógica de primeira ordem First Order Logic (FOL) Prós e Contras da Lógica Proposicional É declarativa: partes da sintaxe correspondem a fatos Permite informação disjuntiva e/ou negada (a diferença da maioria

Leia mais

Aula 2: Linguagem Proposicional

Aula 2: Linguagem Proposicional Lógica para Computação Primeiro Semestre, 2015 Aula 2: Linguagem Proposicional DAINF-UTFPR Prof. Ricardo Dutra da Silva Linguagens naturais, como o nosso Português, podem expressar ideias ambíguas ou imprecisas.

Leia mais

Algoritmos e Programação I

Algoritmos e Programação I Algoritmos e Programação I Operadores Relacionais, Lógicos e Aritméticos Prof. Fernando Maia da Mota [email protected] CPCX/UFMS Fernando Maia da Mota 1 Expressões Uma expressão relacional, ou

Leia mais

Dedução Natural e Sistema Axiomático Pa(Capítulo 6)

Dedução Natural e Sistema Axiomático Pa(Capítulo 6) Dedução Natural e Sistema Axiomático Pa(Capítulo 6) LÓGICA APLICADA A COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Definições 2. Dedução Natural 3. Sistemas axiomático Pa 4. Lista

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/59 1 - LÓGICA E MÉTODOS DE PROVA 1.1) Lógica Proposicional

Leia mais

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior. LFA Aula 02 Linguagens regulares - introdução 28/09/2015 Celso Olivete Júnior [email protected] 1 Na aula passada... Visão geral Linguagens regulares expressões regulares autômatos finitos gramáticas

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira

Leia mais

Linguagens de Programação Aula 15

Linguagens de Programação Aula 15 Linguagens de Programação Aula 15 Celso Olivete Júnior [email protected] Na aula passada Linguagem Haskell 2 Na aula de hoje Paradigma Lógico Linguagem Prolog (PROgrammation en LOGique) 3 Introdução

Leia mais

Matemática discreta e Lógica Matemática

Matemática discreta e Lógica Matemática AULA 1 - Lógica Matemática Prof. Dr. Hércules A. Oliveira UTFPR - Universidade Tecnológica Federal do Paraná, Ponta Grossa Departamento Acadêmico de Matemática Ementa 1 Lógica Sentenças, representação

Leia mais

Linguagens de Programação

Linguagens de Programação 45 Linguagens de Programação O paradigma de programação imperativo está diretamente atrelado à arquitetura básica dos computadores sobre os quais os programas eram executados. Boa parte dos computadores

Leia mais

UNIDADE ACADÊMICA: Faculdade de

UNIDADE ACADÊMICA: Faculdade de UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE COMPUTAÇÃO BACHARELADO EM SISTEMAS DE INFORMAÇÃO PLANO DE DISCIPLINA DISCIPLINA: Programação Lógica ( X ) SEMESTRAL - ( ) ANUAL CÓDIGO: GSI010 PERÍODO: 2

Leia mais

2. Linguagem de Programação Prolog

2. Linguagem de Programação Prolog Inteligência Artificial - IBM1024 2. Linguagem de Programação Prolog Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 2. Linguagem de Programação Prolog 2.1.

Leia mais

Capítulo 3 Lógica de Primeira Ordem

Capítulo 3 Lógica de Primeira Ordem Capítulo 3 Lógica de Primeira Ordem Lógica para Programação LEIC - Tagus Park 1 o Semestre, Ano Lectivo 2007/08 c Inês Lynce and Luísa Coheur Bibliografia Martins J.P., Lógica para Programação, Capítulo

Leia mais

A Lógica de Primeira Ordem

A Lógica de Primeira Ordem Capítulo 10 A Lógica de Primeira Ordem A Lógica de Primeira Ordem: A necessidade de uma linguagem mais expressiva O cálculo proposicional possui limitações com respeito a codificação de sentenças declarativas.

Leia mais

Inteligência Artificial IA II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO

Inteligência Artificial IA II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO Inteligência Artificial IA Prof. João Luís Garcia Rosa II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO 2004 Representação do conhecimento Para representar o conhecimento do mundo que um sistema

Leia mais

Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012

Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012 Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012 Problema de Einstein (adaptado) Existem 5 casas de 5 cores diferentes. Em cada casa vive uma pessoa de nacionalidade

Leia mais

Linguagens de Programação Princípios e Paradigmas

Linguagens de Programação Princípios e Paradigmas Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Linguagens e Ambientes de Programação 2002-2003 Linguagens de Programação Princípios e Paradigmas Gladys Castillo

Leia mais

Demonstrações. Terminologia Métodos

Demonstrações. Terminologia Métodos Demonstrações Terminologia Métodos Técnicas de Demonstração Uma demonstração é um argumento válido que estabelece a verdade de uma sentença matemática. Técnicas de Demonstração Demonstrações servem para:

Leia mais

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de

Leia mais

5. Expressões aritméticas

5. Expressões aritméticas 5. Expressões aritméticas 5.1. Conceito de Expressão O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis

Leia mais

Introdução ao Curso. Área de Teoria DCC/UFMG 2019/01. Introdução à Lógica Computacional Introdução ao Curso Área de Teoria DCC/UFMG /01 1 / 22

Introdução ao Curso. Área de Teoria DCC/UFMG 2019/01. Introdução à Lógica Computacional Introdução ao Curso Área de Teoria DCC/UFMG /01 1 / 22 Introdução ao Curso Área de Teoria DCC/UFMG Introdução à Lógica Computacional 2019/01 Introdução à Lógica Computacional Introdução ao Curso Área de Teoria DCC/UFMG - 2019/01 1 / 22 Introdução: O que é

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

Lógica Proposicional. LEIC - Tagus Park 2 o Semestre, Ano Lectivo 2007/08. c Inês Lynce c Luísa Coheur

Lógica Proposicional. LEIC - Tagus Park 2 o Semestre, Ano Lectivo 2007/08. c Inês Lynce c Luísa Coheur Capítulo 2 Lógica Proposicional Lógica para Programação LEIC - Tagus Park 2 o Semestre, Ano Lectivo 2007/08 c Inês Lynce c Luísa Coheur Programa Apresentação Conceitos Básicos Lógica Proposicional ou Cálculo

Leia mais

Lógica Formal. Matemática Discreta. Prof Marcelo Maraschin de Souza

Lógica Formal. Matemática Discreta. Prof Marcelo Maraschin de Souza Lógica Formal Matemática Discreta Prof Marcelo Maraschin de Souza Implicação As proposições podem ser combinadas na forma se proposição 1, então proposição 2 Essa proposição composta é denotada por Seja

Leia mais

Lógica proposicional

Lógica proposicional Lógica proposicional Sintaxe Proposição: afirmação que pode ser verdadeira ou falsa Proposições podem ser expressas como fórmulas Fórmulas são construídas a partir de símbolos: De verdade: true (verdadeiro),

Leia mais

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ. Linguagens O conceito de linguagem engloba uma variedade de categorias distintas de linguagens: linguagens naturais, linguagens de programação, linguagens matemáticas, etc. Uma definição geral de linguagem

Leia mais

Recursividade e listas

Recursividade e listas Recursividade e listas Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo Princípio de recursividade Recursividade é um princípio que permite

Leia mais

Fundamentos da Computação 1. Aula 03

Fundamentos da Computação 1. Aula 03 Fundamentos da Computação 1 Aula 03 Conteúdo Introdução à Lógica. Definição da Sintaxe. Traduzindo Sentenças. Introdução à Lógica O que é lógica? Introdução à Lógica O que é lógica? Lógica é a análise

Leia mais

Prolog. MATA56 - Paradigmas de Linguagens de Programação, UFBA, Prof. Rodrigo Rocha Prolog. Iniciando.

Prolog. MATA56 - Paradigmas de Linguagens de Programação, UFBA, Prof. Rodrigo Rocha Prolog. Iniciando. Prolog MATA56 - Paradigmas de Linguagens de Programação, UFBA, 2016.1. Prof. Rodrigo Rocha ([email protected]) Baseada na lógica de primeira ordem (lógica de predicados) Concebida na década de 1970

Leia mais

Programação I Apresentação

Programação I Apresentação Programação I Apresentação Prof. Carlos Alberto [email protected] [email protected] Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação

Leia mais

JOÃO NUNES de SOUZA. LÓGICA para CIÊNCIA da COMPUTAÇÃO. Uma introdução concisa

JOÃO NUNES de SOUZA. LÓGICA para CIÊNCIA da COMPUTAÇÃO. Uma introdução concisa JOÃO NUNES de SOUZA LÓGICA para CIÊNCIA da COMPUTAÇÃO Uma introdução concisa 2 de junho de 2009 1 A linguagem da Lógica Proposicional Errata Caso você encontre algum erro nesse capítulo ou tenha algum

Leia mais

Lógica Formal. Matemática Discreta. Prof. Vilson Heck Junior

Lógica Formal. Matemática Discreta. Prof. Vilson Heck Junior Lógica Formal Matemática Discreta Prof. Vilson Heck Junior [email protected] Objetivos Utilizar símbolos da lógica proposicional; Encontrar o valor lógico de uma expressão em lógica proposicional;

Leia mais

A linguagem da Lógica de Predicados. (Capítulo 8) LÓGICA APLICADA A COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto

A linguagem da Lógica de Predicados. (Capítulo 8) LÓGICA APLICADA A COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto A linguagem da Lógica de Predicados (Capítulo 8) LÓGICA APLICADA A COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Contextualização 2. Definições 3. Exemplos 4. Lista 3 O que não é

Leia mais

Lógica. Professor Mauro Cesar Scheer

Lógica. Professor Mauro Cesar Scheer Lógica Professor Mauro Cesar Scheer Objetivos Reconhecer e manipular com os símbolos formais que são usados no Cálculo Proposicional (CPC) e Cálculo de Predicados (CP). Determinar o valor de verdade de

Leia mais

BUSCA DE SOLUÇÕES EM PROLOG

BUSCA DE SOLUÇÕES EM PROLOG PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ BUSCA DE SOLUÇÕES EM PROLOG Resolução em PROLOG: Unificação e substituição 1 UNIFICAÇÃO EM PROLOG HISTÓRICO 2 HISTÓRIA A PARTIR DE 1950 1958 forma clausal:

Leia mais

Aula 6: Dedução Natural

Aula 6: Dedução Natural Lógica para Computação Primeiro Semestre, 2015 DAINF-UTFPR Aula 6: Dedução Natural Prof. Ricardo Dutra da Silva Em busca de uma forma de dedução mais próxima do que uma pessoa costuma fazer, foi criado

Leia mais

Algoritmos e Programação - Engenharia da Computação -

Algoritmos e Programação - Engenharia da Computação - Algoritmos e Programação - Engenharia da Computação - Prof. Alessandro Zimmer Pseudo Linguagem de Programação - PORTUGOL - Pseudo-Linguagem Linguagem de Programação? Notação formal servindo para: - Expressar

Leia mais

Afirmações Matemáticas

Afirmações Matemáticas Afirmações Matemáticas Na aula passada, vimos que o objetivo desta disciplina é estudar estruturas matemáticas, afirmações sobre elas e como provar essas afirmações. Já falamos das estruturas principais,

Leia mais

MD Lógica de Proposições Quantificadas Cálculo de Predicados 1

MD Lógica de Proposições Quantificadas Cálculo de Predicados 1 Lógica de Proposições Quantificadas Cálculo de Predicados Antonio Alfredo Ferreira Loureiro [email protected] http://www.dcc.ufmg.br/~loureiro MD Lógica de Proposições Quantificadas Cálculo de Predicados

Leia mais

Grupo de Usuários Java do Noroeste Paulista. Tópicos Avançados em Java

Grupo de Usuários Java do Noroeste Paulista. Tópicos Avançados em Java Grupo de Usuários Java do Noroeste Paulista Tópicos Avançados em Java Aula 1 Objetivos Programa exemplo; Programação Orientada a Objetos. Conceitos Orientada a Objetos Mundo real Conceitos Orientada a

Leia mais

Lógica Proposicional (Consequência lógica / Dedução formal)

Lógica Proposicional (Consequência lógica / Dedução formal) Faculdade de Tecnologia Senac Pelotas Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Matemática Aplicada Prof. Edécio Fernando Iepsen Lógica Proposicional (Consequência lógica /

Leia mais

Dedução Natural LÓGICA APLICADA A COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto

Dedução Natural LÓGICA APLICADA A COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto Dedução Natural LÓGICA APLICADA A COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Definições 2. Dedução Natural 3. Lista Um dos objetivos principais da lógica é o estudo de estruturas

Leia mais

Conhecimento e Raciocínio Lógica Proposicional

Conhecimento e Raciocínio Lógica Proposicional Conhecimento e Raciocínio Lógica Proposicional Agente Baseado em Conhecimento ou Sistema Baseado em Conhecimento Representa conhecimento sobre o mundo em uma linguagem formal (KB) Raciocina sobre o mundo

Leia mais

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Aula 03 Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga

Leia mais

Aula 1: Introdução ao curso

Aula 1: Introdução ao curso Aula 1: Introdução ao curso MCTA027-17 - Teoria dos Grafos Profa. Carla Negri Lintzmayer [email protected] Centro de Matemática, Computação e Cognição Universidade Federal do ABC 1 Grafos Grafos

Leia mais

Expressões e sentença de atribuição

Expressões e sentença de atribuição Expressões e sentença de atribuição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Sistemas de Banco de Dados

Sistemas de Banco de Dados Sistemas de Banco de Dados Fundamentos em Bancos de Dados Relacionais Wladmir Cardoso Brandão www.wladmirbrandao.com Departamento de Ciência da Computação (DCC) Instituto de Ciências Exatas e Informática

Leia mais

PROGRAMAÇÃO COMPUTACIONAL I

PROGRAMAÇÃO COMPUTACIONAL I Algoritmos Devemos ter consciência que um computador não é dotado da capacidade de tomar decisões com base em premissas. Portanto, não podemos instruir um computador com sentenças dúbias. Os métodos em

Leia mais

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA SUMÁRIO Introdução Conceitos básicos Formato básico Tipos primitivos Variáveis Constantes Operadores Operações

Leia mais