# Multivariate Block-Support Simulation of the Yandi Iron Ore Deposit, Western Australia

- First Online:

- Received:
- Accepted:

DOI: 10.1007/s11004-012-9402-9

- Cite this article as:
- Boucher, A. & Dimitrakopoulos, R. Math Geosci (2012) 44: 449. doi:10.1007/s11004-012-9402-9

## Abstract

Mineral deposits frequently contain several elements of interest that are spatially correlated and require the use of joint geostatistical simulation techniques in order to generate models preserving their spatial relationships. Although joint-simulation methods have long been available, they are impractical when it comes to more than three variables and mid to large size deposits. This paper presents the application of block-support simulation of a multi-element mineral deposit using minimum/maximum autocorrelation factors to facilitate the computationally efficient joint simulation of large, multivariable deposits. The algorithm utilized, termed *dbmafsim*, transforms point-scale spatial attributes of a mineral deposit into uncorrelated service variables leading to the generation of simulated realizations of block-scale models of the attributes of interest of a deposit. The *dbmafsim* algorithm is utilized at the Yandi iron ore deposit in Western Australia to simulate five cross-correlated elements, namely Fe, SiO_{2}, Al_{2}O_{3}, P and LOI, that are all critical in defining the quality of iron ore being produced. The block-scale simulations reproduce the direct- and cross-variograms of the elements even though only the direct variograms of the service variables have to be modeled. The application shows the efficiency, excellent performance and practical contribution of the *dbmafsim* algorithm in simulating large multi-element deposits.

### Keywords

Multi-element mineral deposits Block-support simulation Joint simulation Minimum/maximum autocorrelation factors Iron ore deposits## 1 Introduction

Geostatistical simulation is the most commonly used approach to quantify spatial geological uncertainty in mineral deposits, with the usual goal being better informed engineering and business decisions (Dimitrakopoulos 2011). Such a framework requires transferring the spatial uncertainty provided by the set of simulations to engineering or economic uncertainty; a typical example would be to exploit the characterization of the spatial uncertainty for drilling scheme selection. For instance, determining efficient drilling density can be achieved with stochastic simulations (Boucher et al. 2005) that may require a relatively large number of realizations to assess the expected performance of drilling schemes. The applicability of such a study depends on the availability of efficient simulation algorithms. Although methods for simulating individual attributes are generally efficient and easily accessible (Deutsch and Journel 1992; Goovaerts 1997; Remy et al. 2008; Dimitrakopoulos and Luo 2004; Godoy 2002; Chiles and Delfiner 2012), existing methods for jointly modeling multivariable deposits are in practice limited, particularly for deposits with more than two attributes of interest. For example, a realistic model of an iron deposit must account for silica, alumina, phosphorous and organic matters in addition to iron and must reproduce the joint local variability of the attributes of interest.

Approaches for joint simulation include methods based on the model of linear coregionalization, or LMC (Goovaerts 1997), and conditioning of simulated correlated fields (Chiles and Delfiner 2012), extension of the conditional univariate LU decomposition method of David (1987) to joint simulation (Myers 1988), combination of the LU vector simulation and sequential simulation for large joint simulation of two variables (Verly 1993), and direct co-simulation (Soares 2001). Any method relying on an LMC becomes cumbersome for more than three variables; the major difficulty being the inference of the related coregionalization model. Another approach is to simulate the variables in turn conditional to the previously simulated variables. For instance, in the case of an iron ore deposit one would first simulate the iron content, then simulate the alumina conditional to the previously simulated iron grade, and so on (Almeida and Journel 1994). In such a case, simplified models of coregionalization such as the Markov model 1 and Markov model 2 (Journel 1999) are used, whereas only the secondary collocated data is considered. An alternative to direct joint simulation is to use service variables that are uncorrelated (orthogonal) such that each service variable can be independently simulated and then recombined into the original variables. The back-transformation of simulated service variables restores the histograms, variograms and cross-variograms of the data.

