A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Otter Provador de Teoremas

Apresentações semelhantes


Apresentação em tema: "Otter Provador de Teoremas"— Transcrição da apresentação:

1 Otter Provador de Teoremas
André Luiz Gionatta

2 O Otter Desenvolvido por William McCune
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.

3 otter < problema.in > problema.out
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

4 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.

5 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. 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 cláusulas. Exemplo de uma lista usable para fórmulas.

6 Operadores lógicos O Otter trabalha com os seguintes operadores lógicos: Negação - Disjunção | Conjunção & Implicação -> Equivalência <-> Quantificador existencial exists Quantificador universal all Fonte: Adaptado de McCune, W. Otter Reference Manual by William McCune. Disponível em: < Acesso em: 20 abril 2009.

7 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.

8 Funções e predicados Exemplo: fatorial(x) = $IF ($EQ(x, 0)), 1,
$PROD(x, fatorial($DIFF(x,1))). Fonte: Adaptado de McCune, W. Otter Reference Manual by William McCune. Disponível em: < Acesso em: 20 abril 2009.

9 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.

10 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.

11 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 (IrmaoOuIrma(x,y) & Parente(z,x) -> Parente(z,y)). all x y (IrmaoOuIrma(x,y) <-> IrmaoOuIrma(y,x)). all x y (IrmaoOuIrma(x,y) & Masculino(x) <-> Irmao(x,y)). all x y (IrmaoOuIrma(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). Fonte: Adaptado de Introduction to Artificial Intelligence –Assignment 5. Disponível em: < Acesso em: 25 abril 2009.

12 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 [] -IrmaoOuIrma(x,y)| -Parente(z,x)|Parente(z,y). 14 [] -IrmaoOuIrma(x,y)|IrmaoOuIrma(y,x). 16 [] IrmaoOuIrma(x,y)| -Irmao(x,y). 21 [] -Pai(Carlos,Bob). 22 [] Irmao(Bob,Alice). 24 [] Pai(Carlos,Alice). 26 [hyper,22,16] IrmaoOuIrma(Bob,Alice). 29 [hyper,24,5] Parente(Carlos,Alice). 30 [hyper,24,4] Masculino(Carlos). 31 [hyper,26,14] IrmaoOuIrma(Alice,Bob). 34 [hyper,31,13,29] Parente(Carlos,Bob). 37 [hyper,34,6,30] Pai(Carlos,Bob). 38 [binary,37.1,21.1] $F. Sentenças 4-24: entrada Sentenças 26-38: criadas a partir da aplicação das regras de inferência (resolução binária e hiperresolução). Sentença 38: contradição (prova). Fonte: Adaptado de Introduction to Artificial Intelligence –Assignment 5. Disponível em: < Acesso em: 25 abril 2009.

13 Referências McCune, W. Otter Reference Manual by William McCune. Disponível em: < Acesso em: 20 abril 2009. Introduction to Artificial Intelligence –Assignment 5. Disponível em: < Acesso em 25 abril 2009.


Carregar ppt "Otter Provador de Teoremas"

Apresentações semelhantes


Anúncios Google