§2.5 Bellenblazer
We gaan een array functie ontwerpen voor grote getallen
met simpele, natuurlijke regels.
Dit Bellenblazer systeem heeft een
constante aas
a>0
en een variabele bel
b≥0
in de basis.
Door de aas herhaald op te tellen bij de bel
groeit daar een subtotaal, waarmee we
afgetelde iteraties keer op keer nieuw leven inblazen.
Het grote idee van
bellenblazen
13
is, dat ook zonder substitutie van de hele functie (subexpressies),
maar enkel met optellen en substitutie van variabelen
(opladen) een functie maximaal kan worden.
Het Bellenblazer algoritme begint met het optellen van
a..
azen.
Voor de eerste iter in de rij, de factor c
van vermenigvuldiging, staat separator
,[1]
die we ook wel :=
schrijven als ,
enkele komma.
- [,[1]1]a := [,1]a = [a,]a = [a]a = a
- [b,[1]2]a := [b,2]a = [ba,1]a = [baa]a = aab
- [b,[1]1c]a := [ba,c]a == [ba{1c}]a = a*c1+b
We schuiven b
hogerop in de functie
en zetten a
ervoor in de plaats in de basis.
Dit is niet significant kleiner dan een regel die een
kopie van b
verlaadt.
Dat kan ook, maar leidt tot verdubbelen,
meteen al zonder vermenigvuldiging.
Dit zagen we met Superplussen in
box 2.1
en met
Péter's functie
en later weer met ons Wielewaal systeem.
We zullen Bellenblazer expressies op twee manieren schrijven.
Onze uitgeklede array notatie helpt om berekeningen op te
bouwen:
•
Strikt volgens de definitie, de bel binnen de array
[b,X]a
en de aas rechts erbuiten.
Bel b
tellen we van rechts bij.
•
Of zonder functie haken
b,X
maar met a
erin genoemd.
We keren een bel ba
alvast om ab
uit de array vorm
.
Na index 2
komt iter
d
van machtsverheffen,
wat vermenigvuldiging a*..
herhaald. De 3
e iter
e
stapelt machten
a^..
als een toren van exponenten,
te beginnen met de hoogste exponent.
Dit is een bel b
,
die we met een pop
operator \^
bovenop de reeks machten plaatsen.
- [,[2]2d]a := a,[2]1d = 0,[1]a,[2]d = a*a,[2]d == a*..a,[2]1 :d = a**d2 = a^(d+2)
- [b,[3]1e]a {b>0} = [,[2]b,[3]e]a := a**b,[3]e == a**..b,[3]1 :e = a**..b :e1 = a^^e1\^b
De Bellenblazer rij is een lineaire array functie
die Knuth's pijlen ^{n}
weergeeft.
We willen dat de iteraties kloppen met deze supermachten,
waarbij we iters en al hun indexen (niet alleen de eerste in subarrays)
aftellen tot ze leeg 0
zijn en dan opruimen.
Na dit stroeve begin verloopt de evaluatie van Bellenblazer
soms zelfs makkelijker dan die van
supersterren.
De regels van beide systemen verschillen enigszins,
maar dezelfde getallen kunnen we met super popsterren
of met Bellenblazer arrays uitdrukken.
Neem twee passages uit de evaluatie naar een getal
a****f3
, waar variabelen met dakjes
^^
staan voor inmiddels uitgewerkte getallen.
Popster intro met popschuiven
==
vatten we in Bellenblazer samen =
met de regel voor opladen van de bel van links.
- a*{4}3f = a+*{3}a*{4}2f == a*{3}a+*{3}a*{4}1f == a^^-a+*{2}a*{3}1+*{3}a*{4}1f = a*{2}a^^-a+*{3}a*{4}1f == a^^a+*{3}a*{4}1f == a*{3}a^^^2+*{3}a*{4}f == a^^^3+*{3}a*{4}f
- [,[4]3f]a := a,[4]2f = ,[3]a,[4]1f == a^^a-,[3]1,[4]1f = ,[2]a^^a-,[4]1f == a^a^^a-,[4]1f = ,[3]a^^a,[4]f == a^^a^^a,[4]f === a^^..a :f2 = a^^^f3
Array systemen voor grote getallen
starten we links met kleine iteraties
en bouwen de grotere structuren rechts aan.
We reduceren iters in een expressie
l-r van links naar rechts, de grotere later.
Series afkomstig van de meest rechtse iteraties zijn het langst,
maar die komen dus pas later in de evaluatie
volledig aan bij de bel.
Voor Bellenblazer is bepalend dat we iteratoren links
1Z
willen aftellen
en daarna rechtstreeks opladen met de bel.
In de bel moeten we dus steeds aan de rechter kant erbij tellen,
wat kortere series a..
alvast naar links duwt,
want na opladen komen die het eerst aan de beurt.
Wat links staat is kleiner en evalueren we eerder en blijft links houden.
Dit is onze array telvorm.
Maar als we commutatief optellen
zoals Cantorf,
dan vallen kleinere getallen weg
als er rechts een groter oneindig getal naast staat.
Terwijl we ons algoritme willen afstemmen
op het blazen van oneindige azen.
Kleinere series ω..
moeten blijven bijdragen aan het totaal.
Om de uitkomst af te lezen uit de array expressie draaien we een bel
bω
gewoon
ωb
om.
Zo krijgen onze oneindige getallen de wiskundig gangbare
r-l telrichting, de Cantor telvorm.
Mocht de wiskunde overstag gaan
en de l-r richting van onze arrays overnemen
(eerst links klein dan rechts groot), dan kan regel
B.0.
de mogelijk oneindige output
bw
alsnog zo laten.
Definitie Bellenblazer
B.I
van de construct
*{1}
array rij.
- B.0. [bw]a = wb
- B.1. [b,[1]1Z]a = [ba,[1]Z]a
- B.2a. [X,[n]]a = [X]a B.2b. [b,[n],Z]a = [b,Z]a
- B.3. [,[1n]1Z]a = [a,[1n]Z]a
- B.4. [b,[2n]1Z]a = [,[1n]b,[2n]Z]a
Deze regels matchen door =
de hele
expressie. Onder voorbehoud in
B.4.
dat {b>0}
kunnen ze in elke volgorde worden toegepast.
De lege sep ,[]
is hierbij niet nodig, maar zou kunnen wegvallen met
poptellen,
zodat a,[]b1
per unit
1
links bijtelt tot b1a
.
De primitieve stap met optellen van aas en bel in regel
B.1.
is een klasse
*{0}
constructie.
Hoofdregel
B.3.
itereert over elementen
,[n]
in de *{1}
rij structuur,
waarmee we supermachten uitdrukken.
Echte functie recursie met nesten van subexpressies is onnodig,
want in diep geneste arrays is het opladen van bel
b
vrijwel maximaal.
Hulpregels
b.I
voor notaties :=
en samenvatting in Bellenblazer.
- b.1. ,[1]1 := ,1
- b.2. [b,Z]a {a∈Z} := b,Z
- b.3. [1b,[2S]1Z]a = [a,[1S]b,[2S]Z]a
In een systeem met binaire code
kan aan getallen een 0
vooraf gaan. Andere tekens krijgen een dubbele nul prefix
001{n}
met nummer.
Leeg getelde elementen worden dan gevolgd door
000
tekens.
- Tekens voor evaluatie, vervang de linker expressie door die rechts:
-
=
Evaluatie van de gehele expressie. -
==
Pas voorgaande evaluaties herhaald toe. -
`=
Herschrijf de eerste l-r match in expressie. -
=`
Evalueer de match die l-r het eerst eindigt. -
≡
Is altijd equivalent, maar l-r met voorrang. -
?=
Werk operaties uit met voorrangsregels. -
=!
Werk operaties strikt rechts associatief uit. -
:=
Ga over naar een alternatieve notatie. -
=:
Keer de evaluatie richting tijdelijk om. -
≈
Is ongeveer gelijk aan. -
≈>
Is insignificant groter dan. -
<≈
Is insignificant kleiner dan. -
=#
Waardes in volgorde van evaluatie.
Formuleren we de eerste rij van Bellenblazer,
de lineaire array
, met supermacht operaties.
- [,[1n]1f]a := a,[1n]f = a,[n]a-,[1n]f- = a*{n}a,[1n]f- == a*{n}(..a..) :f: = a*{n1}f1
- [f0.,[1ni]fi..]a :r {f>0} = f0.+*{ni}a*{1ni}fi.. :r = ..a^{ni}fi\*{ni}.f0 r:
Links in de array kan de bel vanaf
f0=0
beginnen,
als deze optelt +
bij een element
,[1]f1
dat a
herhaald optelt.
Of bel
f0>0
vermenigvuldigt *
na herhaald vermenigvuldigen,
als eerst het element
,[2]f1
komt. Dit is nog commutatief.
Anders volgt eerst
,[1n1]f1
wat een superexponent
*{n1}b
blaast op een toren van operaties
*{n1}a
die we van rechts uitwerken.
Uit de evaluatie volgt dat elke volgende index op de rij
ni1>ni
een hogere supermacht is.
Maar de bel die we opladen onder een index kan daarvoor
ni<ni-
gevormd zijn uit hogere supermachten.
Dat ligt dan aan de input expressie.
Iedere iteratie is de rechts bijgetelde serie
1..
in de bel weer langer dan daarvoor.
Bellen worden naar iters en indexen verladen
en van links weer afgeteld.
Bij oneindige :ω
reeksen van a..
lezen we de output af
ω:
in Cantor's telrichting.
Een samengestelde aas zouden we in aanvang
a=nω
omkeren. En omega ω
is in onze arrays van links oneindig aftelbaar. Omega keer min
-{ω}ω
afgeteld van omega telt de iter 0
leeg.
Hoewel we min -
tekens
liever achter getallen noteren.
In een successor functie
Ω
g
zullen we ω
opvatten als oneindige unit.
Zoals unit 1
de natuurlijke getallen vanaf
0
telt, zo stamt unit ω
af van 1
op een hoger plan.h
De Bellenblazer rij geeft de elementaire operaties
en supermachten mooi weer.
Dit is onze natuurlijke
lineaire array functie.
Als subtotaal b
opgeladen wordt komt de bel leeg.
Vanuit deze situatie moeten we diepere index posities opladen.
Om zo'n functie natuurlijk en maximaal
te maken voor geneste arrays, is dat mogelijk…?
Sommige verzamelingen getallen kunnen niet oneindig worden afgeteld, gg: Count from omega in "Bigger" voor Btrix matrix (iteror 2014).
g.
Omega-telbaar binnen een bigOmega functie, gg: Omega oneindigheid in "Mathmuis... plaatst een Record Getal" voor NAW (concept 2010).
h.
Een volgende grotere oneindigheid in Omega Ω, gg: Higher omega in "Omega jumps" voor Btrix matrix (iteror 2014).
Zolang de Bel leefde was de Bellenblazer buiten zichzelf geweest, uit Peter Sloterdijk "Sferen" 2005, p.219 in Joke Hermsen "Stil de tijd" 2009.
No comments:
Post a Comment