MaximalRuleApplication

foresight.eqsat.saturation.MaximalRuleApplication
See theMaximalRuleApplication companion class

Factory methods for constructing MaximalRuleApplication strategies.

These overloads simplify creation of maximal application strategies by configuring default search behavior without caching.

Attributes

Companion
class
Graph
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Self type

Members list

Type members

Inherited and Abstract types

type MirroredElemLabels <: Tuple

The names of the product elements

The names of the product elements

Attributes

Inherited from:
Mirror
type MirroredLabel <: String

The name of the type

The name of the type

Attributes

Inherited from:
Mirror

Value members

Concrete methods

def apply[NodeT, EGraphT <: EGraphLike[NodeT, LazyRef(...)] & EGraph[NodeT], MatchT](rules: Seq[Rule[NodeT, MatchT, EGraphT]]): MaximalRuleApplication[NodeT, Rule[NodeT, MatchT, EGraphT], EGraphT, MatchT]

Creates a MaximalRuleApplication strategy that applies all matches of all rules in a single iteration, without caching.

Creates a MaximalRuleApplication strategy that applies all matches of all rules in a single iteration, without caching.

This variant does not perform saturation to a fixpoint on its own. To run to convergence, wrap it with Strategy.repeatUntilStable.

Value parameters

rules

The rules to apply.

Attributes

Example
val strategy =
 MaximalRuleApplication(rules)
   .repeatUntilStable
val finalGraph = strategy.run(initialEGraph)