Good ole Golden Dawn to spell out everything, including how to do Alchemy properly in the Z2 formula. However it is difficult to read. So as an exercise I translated it into programming psuedo-code. Latter I regrouped the steps and paraphrased it again for more clarity. See its sister page here: Alchemy Paraphrased.
/******Golden Dawn Z2 Final Heh (Alchemy)*****/
/*A*/
Egg = Crucible OR Alembic;
/*B*/
Alch = Alchemist = Tiro;
/*C*/
Process = Spagyric //following Calc(), Disolv(), Sep(), Conj(), Ferm(), Distil(), Cohab()
/*D*/
Matter = Herbs AND Alcohol;
GenForce = YESOD;
/*E*/
getCrapRdy();
/*F*/
invoke(HGA, Alch);
Egg.put(Matter);
invoke(BlindForce, Matter); //awaken Matter, BlindForce == ???
/*G*/
evoke(???, ???);
distil(Egg); //EvokeCnt==1; DistilCnt==1; don't know what to evoke
/*H*/
DeadHead = Egg.decant();
Calc(DeadHead);
Egg.put(DeadHead);
/*I*/
Altar.set(Neophyte);
Altar.set(GenForce.tablet(), TRIANGLE);
Alch.announce("all prepared");
Alch.stand(EAST);
Alch.hold(LotusW, ARIES)
/*J*/
Alch.invoke(GenForce, Egg);
Alch.evelate(Egg);
Alch.say(GROVEL_GOD);
/*K*/
WHILE (Egg.color() <> BLACK)
Ferm(Egg);
IF (LongTime)
evoke(elemental);
IF element.color() <> BLACK
quit_all();
END IF
END WHILE
Alch.stand(NORTH);
Altar.set(Egg, NORTH);
invoke(SATURN, Egg);
/*L*/
define proc()
{
Distil(Egg);
DeadHead = Egg.decant();
Calc(DeadHead);
Egg.put(DeadHead); //use gentle heat, should this count as Ferm() ?
Disolv(Egg);
}
proc(); //call the process
//DistilCnt() == 2
/*M*/
Altar.set(Neophyte);
Altar.set(Egg, WEST);
Alch.hold(LotusW, EARTH);
invoke(LUNA_DEC AND DRAG_TAIL, Egg);
IF (NOT date.nineDaysBeforeFull())
waitOneDay();
FOR night 1 TO 9 COUNT 1
Egg.expose(MOON_LIGHT);
/*N*/
proc();
DistilCnt() == 3
/*M*/
Altar.set(Neophyte);
Altar.set(Egg, EAST);
Alch.hold(LotusW, SPIRIT);
invoke(MOON_INC AND DRAG_HEAD, Egg);
IF (NOT date.nineDaysBeforeFull()) //yes I'm aware its to the Full Moon again
waitOneDay();
FOR night 1 TO 9 COUNT 1
Egg.expose(MOON_LIGHT);
/*P*/
Altar.set(Neophyte);
Altar.set(Egg, Triangle);
Alch.hold(LotusW, LEO);
invoke(SUN);
WHILE(Sun.in(SCORPIO) OR Sun.in(LIBRA) OR Sun.in(CAPRICORN) OR Sun.in(AQUARIUS))
waitOneDay();
FOR hours 1 TO 12 COUNT 1
Egg.expose(SUN_LIGHT); //it says 12 hours each day, but not how many days ???
/*Q*/
Altar.set(Neophyte);
Altar.set(Egg, TRIANGLE);
Alch.hold(Lotus, SPIRIT);
Alch.say(quitNight_seekDay);
Alch.invoke(LUX, Egg); //not sure if you are supposed to say KHABS AM PEHKT etc. while doing this
Alch.check(Egg, Flashing);
evoke(elemental);
attempCnt = 0;
IF elemental.color() <> GenForce.color() AND attemptCnt < 3)
Altar.set(Sun.tablet(), SOUTH);
Altar.set(Moon.tablet(), WEST);
FOR days 1 TO 7 COUNT 1
Egg.expose(Altar);
attemptCnt = attemptCnt + 1;
END IF
IF attemptCnt >= 3
quit_all();
/*R*/
// still in the temple from Q
Alch.draw(FLAME_SWRD, Egg);
Altar.set(Egg, EAST);
Alch.stand(PILLARS);
invoke(MARS, Egg);
Altar.set(Mars.tablet(), PILLARS);
Altar.set(Egg, PILLARS);
FOR days 1 TO 7 COUNT 1
Egg.expose(Altar);
Distil(Egg); // in Mariae then Arenae
/*S*/
//assuming the temple is setup etc.
DeadHead = Egg.decant(); //don't throw the Dead Head away
Fluid = Egg; //the liquid leftover
invoke(MERCURY, Fluid);
Alch.check(Fluid, Brillant);
FOR days 1 TO 7 COUNT 1
IF Alch.check(Fluid, Flashing);
BREAK;
Fluid.expose(Sun_Light);
END FOR
/*T*/
//assuming the temple is setup etc.
Calc(DeadHead);
invoke(JUPITER, DeadHead);
set(DeadHead, Jupiter.tablet());
attempCnt = 0;
FOR days 1 TO 7 COUNT 1
DeadHead.expose(Darkness);
attempCnt = 1;
IF NOT Alch.check(DeadHead, FlashLittle)
FOR days 1 TO 7 COUNT 1
DeadHead.expose(Darkness);
attempCnt = attempCnt + 1;
END IF
IF attempCnt >=3
quit_all();
/*U*/
Altar.set(NEOPHYTE);
Altar.set(4Kerub.tablet(), 4Corners);
Altar.set(Fluid, NORTH);
Altar.set(DeadHead, SOUTH);
sirp(FIRE, Egg); //in the crucible, alembic, bottle, etc.
sirp(WATER, Fluid); //
sirp(SPIRT, Egg AND Fluid);
sirp(AIR, air); //the stuff that helps percholate
sirp(EARTH, DeadHead);
FOR days 1 TO 5 COUNT 1
exposeAll.(Altar);
IF NOT Alch.check(Fluid AND DeadHead, FlashColorLight)
quit_all();
/*V*/
Altar.remove(4Kerub.tablet());
Altar.set(Kether.tablet(EmpressScale), TRIANGLE);
Alch.say(GROVEL_GOD);
invoke(Kether, Fluid AND DeadHead);
Alch.draw(FLAM_SWRD, Fluid AND DeadHead);
IF NOT Alch.check(Fluid, DiamondSparkle) OR NOT Alch.check(DeadHead, GemGleam)
quit_all();
/*W*/
Egg = Conj(Fluid, DeadHead); //should look cloudy, not sure if Cohab instead ???
FOR days 1 TO 10 COUNT 1
Egg.expose(SunLight); //moving from Tiph to Ktr
Altar.set(Venus.tablet(), TRIANGLE);
Altar.set(Egg, TRIANGLE);
invoke(VENUS, Egg);
FOR days 1 TO 7 COUNT 1
Egg.expose(Altar);
Alch.check(Egg, SoftColor); //use elemetnal if needed
FOR days 1 TO 7 COUNT 1
Ferm(Egg);
temperature = LOW;
WHILE NOT Egg.noExcess()
Distil(Egg);
temperature = temperature + 1;
END WHILE
put(Egg, Anathor)
FOR days 1 TO 7 COUNT 1
Egg.cook();
END WHILE
suceded_op();