MLIR  19.0.0git
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
mlir::presburger::PresburgerRelation Class Reference

A PresburgerRelation represents a union of IntegerRelations that live in the same PresburgerSpace with support for union, intersection, subtraction, and complement operations, as well as sampling. More...

#include "mlir/Analysis/Presburger/PresburgerRelation.h"

+ Inheritance diagram for mlir::presburger::PresburgerRelation:

Public Member Functions

 PresburgerRelation (const IntegerRelation &disjunct)
 
unsigned getNumDomainVars () const
 
unsigned getNumRangeVars () const
 
unsigned getNumSymbolVars () const
 
unsigned getNumLocalVars () const
 
unsigned getNumVars () const
 
unsigned getNumDisjuncts () const
 Return the number of disjuncts in the union. More...
 
const PresburgerSpacegetSpace () const
 
void setSpace (const PresburgerSpace &oSpace)
 Set the space to oSpace. More...
 
void insertVarInPlace (VarKind kind, unsigned pos, unsigned num=1)
 
void convertVarKind (VarKind srcKind, unsigned srcPos, unsigned num, VarKind dstKind, unsigned dstPos)
 Converts variables of the specified kind in the column range [srcPos, srcPos + num) to variables of the specified kind at position dstPos. More...
 
ArrayRef< IntegerRelationgetAllDisjuncts () const
 Return a reference to the list of disjuncts. More...
 
const IntegerRelationgetDisjunct (unsigned index) const
 Return the disjunct at the specified index. More...
 
void unionInPlace (const IntegerRelation &disjunct)
 Mutate this set, turning it into the union of this set and the given disjunct. More...
 
void unionInPlace (const PresburgerRelation &set)
 Mutate this set, turning it into the union of this set and the given set. More...
 
PresburgerRelation unionSet (const PresburgerRelation &set) const
 Return the union of this set and the given set. More...
 
PresburgerRelation intersect (const PresburgerRelation &set) const
 Return the intersection of this set and the given set. More...
 
PresburgerRelation intersectRange (const PresburgerSet &set) const
 Return the range intersection of the given set with this relation. More...
 
PresburgerRelation intersectDomain (const PresburgerSet &set) const
 Return the domain intersection of the given set with this relation. More...
 
PresburgerSet getDomainSet () const
 Return a set corresponding to the domain of the relation. More...
 
PresburgerSet getRangeSet () const
 Return a set corresponding to the range of the relation. More...
 
void inverse ()
 Invert the relation, i.e. More...
 
void compose (const PresburgerRelation &rel)
 Compose this relation with the given relation rel in-place. More...
 
void applyDomain (const PresburgerRelation &rel)
 Apply the domain of given relation rel to this relation. More...
 
void applyRange (const PresburgerRelation &rel)
 Same as compose, provided for uniformity with applyDomain. More...
 
SymbolicLexOpt findSymbolicIntegerLexMin () const
 Compute the symbolic integer lexmin of the relation, i.e. More...
 
SymbolicLexOpt findSymbolicIntegerLexMax () const
 Compute the symbolic integer lexmax of the relation, i.e. More...
 
bool containsPoint (ArrayRef< MPInt > point) const
 Return true if the set contains the given point, and false otherwise. More...
 
bool containsPoint (ArrayRef< int64_t > point) const
 
PresburgerRelation complement () const
 Return the complement of this set. More...
 
PresburgerRelation subtract (const PresburgerRelation &set) const
 Return the set difference of this set and the given set, i.e., return this \ set. More...
 
bool isSubsetOf (const PresburgerRelation &set) const
 Return true if this set is a subset of the given set, and false otherwise. More...
 
bool isEqual (const PresburgerRelation &set) const
 Return true if this set is equal to the given set, and false otherwise. More...
 
bool isIntegerEmpty () const
 Return true if all the sets in the union are known to be integer empty false otherwise. More...
 
bool isObviouslyEmpty () const
 Return true if there is no disjunct, false otherwise. More...
 
bool isObviouslyUniverse () const
 Return true if the set is known to have one unconstrained disjunct, false otherwise. More...
 
bool isObviouslyEqual (const PresburgerRelation &set) const
 Perform a quick equality check on this and other. More...
 
bool isConvexNoLocals () const
 Return true if the set is consist of a single disjunct, without any local variables, false otherwise. More...
 
