# set.hh File Reference

`#include <gecode/kernel.hh>`

`#include <gecode/int.hh>`

`#include <gecode/iter.hh>`

`#include <functional>`

`#include <gecode/support/auto-link.hpp>`

`#include <gecode/set/exception.hpp>`

`#include <gecode/set/limits.hpp>`

`#include <gecode/set/var-imp.hpp>`

`#include <gecode/set/view.hpp>`

`#include <gecode/set/array-traits.hpp>`

`#include <gecode/set/array.hpp>`

`#include <gecode/set/int.hpp>`

`#include <gecode/set/branch/traits.hpp>`

`#include <gecode/set/branch/afc.hpp>`

`#include <gecode/set/branch/action.hpp>`

`#include <gecode/set/branch/chb.hpp>`

`#include <gecode/set/branch/var.hpp>`

`#include <gecode/set/branch/val.hpp>`

`#include <gecode/set/branch/assign.hpp>`

`#include <gecode/set/trace/trace-view.hpp>`

`#include <gecode/set/trace/delta.hpp>`

`#include <gecode/set/trace/traits.hpp>`

`#include <gecode/set/trace.hpp>`

Go to the source code of this file.

## Classes | |

class | Gecode::SetVar |

Set variables More... | |

class | Gecode::SetVarGlbRanges |

Iterator for the greatest lower bound ranges of a set variable. More... | |

class | Gecode::SetVarLubRanges |

Iterator for the least upper bound ranges of a set variable. More... | |

class | Gecode::SetVarUnknownRanges |

Iterator for the unknown ranges of a set variable. More... | |

class | Gecode::SetVarGlbValues |

Iterator for the values in the greatest lower bound of a set variable. More... | |

class | Gecode::SetVarLubValues |

Iterator for the values in the least upper bound of a set variable. More... | |

class | Gecode::SetVarUnknownValues |

Iterator for the values in the unknown set of a set variable. More... | |

class | Gecode::SetVarArgs |

Passing set variables. More... | |

class | Gecode::SetVarArray |

Set variable array More... | |

class | Gecode::SetAFC |

Recording AFC information for set variables. More... | |

class | Gecode::SetAction |

Recording actions for set variables. More... | |

class | Gecode::SetCHB |

Recording CHB for set variables. More... | |

class | Gecode::SetVarBranch |

Which variable to select for branching. More... | |

class | Gecode::SetValBranch |

Which values to select for branching first. More... | |

class | Gecode::SetAssign |

Which value to select for assignment. More... | |

class | Gecode::SetTraceDelta |

Trace delta information for set variables. More... | |

class | Gecode::SetTraceDelta::Glb |

Delta for the greatest lower bound. More... | |

class | Gecode::SetTraceDelta::Lub |

Delta for the least upper bound. More... | |

class | Gecode::StdSetTracer |

Standard set variable tracer. More... | |

## Namespaces | |

namespace | Gecode::Set |

Finite integer sets. | |

namespace | Gecode |

Gecode toplevel namespace | |

namespace | Gecode::Set::Limits |

Numerical limits for set variables. | |

## Defines | |

#define | GECODE_SET_EXPORT |

#define | GECODE_LIBRARY_NAME "Set" |

## Typedefs | |

typedef std::function< bool(const Space &home, SetVar x, int i)> | Gecode::SetBranchFilter |

Branch filter function type for set variables. | |

typedef std::function< double(const Space &home, SetVar x, int i)> | Gecode::SetBranchMerit |

Branch merit function type for set variables. | |

typedef std::function< int(const Space &home, SetVar x, int i)> | Gecode::SetBranchVal |

Branch value function type for set variables. | |

typedef std::function< void(Space &home, unsigned int a, SetVar x, int i, int n)> | Gecode::SetBranchCommit |

Branch commit function type for set variables. | |

typedef std::function< void(const Space &home, const Brancher &b, unsigned int a, SetVar x, int i, const int &n, std::ostream &o)> | Gecode::SetVarValPrint |

Function type for printing branching alternatives for set variables. | |

typedef ViewTracer< Set::SetView > | Gecode::SetTracer |

Tracer for set variables. | |

typedef ViewTraceRecorder < Set::SetView > | Gecode::SetTraceRecorder |

Trace recorder for set variables. | |

## Enumerations | |