The most common and longstanding type of transform is the change of basis through a principal components type of transform (David et al. 1984; David 1988). The service variables are then a linear combination of the original variables and, by construction, collocated attributes have zero covariance. However, PCA-based transformation does not ensure that the service variables are uncorrelated when not collocated, that is any lag greater than zero (Wackernagel et al. 1989; Goovaerts 1993), the only exception being a set of attributes that display proportional spatial correlation (intrinsic model of coregionalization). Leuangthong and Deutsch (2003) introduce the step-wise transform, a multivariate non-linear Gaussian transform, to generate lag-zero uncorrelated service variables. The step-wise transform provides, in one step, both the orthogonalization and the normal-score transform needed for all Gaussian-based simulation algorithms such as sequential Gaussian simulation. The main drawbacks of the step-wise transformation is the need for a large number of drill-hole data when dealing with several geological attributes; at the same time, being a global and location-independent transformation it suffers from an inherent deconstruction of local spatial connectivity of ranges of grade values of interest. Mueller and Ferreira (2012) present the U-WEDGE transformation approach for multivariate simulation.

A significant improvement of the PCA approach to joint simulation is presented by Desbarats and Dimitrakopoulos (2000) based on the minimum/maximum autocorrelation factors (MAF), a factorization method originally developed for remote-sensing applications (Switzer and Green 1984). It can be shown that MAF generates completely decorrelated factors at all lags, if the variogram model of the related variables follows the linear model of coregionalization with two structures. In comparison, the PCA approach provides such a guarantee for only one structure. Other types of coregionalization may still leave some correlation between attributes. Note that the MAF approach does not actually require modeling the coregionalization. Joint simulations of mineral deposits based on MAF are shown to be effective, relatively efficient, flexible and practical (Boucher 2003; Dimitrakopoulos and Fonseca 2003; Bandarian et al. 2008; Lopes et al. 2011; Rondon 2012). The efficiency of joint simulation with MAF is further enhanced when the simulation is done directly on a block-support scale (Godoy 2002).

For a mineral deposit, the target support or mining block or selective mining unit (Switzer and Parker 1975) is on a larger scale than the available drilling data (typically considered as point-support), hence a change of support process is required. The current practice consists of simulating the entire deposit on point-support followed by a post-processing step where simulated point values within a mining block are averaged. This approach makes no change of support assumptions. It can become cumbersome in practical terms when dealing with large deposits represented with several millions or tenths of millions of mining blocks and in some cases large mineral deposits represented by a billion or more mining blocks; an example of the latter size is the Escondida copper deposit, Chile, represented with about three billion mining blocks and several attributes per block (Baird 2011). The simulation of point values and re-blocking process has severe computational drawbacks as it needs to process, store and manage large sets of data and generate files that are often two orders of magnitude greater than the target size. For instance, take a model with 50 million blocks where the blocks are discretized into 125 points (5×5×5); the output model of the ore body will be about a 200-Mb file versus a 2.5-Gb file if all the points were to be kept in memory. For such an ore body model, a 32-bit operating system cannot efficiently work at the point-scale simulation but may accommodate simulation at the block-support scale. An alternative simulation method to simulate directly at the block-support size is proposed by Godoy (2002) and extended to the joint simulation of several correlated variables using MAF by Boucher and Dimitrakopoulos (2009, 2007), in an algorithm termed *dbmafsim*. The method minimizes the information stored by retaining only the block values, a procedure that significantly speeds up the simulation process while reducing the size of the output files for more efficient data storage and management. The application of MAF in mineral deposits has been shown in several studies (Dimitrakopoulos and Fonseca 2003; Lopes et al. 2011) to work particularly well and reproduce the statistical, spatial continuity and cross continuity, as well as scatter-plots, in spite of being based on simulating independent service variables.

This paper presents a full-field application of the *dbmafsim* algorithm at a multivariate iron ore deposit that demonstrates the key aspects and capabilities of the method for applied joint simulation of multi-element mineral deposits. In the following sections, the joint-simulation method is reviewed for completeness. Then, the application at the Yandi Central 1 iron ore deposit in Western Australia is detailed and includes the joint simulation of iron content, silica, alumina, phosphorus and loss on ignition (organic material), directly at the block scale. Conclusions follow.

## 2 Block-Support Simulation of Multiple Correlated Variables—A Recall

### 2.1 Algorithm Overview

The *dbmafsim* algorithm is an extension of the sequential Gaussian simulation (*sgsim*) algorithm. The simulation is performed on orthogonalized service variables where the simulation path visits the blocks instead of individual points and the conditioning is based on previously simulated blocks instead of previously simulated points. The orthogonal service variables are obtained with the minimum/maximum autocorrelation factorization. For each service variable a block value is drawn by simulating its discretizing points using the LU simulation algorithm delivering speed while using a unique neighborhood search.

