Creates a strategy that repeatedly applies iterations of this strategy until a fixpoint is reached. The data carried by the strategy is initialized at the start of the repetition, carried forward through each iteration, and dropped at the end of the repetition.
Creates a strategy that repeatedly applies iterations of this strategy until a fixpoint is reached. The data carried by the strategy is initialized at the start of the repetition, carried forward through each iteration, and dropped at the end of the repetition.
Attributes
Returns
A new strategy that applies this strategy until a fixpoint is reached.
Creates a strategy that repeatedly applies iterations of this strategy until a fixpoint is reached. State is carried forward from one iteration to the next, allowing the strategy to accumulate changes from one repetition to the next.
Creates a strategy that repeatedly applies iterations of this strategy until a fixpoint is reached. State is carried forward from one iteration to the next, allowing the strategy to accumulate changes from one repetition to the next.
Attributes
Returns
A new strategy that applies this strategy until a fixpoint is reached.
Chains another strategy to this strategy. The resulting strategy applies this strategy first, and then applies the other strategy to the result of this strategy.
Chains another strategy to this strategy. The resulting strategy applies this strategy first, and then applies the other strategy to the result of this strategy.
Type parameters
Data2
The type of the data carried by the other strategy.
Value parameters
other
The other strategy to chain with this strategy.
Attributes
Returns
A new strategy that applies this strategy followed by the other strategy.
Wraps this strategy with a logger that observes and logs changes to the e-graph after each iteration.
Wraps this strategy with a logger that observes and logs changes to the e-graph after each iteration.
This is useful for debugging or analysis purposes, as it provides visibility into the differences between successive versions of the e-graph produced by the strategy. If the strategy does not modify the e-graph during an iteration, the logger is not invoked.
Value parameters
logChange
A function that takes the previous and updated e-graphs and performs logging or inspection.
Attributes
Returns
A new strategy that behaves identically to this one, but logs changes whenever they occur.
Creates a strategy that runs this strategy with an optional limit on the number of iterations.
Creates a strategy that runs this strategy with an optional limit on the number of iterations.
Value parameters
limit
An optional limit on the number of iterations. If the limit is defined, the strategy will run with the specified limit. If the limit is not defined, the strategy will run without a limit.
Attributes
Returns
A new strategy that applies this strategy with an optional limit on the number of iterations.
Creates a strategy that places a limit on the number of iterations. The limit is the maximum number of iterations that the strategy will run. Once the limit is reached, additional applications of the strategy will make no further changes to the e-graph.
Creates a strategy that places a limit on the number of iterations. The limit is the maximum number of iterations that the strategy will run. Once the limit is reached, additional applications of the strategy will make no further changes to the e-graph.
Value parameters
limit
The maximum number of iterations to run the strategy. If the limit is zero, the strategy will never change the e-graph.
Attributes
Returns
A new strategy that applies this strategy with a limit on the number of iterations.
final def withTimeout(timeout: Option[Duration]): Strategy[NodeT, EGraphT, ((Data, Option[Tree[NodeT]]), Duration)]
Creates a strategy that runs this strategy with an optional timeout.
Creates a strategy that runs this strategy with an optional timeout.
Value parameters
timeout
An optional timeout for the strategy. If the timeout is defined, the strategy will run with the specified timeout. If the timeout is not defined, the strategy will run without a timeout.
Attributes
Returns
A new strategy that applies this strategy with an optional timeout.
final def withTimeout(timeout: Duration): Strategy[NodeT, EGraphT, ((Data, Option[Tree[NodeT]]), Duration)]
Creates a strategy that runs this strategy with a timeout.
Creates a strategy that runs this strategy with a timeout.
Value parameters
timeout
The timeout for the strategy. If the strategy does not complete within the timeout, it is canceled. The timeout is a time budget that is shared across all iterations of the strategy.
Attributes
Returns
A new strategy that applies this strategy with a timeout.