enum | Gecode::SetRelType { Gecode::SRT_EQ, Gecode::SRT_NQ, Gecode::SRT_SUB, Gecode::SRT_SUP, Gecode::SRT_DISJ, Gecode::SRT_CMPL, Gecode::SRT_LQ, Gecode::SRT_LE, Gecode::SRT_GQ, Gecode::SRT_GR } |

Common relation types for sets. More... | |

enum | Gecode::SetOpType { Gecode::SOT_UNION, Gecode::SOT_DUNION, Gecode::SOT_INTER, Gecode::SOT_MINUS } |

Common operations for sets. More... | |

## Functions | |

void | Gecode::Set::Limits::check (int n, const char *l) |

Check whether integer n is in range, otherwise throw overflow exception with information l. | |

void | Gecode::Set::Limits::check (unsigned int n, const char *l) |

Check whether unsigned int n is in range for cardinality, otherwise throw overflow exception with information l. | |

void | Gecode::Set::Limits::check (const IntSet &s, const char *l) |

Check whether minimum and maximum of IntSet s is in range, otherwise throw overflow exception with information l. | |

void | Gecode::dom (Home home, SetVar x, SetRelType r, int i) |

Propagates . | |

void | Gecode::dom (Home home, const SetVarArgs &x, SetRelType r, int i) |

Propagates for all . | |

void | Gecode::dom (Home home, SetVar x, SetRelType r, int i, int j) |

Propagates . | |

void | Gecode::dom (Home home, const SetVarArgs &x, SetRelType r, int i, int j) |

Propagates for all . | |

void | Gecode::dom (Home home, SetVar x, SetRelType r, const IntSet &s) |

Propagates . | |

void | Gecode::dom (Home home, const SetVarArgs &x, SetRelType r, const IntSet &s) |

Propagates for all . | |

void | Gecode::cardinality (Home home, SetVar x, unsigned int i, unsigned int j) |

Propagates . | |

void | Gecode::cardinality (Home home, const SetVarArgs &x, unsigned int i, unsigned int j) |

Propagates for all . | |

void | Gecode::dom (Home home, SetVar x, SetRelType rt, int i, Reify r) |

Post propagator for . | |

void | Gecode::dom (Home home, SetVar x, SetRelType rt, int i, int j, Reify r) |

Post propagator for . | |

void | Gecode::dom (Home home, SetVar x, SetRelType rt, const IntSet &s, Reify r) |

Post propagator for . | |

void | Gecode::dom (Home home, SetVar x, SetVar d) |

Constrain domain of x according to domain of d. | |

void | Gecode::dom (Home home, const SetVarArgs &x, const SetVarArgs &d) |

Constrain domain of according to domain of for all . | |

void | Gecode::rel (Home home, SetVar x, SetRelType r, SetVar y) |

Post propagator for . | |

void | Gecode::rel (Home home, SetVar x, SetRelType rt, SetVar y, Reify r) |

Post propagator for . | |

void | Gecode::rel (Home home, SetVar s, SetRelType r, IntVar x) |

Post propagator for . | |

void | Gecode::rel (Home home, IntVar x, SetRelType r, SetVar s) |

Post propagator for . | |

void | Gecode::rel (Home home, SetVar s, SetRelType rt, IntVar x, Reify r) |

Post propagator for . | |

void | Gecode::rel (Home home, IntVar x, SetRelType rt, SetVar s, Reify r) |

Post propagator for . | |

void | Gecode::rel (Home home, SetVar s, IntRelType rt, IntVar x) |

Post propagator for . | |

void | Gecode::rel (Home home, IntVar x, IntRelType rt, SetVar s) |

Post propagator for . | |

void | Gecode::rel (Home home, SetVar s, IntRelType rt, IntVar x, Reify r) |

Post reified propagator for . | |

void | Gecode::rel (Home home, IntVar x, IntRelType rt, SetVar s, Reify r) |

Post reified propagator for. | |

void | Gecode::rel (Home home, SetVar x, SetOpType op, SetVar y, SetRelType r, SetVar z) |

Post propagator for . | |

void | Gecode::rel (Home home, SetOpType op, const SetVarArgs &x, SetVar y) |

Post propagator for . | |

void | Gecode::rel (Home home, SetOpType op, const SetVarArgs &x, const IntSet &z, SetVar y) |

