s(CASP): How to avoid overly restrictive models

I’m using: SWI-Prolog version 9.3.22-30-gfc8851f19

I want the code to: return answer sets that are only as restrictive as they have to. Please consider the code below.

But what I’m getting is:

Model 1:

a
not b
not ¬ fact(A | {A∉[some_fact]},B)
not fact(some_fact,C)
¬ fact(some_fact,D)

Model 2:

a
b
not ¬ fact(A | {A∉[some_fact]},B)
fact(some_fact,C | {C∉[Some string]})
not ¬ fact(some_fact,D)

Model 1 requires that no fact predicate at all is defined with “some_fact” as the first parameter (“¬ fact(some_fact,D)”), although, looking at the code, it is perfectly fine if such a fact is defined, as long as the second parameter does not equal “Some string”. So I would expect Model 1 to contain “¬fact(some_fact,”Some string”)“ instead of “¬ fact(some_fact,D)”.

Is there a way to configure s(CASP) to do this, or to rewrite my code so that s(CASP) does this? If possible, I’d like the code to be as less verbose as possible, i.e., not having to mirror each clause with a negated head and negated subgoals.

My code looks like this:

:- use_module(library(scasp)).

#abducible fact(some_fact, _).

a :- 
    not(b).

a :- 
    b.

b :-
    fact(some_fact, Fact),
    Fact \= "Some string".

?- ? a.