bool findIntegerSample (SmallVectorImpl< MPInt > &sample)
 Find an integer sample from the given set. More...
 
std::optional< MPIntcomputeVolume () const
 Compute an overapproximation of the number of integer points in the disjunct. More...
 
PresburgerRelation coalesce () const
 Simplifies the representation of a PresburgerRelation. More...
 
bool hasOnlyDivLocals () const
 Check whether all local ids in all disjuncts have a div representation. More...
 
PresburgerRelation computeReprWithOnlyDivLocals () const
 Compute an equivalent representation of the same relation, such that all local ids in all disjuncts have division representations. More...
 
PresburgerRelation simplify () const
 Simplify each disjunct, canonicalizing each disjunct and removing redundencies. More...
 
bool isFullDim () const
 Return whether the given PresburgerRelation is full-dimensional. More...
 
void print (raw_ostream &os) const
 Print the set's internal state. More...
 
void dump () const
 

Static Public Member Functions

static PresburgerRelation getUniverse (const PresburgerSpace &space)
 Return a universe set of the specified type that contains all points. More...
 
static PresburgerRelation getEmpty (const PresburgerSpace &space)
 Return an empty set of the specified type that contains no points. More...
 

Protected Member Functions

 PresburgerRelation (const PresburgerSpace &space)
 Construct an empty PresburgerRelation with the specified number of dimension and symbols. More...
 

Protected Attributes

PresburgerSpace space
 
SmallVector< IntegerRelation, 2 > disjuncts
 The list of disjuncts that this set is the union of. More...
 

Friends

class SetCoalescer
 

Detailed Description

A PresburgerRelation represents a union of IntegerRelations that live in the same PresburgerSpace with support for union, intersection, subtraction, and complement operations, as well as sampling.

The IntegerRelations (disjuncts) are stored in a vector, and the set represents the union of these relations. An empty list corresponds to the empty set.

Note that there are no invariants guaranteed on the list of disjuncts other than that they are all in the same PresburgerSpace. For example, the relations may overlap with each other.

Definition at line 38 of file PresburgerRelation.h.

Constructor & Destructor Documentation

◆ PresburgerRelation() [1/2]

PresburgerRelation::PresburgerRelation ( const IntegerRelation disjunct)
explicit

Definition at line 31 of file PresburgerRelation.cpp.

References unionInPlace().

Referenced by getEmpty(), and simplify().

◆ PresburgerRelation() [2/2]

mlir::presburger::PresburgerRelation::PresburgerRelation ( const PresburgerSpace space)
inlineexplicitprotected

Construct an empty PresburgerRelation with the specified number of dimension and symbols.

Definition at line 231 of file PresburgerRelation.h.

References mlir::presburger::PresburgerSpace::getNumLocalVars(), and space.

Member Function Documentation

◆ applyDomain()

void PresburgerRelation::applyDomain ( const PresburgerRelation rel)

Apply the domain of given relation rel to this relation.

Formally, R1.applyDomain(R2) = R2.inverse().compose(R1).

Definition at line 234 of file PresburgerRelation.cpp.

References compose(), mlir::presburger::PresburgerSpace::getDomainSpace(), getSpace(), and inverse().

◆ applyRange()

void PresburgerRelation::applyRange ( const PresburgerRelation rel)

Same as compose, provided for uniformity with applyDomain.

Definition at line 244 of file PresburgerRelation.cpp.

References compose().

◆ coalesce()

PresburgerRelation PresburgerRelation::coalesce ( ) const

Simplifies the representation of a PresburgerRelation.

In particular, removes all disjuncts which are subsets of other disjuncts in the union.

Definition at line 1023 of file PresburgerRelation.cpp.

References SetCoalescer.

Referenced by mlir::presburger::PresburgerSet::coalesce().

◆ complement()

PresburgerRelation PresburgerRelation::complement ( ) const

Return the complement of this set.

All local variables in the set must correspond to floor divisions.

Definition at line 594 of file PresburgerRelation.cpp.

References getSetDifference(), getSpace(), and mlir::presburger::IntegerRelation::getUniverse().

Referenced by mlir::presburger::PresburgerSet::complement().

◆ compose()

void PresburgerRelation::compose ( const PresburgerRelation rel)

Compose this relation with the given relation rel in-place.

