1 / 15

XSB Prolog

XSB Prolog. Aula de Laboratório. Conectar ao UNIX(caruaru.cin.ufpe.br de preferencia) Baixar os arquivos ‘.P’ de /~eaa/prolog para um diretorio acessivel a partir do UNIX Mapeia \escadaeaa No diretorio public_htmlprolog Mudar para este diretório

Download Presentation

XSB Prolog

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XSB Prolog Aula de Laboratório

  2. Conectar ao UNIX(caruaru.cin.ufpe.br de preferencia) • Baixar os arquivos ‘.P’ de /~eaa/prolog para um diretorio acessivel a partir do UNIX • Mapeia \\escada\eaa • No diretorio public_html\prolog • Mudar para este diretório • Abrir os arquivos baixados num editor de texto (Context por exemplo)

  3. XSB • XSB pode ser visto como um sistema Prolog • É multi-plataforma • Código-fonte aberto e em desenvolvimento • O uso de predicados tabelados evita loops infinitos • Trata termos Hilog(programação de alta ordem ou meta-programação) • Fornece engenho de implementação para Programação em Lógica e para aplicações orientadas a dados • Possui interfaces para: C, Java, Oracle, ODBC • Suporte a FLORA: uma sofisticada interface orientada a objetos

  4. XSB • Executar • Conectar-se em qualquer maquina SunOS5 (ex,Caruaru) • Concatenar /home/robocup/solaris/XSB/bin/ na variável de ambiente PATH do seu .cshrc; ou • Criar um alias como abaixo • alias xsb /home/robocup/solaris/XSB/bin/xsb • Digitar xsb no prompt Unix. • Carregar Arquivo • Digitar [<FILE_NAME_1>, ...,<FILE_NAME_N>]. para carregar N arquivos no ambiente de XSB; ou • consult(< FILE_NAME>). (ou reconsult(< FILE_NAME>).)

  5. XSB • Consultar • Digitar o predicado (ou predicados separados por virgula) e pressionar return para obter o resultado e o prompt para a próxima consulta • Digitar ‘;’ para forcar o backtracking • Encerrar • Pressionar CTRL+C para interromper a execução da consulta • Digitar halt.(ou 2 CTRL +C seguidos) para sair do XSB

  6. XSB • Módulo user • Com o módulo user você pode compilar predicados Prolog sem criar um arquivo tais predicados • Ex: Execute o xsb e depois carregue o módulo user da seguinte forma • [user]. <enter> • Digite os predicados abaixo • prof(ia,di,ufpe,pessoa(geber,_)). musico(pessoa(_,senior)). pessoa(geber, senior). • Pressione CTRL+D • Consulte os predicados

  7. XSB • Exemplos • Carregar o arquivo west.P e : • Verificar se bush é criminoso. • Verificar quais o criminosos conhecidos • Debug • ?-trace. • Ativa o trace sistemático de todos os predicados. • Todos os objetivos(as chamadas) do interpretador são impressos (precedidos por ´CALL´ ou ‘REDO’). • Todos os resultados (as saídas) são impressos (precedidos por `*EXIT´, ‘EXIT’ ou ‘FAIL’). • Para interromper um trace: responder ´n:<enter>´ ao prompt'. • Veja o trace do predicado criminal/1

  8. XSB • ?-notrace. • Apaga(desativa) o trace sistemático. • ?-spy(Pred/Arity). • Ativa o trace de predicados específicos. • Imprime apenas os CALL, ..., REDO, EXIT, ..., FAIL do predicado passado como argumento. • Os predicados são especificados por seu nome/aridade; onde a aridade é opcional. • spy([ ..., Pred1/Aity1, ...]). : para especificar uma lista de predicados a rastrear. • Ative o trace para o predicado hostile/1 e veja quais o criminosos conhecidos.

  9. XSB • ?-nospy(Pred/Arity). • Desativa apenas a espionagem do predicado indicado. • ?-nospy([ ..., Pred/Arity ,...]). • Para desativar espionagem de mais de um predicado. • ?-nodebug. • Desativa a espionagem para todos os predicados. • Redirecionar o Debug • A seqüência • ?-debug_ctl(redirect,‘arquivodebug.log'). • ?-debug_ctl(prompt,off). • Direcionará a saída do debug para o arquivo ‘arquivodebug.log'

  10. XSB • Exemplos • Carregue o arquivo append.P e: • Quais as listas cujo append produz a lista [a,b,c]? • Adicionar a lista [m,n] à lista [a,b,m] resulta em [a,b,m,n]? • Quais os dias da semana antecedem e quais sucedem o sábado? • Exercícios • Construir predicados para as seguintes operações sobre listas: • Adicionar um item, apagar um item, determinar o tamanho da lista.

  11. XSB • Exemplos • Carregue o arquivo fac.P e: • Qual o fatorial de 15, 1000, 31 e 30? • 125261824 é o fatorial de 16? • Qual o número cujo fatorial é 40320? • Exercícios • Construir o predicados para determinar uma P.A com a seguinte forma: arithmeticProgression(FirstTerm,Difference,NTerm,Result)

  12. XSB • Exemplos • Carregue o arquivo dataCheck.P e: • Verificar se a data 29/2/2002 é uma data válida? • Execute a seguintes consultas : • Hoje=date(2002,7,10),tomorrow(Hoje,R). • correct_date(make_date(2002,02,28,Date)). • make_date(2002,02,28,Date),correct_date(Date). • make_date(2002,02,28,_Date),correct_date(_Date). • Exercícios • Construir os predicados:yesterday, afterTomorrow, beforeYesterday • Fazer a verificação completa de ano bisexto • Fazer com que make_date produza apenas datas corretas

  13. FIM

  14. Predicados Tabelados • O predicado ancestor(X,Y) :- ancestor(X,Z), parent(Z,Y). ancestor(X,Y) :- parent(X,Y). Entra em loop infinito • O uso de predicados tabelados elimina o loop infinito :- table ancestor/2. ancestor(X,Y) :- ancestor(X,Z), parent(Z,Y). ancestor(X,Y) :- parent(X,Y).

  15. Termos Hilog • Termos Hilog :- hilog closure. closure(R)(X,Y) :- R(X,Y). closure(R)(X,Y) :- closure(R)(X,Z), R(Z,Y).

More Related