Post propagator for . | |

void | Gecode::rel (Home home, SetOpType op, const IntVarArgs &x, const IntSet &z, SetVar y) |

Post propagator for . | |

void | Gecode::rel (Home home, SetOpType op, const IntVarArgs &x, SetVar y) |

Post propagator for . | |

void | Gecode::rel (Home home, const IntSet &x, SetOpType op, SetVar y, SetRelType r, SetVar z) |

Post propagator for . | |

void | Gecode::rel (Home home, SetVar x, SetOpType op, const IntSet &y, SetRelType r, SetVar z) |

Post propagator for . | |

void | Gecode::rel (Home home, SetVar x, SetOpType op, SetVar y, SetRelType r, const IntSet &z) |

Post propagator for . | |

void | Gecode::rel (Home home, const IntSet &x, SetOpType op, SetVar y, SetRelType r, const IntSet &z) |

Post propagator for . | |

void | Gecode::rel (Home home, SetVar x, SetOpType op, const IntSet &y, SetRelType r, const IntSet &z) |

Post propagator for . | |

void | Gecode::ite (Home home, BoolVar b, SetVar x, SetVar y, SetVar z) |

Post propagator for if-then-else constraint. | |

void | Gecode::convex (Home home, SetVar x) |

Post propagator that propagates that x is convex. | |

void | Gecode::convex (Home home, SetVar x, SetVar y) |

Post propagator that propagates that y is the convex hull of x. | |

void | Gecode::sequence (Home home, const SetVarArgs &x) |

Post propagator for . | |

void | Gecode::sequence (Home home, const SetVarArgs &y, SetVar x) |

Post propagator for and . | |

void | Gecode::atmostOne (Home home, const SetVarArgs &x, unsigned int c) |

Post propagator for and . | |

void | Gecode::min (Home home, SetVar s, IntVar x) |

Post propagator that x is the minimal element of s and that s is not empty. | |

void | Gecode::notMin (Home home, SetVar s, IntVar x) |

Post propagator that x is not the minimal element of s. | |

void | Gecode::min (Home home, SetVar s, IntVar x, Reify r) |

Post reified propagator for b iff x is the minimal element of s. | |

void | Gecode::max (Home home, SetVar s, IntVar x) |

Post propagator that x is the maximal element of s and that s is not empty. | |

void | Gecode::notMax (Home home, SetVar s, IntVar x) |

Post propagator that x is not the maximal element of s. | |

void | Gecode::max (Home home, SetVar s, IntVar x, Reify r) |

Post reified propagator for b iff x is the maximal element of s. | |

void | Gecode::cardinality (Home home, SetVar s, IntVar x) |

Post propagator for . | |

void | Gecode::cardinality (Home home, SetVar s, IntVar x, Reify r) |

Post reified propagator for . | |

void | Gecode::weights (Home home, IntSharedArray elements, IntSharedArray weights, SetVar x, IntVar y) |

Post propagator for . | |

void | Gecode::channel (Home home, const IntVarArgs &x, const SetVarArgs &y) |

Post propagator for . | |

void | Gecode::channelSorted (Home home, const IntVarArgs &x, SetVar y) |

Post propagator for and . | |

void | Gecode::channel (Home home, const BoolVarArgs &x, SetVar y) |

Post propagator for . | |

void | Gecode::channel (Home home, const SetVarArgs &x, const SetVarArgs &y) |

Post propagator for . | |

void | Gecode::precede (Home home, const SetVarArgs &x, int s, int t) |

Post propagator that s precedes t in x. | |

void | Gecode::precede (Home home, const SetVarArgs &x, const IntArgs &c) |

Post propagator that successive values in c precede each other in x. | |

void | Gecode::element (Home home, SetOpType op, const SetVarArgs &x, SetVar y, SetVar z, const IntSet &u=IntSet(Set::Limits::min, Set::Limits::max)) |

Post propagator for . | |

void | Gecode::element (Home home, SetOpType op, const IntVarArgs &x, SetVar y, SetVar z, const IntSet &u=IntSet(Set::Limits::min, Set::Limits::max)) |

Post propagator for . | |

void | Gecode::element (Home home, SetOpType op, const IntSetArgs &x, SetVar y, SetVar z, const IntSet &u=IntSet(Set::Limits::min, Set::Limits::max)) |

Post propagator for . | |

