Rodar XSB Prolog no Unix Shell

Slides:



Advertisements
Apresentações semelhantes
Python: Entrada e Saída
Advertisements

Python: Funções Claudio Esperança.
Python: Listas Claudio Esperança.
Fundamentos de Prolog: uma breve introdução à programação em lógica Jacques Robin, DI-UFPE
MATLAB – Aplicações a Engenharia Construção de Interfaces Gráficas
Banco de Dados I Aula 20.
Parte I Capítulo 5 Reutilizando código e escrevendo funções.
Expert Sinta.
Comandos do Linux SO II.
Componente Curricular Sistemas Operacionais - SOP
Dispositivos lógicos programáveis (DLP)
SLX: Procedimentos para WFSX SLX (SL with eXplicit negation) é um procedimento top- down para a WFSXp –Aqui apresenta-se apenas a caracterização de AND-trees.
Tipos de igualdade X = Y é verdadeiro se X é igual a Y. X is E é verdadeiro se X é a avaliação da expressão E. E1 =:= E2 é verdadeiro se a avaliação da.
Shell Script Professor: João Paulo
Prof. João Paulo de Brito Gonçalves Sistema de Arquivos - COMANDOS DE VISUALIZAÇÃO, BUSCA E LOCALIZAÇÃO Campus - Cachoeiro Curso Técnico de Informática.
Introdução à Linguagem Prolog
Vi 1 Editando com vi. vi 2 Por que vi? l Editar arquivos de configuração l Editar scripts de shell l Disponível em todas as distribuições l Necessita.
Claudio Esperança Python: Comandos Básicos. Primeiros passos em programação Até agora só vimos como computar algumas expressões simples Expressões são.
April 05 Prof. Ismael H. F. Santos - 1 Modulo II CheckStyle Professor Ismael H F Santos –
Jacques Robin, DI-UFPE Prolog: comparação com outras linguagens de programação e de representação do conhecimento Jacques Robin, DI-UFPE.
Life Leonardo Lemos (lal)Paulo Oliva (pbo)& Controle de Fluxo * de predicados: Como em Prolog: fail. conjunção (A,B). disjunção (A;B). Diferente de Prolog:
Rodar Prolog2 no Unix Shell Conectar-se em limoeiro. Incluir /usr/local/prolog2/sys no seu path. Digitar prolog2 no prompt Unix. Digitar consult(" ").
Prolog: Predicados Built-in 2
LIFE: predicados, funções e sorts built-in Jacques Robin Paulo Oliva Leonardo Lemos DI-UFPE.
PROGRAMAÇÃO MODULAR (com uso de subprogramas)
Rafael Pinto Frederico Corrêa
Programação Lógica: PROLOG
OBS: Este ppt não é o definitivo (Versão Beta)
7 Abstração Genérica Unidades genéricas e instanciação.
6. Backtracking e Controle
2. A Linguagem Prolog.
Armazenamento de Dados em Arquivos
Linguagem C Estruturas de Seleção.
Armazenamento de Dados em Arquivos
Tratamento de Ficheiros
Para fazer nova camada com traços ou áreas Escolha line para linha.
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
Comandos para navegação no Sistema de Arquivos
Interpretador Online.
Redes de Computadores Prof. Carlos Rafael Guerber
Utilitários de Redes Prof. Andréa Chicri Torga Adaptações
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
Prof. André Leon S. Gradvohl, Dr.
Sintaxe e Semântica do PROLOG.
Aula Prática - Prolog Sistemas Inteligentes /~if684
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
Aula Prática - Prolog Sistemas Inteligentes /~if684
Python: Exceções, Iteradores e Geradores
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Administração de Redes Cisco I
Sistema Operativo de Rede Prof. António dos Anjos
INF 1771 – Inteligência Artificial
Flora-2 Aula de Laboratório Arquivo do Exemplo  Baixar os arquivos “safari.flr” de ~apln/aulamci em um diretório acessível pelo unix (subpasta no diretório.
Uma Breve Introdução á programação lógica
Linguagem de Programação JAVA
Procedimentos Pré-definidos em prolog comunicação
Ceça Moraes – Introdução à Programação SI1
Sistemas Especialistas Podem ser definidos como programas de computador desenvolvidos para representar o conhecimento humano num dado domínio específico.
Princípios da Programação em Prolog
Programação e Aplicações Gráficas
Introdução ao MATLAB 5.3 para Hidrólogos
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo I Comandos Simples e Repetições.
Rodar XSB Prolog no Unix Shell Conectar-se em qualquer maquina SunOS5 (ex,Caruaru) Concatenar /home/robocup/solaris/XSB/bin/ na variável de ambiente PATH.
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.
XSB Prolog Aula de Laboratório. * Baixar os arquivos ‘.P’ e ‘.ecl’ de ~kss/aula em um diretório acessível pelo unix (subpasta no diretório pessoal). *
PROGRAMAÇÃO LÓGICA Vinicius Ponte Machado Aula 13 – Predicados de Controle UNIVERSIDADE FEDERAL DO PIAUÍ – UFPI Departamento de Informática & Estatística.
PACKET TRACER Simulador Cisco CRIANDO VLAN´S
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Transcrição da apresentação:

Rodar XSB Prolog no Unix Shell Conectar-se em qualquer maquina SunOS5 Concatenar /home/matriks/code/languages/XSB/bin/ na variável de ambiente PATH do seu .cshrc Digitar xsb no prompt Unix. Digitar [<FILE_NAME_1>, ...,<FILE_NAME_N>]. para carregar N arquivos no ambiente de XSB. Digitar <TOP_LEVEL_PREDICATE> no prompt de XSB. Digitar return para obter o prompt para a próxima consulta Digitar ? para forcar o backtracking Digitar ^C para interromper a execução da consulta Digitar halt. para sair de XSB Exemplos com: ~jr/teaching/prolog/codeSamples/append.P ~jr/teaching/prolog/codeSamples/west.P ~jr/teaching/prolog/codeSamples/fac.P

Rodar XSB Prolog no Emacs Etapas: Concatenar /home/matriks/code/languages/XSB/bin/xsb na variável de ambiente PATH do seu. Incluir no seu .emacs: (defun xsb (file) "Run an inferior XSB process, input and output via buffer *XSB*." (interactive (list (read-file-name "Base system: (default xsb)" “home/matriks/code/languages/XSB/bin/xsb” t))) (require 'shell) (require 'inf-lisp) (setq file (expand-file-name file)) (switch-to-buffer (make-comint ”XSB" file)) (inferior-prolog-mode) ) Abrir uma janela X rodando emacs. Digitar <esc-x> xsb Repetir os passos dados para rodar eclipse no Unix (menos o primeiro) Vantagens: Modo especial para fechar parênteses de estruturas e colchetes de listas. esc-p+ para reutilizar comando precedente. Toda a janela de execução disponível para uso de comandos emacs (search, unkill, etc.) Divisão da janela emacs em dois buffers, um de execução e um de edicao de fonte ^x-o+ para passar de uma a outra janela. Divisão da janela emacs em varias sub-janelas com \verb+^x-2+ (para dividir) e \verb+^x-1+ (para juntar). Inconveniente: dever saber/aprender emacs :)

Help On-line |?-: help(help). ... |?-: help(_). |?-: help(bagof). |?-: help(fd).

Trace, Creep, Spy & Leap ?-trace. ?-spy(Pred/Arity). Ativa o trace sistemático de todos os predicados. Todos os objetivos(as chamadas) do interpretador são impressos (precedidos por ´CALL´, ‘REDO’, ‘RESUME’ ou ‘NEXT’). Todos os resultados (as saídas) são impressos (precedidos por `*EXIT´, ‘EXIT’, ‘FAIL’ ou ‘LEAVE’). Para interromper um trace: responder ´n´ ao prompt'. ?-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.

Exemplo de Uso de trace fac(0,1). fac(N,Fn) :- M is N-1, fac(M,Fm), Fn is N * Fm. append([],Y,Y). append([Xh|Xt],Y,[Xh|Rt]) :- append(Xt,Y,Rt). ?- trace. yes ?- append([a,b,c],[d,e],R). ( 1) 0 CALL: append([a,b,c],[d,e],_45) ? ( 2) 1 CALL: append([b,c],[d,e],_100) ? ( 3) 2 CALL: append([c],[d,e],_146) ? ( 4) 3 CALL: append([],[d,e],_192) ? ( 4) 3 EXIT: append([],[d,e],[d,e]) ( 3) 2 EXIT: append([c],[d,e],[c,d,e]) ( 2) 1 EXIT: append([b,c],[d,e],[b,c,d,e]) ( 1) 0 EXIT: append([a,b,c],[d,e],[a,b,c,d,e]) R = [a,b,c,d,e] More (y/n)? y

Exemplo de Uso de trace (cont.) fac(0,1) :- !. fac(N,Fn) :- M is N-1, fac(M,Fm), Fn is N * Fm. append([],Y,Y). append([Xh|Xt],Y,[Xh|Rt]) :- append(Xt,Y,Rt). More (y/n)? y ( 1) 0 REDO: append([a,b,c],[d,e],[a,b,c,d,e]) ? ( 2) 1 REDO: append([b,c],[d,e],[b,c,d,e]) ? ( 3) 2 REDO: append([c],[d,e],[c,d,e]) ? ( 4) 3 REDO: append([],[d,e],[d,e]) ? ( 4) 3 FAIL: append([],[d,e],_192) ( 3) 2 FAIL: append([c],[d,e],_146) ( 2) 1 FAIL: append([b,c],[d,e],_100) ( 1) 0 FAIL: append([a,b,c],[d,e],_45) no ?- fac(3,R). ( 1) 0 CALL: fac(3,_5) ? n R = 6 More (y/n)? n yes ?-

Exemplo de Uso de Spy fac(0,1) :- !. fac(N,Fn) :- M is N-1, fac(M,Fm), Fn is N * Fm. append([],Y,Y). append([Xh|Xt],Y,[Xh|Rt]) :- append(Xt,Y,Rt). ?- spy(append/3). yes ?- append([a,b,c],[d,e],R). * ( 1) 0 CALL: append([a,b,c],[d,e],_28) ? n R = [a,b,c,d,e] More (y/n)? n ?- fac(3,R). R = 6 More (y/n)? n yes ?- spy(fac). ?- fac(1,R). * ( 1) 0 CALL: fac(1,_5) ? ( 2) 1 CALL: _59 is 1-1 {system}? ( 2) 1 EXIT: 0 is 1-1 * ( 3) 1 CALL: fac(0,_136) ? * ( 3) 1 EXIT: fac(0,1) ? ( 4) 1 CALL: _5 is 1*1 {system}? ( 4) 1 EXIT: 1 is 1*1 * ( 1) 0 EXIT: fac(1,1) ? R = 1 ?-

Debugging, notrace, nospy ?-debugging. : mostra os predicados sendo espionados. ?-notrace. : apaga o trace sistemático. Não apagar o trace `a la carte’: ?-nospy(Pred/Arity). apaga apenas espionagem do predicado indicado. ?-nospy([ ..., Pred/Arity ,...]). para apagar espionagem de mais de um predicado. ?-nodebugging. : apaga o espionagem para todos os predicados.  

Listing: visualizar definição de predicados listing(Predicado) O argumento Predicado deve ser instanciado com um atomo, seja uma estrutura de predicado. Busca os fatos e regras que definem Predicado no ambiente corrente do interpretador. Se achar alguns, imprime todos eles de uma vez e responde yes. Se nao achar nenhum, responde no. Nao instancia as variaveis de Predicado. Util para debugging, especialmente de programas auto-modificadores.

Listing - Exemplo append([],Y,Y). append([Xh|Xt],Y,[Xh|Rt]) :- append(Xt,Y,Rt). concat(S1,S2,Sr) :- list(L1,S1), list(L2,S2), append(L1,L2,Lr), list(Lr,Sr). ?- listing(append). /* append/3 */ append([],Y,Y) . append([Xh|Xt],Y,[Xh|Rt]) :- append(Xt,Y,Rt) . yes ?- listing(append(X,Y,R)). X = _4, Y = _12, R = _20 More (y/n)? y no ?- listing(P(X,Y,R)). Syntax error no. 7 Syntax: missing comma or operator Context: listing(P^[here](X,Y,R)). Evaluation aborted ?-

Clause - Exemplo clause(Conclusao,Premissa) ?- clause(member(X,Y,R)). Conclusao deve ser instanciado com uma estrutura de funtor especificado. Busca os fatos e regras que definem Conclusao no ambiente corrente do interpretador. Se achar um fato que se unifica com Conclusao, instancia a Premissa com true. Se achar uma regra cuja conclusao se unifica com Conclusao,instancia Premissa com a premissa desta regra. Se nao achar, responde no. Se re-chamado dentro de um backtracking, instancia Premissa com o proximo fato ou proxima regra que a define. ?- clause(member(X,Y,R)). no ?- clause(append(X,Y,R),Z). X = [], Y = _29, R = _29, Z = true More (y/n)? y X = [_66|_67], Y = _29, R = [_66|_71], Z = append(_67,_29,_71) ?- clause(append,Z). ?- clause(Z,append(X,Y,R)). Error no. 11 Bad predicate rep Error goal: clause(_62/_63,append(_29,_37,_45)) Evaluation aborted ?-