Su enfoque se basa en la relación entre planes y modelos estables.
El lenguaje que acepta Lparse ahora se llama comúnmente AnsProlog*.
[8][9] Ahora se utiliza de la misma manera que en muchos otros solucionadores del conjunto de respuestas, incluyendo Assat, broche, cmodels, GNT, nomore++ y pbmodels (dlv es una excepción; la sintaxis de los programas ASP escritos para dlv es un poco diferente).
Un programa AnsProlog consta de reglas de la forma El símbolo :- ("if") se descarta si
está vacío; tales reglas se llaman hechos.Otra construcción útil incluida en este lenguaje es la elección.
El programa lparse que contiene esta regla de elección y ninguna otra regla tiene 8 modelos estables: todos los subconjuntos arbitrarios de
[10] Las reglas de elección pueden tratarse también como abreviaturas para fórmulas proposicionales bajo la semántica del modelo estable.
El significado de esta regla puede ser representado por la fórmula proposicional
Por ejemplo, el hecho es un atajo para Los rangos también se pueden usar en cuerpos de reglas con la misma semántica.
Por ejemplo, es una abreviatura de Para encontrar un modelo estable del programa Lparse almacenado en el archivo ${filename} usamos el comando La opción 0 le indica a los smodels que busquen todos los modelos estables del programa.
-coloración de un grafo dado (o determinar que no existe).
Esto se puede lograr utilizando el siguiente programa Lparse: La línea 1 define que los números.
La restricción en la línea 3 prohíbe asignar el mismo color a los vértices
El programa en este ejemplo ilustra la estructura de "generar y evaluar" que a menudo se encuentra en programas ASP simples.
Un clan en un grafo es un conjunto de vértices adyacentes por pares.
El siguiente programa lparse encuentra un clan de tamaño
La regla de elección en la línea 1 "genera" todos los conjuntos que consisten en
vértices La restricción en la línea 2 "elimina" los conjuntos que no son clanes.
El siguiente programa Lparse se puede usar para encontrar un ciclo hamiltoniano (si existe) en un grafo dirigido dado; Suponemos que 0 es uno de los vértices.
Las tres restricciones "eliminan" los subconjuntos que no son ciclos hamiltonianos.
es accesible desde 0") para prohibir vértices que no satisfagan esta condición.
Este predicado se define de forma recursiva en las líneas 4 y 5.
[12] El siguiente código analiza la oración latina "Puella pulchra in villa linguam latinam discit" ("la niña bonita está aprendiendo latín en la villa").
Los primeros sistemas, tales como Smodels, usaban backtracking para encontrar soluciones.
Estos convirtieron la fórmula ASP en propuestas SAT, aplicaron el solucionador SAT y luego volvieron a convertir las soluciones a la forma ASP.
Los sistemas más recientes, como Clasp, utilizan un enfoque híbrido, utilizando algoritmos controlados por conflictos inspirados por SAT, sin conversión completa en una forma de lógica booleana.
El proyecto Potassco actúa como un paraguas para muchos de los sistemas nombrados a continuación, incluyendo clasp, grounding systems como gringo, sistemas incrementales (iclingo), solucionadores de restricciones (clingcon), lenguaje de acción para compiladores ASP (coala), implementaciones distribuidas de MPI (claspar) y muchos otros.
La necesidad de conexión a tierra puede causar una explosión combinatoria de cláusulas; por lo tanto, los sistemas que realizan grounding sobre la marcha podrían tener una ventaja.