void | Gecode::element (Home home, SetOpType op, const IntArgs &x, SetVar y, SetVar z, const IntSet &u=IntSet(Set::Limits::min, Set::Limits::max)) |

Post propagator for . | |

void | Gecode::element (Home home, const SetVarArgs &x, IntVar y, SetVar z) |

Post propagator for . | |

void | Gecode::element (Home home, const IntSetArgs &s, IntVar y, SetVar z) |

Post propagator for . | |

void | Gecode::element (Home home, const IntSetArgs &a, IntVar x, int w, IntVar y, int h, SetVar z) |

Post propagator for . | |

void | Gecode::element (Home home, const SetVarArgs &a, IntVar x, int w, IntVar y, int h, SetVar z) |

Post propagator for . | |

void | Gecode::wait (Home home, SetVar x, std::function< void(Space &home)> c) |

Execute c when x becomes assigned. | |

void | Gecode::wait (Home home, const SetVarArgs &x, std::function< void(Space &home)> c) |

Execute c when all variables in x become assigned. | |

SetVarBranch | Gecode::SET_VAR_NONE (void) |

Select first unassigned variable. | |

SetVarBranch | Gecode::SET_VAR_RND (Rnd r) |

Select random variable (uniform distribution, for tie breaking). | |

SetVarBranch | Gecode::SET_VAR_MERIT_MIN (SetBranchMerit bm, BranchTbl tbl=nullptr) |

Select variable with least merit according to branch merit function bm. | |

SetVarBranch | Gecode::SET_VAR_MERIT_MAX (SetBranchMerit bm, BranchTbl tbl=nullptr) |

Select variable with highest merit according to branch merit function bm. | |

SetVarBranch | Gecode::SET_VAR_DEGREE_MIN (BranchTbl tbl=nullptr) |

Select variable with smallest degree. | |

SetVarBranch | Gecode::SET_VAR_DEGREE_MAX (BranchTbl tbl=nullptr) |

Select variable with largest degree. | |

SetVarBranch | Gecode::SET_VAR_AFC_MIN (double d=1.0, BranchTbl tbl=nullptr) |

Select variable with smallest accumulated failure count with decay factor d. | |

SetVarBranch | Gecode::SET_VAR_AFC_MIN (SetAFC a, BranchTbl tbl=nullptr) |

Select variable with smallest accumulated failure count. | |

SetVarBranch | Gecode::SET_VAR_AFC_MAX (double d=1.0, BranchTbl tbl=nullptr) |

Select variable with largest accumulated failure count with decay factor d. | |

SetVarBranch | Gecode::SET_VAR_AFC_MAX (SetAFC a, BranchTbl tbl=nullptr) |

Select variable with largest accumulated failure count. | |

SetVarBranch | Gecode::SET_VAR_ACTION_MIN (double d=1.0, BranchTbl tbl=nullptr) |

Select variable with lowest action with decay factor d. | |

SetVarBranch | Gecode::SET_VAR_ACTION_MIN (SetAction a, BranchTbl tbl=nullptr) |

Select variable with lowest action. | |

SetVarBranch | Gecode::SET_VAR_ACTION_MAX (double d=1.0, BranchTbl tbl=nullptr) |

Select variable with highest action with decay factor d. | |

SetVarBranch | Gecode::SET_VAR_ACTION_MAX (SetAction a, BranchTbl tbl=nullptr) |

Select variable with highest action. | |

SetVarBranch | Gecode::SET_VAR_CHB_MIN (BranchTbl tbl=nullptr) |

Select variable with lowest CHB Q-score. | |

SetVarBranch | Gecode::SET_VAR_CHB_MIN (SetCHB c, BranchTbl tbl=nullptr) |

Select variable with lowest CHB Q-score. | |

SetVarBranch | Gecode::SET_VAR_CHB_MAX (BranchTbl tbl=nullptr) |

Select variable with highest CHB Q-score. | |

SetVarBranch | Gecode::SET_VAR_CHB_MAX (SetCHB c, BranchTbl tbl=nullptr) |

Select variable with highest CHB Q-score. | |

SetVarBranch | Gecode::SET_VAR_MIN_MIN (BranchTbl tbl=nullptr) |

Select variable with smallest minimum unknown element. | |

SetVarBranch | Gecode::SET_VAR_MIN_MAX (BranchTbl tbl=nullptr) |

