AngouriMath
Run(AngouriMath.Core.Transformations.EGraph,System.Collections.Generic.IReadOnlyList{AngouriMath.Core.Transformations.Matching.MatchedRule},AngouriMath.Core.Budgets.BudgetLedger,System.Func{AngouriMath.Entity,System.Double},System.Func{System.Boolean})
Method (no overloads)
Summary
Merges into graph every equality rules reach from
what it already holds, until a pass changes nothing orledger stops
it. Answers whether it reached that fixed point rather than the ceiling.
what it already holds, until a pass changes nothing or
it. Answers whether it reached that fixed point rather than the ceiling.
Parameter "graph"
The graph to saturate, in place.
Parameter "rules"
Which rules to fire; see RulesUpTo(AngouriMath.Core.Transformations.RewriteRuleGrowth).
Parameter "ledger"
What bounds the work, and what records how much was done.
Parameter "witnessCost"
How a representative is chosen when one is needed — for a rule whose left-hand side
cannot e-match, which has to be shown a term, and for a rule'swhen predicate,
which is arbitrary code that has to be asked about something. It ranks a
witness, never the answer: what the caller finally extracts is the caller's own
business, and is where a cheapest-form and a canonical-form caller differ.
cannot e-match, which has to be shown a term, and for a rule's
which is arbitrary code that has to be asked about something. It ranks a
witness, never the answer: what the caller finally extracts is the caller's own
business, and is where a cheapest-form and a canonical-form caller differ.
Parameter "settled"
A caller's own stop, asked after every pass that merged something; true ends the run without the graph's fixed point having been reached. A caller that
extracts an answer passes "the extraction has not changed for two passes": that is
the fixed point which matters to it, and it comes where the graph's own may never —
on a rational coefficient beside a variable, the regrouping rules add a fresh e-node
to the root's class on every pass while its cheapest member stopped changing on the
third (#1200).
ProvesEqual(AngouriMath.Entity,AngouriMath.Entity,System.Collections.Generic.IReadOnlyList{AngouriMath.Core.Transformations.Matching.MatchedRule},AngouriMath.Core.Budgets.WorkBudget) passes nothing: it needs a union, not an extraction.
extracts an answer passes "the extraction has not changed for two passes": that is
the fixed point which matters to it, and it comes where the graph's own may never —
on a rational coefficient beside a variable, the regrouping rules add a fresh e-node
to the root's class on every pass while its cheapest member stopped changing on the
third (#1200).
ProvesEqual(AngouriMath.Entity,AngouriMath.Entity,System.Collections.Generic.IReadOnlyList{AngouriMath.Core.Transformations.Matching.MatchedRule},AngouriMath.Core.Budgets.WorkBudget) passes nothing: it needs a union, not an extraction.
Angouri © 2019-2023 · Project's repo · Site's repo · Octicons · Transparency · 4378 pages online