Question

Je suis intéressé à générer des solutions aléatoires aux prédicats. Je n'ai besoin que de SMT pour les entiers avec les prédicats / fonctions suivants <,>, <=,> =, == ,! =, +, *

L'algorithme que je veux devrait produire une affectation aléatoire de variables aux valeurs (une substitution) de sorte que l'application de la substitution au prédicat donné donne une véritable déclaration. Dans le cas Unpat, j'ai juste besoin de savoir que ce n'est pas.

Il est probablement important de clarifier ce que j'entends par hasard. Je pense qu'une définition suffisante est qu'il pourrait y avoir un paramètre supplémentaire qui agit comme une graine. Si je donne une graine différente, l'algorithme devrait me donner une solution très différente plutôt que la même solution. Franchement, je ne sais pas comment dépenser cela, mais c'est à peu près de la même manière qu'un générateur de nombres aléatoires typique génère un entier entre X et Y (enfin avec un module et un ajout de toute façon) que j'aimerais générer une classe plus large des prédicats.

Je voudrais utiliser idéalement des solveurs SMT existants dans Haskell ou dans la pile JVM (plus idéalement Haskell cependant). J'ai pensé à simplement randomiser l'algorithme DPLL et à traduire les problèmes SMT en med moi-même, mais cela ressemble à une idée terrible quand de très bons solveurs SMT existants existent.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top