Note that non-linear transformation and back-transformation of the data to and from a Gaussian distribution, such as the affine normal-score transform, may not be defined on block-support. The back-transformation must be then done on the simulated points and not on the simulated blocks, requiring an extra step not present in sequential simulation algorithms. In addition to averaging the simulated service variables for further conditioning (the previously simulated blocks), each group of points are back-rotated from the MAF service variables to the Gaussian space and then back-transformed to their original distribution and finally averaged into block values. The block values generated are then the actual simulated attributes at that block and is not used any further in the simulation process. It is the block values derived from the service variables that are used for further conditioning the LU system of equations for the remaining blocks on the simulation path.

*dbmafsim*algorithm is:

- 1.
Transform the data

**Z**(*u*) to the normal-score data**Y**(*u*). - 2.
Transform

**Y**(*u*) with the MAF transformation to orthogonal factors**M**(*u*). - 3.
Define a random path visiting each block.

- 4.For each block
*v*, simulate the discretizing*N*points \(m^{k}_{s} (u_{i} )\),*i*=1,…,*N*, with an LU decomposition for each service variable*k*=1,…,*K*through Eq. (12):- a.
Average the point-support service variables \(m^{k}_{s} (u_{i} )\),

*i*=1,…,*N*, at the block-support for further conditioning. - b.
Back-transform \(m^{k}_{s} (u_{i} )\),

*i*=1,…,*N*, to \(z^{k}_{s} (v )\),*k*=1,…,*K*, and output the block values.

- a.
- 5.
Repeat until all blocks are simulated.

### 2.2 Orthogonalization with Minimum/Maximum Autocorrelation Factors

**Z**(

*u*)={

*Z*

^{1}(

*u*),…,

*Z*

^{K}(

*u*)} transformed into its Gaussian, equivalent

**Y**(

*u*); through

**Y**(

*u*)=

*Φ*(

**Z**(

*u*)) or when the transformation is done independently for each variable The resulting vector RF

**Y**(

*u*) is composed of

*K*Gaussian RFs that are assumed to be multi-Gaussian. The MAF service variables are derived as a new vector RF,

**M**(

*u*)= {

*M*

^{1}(

*u*),…,

*M*

^{K}(

*u*)}, where the

*K*RFs are independent and obtained from the multi-Gaussian vector RF

**Y**(

*u*) using the coefficients

**A**such that Note that the MAF service variables,

**M**(

*u*), are a linear function of

**Y**(

*u*), which are a non-linear transformation of the original data

**Z**(

*u*) such that and conversely, The orthogonalization coefficients matrix

**A**is generated from with where

**B**is the variance/covariance matrix of

**Y**(

*u*) and

**Γ**_{Y}(

*h*) is the variogram matrix at lag

*h*. The above derivation of

**A**is equivalent to performing two successive principal components (PCA) decompositions (Desbarats and Dimitrakopoulos 2000; Rondon 2012).

*u*

_{i},

*i*=1,…,

*N*, being a group of points discretizing the block at location

*v*.

### 2.3 Simulating the Service Variables with the Cholesky Decomposition

*C*

_{1}(

*h*),…,

*C*

_{k}(

*h*), are necessary, and (b) the simulation can be done on each service variables independently. Consider a block at location

*v*discretized with a vector of

*N*points of the

*k*th service variable \({\mathbf{m}}^{k}_{s}= \{m^{k} (u_{1} ),\dots ,m^{k} (u_{N} ) \}\) with

*u*

_{i}⊂

*v*, and with a neighborhood made of data points and previously simulated blocks \({\mathbf{m}}^{k}_{d}\). The vector \({\mathbf{m}}^{k}_{s}\) can be simulated through the Cholesky decomposition where \({\mathbf{C}}^{k}_{d}\) is the covariance matrix of conditioning data comprised of the drill-hole data and the previously simulated blocks for the service variable

*M*

^{k}(

*u*), \({\mathbf{C}}^{k}_{s}\) is the point-support covariance matrix between the point discretizing a block, and \({\mathbf{C}}^{k}_{sd}\) is the matrix of point and point-to-block covariance between the discretizing points and the known values (drill holes and previously simulated blocks). All covariance values are derived from the model

