Otter Provador de Teoremas Andr Luiz Gionatta 1

  • Slides: 13
Download presentation
Otter Provador de Teoremas André Luiz Gionatta 1

Otter Provador de Teoremas André Luiz Gionatta 1

O Otter • Desenvolvido por William Mc. Cune • Funciona com variados tipos de

O Otter • Desenvolvido por William Mc. Cune • Funciona com variados tipos de resolução (binária, hiperresolução, resolução UR, paramodulação. . . ) • Aplica as regras de inferência de cada tipo de resolução em um conjunto de cláusulas ou fórmulas para encontrar uma prova. • Cada vez que é aplicado uma regra de inferência, novas cláusulas são geradas. 2

Usando o Otter • Otter não possui uma interface gráfica, sendo utilizado pelo console

Usando o Otter • Otter não possui uma interface gráfica, sendo utilizado pelo console do Windows. • Lê um arquivo de entrada (com extensão. in) em que estão contidas as fórmulas ou cláusulas que serão utilizadas durante a busca da prova. • Gera um arquivo de saída (com extensão. out) com as estatísticas da busca, bem como os detalhes da prova (se houver). • Sintaxe para execução da busca: otter < problema. in > problema. out 3

O arquivo de entrada (. in) • É no arquivo de entrada que se

O arquivo de entrada (. in) • É no arquivo de entrada que se deve configurar as opções que serão utilizadas pelo Otter. • O arquivo também deverá conter as cláusulas e fórmulas que serão utilizadas durante a busca da prova. • É imprescindível definir qual tipo de resolução o Otter usará para determinado problema. • set(binary_res). – utiliza a resolução binária • set(hyper_res). – utiliza a hiperresolução • set(auto). – o Otter utilizará todos os modos de resolução possíveis para provar o problema. 4

O arquivo de entrada (. in) • O comando list(usable). é usado para que

O arquivo de entrada (. in) • O comando list(usable). é usado para que o provador leia uma lista de cláusulas, as quais serão usadas para serem feitas inferências. • O comando formula_list(usable). tem a mesma função do comando acima mas é usado para fórmulas. set(auto). list(usable). -> humano(socrates). humano(X) -> mortal(X). mortal(socrates) ->. end_of_list. Exemplo de uma lista usable para cláusulas. set(auto). formula_list(usable). all x y (Mae(x, y) <-> Feminino(x) & Parente(x, y)). all x y (Pai(x, y) <-> Masculino(x) & Parente(x, y)). end_of_list. Exemplo de uma lista usable para fórmulas. 5

Operadores lógicos • O Otter trabalha com os seguintes operadores lógicos: Negação - Disjunção

Operadores lógicos • O Otter trabalha com os seguintes operadores lógicos: Negação - Disjunção | Conjunção & Implicação -> Equivalência Quantificador existencial Quantificador universal <-> exists all Fonte: Adaptado de Mc. Cune, W. Otter Reference Manual by William Mc. Cune. Disponível em: <http: //www. cs. unm. edu/~mccune/otter/Otter 33. pdf>. Acesso em: 20 abril 2009. 6

