Lógica de 1ª Ordem :: Semântica: Motivação Ciência da Computação A fórmula que segue, é verdadeira ou falsa? ∀x(L(x) → P(x)) P = ser bom programador L = ser aluno de lógica É necessário saber: Programação em Lógica Lógica de Primeira Ordem Parte II • • Prof. Sergio Ribeiro quais são os elementos desse universo. quais as atribuições de valor verdade para cada símbolo predicativo, considerando cada elemento do universo. Material adaptado de Lógica Matemática da Profª Joseluce Farias – DSC/UFCG Programação em Lógica 2 Lógica de 1ª Ordem Semântica :: Semântica: Motivação :: Interpretação de Fórmulas Def. 13 ⇒ Uma interpretação I para uma fórmula α consiste de um domínio nãovazio D e de uma atribuição de valores, v , para cada símbolo de constante, de funções e de predicados que ocorrem em α. Uma interpretação de uma fórmula de 1ª Ordem consiste em: Identificar domínio Atribuir valores a cada símbolo da fórmula Formalmente, uma interpretação é definida como segue: Programação em Lógica v é definida da seguinte forma: 3 Programação em Lógica 4 Semântica Interpretação de Fórmulas :: Interpretação de Fórmulas :: Exemplo Seja α = ∃x(~P(x)) v: C∑ → D, isto é, para cada constante a é atribuído um elemento aI ∈ D. I = <D, v >, onde: v: F∑ → [Dn → D], isto é, para cada símbolo (D é o domínio ou universo) funcional n-ário f é atribuído uma função f I de Dn em D. D = {1, 2} v: P∑ → [Dn → {V, F}], isto é, para cada símbolo v(P) = PI definida como: PI(1) = V e PI(2) = F (v são as atribuições) predicativo n-ário P é atribuído uma função PI de Dn em {V, F}. Programação em Lógica 5 Programação em Lógica 6 1 Avaliação de uma Fórmula em uma Interpretação Interpretação de Fórmulas :: Exemplo Def. 14 ⇒ A avaliação v´ (induzida por v) de uma fórmula α em uma interpretação I é definida: Seja α = ∀x(P(f(x)) → Q(a)) I = <D, v >, onde: v´(α) = v (α), se α é uma fórmula atômica. D = {João, José}, v(a) = aI = João v(f) = fI : fI(João) = José v(P) = PI : PI(João) = F v(Q) = QI : QI(João) = F se v´(α) e v´(β) são conhecidos, v´(α ∧ β), v´(α ∨ β), v´(α → β), v´(α ↔ β) e v´(~α) são definidas como na Lógica Proposicional. fI(José) = João PI(José) = V QI(José) = V v´(∀x(α)) = V se v´(α) = V para todo x ∈ D. Caso contrario, v´(∀x(α)) = F. v´(∃x(α)) = V se v´ (α) = V para algum x ∈ D. Caso contrário v´(∃x(α)) = F. Programação em Lógica 7 Avaliação de uma Fórmula em uma Interpretação se x = 1 v´(P(f(x)) → Q(a)) = v´(P(f(1))) → v´(Q(a)) = v´(P(f(1))) → v´(Q(a)) I = <D, v >, onde Qual a avaliação de α para I ? v(a) = aI = 2 v(f) = fI : fI(1) = 2 v(P) = PI : PI(1) = V v(Q) = QI : QI(1) = V = PI(fI(1)) → QI(a) = PI(2) → QI(2) =V→V =V fI(2) = 1 PI(2) = V QI(2) = V Programação em Lógica 9 Avaliação de ∀x(P(f(x)) → Q(a))) para I dada se x = 2 Programação em Lógica 10 Exercícios Para a interpretação que segue, qual o valor lógico de α ? α = ∀x∃y(~P(x,e) → P(e,y)) v´(P(f(x)) → Q(a)) = v´(P(f(2))) → v´(Q(a)) = v´(P(f(2))) → v´(Q(a)) = PI(fI(2)) → QI(aI) = PI(1) → QI(2) =V→V =V Avaliação: v´(∀x(P(f(x)) → Q(a))) = V na interpretação I Programação em Lógica 8 Avaliação de ∀x(P(f(x)) → Q(a))) para I dada Exemplo: Seja α = ∀x(P(f(x)) → Q(a)) e I a interpretação definida abaixo: D = {1, 2} e Programação em Lógica D = {carlos, josé, maria} Atribuições: PI(carlos,carlos) = PI(josé,josé) = PI(maria,maria) = F PI(carlos,josé) = PI(josé,carlos) = V PI(carlos,maria) = PI(maria,carlos) = F PI(josé,maria) = PI(maria,josé) = V eI = carlos 11 Programação em Lógica 12 2 Semântica Semântica Sumário de classificação das fórmulas. Todos os conceitos tais como validade, satisfatibilidade e consequência lógica definidos para a Lógica Proposicional podem ser definidos da mesma forma para a Lógica de 1ª Ordem. a) VÁLIDA (TAUTOLOGIAS (╞ α )) b1) SATISFATÍVEL (CONSISTENTE) FÓRMULA b) INVÁLIDA b2) INSATISFATÍVEL ( |≠ G ) (INCONSISTENTE, CONTADIÇÃO) Programação em Lógica 13 Semântica 14 Semântica Def. 15 ⇒ Uma fórmula α é dita ser satisfatível se e somente se existe ao menos uma interpretação I na qual v´(α) = V. É dito então que I satisfaz α ou que I é um modelo para α. Def. 16 ⇒ Uma fórmula α é dita ser válida ( ╞ α ) se e somente se v´(α) = V para toda interpretação I de α. Programação em Lógica 15 Semântica Def. 17 ⇒ Uma fórmula α é dita ser consequência lógica de um conjunto Γ de fórmulas ( Γ ╞ α ) se e somente se toda interpretação I que satisfaz Γ também satisfaz α. Teorema 1: Γ ╞ α sse Γ → α é uma tautologia Teorema 2: Γ ╞ α sse Γ ∧ ~α é insatisfatível Programação em Lógica 16 Semântica DECISÃO SOBRE A VALIDADE DE UMA FÓRMULA 1a Para fórmulas da Lógica de Ordem, existe infinitos domínios e uma infinidade de interpretações possíveis. Por isso, não é possível verificar a validade ou a inconsistência de uma fórmula. Logo, não existe um algoritmo que verifique todas as possíveis interpretações. Para a Lógica Proposicional, as interpretações são finitas (2n, onde n = símbolos proposicionais) existe um algoritmo: Tabela Verdade Problema de Decisão: Lógica Proposicional : Solúvel (decidível) Lógica de 1a Ordem : Insolúvel (indecidível) Programação em Lógica Programação em Lógica COMO DECIDIR SOBRE A VALIDADE DE UMA FÓRMULA DE 1a ORDEM ? Precisamos raciocinar para determinar se uma fórmula é verdadeira em todas as interpretações Como não é possível verificar todas as interpretações, se pudermos encontrar pelo menos uma interpretação na qual a fórmula seja falsa (um contra-exemplo), fica provado que ela não é válida. Exercícios: ........... 17 Programação em Lógica 18 3 Exercícios Enunciados Categóricos Determine, para cada uma das fórmulas que segue, se a fórmula é ou não é válida. Todo S é P Qualquer que seja x, se x é S, então x é P. a) ∀xP(x) → ∃xP(x) ∀x(S(x) → P(x)) b) ∀xP(x) → P(a) c) ∀x(P(x) ∧ Q(x)) ↔ (∀xP(x) ∧ ∀xQ(x)) Nenhum S é P Qualquer que seja x, se x é S, então x não é P. d) ∀x(P(x) ∨ Q(x)) ↔ (∀xP(x) ∨ ∀xQ(x)) e) ∃xP(x) → ∀xP(x) Programação em Lógica ∀x(S(x) → ~P(x)) 19 Enunciados Categóricos Exemplo Formalizar: Todo homem é mortal. Sócrates é um homem. Logo, Sócrates é mortal. ∃x(S(x) ^ P(x)) Algum S não é P Para pelo menos um x, x é S e x não é P. ∀x (H(x) → M(x)) H(sócrates) M(sócrates) Considerando Predicados M(x): x é mortal H(x): x é um homem Um individuo: Sócrates ∃x(S(x) ^ ~P(x)) 21 Exercício: Programação em Lógica 22 Exercício: Para formalizar os argumentos que seguem, Interprete as letras C, R, V e S como: b) Nenhuma rã é verde. ∀x(R(x) → ~V(x)) c) Algumas rãs são verdes. ∃x(R(x) ^ V(x)) d) Toda coisa é uma rã. ∀x(R(x)) e) Nada é uma rã. ∀x(~R(x)) ou ~∃x(R(x)) C ≡ está chovendo; R ≡ é uma rã; V ≡ é verde; S ≡ é saltitante; a) Todas as rãs são verdes. ∀x(R(x) → V(x)) Programação em Lógica 20 Enunciados Categóricos Algum S é P Para pelo menos um x, x é S e x é P. Programação em Lógica Programação em Lógica 23 Programação em Lógica 24 4 Exercício: Exercício: f) Qualquer coisa é uma rã verde. ∀x(R(x) ^ V(x)) i) Algumas rãs verdes não estão saltitando. ∃x((R(x) ^ V(x)) ^ ~S(x)) g) Está chovendo e algumas rãs estão saltitando. C ^ ∃x(R(x) ^ S(x)) j) Rãs verdes saltitam se, e somente se , está chovendo. ∀x((R(x) ^ V(x)) → (S(x) ↔ C)) h) Somente rãs são verdes. ∀x(V(x) → R(x)) Programação em Lógica 25 Exercício 2: 1) Carlos é mecânico. Mecânico(Carlos) Indivíduos: Carlos, João e Maria 2) Carlos e João são mecânicos. Mecânico(Carlos) ^ Mecânico(João) Predicados: Mecânico(x) ≡ x é mecânico Enfermeiro(x) ≡ x é enfermeiro Ama(x, y) ≡ x ama y 3) Carlos é mecânico ou enfermeiro. Mecânico(Carlos) ∨ Enfermeiro(Carlos) 27 Exercício 2: Programação em Lógica 28 Exercício 2: 4) Se Carlos é mecânico então Carlos não é enfermeiro. Mecânico(Carlos) → ~Enfermeiro(Carlos) 7) Todo mundo ama João. ∀x(Ama(x, João)) 5) João ama Maria. Ama(João, Maria) 8) Existe alguém que Maria não ama. ∃x(~Ama(Maria, x)) 6) João ama a si próprio. Ama(João, João) 9) Todo mundo é amado por alguém. ∀x∃y(Ama(y, x)) Programação em Lógica 26 Exercício 2: Para formalizar os argumentos que seguem considere a interpretação: Programação em Lógica Programação em Lógica 29 Programação em Lógica 30 5 Exercício 2: 10) Alguém é amado por todos. ∃x∀y(Ama(y,x)) 11) Existe alguém que ama todo mundo. ∃x∀y(Ama(x,y)) 12) Alguém ama alguém. ∃x∃y(Ama(x,y)) Programação em Lógica 31 6