Formally, if this: A -> B, and rel: B -> C, then this function updates this to result: A -> C where a point (a, c) belongs to result iff there exists b such that (a, b) is in this and, (b, c) is in rel.

Definition at line 215 of file PresburgerRelation.cpp.

References mlir::presburger::IntegerRelation::compose(), disjuncts, mlir::presburger::PresburgerSpace::getDomainSpace(), getEmpty(), getNumDomainVars(), getNumRangeVars(), getNumSymbolVars(), mlir::presburger::PresburgerSpace::getRelationSpace(), getSpace(), mlir::presburger::IntegerRelation::isEmpty(), and unionInPlace().

Referenced by applyDomain(), and applyRange().

◆ computeReprWithOnlyDivLocals()

PresburgerRelation PresburgerRelation::computeReprWithOnlyDivLocals ( ) const

Compute an equivalent representation of the same relation, such that all local ids in all disjuncts have division representations.

This representation may involve local ids that correspond to divisions, and may also be a union of convex disjuncts.

Definition at line 304 of file PresburgerRelation.cpp.

References disjuncts, getSpace(), hasOnlyDivLocals(), and unionInPlace().

Referenced by getSetDifference().

◆ computeVolume()

std::optional< MPInt > PresburgerRelation::computeVolume ( ) const

Compute an overapproximation of the number of integer points in the disjunct.

Symbol vars are currently not supported. If the computed overapproximation is infinite, an empty optional is returned.

This currently just sums up the overapproximations of the volumes of the disjuncts, so the approximation might be far from the true volume in the case when there is a lot of overlap between disjuncts.

Definition at line 685 of file PresburgerRelation.cpp.

References disjuncts, and getNumSymbolVars().

◆ containsPoint() [1/2]

bool mlir::presburger::PresburgerRelation::containsPoint ( ArrayRef< int64_t >  point) const
inline

Definition at line 146 of file PresburgerRelation.h.

References containsPoint(), and mlir::presburger::getMPIntVec().

◆ containsPoint() [2/2]

bool PresburgerRelation::containsPoint ( ArrayRef< MPInt point) const

Return true if the set contains the given point, and false otherwise.

A point is contained in the union iff any of the parts contain the point.

Definition at line 125 of file PresburgerRelation.cpp.

References mlir::presburger::IntegerRelation::containsPointNoLocal(), and disjuncts.

Referenced by containsPoint().

◆ convertVarKind()

void PresburgerRelation::convertVarKind ( VarKind  srcKind,
unsigned  srcPos,
unsigned  num,
VarKind  dstKind,
unsigned  dstPos 
)

Converts variables of the specified kind in the column range [srcPos, srcPos + num) to variables of the specified kind at position dstPos.

The ranges are relative to the kind of variable.

srcKind and dstKind must be different.

Definition at line 50 of file PresburgerRelation.cpp.

References mlir::presburger::PresburgerSpace::convertVarKind(), disjuncts, mlir::presburger::PresburgerSpace::getNumVarKind(), mlir::presburger::Local, and space.

◆ dump()

void PresburgerRelation::dump ( ) const

Definition at line 1058 of file PresburgerRelation.cpp.

References print().

◆ findIntegerSample()

bool PresburgerRelation::findIntegerSample ( SmallVectorImpl< MPInt > &  sample)

Find an integer sample from the given set.

This should not be called if any of the disjuncts in the union are unbounded.

Definition at line 673 of file PresburgerRelation.cpp.

References disjuncts.

◆ findSymbolicIntegerLexMax()

SymbolicLexOpt PresburgerRelation::findSymbolicIntegerLexMax ( ) const

Compute the symbolic integer lexmax of the relation, i.e.

for every assignment of the symbols and domain the lexicographically maximum value attained by the range.

Definition at line 271 of file PresburgerRelation.cpp.

References findSymbolicIntegerLexOpt().

◆ findSymbolicIntegerLexMin()

SymbolicLexOpt PresburgerRelation::findSymbolicIntegerLexMin ( ) const

Compute the symbolic integer lexmin of the relation, i.e.

for every assignment of the symbols and domain the lexicographically minimum value attained by the range.

Definition at line 267 of file PresburgerRelation.cpp.

References findSymbolicIntegerLexOpt().

◆ getAllDisjuncts()

ArrayRef< IntegerRelation > PresburgerRelation::getAllDisjuncts ( ) const

