diff

OPL keyword to compute the difference between two sets.

Purpose

OPL keyword to construct set expressions

context
Model files (.mod)

Syntax

BinaryExpression: Expression "==" Expression
                | Expression "!=" Expression
                | Expression "<=" Expression
                | Expression "<" Expression
                | Expression ">=" Expression
                | Expression ">" Expression
                | Expression "+" Expression
                | Expression "-" Expression
                | Expression "*" Expression
                | Expression "/" Expression
                | Expression "%" Expression
                | Expression "in" Expression
                | Expression "not in" Expression
                | Expression "inter" Expression
                | Expression "union" Expression
                | Expression "diff" Expression
                | Expression "symdiff" Expression
                | Expression "^" Expression
                | Expression "&&" Expression
                | Expression "||" Expression

Description

Set data can be initialized by set expressions. These expressions are constructed from previously defined sets and the set operations union, inter, diff, and symdiff.

The keyword diff goes through the first set and keeps each element that is not in the second set.

Example

The following code initializes i to {1}, u to {1,2,3,4,5}, d to {2,3}, and sd to {2,3,4,5}.

{int} s1 = {1,2,3}; 
{int} s2 = {1,4,5}; 
{int} i = s1 inter s2; 
{int} u = s1 union s2; 
{int} d = s1 diff s2; 
{int} sd = s1 symdiff s2; 

assert(1 in s1);
assert(4 not in s1);

This is true if the result is an ordered set. If you apply the property sorted or reversed to the resulting set, the result is affected accordingly.