# Package org.eclipse.viatra.query.runtime.matchers.psystem.rewriters

- Interface Summary
  Interface | Description
  --- | ---
  IConstraintFilter | Helper interface to exclude constraints from PBody copy processes
  IDerivativeModificationReason | This is a role indication interface, implementations may provide a reason about why a modification is made during PQuery normalization.
  IFlattenCallPredicate | Interface used by the PQueryFlattener to decide which positive pattern calls to flatten
  IPTraceableTraceProvider | This interface provides methods to trace the `PTraceable`s of a transformed `PQuery` produced by a `PDisjunctionRewriter`.
  IRewriterTraceCollector | This is the internal API of `IPTraceableTraceProvider` expected to be used by copier and rewriter implementations.
  IVariableRenamer | Helper interface to ease the naming of the new variables during flattening

- Class Summary
  Class | Description
  --- | ---
  AbstractRewriterTraceSource |
  DefaultFlattenCallPredicate |
  IConstraintFilter.AllowAllFilter |
  IConstraintFilter.ExportedParameterFilter |
  IFlattenCallPredicate.And | Flattens only if all operand predicates vote for flattening.
  IVariableRenamer.HierarchicalName |
  IVariableRenamer.SameName |
  MappingTraceCollector | Multimap-based implementation to contain and query traces
  NeverFlattenCallPredicate |
  NopTraceCollector | This implementation does not store any traces and scales to NOP for every traceability feature.
  PBodyCopier | This class can create a new PBody for a PQuery.
  PBodyNormalizer | A disjunction rewriter for creating a normalized form of specification, unifying variables and running basic sanity checks.
  PDisjunctionRewriter | An abstract base class for creating alternative representations for PDisjunctions.
  PDisjunctionRewriterCacher | A rewriter that stores the previously computed results of a rewriter or a rewriter chain.
  PQueryFlattener | This rewriter class holds the query flattening logic
  SurrogateQueryRewriter |

- Enum Summary
  Enum | Description
  --- | ---
  ConstraintRemovalReason | Common reasons for removing constraint through rewriters

- Exception Summary
  Exception | Description
  --- | ---
  RewriterException | An exception to wrap various issues during PDisjunction rewriting.