Select variable with largest minimum unknown element. | |

SetVarBranch | Gecode::SET_VAR_MAX_MIN (BranchTbl tbl=nullptr) |

Select variable with smallest maximum unknown element. | |

SetVarBranch | Gecode::SET_VAR_MAX_MAX (BranchTbl tbl=nullptr) |

Select variable with largest maximum unknown element. | |

SetVarBranch | Gecode::SET_VAR_SIZE_MIN (BranchTbl tbl=nullptr) |

Select variable with smallest unknown set. | |

SetVarBranch | Gecode::SET_VAR_SIZE_MAX (BranchTbl tbl=nullptr) |

Select variable with largest unknown set. | |

SetVarBranch | Gecode::SET_VAR_DEGREE_SIZE_MIN (BranchTbl tbl=nullptr) |

Select variable with smallest degree divided by domain size. | |

SetVarBranch | Gecode::SET_VAR_DEGREE_SIZE_MAX (BranchTbl tbl=nullptr) |

Select variable with largest degree divided by domain size. | |

SetVarBranch | Gecode::SET_VAR_AFC_SIZE_MIN (double d=1.0, BranchTbl tbl=nullptr) |

Select variable with smallest accumulated failure count divided by domain size with decay factor d. | |

SetVarBranch | Gecode::SET_VAR_AFC_SIZE_MIN (SetAFC a, BranchTbl tbl=nullptr) |

Select variable with smallest accumulated failure count divided by domain size. | |

SetVarBranch | Gecode::SET_VAR_AFC_SIZE_MAX (double d=1.0, BranchTbl tbl=nullptr) |

Select variable with largest accumulated failure count divided by domain size with decay factor d. | |

SetVarBranch | Gecode::SET_VAR_AFC_SIZE_MAX (SetAFC a, BranchTbl tbl=nullptr) |

Select variable with largest accumulated failure count divided by domain size. | |

SetVarBranch | Gecode::SET_VAR_ACTION_SIZE_MIN (double d=1.0, BranchTbl tbl=nullptr) |

Select variable with smallest action divided by domain size with decay factor d. | |

SetVarBranch | Gecode::SET_VAR_ACTION_SIZE_MIN (SetAction a, BranchTbl tbl=nullptr) |

Select variable with smallest action divided by domain size. | |

SetVarBranch | Gecode::SET_VAR_ACTION_SIZE_MAX (double d=1.0, BranchTbl tbl=nullptr) |

Select variable with largest action divided by domain size with decay factor d. | |

SetVarBranch | Gecode::SET_VAR_ACTION_SIZE_MAX (SetAction a, BranchTbl tbl=nullptr) |

Select variable with largest action divided by domain size. | |

SetVarBranch | Gecode::SET_VAR_CHB_SIZE_MIN (BranchTbl tbl=nullptr) |

Select variable with smallest CHB Q-score divided by domain size. | |

SetVarBranch | Gecode::SET_VAR_CHB_SIZE_MIN (SetCHB c, BranchTbl tbl=nullptr) |

Select variable with smallest CHB Q-score divided by domain size. | |

SetVarBranch | Gecode::SET_VAR_CHB_SIZE_MAX (BranchTbl tbl=nullptr) |

Select variable with largest CHB Q-score divided by domain size. | |

SetVarBranch | Gecode::SET_VAR_CHB_SIZE_MAX (SetCHB c, BranchTbl tbl=nullptr) |

Select variable with largest CHB Q-score divided by domain size. | |

SetValBranch | Gecode::SET_VAL_MIN_INC (void) |

Include smallest element. | |

SetValBranch | Gecode::SET_VAL_MIN_EXC (void) |

Exclude smallest element. | |

SetValBranch | Gecode::SET_VAL_MED_INC (void) |

Include median element (rounding downwards). | |

SetValBranch | Gecode::SET_VAL_MED_EXC (void) |

Exclude median element (rounding downwards). | |

SetValBranch | Gecode::SET_VAL_MAX_INC (void) |

Include largest element. | |

SetValBranch | Gecode::SET_VAL_MAX_EXC (void) |

Exclude largest element. | |

SetValBranch | Gecode::SET_VAL_RND_INC (Rnd r) |

Include random element. | |

