En el pasado, implementé modelos de coordinación utilizando SAT y satisfacción de restricciones regulares como el caballo de batalla principal en sus motores. Continuando en esta línea de trabajo, me gustaría hacer que los modelos sean más interactivos, y la mejor manera que veo de hacerlo es abrir el solucionador de restricciones para que ya no sea un cuadro negro.
Por lo tanto, estoy interesado en aprender más sobre la satisfacción de restricciones donde las restricciones tienen lo que llamaré variables externas , predicados y funciones , es decir, el lenguaje de restricción puede tener predicados como que solo pueden ser satisfecho mediante la consulta de algún agente externo al solucionador, y luego solo cuando es tierra. Un escenario en el que esto es útil es cuando corresponde a algún proceso de decisión externo que no puede incorporarse al solucionador de restricciones. Dichos solucionadores de restricciones podrían llamarse abiertos (ya que las restricciones no se conocen por completo) o interactivas (ya que se requiere interacción para proceder con la satisfacción de restricciones).
Me gustaría saber ambos:
- investigación teórica realizada en esta dirección
- herramientas o bibliotecas que implementan solucionadores de restricciones que permiten la interacción con el mundo externo durante el proceso de resolución de restricciones.
Al leer su pregunta, también estoy de acuerdo en decir que las Teorías del módulo de satisfacción están estrechamente relacionadas con sus necesidades. Sugeriría leer el libro Procedimientos de decisión: un punto de vista algorítmico .
fuente
fuente
Estoy un poco confundido sobre el término interactivo. Voy a hablar con los demás y agregaré que un solucionador SMT podría ser útil. Para agregar al comentario de Walter Bishop, hay disponibles diapositivas para el libro Procedimientos de decisión (Kroening y Strichman). El tratamiento minucioso de John Harrison en el Manual de lógica práctica y razonamiento automatizado también puede interesarle. El código de ejemplo está disponible en línea.
La princesa de Philipp Ruemmer admite la aritmética con predicados no interpretados, que podrían ajustarse a lo que quiere decir con abierto. Está escrito en Scala, utiliza E-matching en el manejo de la cuantificación y proporciona interpolantes.
fuente
¿Qué pasa con las herramientas? Si decide utilizar Prolog como lenguaje de elección, puedo sugerir algunos enfoques de implementación:
Prolog es un lenguaje de programación, que es adecuado para hacer muchos tipos de solucionadores (y la mayoría de ellos tienen sus solucionadores de dominio finito).
fuente