Lenguaje de programación
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 versus enfoque lógico
Los dos paradigmas principales para construir sistemas de software semántico fueron el procedimental y el lógico . El paradigma procedimental fue personificado por Lisp [2] , que incluía procedimientos recursivos que operaban sobre estructuras de listas.
El paradigma lógico se ejemplificó mediante la resolución de procedimientos de prueba uniformes, que permitían encontrar derivaciones (pruebas) [3] . Según el paradigma lógico, incorporar conocimiento procedimental era “hacer trampa”. [4]
Incorporación procedimental del conocimiento
Planner fue inventado con el propósito de incorporar conocimiento de manera procedimental [5] y fue un rechazo del paradigma del procedimiento de prueba uniforme de resolución , [6] que
- Convirtió todo a la forma clausular. Convertir toda la información a la forma clausular es problemático porque oculta la estructura subyacente de la información.
- Luego se utilizó la resolución para intentar obtener una prueba por contradicción añadiendo la forma clausal de la negación del teorema que se desea probar. Utilizar únicamente la resolución como regla de inferencia es problemático porque oculta la estructura subyacente de las pruebas. Además, utilizar la prueba 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 porque 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 usando una invocación dirigida por patrones:
- Encadenamiento hacia adelante (antecedentemente):
- Si se afirma P, se afirma Q
- Si no se afirma Q, no se afirma P
- Encadenamiento hacia atrás (consecuentemente)
- Si el objetivo es Q, el objetivo es P
- Si el objetivo no es P, 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 de un microplanificador
Gerry Sussman , Eugene Charniak y Terry Winograd [7] implementaron un subconjunto llamado Micro-Planner y se utilizó en el programa de comprensión del lenguaje natural SHRDLU de Winograd , en el trabajo de comprensión de historias de Eugene Charniak, en el trabajo de Thorne McCarty sobre razonamiento legal y en algunos otros proyectos. Esto generó mucho entusiasmo en el campo de la IA. También generó controversia porque 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 los constructos 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 un 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 seguimiento de la ejecución, por Jean-Claude Latombe para el diseño asistido por ordenador, 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 temprano que guiaba el uso de un modelo econométrico.
Las computadoras eran caras. Tenían un solo procesador lento y sus memorias eran muy pequeñas en comparación con las actuales. Por eso, Planner adoptó algunas medidas de eficiencia, entre ellas las siguientes:
- Se adoptó el método de retroceso [8] para economizar el uso de tiempo y almacenamiento trabajando y almacenando solo una posibilidad a la vez al explorar alternativas.
- Se adoptó un supuesto de nombre único para ahorrar espacio y tiempo, suponiendo que distintos nombres se referían a objetos diferentes. Por ejemplo, se supuso que nombres como Pekín (antigua capital de la República Popular de China) y Beijing (transliteración de la capital actual de la República Popular de China) se referían a objetos diferentes.
- Se podría implementar un supuesto de mundo cerrado probando condicionalmente si un intento de demostrar exhaustivamente un objetivo fracasaba. Más tarde, a esta capacidad se le dio el nombre engañoso de " negación como fracaso ", porque para un objetivo G era posible decir: "si el intento de lograr G fracasa 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 la noticia 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 Logistas de Edimburgo. En la Universidad de Edimburgo, Bruce Anderson implementó un subconjunto de Micro-Planner llamado PICO-PLANNER, [9] y Julian Davies (1973) implementó esencialmente 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 el colega de Papert en el MIT, Carl Hewitt. Papert expresó elocuentemente su crítica del enfoque de resolución dominante en Edimburgo "... y al menos una persona hizo las maletas y se fue debido a Papert". [10]
Los acontecimientos mencionados generaron tensión entre los logicistas de Edimburgo, que se exacerbaron cuando el Consejo de Investigación Científica del Reino Unido encargó a Sir James Lighthill que escribiera 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 aprendió sobre Planner. Cuando regresó a Edimburgo, intentó influir en su amigo Bob Kowalski para que lo tuviera en cuenta en su trabajo conjunto sobre la demostración automática de teoremas. "La demostración de teoremas de resolución pasó de ser un tema candente a una reliquia del pasado equivocado. Bob Kowalski se mantuvo tenazmente fiel a su fe en el potencial de la demostración de teoremas de resolución. Estudió Planner cuidadosamente". [11] Kowalski [1988] afirma: "Recuerdo que intenté convencer a Hewitt de que Planner era similar a la resolución SL". Pero Planner se inventó con el propósito de la incorporación procedimental del conocimiento y fue un rechazo del paradigma del procedimiento de prueba uniforme de resolución. Colmerauer y Roussel recordaron su reacción al conocer Planner de la siguiente manera:
"En septiembre de 1971, mientras asistía a una convención de la IJCAI con Jean Trudel, nos encontramos de nuevo con Robert Kowalski y escuchamos una conferencia de Terry Winograd sobre el procesamiento del lenguaje natural. El hecho de que no utilizara un formalismo unificado nos dejó perplejos. Fue en esa época cuando nos enteramos de la existencia del lenguaje de programación de Carl Hewitt, Planner. La falta de formalización de este lenguaje, nuestra ignorancia de Lisp y, sobre todo, el hecho de que nos dedicáramos por completo a la lógica hicieron que este trabajo tuviera poca influencia en nuestras investigaciones posteriores." [12]
En el otoño de 1972, Philippe Roussel implementó un lenguaje llamado Prolog (abreviatura de PRO gramation 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 dirigida por patrones de procedimientos a partir de objetivos ( es decir, encadenamiento hacia atrás )
- Una base de datos indexada de procedimientos dirigidos por patrones y oraciones fundamentales.
- Renunciar al paradigma de completitud que había caracterizado el trabajo previo sobre demostración de teoremas y reemplazarlo con el paradigma de incorporación procedimental del conocimiento en el lenguaje de programación.
Prolog también duplicó las siguientes capacidades de Micro-Planner que eran pragmáticamente útiles para las computadoras de la época porque ahorraban espacio y tiempo:
- Estructura de control de retroceso
- Supuesto de nombre único por el cual se supone que diferentes nombres se refieren a entidades distintas, por ejemplo , se supone que Pekín y Beijing son diferentes.
- Reificación del fracaso. La forma en que Planner estableció que algo era demostrable fue intentarlo con éxito como objetivo y la forma en que estableció que algo era indemostrable fue intentarlo como objetivo y fallar explícitamente. Por supuesto, la otra posibilidad es que el intento de demostrar el objetivo dure eternamente y nunca devuelva ningún valor. Planner también tenía una construcción (no expresión) que tenía éxito si la expresión fallaba, lo que dio lugar a la terminología “ Negación como fracaso ” en Planner.
El uso de la asunción y negación de un nombre único como fracaso se volvió más cuestionable cuando la atención se centró en los sistemas abiertos. [13]
Las siguientes capacidades de Micro-Planner se omitieron de Prolog:
- Invocación dirigida por patrones de planes de procedimiento a partir de afirmaciones ( 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. Considere, por ejemplo, qué pasaría si se incluyera la negación en el siguiente programa de Prolog:
- no Q.
- P:-P.
El programa anterior no podría demostrar que no es P, aunque se deduce de las reglas de la lógica matemática. Esto es una ilustración del hecho de que Prolog (al igual que Planner) está pensado para ser un lenguaje de programación y, por lo tanto, no demuestra (por sí mismo) muchas de las consecuencias lógicas que se desprenden de una lectura declarativa de sus programas.
El trabajo en Prolog fue valioso porque era mucho más simple que Planner. Sin embargo, a medida que surgió la necesidad de un mayor poder expresivo en el lenguaje, Prolog comenzó a incluir muchas de las capacidades de Planner que no estaban incluidas en la versión original de Prolog.
Referencias
- ^ Carl Hewitt Historia media de la programación lógica: Resolution, Planner, Prolog y el proyecto japonés de quinta generación ArXiv 2009. arXiv :0904.3036
- ^ McCarthy y otros, 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 de Micro-Planner, Stanford AI Lab Operating Note No. 67, abril de 1972.
- Coles, Steven (1975), "La aplicación de la inteligencia artificial al modelado heurístico", 2.ª Conferencia informática entre Estados Unidos y 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), "Incorporación procedimental del conocimiento en el planificador", IJCAI.
- Carl Hewitt. "El desafío de los sistemas abiertos". Revista Byte. Abril de 1985.
- Carl Hewitt y Jeff Inman. "DAI entre dos mundos: de los 'agentes inteligentes' a la ciencia de sistemas abiertos" IEEE Transactions on Systems, Man, and Cybernetics, noviembre/diciembre de 1991.
- Carl Hewitt y Gul Agha. "Lenguajes con 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 desde el original (PDF) el 2017-12-10.
- William Kornfeld y Carl Hewitt. La metáfora de la comunidad científica. MIT AI Memo 641. 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 del MIT EECS. Agosto de 1981.
- Bill Kornfeld. "Algoritmos combinatorios 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 , Holanda Septentrional.
- McCarthy, John; Abrahams, Paul; Edwards, Daniel; Hart, Timothy; Levin, Michael (1962), Manual del programador de Lisp 1.5 , Centro de computación y laboratorio de investigación en electrónica del MIT.
- 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 de microplanificadores AI Memo No, 203, MIT Project MAC, 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 de Micro-Planner (actualización), AI Memo 203A, MIT AI Lab, 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. Memorándum 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 de 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 SRI AI Center, noviembre de 1973.
- Scott Fahlman. "Un sistema de planificación para tareas de construcción de robots" MIT AI TR-283. Junio de 1973
- James Lighthill. "Inteligencia artificial: una visión general. Inteligencia artificial: un simposio sobre una ponencia". Consejo de Investigación Científica del Reino Unido. 1973.
- John McCarthy. "Reseña de 'Inteligencia artificial: una visión general de la inteligencia artificial: un simposio de artículos". Consejo de investigación científica del Reino Unido. 1973.
- Robert Kowalski, "La lógica de predicados como lenguaje de programación", Memorándum 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, 3-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 legal", Harvard Law Review, vol. 90, n.º 5, marzo de 1977
- Drew McDermott y Gerry Sussman. Manual de referencia de Conniver, MIT AI Memo 259A, 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 sobre el nacimiento de Prolog en 1992 en Wayback Machine (archivado el 27 de julio de 2003)