OAI/Computability/RationalHitting/RationalBinary.lean
25 declarations, 0 contain sorry, 0 declared as axioms
- lemma
OAI.RationalHitting.StackLanguage.eval_copy9line 8 - def
OAI.RationalHitting.StackLanguage.fractionReduceline 19Source documentation
Euclid followed by two binary divisions, destructively producing the coprime numerator and positive denominator magnitudes.
def fractionReduce : Program (Fin 12) := …
- lemma
OAI.RationalHitting.StackLanguage.eval_fractionReduceline 25 - def
OAI.RationalHitting.StackLanguage.unaryLengthline 120Source documentation
Consume a word, emitting its unary length, independently of its bits.
def unaryLength (a b : K) : Program K := .loop a (.seq (.drop a) (.push b true))
- lemma
OAI.RationalHitting.StackLanguage.eval_unaryLengthline 122 - def
OAI.RationalHitting.StackLanguage.encodedWordline 148Source documentation
Canonical output's self-delimiting natural-number encoding, applied to an already canonical little-endian binary word.
def encodedWord (w : List Bool) : List Bool := …
- def
OAI.RationalHitting.StackLanguage.encodeWordline 151 - lemma
OAI.RationalHitting.StackLanguage.eval_encodeWordline 155 - lemma
OAI.RationalHitting.StackLanguage.digits_bool_bitsline 176 - lemma
OAI.RationalHitting.RationalCanonical.divInt_num_absline 187 - lemma
OAI.RationalHitting.RationalCanonical.divInt_denline 193 - lemma
OAI.RationalHitting.RationalCanonical.divInt_signline 198Source documentation
The sign used by the canonical binary rational encoder.
lemma divInt_sign (a b : ℤ) (hb : b≠0) : decide ((Rat.divInt a b).num<0) = if a=0 then false else (decide (a<0) ^^ decide (b<0)) := by … - lemma
OAI.RationalHitting.StackLanguage.encodedWord_bitsline 223 - lemma
OAI.RationalHitting.StackLanguage.eval_encodeWord_renameline 226 - lemma
OAI.RationalHitting.StackLanguage.eval_fractionReduce_renameline 234 - def
OAI.RationalHitting.StackLanguage.fractionSignline 250Source documentation
Registers 12 and 13 hold signed-magnitude signs; 15 stores the canonical result's sign and remains disjoint from the twelve arithmetic registers.
def fractionSign : Program (Fin 16) := …
- lemma
OAI.RationalHitting.StackLanguage.eval_fractionSignline 255 - def
OAI.RationalHitting.StackLanguage.reduceRegline 273 - lemma
OAI.RationalHitting.StackLanguage.reduceReg_injline 274 - def
OAI.RationalHitting.StackLanguage.denominatorRegline 276 - def
OAI.RationalHitting.StackLanguage.numeratorRegline 277 - lemma
OAI.RationalHitting.StackLanguage.denominatorReg_injline 278 - lemma
OAI.RationalHitting.StackLanguage.numeratorReg_injline 279 - def
OAI.RationalHitting.StackLanguage.rationalEncodeline 283Source documentation
Full signed canonical rational output. No gcd, comparison or sign oracle occurs in this fixed finite binary-stack program.
def rationalEncode : Program (Fin 16) := …
- theorem
OAI.RationalHitting.StackLanguage.eval_rationalEncodeline 296Source documentation
Exact final canonical binary fraction, with a cubic bit-time stack implementation. This supplies the output-format obligation of the uniform list generator.
theorem eval_rationalEncode (s : Store (Fin 16)) (a b : ℤ) (hb : b≠0) (h0 : s 0=a.natAbs.bits) (h5 : s 5=b.natAbs.bits) (h12 : s 12=[decide (a<0)]) (h13 : s 13=[decide (b<0)]) (h15 : s 15=[]) (hs : ∀ i : Fin 16, i.val<12 → i≠0 → i≠5 → s i=[]) (B : ℕ) (ha : a.natAbs.bits.length≤B) (hd : b.natAbs.bits.length≤B) : ∃ t ≤ 3100*(B+1)^3, Eval rationalEncode s (update (update (update s 0 []) 5 []) 14 (encodeRat (Rat.divInt a b)++s 14)) t := by …Mentions: OAI.RationalHitting.StackLanguage.Store, OAI.RationalHitting.StackLanguage.Eval, OAI.RationalHitting.StackLanguage.rationalEncode, OAI.RationalHitting.encodeRat