SetValBranch | Gecode::SET_VAL_RND_EXC (Rnd r) |

Exclude random element. | |

SetValBranch | Gecode::SET_VAL (SetBranchVal v, SetBranchCommit c=nullptr) |

Select value as defined by the value function v and commit function c. | |

SetAssign | Gecode::SET_ASSIGN_MIN_INC (void) |

Include smallest element. | |

SetAssign | Gecode::SET_ASSIGN_MIN_EXC (void) |

Exclude smallest element. | |

SetAssign | Gecode::SET_ASSIGN_MED_INC (void) |

Include median element (rounding downwards). | |

SetAssign | Gecode::SET_ASSIGN_MED_EXC (void) |

Exclude median element (rounding downwards). | |

SetAssign | Gecode::SET_ASSIGN_MAX_INC (void) |

Include largest element. | |

SetAssign | Gecode::SET_ASSIGN_MAX_EXC (void) |

Exclude largest element. | |

SetAssign | Gecode::SET_ASSIGN_RND_INC (Rnd r) |

Include random element. | |

SetAssign | Gecode::SET_ASSIGN_RND_EXC (Rnd r) |

Exclude random element. | |

SetAssign | Gecode::SET_ASSIGN (SetBranchVal v, SetBranchCommit c=nullptr) |

Select value as defined by the value function v and commit function c. | |

void | Gecode::branch (Home home, const SetVarArgs &x, SetVarBranch vars, SetValBranch vals, SetBranchFilter bf=nullptr, SetVarValPrint vvp=nullptr) |

Branch over x with variable selection vars and value selection vals. | |

void | Gecode::branch (Home home, const SetVarArgs &x, TieBreak< SetVarBranch > vars, SetValBranch vals, SetBranchFilter bf=nullptr, SetVarValPrint vvp=nullptr) |

Branch over x with tie-breaking variable selection vars and value selection vals. | |

void | Gecode::branch (Home home, SetVar x, SetValBranch vals, SetVarValPrint vvp=nullptr) |

Branch over x with value selection vals. | |

void | Gecode::assign (Home home, const SetVarArgs &x, SetAssign vals, SetBranchFilter bf=nullptr, SetVarValPrint vvp=nullptr) |

Assign all x with value selection vals. | |

void | Gecode::assign (Home home, SetVar x, SetAssign vals, SetVarValPrint vvp=nullptr) |

Assign x with value selection vals. | |

SymmetryHandle | Gecode::VariableSymmetry (const SetVarArgs &x) |

Variables in x are interchangeable. | |

SymmetryHandle | Gecode::VariableSequenceSymmetry (const SetVarArgs &x, int ss) |

Variable sequences in x of size ss are interchangeable. | |

void | Gecode::branch (Home home, const SetVarArgs &x, SetVarBranch vars, SetValBranch vals, const Symmetries &syms, SetBranchFilter bf=nullptr, SetVarValPrint vvp=nullptr) |

Branch over x with variable selection vars and value selection vals with symmetry breaking. | |

void | Gecode::branch (Home home, const SetVarArgs &x, TieBreak< SetVarBranch > vars, SetValBranch vals, const Symmetries &syms, SetBranchFilter bf=nullptr, SetVarValPrint vvp=nullptr) |

Branch over x with tie-breaking variable selection vars and value selection vals with symmetry breaking. | |

void | Gecode::relax (Home home, const SetVarArgs &x, const SetVarArgs &sx, Rnd r, double p) |

void | Gecode::trace (Home home, const SetVarArgs &x, TraceFilter tf, int te=(TE_INIT|TE_PRUNE|TE_FIX|TE_FAIL|TE_DONE), SetTracer &t=StdSetTracer::def) |

Create a tracer for set variables. | |

void | Gecode::trace (Home home, const SetVarArgs &x, int te=(TE_INIT|TE_PRUNE|TE_FIX|TE_FAIL|TE_DONE), SetTracer &t=StdSetTracer::def) |

Create a tracer for set variables. | |

## Variables | |

const int | Gecode::Set::Limits::max = (Gecode::Int::Limits::max / 2) - 1 |

Largest allowed integer in integer set. | |

const int | Gecode::Set::Limits::min = -max |

Smallest allowed integer in integer set. | |

const unsigned int | Gecode::Set::Limits::card = max-min+1 |

Maximum cardinality of an integer set. |