OAI/Computability/RationalHitting/BinaryAddition.lean
15 declarations, 0 contain sorry, 0 declared as axioms
- lemma
OAI.RationalHitting.StackLanguage.wordValue_head_tailline 9 - def
OAI.RationalHitting.StackLanguage.addWordline 17Source documentation
Grade-school addition, scanning the second operand one bit at a time. The first operand is shifted after adding the incoming low bit.
def addWord : List Bool → List Bool → List Bool | a, [] => a | a, false::b => a.headD false :: addWord a.tail b | a, true::b => (incrementWord a).headD false :: addWord (incrementWord a).tail b
- theorem
OAI.RationalHitting.StackLanguage.addWord_valueline 22 - lemma
OAI.RationalHitting.StackLanguage.incrementWord_tail_lengthline 38 - lemma
OAI.RationalHitting.StackLanguage.addWord_lengthline 43 - def
OAI.RationalHitting.StackLanguage.emitLowline 60Source documentation
Emits one least-significant bit, supplying zero for an exhausted operand.
def emitLow (a out : K) : Program K := …
- lemma
OAI.RationalHitting.StackLanguage.eval_emitLowline 63 - def
OAI.RationalHitting.StackLanguage.addSplitline 82Source documentation
Output invariant for the single pass: a reversed low part is on
out.def addSplit : List Bool → List Bool → List Bool × List Bool | a, [] => ([],a) | a, false::b => let r := addSplit a.tail b … - lemma
OAI.RationalHitting.StackLanguage.addSplit_specline 91 - lemma
OAI.RationalHitting.StackLanguage.addSplit_first_lengthline 96 - def
OAI.RationalHitting.StackLanguage.addBodyline 101 - def
OAI.RationalHitting.StackLanguage.addLoopline 105 - lemma
OAI.RationalHitting.StackLanguage.eval_addLoopline 107 - def
OAI.RationalHitting.StackLanguage.addline 196Source documentation
Destructive binary addition. The second operand and all scratch words are cleared; the first register holds the exact sum.
def add (a b out tmp flag : K) : Program K := …
- lemma
OAI.RationalHitting.StackLanguage.eval_addline 200