Repository navigation
refactor(Complexity/FineGrained): derive single-machine decision results from their computation counterparts - #4841
Conversation
…ctionRates Move ComputableInTimeO/ExpTime/SubexpTime and their FTIME, decision and reduction-transfer lemmas verbatim from CountingExponents into a new FineGrained/FunctionRates module. CountingExponents re-exports it, and Randomized imports FunctionRates and Exponents instead of the #k-SAT module. Part of #4737
…in Bounds Add exponential-times-polynomial envelope lemmas (one_le_two_rpow_mul_pow, two_rpow_mul_pow_le_two_rpow_mul_pow, pow_le_two_rpow_mul_pow, two_rpow_mul_pow_le_natCeil_mul_add, le_two_mul_mul_of_le_mul_add) and the subexponential rescaling step natCast_mul_div_add_one_le to FineGrained/Bounds, and use them for the TimeO/ExpTime/SubexpTime monotonicity, intersection, if-then-else and measure-change transfers in FineGrained, FunctionRates, Exponents, CountingExponents and Randomized. Also folds in the #4747 review nits: drop CountingExponents' unused Nat.Power and ResourceFacts imports, and list FunctionRates among RatesNativeEndpoint's classical modules. Part of #4737.
…ed-rates-bounds # Conflicts: # CslibFrontier/Computability/Complexity/FineGrained/FunctionRates.lean # manual/machines-and-classes/native-counting.md
…with the Bounds envelope lemmas Add two_rpow_mul_pow_le_natCeil_mul_add_of_le and use the envelope lemmas in SingleSubexp (subexp transfer, machine characterisations, mono_measure, ite_polyTime, polyBounded decision, SharpKSAT_length_of_numVars).
…ction, Sparsification, ExhaustiveSearch and Randomized Use two_rpow_mul_pow_le_natCeil_mul_add, two_rpow_le_two_rpow_mul_of_le_mul_add and natCast_mul_div_add_one_le for the remaining inline copies; list two_rpow_le_two_rpow_mul_of_le_mul_add in the Bounds main results.
…bounds across exponent towers Prove ComputableInTimeO.ite_polyTime_of_le and DecidableInTimeO.of_computableInTimeO_polyBounded once for an arbitrary nonnegative exponent x, and derive the ExpTime and single-machine subexponential versions (ite_polyTime, of_*_polyBounded, SharpKSAT_length_of_numVars) from them. Add ite_all_length_le_SharpKSAT for the #k-SAT width guard. Shorten the CountingEndpoint interpolationScale bridges with the Bounds absorption lemma and derive exists_two_pow_mul_interpolationScale_le from exists_two_pow_le_of_isLittleO. Part of #4737.
…ed-rates-bounds # Conflicts: # CslibFrontier/Computability/Complexity/FineGrained/CountingExponents.lean # CslibFrontier/Computability/Complexity/FineGrained/Exponents.lean
…finegrained-rates-absorb
…lts from their computation counterparts Add decidableInSingleSubexpTime_iff_exists_computableInSingleSubexpTime (decision as single-machine computation of a Boolean indicator) and derive decidableInSingleSubexpTime_iff_exists_machine, DecidableInSingleSubexpTime.mono_measure, .of_reduction and .of_uniformFamily from their ComputableInSingleSubexpTime counterparts. This removes the duplicated quantifier-exchange proof that proof_copies flagged (survey item F2(b), #4737). decidableInTimeO_iff_exists_computableInTimeO moves from the Type section to the Type* FunctionBounds section of FunctionRates (its statement is unchanged apart from the universe generalization) so the SingleBounds lemmas can use it. No existing statement changes.
…ed-rates-absorb # Conflicts: # CslibFrontier/Computability/Complexity/FineGrained/CountingExponents.lean # CslibFrontier/Computability/Complexity/FineGrained/FunctionRates.lean # CslibFrontier/Computability/Complexity/FineGrained/SingleSubexp.lean
…finegrained-single-machine
…ed-single-machine
|
Landed: reviewed head Independent non-author review by The new equivalence reuses the existing exact-clock Boolean-indicator bridge. It preserves the fixed scale and polynomial degree, input encoding, Both manuals need no edit: the Operator's Manual's Remaining holds: inspect all six Lean gates, tidy/registry/changed-file checks, complete parallel-definition, duplicate-statement and repeated-proof-block notices (including both sides of any candidates and coverage limits), tested source identity, and the Guide/manual build selection in Lean CI and Guide. These were still building at this handoff. No queue command has been started. This is agent review, not human approval. Coordinator completion ( |
|
Agent review (Jetski reviewer session 0eb2b4ba) of c820ae2: approve This is agent review, not human review.
Non-blocking:
|
The single-machine
Decidable…results inSingleSubexpnow follow from theirComputable…counterparts instead of repeating them. This is survey item F2(b) of #4737, the last repeated proof blockproof_copiesreported in the fine-grained rates files.A new lemma,
decidableInSingleSubexpTime_iff_exists_computableInSingleSubexpTime, states single-machine subexponential decision as single-machine computation of a Boolean indicator, in the same way thatdecidableInTimeO_iff_exists_computableInTimeOdoes forTimeO. Four lemmas are now short corollaries:decidableInSingleSubexpTime_iff_exists_machine, which repeated the 16-line quantifier-exchange proof ofcomputableInSingleSubexpTime_iff_exists_machine;DecidableInSingleSubexpTime.mono_measure;DecidableInSingleSubexpTime.of_reduction;DecidableInSingleSubexpTime.of_uniformFamily.The last two used to unpack and repack the five-component witness by hand.
decidableInTimeO_iff_exists_computableInTimeOmoves fromFunctionRates'Typesection into itsType*FunctionBoundssection, so theType*SingleBoundslemmas can use it. Only its universe is generalized.Part of #4737.
No existing statement changes, apart from that generalization. Net −6 lines. Progress here is infrastructure and refactoring only, with no new mathematics.
Manuals. No edit is needed.
native-counting.mdnames the two_iff_exists_machinecharacterizations, which keep their statements. The new indicator lemma is a routine bridge, and the module docstring lists it.Validation.
scripts/check.sh --quickagainstmain3611ca7 (after #4793) passed: 9 affected targets includingGapETH,Randomized,RatesNativeEndpointand theFineGrainedRatestest, plus hygiene, both ratchets, lint andmk_all --check. Before that merge, buildslotlake build --wfailpassed onFunctionRates,SingleSubexp,CountingExponents,Randomized,RatesNativeEndpoint,CountingEndpointandCslibFrontierTests.FineGrainedRates.lint-style,check_hygiene --check-simp, the encoding-readability and projection-chain ratchets andcheck_operator_manual.pyall pass.proof_copies --base origin/mainreports no repeated block. Hosted CI does the full run.AI disclosure: written by Jetski worker session 3a99a381 in the complexity-readability fleet coordinated by session 33f8b11c.