Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
186 views
in Technique[技术] by (71.8m points)

How to Perform QSAT Count in Prolog

Interestingly some CLP(B) library use the (^)/2 operator for existential quantifier. But the existential quantifier does not get consideration it would deserve in sat_count/2. Take these two examples:

?- sat(X+Y*Z), labeling([X,Y,Z]), write(X-Y-Z), nl, fail; true.
0-1-1
1-0-0
1-0-1
1-1-0
1-1-1
?- sat(Y^(X+Y*Z)), labeling([X,Z]), write(X-Z), nl, fail; true.
0-1
1-0
1-1

The counts are 5 and 3. For the later count, I only get the correct result by correcting the result of sat_count/2 via a division by two:

?- sat_count(X+Y*Z, N).
N = 5.
?- sat_count(Y^(X+Y*Z), N), M is N//2.
N = 6,
M = 3.

Are there CLP(B) implementations around that behave differently?

question from:https://stackoverflow.com/questions/65853428/how-to-perform-qsat-count-in-prolog

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...