//===- PresburgerRelation.h - MLIR PresburgerRelation Class -----*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // A class to represent unions of IntegerRelations. // //===----------------------------------------------------------------------===// #ifndef MLIR_ANALYSIS_PRESBURGER_PRESBURGERRELATION_H #define MLIR_ANALYSIS_PRESBURGER_PRESBURGERRELATION_H #include "mlir/Analysis/Presburger/IntegerRelation.h" #include <optional> namespace mlir { namespace presburger { /// The SetCoalescer class contains all functionality concerning the coalesce /// heuristic. It is built from a `PresburgerRelation` and has the `coalesce()` /// function as its main API. class SetCoalescer; /// 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. class PresburgerRelation { … }; class PresburgerSet : public PresburgerRelation { … }; } // namespace presburger } // namespace mlir #endif // MLIR_ANALYSIS_PRESBURGER_PRESBURGERRELATION_H