Lógica Computacional

Documentos relacionados
Lógica Computacional

Lógica Computacional

Lógica Computacional

Lógica Computacional

Lógica e Computação. Uma Perspectiva Histórica

Lógica Computacional

Lógica Computacional

Lógica Computacional DCC/FCUP 2017/18

Lógica Computacional Aula 1

O que é a Teoria em Ciência da Computação. Introdução à Ciência da Computação Mário S. Alvim

Lógica e Raciocínio. Introdução. Universidade da Madeira.

A Teoria Matemática que serviu como Base para Turing.

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Lógica Computacional

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Lógica Computacional

IBM1088 Linguagens Formais e Teoria da Computação

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

LÓGICA PARA COMPUTAÇÃO

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

SCC Introdução à Teoria da Computação

O que é lógica? Lógica é a análise de métodos de raciocínio. Lívia Lopes Azevedo

I.2 Introdução a Teoria da Computação

Linguagens Formais e Autômatos Apresentação da Disciplina

Teoremas de Incompletude de Gödel e os Fundamentos da Matemática

Lógica Computacional

LÓGICA PARA COMPUTAÇÃO

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

SCC-5832 Teoria da Computação

Prof.Letícia Garcia Polac. 6 de abril de 2017

Os Teoremas da Incompletude de Gödel Uma Introdução Informal

Matemática Computacional. Introdução

Marcos Castilho. DInf/UFPR. 16 de maio de 2019

Teoria da Computação. Computabilidade e complexidade computacional

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.

Lógica Proposicional

INF1009.3WB: Lógica para computação

Lógica Computacional

Matemática Discreta - 01

SCC Teoria da Computação e Linguagens Formais

Prof. Jorge Cavalcanti

Capítulo 2: Procedimentos e algoritmos

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

Lógica Matemática. Conceitos Gerais. Prof. Guilherme Tomaschewski Netto

Lógica Computacional

Lógica Matemática. Definição. Origem. Introdução

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação

2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória TEORIA: 60 LABORATÓRIO: 30

Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah,

3. CAPÍTULO LÓGICAS DIGITAIS

Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/01)

Lógica Computacional

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

LINGUAGENS FORMAIS E AUTÔMATOS

Teoria da Computação (BBC244)

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 12

Afirmações Matemáticas

Resumo aula. Conceituação; Origem; Lógica de programação; Argumentos; Lógica simbólica; Dedutivos; Indutivos;

Linguagens Formais e Autômatos. Tiago Alves de Oliveira

1 INTRODUÇÃO E CONCEITOS BÁSICOS

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Lógica Proposicional e Dedução Natural 1/48. Douglas O. Cardoso docardoso.github.io

Fundamentos de Programação

CRÉDITOS DO CURSO. Carga Horária Créditos IN1030 Seminários 30 2

5 AULA. Teorias Axiomáticas LIVRO. META: Apresentar teorias axiomáticas.

Teoria da Computação

Introdução à Logica Computacional. Aula 1 Ana Cristina Bicharra Garcia Segundas & Quartas 16:00-18:00

Inteligência Artificial. Aula 1 Prof. Nayat Sánchez Pi

Matemática discreta e Lógica Matemática

Capítulo 3 Lógica de Primeira Ordem

Transcrição:

Lógica Computacional Aula Teórica 1: Apresentação António Ravara Simão Melo de Sousa Marco Giunti Departamento de Informática, Faculdade de Ciências e Tecnologia, NOVA LINCS, Universidade Nova de Lisboa Departamento de Informática, Faculdade de Engenharia, RELEASE, Universidade da Beira Interior

O que vamos estudar? Objectivos Descrição geral Introdução à lógica proposicional e de primeira ordem: noção de linguagem (sintaxe), de tabelas de verdade e de estrutura de interpretação (semântica) e de sistema dedutivo (sistema de prova). Resultados de correcção e completude do sistema de prova relativamente à semântica. Mecanismos computacionais: forma normal conjuntiva e forma clausal; Skolemização e unificação; resolução. Lógica de Floyd-Hoare para programas imperativos 2 / 28

O que vamos estudar? Objectivos Saber Conhecer a sintaxe e a semântica da lógica de primeira ordem. Conhecer os sistemas de dedução natural da lógica de primeira ordem. Conhecer o método de Resolução para a lógica de primeira ordem. Conhecer a lógica de Floyd-Hoare para programas imperativos. Fazer Escrever fórmulas a partir de descrições em língua natural. Calcular semântica e axiomaticamente a validade lógica de fórmulas. Usar algoritmos de resolução para estabelecer a validade lógica de fórmulas. Provar a correcção de pequenos programas imperativos. 3 / 28