Return a reference to the list of disjuncts.

Definition at line 71 of file PresburgerRelation.cpp.

References disjuncts.

Referenced by findSymbolicIntegerLexOpt(), mlir::presburger::MultiAffineFunction::isEqual(), isFullDim(), and isObviouslyUniverse().

◆ getDisjunct()

const IntegerRelation & PresburgerRelation::getDisjunct ( unsigned  index) const

Return the disjunct at the specified index.

Definition at line 75 of file PresburgerRelation.cpp.

References disjuncts.

Referenced by getSetDifference(), inverse(), and isObviouslyEqual().

◆ getDomainSet()

PresburgerSet PresburgerRelation::getDomainSet ( ) const

Return a set corresponding to the domain of the relation.

Definition at line 193 of file PresburgerRelation.cpp.

References disjuncts, mlir::presburger::PresburgerSpace::getDomainSpace(), mlir::presburger::PresburgerSet::getEmpty(), space, and unionInPlace().

◆ getEmpty()

PresburgerRelation PresburgerRelation::getEmpty ( const PresburgerSpace space)
static

Return an empty set of the specified type that contains no points.

Definition at line 138 of file PresburgerRelation.cpp.

References PresburgerRelation(), and space.

Referenced by compose(), and getSetDifference().

◆ getNumDisjuncts()

unsigned PresburgerRelation::getNumDisjuncts ( ) const

Return the number of disjuncts in the union.

Definition at line 67 of file PresburgerRelation.cpp.

References disjuncts.

Referenced by getSetDifference(), inverse(), isConvexNoLocals(), isObviouslyEmpty(), isObviouslyEqual(), print(), and mlir::presburger::SetCoalescer::SetCoalescer().

◆ getNumDomainVars()

unsigned mlir::presburger::PresburgerRelation::getNumDomainVars ( ) const
inline

Definition at line 48 of file PresburgerRelation.h.

References mlir::presburger::PresburgerSpace::getNumDomainVars(), and space.

Referenced by compose(), and intersectRange().

◆ getNumLocalVars()

unsigned mlir::presburger::PresburgerRelation::getNumLocalVars ( ) const
inline

◆ getNumRangeVars()

unsigned mlir::presburger::PresburgerRelation::getNumRangeVars ( ) const
inline

Definition at line 49 of file PresburgerRelation.h.

References mlir::presburger::PresburgerSpace::getNumRangeVars(), and space.

Referenced by compose(), and intersectDomain().

◆ getNumSymbolVars()

unsigned mlir::presburger::PresburgerRelation::getNumSymbolVars ( ) const
inline

Definition at line 50 of file PresburgerRelation.h.

References mlir::presburger::PresburgerSpace::getNumSymbolVars(), and space.

Referenced by compose(), and computeVolume().

◆ getNumVars()

unsigned mlir::presburger::PresburgerRelation::getNumVars ( ) const
inline

Definition at line 52 of file PresburgerRelation.h.

References mlir::presburger::PresburgerSpace::getNumVars(), and space.

◆ getRangeSet()

PresburgerSet PresburgerRelation::getRangeSet ( ) const

Return a set corresponding to the range of the relation.

Definition at line 200 of file PresburgerRelation.cpp.

References disjuncts, mlir::presburger::PresburgerSet::getEmpty(), mlir::presburger::PresburgerSpace::getRangeSpace(), space, and unionInPlace().

◆ getSpace()

const PresburgerSpace& mlir::presburger::PresburgerRelation::getSpace ( ) const
inline

◆ getUniverse()

PresburgerRelation PresburgerRelation::getUniverse ( const PresburgerSpace space)
static

Return a universe set of the specified type that contains all points.

Definition at line 132 of file PresburgerRelation.cpp.

References mlir::presburger::IntegerRelation::getUniverse(), space, and unionInPlace().

◆ hasOnlyDivLocals()

bool PresburgerRelation::hasOnlyDivLocals ( ) const

Check whether all local ids in all disjuncts have a div representation.

Definition at line 1027 of file PresburgerRelation.cpp.

References disjuncts, and mlir::presburger::IntegerRelation::hasOnlyDivLocals().

Referenced by computeReprWithOnlyDivLocals(), and getSetDifference().

◆ insertVarInPlace()

void PresburgerRelation::insertVarInPlace ( VarKind  kind,
unsigned  pos,
unsigned  num = 1 
)

