Astrological formula description language

The language for notating astrological formulae applies to a formalized abstract description of the radix chart. Similar descriptions are used in searching the database for a chart which meets certain criteria, in scanning times when searching for a particular moment of time, and for a more exact synthesis of interpretations of a given chart.


Ex. 1. Suppose we want to find charts which satisfy the condition: Sun is in Aries, Mars conjoins Saturn, and Mercury is sextile or trine to Jupiter. The formula is this:

Sun.Ari & Mar.0.Sat & Mer.Sxt,Tri.Jup

Ex. 2. Direct Mars conjoining Regulus, a conjunction between the Moon and Cupido, and Sun in the 1st house:

MAR.d & MAR.REGULUS & LUN.0.Cupido & SUN.H1

Ex. 3. Singleton Saturn in the 7th house together with a void 5th house in a man's chart (sign of childlessness):

^SUN-JUP.H7 & ^URA-PLU.H7 & SAT.H7 & ^SUN-PLU.H5 & Male

Ex. 4. Mercury conjoined with two or more planets:

// macros (description of set)
// use variables
x1 := ME.0.SO & ME.0.MO-PP;
x2 := ME.0.MO & ME.0.VE-PP;
x3 := ME.0.VE & ME.0.MA-PP;
x4 := ME.0.MA & ME.0.JU-PP;
x5 := ME.0.JU & ME.0.SA-PP;
x6 := ME.0.SA & ME.0.UR-PP;
x7 := ME.0.UR & ME.0.NE-PP;
x8 := ME.0.NE & ME.0.PP;
x9 := ME.0.PL & ME.0.KN,LI;
x10 := ME.0.KN & ME.0.LI;
// main formula
x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | x10

// More simple way using numerical variable:
n ::= ME.0.PP;
n >= 2

Ex. 5. Find all poets in the SADC database:



A formula consists of:

- macros,
- definitions of variables,
- logical expressions, connected by the logic operators AND, OR, NOT,
- strings,
- comments.

Logic operators are designated by the symbols '&', '|', '^'.

Operators "&" and "|" have equal precedence, i.e. they are executed in the formula in left-to-right order as they occur. It's possible to use brackets, e.g. a & (b | (c & d))) means following sequence of opeartions:
x1 = c & d
x2 = b | x1
x3 = a & x2

The logical expression may to be as:

- the function,
- logical variable,
- arithmetic expression.

The function

This is a description of astrology constellation, e.g.:
The result of function is "yes" or "no", if it used in logical expression or in description of logical variable, or number, if it used in description of numeric variable.

The logical variable

Definition of the logical variable (assign a value):
e.g. x6 := ME.0.SA;
Syntax of definition of the logical variable:
<name> := <function>;
Using the logical variable in a formula:
e.g. SO.Lib & x6
Other example:
SF := Sun.Ari,Leo,Sgr;
Use of the variable:
SF & Moon.Psc - means the Sun in a Fire signs and Moon in Pisces.

The variable can be designated in the top of formula (or universal interpretation text) and then used any times in formula below.

Arithmetic expression

Consists of numeric variables and constants, connected by operations of comparison, e.g.:
n == 1
The following operations are possible:
== - equal,
<> - non-equal,
> - greater,
< - less,
>= - greater or equal,
<= - less or equal.

Arithmetic operations

Consists of numeric variables and constants, conneted by + (plus), - (minus), * (multiply), / (divide). Examples:
x ::= a+1; // calculation a numeric variavle X
a*2 >= b // calculation of expression (result is True or False).

Numeric variable

Description of numeric variable (assign a value):
e.g. n ::= SO-PL.0.SA; // number of planets, conjuncted with Saturn.
Syntax of expression for assign a value to numeric variable:
<name> ::= <function>;
Using a numeris variable in the formula:
e.g. SO.Lib & n > 2

Operations with sets

Subset allocation from the set (/=). For example:
p /= PP.asp.H1; // planets in aspect with 1st house cusp
n ::= MA.asp.p; // number of planets (among p), having aspect with Mars


If the formula contains any repeating long sequence of symbols, the sequence can be designated by a short name, and the name used in the formula.
macro := name, the symbol '=', a sequence of symbols, the symbol ';'
For example:
Planet = SO-KN, CU-PO;
Use of a macro:
Planet.Sco - means any planet in the sign of Scorpio.


A string is a sequence of symbols delimited by the symbol '"', e.g. "astrologer" .
The string is applied in searching a given sequence of symbols in a database. Searches are made in all fields of a record, not just in the comment field (all fields are textual). For example, it is possible to specify the string "astrologer" to search for astrologers.
The string is not case sensitive, spaces are ignored.


The text of a formula may contain comments. A comment is any line beginning with the symbols '//'. For example:
// This line is a comment
If the formula used in Universal Interpretation, then it's possible to use "outgoing" comments - strings, which always displayed in the interpretation document.
The format of "outgoing" comment is: //* <string> *//

The following two-letter notations are recognized:
SO Sun
MO Moon
ME Mercury
VE Venus
MA Mars
JU Jupiter
SA Saturn
UR Uranus
NE Neptune
PL Pluto
KN North Node
SN South Node
LI Lilith
SE Selene
PR Proserpine
CH Chiron
CU Cupido
HA Hades
ZE Zeus
KR Kronos
AP Apollon
AD Admetos
VU Volcanus
PO Poseidon

The following trigrams are also accepted:

'SUN','LUN','MER','VEN','MAR','JUP','SAT','URA','NEP','PLU', 'NOD','SND','LIL','SEL','PRO','CHI';

Planets can be designated by their names:
Sun, Moon, Mercury...

The above-mentioned 16 planets can be used to designate an interval, e.g. SUN-PLU.

The name of planet form Sun to Pluto can be trimmed to three initial letters, and case (upper or lower) is not significant, i.e. it is possible to write "Mercury" and "mer".

The Arabic Part can be specified either by it's name, e.g. "Fortune", or by it's code, e.g. "for" according the Catalog of Arabic Parts.

The virtual planet can be specified either by it's name, e.g. "Vertex", or by it's code, e.g. "eqa" (Equatorial Ascendant) according the Catalog of Virtual Planets and Objects.

The asteroid can be specified either by it's name, e.g. "Ceres", or by code "AS" plus catalog asteroid's number, e.g. Ceres - AS1 (do not miss with A1 - the almuten of 1st house).

All the above objects can be used to specify a set, e.g. "Sun,Ven,Jup".

All objects used in a search formula must exist and be available for calculation in ZET before executing the search formula.

'ARI','TAU','GEM','CNC','LEO','VIR', 'LIB','SCO','SGR','CAP','AQR','PSC';
It is also possible to use a Sign's name, and to trim it in length.

Signs can make an interval and a set, e.g. "ARI-VIR", "TAU,LEO,SCO,AQR".

Portions of a Sign are permitted, e.g. "ARI[30]" = 30th degree of Aries (from 29°Ari up to 30°Ari) or, the same, "ARI[29-30]". Portions of the Zodiac are allowed, e.g. "Lib[15]-Sco[15]" = (one definition of) Via Combusta.

It is permissible to use the following trigram designations:
'CNJ', 'SSX', 'DEC', 'NOV', 'SSQ', 'SXT', 'QNT', 'SQR', 'TRI', 'SQQ', 'QNX', 'OPP';

If an aspect exists in the current orb table, it can be designated numerically by the approximate value of the aspect in degrees (the orb used is that specified for it in the orb table).

An aspect can make a set with an orb, as a range of angles in degrees, e.g. "[131-133]" or "[49:39:19-53:20]" (variant of 49°39'19" - 53°20'00") or "[119.9-120.1]".

For declination aspects you can use: 'P' - parallel, e.g. "ME.P.MA" = Mercury in parallel with Mars, '^P' - contra-parallel, e.g. "MO.^P.VE".

For anticia aspects you can use: 'A' - anticion, e.g. "ME.A.MA" = Mercury in anticion with Mars, '^A' - contra-anticion, e.g. "MO.^A.VE".

In addition it is possible to specify the aspect's dynamics: 'A' - converging, 'S' - receding, 'F' - forward, 'B' - back, e.g. "Sun.120AF.Lun" = applying trine, Sun ahead (forward on the Zodiac) of the Moon.


Midpoints are specified with the established slash convention: '/', e.g. "MO.MA/VE" = Moon on the midpoint between Mars and Venus.

'H1', ... 'H12';

A portion of a house selects an interval in units of 1/30 the total extent of the house, e.g. "H1[0-10]" = the first third of the first house.

Houses may make an interval and set, e.g. "SO.H1,H10" = Sun (Sol) in the first or tenth house.

You can operate with cusps, using the same notation as for houses, e.g. "SO.0.H1 | SO.0.H10" = Sun conjoining Asc and/or MC.

NOTE: Cusps cannot make an interval or a set, so "SO.0.H1,H10" is not a valid expression.

Almutens of House:
'A1', ... 'A12';

The almuten of a house is the ruler of the Sign on the house cusp. Almutens may make a set.

Phases in the movement of a planet:
'D' - direct,
'R' - retrograde,
'S' - stationary,
'V' - fast.
'<' - the planet before other one by Zodiac.

Combinations "DS", "RV", are allowed.
Examples: - Uranus retrograde, stationary,
SO.<.MO - The Sun before the Moon (waning moon),
MO.<.SO - The Moon before the Sun (waxing moon).

e.g. "" = Mars in midpoint Saturn/Chiron.

Planet dignities:
'tripl', 'term', 'face', 'degree';

e.g. "so.tripl.ju & & &" = Sun in the triplicity of Jupiter, and the Moon in the term of Saturn, and Mercury in the face of Venus, and Mars in the degree of Mercury.
Other, using the set:
"ME.TRIPL.JU,SA" = Mercury in the triplicity of Jupiter or Saturn,
"H1,H10.TRIPL.JU" = Asc or MC in the triplicity of Jupiter,
"Asc,MC.TRIPL.JU" = this must used for the thue Asc and MC, if cusps of 1st or 10th houses differ from Asc or MC.

Using transit objects, e.g. "Asc',MC.TRIPL.JU" - the acsendant āof transit chart or MC of natal chart in the triplicity of Jupiter.

The interval set as against the enumeration set, can used for only one chart objects (either natal, or tarnst): "SO-PL" - planets of natal chart, "SO-PL'" or "SO'-PL'" - planets of transit chart ("SO'-PL" - wrong).

Note. The interval "H1-H10" enumerates 10 houses or cusps (depending of sence), but "Asc-MC" is equal to "Asc,MC", so enumerates two cusps.

Planetary Hours:
'pln_hour' - in planetary hour,

e.g. "mo.pln_hour" - Moon's hour,
"SO-ME.PLN_HOUR" - Sun's, Moon's or Mercury's hour.

'MoonDay[n]' - Moon Day, e.g. "MoonDay[9]" - 9th day of Moon, the calculation method (by sunrices or by 12-degree sectors) defines with current settings.
"MoonDay[1-5]" - first 5 days of Moon.

'DayOfWeek[n]' - e.g. "DayOfWeek[4]" - Wednesday (1 - Sunday, ..., 7 - Saturday), it's possible to specify the transit data, e.g. "DayOfWeek'[4]". The set is acceplable, e.g "DayOfWeek[1,7]" - Sunday or Saturday.

Date and Time:
'date', 'time',
e.g. "Date[12]" - 12,
"Date[12.11]" - 12 November,
"Date[12.11.2006]" - 12 November 2006, allowed the american style (mm/dd/yyyy): Date[11/12/2006],
"Time[7]" - 7 AM (local time),
"Time[21:30]" - use 24h mode,
the trisit data allowed, e.g. "Date'[31.12] & Time'[23:59]".

The interval allowed, e.g. "Date[1-15]", "Time[14:50-15:20]".

Dates in the interval must to be same kind, e.g. [1-15], [10.11-31.12], [1.01.2000-31.12.2006].

When the interval of time calculated, it filled to seconds as follows, e.g.
[14-15] as [14:00:00-15:59:59],
[14:50-15:20] as [14:50:00-15:20:59].

Moon Void of Course:

Doriphoros, Auriga:
'Doriphoros', 'Auriga',
Doriphoros (doryphory) the planet rises directly before Sun. Auriga: the planet sets directly before Sun.
E.g. "ME.Doriphoros & VE.Auriga"

Aspects Configuration:
'AspConfig', 'AspConfigAll',
e.g. "AspConfig[T-Square]" - the "T-Square" configuration exists,
SO-MA.AspConfig[Grand Trine] - at least one of mentioned planets is a member of "Grand Trine" configuration,
ME,VE,KN,PL.AspConfigAll[Kite] - all mentioned planets are members of one specified configuration,
me,ve.aspconfigall[Bisextile,T-Square] - Mercury and Venus both are members of one configuration from a list of specified ones.


'Birthday' - calculates a count of days from current (transit) date (day and month) to native's birthday (source chart). The function can used only in descriptions of nimeric variables.
n ::= Birthday;
n == 1 // Tomorrow native's birth day

The orbital elements of planet:
The point of planet orbit specified in catalog of Parses as a formulae with sintax:
A[t].Planet where

  • A - orbital element: 'A' - aphelion, 'P' - perihelion, 'N' - north node, 'S' - south node, 'F' - 2nd focus of orbit;
  • t - type of element: 't' - true, 'b' - barycentric;
  • Planet - planet name.
A.Sun - aphelion of Sun (mean),
Nt.Jup - true north node of Jupiter (geocentric).
Then this point uses as other planets in the astro-formula.

Native's gender:
'Male' - a man's chart,
'Female' - a woman's chart.

Planets in Moon Mansions

SO.MoonMansion[18] - Sun in Jiestha (18),
SO-SA.MoonMansion[1-5] - one of planets is in first five mansions of the Moon,
MO'.MoonMansion[5,6] - transit Moon in Mrigashira or Ardra.

Arithmetic Functions

x ::= Max[a,b,c]; // calculate a maximum of 3 variables
x ::= Min[a,b,c,d,e]; // calculate a minimum of 5 variables


- simultaneous use of numerical and logical variables is inadmissible in one expression,
- use of external brackets in a resultant formula is inadmissible. E.g.:

pp = SO-PL; // macros (description of set)
w ::= pp.CNC,SCO,PSC; // numerical variable
m := (MO.LillyEssGreen[0] & MO.LillyAccGreen[0]); // logical variable
n := w > 3; // logical variable
m & n // the final formula is correct
//(m & n) // the final formula is wrong
//m & (w > 3) // the final formula is wrong


Expamples of using arithmetic functions

To show accentuated elements and crosses:

F ::= SO-PL.Ari,Leo,Sgr;
W ::= SO-PL.Cnc,Sco,Psc;
A ::= SO-PL.Gem,Lib,Aqr;
L ::= SO-PL.Tau,Vir,Cap;
x ::= max[F,A,W,L];
x == F // most planets in Fire

KA ::= SO-PL.Ari,Cnc,Lib,Cap;
FI ::= SO-PL.Tau,Leo,Sco,Aqr;
MU ::= SO-PL.Gem,Vir,Sgr, Psc;
x ::= max[KA,FI,MU];
x == MU // most planets in Mutable Cross
To show then synthetic sign:
F ::= SO-PL.Ari,Leo,Sgr;
W ::= SO-PL.Cnc,Sco,Psc;
A ::= SO-PL.Gem,Lib,Aqr;
L ::= SO-PL.Tau,Vir,Cap;
KA ::= SO-PL.Ari,Cnc,Lib,Cap;
FI ::= SO-PL.Tau,Leo,Sco,Aqr;
MU ::= SO-PL.Gem,Vir,Sgr, Psc;
x ::= max[F,W,A,L];
x1 ::= max[KA,FI,MU];
(x==F)&(x1==MU)  // synthetic sign is Sagittarius

Sample of MAX in Universal Interpretation

// UNI
// The planet with maximum count of aspects
asp = 0,30,40,45,60,72,90,108,120,135,144,150,180;
x1 ::= SO.asp.PP;
x2 ::= MO.asp.PP;
x3 ::= ME.asp.PP;
x4 ::= VE.asp.PP;
x5 ::= MA.asp.PP;
x6 ::= JU.asp.PP;
x7 ::= SA.asp.PP;
x8 ::= UR.asp.PP;
x9 ::= NE.asp.PP;
x10 ::= PL.asp.PP;
n ::= max[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10];
<<< n == x4 >>>
The Venus in your horoscope have a maximum count of aspects, so ...
<<< n == x8 >>>
The Uranus in your horoscope have a maximum count of aspects, so ...

Dual Charts

For referring to planets, etc in the outer ring of dual and complex charts, the symbol ' (apostrophe) should be appended, e.g. for a transit chart:
"NE'.180.PL" = transiting Neptune opposing natal Pluto,
"Sol.0.Ur'" = transiting Uranus conjoining natal Sun.