Introducción a ASP (Answer Set Programming - programación con conjuntos respuestos) Inteligencia Artificial David Pearce 13 de enero de 2009 ASP y programación declarativa ASP es una forma de programación declarativa orientada a problemas combinatoricas dificiles sus campos de aplicación incluyen: • • • • • • • planificación diagnostica razonamiento sobre acciónes y causalidad verificación de software data management sistemas multagentes razonamiento para la Web semántica 1 ASP y programación declarativa ASP es un lenguaje similar a programación lógica pero con otro método de computación apoya varios tipos de razonamiento: • • • • • razonamiento por defecto razonamiento temporal restricciónes información incompleta preferencias y prioridades 2 ASP y programación declarativa ASP se base en la semántica de modelos estables de la programación lógica en 1999 se desarrolló la paradigma de ASP como programación declarativa ahora existen unas 15 sistemas implementadas y numerosas aplicaciones ASP ya fue la tecnologı́a principal en dos importantes proyectos Europeos, incluso en un IP. Los sistemas más importantes son • • • • • http://www.tcs.hut.fi/Software/smodels/ DLV http://www.dbai.tuwien.ac.at/proj/dlv/ GNT http://www.tcs.hut.fi/Software/gnt/ ASSAT http://assat.cs.ust.hk/ CMODELS http://www.cs.utexas.edu/users/tag/cmodels/ SMODELS 3 el método de ASP describe un dominio o problema utilizando reglas lógicas utilize restricciónes para eliminar soluciones (modelos) el sistema computa los modelos estables (answer sets) que corresponden a soluciones correctos del problema 4 3 tipos de notación Para escribir y analizar programas ASP utilizamos tres diferentes notaciones 1. El lenguaje de la lógica clásica. Simbolos p, q, r, . . . de proposiciones y conectivas de la lógica proposicional: ¬, →, ∧, ∨, ↔. Las constantes lógicas: >, ⊥. Variables x, y, z, . . . y sı́mbolos de predicados P (x), Q(x, y), R(x, y, z), . . . Sı́mbolos de constantes: a, b, c, . . . 2. Una notación lógica para escribir reglas. Conectivas: ‘not’, ‘, ’ y ‘←’, predicados: p(X), q(X, Y ) 3. Una sintáxis para programas en p.e. SMODELS. p, q, r, :-, not r(X,Y). ... 5 3 tipos de notación - ejemplo La expresión “para cada x, si x tiene la propiedad P y no la propiedad Q, entonces tiene la propiedad R”, se escribe como: 1. ∀x(P (x) ∧ ¬Q(x) → R(x)) 6 3 tipos de notación - ejemplo La expresión “para cada x, si x tiene la propiedad P y no la propiedad Q, entonces tiene la propiedad R”, se escribe como: 1. ∀x(P (x) ∧ ¬Q(x) → R(x)) 2. r(X) ← p(X), not q(X) 6 3 tipos de notación - ejemplo La expresión “para cada x, si x tiene la propiedad P y no la propiedad Q, entonces tiene la propiedad R”, se escribe como: 1. ∀x(P (x) ∧ ¬Q(x) → R(x)) 2. r(X) ← p(X), not q(X) 3. r(X) :- p(X), not q(X). 6 la semántica de modelos estables Sistemas de ASP computan modelos estables. Este semántica no coincide con la lógica clásica. En particular su negación representa la “negación por defecto”, la “negación por fallo”. 7 la semántica de modelos estables Sistemas de ASP computan modelos estables. Este semántica no coincide con la lógica clásica. En particular su negación representa la “negación por defecto”, la “negación por fallo”. Ejemplo. La fórmula ¬p → q tiene un solo modelo estable, que corresponde a p falso y q verdadero. 7 la semántica de modelos estables Sistemas de ASP computan modelos estables. Este semántica no coincide con la lógica clásica. En particular su negación representa la “negación por defecto”, la “negación por fallo”. Ejemplo. La fórmula ¬p → q tiene un solo modelo estable, que corresponde a p falso y q verdadero. La fórmula ¬q → p que es equivalente en la lógica clásica, tiene el modelo estable que corresponde a p verdadero y q falso. 7 la semántica de modelos estables Una conjunción (F ∧ G) o el conjunto {F, G} puede tener un model estable que no es model estable de F . Ejemplo. (¬p → q) ∧ p tiene un único model estable {p}, que no es model estable de (¬p → q). 8 la semántica de modelos estables Una conjunción (F ∧ G) o el conjunto {F, G} puede tener un model estable que no es model estable de F . Ejemplo. (¬p → q) ∧ p tiene un único model estable {p}, que no es model estable de (¬p → q). Añadiendo el conjunt p, el valor de q cambia de verdadero a falso. Eso significa que el concepto de inferencia es no-monótona. 8 la semántica de modelos estables Ejemplos. una regla Horn es una expresión de forma F → A donde A es un átomo y F es una conjunción de átomos 9 la semántica de modelos estables Ejemplos. una regla Horn es una expresión de forma F → A donde A es un átomo y F es una conjunción de átomos una regla normal tiene la forma A1 ∧ . . . ∧ Am ∧ ¬Am+1 ∧ . . . ∧ ¬An → A (Ai átomos) 9 la semántica de modelos estables Ejemplos. una regla Horn es una expresión de forma F → A donde A es un átomo y F es una conjunción de átomos una regla normal tiene la forma A1 ∧ . . . ∧ Am ∧ ¬Am+1 ∧ . . . ∧ ¬An → A (Ai átomos) una regla disyunctiva tiene la forma A1 ∧ . . . ∧ Am ∧ ¬Am+1 ∧ . . . ∧ ¬An → B1 ∨ . . . ∨ Bk (Ai, Bj átomos) 9 choice formulas - fórmulas de elección Una construcción muy útil en ASP es el concepto de choice formulas (fórmulas de elección) que tienen muchos modelos estables. Para un conjunto finito de átomos Z, el CF Z C está definido por ^ (A ∨ ¬A) A∈Z Si Z es un conjunto finito de átomos, entonces un conjunto X de átomos es un modelo estable de Z C sii X ⊆ Z. 10 choice formulas - fórmulas de elección Una construcción muy útil en ASP es el concepto de choice formulas (fórmulas de elección) que tienen muchos modelos estables. Para un conjunto finito de átomos Z, el CF Z C está definido por ^ (A ∨ ¬A) A∈Z Si Z es un conjunto finito de átomos, entonces un conjunto X de átomos es un modelo estable de Z C sii X ⊆ Z. por ejemplo {p, q}C es (p ∨ ¬p) ∧ (q ∨ ¬q) 10 choice formulas - fórmulas de elección Una construcción muy útil en ASP es el concepto de choice formulas (fórmulas de elección) que tienen muchos modelos estables. Para un conjunto finito de átomos Z, el CF Z C está definido por ^ (A ∨ ¬A) A∈Z Si Z es un conjunto finito de átomos, entonces un conjunto X de átomos es un modelo estable de Z C sii X ⊆ Z. por ejemplo {p, q}C es (p ∨ ¬p) ∧ (q ∨ ¬q) sus modelos estables son arbitrarios subconjuntos de {p, q}: {}, {p}, {q}, {p, q, }. 10 restricciones - constraints La técnica de ASP se base en la posibilidad de representar ciertas colecciones de conjuntos como colecciones de modelos estables. Muchas veces se combina una CF, que aproxima la coleccion de conjuntos, con fórmulas llamadas restricciones (“constraints”) que eliminan modelos no correctos fórmulas negadas eliminan modelos estables: un conjunto de átomos es un modelo estable de F ∧ ¬G sii es un modelo estable de F que satisface ¬G. 11 restricciones - constraints La técnica de ASP se base en la posibilidad de representar ciertas colecciones de conjuntos como colecciones de modelos estables. Muchas veces se combina una CF, que aproxima la coleccion de conjuntos, con fórmulas llamadas restricciones (“constraints”) que eliminan modelos no correctos fórmulas negadas eliminan modelos estables: un conjunto de átomos es un modelo estable de F ∧ ¬G sii es un modelo estable de F que satisface ¬G. en ASP una restricción es una fórmula negada 11 restricciones - constraints La técnica de ASP se base en la posibilidad de representar ciertas colecciones de conjuntos como colecciones de modelos estables. Muchas veces se combina una CF, que aproxima la coleccion de conjuntos, con fórmulas llamadas restricciones (“constraints”) que eliminan modelos no correctos fórmulas negadas eliminan modelos estables: un conjunto de átomos es un modelo estable de F ∧ ¬G sii es un modelo estable de F que satisface ¬G. en ASP una restricción es una fórmula negada restricciones también pueden ser representado como reglas con ‘cabezas’ vacias. Eg. la regla ← p, not q espresa en forma de restricción la formula ¬(p ∧ ¬q). Su efecto es eliminar modelos estables que satisfacen p y ¬q. 11 LPARSE y SMODELS es un de los sistemas de ASP más utilizados. Su frontend LPARSE sierve también como input lenguaje para los sistemas GNT, ASSAT y CMODELS. SMODELS Ejemplo el conjunto de fórmulas de Horn (p ∧ (p → q) ∧ (q ∧ r) → s) (1) se representa en LPARSE como: p. p :- p. s :- q, r. para computar los modelos estables de (1) se guarda los tres lı́neas en un fichero, eg. file1 y se llama LPARSE y SMODELS ası́: 12 % lparse file1 | smodels La parte principal de la respuesta a este comando es el modelo estable: Answer: 1 Stable Model: q,p Se escribe la negación como ‘not’, entonces las fórmulas de antes pueden ser escrito en un fichero, eg. file2. como: q :- not p. p :- not q. con lı́nea de comando % lparse file2 | smodels 0 (El número zero al final indica que queremos computar todos los modelos estables; un integer positivo n significa compute los primeros n modelos.) 13 se produce el output Answer: 1 Stable Model: q Answer: 2 Stable Model: p Para representar en LPARSE un choice formula {A1, . . . , An}C , quitamos el etiqueta C. Una restricción ¬F se escribe como :- F. Ası́ la fórmula {p, q, r}C ∧ ¬¬p ∧ ¬(q ∧ ¬r) se representa en LPARSE como: {p, q, r}. :- not p. :- q, not r. 14 equivalencia fuerte Supone que dos fórmulas F y G se comportan tal que por cualquier H, (F ∧ H) y (G ∧ H) tienen los mismos modelos estables. 15 equivalencia fuerte Supone que dos fórmulas F y G se comportan tal que por cualquier H, (F ∧ H) y (G ∧ H) tienen los mismos modelos estables. Se dice que F y G son fuertemente equivalente. 15 equivalencia fuerte Supone que dos fórmulas F y G se comportan tal que por cualquier H, (F ∧ H) y (G ∧ H) tienen los mismos modelos estables. Se dice que F y G son fuertemente equivalente. Son siempre inter-sustituible sin afectar la semántica en cualquier contexto o programa 15 equivalencia fuerte Supone que dos fórmulas F y G se comportan tal que por cualquier H, (F ∧ H) y (G ∧ H) tienen los mismos modelos estables. Se dice que F y G son fuertemente equivalente. Son siempre inter-sustituible sin afectar la semántica en cualquier contexto o programa Se puede comprobar la equivalencia fuerte utilizando como calculo una lógica no-clásica (HT) de tres valores 15 equivalencia fuerte Ejemplo. Las fórmulas (p ∨ ¬p) y (¬¬p → p) son equivalente en HT entonces fuertemente equivalente. La primera (entonces ambos) fórmulas se puede escribir en LPARSE como {p}. 16 equivalencia fuerte Ejemplo. Las fórmulas (p ∨ ¬p) y (¬¬p → p) son equivalente en HT entonces fuertemente equivalente. La primera (entonces ambos) fórmulas se puede escribir en LPARSE como {p}. También se puede representar la doble negación ¬¬A dentro de una regla como {not A}0 (más detalles abajo). Ası́ se escribe (¬¬p → p) como p :- { not p } 0. 16 Parte 2: técnicas de programación 17 expresiones de cardinalidad En ASP es frequente utilizar fórmulas que expresan condiciones sobre la cardinalidad de un conjunto. Si l es un integer no-negativo y F1, . . . , Fn son fórmulas, l ≤ {F1, . . . .Fn} (2) representa la disyunción: _ ^ I⊆{1,...,n},kIk=l i∈I Fi. 18 expresiones de cardinalidad En ASP es frequente utilizar fórmulas que expresan condiciones sobre la cardinalidad de un conjunto. Si l es un integer no-negativo y F1, . . . , Fn son fórmulas, l ≤ {F1, . . . .Fn} (2) representa la disyunción: _ ^ I⊆{1,...,n},kIk=l i∈I Fi. Ejemplo 2 ≤ {F1, F2, F3} (3) representa (F1 ∧ F2) ∨ (F1 ∧ F3) ∨ (F2 ∧ F3). 18 La expresión {F1, . . . .Fn} ≤ u (4) para u no-negativo denota la fórmula ¬(u + 1 ≤ {F1, . . . .Fn}). Mientras l ≤ {F1, . . . .Fn} ≤ u (5) representa l ≤ {F1, . . . .Fn} ∧ {F1, . . . .Fn} ≤ u. Un conjunto de átomos: satisface (2) sii satisface al menos l de las fórmulas {F1, . . . .Fn} satisface (4) sii satisface como máximo u de las fórmulas {F1, . . . .Fn} satisface (5) sii satisface al menos l y como máximo u de las fórmulas {F1, . . . .Fn} 19 acepta expresiones de forma (2), (4), (5), eliminando el simbolo ≤, si las fórmulas {F1, . . . .Fn} son literales (átomos o sus negaciones). LPARSE Ejemplo Hemos visto que la implicación (¬¬p → p) se puede representar en LPARSE somo p : − {not p}0. Es porque {¬p} ≤ 0 = ¬(1 ≤ {¬p}) = ¬¬p. 20 abreviaturas Cuando A1, . . . , An son átomos por pares distintos escribe: l ≤ {A1, . . . , An}C para {A1, . . . , An}C ∧ (l ≤ {A1, . . . , An}), {A1, . . . , An}C ≤ u para {A1, . . . , An}C ∧ ({A1, . . . , An} ≤ u), l ≤ {A1, . . . , An}C ≤ u para {A1, . . . , An}C ∧ (l ≤ {A1, . . . , An} ≤ u). Si X es un conjunto de átomos, entonces: 1. X es un modelo estable de l ≤ {A1, . . . , An}C sii X ⊆ {A1, . . . , An} y l ≤ kXk 2. X es un modelo estable de {A1, . . . , An}C ≤ u sii X ⊆ {A1, . . . , An} y kXk ≤ u 3. X es un modelo estable de l ≤ {A1, . . . , An}C ≤ u sii X ⊆ {A1, . . . , An} y l ≤ kXk ≤ u 21 Ejemplo Los modelos estables de 2 ≤ {p, q, r}C ≤ 2 son {p, q}, {p, r}, {q, r}. 22 variables en LPARSE En general los programas ASP contienen variables. Un ejemplo en LPARSE: p(1..4). #domain p(I). q(I) :- not q(I-1). Supone que se guarda la tres lı́neas en un fichero var. La primera lı́nea es una abreviatura por 4 reglas: p(1). p(2). p(3). p(4). Esa define un predicado auxiliario de “dominio”, p, que se usa en la segunda lı́nea para declarar I como variable con dominio {1, . . . , 4}. La última lı́nea de var es una representación esquemática de las 4 reglas: q(1) :- not q(0). q(2) :- not q(1). q(3) :- not q(2). q(4) :- not q(3). 23 Entonces LPARSE interpreta var como la conjunción de las fórmulas p(i), ¬q(i − 1) → q(i) (1 ≤ i ≤ 4) Dado el comando 24 Entonces LPARSE interpreta var como la conjunción de las fórmulas p(i), ¬q(i − 1) → q(i) (1 ≤ i ≤ 4) Dado el comando % lpars var | smodels 0 responde con el único model estable Stable Model: q(1) q(3) p(1) p(2) (p3) p(4) Los átomos auxiliarios p(1). ...,p(4) pueden ser ocultado si se incluye la declaración hide p( ). 24 Método alternativo para especificar el grounding en LPARSE: incluye predicados de dominio directamente en los cuerpos de las reglas. Escribe var ası́: p(1..4). q(I) :- p(I), not q(I-1). 25 Método alternativo para especificar el grounding en LPARSE: incluye predicados de dominio directamente en los cuerpos de las reglas. Escribe var ası́: p(1..4). q(I) :- p(I), not q(I-1). Estas lı́neas representan la conjunción de la fórmulas p(i), p(i) ∧ ¬q(i − 1) → q(i) (1 ≤ i ≤ 4) Las dos versiones de var son fuertemente equivalente. Otra abreviatura en LPARSE: se puede escribir p(1..4). 2 {q(I) : p(I) } 3. en lugar de p(1). p(2). p(3). p(4). 2 {q(1), q(2), q(3), q(4)} 3. 25 un ejemplo: coloreando grafos Un n-colorido (colouring) de un grafo G es una función f desde sus vertices a {1, . . . , n} tal que f (x) 6= f (y) si x, y son vertices contiguos. 26 un ejemplo: coloreando grafos Un n-colorido (colouring) de un grafo G es una función f desde sus vertices a {1, . . . , n} tal que f (x) 6= f (y) si x, y son vertices contiguos. Problema: utilize ASP para encontrar un n-colorido o demonstrar que ninguno existe. Entonces: escribe un programa cuyos answer sets (modelos estables) son en correspondencia 1-1 con los n-coloridos de G. 26 un ejemplo: coloreando grafos Un n-colorido (colouring) de un grafo G es una función f desde sus vertices a {1, . . . , n} tal que f (x) 6= f (y) si x, y son vertices contiguos. Problema: utilize ASP para encontrar un n-colorido o demonstrar que ninguno existe. Entonces: escribe un programa cuyos answer sets (modelos estables) son en correspondencia 1-1 con los n-coloridos de G. Solución Sea V los vertices de G y E el conjunto de los bordes. El programa consiste en las reglas: 1 ≤ {colour(x, 1), . . . , colour(x, n)}C ≤ 1 ← colour(x, i), colour(y, i) (x ∈ V ) (6) ({x, y} ∈ E; 1 ≤ i ≤ n). (7) 26 Podemos demonstrar que ese programa es correcto. El programa (6),(7) se puede codificar en LPARSE como el siguiente fichero colour: c(1..n). 1 { colour(X,I) : c(I) } 1 :- v(X). :- colour(X,I), colour(Y,I), e(X,Y), c(I). 27 Podemos demonstrar que ese programa es correcto. El programa (6),(7) se puede codificar en LPARSE como el siguiente fichero colour: c(1..n). 1 { colour(X,I) : c(I) } 1 :- v(X). :- colour(X,I), colour(Y,I), e(X,Y), c(I). Se supone que los predicados de dominio, v y e caracterizando los vertices y los bordes de G, estan definido en un fichero separado, eg graph. Por ejemplo, si G es un cubo en 3 dimensiones, el ficher puede tener la forma: v(0..7). e(0,1). e(1,2). e(2,3). e(3,0). e(4,5). e(5,6). e(6,7). e(7,4). e(0,4). e(1,5). e(2,6). e(3,7). La lı́nea de comando utilize la opción -c de LPARSE para especificar el valor del constante n, y ordena LPARSE que concatena los ficheros graph y colour: % lparse -c n=2 -d none graph colour | smodels 27 SMODELS responde con un conjunto de átomos que representa un 2-colorido del cubo: Stable Model: colour(0,1) colour(1,2) colour(2,1) colour(3,2) colour(4,2) colour(5,1), colour(6,2) colour(7,1) 28 ejemplo 2: cliques Un clique en un grafo G es un conjunto de por pares contiguos vertices de G. Problema Utilice ASP par encontrar un clique de cardinalidad ≥ n o demonstrar que eso no existe. Escribe un programa cuoys answer sets estan en correspondencia 1-1 con cliques de card. ≥ n. 29 ejemplo 2: cliques Un clique en un grafo G es un conjunto de por pares contiguos vertices de G. Problema Utilice ASP par encontrar un clique de cardinalidad ≥ n o demonstrar que eso no existe. Escribe un programa cuoys answer sets estan en correspondencia 1-1 con cliques de card. ≥ n. Solución Como antes, sean V los vertices y E los bordes de G. El programa consiste en las reglas ← in(x), in(y) n ≤ {in(x) : x ∈ V }C , (8) (x, y ∈ V ; x 6= y; {x, y} 6∈ E). (9) Se puede comprobar que un conjunto X de átomos es un modelo estable de (8) + (9) sii X es {in(x) : x ∈ C} para un clique C in G tal que kCk ≥ n. 29 Se escribe (8) + (9) en LPARSE ası́: n {in(X) : v(X)}. ;- in(X), in(Y), v(X,Y), X!=Y, not e(X,Y), not e(Y,X). Como antes, v y e son predicados de dominio para vertices y bordes de G. Las condiciones not e(X,Y), not e(Y,X) expresan que X y Y no son contiguo. 30 ciclos de Hamilton Un ciclo de Hamilton en un grafo orientado G es un camino cerrado que pasa dentro cada vertice de G exactamente una vez. El programa abajo utiliza los átomos in(x, y) para cada borde hx, yi de G para expresar que hx, yi es elemento del camino. La parte ‘generativa’ del programa consiste en las reglas de elección: {in(x, y)}C (hx, yi ∈ E) (10) donde E es el conjunto de bordes. Restricciones eliminan los subconjuntos de E que no son de Hamilton; ← 2 ≤ {in(x, y) : y ∈ Ax} (x ∈ V ) (11) ← 2 ≤ {in(x, y) : x ∈ By } (y ∈ V ) (12) donde Ax denota {y : hx, yi ∈ E} y By denota {x : hx, yi ∈ E}. 31 Las restricciones guarantizan que dos in-bordes ni empezan ni terminan en el mismo vértice. Ası́ el conjunto de in-bordes es un camino o una unión de caminos separados. Última condicion: cada vértice de G es alcanzable por una secuencia de in-bordes desde un vértice fijo, p.e. x0. Utilizamos átomos auxiliarios r(x) para “x es alcanzable desde x0”, para cada x en G. Una definición recursiva de r es: r(x) ← in(x0, x) r(y) ← r(x), in(x, y) (x ∈ V ) (13) (hx, yi ∈ E) (14) En fin ponemos las restricciones de alcanzabilidad: ← not r(x) (x ∈ V ). (15) 32 Se demuestra que un conjunto X de átomos es la parte esencial de un modelo estable de (10) - (15) si X tiene la forma {in(x, y) : hx, yi ∈ H} donde H es el conjunto de bordes de un ciclo de Hamilton en G. 33 Se demuestra que un conjunto X de átomos es la parte esencial de un modelo estable de (10) - (15) si X tiene la forma {in(x, y) : hx, yi ∈ H} donde H es el conjunto de bordes de un ciclo de Hamilton en G. La representación en LPARSE ponendo x0 = 0 es: {in(X,Y)} :- e(X,Y). :- 2 {in(X,Y) : e(X,Y)}, v(X). :- 2 {in(X,Y) : e(X,Y)}, v(Y). r(X) :- in(0,X), v(X). r(Y) :- r(X), in(X,Y), e(X,Y). :- not r(X), v(X). hide r( ). 33