2
Quelqu'un peut-il préciser pourquoi la requête finale n'a pas de sortie? Fondamentalement, je dis à Z3 si vs-) vd et vs-> ss et vd-> sd, alors sd est dérivé de ss.points fixes dans Z3
(set-option :fixedpoint.engine datalog)
(define-sort site() (_ BitVec 3))
(declare-rel pointsto (Int site))
(declare-rel dcall (Int Int))
(declare-rel derived (site site))
(declare-var vs Int)
(declare-var vd Int)
(declare-var ss site)
(declare-var sd site)
;;;;; definition of derived ;;
(rule (=> (and (dcall vs vd) (pointsto vs ss) (pointsto vd sd)) (derived ss sd)))
(rule (dcall 11 12))
(rule (pointsto 11 #b001))
(rule (pointsto 12 #b010))
(query (derived #b001 #b010))
La syntaxe semble erroné. Pourquoi écrivez-vous pointsto (vs ss) au lieu de (pointsto vs ss) ? –
Désolé. Une faute de frappe. corrigé maintenant. Mais toujours aucun résultat ne montre. – Tim
En exécutant sur Z3 local au lieu de rise4fun, j'ai trouvé "libC++ abi.dylib: se terminant avec une exception non interceptée de type std :: bad_cast: std :: bad_cast" – Tim