Rodar Prolog2 no Unix Shell Conectar-se em limoeiro. Incluir /usr/local/prolog2/sys no seu path. Digitar prolog2 no prompt Unix. Digitar consult(" ").

Slides:



Advertisements
Apresentações semelhantes
Presenter’s Notes Some Background on the Barber Paradox
Advertisements

1998 Morgan Kaufmann Publishers Mario Côrtes - MO401 - IC/Unicamp- 2004s2 Ch5A-1 Chapter Five The Processor: Datapath and Control.
SAP Best Practices Know-how sectorial e global pré-configurado
Simple Present.
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.
Manipulação de Arquivos de Dados
Reported Speech or Indirect Speech
The indefinite Pronouns
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
VHDL Very High Speed Integrated Circuit Hardware Description Language Prof. Eduardo Todt 2008.
Indirect Speech By Laecio Miranda.
MODAL VERBS.
Ser Feliz é.... Happiness is.... é não ter medo dos próprios sentimentos... not being afraid to express feelings….
Rodar XSB Prolog no Unix Shell
Prolog: Predicados Built-in 2
Correção dos exercícios de engenharia do conhecimento em Prolog Jacques Robin, DI-UFPE
Correção dos exercícios de engenharia do conhecimento em Prolog
Sistemas Distribuídos Introdução: Modelos de Arquitetura de Sistemas Distribuídos Instituto de Informática – UFG Verão 2005 Baseado em: Coulouris, Cap.
A.4. Trabalhando com elementos de biblioteca STL – Standard Template Libraby Disponibiliza um conjunto de classes templates, provendo algoritmos eficientes.
FORTRAN 90 Denise Yumi Takamura.
Teste Estrutural de Software
CS 561, Lectures Estrutura de dados para árvore de busca Estrutura do tipo nó (node) { Estado (no espaço de estados ao qual o nó corresponde); Pai.
CS 561, Session 6 1 Last time: Problem-Solving Problem solving: Goal formulation Problem formulation (states, operators) Search for solution Problem formulation:
Uniform Resource Identifier (URI). Uniform Resource Identifiers Uniform Resource Identifiers (URI) ou Identificador de Recursos Uniforme provê um meio.
Acção de Formação A Biblioteca Escolar: Leitura e Literacia no 2º e 3º ciclos do Ensino Básico e Secundário Centro de Formação Júlio Brandão
Usando Java no Oracle Por Edson Almeida Junior
BLUE BEAUTY Photos by Astronaut Sunita Williams Photos by Astronaut Sunita Williams.
Alice Cooper I never cry.
DEscription of 2 cities: canela and novo hamburgo! Eduardo de abreu kunrath 4°a! Teacher leticia! AND! TEACHER jaqueline!
Fazendo e Brincando: Confecção de Materiais para as Aulas de Inglês
Sincronização com Locks. Locks É um mecanismo de sincronização de processos/threads em que estas devem ser programadas de modo que seus efeitos sobre.
PAST CONTINUOUS.
When I find myself in times of trouble Quando me encontro em tempos de dificuldades Mother Mary comes to me Virgem Maria chega até mim Speaking words.
Webots Pedro Pinheiro 12 de Novembro de Webots Pedro Pinheiro 12 de Novembro de 2004 Prepared by: Pedro Pinheiro.
Lecture 4 Pressure distribution in fluids. Pressure and pressure gradient. Hydrostatic pressure 1.
Introdução à Criptografia Moderna – 2ª Lista de Exercícios
1 Semântica de Ações Ações Básicas, Ações Funcionais e Notação de Dados.
Brenda Lee I’m sorry.
WELCOME TO MY WORLD (Bem-Vinda Ao Meu Mundo) WELCOME TO MY WORLD (Bem-Vinda Ao Meu Mundo)
Procedimentos Pré-definidos em prolog comunicação
Unit 8 Present Perfect.
Curva de Remanso Direct Step Method.
RELATÓRIO CEMEC 06 COMPARAÇÕES INTERNACIONAIS Novembro 2013.
© 2012 Autodesk Autodesk Revit para projetos executivos de arquitetura Módulo 2: Otimizando a modelagem para documentação Tiago Marçal Ricotta Gerente.
Unit 22 Relative Clauses and Pronouns.
VOCÊ JÁ FALA INGLÊS FLUENTEMENTE?
Milhões de estrelas, colocadas nos céus, por um Deus. Millions of stars placed in the skies, by one God.
IEEE PES General Meeting, Tampa FL June 24-28, 2007 Conferência Brasileira de Qualidade de Energia Santos, São Paulo, Agosto 5-8, Chapter 8: Procedure.
© 2012 Autodesk Autodesk Revit para projetos executivos de arquitetura Módulo 3: Utilizando Legends Tiago Marçal Ricotta Gerente de Projetos – Brasoftware.
© 2012 Autodesk Autodesk Revit para projetos executivos de arquitetura Módulo 6: Quantitativos de áreas precisos Tiago Marçal Ricotta Gerente de Projetos.
© 2012 Autodesk Autodesk Revit para projetos executivos de arquitetura Módulo 5: Trabalhando em colaboração Tiago Marçal Ricotta Gerente de Projetos –
Infra-Estrutura de Software
Autodesk Revit para projetos executivos de arquitetura Módulo 4: Representação gráfica de diversas fases Tiago Marçal Ricotta Gerente de Projetos – Brasoftware.
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.
The Platters The great pretender Oh yes, I'm the great pretender Oh sim, eu sou o maior fingido Pretending that I'm doing well Fingindo que estou indo.
Rick Astley Cry for help She’s taken my time. Ela tem tomado o meu tempo Convince me she’s fine. Me convencendo de que está bem But when she leaves.
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). *
Pesquisa Operacional aplicada à Gestão de Produção e Logística Prof. Eng. Junior Buzatto Case 4.
Seminário de Ruby Apresentando a linguagem de programação Ruby, suas características e seu uso.
Subway Network - São Paulo City
Three analogies to explain reactive power Why an analogy? Reactive power is an essential aspect of the electricity system, but one that is difficult to.
MODAL VERBS.
Modal verbs.
Let it Be Beatles When I find myself in times of trouble Quando me encontro em tempos de dificuldades Mother Mary comes to me Virgem Maria chega até mim.
Tópicos Avançados em Engenharia de Software
Introduction to density estimation Modelação EcoLÓGICA
Leila Marinho Lage Leila Maria
Pesquisadores envolvidos Recomenda-se Arial 20 ou Times New Roman 21.
FORMAS VERBAIS II (TEMPOS PROGRESSIVOS, PERFEITOS)
Transcrição da apresentação:

