Lógica de 1ª Ordem :: Introdução Ciência da Computação Na Lógica Proposicional (LP) um átomo (P, Q, R,...) representa uma sentença declarativa que pode ser V ou F, mas não ambos. Um átomo é tratado como uma entidade única. Seus atributos e componentes são desprezados. Muitas idéias não podem ser tratadas de maneira tão simples. Programação em Lógica Lógica de Primeira Ordem Parte I Prof. Sergio Ribeiro Material adaptado de Lógica Matemática da Profª Joseluce Farias – DSC/UFCG Programação em Lógica Lógica de 1ª Ordem Lógica de 1ª Ordem :: Introdução :: Introdução Exemplo: Representar na Lógica Proposicional Para provar que esse argumento é válido, é necessário identificar indivíduos tais como Sócrates, e seus predicados. Todo homem é mortal. Sócrates é um homem. Logo, Sócrates é mortal. Predicados descrevem características ou relacionamentos entre indivíduos (objetos). Se representarmos por: P: Todo homem é mortal. Q: Sócrates é um homem. R: Sócrates é mortal. A Lógica dos Predicados apresenta mais três conceitos lógicos: termos, predicados e quantificadores. {P, Q} |≠ R Isso acontece porque os atributos (predicados ou características) de P, Q e R não são considerados. Programação em Lógica 3 Programação em Lógica Lógica de 1ª Ordem Lógica de 1ª Ordem :: Sintaxe :: Sintaxe Def. 1 ⇒ Um alfabeto de 1ª ordem, ∑, é a união dos conjuntos: 4 Def. 2 ⇒ Termos são expressões (palavras, cadeias) sobre ∑ que representam elementos do domínio (universo): ∑ = P∑ símbolos predicativos F∑ símbolos funcionais C∑ símbolos de constantes V∑ variáveis {~, ∧, ∨, →, ↔} operadores lógicos {∀, ∃} quantificadores {(,)} pontuação Programação em Lógica 2 se a ∈ C∑ então a é um termo. se x ∈ V∑ então x é um termo. se f ∈ F∑ e tem aridade n, e t1, ..., tn são termos, então f(t1, ... ,tn) também é um termo. 5 Programação em Lógica 6 1 Lógica de 1ª Ordem Lógica de 1ª Ordem :: Sintaxe :: Sintaxe Def. 3 ⇒ Fórmulas de 1ª ordem são expressões sobre ∑ para se estabelecer propriedades ou relacionamentos entre elementos do domínio. Def. 4 ⇒ Uma linguagem de 1ª ordem sobre um alfabeto ∑, L(∑), é o conjunto das fórmulas de 1ª ordem sobre ∑. se t1,..., tn são termos sobre ∑ e P é um símbolo predicativo n-ário de ∑, então P(t1,..., tn) é uma fórmula sobre ∑ (chamada fórmula atômica). se α e β são fórmulas sobre ∑, então (∼α), (α ∧ β), (α ∨ β), (α → β) e (α ↔ β) também são fórmulas sobre ∑. se α é uma fórmula sobre ∑ e x ∈ V∑, então ∀x(α) e ∃x(α) também são fórmulas sobre ∑. Programação em Lógica 7 Programação em Lógica 8 Lógica de 1ª Ordem Sintaxe: Exemplo 1 :: Sintaxe: Exemplo 1 “Para todo x, − 1 ≤ sen(x) ≤ 1” 2. introdução do quantificador ∀x(−1≤ sen(x) ≤ 1) 3. desmembramento da expressão −1 ≤ sen(x) ≤ 1 ∀x(−1≤ sen(x) & sen(x) ≤ 1) Expressar em uma linguagem de 1ª ordem a sentença: “Para todo x, − 1 ≤ sen(x) ≤ 1” 1. Definição de ∑ : P∑ = { ≤ }, C∑ = { 1 }, 4. substituição das expressões por termos na forma infixada ∀x(≤(−1, sen(x)) & ≤ (sen(x), 1)) F∑ = { − , sen}, V∑ = { x } 5. substituição da expressão −1 pelo termo −(1) ∀x(≤(−(1), sen(x)) & ≤ (sen(x), 1)) Programação em Lógica 9 Programação em Lógica 10 Sintaxe Sintaxe :: Exemplo 2 :: convenções adotadas “Todos os homens são mortais e Sócrates é um homem. Portanto, Sócrates é Mortal”. Definição de ∑: P∑ = {Homem, Mortal}, F∑ = ∅, V∑ = {x} C∑ = {sócrates} • ∀x(Homem(x) → Mortal(x)) • Homem(Sócrates) Mortal(Sócrates) Programação em Lógica 11 Objeto sintático Convenção notacional variáveis letras do fim do alfabeto ... x, y, z constantes letras do início do alfabeto a, b, c, ... ou palavras símbolos funcionais ..., f, g, h, ... ou palavras símbolos predicativos ..., P, Q, R, ... ou palavras termos ..., t, u, v, ... fórmulas α, β, χ, ... conjunto de fórmulas Γ, Κ, ∆, ... Programação em Lógica 12 2 Sintaxe Sintaxe :: variáveis livres ou ligadas :: variáveis livres ou ligadas Def. 5 ⇒ Em uma fórmula do tipo ∀x(α) (ou da forma ∃x(α) ), α é o escopo do quantificador. Def. 7 ⇒ Uma variável x é dita ser livre em uma fórmula α se pelo menos uma das ocorrências de x é livre em α. Def. 6 ⇒ Uma ocorrência de uma variável x em uma fórmula α é ligada em α, se x está no escopo de algum quantificador de α. Caso contrário, a ocorrência é livre em α. Def. 8 ⇒ Uma fórmula α é uma sentença se e somente se nenhuma variável ocorre livre em α. Programação em Lógica 13 Programação em Lógica 14 Sintaxe Sintaxe :: variáveis livres ou ligadas :: variáveis livres ou ligadas Exemplos de ocorrências livres e ligadas. Fórmula α. ∀x ∃y( ∀z(P(x,y,w,z)) → ∀w(Q(z,w,x,r)) ) Exemplos de ocorrências livres e ligadas. Fórmula α. P(y) ∨ ∀x(P(x)) y é livre e x é ligada. P(x) ∨ ∀x(P(x)) 1a x é livre, 2a é ligada. ∀x(P(x) ∨ Q(x)) é uma sentença. Programação em Lógica x, y, w e z: ligadas em α w, z e r: livres em α w e z: ligadas e livres em α 15 Programação em Lógica 16 Sintaxe Sintaxe :: substituições :: substituições Def. 9 ⇒ Se u é um termo, u[x/t] denotará o termo obtido substituindo-se as ocorrências de x em u pelo termo t. Def. 10 ⇒ Se α é uma fórmula, α[x/t] denotará a fórmula obtida substituindo-se cada ocorrência de x em α pelo termo t. Exemplo: α=∀x(P(x) ∨ Q(x)) e t=joão Exemplo: u= f(x) e t=5 u[x/t] denota u= f(5) α[x/t] denota: α = (P(joão) ∨ Q(joão)) Programação em Lógica 17 Programação em Lógica 18 3 Sintaxe Sintaxe :: substituições :: substituições Def. 11 ⇒ Se x1, ..., xn são variáveis distintas e t1, ..., tn são termos, a expressão u[x1/t1, ..., xn/tn] denotará a substituição simultânea de xi por ti, i = 1, ..., n, no termo u. Exemplo: α = ∀x∀y(P(x) ∨ Q(y)) e t1 = joão; t2 = ana Def. 12 ⇒ Uma variável x é substituível por t em uma fórmula α se, para cada variável y ocorrendo em t, nenhuma sub-fórmula de α do tipo ∀y(β) ou do tipo ∃y(β) contém uma ocorrência livre de x. α[x/t1, y/t2] denota: α’ = (P(joão) ∨ Q(ana)) Programação em Lógica 19 Programação em Lógica Sintaxe Sintaxe :: substituições :: substituições Exemplos: Exemplos: se t = f(x), então, t[x/a] = f(a). se α = P(x) ∧ Q(x, f(y)), então, α[x/a, y/b] = P(a) ∧ Q(a, f(b)). se t = g(f(y), y), então, t[y/z] = g(f(z), z). se α = ∀yP(x, y) e t = f(y), então α[x/t] não é permitido, pois ∀yP(f(y), y) seria uma sentença. se t = g(x, y), então, t[x/f(a), y/b] = g(f(a), b). Programação em Lógica 21 Programação em Lógica Sintaxe Sintaxe :: substituições :: substituições Exemplo: α = ∀y(Ama(x,y)) 22 Exemplo: α = ∀y(P(y,w)) ∧ Q(x) e os termos: t1 = pai(z) e t2 = pai(y) e o termo: t = f(y) x é substituível por t1 e x é substituível por t e x não é substituível por t2 (a variável do termo aparece quantificada e x ocorre livre no escopo do quantificador) Programação em Lógica 20 23 w não é substituível por t (a variável do termo aparece quantificada e w ocorre livre no escopo do quantificador) Programação em Lógica 24 4