# 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:

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

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

Now consider a symbol in the body of the lattice, for example, . This is covered by four symbols, one for each yin line in the original symbol: , , and . 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 revert to yin shows that this symbols covers the following symbols: and .

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,  ≺C . 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 could move up to give the symbol , therefore 010100 ≺C . Alternatively the yang line in the fourth place could move up to give the symbol , so  ≺C . Let's call this rule perculation.

As with the Boolean lattice, is the bottom of the Culver lattice, it does not cover any other symbols. However, whilst in the Boolean lattice 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 to move upwards, so the only rule is accumulation. This means that is covered only by in the Culver lattice.

Again, as with the Boolean lattice, is the top of the Culver lattice. However, whilst in the Boolean lattice 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 only covers in the Culver lattice.

Now consider a symbol somewhere in the body of the structure. Let's go with 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 cover? We only need to consider perculation to answer this question. Consider the lower yang line first: it might have moved up, meaning that covers . Alternatively, the upper yang line migh have moved, meaning that also covers .

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 (1993) 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 (2002) 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 ) 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.