Resolutions

Recall that a *resolution* of a block design is a partition of
the blocks into subsets, each of which forms a partition of the point
set. Such a partition of the block (multi)set can be represented as a
function on the set of indices of blocks (the parts of the partition
being the preimages of the elements in the range of the function). We
thus store a resolution as a `function_on_indices` with
`domain="blocks"`.

An *automorphism* of a resolution is a permutation of the set of
points of the design such that, if this permutation is applied to the
elements of each block in each resolution class, the (multi)set of
resolution classes is the same as before. The collection of all
automorphisms of a resolution of a design forms a subgroup of the
automorphism group of the design itself, and we use the same
`automorphism_group` structure for the automorphism group of a
resolution as we do for the automorphism group of a block design
(although the `automorphism_group_properties` for
a resolution are different than those for a block design).

We specify a resolution as follows:

resolution = element resolution { function_on_indices, resolution_automorphism_group ? }

A block design may have more than one resolution. We say that two
resolutions and of are *isomorphic* if there is an
element in the automorphism group of , such that, when is
applied to the elements of each block in each resolution class of ,
the resulting resolution is equal to . Isomorphism defines an
equivalence relation on the set of resolutions of .

We use the element `resolutions` to store a nonempty list of
(distinct) resolutions of a resolvable design. The attributes of this
tag are used to specify whether the listed resolutions are pairwise
nonisomorphic and whether all isomorphism classes of resolutions are
represented in the list.

resolutions = element resolutions { attribute pairwise_nonisomorphic { "true" | "false" | "unknown" } , attribute all_classes_represented { "true" | "false" | "unknown" } , resolution + }

We now display a famous resolvable design, the affine plane of order 3, which has just one resolution.

<list_of_designs design_type="block_design" dtrs_protocol="1.1" no_designs="1" pairwise_nonisomorphic="true" xmlns="http://designtheory.org/xml-namespace"> <block_design b="12" id="t2-v9-k3-L1-1" v="9"> <blocks ordered="true"> <block><z>0</z><z>1</z><z>2</z></block> <block><z>0</z><z>3</z><z>4</z></block> <block><z>0</z><z>5</z><z>6</z></block> <block><z>0</z><z>7</z><z>8</z></block> <block><z>1</z><z>3</z><z>5</z></block> <block><z>1</z><z>4</z><z>7</z></block> <block><z>1</z><z>6</z><z>8</z></block> <block><z>2</z><z>3</z><z>8</z></block> <block><z>2</z><z>4</z><z>6</z></block> <block><z>2</z><z>5</z><z>7</z></block> <block><z>3</z><z>6</z><z>7</z></block> <block><z>4</z><z>5</z><z>8</z></block> </blocks> <resolutions all_classes_represented="true" pairwise_nonisomorphic="true"> <resolution> <function_on_indices domain="blocks" n="12" ordered="true" title="resolution"> <map> <preimage><z>0</z><z>10</z><z>11</z></preimage> <image><z>0</z></image> </map> <map> <preimage><z>1</z><z>6</z><z>9</z></preimage> <image><z>1</z></image> </map> <map> <preimage><z>2</z><z>5</z><z>7</z></preimage> <image><z>2</z></image> </map> <map> <preimage><z>3</z><z>4</z><z>8</z></preimage> <image><z>3</z></image> </map> </function_on_indices> </resolution> </resolutions> </block_design> </list_of_designs>