O que vamos estudar? Objectivos Soft-Skills Capacidade de raciocínio abstracto e rigoroso. Capacidade de manipulação de estruturas formais. Aprender a aprender. 4 / 28

O que vamos estudar? Por onde estudar Os acetatos de apoio às aulas teóricas não substituem os livros de texto. Bibliografia (ordem cronológico) Logic and Structure (5th Edition). D. van Dalen. Springer, 2013 Rigorous Software Development, An Introduction to Program Verification. José Carlos Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa. Series: UTiCS, Springer, 2011 Mathematical Logic: a course with exercices. Part I: propositional calculus, boolean algebras, predicate calculus. René Cori e Daniel Lascar. Oxford Press, 2007 Logic in Computer Science: modelling and reasoning about systems (2nd ed.). Michael Huth and Mark Ryan. Cambridge University Press, 2004. Language Proof and Logic (4th edition). Jon Barwise and John Etchemendy. CSLI Publications, 2003. Mathematical Logic for Computer Science (2nd edition). Mordechai Ben-Ari. Springer, 2001. 5 / 28

O que vamos estudar? Por onde estudar Bibliografia (ordem cronológico) Resumo: Autor Ano Disp. Exampl. Math. van Dalen 2013 ++ ++ Almeida et al. 2011 ++ + + Cori and Lascar 2007 ++ Huth and Ryan. 2004 ++ + + Barwise and Etchemendy 2003 ++ Ben-Ari 2001 + + Disp. : disponibilidade na biblioteca da UBI ou na net Exampl. : exemplos ou software a disposição Math. : apresentação de forma matemática 6 / 28

O que vamos estudar? Recursos online Página web Endereço: http://di.ubi.pt/~mgiunti/lc Acetatos publicados cada semana Texto dos exercícios apresentados nas aulas praticas Soluções de alguns exercícios selecionados Links a material online 7 / 28

O que vamos estudar? Funcionamento Faltas Não há marcação de faltas nas aulas. Turnos Cada aluno pode só frequentar o seu turno de pratica A participação a um turno de pratica diferente sem consenso do docente é sancionada e pode comportar a reprovação 8 / 28

O que vamos estudar? Funcionamento Atendimento Horário provisório: Segunda feira: 16-18 horas Terça feira 11-13 horas O que se espera dos alunos Trabalho contínuo! São 6 créditos, implica investimento autónomo semanal Crítica (construtiva) frontal e atempada. 9 / 28

O que vamos estudar? Actividades de Ensino-Aprendizagem Frequências Avaliação em duas frequências Datas provisórias: 1. 3 Novembro 2015 2. 5 Janeiro 2016 Nota de admissão ao exame (frequência não dispensa de exame): seis (6) Modalidade e tipologia das frequências Cada frequência será em forma escrita e poderá conter perguntas teóricas e exercícios Não haverá perguntas a resposta múltipla (cruzinhas) 10 / 28

O que é a lógica? Lógica: de que se trata? A lógica está na base do raciocínio É um processo inerentemente humano, tão básico que vimos todos de nascença equipados com essa capacidade: temos uma ideia intuitiva e inata do que é um processo dedutivo correcto e o que é "disparatado". Qualquer processo racional de tirar conclusões a partir de hipóteses é baseado em lógica. Exemplos de afirmações que podem ou não ser válidas: ou gosto ou não gosto de lógica hoje chove e não chove hoje é dia 18 e dia 19 se apanhar o comboio das 18h não chego atrasado não gostava de lógica se fosse marciano ε > 0 δ > 0 x ( x a < δ f (x) b < ε) 11 / 28

O que é a lógica? Lógica: de que se trata? Não trata d A Verdade... disso ocupa-se a Filosofia (ou a Religião). A lógica é um ramo do conhecimento Faz parte da matemática, mas surge em inúmeros campos. Os outros ramos da matemática e a física são grandes clientes. A filosofia é tanto um "cliente"como um "produtor"importante. Formalização começou na antiguidade. Os Gregos deram o pontapé de saída, mas houve muitos outros contributos fundamentais. 12 / 28