*C*

_{k}(

*h*) or its regularization (Journel and Huijbregts 1978) when a block-support data is considered.

*pp*index refers to the point-to-point covariance between drill-hole data,

*pb*to the point-to-block covariance between the drill-hole data and the previously simulated blocks, and

*bb*the block-to-block covariance between previously simulated blocks.

*k*is simulated with with The variables \({\mathbf{m}}^{k}_{p}\) and \({\mathbf{m}}^{k}_{b}\) are respectively the service variable vectors of the drill holes and vector of the previously simulated blocks within the search neighborhood. The vector

**w**

_{s}is made up of standard Gaussian deviates. Finally, the block value to be used for further conditioning is the arithmetic average of \({\mathbf{m}}^{k}_{s}\) and the final block values are computed with Eq. (7).

### 2.4 Algorithmic Considerations

The group simulation with the LU algorithm of Eq. (12), coupled with the reduced searches for neighboring data, means there are *N* times fewer searches being done than on a point-wise simulation algorithm, contributing to an overall increase in speed and efficiency. See Dimitrakopoulos and Luo (2004), and Benndorf and Dimitrakopoulos (2007) for guidelines in choosing optimal block discretization and search parameters. When the number of discretizing nodes used in blocks is suitably chosen, the simulation with LU systems is substantially faster than the solving co-kriging systems of equations of variables (Dimitrakopoulos and Luo 2004).

## 3 Application at Yandi Central 1, Iron Ore Deposit, WA

The Yandi Central 1 iron ore deposit is a part of the larger Yandicoogina-Marillana detrital channel deposits in Western Australia. The mine is located approximately 120 km north-west of Newman, in Hamersley province. BHP Billiton started operations at Yandi in 1992 with estimated resources of about 1500 million tonnes of high-grade iron ore. The iron ore is derived from the erosion of the banded iron formation of Hamersley province and trapped in paleochannel incisions within the Weeli Wolli Formation that formed the surface approximately 40 to 50 million years ago (Stone et al. 2002). The deposit is composed of cemented masses of concretionary iron oxides, largely goethite (Hall and Kneeshaw 1990; Stone et al. 2002). The main ore zone of Yandi Central contains a consistently high level of iron, together with high and low levels of silica and generally low levels of alumina.

### 3.1 Study Area and Data

_{2}), alumina (Al

_{2}O

_{3}), phosphorus (P) and loss on ignition (LOI), all present in the available composites. Drilling density is approximately on a regular 50-m grid, with the exception of a densely drilled section in the middle of the ore body. In this study, the main ore zone is divided into the external and internal zones shown in Fig. 1. The statistics for the data in the two zones are given in Table 1. Note that the internal zone differs from the larger external zone by having higher Fe and Al

_{2}O

_{3}content and slightly lower SiO

_{2}content. The SiO

_{2}in the external zone also displays higher variability. The correlations and rank correlations between the elements in the data set are shown in Table 2. Three strongly correlated elements are present: Fe, SiO

_{2}and Al

_{2}O

_{3}. This has an impact when the two correlations differ significantly, as is the case with the Fe–Al

_{2}O

_{3}and SiO

_{2}–Al

_{2}O

_{3}correlations.

Summary statistics for the data in the external and internal zones

Field | Mean | Std dev | Min | Max | 0.25Q | 0.5Q | 0.75Q | 0.975Q |
---|---|---|---|---|---|---|---|---|

External Zone (3873 samples) | ||||||||

Fe | 58.27 | 2.37 | 40.00 | 61.80 | 57.49 | 58.70 | 59.68 | 60.93 |

P | 0.03 | 0.006 | 0.007 | 0.08 | 0.03 | 0.03 | 0.03 | 0.04 |

SiO | 5.04 | 2.41 | 1.71 | 20.00 | 3.29 | 4.53 | 6.24 | 10.46 |

Al | 0.97 | 0.84 | 0.17 | 5.00 | 0.52 | 0.70 | 1.05 | 4.06 |

LOI | 10.32 | 0.94 | 6.80 | 17.00 | 9.70 | 10.36 | 10.97 | 12.10 |

Internal Zone (2886 samples) | ||||||||

Fe | 58.85 | 2.29 | 40.00 | 61.77 | 58.35 | 59.40 | 60.10 | 61.10 |

