This routine is a convenient way to analyse the dependence between
  types in a multitype point pattern.
  It computes the estimates of a selected summary function of the
  pattern, for all possible combinations of marks.
  It returns these functions in an array
  (an object of class "fasp") amenable to plotting
  by plot.fasp().  The argument fun specifies the summary function that will
  be evaluated for each type of point, or for each pair of types.
  It may be either an Rfunction or a character string.
  
  Suppose that the points have possible types $1,2,\ldots,m$
  and let $X_i$ denote the pattern of points of type $i$ only.
  If fun="F" then this routine
  calculates, for each possible type $i$,
  an estimate of the Empty Space Function $F_i(r)$ of
  $X_i$. See Fest
  for explanation of the empty space function.
  The estimate is computed by applying Fest
  to $X_i$ with the optional arguments ....
  If fun is
  "Gcross", "Jcross", "Kcross" or "Lcross",
  the routine calculates, for each pair of types $(i,j)$,
  an estimate of the ``i-toj'' cross-type function
  $G_{ij}(r)$,
  $J_{ij}(r)$,
  $K_{ij}(r)$ or
  $L_{ij}(r)$ respectively describing the
  dependence between 
  $X_i$ and $X_j$.
  See Gcross, Jcross, Kcross
  or Lcross respectively for explanation of these
  functions.
  The estimate is computed by applying the relevant function
  (Gcross etc)
  to X using each possible value of the arguments i,j,
  together with the optional arguments ....
  
  If fun is "pcf" the routine calculates
  the cross-type pair correlation function pcfcross
  between each pair of types.
  If fun is 
  "Gdot", "Jdot", "Kdot" or "Ldot",
  the routine calculates, for each type $i$,
  an estimate of the ``i-to-any'' dot-type function
  $G_{i\bullet}(r)$,
  $J_{i\bullet}(r)$ or
  $K_{i\bullet}(r)$ or
  $L_{i\bullet}(r)$ respectively describing the
  dependence between $X_i$ and $X$.
  See Gdot, Jdot, Kdot
  or Ldot respectively for explanation of these functions.
  The estimate is computed by applying the relevant function
  (Gdot etc)
  to X using each possible value of the argument i,
  together with the optional arguments ....
  The letters "G", "J", "K" and "L"
  are interpreted as abbreviations for Gcross,
  Jcross, Kcross and Lcross
  respectively, assuming the point pattern is
  marked. If the point pattern is unmarked, the appropriate
  function Fest, Jest,
  Kest or Lest is invoked instead.
  If envelope=TRUE, then as well as computing the value of the
  summary function for each combination of types, the algorithm also
  computes simulation envelopes of the summary function for each
  combination of types. The arguments ... are passed to the function
  envelope to control the number of
  simulations, the random process generating the simulations,
  the construction of envelopes, and so on.