java + prolog

13
Prolog + Java Xtreme Prolog Eugenio Jacobo Hernández Valdelamar México, 2001

Upload: jacobo-hernandez-v

Post on 22-Jun-2015

854 views

Category:

Documents


0 download

DESCRIPTION

E J Hernández Valdelamar. Sesión adicional del Xtreme Prolog. Trata el tema de la implementación de Prolog con Java. 2001.

TRANSCRIPT

Page 1: Java + Prolog

Prolog + Java

Xtreme PrologEugenio Jacobo Hernández Valdelamar

México, 2001

Page 2: Java + Prolog

ContenidoProlog + JavaCaracterísticas de W-PrologEjemplos de uso

Page 3: Java + Prolog

ObjetivoPara empezar no hay un curso en el mundo que se meta con esta fusión.La meta de mezclar ambos lenguajes es:

Indagar sobre la implementación de PrologMostrar esquemas prácticos de la aplicación de Prolog (como que tener un programita ejecutándose solo en una máquina le falta emoción)

Page 4: Java + Prolog

Como fusionar Java + prologJava puede implementar una máquina Prolog ( interprete/compilador) como una aplicación, appletLas clases generadas de esta implementación pueden integrarse en otros programasJava puede conectarse a una herramienta Prolog por medio de protocolos o aprovechando plug-ins o componentes

Page 5: Java + Prolog

Arquitectura de una solución hibrida Java + Prolog

Page 6: Java + Prolog

W-Prolog

Page 7: Java + Prolog

W-Prolog como applet

Page 8: Java + Prolog

Subconjunto de Prolog implementado por el W-Prolog

Program ::= Rule | Rule Program Query ::= Term

Rule ::= Term . | Term :- Terms . Terms ::= Term | Term , TermsTerm ::= Number | Variable | AtomName | AtomName(Terms) | [] | [Terms] | [Terms | Term] | print(Term) | nl | eq(Term , Term) | if(Term , Term , Term) | or(Term , Term ) | not(Term) | call(Term) | once(Term) Number ::= Digit | Digit Number Digit ::= 0 | ... | 9 AtomName ::= LowerCase NameChars Variable ::= UpperCase NameChars NameChars ::= NameChar | NameChar NameChars NameChar ::= a | ... | z | A | ... | Z | Digit

Page 9: Java + Prolog

Diseño de W-Prolog

Page 10: Java + Prolog

Ejemplo

Probar con: isa(X,Y) isa(X,human), has(X,Y), cando(X,fly)

Page 11: Java + Prolog

En qué cambia?Es un subconjunto de Prolog (no se puede usar p.ej. “_” en la definición de predicados)La organización del código tiene restricciones

clauses defining a predicate need to be contiguous. So, for example, use: a :- b. a :- c. b :- defn. c :- defn. and not: a :- b. b :- defn. a :- c. c :- defn.

Se gana al contar con todas las capacidades de Java

Page 12: Java + Prolog

TareaInstalar el JDK 1.2.* o superior en sus máquinasCon uno de los programas que ya tenemos hechos, probar el W-Prolog en su forma de applet. ¿Qué capacidades tiene la herramienta?Con el programa de ejemplo (GO) prueba las capacidades del W-PrologQué se te ocurre que puede hacerse con esta fusión de lenguajes?

Page 13: Java + Prolog

ReferenciasPractical Development of Internet Prolog Applications using a Java Front End

W-Prolog http://goanna.cs.rmit.edu.au/~winikoff/wp/