Definition at line 43 of file PresburgerRelation.cpp.

Referenced by intersectDomain(), and intersectRange().

◆ intersect()

PresburgerRelation PresburgerRelation::intersect ( const PresburgerRelation set) const

◆ intersectDomain()

PresburgerRelation PresburgerRelation::intersectDomain ( const PresburgerSet set) const

Return the domain intersection of the given set with this relation.

Formally, let the relation this be R: A -> B and set is C, then this operation returns (A intersection C) -> B.

Definition at line 183 of file PresburgerRelation.cpp.

References mlir::presburger::Domain, mlir::presburger::PresburgerSpace::getDomainSpace(), getNumRangeVars(), getSpace(), insertVarInPlace(), intersect(), inverse(), mlir::presburger::PresburgerSpace::isCompatible(), and space.

◆ intersectRange()

PresburgerRelation PresburgerRelation::intersectRange ( const PresburgerSet set) const

Return the range intersection of the given set with this relation.

Formally, let the relation this be R: A -> B and set is C, then this operation returns A -> (B intersection C).

Definition at line 173 of file PresburgerRelation.cpp.

References mlir::presburger::Domain, getNumDomainVars(), mlir::presburger::PresburgerSpace::getRangeSpace(), getSpace(), insertVarInPlace(), intersect(), mlir::presburger::PresburgerSpace::isCompatible(), and space.

◆ inverse()

void PresburgerRelation::inverse ( )

Invert the relation, i.e.

swap its domain and range.

Formally, if this: A -> B then inverse updates this in-place to this: B -> A.

Definition at line 207 of file PresburgerRelation.cpp.

References disjuncts, getDisjunct(), getNumDisjuncts(), and setSpace().

Referenced by applyDomain(), and intersectDomain().

◆ isConvexNoLocals()

bool PresburgerRelation::isConvexNoLocals ( ) const

Return true if the set is consist of a single disjunct, without any local variables, false otherwise.

Definition at line 657 of file PresburgerRelation.cpp.

References getNumDisjuncts(), mlir::presburger::PresburgerSpace::getNumLocalVars(), and getSpace().

◆ isEqual()

bool PresburgerRelation::isEqual ( const PresburgerRelation set) const

Return true if this set is equal to the given set, and false otherwise.

Two sets are equal iff they are subsets of each other.

All local variables in both sets must correspond to floor divisions.

Definition at line 624 of file PresburgerRelation.cpp.

References getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), isSubsetOf(), and space.

Referenced by mlir::presburger::IntegerRelation::isEqual().

◆ isFullDim()

bool PresburgerRelation::isFullDim ( ) const

Return whether the given PresburgerRelation is full-dimensional.

By full- dimensional we mean that it is not flat along any dimension.

Definition at line 1044 of file PresburgerRelation.cpp.

References getAllDisjuncts(), and mlir::presburger::IntegerRelation::isFullDim().

Referenced by mlir::presburger::detail::computeChamberDecomposition().

◆ isIntegerEmpty()

bool PresburgerRelation::isIntegerEmpty ( ) const

Return true if all the sets in the union are known to be integer empty false otherwise.

Return true if all the sets in the union are known to be integer empty, false otherwise.

Definition at line 668 of file PresburgerRelation.cpp.

References disjuncts, and mlir::presburger::IntegerRelation::isIntegerEmpty().

Referenced by mlir::affine::ComputationSliceState::isMaximal(), mlir::affine::ComputationSliceState::isSliceValid(), and isSubsetOf().

◆ isObviouslyEmpty()

bool PresburgerRelation::isObviouslyEmpty ( ) const

Return true if there is no disjunct, false otherwise.

Definition at line 662 of file PresburgerRelation.cpp.

References getNumDisjuncts().

Referenced by intersect(), and unionInPlace().

◆ isObviouslyEqual()

bool PresburgerRelation::isObviouslyEqual ( const PresburgerRelation set) const

Perform a quick equality check on this and other.

The relations are equal if the check return true, but may or may not be equal if the check returns false. This is doing by directly comparing whether each internal disjunct is the same.

Definition at line 629 of file PresburgerRelation.cpp.

References getDisjunct(), getNumDisjuncts(), getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), and space.

Referenced by subtract(), and unionInPlace().

◆ isObviouslyUniverse()