O que é a lógica? Lógica: as figuras clássicas Aristóteles: o pai da lógica dedutiva Viveu em Atenas de 384 a 322 A.C. Definiu as bases axiomáticas do raciocínio (lógico). Junto com Sócrates e Platão, estabeleceu as bases do conhecimento científico da Europa. Euclides: o pai da prova matemática Viveu em Alexandria, cerca do ano 300 A.C. Formalizou a Geometria, baseada em princípios matemáticos rigorosos. O seu livro Os elementos foi a referência central até ao Séc XIX. 13 / 28

O que é a lógica? Lógica: a formalização da Matemática Georg Cantor: o pai da teoria de conjuntos Nasceu na Russia em 1845; morreu na Alemanha em 1918. Inventou a teoria de conjuntos, definiu a noção de infinito e de números transfinitos; mostrou que há mais reais que naturais. Estabeleceu os fundamentos da Matemática moderna. David Hilbert (veremos à frente) disse em 1926 Ninguém nos expulsará do paraíso que Cantor criou para nós. Bertrand Russell: o pai da Lógica como fundação da Matemática Viveu em Inglaterra de 1872 a 1970. Estudou os fundamentos da Matemática e descobriu o paradoxo que abalou a teoria de conjuntos. Escreveu The Principles of Mathematics mostrando que a Matemática pode ser deduzida de um pequeno número de princípios. 14 / 28

O que é a lógica? Lógica: a metamatemática David Hilbert: o pai da prova automática Viveu na Alemanha de 1862 a 1943. O mais importante matemático da época. Definiu os Espaços de Hilbert, a matemática da relatividade e da quântica ( A Física é demasiado difícil para os Físicos ), a Teoria da Prova e a Lógica Matemática. Em 1900 estabeleceu os 23 mais importantes problemas da Matemática, alguns deles estão ainda hoje por resolver. Definiu um programa de investigação para formular TODA a Matemática com bases sólidas e acentes na Lógica (a partir de um conjunto finito de axiomas, provados consistentes). No Congresso dedicado aos seus 70 anos, em 1923, afirmou Temos que saber, viremos a saber! para sublinhar que a Matemática desvendaria toda a Verdade. 15 / 28

O que é a lógica? Lógica: a consciência dos limites Kurt Gödel: o pai da incompletude Nasceu na Austria em 1906; morreu nos EUA em 1978. Mostrou a completude da Lógica de 1 a ordem (no PhD, aos 24 anos) e a incompletude de qualquer sistema axiomático capaz de descrever a aritmética dos naturais. Anunciou o resultado no Congresso de Hilbert (destruindo assím o programa que estava nesses dias em apoteose). Incompletude: há proposições verdadeiras num sistema consistente que não podem ser provadas. Estabeleceu as bases da Computação, com a Teoria das funções recursivas e entre outros trabalhos importantes, mostrou soluções paradoxais para as equações de campo da relatividade generalizada, universos rotativos que permitiriam viagens no tempo. 16 / 28

O que é a lógica? Lógica: o berço da computação Church: o pai das linguagens de programação Viveu nos EUA de 1903 a 1995. Contribuiu para a Lógica Matemática e para a Teoria da Computação, tendo definido o Cálculo-Lambda para provar que é indecidível determinar se dada proposição arbitrária de uma teoria matemática é ou não verdadeira. A simplicidade e expressividade do Cálculo-Lambda, que permite codificar funções, fizeram dele a primeira linguagem de programação. 17 / 28

O que é a lógica? Lógica: o berço da computação Alan Turing: o pai da computação Viveu em Inglaterra de 1912 a 1952. Definiu o primeiro modelo de computação (uma máquina que podia executar qualquer programa): a Máquina Universal de Turing. Mostrou a indecidibilidade do Halting Problem. Estabeleceu a Tese de Church-Turing: Toda a função algoritmicamente calculável é computavel por uma Máquina de Turing. Descodificou o sistema de encriptação da marinha Alemã. Churchill disse que não é um homem que ganha uma guerra, mas que sem Turing a Grã-Bretanha teria provavelmente perdido a 2 a guerra. 18 / 28

O que é a lógica? Lógica: uma linguagem formal A lógica é uma língua Diz-se uma linguagem artificial, por contraste com as línguas naturais (como o Português ou o Inglês, ambíguas e difíceis de representar). É uma linguagem (formal, ou simbólica), que usa símbolos próprios (,,, ), com sintaxe e semântica claras, distinguidas e rigorosamente definidas. É universal, precisa e dedicada ao objectivo. Equipada com regras para decidir da validade de uma afirmação (escrita na linguagem em causa), eventualmente a partir de outras afirmações válidas. 19 / 28

O que é a lógica? Lógica: nem tudo é simples e resolúvel... Exemplos de ambiguidades e paradoxos O Pedro foi ao médico e ficou doente. Causalidade? O Pedro está em casa ou a Rita está em casa e a Ana está feliz. Como associar? Só digo mentiras! Se é verdade, não menti, logo é falsa?! Se é falsa, menti, logo é verdade?! 20 / 28

Entender o raciocínio A lógica na computação Áreas de aplicação Processo dedutivo Consequência lógica Se uma afirmação A decorre de outra B, não pode B ser verdade sem que A o seja. Serve também para mostrar que uma teoria é falsa: se uma teoria económica diz que a inflaxão é consequência de uma baixa taxa de desemprego, e se se observa simultaneamente baixa inflaxão e baixo desemprego, a teoria tem que ser revista. Permite obter provas: objecto matemático irrefutável que estabelece que dado facto é verdade. 21 / 28

Entender o raciocínio A lógica na computação Áreas de aplicação Exemplo de dedução Consequência lógica Se o metro se atrasar e não houver táxis na estação, o Pedro chega tarde. O Pedro não chegou tarde, mas o metro atrasou-se. Logo, havia táxis na estação. Se está a chover e a Ana não tiver um guarda-chuva com ela, vai-se molhar. A Ana não se está a molhar, mas está a chover. Logo, tem um guarda-chuva com ela. Verificação Intuitivamente, as frases reflectem raciocínios válidos, mas como verificar? Na verdade, o raciocínio que prova uma também serve para provar a outra. 22 / 28

Entender o raciocínio A lógica na computação Áreas de aplicação Verificação de consequência lógica Formalização Hipótese 1: se p e não q então r. Hipótese 2: não r e p. Tese: q. Prova Hipótese 1 é equivalente a não p ou q ou r. Hipótese 2 diz que p e não r. Logo q. 23 / 28

Entender o raciocínio A lógica na computação Áreas de aplicação O que dá a lógica à computação Ferramentas essenciais Linguagem para modelar entidades computacionais (equipamentos, sistemas ou programas). Regras para raciocínio formal sobre propriedades de termos (palavras) da linguagem. O raciocínio formal pode ser executado mecanica e automaticamente. Aplicações Circuitos digitais. Inteligência artificial. Teoria da complexidade. Verificação de programas. 24 / 28

Entender o raciocínio A lógica na computação Áreas de aplicação Inteligência artificial Objectivo Desenvolver métodos e/ou dispositivos computacionais que simulem o pensamento humano. Alguns ramos Computação inspirada em fenómenos naturais (genética, neuronal, etc). Processamento de linguagem natural. Robótica. 25 / 28

Entender o raciocínio A lógica na computação Áreas de aplicação Teoria da complexidade Objectivo Classificar problema de acordo com o seu grau de dificuldade. Alguns problemas Determinar se um problema pode ser decidido (resolvido). Exemplo: problema da paragem (verificar se dado programa com certo input termina). Calcular o tempo de execução de um programa em função do tamanho dos dados de entrada. Programas dizem-se polinomiais (deterministas ou não) ou exponenciais. P = NP? Saber se a classe dos problemas resolúveis deterministicamente em tempo polinomial coincide com a classe dos problemas resolúveis não deterministicamente em tempo polinomial. 26 / 28

Entender o raciocínio A lógica na computação Áreas de aplicação Verificação de programas Objectivo Garantir que dado programa tem o comportamento pretendido. São de facto dois problemas: especificar comportamento e provar correção. Algumas aplicações Síntese de programas correctos. Sistemas de tipos. Verificação de modelos ( model checking ). 27 / 28

Entender o raciocínio A lógica na computação Áreas de aplicação Verificação: sistemas de tipos Well-typed programs can t go wrong (Robin Milner, 1978) Exemplo: verificar (estaticamente) que o termo M do comando if M then N 1 else N 2 de um programa imperativo pode só ser avaliado (runtime) como boolean 1. Especifica: sintaxe e semântica do linguagem, sistema de tipos Γ M : bool Γ N 1 : A Γ N 2 : A Γ if M then N 1 else N 2 : A 2. Prova de correção (type preservation or subject reduction): se Γ N : B e N N então Γ N : B 28 / 28