W przeszłości wdrażałem modele koordynacji, wykorzystując SAT i regularną satysfakcję z ograniczeń jako podstawowy koń roboczy w ich silnikach. Kontynuując tę linię pracy, chciałbym uczynić modele bardziej interaktywnymi, a najlepszym sposobem, jaki to widzę, jest otwarcie solvera więzów, aby nie był już czarną skrzynką.
Dlatego chcę dowiedzieć się więcej na temat satysfakcji z ograniczeń, gdzie ograniczenia mają to, co nazywam zmiennymi zewnętrznymi , predykatami i funkcjami , tzn. Język ograniczeń może mieć predykaty, takie jak które mogą być tylko satysfakcjonujące, konsultując się z jakimś agentem spoza solwera, a dopiero wtedy, gdy jest uziemiony. Scenariusz, w którym jest to przydatne, występuje wtedy, gdy odpowiada procesowi decyzyjnemu z zewnątrz, którego nie można włączyć do solvera ograniczeń. Takie rozwiązania rozwiązywania problemów można nazwać otwartymi (ponieważ ograniczenia nie są całkowicie znane) lub interaktywnymi (ponieważ wymagana jest interakcja, aby postępować z satysfakcją z ograniczeń).
Chciałbym wiedzieć oba:
- badania teoretyczne przeprowadzone w tym kierunku
- narzędzia lub biblioteki, które implementują solwery ograniczeń, które umożliwiają interakcję ze światem zewnętrznym podczas procesu rozwiązywania ograniczeń.
Czytając twoje pytanie, zgadzam się również z twierdzeniem, że teorie modulo satysfakcji są ściśle związane z twoimi potrzebami. Proponuję przeczytać książkę Procedury decyzyjne - algorytmiczny punkt widzenia .
źródło
źródło
Jestem trochę zdezorientowany terminem „interaktywny”. Zajmę się innymi i dodam, że solver SMT może być pomocny. Aby dodać do komentarza Waltera Bishopa, dostępne są slajdy do książki Procedury decyzyjne (Kroening i Strichman). Interesujące może być również dokładne potraktowanie Johna Harrisona w Podręczniku praktycznej logiki i automatycznego rozumowania. Przykładowy kod jest dostępny online.
Księżniczka Filipa Ruemmera obsługuje arytmetykę z nieinterpretowanymi predykatami, które mogą pasować do tego, co masz na myśli przez słowo otwarte. Jest napisany w Scali, używa E-dopasowania w obsłudze kwantyfikacji i zapewnia interpolanty.
źródło
Co z narzędziami, jeśli zdecydujesz się na Prolog jako język wyboru, mogę zasugerować kilka metod wdrażania:
Prolog to język programowania, który jest odpowiedni do wykonywania wielu rodzajów solverów (a większość z nich ma swoje solvery o skończonej domenie).
źródło