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?