Planner (a menudo visto en publicaciones como "PLANNER", aunque no es un acrónimo) es un lenguaje de programación diseñado por Carl Hewitt en el MIT y publicado por primera vez en 1969. Primero, se implementaron subconjuntos como Micro-Planner y Pico-Planner, y luego esencialmente todo el lenguaje fue implementado como Popler por Julian Davies en la Universidad de Edimburgo en el lenguaje de programación POP-2 . [ 1 ] Derivaciones como QA4, Conniver, QLISP y Ether (ver metáfora de la comunidad científica ) fueron herramientas importantes en la investigación de inteligencia artificial en la década de 1970, que influyeron en desarrollos comerciales como Knowledge Engineering Environment (KEE) y Automated Reasoning Tool (ART).
Enfoque procedimental frente a enfoque lógico
Los dos paradigmas principales para la construcción de sistemas de software semánticos fueron el procedimental y el lógico . El paradigma procedimental fue personificado por Lisp [ 2 ] , que presentaba procedimientos recursivos que operaban sobre estructuras de lista.
El paradigma lógico se ejemplificaba mediante los buscadores de derivación (prueba) basados en la resolución de procedimientos de prueba uniformes . [ 3 ] Según el paradigma lógico, era “hacer trampa” incorporar conocimiento procedimental. [ 4 ]
Integración procedimental del conocimiento
Planner fue inventado con el propósito de la incrustación procedimental del conocimiento [ 5 ] y fue un rechazo del paradigma del procedimiento de prueba uniforme de resolución , [ 6 ] que
- Convertí todo a forma oracional. Convertir toda la información a forma oracional es problemático porque oculta la estructura subyacente de la información.
- Luego, se utilizó la resolución para intentar obtener una demostración por contradicción, añadiendo la forma clausal de la negación del teorema a demostrar. El uso exclusivo de la resolución como regla de inferencia es problemático, ya que oculta la estructura subyacente de las demostraciones. Asimismo, el uso de la demostración por contradicción es problemático porque las axiomatizaciones de todos los dominios prácticos del conocimiento son inconsistentes en la práctica.
Planner era una especie de híbrido entre los paradigmas procedimental y lógico, ya que combinaba la programabilidad con el razonamiento lógico. Planner presentaba una interpretación procedimental de oraciones lógicas donde una implicación de la forma (P implica Q) puede interpretarse procedimentalmente de las siguientes maneras utilizando la invocación dirigida por patrones:
- Encadenamiento hacia adelante (antecedentemente):
- Si afirmamos P, afirmamos Q.
- Si afirmamos que no es Q, afirmamos que no es P.
- Encadenamiento hacia atrás (en consecuencia)
- Si el objetivo Q, el objetivo P
- Si el objetivo no es P, entonces el objetivo no es Q.
En este sentido, el desarrollo de Planner estuvo influenciado por los sistemas lógicos deductivos naturales (especialmente el de Frederic Fitch [1952]).
Implementación del microplanificador
Gerry Sussman , Eugene Charniak y Terry Winograd [ 7 ] implementaron un subconjunto llamado Micro-Planner, que se utilizó en el programa de comprensión del lenguaje natural SHRDLU de Winograd , en el trabajo de Eugene Charniak sobre comprensión de historias, en el trabajo de Thorne McCarty sobre razonamiento jurídico y en otros proyectos. Esto generó gran entusiasmo en el campo de la IA. También generó controversia, ya que proponía una alternativa al enfoque lógico, que había sido uno de los paradigmas fundamentales de la IA.
En SRI International , Jeff Rulifson, Jan Derksen y Richard Waldinger desarrollaron QA4 , que se basó en las construcciones de Planner e introdujo un mecanismo de contexto para proporcionar modularidad a las expresiones en la base de datos. Earl Sacerdoti y Rene Reboh desarrollaron QLISP, una extensión de QA4 integrada en INTERLISP , que proporciona razonamiento similar al de Planner integrado en un lenguaje procedimental y desarrollado en su rico entorno de programación. QLISP fue utilizado por Richard Waldinger y Karl Levitt para la verificación de programas, por Earl Sacerdoti para la planificación y el monitoreo de la ejecución, por Jean-Claude Latombe para el diseño asistido por computadora, por Nachum Dershowitz para la síntesis de programas, por Richard Fikes para la recuperación deductiva y por Steven Coles para un sistema experto inicial que guiaba el uso de un modelo econométrico.
Las computadoras eran caras. Solo tenían un procesador lento y su memoria era muy pequeña en comparación con la actual. Por lo tanto, Planner adoptó algunas medidas de eficiencia, entre las que se incluyen las siguientes:
- El retroceso [ 8 ] se adoptó para economizar en el uso del tiempo y el almacenamiento trabajando y almacenando solo una posibilidad a la vez al explorar alternativas.
- Se adoptó una suposición de nombres únicos para ahorrar espacio y tiempo, asumiendo que diferentes nombres se referían a diferentes objetos. Por ejemplo, se asumió que nombres como Pekín (antigua capital de la República Popular China) y Beijing (transliteración de la capital actual de la República Popular China) se referían a objetos diferentes.
- Se podría implementar una suposición de mundo cerrado probando condicionalmente si un intento de probar un objetivo fallaba exhaustivamente. Posteriormente, a esta capacidad se le dio el nombre engañoso de " negación como fallo " porque para un objetivo G era posible decir: "si intentar lograr G falla exhaustivamente, entonces afirmar (No G) ".
La génesis de Prolog
Gerry Sussman , Eugene Charniak , Seymour Papert y Terry Winograd visitaron la Universidad de Edimburgo en 1971, difundiendo información sobre Micro-Planner y SHRDLU y poniendo en duda el enfoque del procedimiento de prueba uniforme de resolución que había sido el pilar de los lógicos de Edimburgo. En la Universidad de Edimburgo, Bruce Anderson implementó un subconjunto de Micro-Planner llamado PICO-PLANNER, [ 9 ] y Julian Davies (1973) implementó prácticamente todo Planner.
Según Donald MacKenzie, Pat Hayes recordó el impacto de una visita de Papert a Edimburgo, que se había convertido en el "corazón de la lógica de la inteligencia artificial ", según Carl Hewitt, colega de Papert en el MIT. Papert expresó con elocuencia su crítica al enfoque de resolución dominante en Edimburgo "...y al menos una persona se marchó por culpa de Papert". [ 10 ]
Los acontecimientos mencionados generaron tensiones entre los lógicos de Edimburgo. Estas tensiones se agravaron cuando el Consejo de Investigación Científica del Reino Unido encargó a Sir James Lighthill un informe sobre la situación de la investigación en IA en el Reino Unido. El informe resultante [ Lighthill 1973; McCarthy 1973] fue muy crítico, aunque se mencionó favorablemente a SHRDLU .
Pat Hayes visitó Stanford, donde conoció Planner. Al regresar a Edimburgo, intentó influir en su amigo Bob Kowalski para que tuviera en cuenta Planner en su trabajo conjunto sobre la demostración automatizada de teoremas. «La demostración de teoremas por resolución pasó de ser un tema candente a una reliquia de un pasado equivocado. Bob Kowalski se mantuvo firme en su fe en el potencial de la demostración de teoremas por resolución. Estudió Planner detenidamente». [ 11 ] Kowalski [1988] afirma: «Recuerdo haber intentado convencer a Hewitt de que Planner era similar a la SL-resolución ». Pero Planner se inventó con el propósito de la incrustación procedimental del conocimiento y fue un rechazo del paradigma del procedimiento de prueba uniforme por resolución. Colmerauer y Roussel recordaron su reacción al conocer Planner de la siguiente manera:
"Durante una convención de la IJCAI en septiembre de 1971, en la que asistimos con Jean Trudel, nos reencontramos con Robert Kowalski y escuchamos una conferencia de Terry Winograd sobre procesamiento del lenguaje natural. El hecho de que no utilizara un formalismo unificado nos dejó perplejos. Fue entonces cuando descubrimos la existencia del lenguaje de programación de Carl Hewitt, Planner. La falta de formalización de este lenguaje, nuestro desconocimiento de Lisp y, sobre todo, el hecho de que estuviéramos completamente dedicados a la lógica, hicieron que este trabajo tuviera poca influencia en nuestras investigaciones posteriores." [ 12 ]
En otoño de 1972, Philippe Roussel implementó un lenguaje llamado Prolog (abreviatura de PRO grammation en LOG ique, que en francés significa "programación en lógica"). Los programas Prolog tienen, en general, la siguiente forma (que es un caso especial del encadenamiento hacia atrás en Planner):
- Cuando el objetivo Q, el objetivo P 1 y ... y el objetivo P n
Prolog duplicó los siguientes aspectos de Micro-Planner:
- Invocación de procedimientos dirigida por patrones a partir de objetivos ( es decir, encadenamiento hacia atrás ).
- Una base de datos indexada de procedimientos orientados a patrones y sentencias básicas.
- Abandonar el paradigma de completitud que había caracterizado los trabajos anteriores sobre demostración de teoremas y sustituirlo por el paradigma de incrustación procedimental del conocimiento en lenguajes de programación.
Prolog también duplicó las siguientes funcionalidades de Micro-Planner, que resultaron muy útiles para los ordenadores de la época porque ahorraban espacio y tiempo:
- Estructura de control de retroceso
- Suposición de nombre único según la cual se asume que diferentes nombres se refieren a entidades distintas, por ejemplo , se asume que Pekín y Beijing son diferentes.
- Reificación del fracaso. Planner establecía que algo era demostrable intentándolo con éxito como objetivo, y establecía que algo era indemostrable intentándolo y fracasando explícitamente. Por supuesto, la otra posibilidad es que el intento de demostrar el objetivo se prolongue indefinidamente sin obtener ningún resultado. Planner también contaba con una construcción (no expresión) que tenía éxito si la expresión fallaba, lo que dio origen a la terminología de « Negación como fracaso » en Planner.
El uso de la suposición de nombre único y la negación como fallo se volvieron más cuestionables cuando la atención se centró en los sistemas abiertos. [ 13 ]
Las siguientes funcionalidades de Micro-Planner se omitieron en Prolog:
- Invocación dirigida por patrones de planes de procedimiento a partir de aserciones ( es decir , encadenamiento hacia adelante ).
- Negación lógica, por ejemplo , (no (Sócrates humano)) .
Prolog no incluyó la negación en parte porque plantea problemas de implementación. Consideremos, por ejemplo, qué pasaría si se incluyera la negación en el siguiente programa Prolog:
- no Q.
- P :- P.
El programa anterior no podría demostrar que no P, aunque se ajusta a las reglas de la lógica matemática. Esto ilustra que Prolog (al igual que Planner) está concebido como un lenguaje de programación y, por lo tanto, no demuestra (por sí solo) muchas de las consecuencias lógicas que se derivan de una lectura declarativa de sus programas.
El trabajo realizado en Prolog fue valioso porque era mucho más sencillo que Planner. Sin embargo, a medida que surgió la necesidad de una mayor expresividad en el lenguaje, Prolog comenzó a incluir muchas de las capacidades de Planner que se habían omitido en la versión original.
Referencias
- ↑ Carl Hewitt Middle, Historia de la programación lógica: Resolución, Planificador, Prolog y el proyecto japonés de quinta generación. ArXiv 2009. arXiv : 0904.3036
- ↑ McCarthy et al. 1962
- ↑ Robinson 1965
- ↑ Verde 1969
- ↑ Hewitt 1971
- ↑ Robinson 1965
- ↑ Sussman, Charniak y Winograd 1971
- ↑ Golomb y Baumert 1965
- ↑ Anderson 1972
- ↑ MacKenzie 2001 pág. 82.
- ^ Bruynooghe, Pereira, Siekmann y van Emden [2004]
- ↑ Colmerauer y Roussel 1996
- ^ Hewitt y de Jong 1983, Hewitt 1985, Hewitt e Inman 1991
Bibliografía
- Bruce Anderson. Documentación para LIB PICO-PLANNER. Escuela de Inteligencia Artificial, Universidad de Edimburgo. 1972.
- Bruce Baumgart. Manual de referencia alternativo del Micro-Planner. Nota operativa n.º 67 del Laboratorio de IA de Stanford, abril de 1972.
- Coles, Steven (1975), "La aplicación de la inteligencia artificial al modelado heurístico", 2.ª Conferencia de Computación Estados Unidos-Japón.
- Fikes, Richard (1975), Mecanismos de recuperación deductiva para modelos de descripción de estados , IJCAI.
- Fitch, Frederic (1952), Lógica simbólica: una introducción , Nueva York: Ronald Press.
- Green, Cordell (1969), "Aplicación de la demostración de teoremas a la resolución de problemas", IJCAI.
- Hewitt, Carl (1969). "PLANNER: Un lenguaje para demostrar teoremas en robots". IJCAI . CiteSeerX 10.1.1.80.756 .
- Hewitt, Carl (1971), "Incrustación procedimental del conocimiento en Planner", IJCAI.
- Carl Hewitt. "El desafío de los sistemas abiertos". Revista Byte. Abril de 1985.
- Carl Hewitt y Jeff Inman. "DAI Betwixt and Between: From 'Intelligent Agents' to Open Systems Science". IEEE Transactions on Systems, Man, and Cybernetics. Noviembre/diciembre de 1991.
- Carl Hewitt y Gul Agha. «Lenguajes de cláusulas Horn protegidas: ¿son deductivos y lógicos?». Conferencia Internacional sobre Sistemas Informáticos de Quinta Generación, Ohmsha, 1988. Tokio. También en Inteligencia Artificial en el MIT , vol. 2. MIT Press, 1991.
- Hewitt, Carl (marzo de 2006), La repetida desaparición de la programación lógica y por qué se reencarnará: qué salió mal y por qué: lecciones de la investigación y las aplicaciones de la IA (PDF) , Informe técnico, AAAI Press, archivado del original (PDF) el 10 de diciembre de 2017..
- William Kornfeld y Carl Hewitt. La metáfora de la comunidad científica. Memorando 641 del MIT sobre IA. Enero de 1981.
- Bill Kornfeld y Carl Hewitt. "La metáfora de la comunidad científica". IEEE Transactions on Systems, Man, and Cybernetics. Enero de 1981.
- Bill Kornfeld. "El uso del paralelismo para implementar una búsqueda heurística" IJCAI 1981.
- Bill Kornfeld. "Paralelismo en la resolución de problemas". Tesis doctoral en Ingeniería Eléctrica e Informática del MIT. Agosto de 1981.
- Bill Kornfeld. "Algoritmos combinatoriamente implosivos". CACM. 1982.
- Robert Kowalski. "Las limitaciones de la lógica". Actas de la decimocuarta conferencia anual de la ACM sobre informática de 1986.
- Robert Kowalski. "Los primeros años de la programación lógica". CACM, enero de 1988.
- Latombe, Jean-Claude (1976), "Inteligencia artificial en el diseño asistido por ordenador", CAD Systems , North-Holland.
- McCarthy, John; Abrahams, Paul; Edwards, Daniel; Hart, Timothy; Levin, Michael (1962), Manual del programador de Lisp 1.5 , Centro de Computación del MIT y Laboratorio de Investigación de Electrónica.
- Robinson, John Alan (1965), "Una lógica orientada a máquinas basada en el principio de resolución", Communications of the ACM , 12 : 23–41 , doi : 10.1145/321250.321253.
- Gerry Sussman y Terry Winograd. Manual de referencia del microplanificador. Memorando de IA n.º 203, Proyecto MAC del MIT, julio de 1970.
- Terry Winograd. Procedimientos como representación de datos en un programa informático para la comprensión del lenguaje natural. MIT AI TR-235. Enero de 1971.
- Gerry Sussman, Terry Winograd y Eugene Charniak. Manual de referencia del Micro-Planificador (Actualización) Memorando de IA 203A, Laboratorio de IA del MIT, diciembre de 1971.
- Carl Hewitt. Descripción y análisis teórico (mediante esquemas) de Planner, un lenguaje para demostrar teoremas y manipular modelos en una IA robótica. Memorando n.° 251, Proyecto MAC del MIT, abril de 1972.
- Eugene Charniak. Hacia un modelo de comprensión de cuentos infantiles. MIT AI TR-266. Diciembre de 1972.
- Julian Davies. Manual de referencia Popler 1.6. Universidad de Edimburgo, Informe TPU n.º 1, mayo de 1973.
- Jeff Rulifson, Jan Derksen y Richard Waldinger. "QA4, un cálculo procedimental para el razonamiento intuitivo". Nota técnica 73 del Centro de IA del SRI, noviembre de 1973.
- Scott Fahlman. "Un sistema de planificación para tareas de construcción robótica". MIT AI TR-283. Junio de 1973.
- James Lighthill. "Inteligencia Artificial: Un Panorama General. Inteligencia Artificial: un simposio de ponencias." Consejo de Investigación Científica del Reino Unido. 1973.
- John McCarthy. "Reseña de 'Inteligencia Artificial: Un Estudio General'. Inteligencia Artificial: un simposio de ponencias." Consejo de Investigación Científica del Reino Unido. 1973.
- Robert Kowalski, "Lógica de predicados como lenguaje de programación", Memorando 70, Departamento de Inteligencia Artificial, Universidad de Edimburgo, 1973.
- Pat Hayes. Computación y deducción: Fundamentos matemáticos de la informática: Actas del simposio y la escuela de verano, Štrbské Pleso, Altos Tatras, Checoslovaquia, del 3 al 8 de septiembre de 1973.
- Carl Hewitt, Peter Bishop y Richard Steiger. "Un formalismo de actor modular universal para la inteligencia artificial". IJCAI 1973.
- L. Thorne McCarty. «Reflexiones sobre TAXMAN: Un experimento sobre inteligencia artificial y razonamiento jurídico». Harvard Law Review. Vol. 90, n.º 5, marzo de 1977.
- Drew McDermott y Gerry Sussman. Manual de referencia de Conniver. Memorando 259A del MIT sobre IA. Enero de 1974.
- Earl Sacerdoti, et al., "QLISP: Un lenguaje para el desarrollo interactivo de sistemas complejos" AFIPS. 1976
- Sacerdoti, Earl (1977), Una estructura para planes y comportamiento , Elsevier North-Holland.
- Waldinger, Richard; Levitt, Karl (1974), Razonamiento sobre programas de inteligencia artificial.
Enlaces externos
- Relato de Alain Colmerauer y Philippe Roussel de 1992 sobre el nacimiento de Prolog en la Wayback Machine (archivado el 27 de julio de 2003).
- Historia de la inteligencia artificial
- Planificación y programación automatizadas
- Lenguajes de programación lógica
- Lenguajes de programación de robots
- Sistemas de software para la demostración de teoremas
- Lenguajes de programación creados en 1969