classConstrainedCompletion
final class ConstrainedCompletion
Finds the cheapest completion respecting occurrence-specific patterns and pending siblings. Unconstrained grammar costs are an admissible lower bound, never a claimed constrained minimum.
Methods§
public function __construct(Grammar $grammar, private CompletionCosts $costs)Reuses the grammar's unconstrained fixed point for pruning completed constraint prefixes.
Parameters
$grammar | Grammar | |
$costs | CompletionCosts |
Test cases 15
ConstrainedCompletionTest::testCompleteCachesNormalizedPendingFormsWithoutLosingAlreadyEmittedOutputcoversConstrainedCompletionTest::testMinimumCountsOnlyTheUnconsumedPatternSuffixcoversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#0coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#1coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#2coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#3coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#4coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#5coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#6coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#7coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#8coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#9coversConstrainedCompletionTest::testSearchRetainsAFirstWitnessAsFeasibilityInsteadOfAMinimumProofcoversConstrainedCompletionTest::testWithinRejectsARequiredOutputThatIndependentEmptySubtreesCannotSupplycoversConstrainedCompletionTest::testWitnessCachesOnlyTheChosenSuffixAndKeepsMinimumQueriesIndependentcovers
Calls 5
public function minimum(
list<Symbol> $symbols,
GenerationPlan<bool> $plan,
array<string, int> $occurrences,
bool $nonEmpty,
int $budget,
): intFinds the exact constrained minimum before a plan compiler draws its expansion budget.
Parameters
$symbols | list<Symbol> | |
$plan | GenerationPlan<bool> | |
$occurrences | array<string, int> | |
$nonEmpty | bool | |
$budget | int |
Returns
intTest cases 13
ConstrainedCompletionTest::testMinimumCountsOnlyTheUnconsumedPatternSuffixcovers and callsConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraintscallsConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#0coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#1coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#2coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#3coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#4coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#5coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#6coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#7coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#8coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#9coversConstrainedCompletionTest::testWitnessCachesOnlyTheChosenSuffixAndKeepsMinimumQueriesIndependentcovers and calls
Called from 1
Calls 1
- method-call ConstrainedCompletion::complete() line 42
public function within(
list<Symbol> $symbols,
GenerationPlan<bool> $plan,
array<string, int> $occurrences,
bool $nonEmpty,
int $budget,
): boolStops at the first affordable witness when derivation only needs feasibility, not another shortest proof.
Parameters
$symbols | list<Symbol> | |
$plan | GenerationPlan<bool> | |
$occurrences | array<string, int> | |
$nonEmpty | bool | |
$budget | int |
Returns
boolTest cases 1
Called from 1
Calls 1
- method-call ConstrainedCompletion::complete() line 53
public function complete(
list<Symbol> $symbols,
GenerationPlan<bool> $plan,
array<string, int> $occurrences,
bool $nonEmpty,
int $budget,
bool $minimum,
): intReuses completion proofs for equivalent pending forms and pattern counters.
Parameters
$symbols | list<Symbol> | |
$plan | GenerationPlan<bool> | |
$occurrences | array<string, int> | |
$nonEmpty | bool | |
$budget | int | |
$minimum | bool |
Returns
intTest cases 14
ConstrainedCompletionTest::testCompleteCachesNormalizedPendingFormsWithoutLosingAlreadyEmittedOutputcovers and callsConstrainedCompletionTest::testMinimumCountsOnlyTheUnconsumedPatternSuffixcoversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#0coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#1coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#2coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#3coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#4coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#5coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#6coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#7coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#8coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#9coversConstrainedCompletionTest::testWithinRejectsARequiredOutputThatIndependentEmptySubtreesCannotSupplycoversConstrainedCompletionTest::testWitnessCachesOnlyTheChosenSuffixAndKeepsMinimumQueriesIndependentcovers and calls
Called from 2
Calls 10
- method-call CompletionCosts::hasTerminalOutput() line 64
- function-call
array_valuesline 65 - function-call
array_filterline 65 - method-call CompletionState::key() line 66
- new CompletionState line 66
- method-call GenerationPlan::patternState() line 66
- method-call CompletionMemo::recall() line 67
- method-call CompletionWitness::complete() line 71
- method-call ConstrainedCompletion::search() line 72
- method-call CompletionMemo::remember() line 73
public function search(
list<Symbol> $symbols,
GenerationPlan<bool> $plan,
array<string, int> $occurrences,
bool $nonEmpty,
int $budget,
bool $minimum,
): intSearches finite frontiers within the caller's expansion budget, without generating or retrying SQL.
Parameters
$symbols | list<Symbol> | |
$plan | GenerationPlan<bool> | |
$occurrences | array<string, int> | |
$nonEmpty | bool | |
$budget | int | |
$minimum | bool |
Returns
intTest cases 15
ConstrainedCompletionTest::testCompleteCachesNormalizedPendingFormsWithoutLosingAlreadyEmittedOutputcoversConstrainedCompletionTest::testMinimumCountsOnlyTheUnconsumedPatternSuffixcoversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#0coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#1coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#2coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#3coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#4coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#5coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#6coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#7coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#8coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#9coversConstrainedCompletionTest::testSearchRetainsAFirstWitnessAsFeasibilityInsteadOfAMinimumProofcovers and callsConstrainedCompletionTest::testWithinRejectsARequiredOutputThatIndependentEmptySubtreesCannotSupplycoversConstrainedCompletionTest::testWitnessCachesOnlyTheChosenSuffixAndKeepsMinimumQueriesIndependentcovers
Called from 1
Calls 14
- method-call GenerationPlan::hasRemainingPatterns() line 85
- method-call CompletionCosts::completion() line 86
- new Production line 86
- new CompletionFrontier line 88
- method-call CompletionFrontier::offer() line 89
- method-call GenerationPlan::patternState() line 89
- method-call CompletionFrontier::take() line 90
- method-call ConstrainedCompletion::witness() line 92
- static-call CompletionCosts::add() line 96
- method-call CompletionMemo::recall() line 98
- method-call CompletionReduction::reduce() line 105
- method-call GenerationPlan::patternAt() line 110
- method-call PatternProductions::matching() line 112
- function-call
array_sliceline 113
public function witness(
CompletionState $state,
GenerationPlan<bool> $plan,
int $total,
int $budget,
): intShares each suffix of the actual successful path, not unrelated visited branches or a sampled impossibility claim.
Parameters
$state | CompletionState | |
$plan | GenerationPlan<bool> | |
$total | int | |
$budget | int |
Returns
intTest cases 6
ConstrainedCompletionTest::testMinimumCountsOnlyTheUnconsumedPatternSuffixcoversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#2coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#4coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#7coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#9coversConstrainedCompletionTest::testWitnessCachesOnlyTheChosenSuffixAndKeepsMinimumQueriesIndependentcovers and calls
Called from 2
Calls 2
- method-call CompletionMemo::remember() line 126
- method-call CompletionState::key() line 126
Private surface 5§
Implementation details, listed for orientation only.
private CompletionReduction $reductionprivate CompletionMemo $memoprivate CompletionWitness $witnessprivate PatternProductions $productionsprivate CompletionCosts $costsTest cases 35§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 16
ConstrainedCompletionTest::testCompleteCachesNormalizedPendingFormsWithoutLosingAlreadyEmittedOutputcovers and callsConstrainedCompletionTest::testMinimumCountsOnlyTheUnconsumedPatternSuffixcovers and callsConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraintscallsConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#0coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#1coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#2coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#3coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#4coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#5coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#6coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#7coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#8coversConstrainedCompletionTest::testMinimumIncludesDescendantsSiblingsAndRecursiveOccurrenceConstraints#9coversConstrainedCompletionTest::testSearchRetainsAFirstWitnessAsFeasibilityInsteadOfAMinimumProofcovers and callsConstrainedCompletionTest::testWithinRejectsARequiredOutputThatIndependentEmptySubtreesCannotSupplycovers and callsConstrainedCompletionTest::testWitnessCachesOnlyTheChosenSuffixAndKeepsMinimumQueriesIndependentcovers and calls
Other tests reaching this symbol 19
BytePlanCompilerTestcallsPlanBuilderTestcallsCompletionMemoTestcallsCompletionReductionTestcallsConstraintDependenciesTestcallsDerivationTestcallsDerivationTraceTestcallsTokenGeneratorTestcallsLexemeSequenceTestcallsCandidateResolverTestcallsSqlGeneratorTestcallsTerminalSequenceTestcallsGenerationContextTestcallsMySqlProviderTestcallsGenerationContextTestcallsPostgreSqlProviderTestcallsSqlGeneratorFactoryTestcallsGenerationContextTestcallsSqliteProviderTestcalls