When taking the union of two dynamic rule sets, the union is computed for each scope or changeset separately. This is fine for intersection, but not for union. Here are some tests. the first one succeeds, the second one fails currently.

test-dr-fork-and-union =
apply-test(!“test-dr-fork-and-union1”
, test-dr-fork-and-union-strategy1
, !()
, !["a", "b"]
);
apply-test(!“test-dr-fork-and-union2”
, test-dr-fork-and-union-strategy2
, !()
, !["b", "a"]
)

test-dr-fork-and-union-strategy1 =
{| A
: dr-fork-and-union(rules(A : _ -> “b”), rules( A : _ -> “a”) | [“A”])
; bagof-A
|}

test-dr-fork-and-union-strategy2 =
{| A
: rules( A : _ -> “a”)
; dr-fork-and-union(rules(A : _ -> “b”), id | [“A”])
; bagof-A
|}

Submitted on 9 July 2004 at 14:14

On 11 July 2004 at 14:42 Jira commented:

STR-142, visser:
This was fixed by making the hashtable merge operation context sensitive by parameterizing it with lookup operations which can take into account more than just the current scope.

This was only fixed for dr-fork-and-union and not yet for the fixpoint variant.

Log in to post comments