Funções e predicados • É possível utilizar algumas funções em problemas no Otter (programmed

Funções e predicados • É possível utilizar algumas funções em problemas no Otter (programmed mode). • Os símbolos possuem $ ($-symbols). • Exemplos de algumas funções: • Para tipos int: $SUM (soma), $DIFF (subtração), $PROD (multiplicação). . . • Para tipos float: os mesmos para tipos int porém com a letra F após o símbolo $ ($FSUM, $FDIFF, . . . ). • Para tipos boolean: $T (true) e $F (false). • Outros: $EQ (=), $GT (>), $GE (>=), etc. 7

Funções e predicados • Exemplo: fatorial(x) = $IF ($EQ(x, 0)), 1, $PROD(x, fatorial($DIFF(x, 1))).

Funções e predicados • Exemplo: fatorial(x) = $IF ($EQ(x, 0)), 1, $PROD(x, fatorial($DIFF(x, 1))). Fonte: Adaptado de Mc. Cune, W. Otter Reference Manual by William Mc. Cune. Disponível em: <http: //www. cs. unm. edu/~mccune/otter/Otter 33. pdf>. Acesso em: 20 abril 2009. 8

O arquivo de saída (. out) • O arquivo contém as estatísticas da busca

O arquivo de saída (. out) • O arquivo contém as estatísticas da busca e a prova, caso o provador tenha encontrado uma. • Caso exista uma prova o Otter lista as cláusulas/fórmulas que foram usadas para encontrá-la e os detalhes de qual resolução o provador utilizou e em quais cláusulas/fórmulas a resolução foi aplicada. • As sentenças (cláusulas ou fórmulas) são identificadas por um número inteiro (ID). • Se o Otter encontrar provas mostra a seguinte mensagem: Search stopped by max_proofs option. • Se não encontrar provas mostra a mensagem: Search stopped because sos empty. 9

Exemplo de prova • Descrição do problema que será utilizado no Otter: Bob é

Exemplo de prova • Descrição do problema que será utilizado no Otter: Bob é irmão de Alice, Diane é mãe de Bob e Carlos é pai de Alice. Provar, utilizando o Otter, que Carlos é pai de Bob. 10

Exemplo de prova – Arquivo de entrada (. in) set(auto). formula_list(usable). % Regras de

Exemplo de prova – Arquivo de entrada (. in) set(auto). formula_list(usable). % Regras de parentesco % all x y (Mae(x, y) <-> Feminino(x) & Parente(x, y)). all x y (Pai(x, y) <-> Masculino(x) & Parente(x, y)). all x y (Parente(x, y) & Masculino(y) <-> Filho(y, x)). all x y (Parente(x, y) & Feminino(y) <-> Filha(y, x)). all x y z (Irmao. Ou. Irma(x, y) & Parente(z, x) -> Parente(z, y)). all x y (Irmao. Ou. Irma(x, y) <-> Irmao. Ou. Irma(y, x)). all x y (Irmao. Ou. Irma(x, y) & Masculino(x) <-> Irmao(x, y)). all x y (Irmao. Ou. Irma(x, y) & Feminino(x) <-> Irma(x, y)). % Fatos para o problema % Irmao(Bob, Alice). Mae(Diane, Bob). Pai(Carlos, Alice). end_of_list. formula_list(sos). % Provar que Pai(Carlos, Bob), adicionando sua negacao no SOS % -Pai(Carlos, Bob). end_of_list. 11 Fonte: Adaptado de Introduction to Artificial Intelligence –Assignment 5. Disponível em: <http: //www. cs. rpi. edu/academics/courses/fall 03/ai/handouts/assign 5. pdf>. Acesso em: 25 abril 2009.

Exemplo de prova – Arquivo de saída (. out) -------- PROOF --------4 [] -Pai(x,

Exemplo de prova – Arquivo de saída (. out) -------- PROOF --------4 [] -Pai(x, y)|Masculino(x). 5 [] -Pai(x, y)|Parente(x, y). 6 [] Pai(x, y)| -Masculino(x)| -Parente(x, y). 13 [] -Irmao. Ou. Irma(x, y)| -Parente(z, x)|Parente(z, y). 14 [] -Irmao. Ou. Irma(x, y)|Irmao. Ou. Irma(y, x). 16 [] Irmao. Ou. Irma(x, y)| -Irmao(x, y). 21 [] -Pai(Carlos, Bob). 22 [] Irmao(Bob, Alice). • Sentenças 4 -24: entrada 24 [] Pai(Carlos, Alice). 26 [hyper, 22, 16] Irmao. Ou. Irma(Bob, Alice). • Sentenças 26 -38: criadas 29 [hyper, 24, 5] Parente(Carlos, Alice). a partir da aplicação das 30 [hyper, 24, 4] Masculino(Carlos). regras de inferência 31 [hyper, 26, 14] Irmao. Ou. Irma(Alice, Bob). (resolução binária e 34 [hyper, 31, 13, 29] Parente(Carlos, Bob). hiperresolução). 37 [hyper, 34, 6, 30] Pai(Carlos, Bob). • Sentença 38: contradição 38 [binary, 37. 1, 21. 1] $F. (prova). 12 Fonte: Adaptado de Introduction to Artificial Intelligence –Assignment 5. Disponível em: <http: //www. cs. rpi. edu/academics/courses/fall 03/ai/handouts/assign 5. pdf>. Acesso em: 25 abril 2009.

Referências Mc. Cune, W. Otter Reference Manual by William Mc. Cune. Disponível em: <http:

Referências Mc. Cune, W. Otter Reference Manual by William Mc. Cune. Disponível em: <http: //www. cs. unm. edu/~mccune/otter/Otter 33. pdf>. Acesso em: 20 abril 2009. Introduction to Artificial Intelligence –Assignment 5. Disponível em: <http: //www. cs. rpi. edu/academics/courses/fall 03/ai/handouts/assign 5. pdf>. Acesso em 25 abril 2009. 13