OAI/Computability/RationalHitting/BinaryBinomial.lean
30 declarations, 0 contain sorry, 0 declared as axioms
- def
OAI.RationalHitting.StackLanguage.multiplyCleanline 9Source documentation
Clean multiplication interface used by the finite rising-product loop.
def multiplyClean : Program (Fin 8) := …
- lemma
OAI.RationalHitting.StackLanguage.eval_multiplyCleanline 12 - def
OAI.RationalHitting.StackLanguage.factorMulline 46 - def
OAI.RationalHitting.StackLanguage.factorialScratchline 48 - lemma
OAI.RationalHitting.StackLanguage.eval_factorMulline 51 - def
OAI.RationalHitting.StackLanguage.factorialBodyline 71Source documentation
One rising-product step: multiply accumulator by the copied current index, advance the binary index, and drop one symbol of the unary loop counter.
def factorialBody : Program (Fin 10) := …
- lemma
OAI.RationalHitting.StackLanguage.eval_factorialBodyline 75 - lemma
OAI.RationalHitting.StackLanguage.factorial_wordValue_bitsline 112 - def
OAI.RationalHitting.StackLanguage.factorialLoopline 119 - lemma
OAI.RationalHitting.StackLanguage.eval_factorialLoopline 123Source documentation
Rising products, with a unary iteration budget obtained from the input. No scalar factorial operation occurs in this fixed finite program.
lemma eval_factorialLoop (n L : ℕ) (s : Store (Fin 10)) (hf : factorialScratch s) (hcan : (wordValue (s 0)).bits=s 0) (hn : (s 9).length=n) (hp : (s 0).length+n*((s 8).length+n)≤L) (hi : (s 8).length+n≤L) : ∃ t≤n*(300*(L+1)^4+1)+1, ∃ v, Eval factorialLoop s v t ∧ v 0 = (wordValue (s 0)*(wordValue (s 8)).ascFactorial n).bits ∧ wordValue (v 8)=wordValue (s 8)+n ∧ v 9=[] ∧ factorialScratch v ∧ (v 8).length≤(s 8).length+n := by …Mentions: OAI.RationalHitting.StackLanguage.Store, OAI.RationalHitting.StackLanguage.factorialScratch, OAI.RationalHitting.StackLanguage.wordValue, OAI.RationalHitting.StackLanguage.Eval, OAI.RationalHitting.StackLanguage.factorialLoop
- theorem
OAI.RationalHitting.StackLanguage.eval_factorialline 166Source documentation
Ordinary factorial on unary n, including zero, with polynomial bit cost. The two binary registers initially contain 1; no computed value is an input.
theorem eval_factorial (n : ℕ) (s : Store (Fin 10)) (hf : factorialScratch s) (h0 : s 0=[true]) (h8 : s 8=[true]) (h9 : (s 9).length=n) : ∃ t≤n*(300*(1+n*(1+n)+1)^4+1)+1, ∃ v, Eval factorialLoop s v t ∧ v 0=n.factorial.bits ∧ wordValue (v 8)=n+1 ∧ v 9=[] ∧ factorialScratch v := by …Mentions: OAI.RationalHitting.StackLanguage.Store, OAI.RationalHitting.StackLanguage.factorialScratch, OAI.RationalHitting.StackLanguage.Eval, OAI.RationalHitting.StackLanguage.factorialLoop, OAI.RationalHitting.StackLanguage.wordValue
- lemma
OAI.RationalHitting.StackLanguage.factorial_bits_lengthline 183 - def
OAI.RationalHitting.StackLanguage.factorialCoreline 199Source documentation
Factorial with clean local registers: only the unary counter and output register are changed. This is the binary subroutine for the Taylor binomials.
def factorialCore : Program (Fin 10) := …
- lemma
OAI.RationalHitting.StackLanguage.eval_factorialCoreline 202 - def
OAI.RationalHitting.StackLanguage.unaryDiffBodyline 235 - def
OAI.RationalHitting.StackLanguage.unaryDiffline 238 - theorem
OAI.RationalHitting.StackLanguage.eval_unaryDiffline 242Source documentation
Variable-length subtraction of unary loop counters. The leftover flag is nonempty exactly when the second counter exceeded the first.
theorem eval_unaryDiff {a b flag : K} (hab : a≠b) (haf : a≠flag) (hbf : b≠flag) (s : Store K) : Eval (unaryDiff a b flag) s (update (update (update s a ((s a).drop (s b).length)) b []) flag (List.replicate ((s b).length-(s a).length) true++s flag)) (5*(s b).length+1) := by …Mentions: OAI.RationalHitting.StackLanguage.Store, OAI.RationalHitting.StackLanguage.Eval, OAI.RationalHitting.StackLanguage.unaryDiff
- def
OAI.RationalHitting.StackLanguage.Binomial.arithline 302 - def
OAI.RationalHitting.StackLanguage.Binomial.lowEmptyline 305 - def
OAI.RationalHitting.StackLanguage.Binomial.factorialCostline 306 - def
OAI.RationalHitting.StackLanguage.Binomial.factorBlockline 308 - def
OAI.RationalHitting.StackLanguage.Binomial.factorCostline 311 - lemma
OAI.RationalHitting.StackLanguage.Binomial.eval_factorBlockline 313 - def
OAI.RationalHitting.StackLanguage.Binomial.inputline 367 - def
OAI.RationalHitting.StackLanguage.Binomial.preparedline 369 - def
OAI.RationalHitting.StackLanguage.Binomial.prepareline 372 - lemma
OAI.RationalHitting.StackLanguage.Binomial.eval_prepareline 375 - lemma
OAI.RationalHitting.StackLanguage.Binomial.lowEmpty_inputline 397 - lemma
OAI.RationalHitting.StackLanguage.Binomial.lowEmpty_updateline 400 - lemma
OAI.RationalHitting.StackLanguage.Binomial.lowEmpty_preparedline 404