0

I am running muZ over python with version 4.40. For one query I get a different result when I set

fp.set( "engine", "datalog" )

And when I set

fp.set( "engine", "pdr" )

The program below returns unsat for both queries with datalog and sat with pdr

sortTest, lList = EnumSort( "TestSort", ["1","2","3","4"] )
fp = Fixedpoint()
fp.set( "engine", "datalog" )
funcRel = Function( "TestFunc", sortTest, BoolSort() )
fp.register_relation( funcRel )
fp.fact( funcRel( lList[ 0 ] ) )
fp.rule( funcRel( lList[ 1 ] ), funcRel( lList[ 0 ] ) )
fp.rule( funcRel( lList[ 2 ] ), funcRel( lList[ 1 ] ) )
print fp.query( funcRel( lList[ 1 ] ) )
print fp.query( funcRel( lList[ 2 ] ) )

When I remove the line that defines the seconed rule, namely: fp.rule( funcRel( lList[ 2 ] ), funcRel( lList[ 1 ] ) ) then the first query returns sat also with datalog

An update: everything seems to work when I replace enum sort with bit vectors. Could you please confirm that this is the problem?

0 Answers0