P | 0.03 | 0.006 | 0.007 | 0.06 | 0.02 | 0.03 | 0.03 | 0.04 |

SiO | 4.20 | 3.60 | 2.14 | 1.700 | 20.00 | 2.79 | 4.92 | 9.64 |

Al | 1.10 | 0.94 | 0.18 | 5.00 | 0.560 | 0.77 | 1.20 | 4.67 |

LOI | 10.27 | 0.74 | 6.60 | 14.26 | 9.80 | 10.27 | 10.79 | 11.64 |

Pearson’s correlation (left) and rank correlation (right) between variables

External zone | |||||||||
---|---|---|---|---|---|---|---|---|---|

Fe | P | SiO | Al | LOI | |||||

Fe | 1 | ||||||||

P | −0.03 | −0.21 | 1 | ||||||

SiO | −0.9 | −0.86 | −0.02 | −0.08 | 1 | ||||

Al | −0.81 | −0.34 | 0.02 | 0.25 | 0.56 | 0.16 | 1 | ||

LOI | −0.12 | −0.18 | 0.15 | 0.15 | −0.19 | −0.22 | 0.08 | −0.02 | 1 |

### 3.2 Minimum/Maximum Autocorrelation Factors

*(*

**Γ***h*) in Eq. (5) is computed using data pairs located at a minimum of 110 m and a maximum of 155 m apart in the horizontal plane, but with no more than 2 m of vertical separation. This distance is, on average, just larger than the range of the first spherical structure and much shorter than the second one for the five variables. The vertical constraint of 2 m is necessary to avoid the various local vertical trends generating an artificial increase in variance. The factor coefficients

**A**are presented in Table 3. In both zones Fe has the highest coefficient and is always important in the determination of all MAF service variables, followed by SiO

_{2}. P is the least important element, but it is also the one having the least correlation with the others elements. The two most important factors, MAF1 and MAF2 (representing almost 50 % of the variance), are essentially a combination of Fe and SiO

_{2}with the addition of LOI for MAF2. Examples of experimental and model variograms of the MAF service variables for the external zone are shown in Fig. 2. It is interesting to note that the range of a factor seems to be inversely proportional to its contribution to the variance. With slightly less than 15 % of the global variance, MAF5 has the longest range at 680 and 770 m for the external and the internal zones, respectively. On the other hand, MAF1 has a range of 160 and 200 m for the two zones, but represents around 25 % of the global variance. Representative examples of cross-variograms are shown in Fig. 3 and, as expected, the decorrelation between the service variables is excellent.

Coefficients **A** of MAF for the external zone

External zone | ||||||
---|---|---|---|---|---|---|

Fe | P | SiO | Al | LOI | % Var | |

MAF1 | −1.328 | −0.168 | −1.096 | 0.676 | −0.491 | 25.42 |

MAF2 | 3.049 | −0.145 | 2.654 | 0.950 | 1.712 | 22.24 |

MAF3 | 1.031 | 0.871 | 0.614 | 0.312 | −0.119 | 20.53 |

MAF4 | 0.859 | 0.123 | 1.734 | −0.022 | 0.273 | 16.93 |

MAF5 | −0.904 | 0.524 | −0.575 | −0.419 | 0.376 | 14.86 |

### 3.3 Joint Conditional Simulation at the External and Internal Zones

The external and internal zones are separately simulated 20 times using the *dbmafsim* method and subsequently merged. Each realization contains 40,698 blocks, each 25 m×25 m×2 m, with simulated Fe, P, SiO_{2}, Al_{2}O_{3} and LOI content. For comparison, at the point-support scale this corresponds to 2,122,752 points for the external zone and 481,920 points in the internal zone per realization. In addition to visual inspection, the simulations are subsequently validated by: (i) quantile–quantile plots between drill-hole data and simulated point-support values; (ii) comparison of drill-hole data and simulation values scatter plots at point-support; (iii) block variogram validation with their respective regularized (block-support) variogram models; and (iv) assessment of the vertical profiles of the realizations at block-support. Note that the point-support quantile–quantile plots and scatter plots were generated for illustrative purpose only since the simulation algorithm outputs result at block scale.

_{2}and Al

_{2}O

_{3}is apparent from the realizations; the low levels of SiO

_{2}and Al

_{2}O

_{3}are present where there is a high level of Fe. The preservation of the negative spatial correlation between Fe and SiO

