The Culver Lattice

The Covering Relation

A lattice structures can be defined by a covering relation. This simply specifies which symbols are immediatetly above (cover) any particular symbol. The general mathematical notation for this is X ≺ Y, meaning X is covered by Y. To make it clear that which lattice we are talking about, I will write X ≺B Y, meaning X is covered by Y in the Boolean lattice and X ≺C Y, meaning X is covered by Y in the Culver lattice.

The Boolean Lattice

For the Boolean lattice, one symbol is covered by another if the two symbols are identical except for one line which is yin in the first being yang in the second.

Consider the following examples:

100000 010000 001000 000100 000010 000001
000000

000000 is covered by all of 100000, 010000, 001000, 000100, 000010 and 000001 because each of those symbols only differs from 000000 by a single yang line. We could write 000000 ≺B 100000 and so forth for each of the covering symbols. Because there are no yang lines in 000000 it does not itself cover any other symbols. In the Boolean lattice 000000 is actually the minimal symbol. That is, it sits at the bottom of the lattice.

111111
111110
111100 111010 110110 101110 011110
At the other extreme 111110 is only covered by 111111 because there is only one yin line in 111110 to consider. However, because it has yang lines it does cover other symbols, specifically: 011110, 101110, 110110, 111010 and 111100. In the Boolean lattice, 111111 is the maximal symbol. That is, it sits at the top of the lattice.

110100 011100 010110 010101
010100
  010000 000100  
Now consider a symbol in the body of the lattice, for example, 010100. This is covered by four symbols, one for each yin line in the original symbol: 110100, 011100, 010110 and 010101. That is, taking each of the yin lines in turn and changing them to yang gives the covering symbols. Coversely, letting either of the yang lines in 010100 revert to yin shows that this symbols covers the following symbols: 010000 and 000100.

We want to be able to define a relation covers_b, for the Boolean lattice, so that

?- covers_b(G, H).

Is true whenever the symbol G covers the symbol H in the Boolean lattice.

We can described this relation formally in Prolog notation thus:

covers_b([1|R], [0|R]).

covers_b([L|R1], [L|R2]):-
	covers_b(R1, R2).

I have called the relation covers_b to distinguish it from the covers relation for the Culver lattice, which we will call covers_c. There are two parts to this definition. The first part says a symbol covers another if a line which is 1 (yang) in the first is 0 (yin) in the second, and the rest of both symbols R are identical. The second part of the definition says that a symbol covers another if they agree on their current line L, and the remaining part of the first symbol R1 covers the remaining part of the second symbol R2. Putting these two parts together gives us the required definition: one symbol covers another if the two symbols are identical except for one line which is yin in the first being yang in the second.

The Culver Lattice

The covering relation for the Culver lattice is more complex and consists of two different rules.

Firstly, new yang energy can be introduced to a symbol: if the bottom line of a symbol is yin, then it is covered by the symbol which is the same except for having a yang bottom line. So, for example, 010100 ≺C 110100. Note that this rule does not apply if the symbol already has a yang line in the bottom position. Let's call this rule accumulation.

The second part is where existing yang energy in a symbol moves upwards through the structure. So, if a yang line in a symbol has a yin line immediately above it, it can move up in the yin place. So, for example, the yang line in the second place of 010100 could move up to give the symbol 001100, therefore 010100 ≺C 001100. Alternatively the yang line in the fourth place could move up to give the symbol 010010, so 010100 ≺C 010010. Let's call this rule perculation.

100000
000000

As with the Boolean lattice, 000000 is the bottom of the Culver lattice, it does not cover any other symbols. However, whilst in the Boolean lattice 000000 is covered by six other symbols, in the Culver lattice it is only covered by one. Consider the rules: perculation cannot apply, because there are no yang lines in 000000 to move upwards, so the only rule is accumulation. This means that 000000 is covered only by 100000 in the Culver lattice.

111111
011111

Again, as with the Boolean lattice, 111111 is the top of the Culver lattice. However, whilst in the Boolean lattice 111111 covers six other symbols, in the Culver lattice it covers only one. Once again, consider the rules. Perculation cannot have applied because if a yang line had moved upwards from a lower position, there would still be a yin line in the result. Only accumulation can have applied. This means that 111111 only covers 011111 in the Culver lattice.

001100 010010 110100
010100
100100 011000

Now consider a symbol somewhere in the body of the structure. Let's go with 010100 again. We saw above that we can apply accumulation to this symbol, and also we can apply perculation in two different positions. Looking in the other direction, we could ask which symbols does 010100 cover? We only need to consider perculation to answer this question. Consider the lower yang line first: it might have moved up, meaning that 010100 covers 100100. Alternatively, the upper yang line migh have moved, meaning that 010100 also covers 011000.

We want to be able to define a relation covers_c, for the Culver lattice, so that

?- covers_c(G, H).

Is true whenever the symbol G covers the symbol H in the Culver lattice.

The Prolog definition for this relation is slight more complex, reflecting the two different parts of the process:

covers_c(G, H):-
	accumulate(G, H).
covers_c(G, H):-
	perculate(G, H).


accumulate([1|R], [0|R]).
perculate([1,0|R], [0,1|R]).
perculate([L|R1], [L|R2]):-
	perculate(R1, R2).

The first part of the definition says that a symbol covers another if it is the result of accumulating yang in the other symbol, or if it is the result of perculating yang in the other. The second and third part of the definition defines the accumulation and perculation operations as described above. The accumulate rule says that a symbol accumulates yang only in the bottom line when the bottom line in the original symbol is yin. The perculate rule says that yang can perculate up into a yin space, and that can happen anywhere in the symbol where a yin line manifests above a yang line.

Lattice Locales

The lattice locale for any particular hexagram is simply the set of hexgrams that immediately surround it in the lattice. That is, it is the union of the symbols that it covers and which cover it. In the Boolean lattice Hacker (1993PDF Download) calls this a hexagram flower, where he sees a causal relationship based on the change of yang to yin: a symbol which covers a hexagram is an immediate causal antecedent of it, whilst a symbol covered by a hexagram is an immediate causal consequence of it. Secter (2002PDF Download) uses the same idea, but does not impose a causal interpretation, instead using the structure to explore the possible immediate transitions from a given symbol. See my paper Flowers and Steps in the Boolean Lattice of Hexagrams (download here PDF Download) for a more detailed analysis of hexagram flowers in the Boolean lattice.

The diagrams above show the Boolean lattice locales and the Culver lattice locals for a number of symbols. So, although both structures are lattices, we can see that they differ quite markendly in their organization.

The Boolean lattice locale and, by extension, sublattices within the Boolean lattice, provide a comprehensive structural description of the traditional action of change from one hexagram to another as it manifests in a reading (see here for a detailed worked example). Hacker's causal interpretation adds the asymmetric yarrow stalk probabilities to this structure, whilst Secter's approach might be considered to adopt the symmetric coin probabilities. So, what interpretation might the Culver lattice support? We will return to this question as we develop more of the formal comparisons between the two structures.