ich ein Constraint-Solver in Prolog schreibe, die eine einfache logische Formel implementiert:Darstellen logische Disjunktionen in Constraint Handling Rules
"(alive(A) and animal(A)) iff (awake(A) or asleep(A))"
.
fand ich einen Weg, es in Constraint Handling Rules zu implementieren, aber es ist viel ausführlicher als die ursprüngliche Formel:
:- use_module(library(chr)).
:- chr_constraint is_true/1.
is_true(A) \ is_true(A) <=> true.
is_true(alive(A)),is_true(animal(A)) ==> is_true(awake(A));is_true(asleep(A)).
is_true(awake(A)) ==> is_true(animal(A)),is_true(alive(A)).
is_true(asleep(A)) ==> is_true(animal(A)),is_true(alive(A)).
Wäre es möglich, diese Formel anstelle von mehreren redundanten unter Verwendung einer einzigen Anweisung zu implementieren Aussagen?