Rodar Prolog2 no Unix Shell Conectar-se em limoeiro. Incluir /usr/local/prolog2/sys no seu path. Digitar prolog2 no prompt Unix. Digitar consult(" "). no prompt do prolog2. Digitar no prompt do prolog2. Responder a pergunta de backtracking sistemático de prolog2. Digitar halt. para sair do prolog2 file:prolog-ellf.ppt

Rodar Prolog2 no Unix-Exemplo prompt> more.cshrc set path = (. ~/bin \ /usr/local/prolog2/sys \ /usr/local/TeX/bin)... prompt> more my_prog.pro append([],Y,Y). append([Xh|Xt],Y,[Xh|Rt]) :- append(Xt,Y,Rt). ## rsh limoeiro prompt> prolog2 ?- consult("my_prog.pro"). ?- reconsult("my_prog.pro"). yes ?- append([a,b,c],[d,e],R). R = [a,b,c,d,e] More (y/n)? y ?- halt. Leave Prolog (y/n) y prompt>

Rodar Prolog2 no Emacs Etapas: Incluir no meu path: /usr/local/prolog2/sys Incluir no meu.emacs: (setq prolog-program-name "/usr/local/prolog2/sys/prolog2") Abrir uma janela X rodando emacs. Digitar run-prolog+ Repetir os passos dados para rodar Prolog no Unix (menos o que chama o Prolog) 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(bagof) BIP Help entry: bagof Call: bagof(X,Goal,L). Purpose: L is list of X such that Goal. Arguments: X Any Goal Goal + L List Description: Duplicates are not eliminated and the list is not sorted. If there are no solutions the call fails (never returns L = []). If Goal has variables not in X call may be resatisfiable

Listar predicados Built-in ?- apropos(wr) Entries in help system matching "wr" are: seek_write write writeq writing_at open_readwrite open_write state(write_depth

Listar predicados Built-in (cont.) ?-apropos. =.. =:= =<... abolish abort ancestor ancestors print_ancestor arg assert asserta assertz at atom atomic atomprops backtrace back_msg call character_class clause close close_module do_tokens compile_tokens tidy_tokens conlist consult core create_character_cl create_module create_state_table create_stream create_token_class create_token_format create_token_proces create_type_class creep datatype debug debug_on debug_off...

Ativar o Trace: PBI ?-trace. Ativa o trace sistemático de todos os predicados. Todos os objetivos(as chamadas) do interpretador são impressos (precedidos por ´CALL´). Todos meus resultados (as saídas) são impressos (precedidos por `EXIT´). Para interromper um trace: responder ´n´ ao prompt `?-'. ?-spy(Pred/Arity). Ativa o trace de predicados específicos. Imprime apenas os CALL e EXIT 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 ?- my_fac(3,R). ( 1) 0 CALL: my_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 yes ?- my_fac(3,R). R = 6 More (y/n)? n yes ?- spy(my_fac). yes ?- my_fac(1,R). * ( 1) 0 CALL: my_fac(1,_5) ? ( 2) 1 CALL: _59 is 1-1 {system}? ( 2) 1 EXIT: 0 is 1-1 * ( 3) 1 CALL: my_fac(0,_136) ? * ( 3) 1 EXIT: my_fac(0,1) ? ( 4) 1 CALL: _5 is 1*1 {system}? ( 4) 1 EXIT: 1 is 1*1 * ( 1) 0 EXIT: my_fac(1,1) ? R = 1 More (y/n)? n yes ?-

Sair do modo Trace: PBI ?-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.

Programação Dinamica Predicados Built-in para programação dinamica: Programa Prolog: E um banco de dados dedutivo, cujos fatos sao dados explicitos, e cujas regras sao dados implicitos. Existem predicados built-in para: Dinamicamente, dentro da execucao de outros predicados,inserir ou apagar dados no banco,i.e., inserir ou apagar elementos do programa Prolog em execu\cao.

Programação Dinamica (cont.) Predicados Built-in para programação dinamica: Esses predicados são: Meta-lógicos, i.e. com uma semântica declarativa, alem da logica dos predicados. Que cumprem suas tarefas com seus efeitos colaterais. Necessarios apenas para meta-programacao, otimizacao e deducao nao monotonica. Fazem com que um predicado possa ser verificado em um momento da computacao e nao verificado em um outro momento.

Listing - Listar 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) 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) More (y/n)? y no ?- clause(append,Z). no ?- clause(Z,append(X,Y,R)). Error no. 11 Bad predicate rep Error goal: clause(_62/_63,append(_29,_37,_45)) Evaluation aborted ?-