_{2}is clearly visible in Fig. 5 where the locations of the first-decile block values of Fe match the locations of the 9th-decile block values of SiO

_{2}and vice versa.

_{2}O

_{3}significantly deviate from the original distribution. The point-scale scatter plots between selected elements for the data (left) and the first simulation (right) are shown in Fig. 7. The shape of the clouds of points remains somewhat preserved; the coefficient of correlation is lower for the simulations than for the drill-hole data. It is noteworthy that the rank correlation is always well preserved. This indicates that the loss of correlation is due to the independent forward and back normal-score transformation applied to the data and not to the MAF orthogonalization. Recall that the normal-score transformation is a rank-preserving transformation; this point is explored in more detail when discussing the reproduction of cross-variograms. An important feature of iron ore deposit in general and of this deposit in particular is the vertical trends of the elements. The trends are present in the drill-hole data variograms (Fig. 2) and visually in the simulations (Fig. 4). The vertical profiles between the point-scale drill-hole data and those of two simulations on block-support can be directly compared in Fig. 8. The general shape of the profiles is well reproduced in all cases but with an apparent increase in variability for the simulation profiles.

_{2}, SiO

_{2}–LOI, Fe–LOI, Al

_{2}O

_{3}–P and SiO

_{2}–Al

_{2}O

_{3}. Of particular importance is the correlation between Fe and silica. This correlation is very well preserved because the standard and the rank correlations are similar. On the other hand, the block cross-variogram between SiO

_{2}and Al

_{2}O

_{3}is not reproduced since normal-score back-transformation destroyed the correlation built from the MAF service variables (recall Fig. 7 for the scatter plot). The impact of the back-transformation on the spatial correlation of Al

_{2}O

_{3}can be seen by looking at the reproduction of the normal score of the block data in Fig. 11. The variograms of the simulated normal-score blocks do match with the regularized model of the normal-score data. Since normal-score transformations are rank transformations, they contribute to the poor reproduction of the cross-variograms for the pairs of elements with the largest difference between their rank correlation and their standard correlation. Overall, the simulations reproduce spatial features of the original data that have not been explicitly modeled. This observation has also been made in point simulations using MAF (Dimitrakopoulos and Fonseca 2003; Bandarian et al. 2008; Lopes et al. 2011).

## 4 Conclusions

This paper has shown the practical aspects of an efficient framework for the joint simulation of correlated variables based on minimum/maximum autocorrelation factors and directly generating realizations at the block-support scale. The MAF factors are used to transform a set of geological attributes to independent service variables that are then simulated independently. Orthogonalization with MAF combined with the simulation directly at the block-support scale has been shown to be well suited for multi-element deposits.

The practical aspects of the *dbmafsim* algorithm were shown in an application at the Yandi iron ore deposit in Western Australia and the joint simulation of five cross-correlated elements, namely Fe, SiO_{2}, Al_{2}O_{3}, P and LOI. Two main advantages from the application presented herein are worth noting. First, the use of *dbmafsim* only requires fitting 10 independent variograms to the MAF service variables instead of two sets of 15 permissible variograms and cross-variograms needed for a full model of coregionalization. This is a major practical aspect of the approach that facilitates the routine simulation of multi-element deposits. Second, the direct simulation at block-support is computationally efficient as well as outputs manageable file sizes that can easily be transferred and visualized on a desktop. In addition, it has been shown that the block-support simulations reproduce the direct- and cross-variograms of the elements even though only the direct variograms of the service variables have to be modeled. Note that in the case where the rank correlation differs significantly from the standard correlation, the normal-score transformation seems to limit the reproduction of cross-variograms in the data space, although this is a less important issue compared with the positive applied contributions of the method: the implementation of the direct sequential simulation algorithm (Journel 1999; Soares 2001; Bandarian et al. 2008) where the normal-score transformation is not used may then be an alternative.

## Acknowledgements

The work in this paper was funded by AngloGold Ashanti, BHP Billiton, Rio Tinto and Xstrata, grant to R. Dimitrakopoulos. Thanks are in order to Peter Ravenscroft for his assistance with the application at Yandi. The substantial encouragement and support from Peter Forestal, Gavin Yates, Peter Stone, Vaughan Chamberlain, and Wynand Kleingeld is also gratefully acknowledged.