bool PresburgerRelation::isObviouslyUniverse ( ) const

Return true if the set is known to have one unconstrained disjunct, false otherwise.

Return true if the Presburger relation represents the universe set, false otherwise.

It is a simple check that only check if the relation has at least one unconstrained disjunct, indicating the absence of constraints or conditions.

Definition at line 649 of file PresburgerRelation.cpp.

References getAllDisjuncts().

Referenced by intersect(), and unionInPlace().

◆ isSubsetOf()

bool PresburgerRelation::isSubsetOf ( const PresburgerRelation set) const

Return true if this set is a subset of the given set, and false otherwise.

T is a subset of S iff T \ S is empty, since if T \ S contains a point then this is a point that is contained in T but not S, and if T contains a point that is not in S, this also lies in T \ S.

Definition at line 619 of file PresburgerRelation.cpp.

References isIntegerEmpty(), and subtract().

Referenced by isEqual(), and mlir::presburger::IntegerRelation::isSubsetOf().

◆ print()

void PresburgerRelation::print ( raw_ostream &  os) const

Print the set's internal state.

Definition at line 1050 of file PresburgerRelation.cpp.

References disjuncts, getNumDisjuncts(), and mlir::presburger::IntegerRelation::print().

Referenced by dump().

◆ setSpace()

void PresburgerRelation::setSpace ( const PresburgerSpace oSpace)

Set the space to oSpace.

oSpace should not contain any local ids. oSpace need not have the same number of ids as the current space; it could have more or less. If it has less, the extra ids become locals of the disjuncts. It can also have more, in which case the disjuncts will have fewer locals. If its total number of ids exceeds that of some disjunct, an assert failure will occur.

Definition at line 36 of file PresburgerRelation.cpp.

References disjuncts, mlir::presburger::PresburgerSpace::getNumLocalVars(), and space.

Referenced by mlir::presburger::IntegerRelation::computeReprWithOnlyDivLocals(), and inverse().

◆ simplify()

PresburgerRelation PresburgerRelation::simplify ( ) const

Simplify each disjunct, canonicalizing each disjunct and removing redundencies.

Definition at line 1033 of file PresburgerRelation.cpp.

References disjuncts, getSpace(), mlir::presburger::IntegerRelation::isObviouslyEmpty(), PresburgerRelation(), mlir::presburger::IntegerRelation::simplify(), and unionInPlace().

◆ subtract()

PresburgerRelation PresburgerRelation::subtract ( const PresburgerRelation set) const

Return the set difference of this set and the given set, i.e., return this \ set.

Return the result of subtract the given set from this set, i.e., return this \ set.

All local variables in set must correspond to floor divisions, but local variables in this need not correspond to divisions.

Definition at line 601 of file PresburgerRelation.cpp.

References disjuncts, getSetDifference(), getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), isObviouslyEqual(), space, and unionInPlace().

Referenced by isSubsetOf(), mlir::presburger::IntegerRelation::subtract(), and mlir::presburger::PresburgerSet::subtract().

◆ unionInPlace() [1/2]

void PresburgerRelation::unionInPlace ( const IntegerRelation disjunct)

◆ unionInPlace() [2/2]

void PresburgerRelation::unionInPlace ( const PresburgerRelation set)

Mutate this set, turning it into the union of this set and the given set.

This is accomplished by simply adding all the disjuncts of the given set to this set.

Definition at line 91 of file PresburgerRelation.cpp.

References disjuncts, getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), isObviouslyEmpty(), isObviouslyEqual(), isObviouslyUniverse(), space, and unionInPlace().

◆ unionSet()

PresburgerRelation PresburgerRelation::unionSet ( const PresburgerRelation set) const

Return the union of this set and the given set.

Definition at line 117 of file PresburgerRelation.cpp.

References getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), space, and unionInPlace().

Referenced by mlir::presburger::PresburgerSet::unionSet().

Friends And Related Function Documentation

◆ SetCoalescer

friend class SetCoalescer
friend

Definition at line 241 of file PresburgerRelation.h.

Referenced by coalesce().

Member Data Documentation

◆ disjuncts

SmallVector<IntegerRelation, 2> mlir::presburger::PresburgerRelation::disjuncts
protected

◆ space

PresburgerSpace mlir::presburger::PresburgerRelation::space
protected

The documentation for this class was generated from the following files: