diff --git a/docs/notebooks/BigInts.ipynb b/docs/notebooks/BigInts.ipynb index 016f9d1..2679892 100644 --- a/docs/notebooks/BigInts.ipynb +++ b/docs/notebooks/BigInts.ipynb @@ -2437,7 +2437,7 @@ { "cell_type": "code", "execution_count": 95, - "id": "e9dc6852", + "id": "d8832fda", "metadata": {}, "outputs": [ { @@ -2560,7 +2560,7 @@ }, { "cell_type": "markdown", - "id": "dbfebd04", + "id": "fdc6fc09", "metadata": {}, "source": [ "But this doesn't go quite far enough, I think.\n", @@ -2570,7 +2570,7 @@ }, { "cell_type": "markdown", - "id": "d4d65bf2", + "id": "94249f95", "metadata": {}, "source": [ "I think `R0` will pretty much always do:\n", @@ -2580,7 +2580,7 @@ }, { "cell_type": "markdown", - "id": "35ff6c75", + "id": "ecc190e3", "metadata": {}, "source": [ "And so it should be refactored further to something like:\n", @@ -2619,7 +2619,7 @@ }, { "cell_type": "markdown", - "id": "0f3be915", + "id": "c9fd7e21", "metadata": {}, "source": [ "Let's figure out the new form.\n", @@ -2642,7 +2642,7 @@ }, { "cell_type": "markdown", - "id": "7d4ee083", + "id": "64118784", "metadata": {}, "source": [ "Let's not over think it.\n", @@ -2653,7 +2653,7 @@ }, { "cell_type": "markdown", - "id": "b5c20b1c", + "id": "90310271", "metadata": {}, "source": [ "With:\n", @@ -2717,7 +2717,7 @@ }, { "cell_type": "markdown", - "id": "06c700d6", + "id": "e8433d46", "metadata": {}, "source": [ "So to get from \n", @@ -2738,7 +2738,7 @@ { "cell_type": "code", "execution_count": 103, - "id": "063b3760", + "id": "77e6c03a", "metadata": {}, "outputs": [ { @@ -2766,7 +2766,7 @@ { "cell_type": "code", "execution_count": 104, - "id": "151f9f3d", + "id": "1119f1e6", "metadata": {}, "outputs": [ { @@ -2802,7 +2802,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fba574be", + "id": "02bfc247", "metadata": {}, "outputs": [], "source": [] @@ -2831,7 +2831,7 @@ }, { "cell_type": "markdown", - "id": "c9d4432e", + "id": "089fc71c", "metadata": {}, "source": [ "Compare the above with what we wanted:\n", @@ -2853,7 +2853,7 @@ { "cell_type": "code", "execution_count": null, - "id": "77e1ba72", + "id": "929366cc", "metadata": {}, "outputs": [], "source": [] @@ -2861,7 +2861,7 @@ { "cell_type": "code", "execution_count": 107, - "id": "0c11e3a8", + "id": "a3b7e48a", "metadata": {}, "outputs": [ { @@ -2886,7 +2886,7 @@ { "cell_type": "code", "execution_count": 108, - "id": "301c4fb0", + "id": "313ce113", "metadata": { "scrolled": true }, @@ -2906,7 +2906,7 @@ { "cell_type": "code", "execution_count": 110, - "id": "115d4c56", + "id": "aca55d10", "metadata": {}, "outputs": [ { @@ -2923,7 +2923,7 @@ }, { "cell_type": "markdown", - "id": "5e7c24c4", + "id": "92a471fa", "metadata": {}, "source": [ " combine-two-lists == build-two-list-combiner [i cons] genrec\n", @@ -2933,7 +2933,7 @@ { "cell_type": "code", "execution_count": 111, - "id": "810427a9", + "id": "0fa2607d", "metadata": {}, "outputs": [ { @@ -2954,7 +2954,7 @@ { "cell_type": "code", "execution_count": 112, - "id": "0ba7548f", + "id": "026095a5", "metadata": {}, "outputs": [ { @@ -2972,7 +2972,7 @@ { "cell_type": "code", "execution_count": 113, - "id": "a94d2e37", + "id": "15974737", "metadata": {}, "outputs": [ { @@ -2990,7 +2990,7 @@ { "cell_type": "code", "execution_count": 114, - "id": "7787e86b", + "id": "525bc382", "metadata": {}, "outputs": [ { @@ -3080,7 +3080,7 @@ { "cell_type": "code", "execution_count": 119, - "id": "67e321e7", + "id": "52bb5921", "metadata": {}, "outputs": [ { @@ -3191,7 +3191,7 @@ }, { "cell_type": "markdown", - "id": "2cec47e6", + "id": "c85d6fe6", "metadata": {}, "source": [ "#### Demonstrate `add-bigints`" @@ -3200,7 +3200,7 @@ { "cell_type": "code", "execution_count": 125, - "id": "6168ebb7", + "id": "3da6266b", "metadata": {}, "outputs": [ { @@ -3218,7 +3218,7 @@ { "cell_type": "code", "execution_count": 126, - "id": "b8fee2d5", + "id": "7d38dbaa", "metadata": {}, "outputs": [ { @@ -3236,7 +3236,7 @@ { "cell_type": "code", "execution_count": 127, - "id": "9dc66c3b", + "id": "e65f7ff9", "metadata": {}, "outputs": [ { @@ -3254,7 +3254,7 @@ { "cell_type": "code", "execution_count": 128, - "id": "82e85105", + "id": "5d385f35", "metadata": {}, "outputs": [ { @@ -3272,7 +3272,7 @@ { "cell_type": "code", "execution_count": null, - "id": "87862546", + "id": "fb7da91a", "metadata": {}, "outputs": [], "source": [] @@ -3280,7 +3280,7 @@ { "cell_type": "code", "execution_count": null, - "id": "465edd01", + "id": "679e9df6", "metadata": {}, "outputs": [], "source": [] @@ -3288,7 +3288,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6a5453b3", + "id": "d4d2850a", "metadata": {}, "outputs": [], "source": [] @@ -3296,7 +3296,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6c1b83b4", + "id": "c4da9da4", "metadata": {}, "outputs": [], "source": [] @@ -3304,7 +3304,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5559f087", + "id": "55a37610", "metadata": {}, "outputs": [], "source": [] @@ -3312,7 +3312,7 @@ { "cell_type": "code", "execution_count": null, - "id": "76f5198f", + "id": "c637a7ea", "metadata": {}, "outputs": [], "source": [] @@ -3320,7 +3320,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9e8c8cba", + "id": "b56cf709", "metadata": {}, "outputs": [], "source": [] @@ -4546,9 +4546,25 @@ "check-gt" ] }, + { + "cell_type": "code", + "execution_count": 134, + "id": "187c0381", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "clear" + ] + }, { "cell_type": "markdown", - "id": "97693e57", + "id": "1a8a8196", "metadata": {}, "source": [ "### Subtraction, at last...\n", @@ -4563,26 +4579,51 @@ "\n", "At this point we would have the sign bit then the two digit lists.\n", "\n", - " sign [c b a] [z y x]\n", - "\n", + " sign [c b a] [z y x]" + ] + }, + { + "cell_type": "markdown", + "id": "9751fd65", + "metadata": {}, + "source": [ "We want to use `check-gt` here:\n", "\n", " sign [c b a] [z y x] check-gt\n", - " sign swapped? [c b a] [z y x] check-gt\n", - "\n", + " sign swapped? [c b a] [z y x] check-gt" + ] + }, + { + "cell_type": "markdown", + "id": "df2ae839", + "metadata": {}, + "source": [ "It seems we should just flip the sign bit if we swap, eh?\n", "\n", - " check-gt == [gt-bigint] [swap [not] dipd] [] ifte\n", - "\n", + " check-gt == [gt-bigint] [swap [not] dipd] [] ifte" + ] + }, + { + "cell_type": "markdown", + "id": "c775c3a4", + "metadata": {}, + "source": [ "Now we subtract the digits:\n", "\n", - " sign [c b a] [z y x] sub-digits cons\n", - "\n", + " sign [c b a] [z y x] sub-digits cons" + ] + }, + { + "cell_type": "markdown", + "id": "97693e57", + "metadata": {}, + "source": [ "So:\n", "\n", " sub-like-bigints == [uncons] dip rest check-gt sub-digits cons\n", "\n", " sub-digits == initial-carry sub-digits'\n", + "\n", " sub-digits' ==\n", " [sub-carry-from-digits]\n", " [swap sub-carry]\n", @@ -4590,54 +4631,22 @@ " build-two-list-combiner\n", " [i cons] genrec\n", "\n", - "We just need to define the pieces.\n" + "We just need to define the pieces." ] }, { "cell_type": "markdown", - "id": "7c0fbfaf", + "id": "32eeaf38", "metadata": {}, "source": [ - " sub-carry-from-digits\n", - "\n", - "Should be easy to make modeled on\n", - "\n", - " add-carry-to-digits\n", - "\n", - "I'll do it in the morning, and if my logic is correct and I haven't bungled typing it in, the whole thing should just work! OMG? Tomorrow..." - ] - }, - { - "cell_type": "code", - "execution_count": 195, - "id": "b6c2e9ee", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "24 true" - ] - } - ], - "source": [ - "[sub-carry-from-digits popd] inscribe" - ] - }, - { - "cell_type": "markdown", - "id": "a0067046", - "metadata": {}, - "source": [ - " sub-carry == pop\n", + "#### `sub-with-carry`\n", "\n", "We know we will never be subtracting a larger (absolute) number from a smaller (absolute) number (they might be equal) so the carry flag will never be true *at the end of a digit list subtraction.*" ] }, { "cell_type": "markdown", - "id": "49387109", + "id": "3b47df3b", "metadata": {}, "source": [ " carry a b sub-with-carry\n", @@ -4652,16 +4661,14 @@ }, { "cell_type": "code", - "execution_count": 182, - "id": "0237bb03", + "execution_count": 135, + "id": "880dc3da", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", - "text": [ - "-10" - ] + "text": [] } ], "source": [ @@ -4672,8 +4679,8 @@ }, { "cell_type": "code", - "execution_count": 193, - "id": "c8de9645", + "execution_count": 139, + "id": "bae53ad4", "metadata": { "scrolled": true }, @@ -4682,25 +4689,25 @@ "name": "stdout", "output_type": "stream", "text": [ - "false 23 2147483647" + "false 3 9" ] } ], "source": [ - "clear false 23 base --" + "clear false 3 base --" ] }, { "cell_type": "code", - "execution_count": 194, - "id": "aa66a6ae", + "execution_count": 140, + "id": "f54d93bc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "24 true" + "4 true" ] } ], @@ -4710,8 +4717,8 @@ }, { "cell_type": "code", - "execution_count": 229, - "id": "3f75130f", + "execution_count": 141, + "id": "740034d8", "metadata": {}, "outputs": [ { @@ -4724,6 +4731,271 @@ "clear" ] }, + { + "cell_type": "markdown", + "id": "7c0fbfaf", + "metadata": {}, + "source": [ + "#### `sub-carry-from-digits`\n", + "\n", + "Should be easy to make modeled on `add-carry-to-digits`, another very simple recursive function. The predicate, base case, and `R1` are the same:\n", + "\n", + " carry [n ...] sub-carry-from-digits\n", + " carry [n ...] [pop not] [popd] [_scfd_R0] [i cons] genrec" + ] + }, + { + "cell_type": "markdown", + "id": "d29e6193", + "metadata": {}, + "source": [ + "That leaves the recursive branch:\n", + "\n", + " true [n ...] _scfd_R0 [sub-carry-from-digits] i cons\n", + "\n", + "-or-\n", + "\n", + " true [] _scfd_R0 [sub-carry-from-digits] i cons\n", + "\n", + "**Except** that this should should never happen when subtracting, because we already made sure that we're only ever subtracting a number less than or equal to the, uh, number we are subtracting from (TODO rewrite this trainwreck of a sentence).\n", + "\n", + " true [a ...] _scfd_R0 [sub-carry-from-digits] i cons\n", + " ----------------------------------------------------------------\n", + " true 0 a add-with-carry [...] [sub-carry-from-digits] i cons\n", + " ------------------------------------------------------------------\n", + " (a+1) carry [...] [sub-carry-from-digits] i cons" + ] + }, + { + "cell_type": "markdown", + "id": "d31868ab", + "metadata": {}, + "source": [ + " \n", + " true [a ...] _scfd_R0\n", + " true [a ...] 0 swap uncons [sub-with-carry] dip\n", + " true 0 [a ...] uncons [sub-with-carry] dip\n", + " true 0 a [...] [sub-with-carry] dip\n", + " true 0 a sub-with-carry [...]\n", + "\n", + " _scfd_R0 == 0 swap uncons [sub-with-carry] dip" + ] + }, + { + "cell_type": "markdown", + "id": "5c4404a8", + "metadata": {}, + "source": [ + "But there's a problem! This winds up subtracting `a` from 0 rather than the other way around:\n", + "\n", + " _scfd_R0 == uncons 0 swap [sub-with-carry] dip" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "id": "be093900", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[3 2 1]" + ] + } + ], + "source": [ + "[sub-carry-from-digits\n", + " [pop not]\n", + " [popd]\n", + " [_scfd_R0]\n", + " [i cons]\n", + " genrec\n", + "] inscribe\n", + "[_scfd_R0 uncons 0 swap [sub-with-carry] dip] inscribe" + ] + }, + { + "cell_type": "markdown", + "id": "253538a4", + "metadata": {}, + "source": [ + "Try it out:" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "id": "ce9f01e2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[3 2 1]" + ] + } + ], + "source": [ + "clear\n", + "\n", + "false [3 2 1] sub-carry-from-digits" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "id": "2120af39", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[9 0]" + ] + } + ], + "source": [ + "clear\n", + "\n", + "true [0 1] sub-carry-from-digits" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "id": "55fc1f59", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2 2 1]" + ] + } + ], + "source": [ + "clear\n", + "\n", + "true [3 2 1] sub-carry-from-digits" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "id": "1db3eaeb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[9 9 0]" + ] + } + ], + "source": [ + "clear\n", + "\n", + "true [0 0 1] sub-carry-from-digits" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "ededec7b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "clear" + ] + }, + { + "cell_type": "markdown", + "id": "ffc08bef", + "metadata": {}, + "source": [ + "But what about those leading zeroes?\n", + "\n", + "We could use a version of `cons` that refuses to put 0 onto an empty list?\n", + "\n", + " cons-but-not-leading-zeroes == [[bool] ii | not] [popd] [cons] ifte" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "id": "fe557598", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "[cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] inscribe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7275cd6", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "740a5c97", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ea8ba1c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 164, + "id": "b6c2e9ee", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "[sub-carry-from-digits popd] inscribe" + ] + }, + { + "cell_type": "markdown", + "id": "32cef119", + "metadata": {}, + "source": [ + " sub-carry == pop" + ] + }, { "cell_type": "code", "execution_count": 230, diff --git a/implementations/Python/bi.txt b/implementations/Python/bi.txt index ad357b3..5b1adb2 100644 --- a/implementations/Python/bi.txt +++ b/implementations/Python/bi.txt @@ -188,28 +188,43 @@ joy? [base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] <-top joy? -[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry-from-digits popd] <-top +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] <-top joy? -[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry-from-digits popd] [_sub-with-carry0 rolldown bool-to-int [-] ii] <-top +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] <-top joy? -[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry-from-digits popd] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] <-top +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] <-top joy? -[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry-from-digits popd] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] [sub-with-carry _sub-with-carry0 _sub-with-carry1] <-top +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] <-top joy? -[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry-from-digits popd] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] [sub-with-carry _sub-with-carry0 _sub-with-carry1] <-top +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] [cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] <-top joy? -[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry-from-digits popd] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] [sub-with-carry _sub-with-carry0 _sub-with-carry1] [sub-like-bigints [uncons] dip rest check-gt sub-digits cons] <-top +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] [cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] <-top joy? -[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry-from-digits popd] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] [sub-with-carry _sub-with-carry0 _sub-with-carry1] [sub-like-bigints [uncons] dip rest check-gt sub-digits cons] [sub-digits initial-carry sub-digits'] <-top +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] [cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] [sub-with-carry _sub-with-carry0 _sub-with-carry1] <-top joy? -[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry-from-digits popd] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] [sub-with-carry _sub-with-carry0 _sub-with-carry1] [sub-like-bigints [uncons] dip rest check-gt sub-digits cons] [sub-digits initial-carry sub-digits'] <-top +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] [cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] [sub-with-carry _sub-with-carry0 _sub-with-carry1] [_sub-with-carry0 rolldown bool-to-int [-] ii] <-top + +joy? +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] [cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] [sub-with-carry _sub-with-carry0 _sub-with-carry1] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] <-top + +joy? +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] [cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] [sub-with-carry _sub-with-carry0 _sub-with-carry1] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] <-top + +joy? +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] [cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] [sub-with-carry _sub-with-carry0 _sub-with-carry1] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] [sub-like-bigints [uncons] dip rest check-gt sub-digits cons] <-top + +joy? +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] [cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] [sub-with-carry _sub-with-carry0 _sub-with-carry1] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] [sub-like-bigints [uncons] dip rest check-gt sub-digits cons] [sub-digits initial-carry sub-digits'] <-top + +joy? +[base 2147483648] [ditch-empty-list [bool] [popd] [pop] ifte] [bool-to-int [0] [1] branch] [uncons-two [uncons] ii swapd] [sandwich swap [cons] dip swoncat] [digitalize [0 <=] [pop []] [base divmod swap] [i cons] genrec] [to-bigint [!-] [abs digitalize] cleave cons] [prep rest 1 0 rolldown] [from-bigint' [next-digit] step popd] [next-digit [increase-power] [accumulate-digit] clop popdd] [increase-power popop base *] [accumulate-digit rolldown * +] [sign-int [first] [prep from-bigint'] cleave] [neg-if-necessary swap [neg] [] branch] [from-bigint sign-int neg-if-necessary] [add-with-carry _add-with-carry0 _add-with-carry1] [_add-with-carry0 [bool-to-int] dipd + +] [_add-with-carry1 base [mod] [>=] clop] [add-carry-to-digits [pop not] [popd] [_actd_R0] [i cons] genrec] [_actd_R0 [bool] [_actd_R0.then] [_actd_R0.else] ifte] [_actd_R0.else popd 1 false rolldown] [_actd_R0.then 0 swap uncons [add-with-carry] dip] [add-digits initial-carry add-digits'] [initial-carry false rollup] [add-digits' [P] [THEN] [R0] [R1] genrec] [P [bool] ii & not] [THEN [P'] [THEN'] [ELSE] ifte] [R0 uncons-two [add-with-carry] dipd] [R1 i cons] [P' [bool] ii |] [THEN' ditch-empty-list add-carry-to-digits] [ELSE pop swap [] [1 swons] branch] [same-sign [first] ii xor not] [add-like-bigints [uncons] dip rest add-digits cons] [add-bigints [same-sign] [add-like-bigints] [1 0 /] ifte] [build-two-list-combiner _btlc0 _btlc1 [i cons]] [_btlc0.0 [[ditch-empty-list] swoncat] dip] [_btlc0.1 [pop] swoncat] [_btlc0.3 [_btlc0.0 _btlc0.1] dip] [_btlc0.4 [uncons-two] [dipd] sandwich] [_btlc0 _btlc0.3 _btlc0.4] [_btlc1 [[ifte] ccons [P'] swons [P] swap] dip] [carry [] [1 swons] branch] [compare-pairs [bool not] [pop false] [[first [>=] infrst] [pop true]] [[rest] swoncat ifte] genrec] [xR1 uncons-two [unit cons swons] dipd] [xP [bool] ii & not] [BASE [bool] [popop pop true] [[pop bool] [popop pop false] [popop compare-pairs] ifte] ifte] [gt-bigint <<{} [xP] [BASE] [xR1] tailrec] [check-gt [gt-bigint] [swap [not] dipd] [] ifte] [sub-carry pop] [cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] [sub-with-carry _sub-with-carry0 _sub-with-carry1] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] [sub-like-bigints [uncons] dip rest check-gt sub-digits cons] [sub-digits initial-carry sub-digits'] <-top joy? <-top @@ -269,322 +284,13 @@ joy? <-top joy? -[sub-digits initial-carry sub-digits'] <-top +[2147483647] <-top joy? -[sub-digits initial-carry sub-digits'] <-top +[2147483647] <-top joy? -[sub-digits initial-carry sub-digits'] <-top - -joy? [sub-digits initial-carry sub-digits'] true [456] [123] • sub-digits - [sub-digits initial-carry sub-digits'] true [456] [123] • initial-carry sub-digits' - [sub-digits initial-carry sub-digits'] true [456] [123] • false rollup sub-digits' - [sub-digits initial-carry sub-digits'] true [456] [123] false • rollup sub-digits' - [sub-digits initial-carry sub-digits'] true false [456] [123] • sub-digits' - [sub-digits initial-carry sub-digits'] true false [456] [123] • [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] • [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] • [uncons-two [sub-with-carry] dipd] [i cons] genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] • [i cons] genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] • genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] • ifte -[sub-digits initial-carry sub-digits'] true false [456] [123] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [[123] [456] false true [sub-digits initial-carry sub-digits']] [P] • infra first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] • P [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] • [bool] ii & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] [bool] • ii & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false [456] • bool [123] bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true • [123] bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true [123] • bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true true • & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true true • and not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true • not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false false • [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false false [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] • swaack first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [false false true [sub-digits initial-carry sub-digits']] • first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] false • choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] • i - [sub-digits initial-carry sub-digits'] true false [456] [123] • uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false [456] [123] • [uncons] ii swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false [456] [123] [uncons] • ii swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false [456] • uncons [123] uncons swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] • [123] uncons swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] [123] • uncons swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] 123 [] • swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] 123 [] • [swap] dip [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] 123 [] [swap] • dip [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] 123 • swap [] [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 [] • [] [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 [] [] • [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 [] [] [sub-with-carry] • dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 • sub-with-carry [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 • _sub-with-carry0 _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 • rolldown bool-to-int [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 false • bool-to-int [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 false • [0] [1] branch [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 false [0] • [1] branch [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 false [0] [1] • branch [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 • 0 [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 0 • [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 0 [-] • ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 • - 0 - _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 • sub 0 - _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • 0 - _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 0 • - _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 0 • sub _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • [base + base mod] [0 <] cleave [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] • [0 <] cleave [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • cleave [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • fork popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • [i] app2 popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] [i] • app2 popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] [i] • [grba swap grba swap] dip [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] [i] [grba swap grba swap] • dip [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • grba swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • [stack popd] dip swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] [stack popd] • dip swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] • stack popd [0 <] swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • popd [0 <] swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • [0 <] swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [0 <] • swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • [stack popd] dip swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [stack popd] • dip swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] • stack popd [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] [[0 <] 333 true [sub-digits initial-carry sub-digits']] • popd [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] • [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [[0 <] 333 true [sub-digits initial-carry sub-digits']] • [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] • [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] [infrst] • cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [[0 <] 333 true [sub-digits initial-carry sub-digits']] [[i] infrst] • ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • [i] infrst [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [i] • infrst [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [i] • infra first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] • i [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • base + base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • 2147483648 + base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 2147483648 • + base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 2147483648 • add base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 2147483981 • base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 2147483981 • 2147483648 mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 2147483981 2147483648 • mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [333 true [sub-digits initial-carry sub-digits']] • swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [333 true [sub-digits initial-carry sub-digits']] • first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 • [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] • [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] • infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] • infra first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] • i [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • 0 < [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 0 • < [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 0 • lt [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false • [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false [333 333 true [sub-digits initial-carry sub-digits']] • swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 [false true [sub-digits initial-carry sub-digits']] • first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 false • popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 false • [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 false [] • [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] • i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] • [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] • [uncons-two [sub-with-carry] dipd] [i cons] genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] • [i cons] genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] • genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] • ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [[] [] false 333 true [sub-digits initial-carry sub-digits']] [P] • infra first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • P [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [bool] ii & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [bool] • ii & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] • bool [] bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false • [] bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false [] • bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false false • & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false false • and not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false • not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false true • [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false true [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] • swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [true false 333 true [sub-digits initial-carry sub-digits']] • first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] true • choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] • i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P'] • [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P'] [ditch-empty-list sub-carry-from-digits] • [pop swap sub-carry] ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] • ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [pop swap sub-carry] [ditch-empty-list sub-carry-from-digits] [[] [] false 333 true [sub-digits initial-carry sub-digits']] [P'] • infra first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • P' [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [bool] ii | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [bool] • ii | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] • bool [] bool | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false • [] bool | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false [] • bool | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false false • | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false false • or [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false • [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] • swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [pop swap sub-carry] [ditch-empty-list sub-carry-from-digits] [false false 333 true [sub-digits initial-carry sub-digits']] • first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [pop swap sub-carry] [ditch-empty-list sub-carry-from-digits] false • choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [pop swap sub-carry] • i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • pop swap sub-carry cons - [sub-digits initial-carry sub-digits'] true 333 false [] • swap sub-carry cons - [sub-digits initial-carry sub-digits'] true 333 [] false • sub-carry cons - [sub-digits initial-carry sub-digits'] true [456] [123] • sub-digits - [sub-digits initial-carry sub-digits'] true [456] [123] • initial-carry sub-digits' - [sub-digits initial-carry sub-digits'] true [456] [123] • false rollup sub-digits' - [sub-digits initial-carry sub-digits'] true [456] [123] false • rollup sub-digits' - [sub-digits initial-carry sub-digits'] true false [456] [123] • sub-digits' - [sub-digits initial-carry sub-digits'] true false [456] [123] • [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] • [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] • [uncons-two [sub-with-carry] dipd] [i cons] genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] • [i cons] genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] • genrec - [sub-digits initial-carry sub-digits'] true false [456] [123] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] • ifte -[sub-digits initial-carry sub-digits'] true false [456] [123] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [[123] [456] false true [sub-digits initial-carry sub-digits']] [P] • infra first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] • P [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] • [bool] ii & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] [bool] • ii & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false [456] • bool [123] bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true • [123] bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true [123] • bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true true • & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true true • and not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false true • not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false false • [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] swaack first choice i - [sub-digits initial-carry sub-digits'] true false false [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [123] [456] false true [sub-digits initial-carry sub-digits']] • swaack first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [false false true [sub-digits initial-carry sub-digits']] • first choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] false • choice i - [sub-digits initial-carry sub-digits'] true false [456] [123] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] • i - [sub-digits initial-carry sub-digits'] true false [456] [123] • uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false [456] [123] • [uncons] ii swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false [456] [123] [uncons] • ii swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false [456] • uncons [123] uncons swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] • [123] uncons swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] [123] • uncons swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] 123 [] • swapd [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] 123 [] • [swap] dip [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] 123 [] [swap] • dip [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 [] 123 • swap [] [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 [] • [] [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 [] [] • [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 [] [] [sub-with-carry] • dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 • sub-with-carry [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 • _sub-with-carry0 _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false 456 123 • rolldown bool-to-int [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 false • bool-to-int [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 false • [0] [1] branch [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 false [0] • [1] branch [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 false [0] [1] • branch [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 • 0 [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 0 • [-] ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 0 [-] • ii _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 • - 0 - _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 456 123 • sub 0 - _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • 0 - _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 0 • - _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 0 • sub _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • _sub-with-carry1 [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • [base + base mod] [0 <] cleave [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] • [0 <] cleave [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • cleave [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • fork popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • [i] app2 popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] [i] • app2 popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] [i] • [grba swap grba swap] dip [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] [i] [grba swap grba swap] • dip [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • grba swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] • [stack popd] dip swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [0 <] [stack popd] • dip swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] • stack popd [0 <] swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • popd [0 <] swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • [0 <] swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [0 <] • swap grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • grba swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • [stack popd] dip swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [stack popd] • dip swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] • stack popd [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] [[0 <] 333 true [sub-digits initial-carry sub-digits']] • popd [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] • [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • swap [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [[0 <] 333 true [sub-digits initial-carry sub-digits']] • [i] [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] • [infrst] cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] [infrst] • cons ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [[0 <] 333 true [sub-digits initial-carry sub-digits']] [[i] infrst] • ii popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] • [i] infrst [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [i] • infrst [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [[base + base mod] 333 true [sub-digits initial-carry sub-digits']] [i] • infra first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [base + base mod] • i [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • base + base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • 2147483648 + base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 2147483648 • + base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 2147483648 • add base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 2147483981 • base mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 2147483981 • 2147483648 mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 2147483981 2147483648 • mod [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • [333 true [sub-digits initial-carry sub-digits']] swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [333 true [sub-digits initial-carry sub-digits']] • swaack first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [333 true [sub-digits initial-carry sub-digits']] • first [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 • [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] • [i] infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] • infrst popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 [[0 <] 333 true [sub-digits initial-carry sub-digits']] [i] • infra first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 [0 <] • i [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 • 0 < [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 0 • < [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 0 • lt [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false • [333 333 true [sub-digits initial-carry sub-digits']] swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true false [333 333 true [sub-digits initial-carry sub-digits']] • swaack first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 [false true [sub-digits initial-carry sub-digits']] • first popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 333 false • popdd [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 false • [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 false [] • [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] • i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] • [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] • [uncons-two [sub-with-carry] dipd] [i cons] genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] • [i cons] genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] • genrec cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] • ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [[] [] false 333 true [sub-digits initial-carry sub-digits']] [P] • infra first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • P [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [bool] ii & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [bool] • ii & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] • bool [] bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false • [] bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false [] • bool & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false false • & not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false false • and not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false • not [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false true • [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false true [[[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [] [] false 333 true [sub-digits initial-carry sub-digits']] • swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [true false 333 true [sub-digits initial-carry sub-digits']] • first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [uncons-two [sub-with-carry] dipd [[P] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] [uncons-two [sub-with-carry] dipd] [i cons] genrec] i cons] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] true • choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [[P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte] • i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P'] • [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P'] [ditch-empty-list sub-carry-from-digits] • [pop swap sub-carry] ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [P'] [ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] • ifte cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [pop swap sub-carry] [ditch-empty-list sub-carry-from-digits] [[] [] false 333 true [sub-digits initial-carry sub-digits']] [P'] • infra first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • P' [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • [bool] ii | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [bool] • ii | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] • bool [] bool | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false • [] bool | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false [] • bool | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false false • | [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false false • or [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false • [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false false [[ditch-empty-list sub-carry-from-digits] [pop swap sub-carry] [] [] false 333 true [sub-digits initial-carry sub-digits']] • swaack first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [pop swap sub-carry] [ditch-empty-list sub-carry-from-digits] [false false 333 true [sub-digits initial-carry sub-digits']] • first choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [pop swap sub-carry] [ditch-empty-list sub-carry-from-digits] false • choice i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] [pop swap sub-carry] • i cons - [sub-digits initial-carry sub-digits'] true 333 false [] [] • pop swap sub-carry cons - [sub-digits initial-carry sub-digits'] true 333 false [] • swap sub-carry cons - [sub-digits initial-carry sub-digits'] true 333 [] false • sub-carry cons - -[sub-digits initial-carry sub-digits'] <-top +[2147483647] <-top joy? -[sub-digits initial-carry sub-digits'] • +[2147483647] • diff --git a/implementations/bigints.joy b/implementations/bigints.joy index 29157de..7a92079 100644 --- a/implementations/bigints.joy +++ b/implementations/bigints.joy @@ -62,10 +62,13 @@ clear [sub-carry pop] -[sub-carry-from-digits popd] +[sub-carry-from-digits [pop not] [popd] [_scfd_R0] [i cons-but-not-leading-zeroes] genrec] inscribe +[_scfd_R0 uncons 0 swap [sub-with-carry] dip] inscribe +[cons-but-not-leading-zeroes [[bool] ii | not] [popd] [cons] ifte] + +[sub-with-carry _sub-with-carry0 _sub-with-carry1] [_sub-with-carry0 rolldown bool-to-int [-] ii] [_sub-with-carry1 [base + base mod] [0 <] cleave] -[sub-with-carry _sub-with-carry0 _sub-with-carry1] [sub-like-bigints [uncons] dip rest check-gt sub-digits cons] [sub-digits initial-carry sub-digits'] @@ -89,5 +92,6 @@ build-two-list-combiner inscribe +true [0 1] sub-carry-from-digits + -[true 456] [true 123] sub-like-bigints