Construction methods for Big numbers
bigΨ
“On the shoulders of giant numbers”
Mathematical Origin of the Real Era
Think before you print.
Save the world's forests!
Construction methods for natural operator expansion.
From units and operators
to operatorial dragon cycles.
Grass roots mathematicians mapping the subinfinite?
Create the biggest numbers in the whole wide world!
New Page
Ψ. Construction Index X
-
Number operations
-
1. Natural repetition
- Maths with make-up
- Signs
- Colours
- Meta-methods
- Indication
- Substitution
box:Hyperarithmetical code- Repetition
- Variation
- The capacity of counting
- Cosmic information resources
- Our little universe
- Chance functions
- Addictive counting
- Ancient history of Big numbers
- In Egypt, India and Greece
box:Counting on the Lotus Sutra- Untold number records
- 2. Towards the Ackermann numbers
- 3. Chained arrows versus subscripting
-
1. Natural repetition
-
Function sizes
- 4. Super-powers of bigO
-
5. First row of parameters
- Crafting by grafting
- General recursive baby steps
box:A walk on the Ackermann level- Multiple substitution is futile
- Graham's Og
- Expressing a world record
- How Og hops back
- How Og is jumped over
- Recursive grafting on Og
- Front row bigE
- Home of subscripted arrows
- Race against chained arrows
box:Order past Ackermann and Conway- Recursive grafting on super-chained arrows
- Front row bigI with waitor
- Home of subscripted stars
- Parameter stock to row shoot
- Front row bigA
- Addictive pluses in row context
- Fixing the affiliate functions
- Testing the nesting
- Shallowness of fixed receptors
- Empower those iterators
- Vana expansion
- Operatorial design
box:Cursed- Whole row of waitors in bigY
- Super-factorial row bigU
- Algorithms over the first row
- under 2010 construction
- 6. Dimensions
- Reference
- Participation
bigΨ.I. Number operations
part 1, zeroth edition 0.0.24
public: 2009-10-11
last update: 2010-09-03
§I.0. Prelude
Finite beings can only build finite systems.
In mathematics we often assume otherwise, but to reasonably refer to
infinite
items we need to keep our conversation finite,
else nobody could hear us out.
To paraphrase the great
Dedekind
– is he listening? – a mathematical system is Big
when it is similar to a previous part of itself.
Something as simple as adding an extra counter
will expand upon an algorithm for Big numbers
to create mind-bogglingly Bigger ones…
In our own number constructions the initial operators are made to nearly
match the later operatorial functions.
As often, this requires a jump out of the box and into the ocean
.
When jump and match satisfy, previous concepts are ready to be counted
in a new and higher, more general system.
Each number finds expression in an algorithmic system.
Numbers belong to one of four different temperaments.
- Address numbers
- to count or point to things or chances in the physical world
- Big numbers
- expressions reduced by an algorithm to a sequence of units
- Continuous numbers
- the algorithm never halts, yet is projected to the real or infinite
- Diametric numbers
- mark the jump or link to hitherto disparate algorithmic levels
This on-line book is about the quest for Big numbers
and their construction tools – the operatorials bigO.
Functions which produce theoretically countable,
but practically uncountable natural numbers 1...
The sign ψ (psi)
was used by the first classical recursion
theorist Wilhelm Ackermann to mark a
higher type of function, iterating over a known family of functions.
Therefore our prodigious paper is delivered with the tantalizing title
bigΨ.
We wish all readers a giant leap and an enchanting journey,
into a boundless land of numbers untold of before!
Ψ.1. Natural repetition
§1.0.1. Addition?
1,2,3,4,5,6,7,8,9,10,
¿Where is Buddha when I am counting?
– Prabhâsadharma Roshi
20th century international Zen master
When you count you repeat a certain unit – a single entity.
Stars, spirals, sleep, sheep, sets, seconds, satyrs, smiles or sand grains –
all objects are subjects for counting,
as long as their individual units can be recognized.
Any two objects are separated by some space
and space can be measured in units.
These measures can be items for a comparative list, etcetera...
until one fails to find meaning and the item's separator is just
empty space .
In real life, except for quantity quality always matters.
It is perfectly possible to sell a quantity of pigs
in exchange for a selection of roots and a busty woman of bad reputation,
without knowing their exact number.
To belittle a people who only have use for counting numbers up to three
is no less barbaric.
The initial unit of arithmetic is one 1
and by repetition of 1.. you can count natural numbers.
The natural representation of zero
..is nothing!
0 = 1... [1# ] =
Don't think of addition as an operation on numbers.
Like zero, addition doesn't actually exist.
When we relate it to the first operation of multiplication, addition
can be defined as a zeroth operation – the operation without stars.
We add
all integers in our notation for natural counting automatically –
by simply joining their units with 0* space in between.
The old-style plus + operator
is unmasked here as an empty star.
= 1...1... [1#a 1#b] = a+b
Peano's
successor
function S(n) = n+1
uniquely covers all numbers 1.. starting from n=0
by iteration of S, and thereby defines the set of natural numbers.
But it is preposterous to name individual integers with a function or a set.
Who would order S(S(0)) baked eggs?
Mathematicians are crazy, and they still have to count!
(Count the (depth of nested) brackets…)
§1.0.2. Multiplication!!
There are two ways to define multiplication –
by repeated addition or by repeated substitution.
In our notation a*b the a
is repeated b times, which is a binary
operation on a pair (a,b) of numbers.
We use the single star * as operator,
to multiply left operant a (called the item)
by right operant b (the iterator).
= 1... [1#b 1:a]
We write multiplication as a*b and not as b×a
because we'd like to position higher iterators on the right.
The second evaluation above shows that multiplication can also be defined by
substitution
b [1:a] of value a for each unit 1
in natural number b.
# Context of empty operations
Classic mathematicians smoke the empty joint
ab [0^] of multiplication,
and next enumerate the single arrow a^b
of exponentiation as the first case of the a^..b
super-powers.
Addition isn't necessarily covered by multiple arrow operators
^.. [^#c]
as the reduction rule at one ^ or at zero ^#0
drops operator counter c altogether.
An arrow operator
a+b is not so simple to define.
To resolve an equation with good old-fashioned adding we explicate the
lower level
operation a+b with a plus.
But by nature addition doesn't belong to the world of arrow operators.
Most calculations we make rely on addition at a basic level,
but it is by no means clear how physical states and sizes can be taken together.
How do you add force to distance? It's impossible,
the qualities don't match.
Yet force measured in Newton multiplied by distance in meters amounts to energy
Nm = J in Joule.
Every quantity in nature is counted by some qualitative physical unit,
and only quantities of the same quality add up.
This makes us wonder, does there really exist such an arrow universe,
where joining the same qualitative units
a... [a#b 0^]
= a^b
is dimensional in nature?
And if not, because deep down under in zero space
we live in a discrete world of integer addition,
what is it that qualifies as distance or dimension?
According to a theory of
Gerard 't Hooft
information content depends on the surface of a holographic sphere –
ultimately square Planck lengths.
Perhaps ours is actually a universe of stars
a... [a#b 0*] = a*b
where the probabilistic walk of a quantum man
is to be measured in square root square foot.
In our experience multiplication is a messy business, in need of an operator.
Its classic notation ab
without an operator sign, obscures the arithmetical fact that we add
numbers by simply joining and counting them.
There doesn't seem to be any place for primordial zero 0
in a world of instant multiplication,
where all is 1.
In pure mathematics new constructs may arise from multiplication
that shy away from direct addition.
As such we propose the existence of a utopian
or infinite number line with a zero square
0*0 on its
inverse part.
# 1.1. Maths with make-up
§1.1.1. Signs
Variables are notated in lower case a,b,c,..
and can be replaced by numbers or by expressions reducible to numbers.
The number substituted for a variable depends on the context –
the parameters inside an expression of bigO
are defined to hold natural numbers [n≥1] larger than zero.
When you choose to substitute another type of number,
the justification for this is a special number theory.
A wildcard is written in upper case A,..,Z to
hold the place of any word (sequence of characters)
allowed on that position in the expression.
Bear in mind that a wildcard can often also stand in for an empty string.
Wild card R (sometimes S,T too)
is reserved to designate a row or part of a row of parameters.
In the following definition for a partial row R with n
non-zero parameters, the empty row is expressed when
n=0.
The
incrementor
i is repeated in the corresponding ellipsis
and incremented by 1 at each repetition.
The 3-point ellipsis ...
is a wildcard for a sequence, specified by a
meta-repetition
statement X#Y that follows after the expression.
A 2-point ellipsis .. can be used instead,
and if a meta-statement doesn't follow this ..
relies on the imagination of the reader to continue its series
(usually there is a minimum of one item).
We notate repeating operator signs with a superscripted
ellipsis ×... or ×..
An equation A=B or A=>>B
states an exact reduction step of the left expression to the right.
An expression does not contain an equality sign =
or an equal by iteration sign =>>
or an approximation sign
~ or some comparison sign < > ≠
or substitution sign := or mixed sign thereof.
The inverse unit -
generating the negative integers -*n is treated in the
next chapter,
as is omega ω.
Inverse units should be appended on the right n- of a number,
to tell them apart from subtraction n-1.
Because we use e as a 5th function parameter
and i more as an incrementing index,
the classic signs e for the base of natural logarithms
and i = √-1 for the square root of minus one,
are written as ê and î = -^2^-
You can find more special signs in the
Sign dictionary.
§1.1.2. Colours
Meta-expressions are notated in [violet] font. Both subscripts and meta-expressions preferably use star operator notation, with addition as zeroth star, e.g. [tm1;≥ab] specifies variables a+b < tm+1;
To typify individual variables, wildcards, etc. these are subscripted as:
Sign,red,orange.;;
Old style
expressions in brown font
use the operators +,*,^,^^,.. and apply old school
precedence.
Arrows and stars
a^...b [^#m]
= a*...b [*#m1]
can be used to express
super-powers.
Both operations result in the same numbers,
but the latter requires an extra star and there's the issue of
precedence.
-
Minority star
operators have colour
*..blackand define operatorial bigI. -
Operations with
majority arrows
^..navyare expressed by function bigE. -
Addictive plus
operations
+..greenare used in the construction of bigA. -
Sometimes an expression in a deviant context has the colour
kryptonite.
To improve the readability of bracketed expressions we've painted nested entries in the colours of the sea.
We've provided for the headers of the subdivisions in this book to be helpful as anchors, stamped in various colours. A box will contain more advanced material, a comment is a note attached to the main text.
Part
Chapter
Subchapter
Section
Box
Comment
Paragraph
Code Sub
note
Some more arduous (even tedious) samples from longer calculations
are currently hidden in the web version of the book,
but can be conjured up by clicking a dynamic link to
show the grinder!
You can
double click
the online text to highlight (and print) memorable passages in
yellow.
Your reading experience can be further personalized by selecting your own
page, highlight and font options in the small
form box
on top of this webpage.
The new settings are kept in a cookie on your browser.
Another interactive feature is the ability to hide (or show)
parts of the book with the X
close icon (or O
open icon)
at the top right of each chapter heading.
A copy of the chapters of your choice (but without yellow highlights)
is then kept in the
New Page
link that you can find (and click) above the main index.
So you can share just the chapters from the book that you like
by sending somebody a personalized link (this we recommend).
# 1.2. Meta-methods
The ravens sit on Óðins shoulders and say into his ear
all the tidings which they see or hear.
They are called thus: "Huginn" (Thought) and "Muninn" (Memory).
He sends them at day-break to fly about all the world,
and they come back before the noon meal,
so he is acquainted with many tidings.
Therefore men call him "Hrafnaguð" (Raven God), as is said:
Hugin and Munin hover each day
the wide earth over.
I fear for Hugin lest he fare not back, --
yet watch I more for Munin.
– Gylfaginning 38.
§1.2.1. Indication
Meta-expressions in square brackets [] for
substitution and
repetition
and in curly braces {} for set and class
offer us methods to formulate rules for the evaluation of expressions.
A meta-expression [X] can determine the range of a variable
or the length of a character sequence (a repetition of words)
in the preceding mathematical expression.
These notations will help to work out the reduction cascades of operatorial functions
and to approximate their relative speeds.
The notation for the range of a variable is familiar, e.g. n>0
to exclude 0 from the natural numbers.
When needed a meta-statement marks the empty space betwixt variables –
with 0* to add (our default)
or 0^ to multiply (your fault)
two neighbouring variables as a single number ab
(this we discussed
above).
A meta-expression contains a number m of
meta-statements Mi which apply in order
to preceding expression X.
To show which part of the expression the meta-statement applies to,
we will either quote the intended character(s), or point to their
. beginning and end . with inserted dots.
As subsequences S can be quite long – the new rule saves on paper,
but costs ink.
(o: the legendary ink dots :o).
Dot selection
is safe for expressions where surrounding A and Z
may contain S that must not change.
Indication of a subsequence by quotation in the meta-statement is
literal (or lazy) by default, but can be made greedy.
Where literal indicators substitute the character S
exactly as such, greedy indicators also target adjacent S
situated at the end of A or at the start of Z.
= AS...Z [S#3] (literal quote)
= AS...Z [S#3] (greedy quote) if A≠A'S & Z≠SZ'
Usually series of meta-statements are evaluated from left to right
– which is easy because it doesn't involve repeating
as yet unresolved meta-statements –
but when an ellipsis .. is itself repeated,
a stricter order of precedence from right to left applies.
Advanced meta-statements may refer to each other,
so that two (or more) take turn
in tandem.
Anything that either is or is not can be counted.
Every recursion starts with a single operation,
defined with an initial case and a single step.
With bird's-eye view we can reduce any number of steps to a single
meta-repetition.
We believe that, as the rules for the reduction of our Big number constructions
become ever more complex, the meta-operator # for repetition will come to
lead a life of its own.
So that in the end, the whole hip hop movement
between expression and meta-expression bursts open for
#.. quantification.
§1.2.2. Substitution
Every construction is built from units and substitutions.
This way we've defined
multiplication
a*b as a series of substitutions 1... [1#b 1:a]
of the units 1 in a natural number for another natural number.
In essence all notation is substitution.
Here substitution is first selection, the read –
which requires recognition and physical positioning –
and then replacement, the write –
which combines the acts of removal and insertion.
Our meta-statement of substitution is A:B
and more precisely A:B in P where the substitute word B
replaces A on the receptor site A
in the preceding expression or exclusively in part P
of the expression.
The evaluation is given by XAZ [A:B] = XBZ
and TPY [A:B in P:XAZ] = TXBZY, where all
A in X and Z are included
– recursively as X'AZ' etc. – but possible A
in T and Y are excluded from the substitution.
In case substitute B is empty then XA [A:] = X
removes site A recursively from each X'..A word.
On the other hand X [:B] on its own does nothing ,
because an empty site is normally not eligible for substitution.
Any substitution rule n [:1] = n1 of zero, would lead to
n1.. [1#ω] = ω
a definition of infinity.
We'd rather use ω directly, and apply (:n)
to the enumeration of characters in
hyperarithmetic.
# Hyperarithmetical code
The text on your screen is stored as binary codes in your computer –
Unicode boasts a fixed size of 16 bits and
65535 characters.
Similarly the symbols of an ever expanding mathematical system
can be translated to natural numbers :n
to form series of 1.. delimited by : stops.
For example :0 = should code for null
and :1 = X [X:1] = 1 seems onely
natural.
Follows the separator :2 = , for expression input,
plus a pair of brackets `at least`
for machine evaluation.
The translated sentences jump to the first hyperarithmetical level
h=1, which is in essence a table that swaps characters for numbers,
so the sign for substitution : applies.
What is called the hyperarithmetical hierarchy
would be the enumeration :h;n of a cascade of
hyperarithmetical jumps or code translations.
The purpose of hyperarithmetic for Big number lovers is obvious.
Using a lot of characters, you can enumerate them as
:1;1.. numbers substituting for
:0 (ground level) signs.
When you know how to streamline your axioms (the rules to evaluate expressions),
any size expression systems can be explicated by number.
If the coast looks clear and the weather is fine,
a Big number n can call some far away code :1n
sign, that would allow you in :0
to create even Bigger numbers n' with, round and round we go…
The recursion that arranges this would necessarily be written in the language
:1 of a higher hyperarithmetical level,
with an alphabet encoded :2;1 = 1 and
:2;2 = : to start with.
Then a higher loop can jump in to exploit the full power of
recursion over characters and levels in the :h;
hyperarithmetical hierarchy.
Just like
multiplication,
repetition of a word A by a whole number n
can be covered by two substitutions
A:n 1:A.
This works for all A (for XAZ subsequences
dot selection
or the in clause helps).
Repetition by substitution embodies a distributive law,
it doesn't raise issues when A.. [#n]
≠ n.. [#A] is not composed of (evidently) commutative factors,
such as omegas (and zeros).
Vice versa you can notate substitution A [A:B]
as repetition, by A...B [A#] which looks somewhat odd.
The A left of the ellipsis will be selected for repetition
by 0 and removed, so the B the tooth fairy appended is left.
Nothing is actually substituted –
what should have been a series was simply pulled out!
Though we use meta-repetition statements profusely, in our view
substitution is the True Way
, if only because it expresses
[0:1]
= 1... [1#ω]
= ω
infinity naturally, where the raven of substitution would fly off to a rapacious
.. [#1] =
0... [0#ψ]
= 1
end of the world, if ever, to meet the initial One
,
or else wait nine days for Him to fall
.. [# 0^]
= 0^0
= 1
from the Tree of More
remember?
§1.2.3. Repetition
We define a meta-notation for repetition,
applied in mathematical and logical expressions.
By extending it with smart
features
this will be our main tool
for constructing Big numbers.
Notate a repeated sequence A in an expression in the format
XAB...Z [A#n]
where B is optional and A
the first occurrence of the word A left of the ellipsis.
The meta-repetition A#n substitutes AB
in the expression n times for word A
while inserting the word B in between,
before every next A, in total n- times.
If all characters A
directly left of the ellipsis are to be repeated,
we can omit them from the meta-statement
with A...Z [#n]
We abbreviate a 3-dot ellipsis ... to a 2-dot ellipsis
.. whenever this is convenient.
Superscripted ellipsis ×... count operators,
e.g.
2^..3 [^#n]
= 2*..4 [*#n]
Extend our meta-repetition notation to cover double-sided recursive constructions.
Instead of the
formal
XA...CD...Z [A#n D#n]
an equal number of n
repetitions on both sides of the ellipsis will be written
A..C.D [A#n#D]
or alternatively as A.CD.. [A#n#D]
so if n=0 the term C remains.
If all characters to the left and/or right end of expression
A..C.D are repeated,
we can omit A and/or D from brackets with
[A#n#] or
[#n#D] and
[#n#]
Likewise for A.C.D..Z where Z is optional,
[#n#] repeats both A and D.
An expression AB.... [#m B..#n]
with two 2-dot ellipsis .. is a power tandem,
where the right or second hash #
repeats the ellipsis .. for the first, see example.
=[b:2]= a,a,,a,a,,,a,a,,a,a,,, =[a:2 ,:0*]= 2**4
A full
dimension box
with repetitions m=n can be marked with a square ellipsis ::
Such power and tetration-like
meta-repetitions should be evaluated from right to left.
§1.2.4. Variation
Reserve special meta-variables i,j,l,o
to allow repeated sequences to evolve.
The variables i and j signify
incrementors, repeated inside A
or (also) B.
Start at i=1 (default) and at each iteration
add 1 to i,
let it increase to n.
Variators l (el
)
and ο (omicron
)
are random enumerators, shorthand for
li; =
1... [#ni;>0]
is an integer n>0 and
οj; =
O(ω,Xj;)
for infinity.
Incrementors i or j
can be followed by an iterative ellipsis (or illipsis)
.:. or :.
The :. indicates the sequence in which
each preceding meta-variable is dealt with
(a telling
example
and a hard one with two incrementors handled by a
single illipsis).
It is used to override the
default
where the first ellipsis after the incrementor owns it.
Also a series of substitutions can be employed to address meta-variables,
as in O(v,...) [v#n v:Xi]
= O(Xi,...) [Xi#n]
# 1.3. The capacity of counting
Whenever Master Judi was questioned, he would just raise a finger.
Later a servant boy would also raise a finger
when outsiders asked him what the master taught.
When Judi heard of this, he cut off the boy's finger with a knife.
The boy ran out screaming in pain, but Judi called him back.
When the boy turned his head, Judi raised a finger.
Suddenly the boy attained enlightenment.
When Judi was about to die, he said to a group,
"I attained my teacher Tianlong's one-finger Zen,
and have used it all my life without exhausting it."
So saying, he passed away.
– Wumenguan 3.
Our choice to count fingers
1..
to finally represent Big numbers is not so primitive as it might look.
For practical Big purposes its capacity is comparable to decimal numbers,
even with exponential notation m.nE+p = m.n*10^p applied.
The principle of frugality then tells us not to waste characters
on extra digits to support an inefficient number base (radix).
Consider a moderate example:
A series of n ones can be noted down in
log(n) digits, concisely so it seems, but already when
n = 10^^10 = 10^... [10#10]
no (exponential) notation based on an integer radix r>4
offers adequate storage capacity.
= 10^^9 decimal digits, or 10^^8 in the exponent
The resolution of finger counting
is the same in every radix system – all natural numbers are covered.
Note that two natural numbers can represent a fraction n/m
or replace a decimal point n.m
Do the binary power towers 2^^n = 2^... [2#n]
increase by squaring and decrease by √ square roots?
Use the function lg below to refer to logarithms of 2,
so lg(a) = log(a)/log(2)
= 2^2^(2^^4+1) = 2^2^65537
= 2^2^2^(2^^3+lg(1+1/2^^4)) ~ 2^2^2^16.0000220
√(2^^7) = 2^2^(2^^5-1)
~ 2^2^2^(2^^4+lg(1-1/2^^5)) ~ 2^2^2^(65536 -7.2E-19729)
With respect to a number made by tetration a^^b
either squaring or adding 1 does not matter much to the result.
Apparently a system with a resolution where squares have meaning –
physical measures are inconceivable without –
does not have enough capacity to set most tetrated numbers
11***b and 11***b1 apart.
From a programmer's perspective the mathematical expression of a Big integer is
input, formulated by two or more character types.
The program itself simplifies this expression in several recursive
reduction steps, which typically require extra bracket character(s).
And the projected output
is a number of repeats of just the digit 1.
# 1.4. Cosmic information resources
§1.4.1. Our little universe
Max Planck(1858-1947)
The information capacity of our physical universe was recently estimated by
Seth Lloyd
at 10^90 quantum bits.
Any sequence of bits in a fixed state represents a number
– this way the random number the cosmos embodies
in an instant is ~ 2^2^299.
We can see no particular mathematical reason
why there shouldn't be more information around.
And indeed, Alan Guth's theories of big bang hyper-inflation
provide for an exponential number of pockets of universes
of which ours is only 1.
Whether the size of the larger mathematical physical substrate is unlimited,
we do not know.
Fact is, we're stuck with Planck units,
quantum particles and astronomical constants,
which put a physical lid on the size of the information
our universal laptop
can process.
Suppose the cosmic processor calculates at a fixed rate of
(2*(2*2)!)! Planck impulse moments per Planck time unit of
10^-43.2683 s. This algorithm results in
a constant energy in the universe of 10^71.1835 J,
which divided by Einstein's square of light speed
amounts to 10^54.2298 kg
approximately the observed mass in the cosmos.
Most information is packed in dark matter and stellar objects,
humanity happens on the fringe of cosmic computation.
We wonder, is intelligent life a kind of software corrosion,
or are we quality – meant to be – on top of quantity?
If life is important so is ethical behaviour,
if the universe is important so is religion.
Operating on the edge of randomness and determinacy these bits of life
cannot grasp and hold their own raison d'être.
On the other hand, this universe
– which looks continuous but deep down is discrete –
might be a virtual mirror of an earlier Real One,
which numerically bugged the Gods called Great.
Then what happened to our real selves?
And where are We all??
In a cascade of Transcending importance??? [ write on :-]
According to Seth Lloyd the number of logic operations
performed thus far is 10^120 ops.
So a digital disk with a perfect copy of the universe up to the present day
puts maximally 10^210 bit configurations in causal order.
This seems to convert ops from time to space,
but the cosmic Planck grid counts only 10^60.9 time units up to now,
and the laws of nature constantly zip up
all quantum-events with a physical variant of Jpeg-compression.
Universe, earth, body and mind – all have limited resources.
Use them wisely… (read on :-()
Somewhere after stars stopped shining,
black holes evaporated and a Big Crunch rolled us all up,
the history of the universe must end.
We estimate the size of a total copy of cosmic history between 10^100
and 10^300 bits, expressing a random number below the ceiling of
2^2^830 ~ 2^2^2^10.
Left on its own the cosmos never will be able
to express a modestly Big random number – for example of size
5^^4 ~ 2^10^2185
~ 2^2^7257 ~ 2^2^2^13 –
even though mathematicians know such numbers exist, in abundance…
(this is a proven theory, called the
frivolous
theorem of arithmetic :-)
Because we can easily express very Big numbers by iteration of functions, Big physical
number holes
are gaping in-between, where random natural numbers hide
which are inexpressible
given the resources of our universe.
Big random numbers are physically infinite
and cryptographically safe for alien computers (that's a promise ;-)
The sole way to address random Big number individuals, hiding in physical infinity,
is by chance [or
prayer
;-]
§1.4.2. Chance functions
Just as numbers can get astronomically large, extremely small chances surely exist. This is lovely – you don't know anything that can happen in the real world with 100% certainty. Perhaps your eyes were deceiving you, perhaps someone's memory was incorrect. Small chance? Ask a forensic expert!
Small chances make bad statistics.
To win the jackpot in the state lottery 10 times in a row
(buying a single ticket for each draw, without using your mafia connections)
is less probable than being the first man to have set foot on the moon
(when your name isn't Neil Armstrong. Don't you remember?
It happened when you were three: the Russians abducted you, they came there first,
the American moon landings were staged, as are the Chinese.)
Write a scenario, dissect it and multiply the probabilities of each separate event.
When you thought of everything and your estimates are right, the resulting product is a
lower bound for the total chance,
because events tend to correlate and other scenarios are possible too.
(This proves the number of connectable events in our world is vastly limited.)
To express truly Small chances, we have to refer to processes
that can only happen outside of the physical guya of our universe.
The proposition that we all live in a yellow submarine which entered a black hole
and came out in one piece on the other side, except that your intestines are inside out
(of which you'll become aware in about 3 seconds),
qualifies with a Small amount of uncertainty as wrong.
Yet it's infinitely more likely
than the construction of a spaceship powered by an Infinite Improbability Drive
somewhere in the unknown future.
But then we're talking infinities, and zero chance.
To say that the number of 9^^^^^^^^^9
ones shall be reached one day on your computer
by click starting the
series
1..
(multiple clicks allowed!)
and then just letting the program roll out, in our opinion
is harder to realize then the aforementioned world inside a submarine.
It belongs in the Guinness Book of Records as the Smallest non-zero
chance to date practically conceived by man.
Nature is random, therefore it's essential to be able to express
random numbers and their probability.
We propose these elementary functions of chance.
Let 2? = 0|1 [P(1)= ½]
be a flip
operation with an outcome of none or one,
both with even chances:
(2?)... [#p p↑ω 0*] =
p*11**- = p/2
Define a random number operation
n1? = 0|i... [|i#n]
with an equal probability
P(i) = 1/n for each choice, defined as:
$(m,n?)...*n
[#p↑ω m<n 0*] = p
$:
$(a,bi...) = 0 [,bi#k]
iff a≠bj | ... [a≠bj#k]
and
else $(a,bi...) = 1 [,bi#k]
iff a=bj & ...
[a=bj#k]
# 1.5. Addictive counting
There's more to counting than meets the eye.
In the real world for instance,
it's not obvious when we have counted all the objects we have.
Maybe later more items will be added, counting is a process, it never stops
(though it doesn't really reach infinity).
Therefore a more philosophically inclined mathematician
would consider all the natural numbers to be lower bounds.
And he would raise his arithmetical system up from this experiential fact
of counting.
a ≤ a+... [+#n n≥0]
We'll re-employ the plus
sign as a unary operator
+ acting as a count on a left operant.
This new +0 is the initial case
of a whole family of countable unary operators +c
culminating in the operatorial bigA.
We'll name these operations addictive (Latin addictio =
assignment
).
The start of + is 1 is familiar,
there's this given number a and we count one more.
The next step, operations with subscripts +1
results in doubles, of doubles, of…
Then
ai+1;.. ...
[ai:2? +1;#i≥0 #n]
expresses integers in a
random
binary system.
The basic formula for left associative operators +c
has the same footprint.
a+c1; = a+c;... [+c;#a]
a+c;... [+c;#b1] = (a+c;)+c;... [+c;#b]
Inverse addiction +-
is a strange beast – it does not exist (or inexists).
= 1& +-;... [#0]
= 1
<=
+-;+-;
= +-; = 0
More on addictive subscripting in
chapter 3.
Our main story line continues with super-power star operators in
chapter 2.
# 1.6. Ancient history of Big numbers
tatraika-stham jagat krtsnam
pravibhaktam anekadhâ
apasyad deva-devasya
sarîre pândavas tadâ
At that time Arjuna could see in the universal form of the Lord the unlimited expansions of the universe situated in one place although divided into many, many thousands.
"...Arjuna could see in the body of Krsna many thousands of universes. As we learn from Vedic scriptures, there are many universes and many planets. Some of them are made of earth, some are made of gold, some are made of jewels, some are very great, some are not so great, etc. Sitting on his chariot, Arjuna could see all these universes. But no one could understand what was going on between Arjuna and Krsna."
–
Bhagavad Gita 11.13
A.C. Bhaktivedanta Swami Prabhupada
§1.6.1. In Egypt, India and Greece
From the days of Egyptian hieroglyphs to Indian decimals to Renaissance exponentiation our ability to express numbers in a concise manner has evolved.
Of course the Egyptian numerals look differently,
but they were millennia ahead of their time –
using powers of ∩ = 10 as a number base
,
counting units instead of exponents, character typing powers instead of digits.
The hieroglyph of the worshipper unit on the right
signifies the megalithic figure of a million,
as well as infinity.
These signs for 1 10 100 1000 10000 100000 1000000 are at least five thousand petalled lotus years old, as the last three are inscribed on the macehead of the possessive Pharaoh Narmer of the first dynasty.
Some 3000 years later in zero-minded India the mahâyâna (Great Vehicle) buddhists developed a big thirst for stupendous baroque visions of the universal Buddha and the unspeakable numbers to count his huge host of followers and his manifold virtues in a library full of scriptures of which the most renowned is the Lotus Sutra.
# Counting on the Lotus Sutra
The Buddha answered the Bodhisattva Infinite Thought:
"Good son! If there be countless [10^?] hundred thousand [10^5] myriad [10^4] kotis* [10^7] of living beings suffering from pain and distress who hear of this Bodhisattva Regarder of the Cries of the World, and with all their mind call upon his name, the Bodhisattva Regarder of the Cries of the World will instantly regard their cries, and all of them will be delivered."– the Lotus Sutra, chapter 24 or 25
The All-Sidedness of the Bodhisattva Regarder of the Cries of the World
* note: Sanskrit original reads sattvakotînayutasatasahasrâni [10^21] in total
If there really is such a higher being (Bodhisattva Avalokiteshvara in Sanskrit) who looks down upon us and is capable of assisting at least 10^16 living beings in an instant, then this enlightening being (whom the Chinese call Guan Yin, a motherly figure like the Virgin Mary), or the God powered rescue mechanism he/she employs can only exist in a larger universe (Buddha land) of which ours is a small but accessible part.
The question is, "How much larger?"
We think the size of a divine lifeline must be exponential
compared to the being saved.
If the scales don't match,
the abstract spark of a soul may be lifted from its bodily enclosure,
but all physical information will be lost,
because it's too small to contain in a higher order transitory environment.
So if a small creature contains 2^k [k=18]
bits of personal information (such as the Name),
we surmise its helper God will at most be 2^(k-1)
times bigger than the creature's universe – not so very Big.
The Bodhisattva Avalokita, while moving in the deep course of Perfect Understanding, shed light on the five skandhas and found them equally empty. After this penetration he overcame all pain.
"Listen Shariputra! Form is emptiness, emptiness is form, form is inseparable from emptiness, emptiness does not differ from form. The same is true with perceptions, ideas, feelings and consciousness.
Hear Shariputra! All dharmas are marked with emptiness. They are neither produced nor destroyed."– the Heart Sutra
(Listen! It's back to zero again ;-)
Meanwhile in Greece the musings of the mind became more mundane and Euclid wrote his mathematical masterpiece Elements (300 BC) of which his foundation of geometry and in particular his postulate for non-parallel lines is best known because it gave rise to non-Euclidean geometry.
From Archimedes of Syracuse we have a treatise called
The Sand Reckoner,
where he calculates the maximum number of sand grains 10^63
that fit inside Aristarchus of Samos' heliocentric universe
(diameter ~ 2 light years).
Archimedes knew the law of exponents a^m*a^n = a^(m+n)
to manipulate powers of ten.
Then it's easy to derive the second law (a^m)^n = a^(m*n) too.
The largest number of Greek antiquity was
Archimedes'
108*1016 ~ 944 TB
Terabyte computer hard disks nowadays write away:
1 TB = 2^48 bit
§1.6.2. Untold number records
The largest and most grandiose work of buddhist literature is the
Flower Ornament Sutra
(Sanskrit: Avatamsaka Sutra, India 2nd century AD).
Chapter 30 The Incalculable
(Sanskrit: Asamkhyeya)
describes the largest numbers in ancient history,
but experts
disagree
on their exact size.
The three major translations calculate a series of squares differently,
resulting in different uncountable numbers.
The first Chinese translation by Buddhabhadra starts credibly by squaring the induction base x0=10^5 (Sanskrit: a Laksha). The second translation by Shikshananda is the more complete text and has a series of n=103 calculable squares. We propose the incalculable Asamkhyeya is reached at x104 by applying our squaring formula.
Note that Cleary's translation (which generally follows Shikshananda who starts squaring at x1 = 10^7) positions his induction base at x0 = 10^10 one square higher than Buddhabhadra. But on top of that he has 10 cumulative mistakes and 8 copying or printing errors, so Cleary's last calculable number at x103 is not accurate anyhow.
Philologically, the question why x104 = 10^(5*2^104)
is out of reach
in buddhism is of special interest.
During the traditional practice of mantra meditation
a monk keeps count of his prayers with rounds of 108 beads on his
rosary.
Past 108 there is no counting –
exposing a hidden property of that foremost uncountable number.
~ (10^3)^(3.2*2^103) = 10^(9.6*2^103)
< 10^(10*2^103) = x104 ~ 2^60 TB
The Buddha continues with a series of squared squares, that define the numbers
measureless x106,
boundless x108,
incomparable x110,
innumerable x112,
unaccountable x114,
unthinkable x116,
immeasurable x118,
unspeakable x120,
untold x122
and finally square untold x123.
Use our
squaring formula
to find the values of the Avatamsaka Sutra's countless numbers,
e.g. the unit untold
x122 = 10^(5*2^122)
on which even higher number records are based in the following verses [vs.2-3].
"If untold x122 Buddha lands are reduced
to an unspeakable x120 number of atoms
in an instant,
and in every single atom are untold x122 lands..."
= 10^(45*2^120) ~ 2^2^2^7
"...and this continuous reduction propagates for untold
x122 aeons,
then it's hard to tell their number."
Thus the exact number record of the ancient world is defined as
10^(45*2^120) universes.
The rest of the numbers in the story can only be estimated, and is subject to
speculation.
Though it's
historically
unclear what an instant is,
this question can very well be solved by modern science,
which says there are 1.855E+42
shortest instants of
Planck Time
in a second, a total of 10^47 moments a day.
Our aeon can be defined as the maximum period for life to exist in the universe,
which is probably until
star formation
stops after 10^14 years.
Then there are a maximum of 10^17 days in an aeon,
and a total of 10^64 moments.
In chapter 31 of the Avatamsaka Sutra called Life Span,
every aeon in the field of a Buddha is equalled to a day and night in
a higher Buddha world. The number of moments tr
in a Buddha's aeon is increasing at each reduction level r
of lands.
Our instant land formula calculates the exponential number of worlds
wr issuing from a level r
Buddha land, where w0 is the minimal field of Shakyamuni Buddha,
our stellar universe.
The constant u
is the number of universes resulting from one instant of reduction
of all the atoms of a Buddha land,
where u = 10^(25*2^120) is as quoted
above.
wr = u^tr ~ 10^2^(337+55*r) ~ 2^2^r [r>x5]
Let the reduction start in a Buddha land where the aeon consists of untold
x122 instants, then we derive from
tr its level r ~ 2^120.3
and the number of worlds issued from its atoms
wr ~ 2^2^2^126.
The next reduction level r-1
will result in a total of wr^2 lands
and so on, all the way down to the atoms of level r=1
as the last Sutra quote suggested.
In this continuous reduction the physical coefficients of tr
in our instant land formula don't matter much –
only the extra exponent does –
and the effect of the constant u is negligible too.
Still the estimated total number w of Buddha lands
appears immovable like Mount Sumeru. A
power tower
4 storeys high is the boundary of human imagination,
the machinations that follow lie beyond the veil.
Ψ.2. Towards the Ackermann numbers
§2.0.1. Star spangled super-powers
Allahu Akbar !
God is greater
– Call to prayer, Islam
Exponentiation (raising to a power ab)
is the operation which iterates over
multiplication.
We'll prefer the double star** here
rather than the arrowhead ^
to use as exponentiation operator.
a**b = a*... [a#b]
= a^b
Next comes the true super-power of triple stars *** which
Goodstein
called
tetration
(tetra = 4)
counting index 1 for addition (here 0 stars).
Our triple stars equals two ^^ arrows (arrowheads)
and adheres to Donald Knuth's 1976
up-arrow notation
(where the operant b always counts repetitions of items a)
and not to Ackermann's
phi recursion
(because Ackermann's own iterator b
counts the number of in-between operators instead).
a***b = a**... [a#b]
= a^^b
The insight that * is a countable unit,
dawns with the recognition that operators *..
can be expanded at will.
Of the various names for this family of operations that have been suggested,
Nick Bromer's
superexponentiation
is most instructive.
Note the super-exponential star operation isn't really built upon exponentiation
a**b which is the 2nd operation in a series starting with
instant addition
as initial 0th.
On second thought Bromer's term is visually and verbally overweight –
we'll use our super-powers
instead.
An n1 number of super-power stars in a*...b
equals n arrows in a^..b.
But there are differences with respect to their order of evaluation
or precedence in complex expressions.
With competing star operations a*..b*..c
smaller operations with less stars are evaluated before larger
operations (without brackets).
This we call minority precedence,
contrary to the majority precedence
you're used to since primary school, and which applies to the arrow operations of
a^..b^..c
In expressions where both stars and arrowheads appear,
arrow operations always take precedence and are resolved first.
Types of precedence are further investigated in
chapter 2.4.
To show off with our new super-powers,
we calculate a few
pentation squares
m^^^2 and
conclude with a more general tetration approximation rule,
where ~> is the sign for an algorithmic
successor.
5^^5 = 5^5^5^5^5 ~ (5^4.12)^^4 ~ (5^3120.)^^3
m***n ~> m**m-***n-
~> m**(m**m)(-*m)***n--
~> m**(m***d)(-*(m***d-))***n(-*d) [0<d<n-]
The initial super-power star rules are addition at c=0
and the case a*1 = a.
Next operations *..
are recursively =>> defined,
so that every reduction train stops at the initial case.
The basic super-power formula
provides for a countable number c of stars.
- a*...1 [*#c1 c>0] = a*...1 [*#c] =>> a*1 = a
- a*...11 [*#c1] = a*...a [*#c] so 2*..2 = 4
-
a*...b1 [*#c1] =
a*...(a*...b) [*#c *#c1]
=>> a*.. ... [*#c a#b1]
§2.0.2. Backslashes
The approximation of Big number algorithms often benefits from
a precision notation with backslashed operations
H\×..g
that assigns a lower level operation (the guest)
to a higher (the host).
Here the backslash \ invites a
guest operator ×..
with operant g on top of a host operation, such as
H = a×..b [×#c]
The backslash is dropped when the host
has fully counted down a single operator sign, as in
a×.. ...(a×..g)
[×#c- a#b-]
where the guest joins in with a direct (bracketed) evaluation
at the assigned (top) position.
We've pondered the virtues of backslashing,
and below you'll find a few instructive examples.
Star operations *.. are resolved by minority
and arrows ^.. by majority
precedence.
p****1111\***111\**11 = p***p***p***p**p**p*p
6+\5^^5\1+2^ = 11^5^5^5^33
1\3;a***b3 = a**a**a1**a... [**a#b]
2^^^3\\3;^8 = 2^^4\3;^8 = 2^256^2^2
The original backslashed operations stay unresolved,
but as soon as the host has shed a single star
– for backslash virtuosos ~
as many stars as we count off backslashes –
the activated backslashed operation is granted the highest priority.
Then these are evaluated from the inside out.
Subscripted backslashes \n
count from 1 to n,
but may do this in two directions. So that
g*\n;a^^b
counting up from left to right, and
a^^b\b1(-*n);*g
from the right down, apply to the same
nth exponent a in the host.
§2.0.3. Beyond logarithmic senses
This subchapter zooms in on tetration and super-powers. Skip the details if your interest is to get the Big picture.
We compare expressions of the form (a*..b)*..c
with the form a*..bd
and try to see what lies beyond.
Mind that
1\b;a^^b1 <
a^^b1\1 = a**...**a1 [a#b]
< a1^^b1
puts the
backslash
notation we've just invented to good use.
-
(a*b)*2 = a*bb
is a case from:
(a*b)*b = a*b^2 from:
(.a.)*b.. [#n#] = a*b^n -
(a^b)^2 = a^(b*2)
from:
(a^b)^b = a^b^2 from:
(.a.)^b.. [#n#] = a^b^n -
a^^b1 =
a^a^^b <~
(a^^b)^^2 = a^(a^^b-*a^^b) <~
1\3;a^^b1 [b>2] = a^a^a1^a^^b-- from: -
a^^bb- <~
(a^^b)^^b <~
1\b1;a^^bb- from: -
a^^bb-.. [b-#n-] <~
(.a.)^^b.. [#n#] <~
a^^1(n*b-)\b--;1
From 3 arrows onwards these expressions are exceedingly difficult to resolve.
It can be guessed from these comparisons that our minimal range
for pentation ^^^ is already very imprecise,
if not lost in jeopardy.
We look at the case for b=2 starting at a=3,
where a widening number hole is looming.
(3^^^2)^^^2 = (3^^3)^^3^^3 = 3^^(27+3^28) <
3^^4^^3 = 3^^(4^256) <
3^^3^^4 = 3^^(3^(3^^3)) = 3^^(3^3^27)
We'll boldly generalize our findings in a
super-comparison formula of super-powers.
In the cases below let ^.. [^#c c>2]
and its reduction *.. [*#c]
continue from where we left, after
tetration.
Mark the specified repetition dots ... violet.
As usual arrows take precedence before stars.
-
a^..b1 =
a*..a^..b
<~
(a^..b)^..2 = a^..b*..a^..b <=> -
a^..bm =
a*.. ...a^..b
[#m]
<~
(a^..b)^..m1 = a^..b*.. ...a^..b [#m] => -
a^..(b-*n)1
<~
(.a.)^..b.. [#n#] <
a^..b*n .
§2.0.4. Primitive recursive family
We'll first explain what recursion is and what primitive recursion,
and how all super-power stars *..
can be created just by primitive recursion.
This answers to the
meta-mathematical
need to classify a function according to the simplest means that generates it.
Recursion is an initial case plus an iterative function
which lets all next steps n1 follow from current step n.
Primitive recursion (p.r.) initially just
increments
a parameter by 1
as in F0(n) = n1
Next all steps n of functions Fc(R,n1)
are exclusively defined by
substitution
of a parameter in a known p.r. function Gc-(X)
at sublevel c-1
for a previous p.r. step of Fc(R,n)
The enumeration of p.r. levels c
is not made iterable by setting up an extra parameter c
to expand the function family F, so that the class
of primitive recursive functions remains closed.
As an example we'll generate a primitive recursive
function family Fac,
which is a bit special because we start with a function index -1
where 0 is more common.
Fa is faster than star
super-powers,
by Fac(a,0) = a
instead of a*..0 = 1 [*#c c>1]
so that for example
Fa2(a,1) = a+a*a
The
inverse unit
is used to signify both the negative index
- = -1 and subtraction as in a- = a-1.
For an explanation of the applied list markers,
check chapter 4.
- Fa-(a,0) = 1
- Fa-(a,b) = Fa-(a,b-)1 =>> 1... [#b1] = b1
- Fac(a,0) [c≥0] = a
- Fa0(a,1) = Fa-(a,Fa0(a,0)) = Fa-(a,a) = a1
- Fa0(a,b) = Fa-(a,Fa0(a,b-)) =>> Fa-(a,..a.) [#b#] = ab
- Fa1(a,b) = Fa0(a,Fa1(a,b-)) =>> Fa0(a,..a.) [#b#] = a*b1
- Fa2(a,b) =>> Fa1(a,..a.) [#b#] = (a**i)... [#b1 0*]
- Fac(a,b) = Fac-(a,Fac(a,b-)) > a*...b1 [*#c a>0 b>0 c>1]
Family Fac could very well have used one rule
Fa0(a,b) = ab for initialization.
Then only two axioms would have sufficed to define Fa,
one less than super-power star or arrow operations.
The reason why Fa didn't make it as a defining algorithm for super-powers
is that its properties are not so cool as those of multiplication, etc…
Because a*b = b*a is commutative and
Fa1(a1,b)
= Fa1(b1,a) is not.
And although the virtues of exponentiation a^b
are distributive, with a minor adaptation using logarithms the powers can be
rendered commutative
by
a^(log(b)*e/log(e))
where e is an arbitrary exponent / base.
# Ackermann level functions
Despite their manifold mathematical merits all
super-power
functions live on the same level {Κ.1} of
primitive recursion,
where functions {Κ.1.c1}
are compositions of (or iterations over) earlier primitive recursive functions
{Κ.1.c} (but not over any enumeration of such functions),
initially boiling down to addition and Peano's successor function
Ps(n) = n1 on ground level {Κ.0}.
In 1928 Wilhelm Ackermann proved a
conjecture by Hilbert
that there are recursions which increase faster
than any primitive recursive function.
These are the so called Ackermann functions {Κ.2},
which iterate directly over the enumeration c
of the primitive recursive order of functions.
Generally a higher level function building on super-powers should
substitute the star [*#c] or arrow [^#c]
operator counter, either for a nested subexpression
or for the accumulated value of the lower
iterator b left in its parameter list.
The former method of substitution belongs to Conway's chained arrows,
and the latter to our subscripted operators.
Chapter 3
will make clear that our method of uploading b is faster.
The Ackermann row level of functions beyond super-powers
can be subdivided in a number {Κ.2.n}
of recursive sublevels, separated by a single Ackermann jump
of which the initial one is described below.
In
chapter 5
we'll prove that each of the
chained arrows
advanced by Conway represents such an Ackermann jump.
The final value z of a row of chained arrow parameters of length
n counts the order {Κ.2.n.z}
of super-power-like iterations over Ackermann row sublevels.
§2.0.5. Ackermann's jump from primitive recursion
Wilhelm Ackermann(1896-1962)
Ackermann used a
primitive recursive
φ function (phi
) as a prerequisite to construct
the higher level Ackermann ψ function (psi
) in his article
"On Hilbert's construction of the real numbers" (1928).
The Ack_φ (φ) function is a
super-power
algorithm, it differs from star
operations only with respect to the initial cases for operators c>2.
After that it grows away slightly from super-powers,
though Ack_φ never catches up with the
upstart
super-power function family Fac
which raised its initial case earlier at
Fa1(a,0) = a
- Ack_φ(a,b,0) = ab = a+b
- Ack_φ(a,0,1) = 0
- Ack_φ(a,0,2) = 1
- Ack_φ(a,0,c) [c>11] = a (Ackermann's extra axiom)
- e.g. Ack_φ(a,1,11) = a
- Ack_φ(a,b,11) = a**b
- Ack_φ(a,1,111) = a**a
- Ack_φ(a,b,111) = a***b1
- Ack_φ(a,b1,c1) = Ack_φ(a,Ack_φ(a,b,c1),c)
If you'd replace the 2nd and 3d rule above by a single axiom
Ack_φ(a,1,c) [0<c<3] = a
the evaluation of all expressions of Ack_φ where b>0
will work out fine.
Compare the relative speed of the super-power functions from this chapter.
The three of them are relatively close, with differing values of b,
while arrows a^...b [^#c]
increase a unit value of c faster than stars.
- a*...b [*#c c>11] < Ack_φ(a,b,c) < Fac(a,b) [a>0 b>0]
We still owe you Ackermann's historical psi-function
which gave rise to the concept of the Ackermann numbers.
The whole Shakespearean purpose of Ackermann's Ack_ψ (ψ)
function was not to be primitive recursive, which succeeded gloriously.
Yet there was no mention of any Big numbers in Ackermann's
famous article.
- Ack_ψ(a) = Ack_φ(a,a,a)
-
Ack_ψ(i) =>> { 1, 4, 3^3^3^3,
4^^(4^^(4^^(4^^5+1)+1)+1), .. } -
ψ(4) =
φ(4,4,4) =
φ(4,φ(4,3,4),3) =
φ(4,φ(4,φ(4,2,4),3),3)
= φ(4,φ(4,φ(4,φ(4,4,3),3),3),3)
φ(4,4,3) = φ(4,φ(4,φ(4,4**4,2),2),2) = 4**4**4**4**4 = 4***5
The complications in working out the structure of the
4th
Ackermann number seems to prove
that his
extra axiom
is apart from being unnecessary also relatively unnatural.
Of course this depends on our view of naturalness, which is tainted by
Donald Knuth's up-arrow type of super-powers.
The cumbersomeness of defining extra axioms is not a strong argument in this discussion,
given the
leaner
physique of Fa with its
meaner
power operation Fa2,
which is just as unwieldy as a translation of
Ack_ψ(5) to arrows –
try for yourself.
Anyhow, without the extra axiom the resulting φ' function has
the same rules as the super-power stars of
bigI.
And the expression Ack_ψ'(4)
reduces to 4^^^4 = 4^^4^^4^^4 more straightforwardly
(in our eyes ;-)
# 2.1. Inverse and infinite iteration
§2.1.1.
Unit -
Notate new style
negative integers as repetitions
-*n = -.. [-#n] of inverse units.
The inverse unit -
can be defined destructively as follows, in star context,
also with the complex root î = i
- -1 [0*] = 0 (successor is zero)
- -*- = -**11 = 1 (square)
- (a*b)(a*c) = a*(bc) (left distributive law)
- 1- [0*] = (-*-)(-*1) = -*(-1) = -*0 = -.. [-#0] = 0 (add right)
- î*î = -
When we allow negative integers as values of iterators,
arithmetic is already enriched with division, square roots, etc.
There are many iteration operators, so the mathematics of inverse functions
is an abundant topic.
The elementary inverse sets comprise the negative, the rational
and the algebraic complex numbers.
a = ab(b*-) => {set-I}
a = (aI*b**-)*b => {set-II}
a = (aII**b**-)**b => {set-III}
Even though their real world approximation might well require infinite series, inverse numbers can be represented exclusively by countable units {1,-,*} and in this (notational) sense all inverse numbers are countable numbers.
The two inversions of super-powers can be represented
by a multiple division sign /.. for super-division
(division, roots and super-roots)
and by a new binary operator £..
for super-logarithms,
functioning as you would expect from conventional logarithms.
- (a/..b)*..b [/#c *#c] = a = (a*..b)/..b [*#c /#c]
-
a^..(a£..b) [^#c £#c] = b
with a£b = alog(b) = log(b)/log(a)
Perhaps a super-modulo operator %.. is helpful too,
but you won't see many inversion signs in this article.
The int function yields the integer part of a number, so that
int(2.7) = 2 and int(-3/4) = 0
a%..b [%#c] = a - int(a/..b)*..b [/#c *#c]
so (a*..b)%..b [*#c %#c] = 0
Beyond exponentiation little is known about the super-roots ///
and super-logarithms ££
of super-power operation *** and beyond.
We can speculate that every super-power creates new sets of inverse numbers
by combining earlier sets with the inverse unit
- in various equations.
A mathematician who can pave the way for such inverse super-powers surely has
Napier's bones.
§2.1.2.
Unit ω
The first number that cannot be reached by finite counting is
the natural infinity ω called omega.
Georg Cantor invented omega
to count (or name) the denumerable infinite set of all natural numbers.
By
definition
the unit ω is larger than any number
expressible by recursion over the units 1..
Starting from the above order relation on omega
and counting further with his infinite numbers (ordinals),
Cantor travelled into the realm of countable infinity (Cantor's paradise)
and never came back…
We'll declare ω to be the first unit of infinity
and apply ω in place of 1
to express much Bigger infinite numbers.
ω... [ω#ω] = ω*ω
ω*... [ω#ω] = ω**ω
ω**... [ω#ω] = ω***ω = ε0
ω*.. ... [*#ω ω#ω] <~ Ack_ψ(ω)
Only when our operatorial expressions fail to reach higher
a second infinity ω2 comes im Frage
.
So an infinitorial function bigOmega can be defined,
where Ω(1) = ω and
Ω(n) = ωn
and we can see that the road from Ω(0) = 1
to for example Ω(1,1) = ωω
never ends, but does have a beginning.
It's the beginning that's special –
and that is why our natural reality is probably virtual,
some game designed higher up –
and primitive mathematics is actually real and most important… ;–)
Concerning the domain and range of limits for super-power functions
as b tends to infinity – Euler's thematic
ê in the minimum and maximum of ***
captures our imagination and helps us derive the power twins.
u = a*b [b↑ω] =>
a↓0 => u↓0
u = a**b [b↑ω] =>
- ≤ a ≤ 1 => u*(u*u)- = 0
u = a***b [b↑ω] =>
0 ≤ a ≤
ê^ê^- => ê^- ≤ u ≤ ê
a = ê**ê*- = 0.0659.. =>
u = ê**- = 0.367..
a = ê**ê**- = 1.444.. =>
u = ê = 2.718281..
u = (n^n^-)^^b [b↑ω n>ê] <=>
n^n^- = u^u^-
<=> n^u = u^n
p^(p+d) = (p+d)^p [d↓0] <=>
p =↑ ê
(1+a^-)^a [a↑ω] =
b*(b!**b**-) [b↑ω] = ê
An exciting problem is whether the inverse values of function counter
c naturally classify recursive algorithms.
The rational number c=11^- for instance should be the operation
halfway between addition and multiplication, but what does that mean?
# 2.2. Deeper than counting
§2.2.1. Transcendental numbers
Leonhard EulerBerlin 1753
Transcendental numbers are defined to be those real numbers, which are not
algebraic.
Algebraic numbers give the solutions (roots x)
to polynomial equations, which are composed of addition,
repeated multiplication, constants ai
and an unknown variable x.
All polynomials with exponents 0<n<5 are
solvable by
radicals,
but most higher polynomials n≥5
cannot be simplified, as Galois (1832) showed.
For example, the quintic 2*x^5 + 5 = 10*x
is not solvable (Abel 1824), though it has 5 roots.
While the defining polynomial of an algebraic number is enumerable,
often that equation cannot be reduced to a simpler expression.
Of course its x can always be approximated
by iterating over some continuous algorithm…
Generally, for any class of functions there are numbers which cannot be expressed by recursion alone, but which must be created by mixing and inverting existing operations. And then there are higher transcendent numbers that escape any such definition and can only be approached by infinite recursion.
With the expansion of the function context many former
transcendental numbers
run the risk of finding expression.
In the
box below
we utter our doubts about pi π.
Together with π
a host of connected constants may fall from infinite grace.
Foremost ê, the base of natural logarithms,
which is connected to π via Euler's famous
theorem.
ê = 1(a**-)**a [a↑ω] = lim (1+1/a)^a [a↑ω] = 2.718281828459..
§2.2.2. Transcendent numbers
We've elected the term transcendent for numbers which
cannot be defined within a certain class of functions under inverse composition
(compare the
polynomial
composition above, which exploits the algebraic inversion
of the function class up to multiplication optimally).
Our recursive operatorials bigO travel well beyond the algebraic realm,
so the inverted transcendent numbers
that escape the net are a far more elusive set than the common
transcendental.
Real transcendent numbers
are supposed to be based on ω, for they can only be defined by
infinite iteration.
We assume the majority of all numbers to be really uncountably deep,
but appear helpless in constructing one…
# The countability criterion
Cantor's
omega
ω denotes the size of the set of all
countable numbers.
Because enumerable functions with countable parameter values
will only create countable numbers, Cantor's set of countable numbers
also contains all those numbers which are definable by hybrid functions
– finite combinations of finite sets of enumerable algorithms.
This applies to the number pi below,
because it is defined by the value ½
in Euler's gamma function –
essentially a hybrid of two operatorials – even though pi
can perhaps only be generated by an infinite series of a single operatorial.
When a transcendental number can be defined by an operation of type
a*..b,
it is not transcendent any more in the context of
primitive recursive
functions.
This may easily happen to pi π, which lost its
real transcendence
in the year 1730, when Leonhard Euler
conjured pi
from his Gamma hybrid of the
factorial and exponential functions.
= ½!*(-½)!*-½ = 3.141592653589..
In the context of a
factorial
algorithm halves n*(11**-) are
transcendent
constants. For other fractions like
Γ(1/3) and Γ(1/4)
there is no known definition, as Julian Havil notes in his giddy monograph
"Gamma".
All in all it's unclear whether transcendent units can be sustained.
There's always hope to rediscover each real constant
by clever use of finite recursive algorithms (in the future).
Yet the more advanced our mathematical functions, the more elusive the
transcendent numbers that can be generated by application of these functions
to infinite series.
So if transcendence isn't here to stay, it seems the continuous generation
of transcendent numbers will never stop
…flowing in ever wider streams towards finite solutions on ever higher levels.
A truly infinite phenomenon!
# 2.3. Big number holes
The tao that can be told is not the eternal Tao.
The name that can be named is not the eternal Name.
The unnameable is the origin of Heaven and Earth.
When it carries a name it is the mother of 10,000 pieces.
– Tao Te Ching1.
The larger the numbers we'll come up with, the bigger the holes in between
where random numbers hide, that cannot be expressed because we lack the
physical resources.
Even if all the quantum-information in our universe could be deployed
to write a single integer with a single arithmetical algorithm,
most Big integers would escape the net.
The image this conjures up in the mind of the observer is that of an
expanding mathematical universe of galaxies of numbers, surrounded and dominated
by dark matter which randomly falls down from infinity…
The earthly boundary for
random information holes
is at present given by
Google's
server size and time.
Google's current 10^18 bit will have to miss almost all integers
smaller than a
googolplex
or 10^googol or 10^(10^100)
and larger than (10^100)^(10^32) this year,
no matter how sophisticated their algorithms.
Here's why:
Define a finite algorithm to be a text (containing expressions with variables),
which is theoretically reducible
to a single number when non-random
values are substituted for each variable.
Expressions are theoretically reducible,
when we may work them out instantly in a hypothetical universe with
infinite resources.
In a physical space s an algorithm can be applied a t number of times, but in a notational universe the time factor is part of the number p of available places, so that s*t = p.
Let a notational universe with k characters and p places,
describe a finite algorithm.
With k characters on a places,
no more than k^a different algorithms can be defined.
The resolution of a number system with k characters
is never better than radix k,
so in p-a places maximally k^(p-a)
unique non-random values can be expressed.
If all the algorithmic variables are filled in,
the expression is reduced to one number
picked out of a total of maximally
k^(p-a)*k^a = k^p unique natural numbers.
To avoid doubles altogether, radix k can create unique (but smaller) numbers directly and without the fuzz.
State the Big number hole theorem
of algorithmic oblivion.
Given free resources of k characters and p places,
and a Big number m>k^p
together with its
algorithmic successor
n,
then the best estimate h of the total
of inexpressible natural numbers hiding in holes
between m and n,
is h = n-m-k^p ~ n.
To illustrate the theory, with 10^90 bits you can naturally express
any binary number below 2^2^299.
Suppose you use the first bit as a switch to a Big number algorithm,
then you lost half your options 2^(2^299-1)
and it is too hard to make up for it…
If there are two choices in our universe,
it is that expensive to pick one to apply.
<!- And that is why true Saints refrain from choosing –
they follow the great Tao, walking the middle path… :->
At such Big heights dwell number sequences,
packed with dazzling amounts of digital information –
which ordinary man can never touch, for he is only allowed to express the
very simplest of the words that go beyond this world.
This reveals the limitations of the operatorial methods you'll meet in this book –
given the resources of our universe the Big numbers we can produce
are nothing but tiny specks of extremely low information.
A sobering thought.
# 2.4. Rules of precedence
§2.4.1. Right minority and majority operators
Star * and arrow ^
operations are right associative,
evaluated while moving from right to left.
The various operations +,*,^ of the old school
reduce in the same direction.
Star associativity looks familiar, but our use of
minority precedence for these operators *..
differs from the majority precedence taught at school and applied to
the classic arrowhead operators ^..
The rule of minority precedence compares neighbouring operations
(those that share an operant), so that smaller or equal
operators must be evaluated before larger operators.
Same example:
111**111*111*111 = 111**111*111111111
Donald KnuthStanford 1998
The main advantage here is that we don't need extra brackets to further reduce the result of the operation. Usually after an operation is addressed for evaluation, its reduction takes place within brackets.
Donald Knuth's up-arrows continuing as
majority arrows
^R;..
will overrule the minority nature of
stars *S;..
so that in complex expressions a mix of
* and ^ operations
can be used instead of brackets.
The mutual precedence order
of these super-power operators is illustrated below.
At the factorial precedence position ( !
other unary operations also take place, but units come first,
such as number units 1.. which are joined by default.
In the formula for right minority stars the precedence function
G will eat away expressions from the inside out.
G(X*..a*..b) [*#m *#n n≤m] = G(X*..(a*..b)) [*#m *#n]
G(X*..a*..b*..Z) [*#m *#n *#p n<p n≤m] = G(X*..(a*..b)*..Z) [*#m *#n *#p]
G(a*..b*..Z) [*#k *#m k<m] = G((a*..b)*..Z) [*#k *#m]
# Presiding house rules
-
The units
xsubstituting for a number variable a:(x) and the signs ofXsubstituting for an ellipsis...or wildcard A:X will be evaluated within the expression they become part of. -
Backslashed
\operations will resolve when the host operator has counted down by1. Outer backslashes wait for inner. The usually right associative guest operationH\×Ghas the lowest right precedence. -
Parameter separators
,..and their dimension delimiter;let the parameter values work out first, as if within brackets. Operatorial separators are in principle controlled by function definition, not by associativity. -
Further left in our precedence pecking order come the comparison and
equality signs
~ = < >etc. (mixed) and the logical signs&(and),|(or). -
After this you'll read
textagain, which controls the flow (brackets areLords of the Flow
[ ;–). - Within meta-brackets [X] other signs take precedence over typical meta-signs and meta-signs # : will be evaluated last. Otherwise the default evaluation direction from right to left also applies to meta-statements.
§2.4.2. Operator comparison
Binary precedences in general work by scanning back,
comparing former operators n to the latter m,
until a pair of operators is found,
which fulfils the precedence's comparison rule.
Then the former operation of n will be evaluated,
and the procedure can start again.
In the case of
right minority
precedence, scanning back to the left,
the comparison rule [n≤m] demands
that for a right operator n to be evaluated,
it must be smaller than or equal to the operator m on the left.
Given right associativity and that we only compare for operator size,
7 distinctive types of precedence for binary operators can be put in the following order.
For left associative operators the signs < and >
should be reversed.
Minority precedence [n≤m] results in the biggest numbers
of all 7 types of comparison,
because the highest operators will be served the fattest operant values.
We have right associativity (straight evaluation n=n)
as a good second, the rest is trailing.
Try them on expressions like "2**3**2*2**3",
we still need more statistics! [above order was a wild guess :–]
The human approach would be to pick out the smallest operators and resolve them first. An expression ruled by right minority precedence can then be seen as subdivided by its larger operators waiting to be resolved – which appeals to our intuitive notion of larger vessels containing smaller ones – with addition at the bottom, corked in a bottle.
A series of number units such as ω1.. must be added
right associatively.
In the context 0^ of countable
arrows
a^...b [^#0]
the operation
with zero operators is multiplication,
and addition may not be represented by any number of
^.. operators.
If we place variables a b next to each other,
there is (by definition) no operation happening within the universe or
context where the operator rules.
There ab fuses to become one entity –
a single number
–
until a simpler context is taken into account.
In the context 0* of minority stars
the principle is clear – addition simply joins
two natural numbers 1..1..
While in arrow context 0^
two qualities or quantities ab are joined directly,
adding needs an
awkward
new old rule.
For quantities the prospect of such instant multiplication looks grim, but for the mathematical qualities of the units {1,-,0,ω,ψ} there is hope. Does it help us to obtain division by zero, the Holy Grail of the Dudes? Try me!
- 1^^-^- = 0^- = 1/0 = ψ (our utopian unit psi)
-
0.. [#ψ] =
0*ψ =
0 [0:ψ 1:0] =
1.. [1#ψ 1:0] =
ψ [1:0]
= 0^1*0^- = 0^1- [0*] = 0^-0 [0^] ~ 0^0
= 0/0 = 1.. [1#n<ω] ~ 1
Outside precedence
In an operatorial context the reduction steps on the outside
of an expression may be given precedence
over the reduction of inner subexpressions.
This distinction does not play a role of importance here yet,
but it does when waitor rules that
slow down and
speed up
operatorial functions will be presented in part 2 of the book.
Sometimes a reduction rule cannot be applied
to a subexpression in a particular parameter position.
Such a special rule is signified by a
right equal
sign.
It postpones the evaluation of a so called waitor
until another rule picks it up.
Theoretically, if the evaluation direction for functions would be strictly right to left such provisions for waitors are not necessary, because all expressions would be evaluated from the outside in and subexpressions that are not in direct iterator position should wait. But outside precedence for nested functions is counter-intuitive, because we usually like to evaluate smaller inner expressions first. To understand functions and to find short cuts it helps if we're not coerced into reduction by outside precedence all the time – hence the concept of a waitor.
§2.4.3. Various unbracketed
The lifespan of a pair of common fixed brackets is regarded as eternal:
( = (ω
On the other hand some parts of an expression won't need bracketing:
(0 = (.. [(#0]
With unbracketed evaluation the operants issued by intermediate reduction steps
are allowed to drift away and attach to neighbouring operators
before the original operation has been totally reduced to natural number.
After each partial reduction the whole expression should be evaluated again
right associatively from the outside.
Here we'll mostly apply plain unbracketing (0
which directly removes fixed () brackets from some given formula.
Imagine a type of temporary brackets (s
that last for a variable number of reduction steps #s
within the reduction train that carries them
(steps from other operations, outside or inside these particular brackets do not count).
The last reduction included in the cascade of s
is the step to an iterator value b=1.
Brackets (r with remaining steps r<1
are to be dropped from the expression before their contents has been evaluated,
after which the usual precedence of the operators prevails.
Brackets (r where r≥1
stay fixed after the original reduction train has past,
until their contents is resolved to a number (as usual).
Write the formula for Right/Left associative minority/majority
exponential star
operators with (s brackets
that count off the most primitive of steps.
-
Rm/m: (s;a**b1) =
(s-;a*(s;a**b)) =
(s--;a*(s-;a*(s;a**b-)))
=>> (r;a*..(s;a).) [#b#] where r = s(-*b1)i -
Lm/m: (s;a××b1) =
(s-;(s;a××b)×a) =
=>> (r;..(s;a).×a) [#b#] where r = s-b-1+i
Put step countdown s=0, so that
after the applicable rule has been processed the brackets (0
are dropped.
In the above formula this will work out to two or three different results
(and one irreducible expression, running to infinity).
The first case Rmin of unbracketed minority stars *..
is overall slower than arrowheads ^..
and hereby is determined that this unbracketing
is less powerful than 1 extra operator counted by c.
-
(0 Rmin:
a*b1 ->
aa*b ->
(.a*2).. [(#b#*2)]
= a*2^b
a**b1 -> (a*a)**b -> (.a**2).. [(#b#**2)] ~ 2^^b\^a
a*..b1 [*#c1] ~ 2^..b\^..a [^#c1 ^#c] < a^..(b+1) [^#c1 a>2] -
(0 Rmaj:
a^(b+1) =
a(a^b) =>> a.. [a#b1 0^]
a^^(b+1) = a^a^^b =>> a^.. [a#b1] - (0 Lmin: a××b1 -> a××(b×a) ↑ ω
-
(0 Lmaj:
a××(b+1) =
(a××b)×a =>>
a×.. [a#b1] = a^(b+1)
a×××(b+1) = (a×××b)^a =>> a^(a^b)
Compare (0 Rmin
with the unbracketing of a similar function Fa
to match bigA's addictive pluses in
chapter 4.2.
When a right minority operation is unbracketed,
the item operant a of the largest operator is expanded,
so that the numbers produced become Bigger.
This is shown below for exponentiation –
with larger operators differences like these tend to increment absolutely,
yet become algorithmically less and less significant.
- a**b1 = a*(a**b) < a*a**b = a**bb
- a*..b [*#c] < a*..a*..b- [*#c- *#c] < a*..bd [*#c c↑ω d↓0]
We hereby close this exercise of unbracketing subscripted brackets,
which is in the form where it counts off every single step (as defined
above)
a rather tedious tool –
similar to subscripted
backslashing.
However, with these we can express Big numbers that would otherwise be lost in the
black hole
of inexpressibility.
Perhaps our surgical Big number tools could be put to better use,
where each pair of brackets subdivides a larger number of steps in one go.
Such as when a whole level of iterators is counted down in some nested surge
and then a feedback operation ripples through…
Ψ.3. Chained arrows versus subscripting
§3.0.1. Conway's chained arrows
A large party of men, with To'uluwa, the chief of Omarakana, went to Tuma.
They landed not far from the Modawosi stone, when they saw a man standing there.
They immediately identified him as Gi'iopeulo,
a great warrior and a man of indomitable strength and courage, who had died recently
in a village not more than five minutes distance from Omarakana.
When they approached, he disappeared, but they heard distinctly
"Bu kusisusi bala [You remain I shall go]"
– the usual form of "Good-by".
– Baloma, the Spirits of the Dead
John Horton Conway
considers
his greatest mathematical discovery to be the
surreal numbers that he constructed by playing
Conway games
to fill in the gaps between Cantor's ordinal numbers
ω1..
Another achievement of Conway is his popularization of Big numbers in
"The Book of Numbers"
co-authored by Richard Guy,
where Conway shoots off a chained arrow notation
ai→... [ai#n]
which (for chains with n>3 parameters)
names
natural numbers far beyond the reach of
super-powers
and Ackermann's
Psi function.
Conway modelled his chained arrows after
Donald Knuth's
up-arrows, introduced
before
as the arrow operation
a^...b [^#c]
starting from multiplication at
c=0,
then exponentiation at c=1,
tetration at c=2, etc.
The principle that every next super-power ^.. [#c1]
is equivalent to a repeated number of preceding operations, is with Conway's
chained arrows expanded to an arbitrary number of parameters.
a^..b1 [^#c1] =
a^..(..a.) [^#c #b#]
<=>
a→b1→c1 =
a→(.a)→c..
[a→(#b#)→c]
ai→...y1→z1 [ai→#n] =
ai→...(.ai→...)→z..
[ai→#n
ai→...(#y#)→z
ai#n]
Conway and Guy's book doesn't tell what should happen with the single chained arrow
a→b.
This is
commonly
interpreted to signify the powers a^b
(plausible, for then all R→1 = R).
But can also be defined independently as multiplication
ab [0^]
(else reduction to a→b→0 is unreachable),
or as addition ab [0*] maybe
(because it's missing).
Conway's
formula
for the first row of chained arrows covers super-powers,
making a separate axiom for the basic 3 parameters unnecessary.
We'll support the historical interpretation of a→b→1 = a→b
to equal exponentiation,
and let this 2 parameter case be the initial axiom.
Lo and behold! Here come the first 4 parameters of the archetypical operator function
known as chained arrows.
- a→1 = a
- a→b1 = (a→b)a [0^] =>> a... [#b1 0^] = a^b1
- a→b→1 = a→b a→b→c→1 = a→b→c
- a→1→c = a a→b→1→d = a→b
- a→b1→c1 = a→(a→b→c1)→c a→b→c1→d1 = a→b→(a→b→c→d1)→d
We've presented Conway's notation in the same format as our operatorial functions
(see
bigE),
to make clear that chained arrow signs → are more like
parameter separators , than like operators.
Normally operations are resolved in order of
precedence,
that is by operator size,
but the evaluation of variables separated by chained arrows
is the sole consequence of their position in the row,
much like parameters in a function.
§3.0.2. A single operator subscript
A natural alternative to bridge the conceptual gap between operators
and functions is to create operator types
with coefficients in the form of subscripts.
Subscripted arrowheads are recursively enumerated operators
of a type which transcends super-power arrows.
We show the initial cases and steps over operator counter c and
type counter d of subscripted arrows with 4 parameters.
- a^1;b = a^...b [^#b]
- a^1;...b [^1;#c1] = a^1;.. ... [^1;#c a#b]
- a^d1;b = a^d;...b [^d;#b]
- a^d;...b [^d;#c1] = a^d;.. ... [^d;#c a#b]
At the very start operator subscripts are equivalent to chained arrows,
but when a>2 we promptly speed away.
In the example below, we conveniently use the
signs
2 and 3
in place of their representation in units 1..
2^d;...2 [^d;#c] = 1111 = 2→2→c→d = 4
3→3→2→2 =
3→3→(3→3) =
3^...3 [^#27]
<
3^1;^1;3
= 3^...(3^^^3) [^#3^^^3]
<
3→3→3→2 = 3^...3 [^#3^..3 ^#27]
<
3^2;3 =
3^1;...
[3#3^1;^1;3]
This should give you an impression
of the respective strength of these notations.
Note that in our construction of subscripted majority arrows
^Rj;..
a sequence of operators with mixed subscripts such as
a^1;^b does not
make sense yet.
§3.0.3. Passing a row of chained arrows
After the first 4 parameters the rest of Conway's chained arrows
follows easily.
Let the
wildcard R
substitute for a row of arrow→separated→parameters
of arbitrary length n>0.
- R→1 = R
- R→1→z1 = R→1→z =>> R→1→1 = R
- R→y1→z1 = R→(R→y→z1)→z
Because a→b = a^b there are no restrictions
on the range of values the two drop axioms apply to. And the
main
axiom without condition y>0 implies that
R→0→z = 1
(true as early as exponentiation). Fits like a clockwork!
Interestingly, the right part of a row
L→1→R =>> L→1→y→1
= L→1→y = L
collapses on the position of the parameter value 1.
This is a waste of expressive power or resolution,
for only the left (non-empty) part L is kept.
It's a bit awkward that we can't count down the last parameter z
to 0 which is the preferred initial index for our operatorial functions.
We'll define right arrows →
with this operatorial countdown property
below.
John H. ConwayPrinceton 1987
# Conway level functions
Conway's chained arrows are still functions on the
Ackermann row
{Κ.2}, albeit with arbitrarily many super-power order
{Κ.2.n.z} iterators.
The chained arrow
notation is remarkable, because it
covers
the Ackermann row level completely.
Every next chained arrow → represents an
Ackermann jump
after which the next sublevel {Κ.2.n}
is enumerated by a new final parameter z.
The resulting Big numbers are physically out of reach
for the closed lower class {Κ.2.n-} functions,
even though every function eventually reduces to 1..
Similar to the way Ackermann jumped from primitive recursion,
Conway extrapolated a higher super-chained ψ-arrow function
from his original chained φ-arrows.
These countable ψ-arrows
inaugurate the so called Conway level {Κ.3}
of general recursion and cannot be expressed by Ackermann level {Κ.2}
recursions alone, because Conway's ψ-arrows
increase the length n
of the first row of chained φ-arrows {Κ.2.n} directly.
Take the property that a rule expands the length n
of an Ackermann row of super-power iterators recursively
as the initial property of these new Conway level functions.
In
chapter 5.2
we prove that bigE's subscripted
^R;.. arrows
in turn cover all sublevels {Κ.3.n.z}
that can be created with Conway jumps.
The initial Conway jump is supplied below.
Now put Conway's chained arrow notation in φ-function format.
- Car_φ(ai,...) [ai#n] = ai→... [ai#n]
Conway went further as he hinted at a ψ-function or super-chained arrow,
by describing the first 4 values of Car_ψ in his imaginative
Book of numbers.
The concoction of a double →→ arrow-operator is apocryphal.
- a→b→1 = a^b = a*... [a#b] = a→.. ... [→#0 a#b 0^]
- a→b→...1 [→#c1] = a→.. ... [→#c a#b]
- Car_ψ(a) = a→a→→1 = a→... [a#a] = Car_φ(a,...) [a#a]
-
Car_ψ(i)
=>> { 1, 4, 3^^7625597484987,
4→4→(4→4→(4→4→256→3)→3)→3, .. }
The 2nd rule counts chained arrows directly when c=1
and from this Car_ψ follows in the line below.
Of the numbers Conway mentions in his book
Car_ψ(4) = 4→4→4→4
is already physically inexpressible
without resort to a function faster than super-powers.
§3.0.4. A row of operator subscripts
Comma separated coefficients
can be extended naturally by the same rules for subscripted operators
we saw
above
for operators ^d...
right up to the end of a first row
^d,..,z...
But it's not obvious how to handle the initial cases of operator subscripts.
The concept that a low level parameter can seed a very high one is called
uploading and the Big numbers created by such rules are unprecedented.
The next functions of e-init and e-step
choose for double upward substitution of
b for c=1 and d=1.
- a^1,1;b = a^b;...b [^b;#b]
- a^1,e1;b = a^b,e;...b [^b,e;#b]
Continue to apply this kind of multiple substitution
in the definition of subscripted arrow and star operations.
It should be clear by now that operant b, operator count c
and following subscripts d,e,.. are similar iterator parameters,
each iterating over a previous parameter
(with the provision that b iterates over constant a
and that a sequence of operators with
mixed subscripts
is not counted by arrows).
We'll suffix c before
a row of arrow coefficients to improve readability.
You should substitute
a^R;..b
[^R;#c]
for a^c,R;b
in this general formula for subscripted majority arrows,
to get the original countable operator form.
- a^1;b1 = a^0;(a^1;b) =>> a^0;... [a#b1] = a... [a#b1 0^]
- a^1,...;b [1#k1] = a^b,...;b [b#k]
- a^1,...,n1,R;b [1#k] = a^b,...,n,R;b [b#k]
- a^c1,R;b1 = a^c,R;(a^c1,R;b) =>> a^c,R;... [a#b1]
With uploading we substitute higher parameters
for a value accumulated in a lower parameter – that is b
in case of subscripted arrows and stars. Without this mechanism
it's hard to see how ordinary unnested functions can move into the
Conway level
of super-chained arrows.
Uploading parameter values from the first row
is definitely the way for us to conquer the next
dimension.
# Single parameter substitution
Functions defined by simultaneous substitution in the first row
can also be represented by recursion with single substitutions.
Having an earlier parameter (value b)
uploaded parameters ahead (substituting for d)
can just as well be covered by substitution to the next parameter
(b for c and
c for d).
For example, in the evaluation of a^1,e;b
you could opt to substitute b for c=1
and in the next step c for d=1.
The net effect of this definitional detour would be a double
upward substitution as usual, but when you count down e
the parameter dependent on it should be substituted at value
d=2 instead of d=1.
Take a step forward
to find our general upload axiom for
^R composed of intermediate substitutions
of single parameters as these are counted down to initial value 0
(instead of 1).
=>> a^b,..,0,z1;b [b#k] = a^b,..,z;b [b#k1]
Zeros are superfluous characters that make strange iterators
(though this procedure may well be used to define them).
Besides, the same rules do not work for subscripted
*d,e;
minority stars.
We take another direction in our micro-definition of upload by
single substitution of arrow coefficients.
=>> a^1,b1,b,..,z;b [b#k-] = a^b,..,z;b [b#k1]
Later, when we'll insert a new rule in bigI
to accommodate
mixed star
subscripts, you'll see that the capacity lost by bigI's
iterator collapse
is redeployed to lift it a level higher in bigI's
first row
with waitor.
So if chained arrows issue a
whole row
of similar iterator y destructions,
this dormant capacity in the keeping might just be the thing
that allows us to gracefully lift a function of mixed arrows
up to higher heavens.
# 3.1. Subscript mixation
§3.1.1. Mixed majority arrows?
Our
formula
for ^R;
subscripted arrows did not cover mixed subscripts
^m;^n;
[m≠n]
For a sequence of majority arrows with competing unequal subscripts the question is
which one to evaluate next.
We solve this issue by extending the fixity rules for arrow operations –
namely right associative
majority precedence
– to include subscripts.
Majority precedence will apply externally between two subscripted operations,
as well as internally in a single operation, where it chooses
the reduction to apply first.
The right associative order of evaluation is only decisive,
when subscripts are of equal size,
in other cases size determines which operator is evaluated first.
We do not use brackets in subscripts.
Subscripts live in a complicated multicultural environment, and the benefit
from wielding such an expressive tool is increased notational
resolution
(more numbers can be expressed).
We won't cover all the combinations,
but explain the most essential mixed arrows in a few examples.
The smaller arrow in the operator reminds us of the postponed
backslashed
operation – it waits its turn.
= a*1;b11\--a^m1;^n;b [0<n<m1] = a^n;^m1;b = a^n;^m;... [a#b]
After a certain reduction step the companion arrows
^n put on hold
because of smaller size, will merge with the new, equally subscripted operators
^m; [m=n].
Because mixed operators governed by majority precedence do not add substantially to the size of numbers (compared to subscript parameter value), these will be treated as an insignificant variant.
§3.1.2. Mixed minority stars
Also in the definition of *R;
subscripted star operations we extend their fixity rules –
namely right associative minority precedence.
These decide which reduction step to apply
to a combination of mixed star subscripts.
Subscript inequality unfolds as a great tool in the construction of Big numbers.
Given our observation that mixing of unequal
arrow subscripts
^R is insignificant,
we'll make a
bigO comparison
between the two subscript systems of
minority stars and majority arrows.
The sign <~ means the left expression is
algorithmically close(st!?) to the expression on the right, yet smaller.
a*1;*b = a*1;.. [a#b] <~ a^1;.. [a#b] = a^1;^1;b
a*1;**b = a*1;*.. [a#b] <~ a^1;^1;.. [a#b] = a^1;^1;^1;b
a*1;*1;b = a*1;*..b [*#b] <~ a^1;..b [^1;#b1] <~ a^2;(b+1)
a*1;*1;*b = a*1;*1;.. [a#b] <~ (a+1)^2;.. [(a+1)#b] = (a+1)^2;^2;b
a*1;*1;**b = a*1;*1;*.. [a#b] <~ (a+1)^2;^2;^2;b
a*1;*1;*1;b = a*1;*1;*..b [*#b] <~ (a+1)^2;..b [^2;#b2] <~ a^3;(b+2)
Star subscripts are way ahead – when they put value d=2,
arrows need a 2nd parameter e.
And when stars append the next iterator e,
arrow subscripts come to the end of their first row.
a*2;*b = a*2;.. [a#b] <~ (a+1)^1,1;.. [(a+1)#b] = (a+1)^1,1;^1,1;b
a*2;*1;b = a*2;*..b [*#b] <~ (a+1)^1,1;..b [^1,1;#b1] <~ a^2,1;(b+1)
a*2;*2;b = a*2;*1;..b [*1;#b] <~ a^b,1;(b+b) <~ a^1,2;(b+1)
a*3;b = a*2;..b [*2;#b] <~ a^1,b;(b+1) <~ a^1,1,1;(b+1)
a*1,1;b = a*b;..b [*b;#b] = a*b1;b <~ a^1,..;(b+1) [1#b1]
The progression of mixed stars versus unmixed arrows
gives us a tool to study similar systems at work on different levels.
Minority stars are comparable to
majority arrows,
yet the stars as defined by the first row of parameters in
bigI
travel on a higher function level past the 4th parameter
(compared to the arrows of bigE).
The general definition of subscripted minority star operations
has a somewhat broader scope.
-
aS*..b1 [*#c1] =
aS*..(aS*..b) [*#c *#c1]
=>> aS*.. ... [*#c a#b1]
where S = *Tj;;.. .:. [*Tj;;#kj; *Tj;;..#m]
where Tj; = tjp,tjpi,.. [tjpi#n tjq≠0] and Tj; > Tjd; [d>0] -
aS*1,..,1R;b [1#k] =
aS*b,..,R;...b
[b#k *b,..,R;#b]
same S with Tj; > 1,..,1R -
aS*1R;...b
[*1R;#c1] =
aS*1R;...*R;...b
[*1R;#c *R;#b]
same S with Tj; > 1R
The order of star subscripts *T; is quite
intuitive,
even if the conditional comparisons T > R
are difficult to define exactly. In the
reduction train
of bigI to natural number this is usually not a problem –
when we start from the evaluation of an expression
a*R;..b [*#c]
all subsequent mixed subscripts will satisfy these conditions.
# 3.2. Addictive subscripting
Sun-faced buddhas, moon-faced buddhas.
The three sovereigns and the five emperors. How pale they look…
For 20 years I've had bitter experiences.
I have descended into the Green Dragon's Cave. For whom?
I cannot tell the depth of it.
Anybody here with a clear eye? Do not be careless about this!
– Ma-tsu in The Blue Cliff Records 3.
§3.2.1. Minority pluses
The venerable plus operator snatched new meaning,
when we established addictive counting
with a left associative unary operator + and single subscripts
a+c;...
[+c;#b] in
chapter 1.5.
These pluses are ruled by very simple concepts.
As we already saw, in the 0th dimensional case
+ equals 1.
- a+0; = a+ = a1 = a+1
- a+c1; = a+c;... [+c;#a]
- a+c;... [+c;#b1] = (a+c;)+c;... [+c;#b]
In practice brackets are not necessary for the reduction of minority pluses,
but they help us write out definitions concisely.
For instance the last rule could be restated in two rules
for +0;
and +c1;
without brackets.
Now try to fit a 4th coefficient d
into this evaluation system,
modelling it after parameter d of
majority arrows.
- a+++;; = a++1;; = a+1,1; = a+a1; = a+a;... [+a;#a]
- a+++;;... [+++;;#b1] = (a+1,1;)+1,1;... [+1,1;#b]
- a+++;...; [++;#c1] = a+c1,1; = a+c,1;... [+c,1;#a]
- a+++...;; [+#d1] = a+1,d1; = a+a1,d; = a+a,d;... [+a,d;#a]
Expand this to a row of equally subscripted
+R; operators,
comparable to
majority arrows.
- a+1,..; [1#k1] = a+a,..;... [a#k +a,..;#a]
- a+1R; = a+R;... [+R;#a]
- a+1,..,1R; [1#k] = a+a,..,R;... [a#k +a,..,R;#a]
- a+R;... [+R;#b1] = (a+R;)+R;... [+R;#b]
§3.2.2. Mixability of pluses
The question arises whether we can successfully mix unequal subscripts
into the general definition of these unary plus operators?
Does the possibility of
a+m+n [m≠n]
work out naturally into a tremendously fast operator system,
parallel to the way mixed subscripts for
minority stars
followed up on
super-powers?
Because multiple pluses are left associative, as shown in the
last rule
the answer seems no
.
And indeed, if mixed pluses were ruled by minority precedence
we could conclude the minority pluses system by simple recursion.
But when we agree to apply
majority precedence
(with the operator sign
plux
×),
a larger subscripted ×R;
operator can extend the range from operant a
to include all the smaller subscripted
×R';
operators in between.
Given an expression with mixed pluxes,
the largest subscripted (leftmost) operator is evaluated first
and all the mathematical terms on its left
become subject to repetition (by character duplication).
Because a plux has a single left operant there's a nasty problem –
the iterator value to count these repetitions
has to be derived from the repeated sequence itself.
To achieve this the left sequence has to be reduced to natural number first.
And then the original unreduced left characters are to be iterated over.
This cannot happen in place, but requires two separate programme states.
Enumeration of states of computation is a complication issue
we will not dive into in this article.
Our focus is on
general recursion
and not
computability,
though we'll miss out on some truly Big numbers.
With unary operators mixed sequences such as in the general formula of mixed
minority stars,
if possible, will have to occupy some secondary space for evaluation.
For instance, a plux at the right end
could still employ the empty character space on its right to perform a calculation,
but this extension of operator sequences to derive an iterator value
essentially uses temporary (nested) right operants.
These alternatives of countable programme states
and virtual extra operants are not truly what operators are about.
Such constructions are better set in the framework of functions
and their operatorial extensions in
part two.
We will forget about majority pluxes
and happily raise bigA on the foundation of
minority pluses,
which look so simple but are to our surprise more powerful than the arrowheads
^.. of operatorial bigE.
This is proved in
chapter 4.2.
# 3.3. Arrows quarters
under 2010 construction
§3.3.1. Repainting up-arrows
The definition of Conway's
chained arrows
is apt to draw its own bow → skip the basic
trio
a→b→c = a^...b [*#c]
and derive super-powers directly from its axioms for the
first row.
That is, provided the
duo
is defined separately as
exponentiation a→b = a^b,
which slows the row expansion down by a parameter position,
compared to a more
rigorous
application of the scheme of chained arrows.
We will define a right arrow function using the sign
→ as a parameter separator.
On the operator axis a new algorithm for
what we still call up-arrows ↑
(though not Knuth's, but painted by Novaloka)
forms the basis.
Our notation applies the convention of majority precedence for arrow operators,
leaving out brackets when possible.
Let's walk through the different forms of up-arrows,
following the trail of an expanding row of parameters to the right.
-
An operator
↑.. [#z]= awithout operants to operate upon is strange, but naturalz = 1.. [#a] -
The initial up-arrows
a;0↑0;..are unarya↑..[↑#z] withzcounting their series. -
Then come the still unsubscripted yet doubly iterable binary up-arrows
a↑..y[↑#z] -
Continue with subscripted up-arrows
a↑R;..y[↑R;#z] which are unmixable, so you can either write for examplea↑x;↑x;↑x;yora↑x;↑↑yora↑↑↑x;yas [↑x;#3] is what's intended.
Within a series of up-arrows different subscripts will not mix – describe this property in a logical statement.
We've painted the new zubscripts
magenta (not red), to indicate that they shift to the right
–
with every final parameter z
as an operator counter (instead of the fixed red c)
and penultimate parameter y as the main iterator
(instead of a fixed b).
For instance the operation
a↑b,x;..y
[↑b,x;#z]
equals the expression
a→b→x→y→z.
This isn't just cosmetic –
we'll position those parameters that most increase function speed
(create the Biggest numbers) to the right of function arrays.
In the chained arrows
algorithm the double iterator z functions as operator counter
and has the greatest impact on the result, since there is no
uploading
of accumulated iteration values.
§3.3.2. Redrawing right arrows
In this chapter we define a right arrow function with
navy coloured separators
→ to distinguish it from chained arrows.
Right arrows
ai→... [ai#n]
are roughly similar to chained arrows, but have three major differences.
-
Of value importance –
the
a↑R;..operator counterzis counted down (virtually) to 0 (and dropped) instead of dropping1, in support of our general notion of operatorial functions. -
Of value importance –
when penultimate iterator
ycounts down to 0 and collapses, it is revived by the prestine value ofx. Only one parameter drops off, whereas chained arrows drops both last positions. -
Of parametric importance –
the main axiom of the
R→y→zscheme applies directly to the first two parametersa→zpast [a≠1 z≠1] the initial cases.
Because
a→b→c =
a^..b [^#c] =
a^0;..b
[^0;#c]
= a→0→b→c
seems to make sense,
in principle any parameter value zero in between could simply
collapse its position. Plausibly even those at the start.
- X→0 = X
- X→0→Z = X→Z
- 0→Z = Z
Helped by our collapsing insight, only two axioms – the
initial
and the
main
axiom – suffice to define the row function of right arrows,
together with its zubscripted up-arrow operators.
If however stuborn, we cannot accept axioms with zero values
0→ up front as item or in between as iterator,
then we must adapt our rules that count down from 1
to express the same state of affairs. We list them below.
-
a→1 = a↑
= a1 -
1→b1 = (0→b1)→b = b1→b
= 1↑.. [↑#b1] = b1↑.. [↑#b]~> 2*..b3 [*#b--] -
a1→b1 = (a→b1)→b
= a1↑.. [↑#b1] = (a↑..)↑.. [↑#b1 ↑#b]~> 2*..a3 [*#b-] -
R→1→z1 =
R→(R→0→z1)→z =
R→(R→z1)→z
[R:a]= a↑..1 [↑#z1] = a↑..(a↑..) [↑#z ↑#z1]
[R:a→x]= a↑x;..1 [↑x;#z1] = a↑x;..(a↑..x) [↑x;#z ↑#z1]
[R:a→Q→x]= a↑Q,x;..1 [↑Q,x;#z1] = a↑Q,x;..(a↑Q;..x) [↑Q,x;#z ↑Q;#z1] -
R→y1→1 =
R→(R→y→1)
=>> R→(..R→1→1.) [#y#] = R→(..R→1.) [#y1#]
[R:a]= a↑y1 = a↑.. [↑#z z:a↑y]
[R:a→x]= a↑x;y1 = a↑..x [↑#z z:a↑x;y]
[R:a→Q→x]= a↑Q,x;y1 = a↑Q;..x [↑Q;#z z:a↑Q,x;y] -
R→y1→z1 =
R→(R→y→z1)→z
=>> R→(..R→z1.)→z [#y1#]
[R:a]= a↑..y1 [↑#z1] = a↑..a↑..y [↑#z ↑#z1]
[R:a→Q]= a↑Q;..y1 [↑Q;#z1] = a↑Q;..a↑Q;..y [↑Q;#z ↑Q;#z1]
The translation from Novaloka's up-arrows to right arrows
doesn't look so smooth, but it's workable.
The numbers created by our right arrows →
are a single parameter Bigger than Conway's
chained arrows →
which is not terribly significant on a grand scale,
where parameter rows R can be stretched to arbitrary length.
If you'd like to see how the above estimate
a→b2
~ 2*..a2 [*#b]
of two parameter super-powers was reached,
click here!
-
a→2 =
(a-→2)→1 =
(a-→2)
1=>> (0→2)a = a2 -
a→3 =
(a-→3)→2 =
(a-→3)
2=>> (0→3)(a*2) = (2*a2)- -
a→4 =
(a-→4)→3 ~>
(a-→4)
*2=>> (0→4)*2^a ~ 2^a2 -
a→5 =
(a-→5)→4 ~>
2^(a-→5) =>>2^^a\^(0→5)~> 2^^a2 -
a→b [a>1] =
(a-→b)→b- ~>
2^..(a-→b) [^#b-4]
=>>2*..a\*..(0→b) [*#b-2 *#b-3]~> 2*..a2 [*#b--]
If we fill in the extremum 1→b1 in the main rule,
our approximation of the two parameter case turns out rather crude.
~> 2*..b3 [*#b--]~ 2*..3 [*#b-] =
2*..4 [*#b--] =>
b~1
§3.3.3. Mixing down arrows
under 2010 construction
Initially arrow expressions are without multiple subscripted operators – the opportunity for mixing didn't occur yet – this is where up-arrows and down-arrows do not differ in function and result.
- a←y←z = a↓..y [↓#z] = a↑..y [↑#z] = a→y→z
-
a←x←1←1 =
a↓x;1 =
a←x←(a←x←0←1) =
a↓..x
[↓#z z:
a↓x]
= a↑..x [↑#z] = a→x→(a→x→1) = a→x→1→1 = a↑x;1 -
a←x←y1←1 =
a↓x;y1 =
a←x←(a←x←y←1) =
a↓..x
[↓#z z:
a↓x;y]
= a↑..x [↑#z] = a→x→z = a↑x;y1 = a→x→y1→1
Obviously the final parameter z stays unmixed,
because it expresses the number of possible mixings.
Less obviously the penultimate parameter y
is reserved to contain a waitor
subexpression and shouldn't be subscripted or mixed.
Follow the translation rules for revolving arrows around the clock.
- a←R←x←0←z1 = a↓R,x;..0 [↓R,x;#z1] = a↓R,x;..↓R;x [↓R,x;#z]
-
a←1←1←2 =
a↓1;↓1;1 =
a←1←(a←1←0←2)←1 =
a↓1;a↓1;↓1
= a↑1;a↑↑1;1 = a→1→(a→1→1→2)→1 = a→1→2→2 = a↑↑1;2 -
a←x←1←2 =
a↓x;↓x;1 =
a←x←(a←x←0←2)←1 =
a↓x;a↓x;↓x
= a↑x;a↑↑x;x = a→x→(a→x→x→2)→1 = a→x→x1→2 = a↑↑x;x1 -
a←x←2←2 =
a↓x;↓x;2 =
a←x←(a←x←1←2)←1 =
a↓x;a↓x;↓x;1
= a→x→(a→x→x1→2)→1 = a→x→x2→2 = a↑↑x;x2 -
a←x←y1←2 =
a↓x;↓x;y1 =
a←x←(a←x←y←2)←1 =
a↓x;a↓x;↓x;y
= a→x→(a→x→xy→2)→1 = a→x→xy1→2 = a↑↑x;xy1 -
a←x←1←3 =
a↓x;↓x;↓x;1 =
a←x←(a←x←0←3)←2 =
a↓x;↓x;a↓x;↓x;↓x
= a→x→(a→x→xy→3)→1 = a→x→xy1→3 = a↑↑x;xy1 -
a←x←1←z1 =
a←x←(a←x←0←z1)←z
= a↓x;..1 [↓x;#z1] = a↓x;..a↓x;..↓x [↓x;#z ↓x;#z]
= a↑x;a↑↑x;x = a→x→(a→x→x→z1)→z = a→x→x1→z1 = a↑↑x;x1 -
a←1←y1←z1 =
a↓1;..y1 [↓#z1]
= a↓1;..↓..y1 [↓1;#z ↓#v] where v = a↓1;..y [↓1;#z1] -
a←x1←y1←z1 =
a↓x1;..y1 [↓#z1]
= a↓x1;..↓x;..y1 [↓x1;#z ↓x;#v] where v = a↓x1;..y [↓x1;#z1] - a←R←y1←z1 = a↓R;..y1 [↓#z1] = a↓R;..↓R-;..y1 [↓R;#z ↓R-;#y1]
More arrow quarters round the clock.
a↓1;↓..b [↓#z] = a↑1;..b [↑1;#z1]
= a→1→b→z1 = a↑1;..a↑1;..b- [↑1;#z ↑1;#z1]
a↓1;↓1;b = a←1←b←2 = a←1←(a←1←b-←2)←1 = a↓1;a↓1;↓1;b-
= a←1←b←b1 = a↑1;..b [↑1;#b1]
a←1←b←2 = a↓1;↓1;b = a↓1;↓..b [↓#b]
= a←1←b←b1 = a↑1;..b [↑1;#b1]
# 3.4. Recursive arrow mixation
under 2010 construction
§3.4.1. Revolving the axis
There's a beautiful
story
recalled by Richard D. Gill,
how John H. Conway derived a power tower of omegas ω
on a small blackboard, that he rotated 90° clockwise
to create a much larger infinite expression involving epsilons
εεε..
Using ω→2→3 = ω^^ω = ε0
to express ε0→2→4
is not so impressive as it seems, considering the chained row of omegas
ω→.. [ω#ω]
that must have been on Conway's mind when he invented his chained arrows.
We don't want to spoil Gill's story here. It gains interest when we
find a way to turn clockwise the very arrows Knuth and Conway started with!
This involves a revolution of the arrow's axis.
Of course the first turn is Conway's…
§3.4.2. The next revolution
bigΨ.II. Function sizes
part 2, Work draft
publishes: 2012
§II.0. Summary
In the chapters below you'll find a showcase of 5 different operatorials bigO* – created from their corresponding subscripted operators, which we've introduced in the first part of this paper.
-
bigI
from our
star
operations
a*d...b [*d#c] -
bigE
with
arrow
operations
a^d...b [^d#c] -
bigA
from
unary pluses
a+c... [+c#b] -
bigU
for the fastorial
a!b -
bigY's arrows
a←d;...b [←d;#c]
You've witnessed Conway's
chained arrows
in action before – this is an operatorial function in disguise –
and we'll work it over in the
first row
of bigY.
So you already have an idea of what is coming –
after the basic operations the first row of parameters will be defined
and then we start counting and iterating
over array lengths and dimensions and over
extra-dimensional types.
The challenge is to iterate in a smart way, to recognize and grasp each opportunity
to move the algorithm higher by feedback of iterators from down below –
thereby creating Big numbers undreamed of before.
In this 2nd part of the book the operatorials pass through 4
different levels of function classes together.
To each operatorial level we'll devote a separate chapter.
- bigO on super-power level {Κ.1} which covers the Grzegorczyk hierarchy.
- The first row of parameters, where {Κ.2} functions live on the Ackermann level.
- A square array with the many {Κ.3 = Λ:2.2} functions on the Conway level.
- Multiple array dimensions with the many {Λ:2.n} functions on the bigE level.
- Extra-dimensional parameters at {Λ:3} can be covered by bigI level waitors.
* Note on: bigO*, generic operatorial function O
The nomenclature is confusing here – the names "bigO"
(bigOh)
and O() and "bigOmega" and "Omega"
are already in use as measures for algorithmic complexity or function speed.
The primitive bigOh notion of algorithmic order just accounts
for the fact that the size of the numbers an operatorial function
produces is determined by the value of its highest positioned parameter.
We feel our operatorials are entitled to the name bigO, because of the shared property that all parameters are put in order of algorithmic weight. This allows us to compare a given operatorial on a whole range of parameters. To decide which operatorial bigO increases faster we first check the lengths of the parameter rows, and then the values of the rightmost differing parameter.
We originally opted for the generic function prefix O() because our
operatorials are constructed on top of a system of operators.
Also, a numerical property of our operatorials O(X,z)
is that final iterators z are count down to 0
(zero) and then dropped.
Related Big number functions such as Conway's chained arrows
may be called operator functions.
Ψ.4. Super-powers of bigO
§4.0.1. Generic rules
In those days the multitude being very great, and having nothing to eat, Jesus called his disciples unto him, and saith unto them, I have compassion on the multitude, because they have now been with me three days, and have nothing to eat: And if I send them away fasting to their own houses, they will faint by the way: for divers of them came from far.
And his disciples answered him,
From whence can a man satisfy these men with bread here in the wilderness?
And he asked them, How many loaves have ye?
And they said, Seven.
And he commanded the people to sit down on the ground: and he took the seven loaves,
and gave thanks, and brake, and gave to his disciples to set before them;
and they did set them before the people.
And they had a few small fishes: and he blessed,
and commanded to set them also before them.
So they did eat, and were filled:
and they took up of the broken meat that was left seven baskets.
And they that had eaten were about four thousand: and he sent them away.
– Mark 8.
An operatorial O is a container O(T)
with an array of parameters O(a,..,z),
where every next term is an iteration counter,
modelled after and expanding on previous terms,
and based on an initial case O(a,1).
The term basic refers to the
primitive recursive
function class or the super-power level of construction.
A related subclass is
Kalmár's
elementary,
which covers all functions defined by iterations up to multiplication.
To evaluate an expression of an operatorial completely,
it is reduced to the smallest possible number of operations on units.
Without other numeric units than 1
the final reduction of an operatorial must always deliver a
natural number.
This is what's meant with reducibility,
and every new rule should preserve it!
Creating operatorials for Big numbers is more of an art than a science.
Our bigE should capture all recursive functions under the hood
(if yours accelerates faster we'll catch up later),
by extrapolating the principles of
natural operators
to higher parameter dimensions and beyond.
We'd like simplicity to be our guide, but this is alas not trivial.
Contrary to popular belief it is not the higher
which rules the lower from above.
Operatorial higher constructs facilitate the lowest to iterate over
all other constructs below the higher.
In a fast algorithm the highest intervention –
characterized by z countdown – will happen very very rarely.
The post-reduction and post-countdown destructors
lay the foundation for all operatorials.
Both rules are marked here in the generic context for bigE.
The post-reduction axiom maps a single item (such as a natural number)
to itself.
Post-reduction in the context of bigI
can also be incorporated by its
addition rule.
The generic post-countdown axiom is most fundamental for bigO
as it puts a lower limit to all iterations,
but it can perhaps be overruled in a special case of z=0 such as via the
substitution definition
of
multiplication
in bigE.
-
O(a) = a
so O() = = 0 if a = 1.. [1#a] -
O(X,) = O(X)
so O(X,0) = O(X)
§4.0.2. Basic bigE
Traditionally multiplication is defined by repeated addition –
recursively in two steps.
Notice that the initial step of unity is already contained via
the two generic axioms E(a,0) = a, so the
zero-arrow
definition of bigE is not a complete fit, because it does not cover
multiplication by zero, which is unreachable as the iterator drops at
b=1.
- E(a,1) = E(a) = a
-
E(a,b1) =
E(a E(a,b)) [b>0]
=>> E(a... E(a,1)) [a#b] = E(a...) [a#b1]
= a+... [a#b1] = a(b+1) [0^] = a*b1 [0*]
You might like to leave multiplication untouched, there's
something
to say for that – just drop the single separator and collect the result
E(a,b) = ab = a*b
For bigE we are tempted to choose the substitution definition of
multiplication,
where the value b=0 is allowed to overrule the generic
post-countdown
axiom for once.
Unusual here is that a functions as an iterator over b,
while bigE's version of the
lonely separator
completely replaces all units 1 in a
by the value b
-
E(a,b) = E(1...) [1#a 1:b]
= b+... [b#a] = ba [0^] = b*a
Now how is this suddenly possible?
As the last single separator is dropped, the algorithm of bigE should
select the highest remaining separators to grab its parameters from.
At the lowest level dwell the empty separators
which add the unit parameters
that compose numbers –
so that finger counts
1 become available now… Contrived?
Naturally an iterator countdown is a zero-level process too –
dropping what seems to be a 0 number of separators ,
in between z1 => z.
Consider this a
context
where zero space 0, = 0* =
We can take the hair-splitting yolk to its amniotic extreme and define
addition in bigE
by assuming separators of size 0 and then
iterating over the two virtually separated values of a and b.
The result is the same as without the empty separator,
but that's what you always have with
addition.
-
E(a,...b1) [,#0] =
E(a1,...b) [,#0]
=>> E(a1...,...1) [1#b ,#0]
= E(a1...) [1#b1]
= E(ab1) = a+b+1 = ab1 [0*]
Recursive scheme Nº0 for bigE with 1 parameter.
Basic recursive definition of bigE with 3 parameters – first an example (exponentiation), then two (temporary) axioms.
-
E(a,b1,1) =
E(a,E(a,b,1)) =>>
E(a,..a.) [#b#]
= a... [a#b1 0^] = a^(b+1) = a**b1 - E(a,1,c1) = E(a,1,c) =>> E(a,1) = a
-
E(a,b1,c1) =
E(a,E(a,b,c1),c) =>>
E(a,..a.,c) [#b#]
= a^.. ... [^#c a#b1] = a^...(b+1) [^#c1]
Recursive scheme Nº1 for bigE with 2 to 3 parameters.
- 1.1. Root recursion: multiplication [defined by repeated addition]
- 1.2. Recursion example: exponentiation <= 1.4 + 0.0
- 1.3. Parameter destruction: second iterator collapse
- 1.4. Double iteration: super-powers
§4.0.3. Basic bigI
Follows the basic abc of operatorial function bigI,
called the big Iteration
. Compared to the big Expansion
of
bigE,
an advantage of bigI could be that it incorporates addition ab
with its initial pair of parameters.
The definition list of bigI covers
super-powers
with the 3d parameter c
counting the number of stars *..
of the corresponding super-power operation, multiplication represented by a
single star.
Here too, multiplication by zero cannot be reached by reduction
of any expression of bigI.
- I(a,1) = I(a1) = a1
- I(a,b1) = I(I(a,1),b) =>> I(ab,1) = ab1
- I(a,1,1) = I(a) = a
- I(a,b1,1) = I(a,I(a,b,1)) =>> a... [a#b1 0*] = a*b1
- I(a,1,c1) = I(a,1,c) [c>0] =>> I(a,1,1) = a
- I(a,b1,2) = I(a,I(a,b,2),1) =>> a*... [a#b1] = a**b1
- I(a,b1,c1) = I(a,I(a,b,c1),c) =>> a*.. ... [*#c a#b1]
Recursive scheme Nº1 for bigI with 3 parameters.
- 0.1. Initial destruction: post-reduction => 1.1
- 1.0. Initial case: succession => 1.1
-
1.1.
Root recursion: addition
[Drop axiom:
lonely separator
I(a,b) = ab] - 1.2. Destruction case: identity => 1.4
- 1.3. Primary recursion: multiplication <= 1.5
- 1.4. Parameter destruction: double iterator collapse
- 1.5b. Recursion example: exponentiation <= 1.5
- 1.5. Double iteration: super-powers
We'll continue modelling the operatorial bigI after mixed star operators, expanding the above lists to a row of parameters in chapter 5.3. As it turns out bigI is the big brother of bigE, whose first row is the next construction, building upon the basic parameters defined in this chapter.
§4.0.4. Axioms of addition
The recursive definition of addition in bigI is a threefold loop –
starting off as an induction step on two parameters,
it drops second parameters b=1 by succession,
which in turn destructs the function
post-reduction.
The case of b=0 must then be resolved
post-countdown
(not by
inverse construction)
to completely define addition as we like it
.
so I(a,b) = ab
But addition I(a,b)
is also the natural choice for an initial axiom of bigI.
It is then defined as a rewrite rule — to drop the lonely separator
comma , together with the function I brackets.
As was demonstrated as early as
chapter 1
the operator of addition is empty and redundant.
Succession
is surpassed by addition of 1, the next rule in bigI's definition list.
And the impractical rule of
post-reduction
of one unreduced parameter a is derivable by inversed application of the
post-countdown axiom.
so I() = I(0) = I(0,0) = 0 =
Therefore an addition which drops the lonely separator can function perfectly as a stand-alone axiom to deal with the final reduction of expressions in a super-power operatorial.
Compare the axiom of addition by
zero separators
in bigE.
We feel that countable separators
are an indispensable property of operatorials,
and that bigE applies this more rigorously than bigI.
However, with the introduction of
waitors
to accommodate mixed minority stars in parameters on the
front row,
the single value c=0
wasted on addition becomes the hallmark of bigI's
row expansion.
§4.0.5. Definition lists and function hierarchy
A function definition is an equation existing of a new
rule A=B,
defining a reduction from A to B.
With often appended a conclusion
B=..Z derived by iteration =>>
of the rule and/or from the preceding definition context.
This context has 3 types of scope –
from generic rules, from earlier lists, or from earlier definitions in the same list.
The four types of list markers (none, circle, disc, square) for definition lists rate the axiomatic strength of each new or rehearsed rule by placing it in the function's definition context (as printed in this article).
- salient = example, non-essential case dependent on a next rule in the same list.
- transient = recursive rule, part of the conclusion of a next rule in the same list.
- provisional = recursive rule, surpassed by a rule in a following definition list.
- fundamental = axiom, recursive rule necessary for all following definitions.
Within the same definition list provisional and fundamental rules
prescribe a certain order of application.
For example, the rule I(a,1,c1)
is listed before super-powers I(a,b1,c1),
prescribing that in case b=0 the former rule takes precedence,
even if the latter rule is declared without specifying that
b>0.
When a rule is not fundamental (an axiom),
it will be overruled by a more general definition in a following definition list.
Our job is to abstract new rules, create Bigger numbers
and keep the context expanding forever…
A definition list should cover an (intuitive notion of an) operatorial hierarchy
– in the case of bigI the
*... [*#n] operators.
The definition lists in this chapter present the basic context
of super-powers, so that each basic operatorial covers all subclasses
of the primitive recursive Grzegorczyk hierarchy.
GrzegorczykAuvergne 2008
# Grzegorczyk's subclasses
The number-theoretical space occupied by bigE, bigI and
bigA
with 3 parameters is known as the Grzegorczyk hierarchy
{Κ.1.c} of
classes
of functions closed under the operation of limited recursion
.
Limited recursion over class {Κ.1.2} for example,
means that you cannot step from exponentiation c=2
to power towers a^a^a directly.
From this Grzegorczyk proved that every
primitive recursive
function exists on a separate sublevel c.
We take addition as level {Κ.0} whilst
Grzegorczyk
calls this class ε1.
Grzegorczyk
in 1953 devised his own primitive recursive function family
to investigate his super-exponential hierarchy.
The operatorial function Grz is essentially his
(except at *notes).
-
Grz(a,b,-) = a1
(*Grz reversed
a <—> bwithc1as function subscript) -
Grz(a,b,0) = ab
(Grz's addition axiom, here enumerated by
c=0) - Grz(a,b,1) = a1*b1 (Grz's extra multipligation axiom)
-
Grz(a,1,c1) = Grz(a1,a1,c)
(*Grz put
0in parameterbon the left) - Grz(a,b1,c) = Grz(Grz(a,b,c),b,c) (the Grzegorczyk hierarchy)
This is a 3 parameter, multiple substitution, non-nested, non-alternating,
primitive recursive function.
Suppose we'd let drop the addition and the multipligation axiom,
and then rely on the rest of the definition list
Grz(X) => Gr(X)
to accelerate the cases c=0 and c=1
and thereby our new Gr expansion.
These functions stay super-powers –
they do not escape from primitive recursion like
Ackermann
did.
- Gr(a,1,0) = Gr(a1,a1,-) = a11 = a+2
- Gr(a,b,0) = Gr(Gr(a,b-,0),b-,0) =>> a(11**b) = a+2^b
- Gr(a,1,1) = Gr(a1,a1,0) = a1(11**a1) = 2^(a+1)+a+1
-
Gr(a,b,1) ~ 11***b\**a1 ~ 2^^(b+1)
(say multipligration in
Gr) - Gr(a,b,c) ~ a*...b [*#c11]
# 4.1. Inverse iteration
Because operatorials build natural numbers 1..
they shun the number 0 from their definitions.
Any awkward expression with an inner parameter value of 0
should be resolved by inverse recursion,
which iterates backwards from an initial value 1,
as is done here for the familiar 0
values of super-power iterators.
I(a,1,c1) [c>0] = I(a,I(a,0,c1),c) = I(a,1,c) => I(a,0,c) = 1 [c>1]
We try out inverse recursion to determine how negative operators work –
many solutions are the same and extract a successor function on b.
However, there are second solutions, can you see?
I(a,b1,-) = I(a,I(a,b,-),--) = I(a,b1,--) =>> I(a,b,-*n) [n>0] = b1
An aesthetic solution, but Peano will have to wait for negative eternity
for the ambiguity about true
negative functions to go away
– it is only the probability
of his successor function that rises…
A few hints for future research:
I(a,b,--) = b(a**-) = b+1/a or = (b-a-1)*a+2
I(a,b,-*m) [m>2] =>> b1 = b+1 or ad infinitum
Considering the fundamental role of the successor function
we may well be hallucinating here.
It's alright to define
I(a,b,-*n) [n>0] = b1 as an axiom.
There's an overwhelming amount of evidence to show that the operation that
precedes addition need not be difficult –
compare Gr or Fa-
above
and the translation of Rózsa Péter's recursion to bigI format
below.
Because the Big Lebowski calls this
zeration
and thinks highly of it, we've restated its law in double Dutch for all Dudes.
The inverse separator reminds us of the relations between inverse points,
counted by Newton's negative binomial.
E(a,,b) --> E(a,b) -> E(ab) --> E(a,..b) [,#-] = ?
The formula for primary negative iterators b
by application of inverse recursion, is given as an exercise.
# 4.2. From bigA to fractation
There is something unborn, unoriginated, uncreated and unformed.
If there was not, escape from the world of
the born, the originated, the created, the formed, would not be possible.
But since the unborn, unoriginated, uncreated, unformed is real, there exists a way out of this world of the born, the originated, the created and the formed.
Persistent in their meditation, resolute and strong, the wise reach out to conquer Nirvana, the highest happiness.
– Buddha
§4.2.1. Basic bigA and affiliates
Translate the rules for unary minority pluses to the basic parameters of a new operatorial function bigA.
- A(a,1) = a+ = a1
- A(a,b1) = a+... [+#b1] = ab1
- A(a,1,c1) = a+c1; = a+c;... [+c;#a] = A(a,a,c)
- A(a,2,c1) = A(A(a,a,c),A(a,a,c),c)
-
A(a,b1,c) =
a+c;... [+c;#b1] =
(a+c;)+c;...
[+c;#b]
= A(A(a,1,c),b,c)
We've described the case Rmin(0;a,b,c)
of unbracketed minority stars in
section 2.4.3.
We'll derive a slightly
faster
function Fb = a×...b [×#c]
by unbracketing the function family Fac
from
section 2.0.3.
It will then become clear that the binary function Fb()
and the unary operatorial A()
are the same, at least in the basic three parameters.
First restate the rules for function family Fac(a,b)
to Fa(a,b,c) in operatorial format.
- Fa(a,b1) = Fa(a,b)1 =>> Fa(a)b1 = ab1
- Fa(a,1,c1) = Fa(a,a,c)
-
Fa(a,b1,c1) =
a×...b1 [×#c1] =
a×...(a×...b) [×#c ×#c1]
= Fa(a,Fa(a,b,c1),c)
Assume the operator × of Fa and Fb
is ruled by
right minority
precedence.
Unbracket Fa by removing brackets
( -> (0 in the last rule of the above definition.
- Fb(a,b) = ab
- Fb(a,1,c1) = Fb(a,a,c)
-
Fb(a,b1,c1) =
a×...b1 [×#c1] =
(a×...a)×...b [×#c ×#c1]
= Fb(Fb(a,a,c),b,c1)
Because the two step reduction
A(a,b1,c1) = A(A(a,a,c),b,c1)
matches the main rule of Fb and the previous two rules are the same,
operatorial A equals function Fb
in the super-power context.
From this we conclude that for 3 parameters,
bigA increases faster than bigI
on two points – because Fa
starts squaring
sooner than bigI at b=1
and because its unbracketing to function Fb
mostly produces notably bigger numbers,
as it feeds the substituent expression to the larger operator
(this was explained in
section 2.4.3).
But how fast is bigA approximately compared to bigE?
The dagger sign † is used to cut calculations short.
-
A(a,1,1) =
A(a,a) =
aa = a*2
A(a,b,1) =>> A(.a.,1,1).. [#b#] = a*2^b -
A(a,1,2) =
A(a,a,1)
= a*2^a
A(a,2,2) = A(A(a,1,2),1,2) = a*2^(a*(2^a+1)) ~> 2^2^a †
A(a,3,2) = A(A(a,1,2),2,2) ~> 2^2^(a*2^a) ~> 2^2^2^a †
A(a,b,2) =>> A(.a.,1,2).. [#b#] ~> 2^^b\^a † -
A(a,1,3) =
A(a,a,2)
~> 2^^a†
A(a,b,3) =>> A(.a.,1,3).. [#b#] ~> 2^^^b\^^a† -
A(a,1,c) =
A(a,a,c-)
~> 2^..a† [^#c-]
A(a,b,c) =>> A(.a.,1,c).. [#b#] ~> 2^..b\^..a† [^#c ^#c-]
Unlike
unbracketed stars
versus arrowheads, when c>1
early riser bigA is always slashly ahead of bigE.
This is because:
a^^b < 2^^b\^a in which the final exponent
a < 2^a is dominant.
§4.2.2. Half-speed super-powers
Getting your hands dirty and making mistakes is recursionist practice.
In
chapter 2.1
we asked if there exists a continuum of algorithms
in the gap between super-power counts of c
of which we've so far only met the integer values.
This is a problem Stephen Wolfram
posed recently.
Natural candidates for the position E(a,b,½)
halfway between multiplication a*b and powers a^b for example,
are the binary exponential function a*2^b
or the factorial a! perhaps.
Today in our algorithmic laboratory
we stumbled across the following approximate evaluations for tryB.
- B(a,b,1) = B(aa,b-,1) =>> (.a.*2).. [#b#] = a*2^b
-
B(a,2,2) =
B(B(a,a,1),a,1)
= a*2^(a*2)
B(a,b,2) =>> B(.a.,a,1).. [#b#] = a*2^(a*b) -
B(a,2,3) =>>
B(B(a,a,2),a,2)
~> 2^(a^2*2^a^2)
B(a,b,3) =>> B(.a.,a,2).. [#b#] ~> 2^^b\^(a^2) -
B(a,2,4) =>>
B(B(a,a,3),a,3)
~> 2^^a\^(2^^a\^(a^2))
B(a,b,4) =>> B(.a.,a,3).. [#b#] ~> 2^^(a*b) - B(a,b,5) =>> B(.a.,a,4).. [#b#] ~> 2^^^b\^^(a^2)
This function tryB expands pairwise and
traverses the super-power hierarchy at half the speed of bigA!
But how does one construct the algorithm?
Should we supply an extra coefficient to store left parameter a
temporarily, or can we retrieve the appropriate variable a
from within the depth of all nests?
The first option would require us to remember these a
somehow as waiting on a particular c too.
We choose a nested notation, which keeps expressions
substituting for the first parameter unresolved,
until the outer iteration counts down to value b=1.
Nested subexpressions put on hold like this are called waitors.
We use the waitor mechanism to reduce super-power function speed
to a fraction of one half.
But tryB is not dependent on its special rules for waitors w.
The whole mechanism can be taken care of by the nested recursion
in the conclusion of tryB's
main axiom
(in the last line).
To indicate that tryB's special waitor rules
can be represented alternatively as nested recursion these are marked as
transient
(with left a small circle).
But when you'd insist on having a construction in the simplest of steps,
the waitor rules should be considered
fundamental.
Define our algorithm for tryB.
The substituent expressions w are waitors
B(v,1,c) nested to arbitrary depth.
Variables a and v
can be either natural numbers n or waitors,
where v is selected for reduction by unnesting.
- B(1..) [1#n] = n
- B(a,1) = a1
- B(a,b) = B(B(a,1),b-) =>> B(.a.,1).. [#b#] = ab
- B(a,1,1) = B(a,a) = a*2
-
B(a,b,1) =
B(B(a,1,1),b-,1)
=>> B(B(a,b-,1),1,1) = B(a,b-,1)*2 =>> a*2^b - B(v,1,c) == B(v,B(v),c-)
-
B(x,B(w),c) [w:
B(v,1,cd)c>0] = B(x,B(v),c) [d<2]
or B(x,w,c) [d≥2] -
B(a,b,c) =
(w,b-,c) [w:
B(a,1,c)] =>> B(.a.,1,c) [#b#]
= B(B(a,b-,c),1,c) == B(B(a,b-,c),a,c-)
=>> B(B(B(a,b-,c),a-,c-),B(a,b-,c),c--)
=>> B(.w.,a,c-).. [#b-#] = B(.a.,a,c-).. [#b#]
This fractional waitor algorithm has the following features.
-
A waitor is a subexpression in first parameter position
that has an inner parameter value b=1
with an iterable (non-initial) value in the outside expression's parameter
c(here c>1 is iterable).
Waitorswcannot be resolved in place, instead they must wait for the outer expression to be iterated down to b=1. We've talked about the application of outside precedence to functions before. -
There's an
initial rule
at a fixed low value of
c(here at c=0 and c=1) which resolves inner as well as outer expressionsB(v,1,c)directly – unconditionally and without unnesting (unlike waitors). -
A
selection rule
which cannot be applied in waitor subexpressions,
as indicated by the right equal
==sign. This postpones the reduction of nested waitors until the outer expression is resolved.
Officially
each waitorwmust wait for the value b=1 to occur in its outer expression, so that it is selected with the guarantee that its inner parametercis still intact for comparison by the next rule. -
A waitor
reduction fork
which is conditionally evaluated, dependent on the difference
dbetween the inner and outer value ofc. It either selects the next inner first parameter or just unselects the waitor so it can be reduced separately as a normal expressionBto become the next iterator.
If d<f (tryB has f=2 and d<2 means d=1) this reduction rule digs up the inner first parameter from the nested waitor. For nested subexpressionsw = B(.a.,1,c)..the reduction is recursive:
B(w,1,c) == B(w,B(w),c-) =>> B(w,a,c-)
Else if d≥f the waiting subexpression is substituted directly in iterator position, where the ex-waitor is reduced with priority, so it can subsequently be counted down by the main rule. This branch works like the more familiar super-power mechanism we met in bigA. -
A main
introduction rule
which substitutes first parameter
afor a waitor subexpression as it counts down parameterb. During the course of the iteration overbwaitors are nested to depthb- -
An
unofficial
short cut, overruling the default evaluation direction (from right to left).
Further on in the reduction of fractional super-powers (when the outercis counted down so that d=f) waitors can't be reduced by unnesting any more – essentially the waiting stops. Then we can decide to resolve these subexpressions as normal fractations, even when substituted in first parameter position.
In tryB the original parameteranested in the waitor becomes unreachable as soon as d=2 and it does no harm to resolve those ex-waitors, like we did in the last line of tryB's main rule.
It is sometimes difficult to realize we are still dealing with numbers here. For two examples of step by step evaluation of numerical expressions in tryB, click here!
B(3,1,3) ==
B(3,B(3),2) =
B(3,3,2) =
B(w,2,2) [w:B(3,1,2)]
= B(w1,1,2) [w1:B(w,1,2)] ==
B(w1,B(w1),1) =
B(w1,B(w),1) =
B(w1,3,1) =
B(w2,2,1)
[w2:B(w1,1,1)] =
B(w3,1,1)
[w3:B(w2,1,1)]
= B(w3,w3) =
w3*2 =
w2*4 =
w1*2^3 =
w*2^(3*2) =
3*2^3^2 = 1536.
B(3,2,3) =
B(w,1,3) [w:B(3,1,3)] ==
B(w,B(w),2) =
B(w,3,2)
= B(w1,2,2)
[w1:B(w,1,2)] =
B(w2,1,2)
[w2:B(w1,1,2)] ==
B(w2,B(w2),1) =
B(w2,B(w1),1) =
B(w2,B(w),1) =
B(w2,w,1)
= B(w2,1536,1) =>>
B(.w2.,1,1).. [#1536#] =
w2*2^1536,
w2 = B(w1,1,2) ==
B(w1,B(w1),1) =
B(w1,w,1) =
w1*2^1536,
w1 = B(w,1,2) ==
B(w,B(w),1) =
B(w,w,1) =
1536*2^1536,
B(3,2,3) =
1536*(2^1536)^3 =
1536*2^4608 =
3*2^(3^2*(2^3^2+1))
Prelude> 1536*2^4608 =
21508555048174302465876949175324489276722303317367625962613911393023535708309001
78680983067662471539315804775104840474528205150793642557204649350532414481362407
98199460785373402205046566762413511868871486946075012367733934401906436482634209
59419069734176249215449135598234647461283588582007188817294549851994894346936544
65285376410883677697566682011933691337122602607789253333664335939653210088009086
99770469576158631315246172393814114168729552291134778046293682760898673771130164
23519319173790600630511245345170358550201216597797145343678870759570666042935838
73996122460887992355390472801144634846876389929620929491842384582172483641434952
95188793678333958000373946494030710435917675778261498598834095731097965721642497
52594115967964661223700523122229635070400058206614546673319630344229139366308243
81426551272291648373590148626915038305230061956894736445177133599840169934060686
86541722487468972954615413466637605741404272180714146589918068237526297031550033
73427622995380922980483996219588881729412826516433562381873184009838669561476556
84391421837876739456716595598295903592305799885521657744249913875158756304330407
10054312458814812162316829404987960391540162046020325373999458283755441089542197
42529876945845356666207899983789154092325303066851863276617976497269531860721327
95718743734826255856889194790563371505928800555981765807151134341884599237347359
1937166512672488746198778249216.
A more precise mathematician may prove tryB's set of rules with waitors
cannot be derived by primitive recursion,
as the existence of the
Grzegorczyk
hierarchy suggests
(else his concept of hierarchic function classes is in reality less strict).
To us the above steps in the definition of
tryB
look quite primitive
,
but to prove that they are (as we conjecture) is not crucial for our discussion.
The striking feature of tryB is that it distinguishes
between even and odd values of c
in order to subdivide Grzegorczyk's enumeration of super-power functions in two.
Follows our proof that tryB
increases at half the speed of super-powers.
We take all reduction steps from the outside in –
with no resort to the unofficial
6th rule
for waitors – but with many short cuts.
Expressions of tryB are approximately translated to arrows
by means of
backslashes \.
To show the whole construction of our proof by example,
click here.
-
B(v,b,1) =
B(B(v,1,1),b-,1) =>>
B(.v.,1,1).. [#b#]
= B(v,b-,1)*2 =>> B(v,1,1)*2^b- = v*2^b -
B(v,b,c) =
B(B(v,1,c),b-,c) =>>
B(.v.,1,c).. [#b#]
= B(B(v,b-,c),1,c)) = B(B(v,b-,c),B(v),c-) - B(a,1,2) = B(a,a,1) = a*2^a
-
B(a,b,2) ==
B(B(a,b-,2),a,1) =
B(a,b-,2)*2^a
=>> B(a,1,2)*(2^a)^b- = a*2^(a*b) - B(a,1,3) = B(a,a,2) = a*2^a^2
-
B(a,b,3) =
B(w,1,3) [w:
B(a,b-,3)] == B(w,a,2)
= B(B(w,a-,2),1,2) == B(B(w,a-,2),w,1)
= B(w,a-,2)*2^w =>> w*2^(w*a)
~ 2^(a*B(a,b-,3)) ~ 2^..B(a,1,3) [2^#b-]
~ 2^^b-\^(a^2*2^a^2) ~ 2^^b\^a^2 - B(a,1,4) = B(a,a,3) ~ 2^^a\^a^2
-
B(a,b,4) ==
B(w4,a,3)
[w4:
B(a,b-,4)]
== B(w3,w4,2) [w3:B(w4,a-,3)]
= w3*2^(w3*w4) ~ 2^B(w4,a-,3)
=>> 2^^a-\^B(w4,1,3) == 2^^a-\^B(w4,w4,2)
= 2^^a-\^w4*2^w4^2 ~ 2^^a\^B(a,b-,4)^2
=>> 2^^a\^(..B(a,1,4).)^2 [#b-#]
~ 2^^(a*b-)\^(2^^a\^a^2) ~ 2^^(a*b+2) -
B(a,1,c1) =
B(a,a,c)
[c%2=0] ~ 2^..(a^2+2) [^#c/2].
[c%2=1] ~ 2^..a\^..a^2 [^#c1/2 ^#c-/2]. -
B(a,2,c1) =
B(w0,a,c)
[w0:
B(a,1,c1)]
= B(w1,w0,c-) [w1:B(w0,a-,c)]
[c%2=1] ~ 2^..(w1*w0) ~ 2^..w1 [^#c-/2]
=>> 2^..a-\^..B(w0,1,c) [^#c1/2 ^#c-/2]
~ 2^..a-\^..(2^..w0) [^#c1/2 ^#c-/2 ^#c-/2]
~ 2^..a\^..w0 [^#c1/2 ^#c-/2]
~ 2^..(a*2)\^..a [^#c1/2 ^#c-/2].
[c%2=0] ~ 2^..w0\^..w1 [^#c/2 ^#c--/2]
=>> 2^..w0\^..(..B(w0,1,c).) [^#c/2 ^#c--/2 #a-#]
~ 2^..(w0*a-)\^..2^..w0 [^#c/2 ^#c--/2 ^#c--/2]
~ 2^..(w0*a) [^#c/2] ~ 2^..w0 [^#c/2]
~ 2^..2^..(a^2) [^#c/2 ^#c/2]. -
B(a,b,c1) =
B(w,a,c)
[w:
B(a,b-,c1)]
= B(B(w,a-,c),w,c-)
[c%2=1] ~ 2^..a-\^..B(w,1,c) [^#c1/2 ^#c-/2]
~ 2^..a\^..B(a,b-,c1) [^#c1/2 ^#c-/2]
=>> 2^..a\^..(..B(a,1,c1).) [^#c1/2 ^#c-/2 #b-#]
~ 2^..(a*b-)\^..2^..a\^..a^2
[^#c1/2 ^#c-/2 ^#c-/2 ^#c---/2]
~ 2^..(a*b+2) [^#c1/2].
[c%2=0] ~ 2^..w\^..(..B(w,1,c).) [^#c/2 ^#c--/2 #a-#]
~ 2^..B(a,b-,c1) [^#c/2]
=>> 2^..(..B(a,1,c1).) [^#c/2 #b-#]
~ 2^..b-\^..2^..(a^2+2) [^#c2/2 ^#c/2 ^#c/2]
~ 2^..b\^..(a^2) [^#c2/2 ^#c/2].
The numbers expressed by bigA and tryB always lie
near
super-power multiples of two.
Factor a is dwarfed by the
repetition of items 2 produced by the double iteration over
b and c as the numbers get bigger.
Therefore tryA and tryB
are said to express a binary-exponential order.
The difference is that tryB moves at half the speed of tryA,
so its resolution
(the number range covered by 3 parameters in tryB)
is twice as good as super-powers.
under 2010 construction
# 4.3. Super-factorial bigU
§4.3.1. Extending the factorial
John WallisOxford 1701
The factorial operation a! = 1*2*3*..*a
hasn't received a proper update since John Wallis published
Arithmetica Infinitorum (1656) and his Algebra (1685).
We propose a new definition for an enumerable sign !X
as the operator of the upcoming operatorial bigU.
Because the general function is so fast, we've nicknamed it the fastorial
.
You can forget about the slow
superfactorials
Sloan & Plouffe and
Pickover
defined in 1995, those are both exponential hybrids.
For Big number lovers the factorial nature of the new
super-factorial a!b operation –
where b sits on the fastorial front row –
is paramount!
Our super-factorial operators !b
are always subscripted with a coefficient,
starting with !1
(the good old a! factorial)
defined by i*... [i#a] using an
incrementor
i.
Two factorials in a row a!1!1
= (a!1)!1
will be evaluated from left to right. Likewise a series of
mixable (not necessarily the same) super-factorial operators.
All fastorials !X are left associative.
You can compare this to the coefficient used in the short cut
formula
for majority arrows,
for which mixing unequally subscripted operators was deemed
insignificant.
The super-factorial !b is a unary operator.
Unary operations enjoy a higher
precedence
than binary operations, so for example
m*n!1 = n*(n!1)
evaluates the factorial with priority.
The b in a!b
functions as a binary operant on a,
but because we allow the subscript to contain more than a row of iterators,
we've practically done away with the notion of n-ary operators.
The operatorial function bigU comes instead.
Keep in mind that a number variable a
is a series 1... [1#a] of characters one.
Then a single 1 counted down to 0
will be a series of zero ones, nothing but an empty space.
Applying the generic operatorial axioms to bigU below,
the unsubscripted !0 = ! would equal 0
if it was allowed.
The third general axiom will be applied to counting down
U(1,b) and is unique for bigU.
- U(a) = a (bracket drop at a number)
-
U(A,) = U(A)
(right comma drop at
z=0)
so U(a,0) = a!0 = a -
U(,Z) = U(Z)
(left comma drop at
a=0)
so U(0,b) = 0!b = b
Follows the definition of the basic two super-factorial parameters of
bigU.
The evaluation of numbers with
zero space [0*]
in between follows the star convention,
so in a- = a-1 and
a1!1 = (a+1)!
an immediate form of addition takes place
(variables and units combine with precedence).
Work out a few cases with the new super-factorial !2
click here!
- U(1,1) = U(U(0,1),0) = U(U(1)) = 1
-
U(a,1) =
U(1...) [1#a 1:
U(a-,1)] = U(U(a-,1)*a)
=>> 1*i... [*i#a] = a!1 = a! (factorial)
-
U(2,2) =
U(U(2,1)*2,1) = 4!
U(3,2) = U(24*3,1) = 72! ~ 6.12345*10^103
U(4,2) ~ U(6E103*4,1) ~ 2E104!
U(5,2) ~ U(2E104!*5,1) ~ 2E104!! -
U(a,2) =
U(v*a,1) [v:
U(a-,2)] =>> (.2.*i)!1.. [#a#]
= a!2 ~ 2E104!.. [!#a-3 a>3] -
U(2,3) =
U(3!2*2,2) ~
1E104!2
~ 2E104!.. [!#1E104]
U(3,3) = 3!3 ~ 1E104!2!2
U(a1,3) ~ u!2.. [!2#a] & u = ((4!1*3)!1*2) ~ 10^104 <~ 5!! -
U(2,4) =
U(4!3*2,3) ~
4!3!3 ~
u!2!2!2!3
U(a1,4) ~ 4!3.. [!3#a1] ~ u!2!2!2!3.. [!3#a] -
U(2,5) ~
5!4!4 ~
5!1!1!2!2!2!3!3!3!3!4
U(a1,5) ~ 5!1..!2..!3..!4.. [!1#2 !2#3 !3#4 !4#a]
- U(1,b1) = U(b1,b) = b1!b
- U(2,b1) = U(U(b1,b)*2,b) ~ b1!b!b [b≥2]
-
U(a1,b1) =
U(v*a1,b) [v:
U(a,b1)]
=>> (.b1.*i)!b.. [#a1#] = a1!b1 (super-factorial)
~ b1!b;.. [!b;#a1]
~ 5!i...:.!b;.. [!i#i1 !i..#b !b;#a]
So you create a maximal predecessor subexpression v
by counting down the first entry a in an array of U.
Then retake the original expression U
and count down the leftmost available iterator (value not 1
unless it's the final entry) right of a
(here that's b which can be dropped) to form outer expression.
And substitute all units in the parameter(s) left of the outer iterator
(here each 1 of a) for inner expressions v.
§4.3.2. Speed of the super-factorial
The principle of
bigU
is to consequently replace every increasable construct
by the maximal predecessor v.
Just like a length is increased when we substitute its units of length,
a number variable is seen not as a whole number,
but as a series of units 1
(separated as it were by 0 commas),
which isn't increased directly but through its units.
This depends on the function of the single separator ,
for when the outer iterator lies to the right of a double comma ,,
the number of parameters is increased too.
In general only the rightmost increasable construct is significant,
which when substituted for v delivers a function
increasing approximately just as fast as bigU.
Simply replacing the whole variable a as in
Rózsa
Péter's recursion
has comparable strength.
(though she misses the factorial nature on our planet)~:
However, the problem lies in recognizing constructs,
we only (try to think like a Vegan:~) expand units 1 and ,
in expressions of bigU.
Two reasons why bigU's basic pair of super-factorial parameters is the perfect
Hînayâna motorcycle.
The original ideas are – substitution of the smallest dimensions
(the units 1) and multiple alternating recursions.
-
Instead of substituting parameters, bigU replaces the
lesser dimensions
1of its free parameter values. Here this amounts merely to multiplication, but it immediately kick-starts the engine. -
Fundamentally bigU is powered by alternating recursive rules or wheels.
Every front wheel
U(a,b1)depends on an existing rear wheelU(1,b1)which in turn relies on the front wheelU(a,b)for recursion.
Rózsa Péter calls this double recursion and proves it increases as fast as3-wheel
super-exponentiation.
Because the algorithm is so intertwined,
you'll literally have no idea what you're looking at when you see a number
as a function of U() and
this is a good thing, for all operatorials are heinously fast.
When creatures with logarithmic senses feel comfortable about Big numbers,
the golden brown Buddhas of Oblivion only if ever
frown |:–|
The algorithm for bigU is slightly faster than
having a!b1 count factorial signs
a!b.. by [!b#a]
Though in the end it converges to this double recursion,
just like super-exponentiation,
but bigU achieves this in two parameters instead of three.
a!2 ~ a^^a/a^^(a-1) <~ E(a,2,3)
a!b ~ a^..a [^#b] or E(a,2,b1)
And so the question, whether
the super-factorial !b
grows with step 1 on the super-power
speed-indicator
^.. [^#c] of bigE,
succumbing to the same c++
beat as our other recursive operatorials towards the end, is vindicated with a big
affirmative.
# 4.4. Operation Babelfish
In the Northern Ocean there is a fish called Kun which is many thousand li in size.
It changes into a bird named Peng whose back is many thousand li in breadth.
When it rises and flies, its wings are like clouds filling the sky.
– Chuang Tsu 1.
§4.4.1. Péter's recursion
Inspired by
Ackermann's proof
that primitive recursion is not the final word,
Rózsa Péter continued work on the classification of recursive functions.
Ackermann himself used a foundation of 3 parameters –
essentially an inflated super-power function
bigI –
but from her hand is a basic 2-parameter algorithm, which she built to put an
Ackermann φ
penthouse on top (it's sometimes presented as the
Ackermann recursion, though that's not historical),
and which employs the same alternating double recursion as super-factorial
bigU.
In this chapter we'll try to generalize Péter's Ackermann formula
by putting it in bigI format.
It feels like Rózsa would have sought such a translation herself,
but it's not in
her book.
The first thing we'll do is to reverse the direction of parameters in the functions which Péter and other recursion theorists like to use. For an intuitive understanding of the strength of parameters, we'll append every higher iterator to the right end, not to the start of the array. The last parameters create the Bigger numbers.
Pé(0,b1) = Pé(1,b)
Pé(a1,b1) = Pé(Pé(a,b1),b)
Here Péter's algorithm has the same recursive substituent
Pé(a,b1) as we saw in the basic pair of
bigU.
But in bigU every parameter unit 1 in a
is to be substituted (i.e. the parameter is multiplied a*v),
and Péter replaces her primary parameter in one go.
Therefore Péter must at least add n=1
to the single parameter a.
Else if she had put Pé(a,0) = a
then every reduction Pé(a,b) [a>0]
would have the same result m=1.
§4.4.2. Prefix Pe a parameter
Our operatorials do not change single parameters.
The principle is that a single variable has nothing to relate to.
We'll generalize Péter's formula so that any value n
can be added to its initial case.
This creates a recursive function in bigO style.
Because variable n has a minor effect on the result
it is positioned left.
Pe(n,1,b1) = Pe(n,Pe(n,0,b1),b)
= Pe(n,v,b) [v:
Pe(n,1,b)]Pe(n,a1,b1) = Pe(n,v,b) [v:
Pe(n,a,b1)]
In expression Pé(1,b1) Péter's algorithm
substituted v = Pé(1,b) where in
bigU
v = U(0,b) reduces to the smaller value b
(the difference is not so significant – it doesn't happen often).
We could generalize the 2nd item in the above formula to contain
all cases v = Pe(n,m,b)
by prefixing another coefficient m to Pe's parameter array.
Still m would remain constant, while the substituent in bigU
varies during the course of the reduction.
Moreover, for a clean result m
is dependent on the value of n as shown
below.
First we rename the variables.
The n of Pe
should get the name a –
note that a is not counted down.
Formula Pa is the operatorial form of Péter's recursion.
- Pa(a,b) = Pa(ab) = ab
- Pa(1,1,c1) = Pa(1,Pa(1,1,c),c)
-
Pa(a,1,c1) [a>1] =
Pa(a,Pa(a,m,c),c)
[m:
Ma(a,c)=a-k] - Pa(a,b1,c1) = Pa(a,Pa(a,b,c1),c)
The 3d item in this definition list is newly introduced
and provisional.
In the reduction of expressions Pa where
a>1 and b=1
the nested inner iterator m
is replaced by a-kc
where kc<a and so 0<m<a
simplifies the expression.
We still have to find out about m and leave it open for the time being.
It's time to listen to the fish…
§4.4.3. Pa gone fishing
In the following 3-parameter translation Rózsa Péter's function behaves perfectly primitive recursive, as it finds expression in the super-powers of bigI.
Pa(1,b,1) =>> Pa(1,..1.) [#b1#] = b+2 = I(2,b3)---
Pa(1,b,2) =>> Pa(1,..1.,1) [#b1#] = b*2+3 = I(2,b3,1)---
Pa(1,b,3) =>> Pa(1,..1.,2) [#b1#] = 2^(b+3)-3 = I(2,b3,2)---
Pa(1,b,c1) =>> Pa(1,..1.,c) [#b1#] = I(2,b3,c)---
We
wrote
the first parameter as a=m+k because
it's not obvious what a good value for k is.
(It says somewhere in our lost calculations that if a>2
then k=2 …and all will be well?!)
Keep things open with a provisional inner substituent
mc:=Ma(a,c)
to be determined by variable c.
Pa(a,1,1) = Pa(a,Pa(a,m1;)) = aam1;
Pa(a,b,1) = Pa(a,Pa(a,b-,1)) =>>
Pa(a,..m1;.) [#b1#]
= (a*b1)m1; =
I(a,bx,1)-(a*(x-1)-m1;)
Pa(a,1,2) = Pa(a,Pa(a,m2;,1),1) = (a*(a*m2;1)m1;1)m1;
Pa(a,b,2) = Pa(a,Pa(a,b-,2),1) =>>
Pa(a,..m2;.,1) [#b1#]
= (a*..m2;.1)m1;
[#b1#]
= (m2;+1)*a^(b+1) + (m1;+1)*(a^i+...+1)-1
[a^i#b]
It looks like we're at a loss, but it's not too bad. To continue, consider case a=2 and put mc=1 as before.
= 2^(b+3)-3 = I(2,b3,2)---
Pa(2,1,3) = Pa(2,Pa(2,m3;,2),2) [m3;:1] = 2^2^4-3
Pa(2,b,3) = 2^^(b+3)-3 = I(2,b3,3)---
Pa(2,b,c) = 2*...(b+3)-3 [*#c] = I(2,b3,c)---
§4.4.4. The catch-all
Fill in mc=a-2 to translate expressions of Pa
where a>2 to super-power format.
Pa(a,b,2) [a>2] = (m2;+2)*a^(b+1)-2 [m2;:a--] = (a**b2)--
Pa(a,1,3) [a>2] = Pa(a,Pa(a,m3;,2),2) = a^(a^(m3;+2))-2
Pa(a,b,3) [a>2] =>> Pa(a,..m3;.,2) [#b1# m3;:a--]
= a^^(b+2)-2 = (a***b2)--
Pa(a,b,c) [a>2 mc;:a--] = (a*...b2)-- [*#c] = I(a,b2,c)--
This works for all parameters c,
which means we can completely translate our extension of Péter's recursion
to a primitive recursive definition in bigI or bigE.
For all n>0 in Péter's initial successor
formula Pé(a)=a+n
the recursion keeps increasing as fast as super-powers and therefore stays below
Ackermann row level.
Rewrite the basic definition of our operatorial version of Péter's recursion.
- Pa(X,0) = Pa(X)
- Pa(a) = a
- Pa(a,b) = Pa(ab) = ab
- Pa(a,1,c1) [a=1 | a=2] = Pa(1,Pa(1,1,c),c)
- Pa(a11,1,c1) [a>0] = Pa(a,Pa(a,a,c),c)
-
Pa(a,b,c) = Pa(a,Pa(a,b-,c),c-)
= I(2,b3,c-)--- [a=1]
= I(2,b3,c)--- [a=2]
= I(a,b2,c)-- [a>2]
under 2010 construction
Ψ.5. First row of parameters
§5.0.1. Crafting by grafting
And the Cyclopes then gave Zeus thunder and lightning and a thunderbolt,
and on Pluto they bestowed a helmet and on Poseidon a trident.
Armed with these weapons the gods overcame the Titans, shut them up in Tartarus,
and appointed the Hundred-handers their guards.
But they themselves cast lots for the sovereignty,
and to Zeus was alloted the dominion of the sky,
to Poseidon the dominion of the sea, and to Pluto the dominion in Hades...
– Apollodorus, The Library
To expand the super-power
operatorials
defined in the previous chapter to a row of parameters
– or generally to move from one class level of functions to the next –
there are two approaches.
You can either keep the basic rules and supplement them with a different set of
axioms
for the rest of the row – this we call grafting –
or you can construct the whole row or higher level by extending
the earlier axioms, so that for example the
rule
for bigE's parameter c
is now included in bigE's
row formula
for the c,..,z range of parameters.
In this chapter the
basic
parameter definition of operatorials will be expanded in a handful of illustrative ways,
where it's often a matter of taste which rules apply naturally.
With E(a,b,c) = I(a,b,c1)
bigE and
bigI both covered
super-powers
in the first three parameters.
The rest of bigE's
front row
will be modelled after unmixed
majority arrows,
while bigI implements mixed
minority stars
which cover a whole row of arrow subscripts in a single parameter d
with the help of
waitors.
A function that resembles grafting is Conway's chained arrow notation, which expands super-powers to a row of iterators of arbitrary length. Chained arrows are very much the consequence of the basic 3 parameters, but Conway designed them carefully to stand alone.
When Van NovaLoka first became
fascinated
with the subject of Big numbers,
totally oblivious, she used grafting to scratch at the
Ackermann numbers
(her focus was less on functions).
The invention
of the so called
Anchorman, Barman, Caveman, Doorman, etc. numbers M
corresponded directly to the value and position of final parameters
in the following recursive function O(R,z).
Here's a review of the formulas for the first row in Van NovaLoka's
colourful essay.
M(p,1,r) = O(p,...) [p#r]
M(p,q1,r) = O(v,...) [v#r v:
M(p,q,r)]O(pi;,...,q) [pi;#r r>2] = O(v,...) [v#r v:
M(pi;,q,r)]
The practice to put several functions in a set of equations is confusing, we agree,
but perhaps you've noticed the nested substitution of numbers
M
for parameters in O.
Without recourse to a helper function, a similar set of equations
can be expressed by a single operatorial Om and some nifty
meta-statements.
In the example rules for functions with r=4 parameters you learn how
Om is nested to depth d before the multitude of 3^d
deepest substituents drop their final parameter to become super-powers.
-
Om(a,b,c) = I(a,b,c)
[
Omshifts addition back toc=0] - Om(a,b,c,1) = Om(Om(a,a,a),Om(b,b,b),Om(c,c,c))
- Om(a,b,c,d1) = Om(Om(a,a,a,d),Om(b,b,b,d),Om(c,c,c,d))
-
Om(ai,..,z1) [ai#r r>2] =
Om(Om(ai,..,z),.:.,h) [ai#r Om(ai,..,z)#r h=0]
The last rule is awesome,
as every free parameter is replaced by an iteration of Ackermann numbers.
Note that the
4-dot illipsis
sign .:. owns
and increments the i
for every subexpression Om(ai,..,z) here.
Obviously outer iterator h need not be 0 (and dropped).
It can be given any value as long as the reducibility of the expression is preserved
– any outer iterator 0<h<z1
could turn Om' into a faster function.
But, because we'd like to avoid a choice-type of functional subexpression,
an original operatorial with an iterator z1
evaluates naturally to an outer iterator of either h=0
or h=z in the reduced expression.
§5.0.2. General recursive baby steps
Later at Van NovaLoka's
old weblog
in another function O' grafted on super-powers,
she took predecessor h=z as outer iterator, thereby increasing
the size of the numbers expressible by the same parameter values.
Here we'll call that particular function On
and compare it with Om' where h=z
(which we call Omz) to see if these functions result
(on average) in equally large numbers, given the same
super-power stock
a,b,c.
- On(a,b,c,1) = On(On(a,b,c),On(a,b,c),On(a,b,c))
- On(a,b,c,d1) = On(On(a,b,c,d),On(a,b,c,d),On(a,b,c,d),d)
-
On(a,b,c,d,e1) =
On(v,v,v,v,e) [v:
On(a,b,c,d,e)] -
On(ai,..,z1) [ai#r r>2] =
On(On(ai,.:.,z),..,h) [ai#r On(ai,..,z)#r h=z]
Adapt the main rule of Om to create a function
Omz = Om' [h=z] with the same maximal iterator h
as in On.
Then to gauge Omz versus On
we just need to compare the final substituent
Omz(ar;,..,z) [ar;#r]
with
On(ai,..,z) [ai#r]
because these have decisive bigO strength.
In case of equal parameters a,.. both functions do not differ, but otherwise
the last substituent of On
has the value x=ar-; in its penultimate parameter,
while the same substituent in Omz
holds a sequence of undiluted y=ar;
so that the difference between Omz and On
boils down to the relative size of the two parameters x,y.
Therefore both functions have an equal chance of producing
roughly equally large numbers.
x<y <=> On(R,x,y,z) < Omz(R,x,y,z)
The same reasoning applies to function
Ono(R,z1) = On'(R,z1) [h=0]
versus function Om.
If x<y then Ono < Om
so that the numbers expressible by Om and Ono
are roughly of equal size.
Nevertheless, some recursive functions are significantly slower
than function Om in the first row.
As an example we'll graft Ob [h=0] on super-powers,
defining Ob so it stops growing much further.
- Ob(a,b,c) = a*..b [*#c]
- Ob(a,b,R,z1) = Ob(a,Ob(a,b,R,z),R)
- Ob(a,b,c,1) = a*..a*..b [*#c *#c] ~ b*..3 [*#c1 a~b]
- Ob(a,b,c,d) ~ b*..d2 [*#c1 a~b]
- Ob(a,b,c,d,1) ~ b*..d2*..d2 [*#c1 *#c1 a~b]
- Ob(a,b,c,d,e) ~ d2*..e2 [*#c2 a~b~d2]
-
Ob(a,b,c,ti;,..z) [ti;,#r] =
Ob(a,..b.,c) [#u#] where u = ti;1*..z1 [ti;1*#r]
~ tr;2*..z2 [*#cr1 a~b~ti;2 i<r]
You can see that row length in Ob merely adds
to the number of stars *.. counted by c.
Such functions Obr still belong to the
super-power class of functions, below the first
Ackermann jump.
Chapter 5.5
generalizes the reason why Ob is so slow –
higher parameters than b are never iterated over.
# A walk on the Ackermann level
Any function rule which limits the substitution position to some
fixed receptor, even though higher than Ob's b,
must be structurally slower than Om, because
Om keeps expanding its row of receptors to the right.
We count these limit positions as our first
super-power-like steps {Κ.2.1.n} past the Ackermann jump,
and each step takes us further from the
basic
primitive recursive level {Κ.1.m} of functions.
Functions {Om,Ono,Og} belong to the same class as {Omz,On}
which covers the first general recursive suborder {Κ.2.1}
in the first row, waiting for the second Ackermann jump.
Note that the super-power stock Om and On
were grafted on, does not play a major role in smoothing out the differences between them.
Pivotal is that both original definitions (before grafting)
already require a full row to fill the
Grzegorczyk hierarchy.
The next chapter and later Og0
confirms
this explanation.
Conway's
chained arrows
express every step {Κ.2.1.d} of the row of Om
with their 4th parameter, and so they make the 2nd Ackermann jump by the
4th chained arrow
(and next parameter).
By
recursive grafting
on Og we shall prove,
that the full row of chained arrows cover the enumeration
of Ackermann jumps and sublevels {Κ.2.p} totally.
§5.0.3. Multiple substitution is futile
In this chapter we'll show the meagre consequences of multiple substitution
in an operatorial function Nn, which looks fast in the beginning,
but actually needs a whole parameter row to cover merely Grzegorczyk's
subclasses.
Function Nn rigorously applies the
rules
of On from the start – after Nn(a,1) actually.
Because Nn is incapable of reaching the Ackermann level
within its first row, this proves that a whole row of parameters in On
cannot force the next Ackermann-like jump to a higher recursive sublevel,
and that On
must stay firmly within the first recursive class on the Ackermann level.
This despite of the fact that Om was grafted on Ackermann numbers
and that On increases faster than Om (as shown
above).
Remember that the
Ackermann function
Ack_ψ is of a higher order than the
super-powers
of Ack_φ, because it jumped from primitive recursion.
By contrast, Nn is incapable of transcending
primitive recursion
in its first row.
Rósa PolitzerBudapest ±1923
It was
Rózsa Péter/Politzer
who gave a rigorous proof that unnested multiple recursion
does not lead out of the class of primitive recursive functions.
Generally multiple substitution over a range of parameters
does not create significantly larger numbers than
single substitution
applied to its highest parameter.
Because multiple substitution is a tedious, unnatural and ineffective procedure,
we'd best choose another policy to
optimize
operatorials.
The example function is pretty straightforward –
students can easily check that Nn maintains reducibility.
The weak point of Nn is its induction step,
which is not so efficient because the final parameter z
is reduced twice in each step – counting down z
in both the outer and the inner expression.
The generous substitution of free parameters
in the outer expression of Nn compensates for this,
but still multiple substitution is comparatively slow.
In the formula for Nn the
generic rules
of bigO apply and
addition
happens naturally when variables are adjoined. The variable v
that substitutes for every free parameter is determined by the
meta-statements
that follow.
-
Nn(a,1) = Nn(1..) [1#a 1:a]
= Nn(a..) [a#a] = a*a -
Nn(a,b1) = Nn(v,b) [v:
Nn(a,b)] = a**11**11**b ~ 2^^3\^b1 -
Nn(a,b,1) = Nn(v,v) [v:
Nn(a,b)] ~ 2^^6\^b -
Nn(a,b,c1) = Nn(v,v,c) [v:
Nn(a,b,c)] ~ 2^^(3*(c+2))\^b -
Nn(R,y,z1) = Nn(v,..,z) [v#r1 v:
Nn(R,y,z)] where R = ti;,.. [ti;#r]
~ 2^..(2^(z+1))\^..(2^y)† [^#r1 ^#r] ~ 11*..(11**z1)111† [*#r11]
We use
backslashed
\ operators to enhance notation precision and a
dagger
† to cut the calculation short.
By the 5th parameter Nn progresses practically on a par with the
super-power ***** of bigI.
According to our last
calculation,
at the end of its first row Nn
will converge close between
two super-power limits.
The point to pay attention to is that all parameters
in Nn's first row stay well inside
super-power
limits, so that Nn will only reach
Ackermann functionality
past the first dimension.
While Nn is groping for emancipation at the right edge of its parameter row,
Conway's
chained arrows
as well as bigA, bigE and bigI
become Ackermann functions in their 4th parameter, and
bigU
already in its 3d.
The main difference between Om and On lies, as shown
above,
in the value h of the outer iterator.
But this doesn't even count as a decisive step in our
classification
system.
Suppose we'd remove Om from its super-power stock
to define a function Mm.
Let Mm(a,b) = a*b and
Mm(a,b,c1) = Mm(Mm(a,a,c),Mm(b,b,c))
then the first 3 parameters of Mm remain in Kalmár's
elementary
class of functions, well below the power towers pointing to tetration.
Define the rest of Mm(R,z) like we defined Om
before
and Mm will take the whole row to match super-powers.
Mm(a,b,c) = a^2^c*b^2^c
Mm(a,b,c,1) ~ ab^2^c^2^c1
Mm(a,b,c,d) ~ ab^2^c^2^..c1 [#d1] ~ abc***4*d1
Mm(a,b,c,d,e) = abc***..4*d1 [#e1] ~ abcd****e2
Mm(ti;,..z) [ti;,#n] ~ t*..z2 [*#n]
The notation with an algorithmic mean
t or ab..
indicates, that when parameters ti;..
are common non-extreme integers these are less relevant to the result.
The first row of Mm increases with super-power speed,
like Nn above (albeit one count of c slower),
and evolves on a par with the simpler ur-function Og0
of Graham's Og
below.
In fact Mm reduces to the same approximate expression as
Ôg0 towards the row limit –
a clear example that multiple substitution
cannot help you in the end.
# 5.1. Graham's Og
§5.1.1. Expressing a world record
What we call Graham's Og is the little brother of Ono, defined
above
from On using multiple substitution,
although substitution in Og is a single affair
and only the penultimate parameter is subject for it.
On top of that Graham's Ôg starts off sooner with
exponentiation at the count of c=1
(hence the arrow-like circumflex on the O).
The operatorial function Ôg
is especially suited to give an exact formulation of a famous number of Ronald Graham.
The final entry in the
Dictionary of curious and interesting numbers
tells the tale of Graham's number.
The World Champion largest number, listed in the Guinness Book of Records, is an upper bound, derived by R.L. Graham from a problem in a part of combinatorics called Ramsey theory.
Graham's number cannot be expressed using the conventional notation of powers...Consider the largish number
v1; = 3^...3 [^#v]withv = 3^^^^3arrows.
Next construct the incredible, ungraspable numberv2; = 3^...3 [^#v1;].
Now continue this processvd1; = 3^...3 [^#vd;]until step d+1 = 63.
That is Graham's number.Postscript
Since Graham and Rothschild wrote their "Ramsey's Theorem for n-Parameter Sets" in 1971, Graham's upper bound didn't change. The lower bound for a solution – which experts think is a small number – increased from 6 to 11 (Exoo 2003) and recently to 13 (Jerome Barkley 2008).
Ron GrahamJuggler of Og
With this information we can devise an operatorial function Ôg
that expresses Graham's number exactly in the proposed fashion as
Ôg(3,3,4,63)
Grafted
on super-powers, which is the
dominant
rule of Og.
- Ôg(a,b,c) = I(a,b,c1) = a^...b [^#c]
- Og(a,b,c,1) = Og(a,b,Og(a,b,c))
- Og(a,b,c,d1) = Og(a,b,Og(a,b,c,d))
- Og(R,y,z1) = Og(R,Og(R,y,z))
Circumflexed Ô functions
start with multiplication instead of addition of 2 parameters.
This is a matter of initialisation and of minor importance.
The main axiom above applies to Ôg too.
Ôg travels not nearly as fast as bigE
or our champion bigI, and it doesn't leap to the next recursive order.
The progression of Graham's Og is comparable to our
baby Om.
The fact that Og uses a single substituent does not reduce speed that much.
Because multiple substitution is
futile
both Og and Om belong to the same
class
of recursive functions, together with On,
which increases hardly any faster towards the end of the row.
The substituent of Og (with addition at c=0)
is the same as that of Ono = On' [h=0] and by analogy
we can define a new function Of with the same substituent as
Om [h=0] and
check
that Of and Og roughly keep pace.
An example of Of(a,b,c,d1) = Of(a,b,Of(c,c,c,d))
It's trivial that Ôg has an edge over
function On.
Substitution of the rightmost parameter is dominant and Ôg
has a head start, so On will perpetually lag behind Ôg,
provided the original parameter values are not too extreme.
Despite its handicaps (single substitution, dropping the outer iterator) Og
apparently has the same expressive power as any other 2nd order function.
I(x,x,I(x,x,y1)1) = Ôg(x,x,Ôg(x,x,y)) = Ôg(x,x,y,1)
Og(R) < On(R) < Ôg(R)
Graham's number Ôg(3,3,-2,Ôg(4,3,1))
can be approximated by chained arrows or by bigE. Here operatorial
bigE
represents typed majority arrows, and by
translation
from chained arrows the above expression in Ôg
of Graham's number rolls out.
Imagine the fathomless
space
in between such relatively close Big numbers!
E(3,65,2,1) <
Ôg(3,3,4,63) <
E(4,65,2,1) <
2→3→65→2
§5.1.2. How Og hops back
With good
reason
we found that the functions {Omh,Onh,Og,..}
dwell in the same recursive order next to super-powers.
Then we take a step back to
measure
the ur-functions Nn and Mm,
which remain primitive recursive,
although they apply multiple substitution to a whole row of parameters.
Similarly we'll define the ur-function Ôg0,
which applies the rules of Graham's Og from the start,
only to find that the Ackermann level is never reached.
Og0's first row of parameters stays on the
primitive recursive
level – well before the
jump
to the next sublevel on the Ackermann row.
From this we may conclude that the rules of Graham's Og
are essentially slower than the main super-power rule,
even though functions Ogn
typically operate on a higher class of numbers.
It is the grafting that gets them there.
- Ôg0(a,b) = a*b
- Og0(R,y,z1) = Og0(R,Og0(R,y,z))
Ôg0(a,b,c) = a^c1*b ~ a^c2 [a~b]
Ôg0(a,b,c,1) = a^(a^c*a*b)*a*b
Ôg0(a,b,c,d) = (a^..c.*a*b) [#d1#] ~ abc^^d2
Ôg0(a,b,c,d,1) ~ abc^^abc^^d2
Ôg0(a,b,c,d,e) ~ abc^^^e1\^^d2 ~ abcd^^^e2
Ôg0(ai,...z) [ai,#n1] ~ a^..z2 [^#n]
To get the approximation for Og0
just replace arrows ^.. [#c]
by stars *.. [#c]
These functions Og0 are clearly
Grzegorczyk
order functions,
though it takes a lengthy row of parameters to get a high value of c.
This means the ur-graft Og0
is covered with the 3rd parameter c of chained arrows.
Then we can draw the conclusion that Og1
(Graham's Og), having the same rules as Og0
past its 3 parameter stock, will behave the same,
in that it won't make another Ackermann jump and with its first row
Og1 will cover the second recursive order completely.
We'll prepare Ôg0
for the job of initializing the sequence of
recursive grafts
on Qy.
The following equations can be worked out as an exercise.
Qy(a,1,c) = Qy(a,Qy(a,a,c-),c-) = Ôg0(a,...Ôg0(a,...)) [a,#c a#c1]
Qy(a,b,c) = Qy(a,Qy(a,b-,c),c-) = Ôg0(a,...,b) [a#c1]
§5.1.3. How Og is jumped over
What lies beyond 2nd order recursion?
Who makes the second jump and the next, counting an arbitrary number of Ackermann jumps?
We've suggested
before
that Conway's
chained arrows
fill the bill. Now we'll show how the operatorial successor Qy
of chained arrows covers the same order as expressed by the first row of
Ôgwith its single 4th parameter d.
Define the operatorial function Qy based on Conway's chained arrows –
to graft Graham's Ôg on.
Because the 3 parameter rule has precedence all
R = ti,... [ti#r r>1]
have at least 2 parameters.
- a→b→c = Qy(a,b,c) = a^...b [^#c] [same base]
-
R→y1→1 <
Qy(R,y1,1) =
Qy(R,Qy(R,y,1))
[drops
z=0] -
Qy(R,1,z1) =
Qy(R,Qy(R,0,z1),z) =
Qy(R,Qy(R,Qy(R,-,z1),z),z)
= Qy(R,Qy(R,Qy(R),z),z) [O: nests 2 extra iterations,
compare :→] R→3→z1 = R→(R→(R→1→z1)→z)→z = R→(R→(R)→z)→z - Qy(R,y1,z1) = Qy(R,Qy(R,y,z1),z) [same main rule]
This tells us chained arrows R→x→y1→z1 are slower than
Qy(R,x,y,z) given 4 or more parameters.
And both expressions are predecessors of R→x→y→z2
which increases notably faster (its outer iterator dominates).
- a→b→c→1 = Qy(a,b,c) = Ôg(a,b,c) = a^...b [^#c]
- Qy(a,b,1,1) = Qy(a,b,Qy(a,b,a*b)) = Ôg(a,b,a*b,1)
-
Qy(a,b,c,1) =
Qy(a,b,Qy(a,b,c-,1)) =
Qy(a,b,..a*b.) [#c1#]
= Ôg(a,b,a*b,c) -
Qy(a,b,1,2) =
Qy(a,b,Qy(a,b,a*b,1),1)
= Ôg(a,b,a*b,Ôg(a,b,a*b,a*b)) = Ôg(a,b,a*b,a*b,1) -
Qy(a,b,2,2) =
Qy(a,b,Qy(a,b,1,2),1)
= Ôg(a,b,a*b,Ôg(a,b,a*b,a*b,1)) = Ôg(a,b,a*b,a*b,2) -
Qy(a,b,c,2) =
Qy(a,b,Qy(a,b,c-,2),1)
= Ôg(a,b,a*b,a*b,c) -
Qy(a,b,1,d) =
Qy(a,b,Qy(a,b,a*b,d-),d-)
= Ôg(a,b,a*b,...,Ôg(a,b,a*b,...)) [a*b#d- a*b#d]
= Ôg(a,b,a*b,...,1) [a*b#d] - a→b→c1→d1 < Qy(a,b,c,d) = Ôg(a,b,a*b,...,c) [a*b#d]
The first row of Graham's Ôg
creates a new super-exponential order past the Ackermann jump,
and Conway's chained arrows cover this whole subclass
with their 4th parameter d.
The length of Og's row
keeps increasing as fast as chained arrows' final parameter value,
so it's definitely the 4th chained arrow which jumps to
the next sublevel of the Ackermann row.
§5.1.4. Recursive grafting on Og
A row of Ôg0 is equal to
3 parameters of chained arrows or Qy,
and a row of Ôg1
takes 4 parameters of Qy.
Suppose we'd graft a similar function Ôg2
on Qy(a,b,c,d) instead of super-powers, then
Ôg2 expresses the
3d recursive order with its first row of parameters.
But how much of the value of the 5th chained arrow parameter does that take?
And ultimately – do we need a whole row of chained arrows
to express all these recursive Ackermann functions completely
or will a limited number of parameters be sufficient?
Find the key to enumerate the whole level of countable Ackermann jumps
with a single coefficient.
Start with the two axioms of Ôg2
and then write out the necessary calculations like we did before.
- Ôg2(a,b,c,d) = Qy(a,b,c,d)
- Og2(R,y,z1) = Og2(R,Og2(R,y,z))
-
Qy(a,b,c,1,1) =
Qy(a,b,c,Qy(a,b,c,Qy(a,b,c)))
= Ôg2(a,b,c,Ôg2(a,b,c),1) -
Qy(a,b,c,d,1) =
Qy(a,b,c,Qy(a,b,c,d-,1))
= Ôg2(a,b,c,Ôg2(a,b,c),d) -
Qy(a,b,c,1,2) =
Qy(a,b,c,Qy(a,b,c,Qy(a,b,c),1),1)
= Ôg2(a,b,c,Ôg2(a,b,c),Ôg2(a,b,c),1) -
Qy(a,b,c,d,2) =
Qy(a,b,c,Qy(a,b,c,d-,2),1)
= Ôg2(a,b,c,Ôg2(a,b,c),Ôg2(a,b,c),d) -
Qy(a,b,c,d,e) =
Ôg2(a,b,c,v,...,d)
[v#e v:
Ôg2(a,b,c)]
The family of functions indexed as Ôgn,
share the main rule of Og and are recursively grafted
on the operatorial Qy
(increasing slightly faster than Conway's chained arrows)
with parameter row length n+2.
With each next grafting n>0 function
Ôgn
jumps to a new subclass on the Ackermann level.
Give the general formula of recursive grafting on super-powers,
which translates expressions of Ôgn
into Qy. First the stock, then the shoot.
The first shoot is the front row of
Ôg0 super-powers.
- Ôgn(a,ti;,..) [ti;#n1] = Qy(a,ti;,..) [ti;#n1]
-
Qy(a,ti;,..y,z) [ti;,#n] =
Ôgn(a,ti;,..v,..y)
[ti;,#n v,#z]
where v = Ôgn(a,ti;,..) [ti;#n]
So ultimately, yes, the row of chained arrows covers the recursive function orders
singly enumerated by Ackermann jumps –
what we call the Ackermann level of functions.
That primitive recursion should be the initial function order is not evident
(addition is a likely candidate at the root).
But here expressing Ôg in Qy
we cannot graft any lower than on
Ôg0(a,b) = a*b
because the early 1 parameter stock
Ôg-(a) = a
leads to contradiction in this system.
A row of Og = Og1 acts as a 2nd row,
appended after the super-power front row of Og0,
which is the stock Og is grafted on.
The following row of Og2
is like a 3d row in the square of Og0
or a 2nd row in the square of Og.
From the above follows that a row of chained arrow
parameters of length n3 is about as fast as an n
row square of Og, and that a row of chained arrow
parameters of length ng2
generally increases as fast as an n row square of
Ogg.
To put it bluntly – a square array of Og
is equivalent to a row of chained arrows –
the super-power grafting square.
Summarizing our proof for the super-power grafting square
We knew by
analogy
with Og0
that Og1
should cover a whole new super-power-type order with its first row of parameters.
We defined the operatorial Qy
(an altered form of chained arrows) to
show
that 4 parameter Qy and a specific expression over the row of
Og1 are equally fast.
In this chapter we extrapolated the method of grafting so it could be used recursively,
taking n2 parameter Qy as a stock for the first n2
parameters of the next function Ogn covering the
n1th recursive order.
Because Qy is exactly expressible by functions
Ogn
and because Qy uses similar rules as Conway's chained arrows
(and does not increase significantly faster),
it follows that the first row of chained arrows
parameters covers the rest of the Ackermann level,
where every n2th chained arrow →
designates the nth jump.
# 5.2. Front row bigE
§5.2.1. Home of subscripted arrows
The first row of parameters of the operatorial function bigE continues the
basic definitions
for 3 parameters from chapter 4,
according to the plan introduced by the general formula for subscripted
majority arrows
in chapter 3.
Because bigE is our majority arrow function,
the first 4 parameters a,b,c,d in E()
are equal to the operations on item a with iterator b,
where c counts the arrowhead operators ^
typed by a
single subscript
d.
The fabulous fourth parameter d
takes us beyond super-powers and is explained below.
- E(a,1,c,d) = a
- E(a,b,1,1) = E(a,b,b) = a^1;b = a^...b [^#b]
- E(a,b,1,d1) = E(a,b,b,d) = a^d1;b = a^d;...b [^#b]
-
E(a,b1,c1,d) = E(a,E(a,b,c1,d),c,d)
= a^d;...b1
[^d;#c1]
=>> E(a,..a.,c,d) [#b#] = a^d;.. ... [^d;#c a#b1]
The definition of the first row of parameters of bigE follows the same pattern.
- E(a,b,1,...) [1#k k>1] = E(a,b,...) [b#k]
- E(a,b,1,...,n1,R) [1#k k>0] = E(a,b,...,n,R) [b#k1]
- E(a,1,c1,R) = E(a,1,c,R) =>> E(a,1) = a
-
E(a,b1,c1,R) = E(a,E(a,b,c1,R),c,R)
= a^R;...b1
[^R;#c1]
=>> E(a,..a.,c,R) [#b#] = a^R;.. ... [^R;#c a#b1]
Recursive scheme Nº2 for bigE with a single row of parameters of arbitrary length.
What's so great about the expansion of bigE
is that its reduction is such a lengthy undertaking.
Before the final parameter z is counted down
a lot of water has flowed under the bridge and the basic iterator b
is fat and juicy, spawning its value high up
to replace the penultimate parameter y=1.
This makes numbers grow very big indeed, much bigger than those defined by Conway's
chained arrow notation.
The rule that a lower order iterator (left parameter)
substitutes for an arbitrary iterator in higher position (right parameter),
can be taken as the defining rule of the class of operatorial functions
of which bigE and
bigA
are prominent examples.
This so called uploading was deployed in the same way
by the ^R;
arrow
operator subscripts for bigE.
The multiple substitution applied by this specific type of uploading
looks
approximately a level less important.
§5.2.2. Race against chained arrows
We've explored the widening gap between
bigE's
subscripted arrows and Conway's chained arrows in an
example in chapter 3.
Subscripted arrows win the race, that's not the point,
but how fast are both functions exactly?
The definition for the first row of
chained arrows
is repeated here.
- a→b = a^b
- a→b→c = E(a,b,c)
- R→1 = R
- R→1→z = R
- R→y1→z1 = R→(R→y→z1)→z
Compare or approximate chained arrows with bigE past 3 parameters,
like we expressed
bigE in bigI.
Using the following equations we positioned Graham's number
between
two expressions of bigE.
- a→b→c→1 = E(a,b,c)
- a→b→2→2 = a→b→(a→b) = E(a,b,a^b) <~ E(a^b,a^b,1,1)
- a→b→3→2 = E(a,b,E(a,b,a^b)) <~ E(a^b,3,2,1)
-
a→b→c1→2 =
a→b→(..a→b.)
[#c#] =
E(a,b,..a^b.) [#c#]
<~ E(a^b,c1,2,1) = E(a^b,v,v) [v:E(a^b,c,2,1)]
Because the final parameter tends to dominate the result,
we inferred that the terms left and right of the
predecessor sign
<~ are close enough (approximate) within this context.
But for small extreme values where a^b < 5
these equations do not offer proper (algorithmic) estimates.
- a→b→2→3 = a→b→(a→b)→2 <~ E(a^b,a^b,2,1)
- a→b→3→3 <~ E(a^b,E(a^b,a^b,2,1),2,1) = E(a^b,3,3,1)
- a→b→c1→3 = a→b→(..a→b.)→2 [#c#] <~ E(a^b,c1,3,1)
- a→b→c1→d1 = a→b→(..a→b.)→d [#c#] <~ E(a^b,c1,d1,1)
The question is how bigE's 4th parameter increases,
while chained arrows expand to higher parameters.
For extra examples,
click here!
-
a→b→c→2→2
=
a→b→c→(a→b→c) <~
E(a^b,c,E(a,b,c),1)
<~ E(a^b,E(a,b,c),1,2) <~ E(E(a,b,c),2,2,2) - a→b→c→3→2 <~ E(a^b,c,a→b→c→2→2,1) <~ E(E(a,b,c),3,2,2)
- a→b→c→d→2 <~ E(E(a,b,c),d,2,2)
- a→b→c→2→e1 <~ E(E(a,b,c),a→b→c,e,2)
- a→b→c→d→e <~ E(E(a,b,c),d,e,2)
-
a→b→c→d→2→2 <~
E(E(a,b,c),d,E(a^b,c,d,1),2)
<~ E(E(a,b,c),E(a^b,c,d,1),1,3) <~ E(E(a^b,c,d,1),2,2,3) - a→b→c→d→e→f <~ E(E(a^b,c,d,1),e,f,3)
- a→b→c→d→e→f→g <~ E(E(E(a,b,c),d,e,2),f,g,4)
- a→b→c→d→e→f→g→h <~ E(E(E(a^b,c,d,1),e,f,3),g,h,5)
It has become obvious that bigE covers the first row of chained arrows
with its first 4 parameters.
Interestingly we've seen this phenomenon with minority stars versus
majority arrows in
chapter 3.1 –
providing testimony that bigI is as fast as a whole row of chained arrows,
merely by appending a unit value I(a,b,c,1)
<~ E(ai^..,y,z,n) or I(ai*..,yz,n,1) [ai#n]
When n=0 in the above formula we have
E(0,b,c,-) < b→c
and from this we conjecture that
E(a,b,c,-) = E(b,c)
and by inverse construction that a negative final parameter value of -*z
let drop a number z of leftmost parameters
starting with item a.
# 5.3. Front row bigI with waitor
A thousand heads has Purusha,
a thousand eyes, a thousand feet.
On every side pervading earth
he fills a space ten fingers wide.
This Purusha is all that yet has been
and all that is to be...
– Rig Veda 10:90
Under 2010 Construction
§5.3.1. Home of subscripted stars
An operatorial bigI which covers
mixed minority stars
in a single row of parameters is harder to achieve.
With one type-subscript d
stars pass by
a whole row of arrow subscripts or parameters R = d,..,z of
bigE.
It seems the function concept itself
is too slow to contain bigI's operator expansion!
Let's see what actually happens when
mixed stars reduce
and mimic that behaviour in an augmented form of bigI.
= a*1;*1;*..(a*1;*1;*..b-) [*#b- *#b]
=>> a*1;*1;*.. ... [*#b- a#b]
I(a,b,c1,1) = I(w,b,1,1) [w:
Í(a,1,c,1)] =
I(w,b,b)=>> I(w,..a.,b-) [#b-#]
The newly introduced functional construct w is called a waitor
– in the form of bigO notated as Ó –
inserted with certain restrictions imposed on its evaluation.
Normally inner expressions can/must be reduced to natural number first,
but not waitors, which have a lower functional precedence
depending on their position in the outer expression.
When in an operatorial bigI I(a,b,c1,R) = I(w,b,1,R)
a waitor w = Í(a,1,c,R) is substituted
for the item parameter a (in 1st outer position),
this item waitor is not a function,
but it is iterated over and waits until all parameters except the initial
iterator (in 2nd outer position) are resolved.
With just two parameters left the next reduction step will substitute the inner value
b=1 in w for the outer accumulated value b'
so that I(w,b')
becomes a normal operatorial I(a,b',c,R)
and the process can repeat itself from the start.
But in all other outer positions (except the 1st)
an iterator value is necessary to drive the reduction train, and
the offspring iterator parameters are evaluated first as
w = I(a,1,R) = a (as usual).
With the help of a train of item waitors w,
the rules for the first row of operatorial bigI can thus be formulated.
This continues the basic definition for bigI up to
3 parameters.
- I(a,b,1,...,n1,R) [1#k k>0] = I(a,b,...,n,R) [b#k1]
- I(a,1,c1,R) = I(a,1,c,R) =>> I(a,1,1) = a
-
I(a,b,c1,R) = I(w,b,1,R)
[w:
Í(a,1,c,R)]
= a*R;..b [*R;#c1] = (a*R;..)*-R;..b [*R;#c *-R;#b] -
I(w,b) [w:
Í(a,1,R)] := I(a,b,R)
Below we'll show how this construction with waitors covers super-powers too,
provided that
multiplication
is reduced to repeated addition by a separate rule –
the repetition step of multiplication –
to precede the above definition.
Consequently the higher rules for I(a,b,c) [c>1]
were justly marked as
provisional
before.
Because waitor items can't just be multiplied
and have to be substituted after a single repetition step,
both step and the result of multiple steps – namely multiplication –
are individual constructs in the evaluation of expressions of bigI.
This means that
addition
can keep its status as root axiom
and that a primary extra axiom must be inserted here.
(Without this rule I(a,b1,1)
reduces via I(Í(a,1),b,1)
eventually to Í(a,1) – clearly wrong!)
-
I(a,b1,1) =
I(a,I(a,b,1))
=>> I(a,..a.) [#b#] = a... [a#b1 0*] = a*b1 -
I(a,b1,c1) =
I(w,b1,1)
[w:
Í(a,1,c)] = I(w,I(w,b,1))
:= I(a,I(w,b,1),c) =>> I(a,..I(w,1,1).,c) [#b#]
= I(a,..a.,c) [#b#] = a*..b1 [*#c1]
Recursive scheme Nº2 for bigI with a single row of parameters of arbitrary length.
- 1.1. Root axiom: addition [axiom in basic scheme]
- 1.3. Primary axiom: repetition step [case in basic scheme]
- 2.1. Partial upload: upward substitution of a range of parameters
- 2.2. Parameter destruction: row iterator collapse
- 2.3. Waitor introduction: row item substitution => 1.4
- 2.4. Waitor elimination: row iterator expansion => 1.5
under 2010 construction
Ψ.6. Dimensions
under 2010 construction
# 6.1. Bowers' extended arrays
The ancients have used pillars to prop up the teachings since time immemorial,
and Zen practitioners through the years have made them a nesting place.
Linji wants to shake the tree and loosen the nest,
so he points to a pillar and asks, "Is this ordinary or sacred?"
If you understand it the instant it is uttered you are free and unhindered.
But if you hesitate, you have fallen into the pit of brambles...
Do you understand?
When affirmation and negation have merged,
there is no way to speak of it.
The truth of ordinary and sacred, wherever it is encountered,
is, after all, in your hands alone.
– Loori's True Dharma Eye 300.
§6.1.1. Front row BEAF
Thinking of operatorial dimensions Bowers' Exploding Array Function
comes to mind.
But what does Jonathan Bowers actually do?
And how fast does BEAF increase?
In this chapter you'll learn how the array notation from the Hedrondude
website
works out up to multiple dimensions.
This is followed in
chapter 7.2
by a rigorous theorem of the dimensional grafting cycle
Bowers well-nigh envisions, when he rewrites a parameter block of
n dimensions to its abstract form X^n
of exponentiation – the brick he starts building from initially!
Thereupon he suggests we should call his master function
BEAF
and that its rules, "..can be continued as long as the structures
[dimension blocks]
can be defined."
In expressions of BEAF
we will keep the typical curly braces {} for historic reasons.
These have the same function as brackets ()
in delimiting comma separated sequences of parameters,
but we often leave away the outer braces.
On the first row a,b,c,d runs parallel with Bowers'
extended operators
a.{.c}..b [#d#]
so we just skip the dubious single entry is an operator
story.
Remarkable is that both super-exponential operators
and dimension separators in BEAF
can be written with brackets instead of subscripted coefficients.
We start with the five axioms that define Bowers' front row of array entries.
The simpler rule for the reduction of a,b is listed first,
despite that the 2nd rule covers the initial case a,1 = a
and is arguably more fundamental. The same priority issue concerns rules 4 and 5,
but by convention the dominant main rule is listed last.
Note that in an earlier version of his array notation Bowers evaluated
{a,b} as addition, and that he later changed this to
exponentiation as a strict application of the 2nd rule.
- BEAF {}
-
a,b1 =
{a,b}.. [#a 0*] =>>
{a,1}.. [#a**b 0*]
= a.. [#a**b 0*] = a^b1 - R,1 = R
- a,1,R = a
-
a,b1,1,..,11R [1#k] =
a,..,{a,b,1,..,11R},1R [a#k1 1#k]
=>> {a,..,.a.,1R}.. [a#k1 #b#] -
a,b1,c1,R [b>0 c>0] = a,{a,b,c1,R},c,R
=>> {a,.a.,c,R}.. [#b#]
BEAF starts off very fast, and speeds away
from Conway's chained arrows in the
4th parameter.
Characteristic is BEAF's upload rule (4th axiom above).
It transports the accumulated value in b
to the high end of the parameter row,
where the rightmost consecutive entry with value 1
is replaced by a direct predecessor
(minimally counted down copy) of the original expression.
Iterator b is still there, contained in the inner expression,
whose evaluation will magnify b
zillionfold before it takes its position as higher iterator.
Our own upload rule for
bigE
applies a similarly elevated substitution,
but the top substitutable parameter is simply replaced by the value of b
sent straight up the row (not as a subexpression).
BEAF's upload gives it a headstart with respect
to the value of its dominant rightmost array entries.
This makes the countdown of its first row very slow –
resulting in Bowers' proverbial infinity scrapers
.
And what are infinity scrapers?
They are numbers which are so big, that even though they are finite, they seem to be reaching for infinity, like a sky scraper is a building that reaches for the sky.J. Bowers (Hedrondude) on Big numbers
Bowers had the bright idea to
upload
the lowest array entries a,b to the higher entries
when those are counted down fully.
This supersedes the mechanism of {a,2,c1} = {a,a,c}
super-squares.
But in one sweep he replaces the accumulated value of the iterator b
by the small item a and that's not optimal.
Generally
multiple substitution
doesn't significantly increase function speed,
but when Bowers substitutes each parameter in the left outer row
for item a, this seems to jam the motor of the iteration train.
A safer approach offers the upload method of
bigE,
where the accumulated value of b
replaces all parameters 1 in series.
To count down a,b1,2,.. by the main rule in
bigE
creates the same nesting as counting down a,b,2,.. in BEAF
with the single nest of its elevated subexpression.
Consider that most b are Big numbers,
then the effect of adding 1 is negligible.
But the rewards from multiple substitution shouldn't be overrated too.
So at this stage it's far from clear how
bigE translates to BEAF.
In the
next section
we'll get our hands dirty and make the necessary calculations.
This is the sort of thing that got Jabe stuck…
§6.1.2. Company on the Bowery
Now we will approximate Bowers' extended array function
BEAF {in the middle} with Conway's chained arrows
→before, and our operatorial bigE (after) on the first row.
This is tough, but we've expressed Conway's chained arrows in bigE back in
chapter 5.2,
that helps.
To show extra examples in between stations
click here!
- a→b = a,b = E(a,b,1) = a^b
- a→b→c = a,b,c = E(a,b,c) = a^..b [^#c]
-
a→a→2→2 =
a→a→(a→a)
<~
a,3,1,2 = a,a,{a,2,1,2},1 = a,a,{a,a,a} <~
E(a,3,2,1) = E(a,E(a,a,a),E(a,a,a)) -
a→a→b→2 =
a→a→(a→a→b-→2) =>>
a→a→(..1.) [#b#]
<~
a,b1,1,2 = a,a,{a,b,1,2} =>> {a,a,..a.} [#b#] <~
E(a,b1,2,1) = E(a,v,v) [v:E(a,b,2,1)]
=>> E(a,vi,..a.) [vi:E(a,b-i,2,1)#b# i≥0] -
a→a→b→3 =>>
a→a→(..1.)→2 [#b#]
<~
a,b1,2,2 =>> {a,..a.,1,2} [#b#] <~
E(a,b1,3,1) =>> E(a,..a.,2,1) [#b#] -
a→a→b→c1 =>>
a→a→(..1.)→c [#b#]
<~
a,b1,c,2 =>> {a,..a.,c-,2} [#b#] <~
E(a,b1,c1,1) =>> E(a,..a.,c,1) [#b#] -
a→a→a→a <~
a,2,1,3 = a,a,a,2
<~ E(a1,2,2,2) = E(a1,a1,a1,1)
While chained arrows exhaust their 4th parameter in full,
BEAF requires just a single value d=2.
So the latter already increases much faster, a trend which
continues
for the rest of Conway's row – each appended chained arrow best approximated
by the next value of entry d in BEAF.
On Bowers'
website
the proof that BEAF
with its 5th entry far surpasses a whole row of chained arrows
is attributed to Chris Bird.
What follows must be similar to Bird's proof –
we translate a row of chained arrows to successors in
BEAF and bigE.
Iterated reductions =>> are notated with an ordinary equals
= sign from now on.
For more examples
click here!
-
a→a→a→2→2 =
a→a→a→(a→a→a)
<~
a,3,1,3 = a,a,{a,a,a,2},2 <~
E(a1,3,2,2) = E(a1,v,v,1) [v:E(a1,2,2,2)] -
a→a→a→b→2 =
a→a→a→(..1.) [#b#]
<~
a,b1,1,3 = {a,a,..a.,2} [#b#] <~
E(a1,b1,2,2) = E(a1,..a1.,1,2) [#b#] -
a→a→a→b→c1 =
a→a→a→(..1.)→c [#b#]
<~
a,b1,c,3 = {a,a,..a.,c-,3} [#b#] <~
E(a1,b1,c1,2) = E(a1,..a1.,c,2) [#b#] -
a→...→b→2 [a#d] =
a→...→(..1.) [a#d #b#]
<~
a,b1,1,d = {a,a,..a.,d-} [#b#] <~
E(a1,b1,2,d-) = E(a1,..a1.,1,d-) [#b#] -
a→...→b→c1 [a#d] =
a→...→(..1.)→c [a#d #b#]
<~
a,b1,c,d = {a,a,..a.,c-,d} [#b#] <~
E(a1,b1,c1,d-) = E(a1,..a1.,c,d-) [#b#] -
a→... [a#a2] <~
a,2,1,1,2 = a,a,a,a
<~ E(a,2,2,1,1) = E(a,a,a,a)
Because bigE too uses parameter d
to cover the full row of chained arrows,
we think BEAF will approximately match bigE
in velocity over the whole front row.
To prove this we need only compare expressions
where these two operatorials differ significantly,
that is for cases where the upload rule determines the result.
Below are two of those –
for examples of earlier cases
click here!
-
a,3,1,1,2 = a,a,a,{a,a,a,a}
<~
E(a,3,2,1,1) = E(a,v,v,v) [v:E(a,a,a,a)] -
a,b1,1,1,2 =
{a,a,a,..a.} [#b#]
<~
E(a,b1,2,1,1) = E(a,v,v,v) [v:E(a,b,2,1,1)]
= E(a,vi,vi,..a.) [vi:E(a,b-i,2,1,1)#b# i≥0] -
a,b1,c,1,2 [c>1] =
{a,..a.,c-,1,2} [#b#]
<~
E(a,b1,c1,1,1) = E(a,..a.,c,1,1) [#b#] -
a,2,1,2,2 = a,a,a,1,2
<~
E(a1,2,2,2,1) = E(a1,a1,a1,1,1) -
a,b1,1,d1,e1 [d>0] =
{a,a,..a.,d,e1} [#b#]
<~
E(a1,b1,2,d1,e) = E(a1,v,v,d,e) [v:E(a1,b,2,d1,e)]
= E(a1,vi,..a1.,d,e) [vi:E(a1,b-i,2,d1,e)#b# i≥0] -
a,b1,1,..,2 [1#k] =
a,..,{a,b,1,..,2} [a#k1 1#k]
= {a,..,..a.} [a#k1 #b#] <~
E(a,b1,2,1,..) [1#k] = E(a,v,..) [v#k1 v:E(a,b,2,1,..)1#k]
= E(a,vi,..,:.a.) [vi:E(a,b-i,2,1,..)1#k vi#k #b# i≥0]
The equations to compare BEAF and bigE
in the first row have finally reached their general and exact form.
Provided that values for a are sufficiently large,
both operatorial functions increase at roughly the same speed.
We put a>2 because
{2,R} =>> {2,v,1,2}
= {2,2,v} = 4
while E(2,R) =>> E(2,v,v)
where the accumulated value v is very Big.
That's why we find the
upload rule
in BEAF is less esthetic than our own in
bigE.
We believe that an expression where a=2 and b>2
should increase by expanding it and not break down to
4.
- {a,b,c,1,..,2} [1#k] <~ E(a,b,c1,1,..) [1#k1]
- E(a,b,c1,R) [R≠1,..] <~ {a,b,c,R1} <~ E(a1,b,c1,R)
Instead of working out this endless progression of formulas,
we could have concluded directly that BEAF and bigE
are about equal by comparing their respective upload rules.
What actually happens after the upload,
when in the BEAF expression
we'd add 1 to the very Big uploaded value v?
This seemingly insignificant 1
spawns a series of parameters xi
that dwarf the original v because a very Big x
is build up from nested subexpressions, each containing v1
in its high position, and the elevated
xk = x- together with v
constitutes every xi [0<i<k] similarly.
= {a,..,x,v,z} [a#k x>v1]
=>> {a,xi,..,v,z} [xi#k xi≥x-]
> E(a,v,..,z-) [v#k1 z≥1]
The conclusion must be that there is no significant difference between
any of the here applied rules of BEAF and bigE
from the perspective of the length of a row. Neither walks away from the other.
In particular cases an equal final value z gives bigE
the edge, secondary is the value of the 3d entry c
favoring BEAF and the 1st parameter a,
if all else remains the same, as was proven
here.
§6.1.3. Building dimension blocks
The way Jonathan Bowers explains his extending array notation past the first row is rather chaotic, supernumerary yet incomplete. We must prop up his list of rules to cover every possible expression in BEAF – see our rule 3 which drops a lonely dimension entry. Later we'll take advantage of the omission as we try to give BEAF a significant boost by re-expanding dimensions before they are counted down completely.
Bowers' principal explosive device is a standard dimension block
D[a,b,c] with base
items a
filling all entries, sizes set equal to the accumulated value of prime
iterator b and dimensions symmetrically nested and counted by an
inline number c which functions at a deeper level.
Follows a recursive definition with two simple rules
to construct dimension blocks.
For examples
click here!
- D[a,b,1] := a,.. [a#b] (initial row)
-
D[a,b,c1] =
D[a,b,c][c]... [
D[a,b,c]#b] (subdimension) -
example
D[5,3,2] :=
5,5,5[1]5,5,5[1]5,5,5
< D[4,2,3] := 4,4[1]4,4[2]4,4[1]4,4
Jabe BowersTyler TX 1969
On Bowers'
website
bracketed numbers (n)
are adopted as separators between nth dimensional subarrays.
We will write [n] instead,
which is commonly restricted with n>0 to positive integer values
(in BEAF), and adopt the convention that
[0] or [] stands in for
,0; or , the single comma
(uncountable by default).
We use a
power tandem
a,....,
to notate a whole dimension block,
with its power ,.. separator appended.
To show an alternative definition,
click here!
- D[a,b,0] = a and [0] : ,
- I[A,b,c1] := A[c].. [A#b] (subdivision)
-
D[a,b,c1] =
I[D[a,b,c],b,c1]
=>> I[.a.,b,i].. [#c1#] (dimension block) -
D[a,b,c][c] :=
a,...., [#b ,..#c]
(dimension power block)
example D[3,3,2][2] := 3,3,3,,3,3,3,,3,3,3,,,
Written in the format F[X] of a parametrized
wildcard
or word function,
dimension blocks D[a,b,n]
are introduced in BEAF by the axioms 6 & 7 shown below.
Those subsequences are not pre-evaluated, but substituted as such
[by : words, not as = values)
for the reduced first row a,b in the outer expression.
Bowers'
five axioms
for the front row can simply be extended to multiple dimensions.
This foundation is supplemented by
two rules
which are meant to explode
the counted down base a,b
by substituting it for a dimension block
(at first multiple blocks are possible).
Follows the definition list of dimensional BEAF. To select the rules that introduce dimension blocks click twice!
- BEAF {}
(preceding rules
take precedence,
wordZcontains any allowed characters, wherepZ := p[m]Z [p>0 m≥0]) - a,b = a^b (initial rule)
-
a,1[m]Z [m≥0] = a
(collapse if 2nd entry on 1st row is
1) -
A1[mi]..1[n]Z [mi≥0 n>0] =
A1[n]Z
(chop off any trailing entry
1)
so A1,..[n]Z [1#k n>0] = A1[n]Z (drop last row entries1)
A[mi]..1 = A (whenZis empty, given thatA[ni].. = A)
a[ni]..Z [ni>0] = a,1[ni]..Z = a (reverse rule) -
a,b1,1,...,2Z [1#k] =
a,...,c,1Z [a#k1]
(upload on 1st row)
with c = {a,b,1,...,2Z} [1#k] -
a,b1,2Z = a,c,1Z
(main rule)
with c = {a,b,2Z} -
a,b1[ni]..1,..,p1Z
[
[ni]#s 1#k1 p>0] =
D[a,b1,ni][ni]..a,..,c,pZ [#s a#k] (explosive dimensional upload)
with c = {a,b[ni]..1,...,p1Z} [[ni]#s 1#k1] -
a,b[ni]..p1Z
[
[ni]#s] = D[a,b,ni][ni]..pZ [#s] (explosion)
each D[a,b,ni] as defined above
Note that the rules in a definition list apply in the order given.
For example in the last two axioms, if s=1 the condition that
n1>0 need not be stated explicitely,
because the 4th and 5th axiom evaluate expressions where n=0 first.
Also a character sequence like 1Z or pZ [p>0]
should be read as p[m]Z which can simply refer to p,1Z
or generally expand to p[mj]....1Z
(separator series are discussed
below),
or reduce to p in case Z is empty.
The inline notation [ni]..
opens up a new level, where a maximum number n
cannot increase by evaluation, although predecessor subexpressions
are nested on the right and dimension blocks
[m≤n] inserted left.
Inline separators [n1]
repeatedly generate dimension blocks with many [n]
in the evaluation of BEAF,
so there's no need for a rule to explicitely count down separator coefficients.
In
rule 3
we assume that Bowers drops them flat when their time is up, that is
when the array on the right side of the separator has crashed to 1.
Airplane analogy
We think of p [p>1] as the outer iterator,
because it is to be counted down in the outer expression.
Bowers calls this entry the pilot
,
when it's the first iterable value right after prime entry
b.
He also invented the concept of a co-pilot
,
which is the outer receptor directly left of the pilot.
The co-pilot c is most important as a substituent in the constructive
earlier rules.
But in the last rule above there's no parameter fit to be co-pilot,
because the pilot entry is seated in first position on the row.
All other entries in this airplane
analogy of Bowers are called passengers
.
But the heavy ones on the right of the pilot have to wait a long time –
stranded on the airport
sequence Z
– before their flight arrives!
§6.1.4. Diacritical remarks
In this section we want to make the transition to the operatorial format lighter
for readers who are more familiar with Bowers' system.
His extended arrays use a different notation
than our Big operatorials and the construction of
dimension blocks
normally isn't our foremost objective, but overall their habitat is the same.
We translate the inline bracketed separator [n]
to a subscripted comma ,n; with depth delimiter,
so that the number of separated array dimensions n is equal,
and the function of the support characters , for [
to open and ; for ]
to close the dimension enumerator is the same.
Because subscripts can be understood without ;
we'll usually omit the closing semicolon, but under the hood it is still there
(at least if we allow single , separators).
In BEAF a series of inline separators is torn apart
at the very first reduction step – typically
rule 7 –
that addresses it,
sprinkling individual separators [ni]
in between the dimensional arrays each one of them helps define.
The short-lived inline separators
[ni].. .:.
[ni>ni1]
that Bowers mentions are at best a precision notation
for expressing various dimensional subsequences.
His mixing apparatus is not robust enough
to create significantly Bigger numbers,
but it does offer a better resolution
(is more precise) than our simplified (initially additive) commas.
Bowers' idea to mix numbers of separators feels natural.
Our own translation covers all dimensions of BEAF
with countable and mixable separator commas.
These can either be notated as a sequence ,..
of length c1 or enumerated ,c;
with a single coefficient.
Here our separator system starts with a type of comma mixing
that is similar to counting, simply adding
the initial coefficients as defined below…..
,ci;.. .:.
[,ci;#ki
,ci;..#m 0*] =
,.. [,#n]
= ,n-;
:= [n-]
where
n = (ci1*ki)... [#m 0*]
example
a,b,2;,2;p1 =
a,b,,,,,,p1 =
a,b,5p1
:= a,b[5]p1 =
D[a,b,5]p
a,b[2][2]p1 =
D[a,b,2]D[a,b,2]p
Take
for example
a sequence of [2].. in Bowers' system.
When we count a single dimension higher with
,3; or ,,,,
this easily surpasses all physically expressible BEAF
made up of lower type than [3] separator series.
Compare a few expressions (using various separator styles) as
an exercise.
= a,a,,a,a,,,q [1<q≤
{a,2[2]..p} [2]#s]
<{a,2[2]..p1} [
[2]#s] =
a,a,,a,a,2;...p [#s p>1]
<{a,2[3]p1} = a,a,,a,a,2;a,a,,a,a,3;p [s≤
{a,2[3]p}]= a,2,3;p1 = a,..,..,..,p [#2 #2 #2]
= a,....,p [#2 ,..#3]
The
dimension block
a,...., [#b ,..#n] substituting for
a,b,.. [,#n1] is rock solid.
It contains b^n parameter positions that first have to be counted down
from a and next from increasingly Big b'
refilling those passenger
entries each time 1 is reached.
Bowers uses that b^n as a name to classify dimension blocks.
If we'd write a,i;..:.,n;
[#b ,i;..#n i≥0 0+]
to define such blocks by counting dimensions with a coefficient,
we fall down to the seemingly absurd context 0+
where subscripted commas do not add but relate by zeration.
For to make the repetition tandem work, the rightmost of a series of commas
,p;,q; = ,q;
must be left over.
However, we expect a plain repetition as for example
a,a,.. .., [,#n #b^b]
to increase faster, because almost b^b more pockets a
can be refilled, given that b outgrows n quickly.
And b^b on such a scale means next to nothing
– adding an extra 1 to c
in an earlier expression frankly already has Bigger consequences.
So dimension blocks are beautiful and characteristic for
BEAF, but to erect the whole structure
with all the lower dimensions in place is less convincing than
a simple but oversized array of penultimate dimensions.
The higher dimensions spread out to the lower anyway…
What matters most is the
main
engine of the first row.
And only when the "main row" is eventually count down to two parameters,
the accumulated value of prime iterator b explodes into a new oversized
dimension block.
One by one every subdimension is then counted down from the left
until it is discarded.
Here we meet a shortcoming in BEAF,
for apart from the prime block
,
dimension sizes cannot be expanded directly.
# Boosting BEAF
Instead of just collapsing counted down dimensions,
a better deal would give a rule that upgrades the size of existing dimensions.
Subarrays can freely be increased when they are positioned left of a higher
pilot
(outer iterator) as it is counted down in a long recursive loop.
This means that (except for the unique final row) BEAF
should keep a single entry on rows ending on 1
to be able to refill them and expand their size by Bigger b.
First we limit our
old axiom
to a simpler
version
that leaves room for the resurrection of counted down rows.
Then the new axiom follows, which at once performs three actions:
On the left it replaces a,b by a prime block in Bowers' grand style.
In the middle it reinflates further dimensions consisting of single parameters
1 with our method of
repeating
penultimate dimensions.
On the right its "co-pilot" value b may look small and simplistic,
but we've upheld that its strength is comparable to Bowers' inner expression in
section 6.1.1 before.
Thy mighty triple formula…
(Brahma the creator, Vishnu the preserver and Shiva on the outer side :3)
- A1,1,,Z = A1,,Z
-
a,b,m;1,nj1;...,p;2Z
[1#k1 nj>0 p>0] =
a,....,a,nj;..,nj1;.:.,nk1;b,p;1Z [#b ,..#m a#b a,nj;..#k]
We don't define series a,b[mi]..
here like Bowers tends to do.
This obscure and evanescent construct in his notation should reduce to the same
s subsequent dimension blocks as by
rule 6 & 7
of BEAF.
Note that at the illipsis .:. two new comma series (typed by
nj and nj1)
are inserted at each step
j to k.
Exploding "orphan passengers" 1 to a series of a
within predecessor nj
dimensions of size b
delivers a significant boost to BEAF, we hope.
It protects arrays from being eaten away slowly from the left,
as long as "crashed pilots" can be brought back to life
and restart their carreer.
under 2010 construction
§ The Biggest number
So what's the Biggest number?
That depends on the kind of system you'd like to represent your numbers in
and the resources (time, money) converted to that system.
Suppose you'd only allow a number of fingers stuck up in the air,
counted off verbally by a person walking by.
Already a lot of motivation and organisation is required
to move past the number 1000,
for which more than a hundred foolish people
would have to hold up both hands for up to an hour.
Dependent on the verbal skills of the person counting
and the perseverance of the last batch of participants,
we estimate the Guinness record of physical finger counting
at no more than ~ 10^5.
On the other hand you might approve of decimals
– and hexadecimal numbers – printed out on a sheet of paper.
Then let me tell you, there have been print outs of the digits of the number Pi
running past the million. And if you're prepared to fell some more trees –
with 5000 signs on an A4 sheet, double sided,
500 in a package, you'd need 1661
packages to machine-write a hexadecimal number size ~ 10^10^10.
We'd advise against it. Why not allow digital storage instead? On your
1 TB hard disk about 2^48 bits are available
to write a number as large as ~ 10^10^14.
For the same reason we expect the blue-ray DVD
won't turn out to be a commercial success,
we estimate the digital capacity eventually used by the human race
not to exceed 2^128 bits –
with shared computing this implies a practical maximum binary number
of at most ~ 10^10^38.
Broadly speaking, the all time random number record
will have to lie below 10^^4, for
all the information our universe will ever create is
far smaller
Yet with mathematical means it's easy to build Bigger numbers.
That's what this article is about.
Knuth already made it so much easier for you with his up-arrows.
And then comes Graham's Og, Conway's chained arrows,
bigE and bigI in the first row,
dimensions with countable separator commas,
subscriptable commas in bigI style, the Big type of functions,
countable Big function types in a cycle, operable cycles, higher cycles,
essential characters, meta-characters, enumerable meta-levels, etc.
Mathematical methodology seems endless, but each time a new axiom comes into play
we have to be able to cope with that.
The human mind does have its limitations…
Also the number of well-defined axioms for any operatorial number system has
its history (as in the book) and therefore its physical limits,
and can't be standardized and automated (or can it?o)
A lot more water has to flow under the bridge
before we might be able to hint at a
practical mathematical limit for the largest number.
Logically there can be no limit,
every operatorial system is extendible and every format of extension
can be enumerated with a counter that is iterable in a larger system.
One thing we do know: working exclusively with integers,
or discrete units 1 and -,
neither infinity nor the continuum of real numbers is reached.
The unit of infinity ω is bigger than all natural numbers.
Within operatorial context the first infinity
ω1;
becomes countable by the same methods we counted 1.
Infinitely many next ωn
were expressed by the Operatorial Ω(X).
Then we suggested the higher infinities ψ
and its subscript functionality Ψ to lie beyond.
Greek letter counting was to be our next hobby, etc...
Infinities know no end.
The concept of 0=1 would be a candidate for the largest sort of infinity,
where it not that the system which produces it is at once in an axiomatic state of demise.
Perhaps physically the collapse of a Big or infinite system isn't that straightforward
– it may take a while before we can witness all of its constituent parts
fallen to the ground.
In the mean time 0=1
may sort of exist and even become extended, who knows?
Clever mathematicians may think of new ways to define new concepts.
The future is definitely uncertain.
But why should we make the effort to describe an extremely Big number
with mathematical rigour, when hardly anybody appreciates it?
A grandmaster chess player isn't necessarily best qualified
to explain youngsters how to play the game.
Worse than that – when our systems become too large,
we tend to lose oversight.
One day a mathematical computer may become so proficient at building operatorials,
that nobody understands the results any more.
It's here where the metaphysical definitions
come into their own right, whose only boundary is set by intelligent imagination.
This profoundly fantastic aspect makes them conspicuous,
but their lack of scientific basis is compensated by ease of understanding.
Man has always appreciated the hugeness of What can be
like this.
# St. Peter's Subway
We'll propose a metaphysical definition of
St. Peter's Subway as the Biggest number ever conceived by man.
It speculates on the potential growth of the axiomatic power (and what have you)
of mathematics – this thing that mathematicians do.
And it's description is not absolute, but recursive.
St. Peter's Subway starts off as a parable.
Adam, the first man, comes at the gate of heaven and is asked for the Biggest number.
He holds up his hand and St. Peter counts the fingers.
"Five is not much", he says, but following the rules
Adam is now given 5 new lives to come up with a higher number.
"Had he pointed at his missing rib, he'd been walking above the clouds
instead of below", St. Peter tells his boss, who shakes her head 5 times.
After his lives are over, Adam returns at the gate and is asked again,
"What is your Biggest number?"
Adam's last life had been in India, so now he knows decimal numbers,
and he starts writing out his solution on the patch of sand below St. Peter's feet.
It is a one followed by a hundred zeros.
"Googol is not too many", St. Peter observes, but still Adam is awarded
a googol number of lives. God just shakes her head as St. Peter tells her,
"Had he drawn a plain circle he could have stepped through."
After a long time Adam returns and he looks almost a Buddha –
his head shaven, prayer beads moving round his fingers.
St. Peter stands firmly at the gate of heaven and asks him the same question,
concerning the Biggest number.
Thereupon Adam Buddha writes down a wonderful mathematical formula in the style of
bigI, which expresses a number far beyond human imagination.
"What's that?", St. Peter asks.
"It's an extension of the operatorial bigI", Adam explains,
"I found it on the internet".
"The internet?", St. Peter sighs.
"Yes, I was busy reaching enlightenment, you see,
I'm fed up with returning time and time again."
"I see…"
And so Adam has to spend an unimaginable aeon of lives down in the worldly realm.
God gets a little itchy as St. Peter tells her the news,
"Had he pointed to the lack of his empty head,
the man from nothing should have gone free".
Before Adam returns, St. Peter passes away,
as there is a limit to each man's years, even if that man is a divine being.
In turn St. Peter has to try NOT to enter the Greek hell,
known as Hades, which is just one big solid mist without a scream.
Outside of Hades the Hell Hound is waiting, and the animal barks a question
at the approaching Saint.
"What is the Biggest number of bones?"
As St. Peter repeats the last answer he has heard from Adam in heaven,
he feels lucky the Hound is kept on chains or else he would have been torn apart
by the sharp teeth of this ferocious Beast.
"Why?", growls the multi-headed dog named Kerberos,
"This time I will answer you!"
"If a host of mathematicians as huge as the number you just told me
were to search for the Biggest number and send an envoy to me after
their civilisation had perished to hand me their solution,
I would instantly raise a new mathematical army to the last given number
to search for a way to formulate an even Bigger number.
And I would continue sending out mathematical souls and receiving the envoy
until one would come back to me whose answer was about the same as last time.
Then I would decide to repeat this process of sending and receiving
an extra number of times as Big as the final answer,
just to make sure the solution remains in essence the same.
Only then would I accept that final number to be the Biggest number
conceivable in mathematics."
"It is that many of my dog boned lives that you, Peter,
must suffer the sulphur fumes in the metro system of Hades",
spoke the mythical Cerberus.
"Two questions before I go", said Peter, "How long does your dogship usually live,
and what if these mathematicians keep returning
with entirely different functions of numbers?"
"If so my former method would become the initial event of a successive process
to which the same rules of formation and termination and eventually succession apply",
refereed the Dog of dogs.
"And regarding the first question you've asked,
I live exactly for as long as you can stay, exactly."
"Wu!"
The Saint, a Dog, who can tell what follows next?
These days nobody stands at a loss of words, nor sits totally perplexed.
Such a painful process
0—0
the bitter end...endarkenment.
I beg you
—
a smaller question please
Σ Reference
Σ.1. Dictionary of Signs
Index of mathematical symbols – with a name and a short explanation. The name of the symbol links to a passage in the article which declares its use or elaborates on it.
| 0 |
Zero
–
the empty natural number
reduced by removing the sign. |
| 1 |
One
–
the number 1 or the unit 1
that composes the natural numbers 1.. |
| 2 |
Two
–
the natural number 11 as a character, substitute with
X2Y [2:11] |
| 3 |
Three
–
the natural number 111 as a character sign. |
| 4 |
Four
–
the natural number 1111 as a character. |
| 5 |
Five
–
number 11111,
etc. 6,7,8,9 –
but then 10 is an old-style ten. |
| ω |
Omega
–
the infinite unit ω > 1..
counts the set of all natural numbers. |
| - |
Inverse unit
–
generates negative numbers -*n and inverse functions. |
| - |
Minus
–
the old-styleoperator of subtraction 1-10=-9 is not countable. |
| + |
Binary plus
–
the old-styleoperator of addition 1+9=10 is never counted. |
| + |
Minority plus
–
unary subscriptable operator
a++..;.. of bigA. |
| * |
Star operator
–
single * for multiplication,
multiple **.. super-powers. |
| ^ |
Arrow operator
–
single ^ of exponentiation,
multiple ^.. super-powers. |
| × | Abstract operator – to illustrate locally defined operations in an example. |
| / |
Division operator
–
for division a/b, roots a//b
and super-roots ///.. |
| % |
Remainders
–
super-modulo %..
of the above super-division operation. |
| £ |
Logarithmic operator
–
for £.. super-logarithms,
e.g. 2££65536 = 4 |
| \ | Backslash – precision notation with postponed guest operations on a host. |
| E | Decimal power – scientific notation, example 6.8E+9 ~ 6793605222 |
| † | Dagger – signifies that the previous calculation is cut short in bigO style. |
| ∞ |
Infinity
–
the utopia ↑∞
of a higher number or infinity not composed of units. |
| ↑ | Limit up – approach a number from below, or lim n↑ω towards infinity. |
| ↓ | Limit down – let a variable approach a limit from above, usually towards zero. |
| ← | Unchained arrow – countable operator to construct the operatorial bigY. |
| → | Chained arrow – parameter separator in Conway's chained arrow notation. |
| ! | Factorial – unary operator of the super-factorial and fastorial functions. |
| ? |
Choice
–
random operator n1?
picks an integer from the range 0 to n |
| $ |
Sequality
–
function $(R) returns 1
if all its arguments are equal, else 0 |
| x |
Mean
–
algorithmic mean value, the common average
xi;../n [xi;#n] |
| , |
Separator
–
sign between two parameters or ,.. array dimensions. |
| ; |
Delimiter
–
marks the end of a row of type subscripts
a,0;b,d,e;c |
| @ | Generic char – stand-in for any sign possible in an expression context. |
| . | Dots – select a subsequence in an expression. Use a brown . for decimals. |
| R |
Row
–
row of parameters or subscripts of arbitrary length,
also S,T. |
| Κ | Kappa – signal a set of functions of similar signature {Κ.n.m} |
| = |
Equality
–
in a=b expression a equals the b
that results from its reduction. |
| ~ | Approximation – estimate two numbers a~b as about equal in some context. |
| ≠ |
Not equal
–
comparison a≠b
where number a does not equal b |
| < |
Less than
–
comparison a<b
where number a is smaller than b |
| > |
Greater than
–
comparison a>b
where number a is larger than b |
| ≤ |
Less or equal
–
comparison a≤b
where number a is not larger than b |
| ≥ |
Greater or equal
–
comparison a≥b
where number a is not smaller than b |
| & |



Diophantine riddle
Asamkhyeya takes the liberty to start with a numerological riddle:
The background-coloured digits in the following number point to a diophantine equation. What is its formula? [click→]
[hint→] 666 does seem to be the last solution in number base 10, and there are probably no diophantine solutions with more than 5 digits in any other radix. But beware! As foretold in a secret Sasataansanic saga, there might be a Big number solution with 6 digits in the true number basket of Kabbalah, where Tetragrammaton and Beast Nº.2*333 rest asleep in a sea of glass mixed with fire – humånity hanging upside down from Yggdrasil, the mångrove Church of Life, like a Lemån — whose diophantine equation is…
(a+b)*(a-b)+a = b*(r^p-1)/(r-1) [b<r]