abstract: One of the predictions of the standard cold dark matter model is that dark haloes have centrally divergent density profiles. An extensive body of rotation curve observations of dwarf and low surface brightness galaxies shows the dark haloes of those systems to be characterized by soft constant density central cores. Several physical processes have been proposed to produce soft cores in dark haloes, each one with different scaling properties. With the aim of discriminating among them we have examined the rotation curves of dark matter dominated dwarf and low surface brightness galaxies and the inner mass profiles of two clusters of galaxies lacking a central cD galaxy and with evidence of soft cores in the centre. The core radii and central densities of these haloes scale in a well defined manner with the depth of their potential wells, as measured through the maximum circular velocity. As a result of our analysis we identify self-interacting cold dark matter as a viable solution to the core problem, where a non-singular isothermal core is formed in the halo center surrounded by a Navarro, Frenk, & White profile in the outer parts. We show that this particular physical situation predicts core radii in agreement with observations. Furthermore, using the observed scalings, we derive an expression for the minimum cross section ($\sigma$) which has an explicit dependence with the halo dispersion velocity ($v$). If $m_x$ is the mass of the dark matter particle: $\sigma / m_x \approx 4 \ 10^{-25} (100 \ km s^{-1}/v)$ $cm^2/Gev$.
author: Firmani C.$^{1,5}$, D'Onghia E.$^{2}$, Chincarini G.$^{1,3}$, Hernández X.$^{4}$, Avila-Reese V.$^{5}$
$^{1}$ Osservatorio Astronomico di Brera, via E. Bianchi 46, 23807 Merate (LC), Italy
$^{2}$ Universitá degli Studi di Milano, via Celoria 16, 20100 Milano, Italy
$^{3}$ Universitá degli Studi di Milano-Bicocca, Italy
$^{4}$ Osservatorio Astrofisico di Arcetri, Largo E. Fermi 5, 50125 Firenze, Italy
$^{5}$ Instituto de Astronomı́a, UNAM, A.P. 70-264, 04510 México D.F., México
E–mail: `email@example.com`, `email@example.com`, `firstname.lastname@example.com`,
`firstname.lastname@example.com`, `firstname.lastname@example.com`
date: <u>submitted to MNRAS, 2000 March 22</u>
title: Constraints on dark matter physics from dwarf galaxies through galaxy cluster haloes

# Introduction

The predictions of the cold dark matter (CDM) models successfully account for several observational facts such as the distribution of matter on large scales, the uniformity of the cosmic microwave radiation and its small temperature anisotropies, and the measured values of the cosmological parameters. However, on small scales the predictions seem to be in conflict with observations suggesting that modifications to the standard scenario should be introduced. One of the problems of the CDM theory is that the inner density profile of the virialized haloes is too steep with respect to what is inferred from rotation curves of dwarf spiral galaxies (Moore 1994; Flores & Primack 1994; Burkert 1995). In fact it is well known that these galaxies are systems strongly dominated by dark matter, so that their rotation curves are good tracers of the dark halo gravitational potential. A similar situation is expected for low surface brightness (LSB) galaxies (de Blok & McGaugh 1997), (although the observational evidence of a soft core in these cases has been challenged by some authors e.g., van den Bosch et al 1999; Swaters, Madore $\&$ Trewhella 2000). Similarly, Hernández $\&$ Gilmore (1998) showed that the HI rotation curves of both LSB and normal large galaxies can be characterized by a significant soft core inner region. The Tully-Fisher relation can be also better predicted by galaxy formation models when a density profile shallower than the CDM one is used (Firmani $\&$ Avila-Reese 2000; Mo $\&$ Mao 2000). On the galaxy cluster scale the presence of shallow halo cores is highly uncertain because of the small amount of data available. However, from strong lensing observations of the cluster CL0024+1654, Tyson, Kochansky $\&$ Dell'Antonio (1998) making a mass map of unprecedented resolution have revealed the presence of a soft core in conflict with the predictions of numerical simulations.

Recently several attempts have been made in order to produce soft cores by a manipulation of the power spectrum of fluctuations. Moore and co-workers (1999b) have tested the effects of introducing a lower cut-off in the power spectrum leading to a halo formation scenario tending towards a monolithic collapse, obtaining final density profiles actually steeper than the one found by Navarro, Frenk, & White (1997, hereafter NFW). However, a lower cut-off in the power spectrum with presence of some tangential velocity dispersion is able to produce haloes with shallow cores (Avila-Reese, Firmani $\&$ Hernández 1998). Hogan & Dalcanton (2000) introduced the notion of a limiting phase-space density for dark matter as a way to restrict the volume density dark matter particles can attain. An alternative scenario by Peebles (2000) proposes a scalar field dark matter treated as an ideal fluid, in which a suppression of the small scales in the power spectrum is an intrinsic property of the theory. In addition, a model of repulsive dark matter has recently been discussed by Goodman (2000). Spergel & Steinhardt (2000) have proposed collisional CDM as an alternative solution to soft core formation. Several papers have appeared investigating this idea (Hannestad 1999) and the relevance of its astronomical implications (Ostriker 1999). The case in which a very large particle scattering cross-section is assumed was studied within the hierarchical formation picture using fluid dynamical techniques (Moore et al. 2000; Yoshida et al. 2000). In this case dark matter behaves like a non- dissipative fluid that can shock heat producing haloes with singular isothermal cores. If a weaker self-interaction is working between particles during the merger history of the haloes, then core expansion due to a gravothermal instability is expected, as shown with a thermodynamical approach by Firmani and co-authors (2000). Numerical N-body simulations modified to investigate a weak self-interaction have also shown this effect (Burkert 2000).

Another controversial question regarding standard hierarchical structure formation models is that the predicted abundance of galactic subhaloes is an order of magnitude higher than the number of satellites actually observed within the Local Group (Klypin et al. 1999; Moore et al. 1999a). A substantial advance in understanding of this question was made by Moore et al. (2000) and Yoshida et al. (2000). They find that, due to self-interaction, the predicted galactic subhalo number decreases, even if in Yoshida et al. (2000) the decrease appears rather moderate. Interestingly, Moore et al. (2000) point out that in a cosmological picture in which self-interaction is working, ram-pressure could be more effective in producing stripping and viscous drag than tidal forces and dynamical friction. However, treating self-interacting CDM as a fluid with very strong cross section these authors never find soft cores. A more conservative solution to the satellite question, but unrelated to the core problem has been suggested by Bullock et al. (2000).

Given the multiplicity of proposed solutions that have appeared in answer to the core question, we carry out an analysis of the available observational data, in order to identify the proper mechanism for producing soft cores. Taking into account the comparison with observations we conclude that self-interacting CDM appears the most viable solution to produce soft cores. We point out two limiting cases between which dark matter self-interaction may generate isothermal cores: when the cross section is sufficiently large to thermalize the entire halo, and when a minimum cross section allows self-interaction to yield thermal equilibrium only in the core region. In the following section we present the analysis of the observational data, in section 3 we show the density profiles derived from CDM models incorporating manipulations of the power spectrum of the primeval fluctuation field. In section 4 the implications of collisional dark matter are investigated, for the strong and minimum cross section cases. Our conclusions are presented in section 5. The cosmological model we use is flat with matter density $\Omega_m =0.3$, cosmological constant $\Omega_{\Lambda}=0.7$ and expansion rate $H_0=60$ km s$^{-1}$ Mpc$^{-1}$ (Saha et al. 1999).

# Halo core scaling laws from observations

Analysis of the inner halo profile is difficult for most galaxies because of the ambiguities in the estimate of the stellar mass-to-light ($M/L$) ratio and the resulting dynamical contribution of the stellar component to the observed rotation velocities. A further complication is due to the fact that the halo inner density profile is affected by the gravitational pull of the baryonic matter. For these reasons, the best candidates to study galactic dark haloes are dwarf and LSB galaxies, i.e. galaxies which are dark matter dominated. The rotation curves of LSB galaxies derived from radio observations are rather uncertain in the innermost region because of beam smearing (van den Bosch et al. 1999). High-resolution rotation curves, however, have been obtained in $H\alpha$ for five LSB galaxies (Swaters et al. 2000). These rotation curves rise more steeply in the inner parts than the ones obtained by HI observations. Our analysis is based on a sample of galaxies (i) strongly dominated by dark matter and (ii) with accurately measured rotation curves. The sample consists of six dwarf galaxies, nine LSB galaxies, and two low-luminosity disk galaxies (see Table 1 and the references therein). On galaxy cluster scale, we shall use the mass distribution for the cluster CL0024+1654 derived from strong lensing techniques (Tyson et al. 1998), and for the cluster CL0016+16 derived from weak lensing studies (Smail et al. 1995). In the former case, the spatial resolution attained is high, while in the latter case the observational uncertainty in the central regions is very large. In both cases the inner mass distribution is soft, there is no a massive cD galaxy and one can assume that both clusters are dark matter dominated.

We shall infer from observations the behaviour of the halo core radius $R_c$ and of the central density $\rho_c$ with the halo maximum circular velocity $V_m$ (the gravitational potential well). All the data we use have been taken from the literature but the parameters we adopt have been estimated from our analysis.

By fitting the observed rotation curves of the sample galaxies after subtraction of the disk contribution to the rotation curve allows us to fit the two parameters of a non-singular isothermal model, $R_c$ and $v$, where $v$ is the one-dimensional velocity dispersion. The central density is then: $\rho_c =9 \ v^2 /4 \pi G R_c^2$. The properties of the sample objects are listed in Table 1. In the various columns we have: the name, the maximum circular velocity $V_{m}$ in km/s, the core radius $R_c$ in kpc, the central density $\rho_c$ in $M_{\odot}$/pc$^3$, and the references used.

It is important to realize that a present day rotation curve is not only the result of an initial dark halo structure, but is a consequence of the process of disk formation, which as it will be shown, can alter the inner shapes of galactic rotation curves. Two effects contribute to changing the density distribution of a dark halo during disk formation, both relevant only in the central regions, precisely where the problem of the existence or absence of a soft core arises. Firstly, as a result of disk formation, the baryonic component contraction makes the baryons in the central regions approximately as dynamically relevant as the dark matter. Secondly, the contraction of the baryons alters the total mass distribution in the inner regions, forcing the dark halo to adjust to the now modified gravitational potential. These two points are essentially well known, and have been treated in standard disk galaxy formation models, e.g. Fall & Efstathiou 1980, Flores et al. 1993; Dalcanton et al. 1997; Firmani & Avila-Reese 2000 and Hernandez & Gilmore 1998 who show explicitly the relevance of the above effects even in the central regions of LSB systems. A detailed modeling of the sample of five galaxies by Swaters et al. (2000) allows us to quantify this possibility, and to asses the evidence supporting shallow cores at this region of the LSB galactic distribution. With such a modeling we can also estimate the uncertainties of our other data. For each of these galaxies we use a simple disk formation model where a fraction $F$ of the original halo mass is turned into an exponential disk having the disk scale length of the observed galaxy. The gravitational pull suffered by the inner regions of the initial dark halo is calculated using an hypothesis of adiabatic invariance for the orbits of the dark particles, and the final rotation curve calculated taking into account the modified halo and the contribution of the exponential disk (Hernández $\&$ Gilmore 1998). The parameters of this disk formation model were optimized using the full observed rotation curves, together with an imposed Tully-Fisher relation (Firmani $\&$ Avila-Reese 2000) and the observed disk scale radius of the galaxies in question. In this way we solved for the values of F which best yield a final rotation curve. We have modeled these galaxies using two different dark halo structures, namely a NFW profile and a King profile. The analytic NFW profile is $\rho(r)=\rho_s(r/r_s)^{-1}(1+r/r_s)^{-2}$ with $r_s$ the scale radius corresponding to the scale at which the logarithmic slope is -2. Since $\rho_c$ and $r_s$ are correlated and they depend only on the mass, the density profiles of haloes can be described by a one-parameter family of models, where the parameter is the mass. The King density profile has the form: $\rho=\rho_0 f(r/r_0,P)$, with $\rho_0$ the central density and $r_0$ the core radius (the radius at which the density is roughly $\rho_0/3$). The form parameter is $P=\Psi(0)/\sigma^2$, being $\Psi(0)$ the relative gravitational potential and $\sigma$ the linear velocity dispersion in the center. We adopt the same formalism of Binney $\&$ Tremaine assuming for f the same function displayed in their Fig.4-9.

Fig. 1 shows the rotation curves of F568-1, F568-3 and F574-1, in the 1st, 2nd and 3rd panels, respectively (dots with error bars). The dashed curves give the unique CDM NFW halo which has a maximum velocity matching that of the observations, for each galaxy. Panel (1) refers to that galaxy from Swaters et al. (2000) for which the NFW profile fits best. Panel (2) gives the opposite case, where the NFW profile fails completely to reproduce the data. For the remaining three galaxies only marginal agreement between the NFW model and the rotation curves is possible; a representative case of them is given in panel (3).

Due to the disk formation processes modifying the initial halo, however, the comparison made through the dashed curves is far from being a fair one. More representative of a hypothetical reality of NFW profiles is the comparison shown by the continuous curves and the data points. In this case we take the unique CDM NFW profile which after disk formation has the required asymptotic velocity of the observed galaxies. In this case we see that whilst for F568-1 in panel (1) the fit remains good, in the other two cases no agreement is possible, and the NFW option must be rejected.

In Fig. 2 we repeat the analysis of Fig. 1, but starting from a non-singular isothermal halo taken as a King sphere with a form parameter that will be determined by the best fit to the observations. The data points remain as in the previous case. The thick continuous curves give the model that after disk formation has the required asymptotic velocity and the proper shape. As it can be seen, the entire sample in this case is quite accurately fitted by the non-singular dark halo taken. The thin continuous curves give the contribution to the final rotation curve due to the dark halo, after being modified by the disk formation. This shows that the final dark halo does indeed dominate the resulting rotation curve, with the exponential disk giving only a minor contribution. The dashed lines give the rotation curve of the initial dark halo, before disk formation took place. This last is given to show the effects of the gravitational pull suffered by the dark haloes as a result of the concentration of the baryons during disk formation. A comparison of the dashed thin curves and then of the thin continuous and thick ones, shows that the two effects which process an initial halo into a final rotation curve are sufficient to alter the conclusions one draws about the existence or not of soft cores. A very naive direct comparison of a NFW model to the final rotation curves might mislead to an acceptance of that profile; a more detailed look at the problem confirms the necessity of initial dark haloes having constant density cores. For both the Fig. 1 and 2 fits, we have found values for the baryon fraction of $0.03<F<0.06$ in which range our conclusions remain unaffected; the resulting King form parameter is $\approx 8$.

For the cluster CL0024+1654 (Tyson et al. 1998) $Rc$ and $\rho_c$ have been computed transforming the non-singular isothermal density profile to a surface density distribution, and then fitting this distribution to the one deduced from lensing analysis. We have obtained the following value for the core radius: $R_c = 100 \pm 20$ kpc. Concerning the central density, we have derived $\rho_c=0.03 \ M_{\odot}$/pc$^3$, but taking into account that strong lensing could overestimate the real value of the central density by up to a factor $3$ (Wu et al. 1998), we take $\rho_c=0.02 \pm 0.01 \ M_{\odot}$/pc$^3$. The value of the maximum circular velocity is estimated assuming $V_{m}\approx (GM_{\rm vir}/R_{\rm vir})^{1/2}$, where $R_{\rm vir}$ is a measure of the extent of the virialized region defined as the radius within which the average density is $200$ times the background density, and $M_{\rm vir}$ is the virial mass within $R_{\rm vir}$. We use $M_{\rm vir}=4 \ 10^{15} \ M_{\odot}$ and $R_{\rm vir}=3$ Mpc (Bonnet et al. 1994). For the galaxy cluster CL0016+16 we have only an estimate of the central density with large error bars. It is therefore difficult to provide an estimate of the core radius owing to the large observational uncertainties.

In Fig. 3 we plot $R_c$ vs. $V_{m}$ for our sample of dwarfs (filled squares), LSB galaxies (empty squares), and the CL0024+1654 cluster (filled circle). Although with some scatter, Fig. 3 shows that $R_c$ scales as $V_m$. In Fig. 4, $\rho_c$ vs. $V_{m}$ is plotted for the same objects of Fig. 3. The arrow shows a fiducial value derived for a sample of LSB galaxies (de Block $\&$ McGaugh 1997). As can be clearly seen from Fig. 4, the halo central density does not correlate with the halo size. Although with a large dispersion, one can say that the central density of the haloes falls close to $0.02 \ M_{\odot}$/pc$^3$.

The core radius and central density obtained after a careful decontamination process of Swaters et al. (2000) data (big empty squares) are again in the range of our estimates described previously for the larger body of data, showing in fact a somewhat reduced dispersion. This leads us to expect that if sufficient information were available on the systems of our larger data set, a more detailed reconstruction of their parameters would similarly lead to a reduced scatter and not show any systematic offsets.

|             | $V_m$ (km/s) | $R_c$ (kpc)  | $\rho_c$ ($M_{\odot}$/pc$^3$) |  Ref.  |
|:-----------:|:------------:|:------------:|:-----------------------------:|:------:|
|   DDO105    |      88      |     7.5      |            $0.012$            | \(3\)  |
|   DDO154    |      44      |     2.5      |             0.028             | \(1\)  |
|   DDO170    |      65      |      5       |            $0.014$            | \(2\)  |
|   NGC3109   |      70      |     5.7      |             0.014             | \(4\)  |
|   NGC5585   |      85      |     2.8      |             0.08              | \(6\)  |
|   IC2574    |      70      |     6.5      |             0.01              | \(5\)  |
|   F563-v2   |     110      |     4.52     |             0.034             | \(8\)  |
|   F568-1    |     131      |     4.81     |             0.04              | \(8\)  |
|   F568-3    |     100      |     6.4      |             0.016             | \(8\)  |
|   F568-v1   |     118      |     5.66     |             0.025             | \(8\)  |
|   F571-8    |     135      |      7       |             0.024             | \(7\)  |
|   F574-1    |     103      |     4.92     |             0.026             | \(8\)  |
|   F583-1    |      85      |     6.8      |             0.01              | \(7\)  |
|   F583-4    |      70      |      7       |             0.007             | \(7\)  |
|   UGC5999   |     155      |     7.4      |             0.024             | \(7\)  |
|   531-G22   |     190      |      9       |             0.03              | \(9\)  |
|   533-G4    |     170      |     7.3      |             0.04              | \(9\)  |
| CL0024+1654 |     2400     | $100 \pm 20$ |        $0.02 \pm 0.01$        | \(10\) |

The Sample of LSBs, dwarfs $\&$ clusters

(1) Carignan $\&$ Purton 1998; (2) Lake et al. 1990;
(3) quoted by Moore 1994; (4) Jobin $\&$ Carignan 1990;
(5) Martimbeau et al. 1994; (6) Cote et al. 1991;
(7) de Block $\&$ McGaugh 1997; (8) Swaters et al. 2000;
(9) Borriello $\&$ Salucci 2000;(10) Tyson et al. 1998.

Fig. 1-4 show basic properties of the nature of dark haloes, albeit the scatter seen, which theory must address. In a previous work we have shown that a possible physical mechanism capable of yielding the observed scale invariance for the halo central density (Fig. 4) is the self-interaction of the cold dark particles (Firmani et al. 2000). Next section is dedicated to a review of other processes that have been suggested for producing shallow cores, which however, can be ruled out because of their disagreement with the scale invariant behaviour of the halo central density.

# Collisionless CDM models

The hierarchical CDM scenario of structure formation successfully explains most of the main properties of the local and high-redshift universe. However, this scenario does not allow the presence of soft cores in the dark haloes, a point of conflict with the observations. Here we explore some general alternatives for solving this conflict, without going much into the detailed physical mechanisms.

A cut-off in the power spectrum of fluctuations at some scale, which avoids the formation of small dense substructures could be expected to yield soft cores. Such a cut-off appears naturally in warm dark matter scenarios where dark matter particles remain relativistic until relatively late times.

In this section our goal is to show that a *manipulation* of the power spectrum of the primeval density fluctuation field fails in producing haloes with both soft cores and nearly constant central densities, over the entire mass sampled in Fig.4.

Recently Moore and co-workers (1999) using N-body techniques have simulated CDM haloes taking a lower cut-off in the primeval power spectrum of the fluctuation field as in a warm dark matter universe. In this case virialized haloes with steep density profiles are formed with an asymptotic central slope $\rho \propto r^{-1.4}$. From our point of view this result is basically related to the lack of particle angular momentum. In a similar vein, Huss and co-workers (1999) have investigated several structure formation scenarios ranging from hierarchical clustering to spherical radial collapse as a function of the velocity dispersion, using N-body simulations. For steep initial overdensity profiles they never find virialized haloes with a shallow core. However, for spherical collapse with presence of high velocity dispersion, this authors find a final profile which is slightly shallower than NFW. Avila-Reese and co-workers (1998) studied the effects of a lower cut-off in the power spectrum with the addition of some thermal energy. They find a NFW profile with a central shallow core, however the scaling properties of the model do not agree with the observations of dwarf and LSB galaxies.

We stress that a particle tangential velocity dispersion component (angular momentum) could play a key role in producing soft cores. Hence, we have analyzed extensively the question investigating the implications of a lower cut-off in the power spectrum of the cosmic fluctuations with the the contribution of some tangential velocity dispersion. We have performed a quantitative study with dark matter profiles obtained by using a semi-numerical method (Avila-Reese et al. 1998, for details) that allows us the calculation of spherically symmetric virialized structures starting from an arbitrary mass aggregation history (MAH). The virialized profile of the dark halo is obtained from a generalized secondary infall model including *non-radial* motions for the dark matter particles (tangential velocity dispersion) and taking into account dynamical matter redistributions through an adiabatic invariance hypothesis. The only free-parameter of the method is the orbital perihelion to aphelion ratio $\epsilon=r_{peri}/r_{apo}$ which is a measure of the thermal energy related to the tangential velocity dispersion of particles. The parameter $\epsilon$ is rather important in establishing the central density profile, since it determines the approaching of each particle to the center. We set this orbital parameter to the same value provided by N-body simulations: $\epsilon \approx 0.2-0.3$, and for a CDM model we obtain mass distribution profiles of virialized structures in agreement with results of numerical simulations (see also Ghigna et al. 1998).

Fig. 5 shows the density profile of a halo assuming $M=10^{12} \ M_{\odot}$ obtained with a cut-off in the power spectrum for masses lower than $3 \ 10^{10} \ M_{\odot}$ and $\epsilon =0.05;0.27;0.5$ for the upper,the middle and lower curve, respectively; the dashed line is the NFW profile. It is interesting to note that when $\epsilon$ increases, a soft core appears. With decreasing $\epsilon$ giving a more radial motion for the halo particles, the density profile appears to converge to Moore et al.'s result.

In Fig. 4 we show the central densities of haloes as a function of their maximum rotation velocities, dotted curves, as predicted by the halo structure resulting from a cut-off in the power spectrum at $3 \ 10^9 \ M_{\odot}$ (upper dotted curve) and at $3 \ 10^{10} \ M_{\odot}$ (lower dotted curve) both with $\epsilon=0.27$ . As shown by the plot, only the soft cores of galactic haloes (LSBs and dwarfs) are reproduced by the model, with the best fit being for a very high mass cut-off at $3 \ 10^{10} \ M_{\odot}$. The model with the value of $\epsilon$ fixed above, does not predict a scale invariant central density. One might propose an alternative model where $\epsilon$ increases with mass, however, haloes with masses much larger than the cut-off mass assemble most of their mass hierarchically and for this case, even with $\epsilon \rightarrow 1$, the formation of significant soft cores is not predicted. On the other hand, the value of $\epsilon=0.27$, which in the hierarchical case is accounted by the inhomogeneous collapse is not easy to justify for haloes formed monolithically. Although in a warm dark matter scenario particles have a residual thermal velocity dispersion, these velocity are not enough large as to produce $\epsilon \approx 0.27$. Summarizing, in a warm dark matter scenario, haloes near the cut-off scale can be shallower than the CDM ones, but for larger haloes the invariance of the central density with mass is not predicted. This conclusion was recently confirmed using cosmological N-body simulations (Colı̀n, Avila-Reese $\&$ Valenzuela 2000).

Exploring an alternative approach we have computed halo density profiles truncating the hierarchical halo mass aggregation histories at a fixed formation redshift, $z_{f}$. In this process we assume that the halo mass fraction accumulated up to $z_{f}$ in a CDM mass aggregation history actually collapses at $z_{f}$. In this monolithic collapse we assume the same orbital parameter as above, $\epsilon=0.27$, while the residual mass is aggregated at the normal hierarchical rate. The aim of this experiment is to show that there is a correlation between the observed central density and core formation redshift of haloes. In Fig. 4 we show the halo central densities as a function of the maximum circular velocity as derived by a mass aggregation history starting from $z=5$ (upper dashed curve) and $z=4$ (lower dashed curve) and evolving until now with the same average aggregation history derived from the hierarchical scenario. The result shows a surprising coincidence between this model and observations. In light of this result, a central scale invariant dark density could be explained if both galaxy and cluster dark cores collapsed at $z=5$. It is interesting to note that most of distant observed QSOs and galaxies are at this redshift. Although naively attractive, a physical process that allowed the monolithic collapse of structures at $z=5$ and not before or after this epoch scarcely appears plausible.

Finally, Hogan & Dalcanton (2000) proposed the existence of a limiting phase-space density for dark matter, which would have been fixed at the epoch of creation. They explore extensively the cosmological origins and implications for this assumption, and conclude that it can be accepted or rejected depending upon whether observations confirm the halo scalings this hypothesis implies. On purely dimensional arguments we can estimate the scalings the maximum volume density of dark matter would show in this situation as follows: the hypothesis of a limiting phase -space density,

$$Q=(\Delta q)^{-3} (\Delta p)^{-3} =const.$$

yields,

$$(\rho_{max}/ m_x)(m_x \ V_{m})^{-3}=const.$$

where $m_x$ is the dark matter particle mass. At constant $m_x$ we immediately obtain, $$\rho_{max}\propto V_{m}^3,$$ which is the scaling property derived by Hogan & Dalcanton (2000) for this assumption. An identification of $\rho_{max}$ with the core density of dark matter haloes implies a steep scaling of $\rho_{c}$ with $V_{m}$, again in conflict with the observational data shown in Fig. 4. An agreement of this approach with the observations requires $Q \propto V_m^{-3}$.

# Collisional CDM models

The success of CDM models at explaining most properties of the universe on large scale suggests a viable solution to the core problem assuming a self-interacting CDM without dissipative properties as recently proposed by Spergel $\&$ Steinhardt (1999). The core-less NFW density profile, result of the hierarchical process of accretion of haloes via merging of smaller structures, shows a velocity dispersion (temperature) that increases outwards (Cole & Lacey 1996; Fukushige $\&$ Makino 1997). Consequently, supposing that CDM particles are self-interacting, heat transfer towards the central region triggers a thermalization process in the dark haloes, avoiding the formation of a cuspy NFW profile. Since gravitational systems have a negative specific heat capacity, heat transfer inwards leads to a cooling of the core, amplifying the temperature gradient. Thus, the heat transfer inwards increases, making this a runaway process. The expansion of the core is based on this physical process if dark matter particles are collisional. This mechanism is similar to the post-collapse gravothermal instability that characterizes the dynamic evolution of the core in globular clusters (Bettwieser & Sugimoto 1984). During this process a minimum central density is reached after a thermalization time.

The core expansion may halt because particle-particle interactions become negligible once the core density decreases in such a way that thermal conduction no longer applies. On the other hand, if self-interaction is stronger, then an isothermal state could be established along the entire halo. In one more extreme case the core collapse phase (gravothermal catastrophe) is possible. Once the velocity distribution of the particles reaches a constant velocity dispersion under the effects of collisions the result is a central non-singular isothermal density profile. Any further tendency towards the core gravothermal catastrophe may be avoided by the competition between: 1) mass and energy aggregation determined by the halo merging history and 2) a thermalization by self-interaction. The mass and the energy aggregation tends to recover a NFW density profile (with the corresponding heat transfer inwards) while the self-interacting process tries to establish thermal equilibrium.

We argue that the thermalization process could be the physical mechanism to explain the presence of shallow cores in dark haloes. The goal of this work is to analyze the final density profiles of virialized haloes in two opposite cases: 1) when a *global* thermal equilibrium is reached resulting in a totally thermalized halo well-fitted by a King model; 2) when the self-interaction is less effective leading to a *local* thermal equilibrium. These cases are two opposite situations in which dark matter self-interaction may generate non-singular isothermal cores compatible with observations. The first case requires a self-interaction cross section sufficiently large in order to reach a global thermal equilibrium while in the second, a minimal cross-section is necessary to induce the thermal equilibrium only in the core region.

The possibility that a stronger self-interaction is working has to be excluded. Such extreme assumption may lead the core to the gravothermal catastrophe making the cusp problem worse. The case of very strong cross section was studied by Moore and co-workers (2000) and Yoshida and co-workers (2000) making use of N-body simulations and treating the dark matter as a hydrodynamical fluid. Both works show that in these limits dark haloes would develop singular isothermal density profiles which are not in agreement with the observations.

## King model scaled to CDM haloes

A global thermal equilibrium is reached when the self-interaction cross section is large enough in order for the characteristic time scale of collisions across the overall halo to be shorter than the halo lifetime. This is the case of a very efficient self-interaction that in a Hubble time leads halo particles to assume a Maxwellian velocity distribution and to a virialized halo density profile well fitted by a King model.

We have used the King profile in a cosmological context. For a given halo mass, we use the King sphere model with the corresponding total potential energy predicted by the mass aggregation history of the hierarchical theory. In this sense the King model has to be considered *cosmological*. Being the King model depending on three parameters: $\rho_c$, $r_c$ and P, and since the mass and the potential energy of the halo introduce two conditions, one parameter can be freely fixed, e.g. $\rho_c$.

According to Fig. 4, we assume that $\rho_c$ does not depend on mass. So, given the mass, the potential energy and the central density, the core radius is univocally determined. In Fig.6 the dotted curves overlaid to the observations represent core radii obtained adopting a King profile with the central density fixed to values: $\rho_c =0.005 \ M_{\odot}$/pc$^3$ (upper curve); $\rho_c =0.02 \ M_{\odot}$/pc$^3$ (middle curve) and $\rho_c =0.08  \ M_{\odot}$/pc$^3$ (lower curve). Vertical dotted lines are the virial masses increasing by a factor of ten from $M=10^{10}$ to $10^{16} \ M_{\odot}$ from left to right.

In that figure one sees that a good agreement with observations is obtained for the scaled King models with $\rho_c =0.02 M_{\odot}$/pc$^3$. The figure shows that the King model is successful in reproducing halo core radii for the clusters of galaxies; on galactic scales the coincidence between predictions and the observed trend seems even better.

For each scaled King model we have computed the average form parameter $P \approx 7, 8.5$, and 9 for the upper, middle and lower curves in Fig. 6, respectively. This detail seems interesting because the case of maximum entropy for a King profile corresponds to a value for the form parameter $P=8.5$, just when the halo central density is close to the value of $\rho_c \approx 0.02 \ M_{\odot}$/pc$^3$. From this point of view one could conclude that most galaxies and galaxy cluster are close to the state of maximum entropy.

In this sense, the King model is capable of predicting the halo central density scale invariance.

The expected halo central density behaviour is showed with the point-dashed line in Fig.4 .

Always with the purpose of testing the prediction capabilities of the cosmological King model, we have investigated how realistic is a King configuration for the dark mass distribution in galaxy clusters. We have compared mass profiles for clusters of galaxies derived by weak lensing data to the predictions of the King model, with the same mass and energy provided by the hierarchical halo aggregation history and P=8.5 In Fig.7, the dark mass distributions expected in a $\Lambda CDM$-dominated universe are shown with solid lines while points are for mass profiles of 29 clusters derived from a published sample (Wu et al. 1998). With solid lines we show the predicted mass profiles for haloes with the following virial masses: $M_{vir}=3 \ 10^{14}$ (lower line);$10^{15};3 \ 10^{15};10^{16} \ M_{\odot}$ (upper line). No relevant discrepancy appears for the mass profile of clusters, in particular for objects with a moderate dispersion velocity. This result is in agreement with the analysis of the outer part of galaxy clusters made using lensing techniques as inferred by several authors, inspite of their having used the singular isothermal sphere model (Williams et al. 1999; Clowe et al. 2000). The correlation between $R_{vir}$ and $M_{vir}$ derived within the hierarchical picture is plotted in Fig.7 with a long-dashed line. Obviously, the criterion used to define the virial radius for a cosmological King profile is the same as in the hierarchical framework. The open circles drawn in the figure represent virial masses of observed clusters as inferred by Carlberg (1996), while King radii (dotted curve) are indicated to complete the picture.

The crucial shortcoming of this model is that if a thermal equilibrium is reached over the entire halo, we should expect that haloes will be spherical for an extensive region. This prediction strongly disagrees with observations of anisotropies for dark mass distribution of the cluster MS21137-23, over nearly $100$ kpc, as argued by Miralda-Escudé (2000).

In summary, a cosmological King mass profile as an idealized model to represent a thermal equilibrium extended to the overall halo appears promising in predicting a thermal equilibrium of maximum entropy and producing halo central densities with a scale invariant property. Taking into account that a strong self-interaction is not needed to generates shallow cores, but these may be produced even when thermalization is limited to the halo inner region. We find it more realistic and likewise interesting to investigate this alternative possibility.

##  A non-singular NFW profile

Of great interest is the case when particle collisions induce thermal equilibrium limited to the region of the shallow cores. This represents the physical situation when a minimal cross section is given. From a theoretical point of view in this case, the central core is thermalized and results in a non-singular isothermal sphere while in the outer part of the halo the behaviour is provided by the hierarchical theory of halo merger history represented by a NFW profile. This is the situation in which the thermalization process has a low efficiency and identifies a region limited by a thermal radius, $R_{th}$. This length is not necessarily equal to the core radius and as we will see latter may be half as large.

With the intention of a more quantitative study of this physical situation we have calculated a profile representative of a *local* thermalization in the inner region of the halo. We assume a mass density distribution characterized by NFW profile in the outer part linked to a non-singular isothermal sphere in the core (see Binney $\&$ Tremaine, table 4-1). Starting from the hydrostatic equilibrium equation the profile is obtained constraining two fitting conditions: the continuity of the mass density distribution and of the pressure, in passing from the NFW profile to the isothermal sphere. The advantage of such non-singular NFW profile is that it represents the most economical approach.

We have run the model of non-singular NFW profiles in a $\Lambda CDM$ universe fixing the mass and the central density, hence, we derive univocally the core radius predicted by the model in order to compare it to the observations. In Fig.8 the dotted curves overlaid to the observations represent core radii obtained adopting such a profile with the central density fixed to values: $\rho_c =0.005 \ M_{\odot}$/pc$^3$ (upper curve); $\rho_c =0.02 \ M_{\odot}$/pc$^3$ (middle curve) and $\rho_c =0.08  \ M_{\odot}$/pc$^3$ (lower curve). Vertical dotted lines are the virial masses increasing by a factor of ten from $M=10^{10}$ to $10^{16} \ M_{\odot}$ from left to right. The agreement with the observations appears good. It is likewise interesting to note that the presence of soft cores as a result of weakly self-interacting CDM, is supported by Burkert (2000) using a numerical Monte-Carlo N-body simulation. In this case a Hernquist profile is assumed as initial condition for the virialized halo and it is shown that in a Hubble time self-interaction leads to the formation of a non-singular isothermal core. The difference between the two approaches is that in our model the system is not assumed isolated. The isothermal soft core is surrounded by a NFW density profile in the outer part of the halo where mass and thermal energy are continuously injected as a result of the hierarchical halo mass aggregation history. The halo characterized by the NFW profile acts as a renewing *thermal bath* feeding the core region.

With the same procedure used in the previous section we have investigated whether the mass profiles derived by weak lensing data in the outer part of galaxy cluster haloes may agree with the predictions of this non-singular NFW profile in a hierarchical scenario. Computing the mass profiles for non-singular NFW haloes in a $\Lambda CDM$-dominated universe with $\rho_c=0.02
M_{\odot}$/pc$^3$, Fig.9 compares directly the predictions of the model (solid lines) to the mass profiles for 29 clusters derived by weak lensing in a published sample (points)(Wu et al. 1998). Models are computed for the same mass range listed above: $M_{vir}=3 \ 10^{14};10^{15};3 \ 10^{15};10^{16} \ M_{\odot}$. In this case the agreement with the observations appears a little better than for the King model analysed in the previous section. The correlation between $R_{vir}$ and $M_{vir}$ derived within the hierarchical picture is also plotted in Fig.9 as a long-dashed line. A good agreement between the theoretical curves and estimates of virial masses of observed clusters (open circles) as inferred by Carlberg (1996) is clearly seen.

Now, by adopting this model we are able to investigate the thermal radius $R_{th}$. This length is not necessarily equal to the core radius. In CL0024+1654 we predict a core radius roughly of $R_c=100$ kpc but the thermal radius within which the thermalization is working is shorter, nearly $40$ kpc. This implies that the core is spherical for a few dozen of kiloparsec; beyond this radius the thermalization does not work and anisotropies will dominate. This is consistent with Miralda-Escudé (2000) who finds evidence of elliptical rather than spherical potentials on scales of the order of $70$ kpc, as for instance in MS21137-23.

The great advantage offered by assuming a *local* thermal equilibrium is that it allows to estimate the self-interaction cross-section directly from the observational data. If $n$ is the dark particle number density , $\sigma$ the cross section and $v$ the dispersion velocity, assuming in the core a collision time $\tau = 1/(n \ \sigma \ v)$ close to the Hubble time, we derive:

$$\frac{\sigma}{m_x} \frac{}{} \approx 4 \ 10^{-25}
\left( \frac{0.02 \ M_{\odot} \ pc^{-3}}{\rho_c} \right)
\left( \frac{100 \ km \ s^{-1}}{v} \right) \ \frac{cm^2}{GeV}$$

with $m_x$ the mass of the dark matter particle and $\rho_c$ the central density. Even if we ignore the nature of such dark matter particles it is important to point out that our model of self-interaction is characterized by a cross section that depends on the halo dispersion velocity i.e., as in other classical physical interactions the cross section is a function of the particle energy. It is important to point out that if one assumes $\sigma/m_x$ constant (or equivalently $\rho_c \ v \ t \approx$ constant), then the halo core radius will scale with v as $R_c \propto v^{3/2}$, as proposed by Miralda-Escudé (2000). This predicted trend is not favored by the present observational picture, even though some uncertainty is present. Assuming $\sigma/ m_x$ as a diminishing function of the dispersion velocity allows the self-interaction theory to predict: $R_c \propto v$, in agreement with observations.

During the refereeing of this paper, Yoshida et al. (2000) and Davé et al. (2000) have carried out cosmological N-body simulations for a self-interacting CDM model with a constant cross-section. In a more recent study (Firmani, D'Onghia $\&$ Chincarini 2000), using an original cosmological code based on the collisional Boltzmann equation, we have confirmed that self-interaction creates in the halo a non-singular isothermal core, the outer region remaining as a NFW profile. Assuming $\sigma \propto 1/v$ we have proved that a nearly central density scale invariance is reproduced. Further, a study of Wyithe et al. (2000) appeared strengthening the idea of a cross-section inversely proportional to the collisional velocity.

We wish to point out that when self-interaction induces the local thermal equilibrium with the cross-section given above, one of the implications of the model is a core formation more efficient on galactic than on cluster scales.

In Fig.10 we show the expected core mass fractions ($M_{c}/M_{vir}$) as a function of the maximum circular velocity derived adopting the profile with the central density fixed to values: $\rho_c=0.005 \ M_{\odot}$/pc$^3$ (upper curve), $\rho_c=0.02 \ M_{\odot}$/pc$^3$ (middle curve) and $\rho_c=0.08 \ M_{\odot}$/pc$^3$ (lower curve). As shown by the plot, the core mass fraction decreases for more massive haloes as an intrinsic property of the model. In light of the cross section value inferred by observations, it could be interesting to explore the abundance of galactic subhaloes making use of numerical simulations and adopting a weak self-interacting cross section in order to investigate the role of the ram pressure in disrupting satellites in dark haloes.

# Conclusions

We have examined the observed rotation curves of dark matter dominated dwarf and LSB galaxies and included the mass density profiles of two clusters of galaxies lacking the gravitational contribution of a central cD. All these objects show density profiles with evidence of soft cores. Assuming an isothermal sphere model, we have found two scaling properties for haloes from galactic to cluster sizes: a linear increase of the core radius with increasing maximum rotation velocity of the haloes, and a halo central density which remains invariant with respect to the mass. The difficulty in explaining the observed scaling trends of soft cores (in particular a scale invariant central density) by a manipulation of the primeval density fluctuation field led us to assume a self-interaction process as an attractive physical solution to the core problem. We have investigated two opposite physical situations corresponding to a *global* and a *local* thermal equilibrium, respectively. These options are two limiting cases between which dark matter self-interaction may generate soft cores compatible with the observations. In particular, a global thermal equilibrium for haloes, reached for a self-interaction cross section sufficiently large, is capable of predicting a scale invariant central density and would indicate that the observed haloes are approaching the stable equilibrium state of maximum entropy. Unfortunately, in this model the spherical shape of haloes will be rather extended, in disagreement with lensing data for clusters of galaxies.

However, the most attractive case that we have found is when a local thermal equilibrium is induced only in the halo inner region. This model yields a good agreement between the observed core radii and the theoretical predictions over the entire range sampled. In light of this coincidence with the observational data it was possible to derive *inductively* an estimate for the self-interaction cross section.

We stress the importance of confirming the presence of dark halo soft cores at cluster scales through high resolution mass maps using strong lensing techniques, which probe directly into the inner regions of galaxy clusters. Extending the availability of high-quality galactic rotation curve observations in the dwarf and LSB region remains equally important.

# Acknowledgments

We are grateful to S. Gelato for stimulating discussions.
ED thanks Fondazione CARIPLO for financial support.


abstract: Version 3 of FORM is introduced. It contains many new features that are inspired by current developments in the methodology of computations in quantum field theory. A number of these features is discussed in combination with examples. In addition the distribution contains a number of general purpose packages. These are described shortly.
author: J.A.M. Vermaseren${}$
*NIKHEF*
*PObox 41882, 1098 DB Amsterdam, The Netherlands*
title:
  .
  .
  NIKHEF-00-032
  .
  .
  **New features of FORM **

# Introduction

It is already more than 10 years ago that the symbolic manipulation program FORM was introduced. At the time it was constructed more or less as a successor to SCHOONSCHIP  which, due to the limitations of its language of implementation, became harder and harder to use. In addition the continuous development of methods of computation in many fields of science required a rapid expansion of the possibilities of the symbolic programs. Admittedly programs like Reduce, Maple and Mathematica offer a host of possibilities combined with extensive libraries, but the speed of SCHOONSCHIP was always something that set it apart from the other programs. Hence the task was to create a program that would be at least as fast as SCHOONSCHIP and be fully portable. In particular it should be usable on the fastest computers that are suitable for this kind of work (eg. vector processors will rarely give great benefits to symbolic manipulation in general. As we will see this is completely different for parallel processing). This resulted in version 1 of FORM. Due to more modern algorithms and the benefits of a second generation approach it is actually somewhat faster than SCHOONSCHIP when the problems remain limited in size and much faster when the expressions become large. Compared to the more popular computer algebra systems the difference in speed and use of memory depends largely on the type of the problem. This is due to a completely different philosopy of design and use. Typical factors are between 10 and 100, but there have been rare cases for which the factor was considerably less and cases for which the factor was considerably larger. Such a factor translates into a timeshift with respect to when a given calculation can be done in practise with other programs. Over the past years the computer industry has given us on average every three years a factor 4 in increase in capabilities. Hence for FORM this translates into a shift of more than 5 years. As a consequence most of the calculations in quantum field theory for which the available computer resources are a consideration have been using FORM over the past years.

Of course the development of FORM has continued. Version 2.0 was introduced in 1991. It contained a number of improvements that were inspired by the use of the program in a number of actual research projects. Since then regular small improvements were made, dictated by more and more complicated projects. After a number of years it became clear that a number of fundamental internal changes would enhance the capabilities very much and hence work on version 3 was started. Most of the code of version 2 was replaced, introducing better structured ways of dealing with internal objects. Even though the language of implementation is still regular C, the methods used are in many cases those of object oriented programming. It was of course important to do this in such a way that the speed and compactness of the expressions would not suffer from this. This has been achieved. After this revamping the new facilities were added. Some of them are completely new in the field of symbolic manipulation. This does not set the claim that such things are impossible with other programs. It just means that the FORM approach to some things is far more direct and often easier to program, even if some people may not like the language.

In this paper the most important new features are described shortly. In most cases some short examples of code are given with the corresponding output. It should be understood that this paper is not a manual. Because a number of packages comes with the FORM distribution, the examples to illustrate the features come mainly from these packages. In addition there are examples from some incomplete future packages. To improve the understanding of the above, first a very short description of FORM is given.

There is also a short section on a parallel version of FORM. It looks like this will be a major new feature that is currently still under development but results have been obtained already with one of the packages. The actual target is to run nearly unmodified FORM programs (the mincer package that has been used already was not modified at all) on a number of processors in such a way that to the user it looks like a much faster sequential machine. This is very useful for –among others– the development cycle of big programs.

The final section discusses the availability of FORM. In the appendix we give a short description of the packages with some examples of their use.

# A short overview of FORM

Here a very brief overview of FORM is given. For a complete introduction one can consult the manual which contains a complete tutorial and a reference section.

FORM is not an interactive system. It runs in batch. In UNIX terms one would say that FORM is a filter. For large programs this is the natural mode anyway. It also allows the user to prepare programs with a familiar editor. The editor used by the author is stedi which has a folding capability that is recognized by FORM. The sources of this editor are available in the FORM distribution as well. If everan interactive version will be constructed, it will be based on this editor.

The language of FORM uses strong typing. This means that all objects that will be used in a program will have to be declared. This allows FORM to use a number of properties of such objcets and this adds to the speed of the program. Algebraic objects in FORM are expressions, symbols, functions, vectors and indices. In addition there are \$-expressions, sets, numbers, preprocessor variables and argument field wildcards. The functions are subdivided in categories of commuting and noncommuting functions. Additionally there are the classes of tensors, tables and regular functions.

The basic *modus operandi* of FORM is that variables are declared. Then one or more expressions are defined by giving them initial contents. After that operations are applied to one or more of these expressions.

A FORM program is subdivided in modules. Each module is an individual entity of which the contents are compiled when it is the turn of the module to be executed. After the module has been executed, the compiled version is forgotten again, but depending on the type of the module, declarations and expressions will be kept. Hence at the level of complete modules FORM acts as an interpreter. The contents of expressions as they were at the start of the module will be forgotten, unless the user takes some special action. This is needed to prevent the disk from filling up too quickly. At the beginning of each module extra variables can be declared and new expressions can be defined. If necessary old expressions can be deleted. In principle the operations of the module are applied to all old and new expressions.

The basic object for manipulation is the term. Expressions consist of terms, separated by addition operators (or subtraction of course). This addition operator is commutative and associative. Function arguments can consist of subexpressions, i.e. smaller expressions which are limited in size. Such subexpressions also consist of terms. Terms consist of subterms. The subterms are separated by the multiplication operator. This multiplication operator is associative and usually commutative. Only in the case of noncommuting functions and still unsubstituted objects that could contain noncommutative functions is the multiplication order sensitive. The number zero is not considered to be a term. An expression that is zero contains no terms.

FORM works its way through an expression in a sequential manner. It starts with the first term, applies all statements of a module to it and puts the results away for sorting (normal ordering of the complete expression is called sorting here. It does involve adding coefficients of terms that are identical with the exception of their prefactor). Partial sorting may occur when buffers become too full. After all terms of an expression have been treated this way the sorting is completed. Once all expressions have been treated this way the new versions of the expressions replace the old versions.

The actions inside a module can be either predefined operations or substitutions that may involve rather complicated patterns involving wildcarding. Wildcarding is the use of generic variables that represent a whole category of objects, both in the left hand side (the pattern) and in the right hand side (the replacement expression).

A number of special functions is available to make the use of the program easier and often much faster. These involve amoung others a sum function, a number of combinatoric functions and a number of numerical functions. In addition there are special tensors like the Kronecker delta and the Levi Civita tensor. And there is much more.

For the use in particle physics there are Dirac gamma matrices and trace operations. It should be noted however that this is nowadays a rather unimportant part of the program as there exist many facilities to emulate these objects and operations (and similar operations that can be much more complicated).

Results of a calculation can be presented in many different ways. One way is to print them to regular output. They can be written to file in internal notation for use in future FORM programs. Or they can be written to special files, etc.

There is a powerful preprocessor that can manipulate the input at the character level. It is fully adapted to the requirements of symbolic manipulation. There are now also some mechanisms for the feedback of algebraic results to the preprocessor. This facilitates the possibility to have FORM programs write parts of themselves.

A number of buffers in FORM have to be allocated at startup. The user can influence these allocations with a special setup file. Ordinarily this is considered an advanced feature.

# New features

For the description of the new features it is assumed that the user has some experience with the older versions. The distribution contains a good tutorial. The interested reader without experience could look at the many examples in it. Here we concentrate on the new concepts. For a complete description and the exact syntax and for the many additional new features we refer to the new manual.

## Variable administration

The complete internal adminstration of variables has been made dynamic. This means that the old restrictions on the number of variables have been lifted. The setup file is no longer needed when more than 100 variables of the same type are asked for. The limit lies now at 6000 for 32-bit systems and $10^8$ for 64-bit systems.

Similarly the compiler buffer, the input buffer and the various preprocessor buffers are arranged dynamically. The reason that in the older versions these things were set up in a static way was due to the size of the computer memories in the late 80's.

## Preprocessor variables

Preprocessor variables can be used 'recursively'. The old notation to enclose a preprocessor variable in quotes has been changed into a notation in which the variable is enclosed in a backquote-quote pair as if these are brackets. This way they can be nested as in

    #do itabs = 1,`size'
    #ifndef `STABLE`itabs'HFILE'
    #call table`itabs'
    #endif
    #enddo

In the summer package there are 8 files table'itabs'.prc all having something like:

    #procedure table5
    #ifndef `STABLE5HFILE'
    #define  STABLE5HFILE "1"
        lots of tables
    #endif
    #endprocedure

This way the procedures are not called twice. Of course the contents would not be used twice anyway, but some of them are rather lengthy and FORM would have to read the whole procedure to find the $\symbol{"23}$endif. That is avoided this way.

To make the preprocessor variables even more powerful there are also postincrement and postdecrement operators for preprocessor variables as in the C language:

         #define k "1"
         Local F`k++' = ...;
         Local F`k++' = ...;
         Local F`k++' = ...;
         Local F`k++' = ...;

would result in the definitions of `F1` to `F4`. In the end `k` would have the value 5. This is particularly handy when the program is generating expressions and we do not know in advance how many.

## Preprocessor abbreviations

The notation has been cleaned up a bit by introducing a new operator for the compilation stages. This operator is indicated by three dots as in

        Symbols x1,...,x100;
        Local Fac10 = 1*...*10;

Actually there is an even more general notation involving $<>$:

        id  f(<p1?,m1?,i1?>,...,<p6?,m6?,i6?>) =

Here the $<>$ enclose a pattern. FORM will look for the differences in the begin pattern and the end pattern, calculate their numerical differences and if they all have the same absolute value we can make a 'running pattern' and make the substitution. Hence

        id  f(<p1,m4>,...,<p4,m1>) =

would evaluate into

        id  f(p1,m4,p2,m3,p3,m2,p4,m1) =

This facility cannot be used recursively but already it can clean up the code considerably when compared to how one would have to do this with do loops in the old versions of FORM. It becomes really powerful in combination with preprocessor variables:

        #do j = 1,`MAX'-1
            id  e_(i1?,...,i`j'?) =
                    sum_(k,1,`MAX',e_(i1,...,i`j',k)*f(`j'+1,k));
            id  f(`j',k?) = tab(`j',k);
            .sort:step `j';
        #enddo
        id  e_(1,...,`MAX') = 1;

This would be the central step in computing the determinant of a matrix that has been defined in the two dimensional table named tab. We use an intermediate function f to make sure that first the Levi-Civita tensors with two indentical indices are killed before table substitution is attempted. This is a very efficient algorithm for sparse matrices, especially when the matrices have been ordered in such a way that the first columns have the largest number of zeroes.

## \$variables

These variables are at the same time small algebraic expressions and character strings. They can be used as either. When they are used and they are enclosed between a backquote-quote pair, the compiler will make their character representation and substitute this like a preprocessor variable. This use as a preprocessor variable even includes the possibility of using the postincrement or postdecrement operators. If they are not enclosed between the backquote-quote pair the contents are seen as an algebraic expression to be used during execution time. This can lead to very flexible code. If they are to be given an initial value, this can be done with the character $\symbol{"23}$ before their name to have the preprocessor provide the value (hence this is done once during compilation time), or without the $\symbol{"23}$ to indicate that this value should be provided during execution, each time a term passes this position in the code. There are additional methods to provide the \$-variables with a value that is the match of a wildcard variable. Let us have a look at an example:

        #$max = -100;
        if ( count(x,1) > $max ) $max = count_(x,1);
        .sort
        #do i = 1,`$max'
            ...
        #enddo

Here we give `$max` the initial value -100. During execution we look for the maximum power of the variable `x`. Once the module has finished this maximum should be indeed the value of `$max`, provided it is at least -100. At this point we can use this value as a parameter in a do loop. Note that the .sort is essential, because if we were to omit it, the do loop would have the bounds 1,-100 because the do loop instruction would be translated before any algebraic manipulation would have taken place (first the complete module is translated, then execution takes place).

It is also possible to manipulate the contents of the \$-variables, provided these do make sense.

The contents of these \$-variables are kept in memory. This means that the user should not try to see them as a substitute for regular expressions and have some of them grow to a large size. It would work, but performance might suffer when the physical memory is exhausted in the same way that Mathematica and Maple become rather disagreeable when they need more memory than is available.

## Hide

When there are several expressions active at the same time, sometimes there is the need to temporarily put some of them 'out of the way'. FORM has several mechanisms for this. The Skip statement would just skip the indicated expression(s) by copying them directly from the input to the output of the module. This is not always efficient. In addition one has to specify this in each module seperately. A more basic solution is to copy the expression(s) to a special location where they remain suspended until called back. This is done with the Hide and Unhide statements. The hidden expressions can still be used in the right hand side of expressions in the same way as fully active expressions can be used. This is a faster mechanism than the one that is used with stored expressions.

        .sort
        Hide F1,F2;
        Local F4 = F1+f3;
        .sort
             more modules
        .sort
        Unhide F1,F2;
        id  x = y+1;

Here F1 and F2 are not operated upon for a few modules. Then they are called back and they are immediately active again. This means that the substitution of x also holds for the terms of F1 and F2.

There is another mechanism when one or a few statements should be applied only to a limited number of expressions. This concerns a new option of the if statement:

        if ( expression(G) == 0 );
           statements
        endif;

In this case the statements are applied to the terms of all active expressions except for the terms of the expression G.

## $\symbol{"23}$write

This is a preprocessor controled instruction that can write either to regular output, to the log file or to any named file. It has a format string as in the printf function of the C language. It specifies what should be printed. There are some examples in which complete procedure files are constructed this way for later use in the same program.

## Print ""

The new feature of the print statement is a mode like printf in the C language that can print information during execution. It can handle the printing of messages and even individual terms or \$-variables. This gives it great value as a debugging tool. A good example is given with the SplitArg statement in .

## Table manipulations

This facility involves a statement, a special function and a special print statement. The table\_ function can be used to load the contents of a table into an expression. The table indices are represented by powers of a given set of symbols. The fillexpression statement does the opposite. It takes an expression that is bracketed in a number of symbols and loads the contents into a table. The powers of the symbols indicate the table indices and the contents of the brackets form the corresponding table elements. The printtable statement writes a table to file in the form of fill statements. This file can be used in a future program to fill the table. Together these facilities allow the dynamic extension of tables in a program. If a table element that is needed has not yet been defined, one could compute it on the spot and add it to the table. The results can be written in such a way that in future programs the same element does not have to be recalculated.

## Symmetry properties

Functions can have properties of symmetry. These properties hold for the set of all arguments. The functions or tensors can be symmetric, antisymmetric, cyclesymmetric and reversecyclesymmetric. This last means that the function is invariant both under cyclic permutations and a complete reversal of all arguments. These properties are put in the declaration of the function or tensor. Each time some arguments of the function are changed, FORM will check whether permutations have to be made. There are some restrictions. FORM will not accept argument field wildcards (wildcards that match zero, one or more function arguments) in patterns in which such a wildcard occurs inside a symmetric or antisymmetric function. The pattern matching would become extremely slow when no match occurs (all possibilities have to be searched and that involves n! possibilities for n arguments). There are tricks to circumvent this in most cases.

## Topology

In combination with the symmetry properties FORM has now a command to look for loop structures in argument contractions. What this means is that if we have a network in which v is a vertex function and its arguments are indices and connections are represented by two vertices having identical indices, FORM can find the smallest loop in such a structure and make replacements based on this. There are some examples in the Color package in which the vertex function is the antisymmetric tensor f with three indices. In the program

    #-
    Indices i1,...,i9;
    CF f(antisymmetric),ff;
    Local F = f(i1,i2,i3)*f(i2,i4,i5)*f(i3,i5,i6)*
              f(i4,i7,i8)*f(i6,i7,i9)*f(i1,i8,i9);
    ReplaceLoop,f,arguments=3,loopsize=all,outfun=ff;
    Print +f;
    .end

the replaceloop command takes the smallest loop, removes the loop indices and puts the remainder in the output function ff which should be at least cyclesymmetric (at least the action we take here implies it). If there is more than one possibility FORM takes the first one it encounters. The result of this program is

       F = f(i1,i8,i9)*f(i4,i7,i8)*f(i6,i7,i9)*ff(i1,i6,i4);

Only a single loop has been replaced. If one would like to replace all loops one should put a repeat/endrepeat combination around the replaceloop statement. This would result in

       F = - ff(i1,i4,i6)*ff(i1,i6,i4);

If such a command would not exist, the color package would be much more restricted because it would need a statement for each loop (loops with one vertex, two vertices, three vertices etc.) Also the corresponding pattern matching would be much slower. In the crucial phases of the program this made a factor 10 difference in speed and it also made the code much shorter.

## SplitArg

This is a rather useful tool for investigating arguments of functions. In its basic form it splits a multiterm argument into a number of arguments, each with a single term. There are variations for faster operation when only a single term should be taken from the multiterm argument. Take for instance the following example in which we want to select all functions den that contain the symbol `j1` in its argument.

        SplitArg,((j1)),den; * take all terms in j1 separately
        id  den(j1) = den1(0,j1); * a single term does not get split
        *                           we may need more of these statements
        id  den(x?,x1?) = den1(x/x1*j1,j1)/x1*j1; * normalize the j1 argument.
        *
        * all den with two arguments have now just j1 without factor.
        *
        repeat id den1(x?,j1)*j1 = 1-x*den1(x,j1);
        repeat id den1(x1?!{x2?},j1)*den1(x2?!{x1?},j1) =
                   (den1(x1,j1)-den1(x2,j1))*den(x2-x1);
        id  den(x?number_) = 1/x;

Code of this nature occurs frequently in the summer package. It splits the fractions, being careful not to divide by zero (in some cases one has to be far more careful and involve theta\_ and delta\_ functions). Let us see what this code does. We use the following program (this is also a demonstration of the new print statement capabilities):

    #-
    S   j1,x,x1,x2;
    CF  den,den1;
    Off Statistics;
    L   F = den(j1)*den(2+j1)*den(3-2*j1);
      Print +f "<1> %t";
    SplitArg,((j1)),den;
      Print +f "<2> %t";
    id  den(j1) = den1(0,j1);
      Print +f "<3> %t";
    id  den(x?,x1?) = den1(x/x1*j1,j1)/x1*j1;
      Print +f "<4> %t";
    repeat id den1(x?,j1)*j1 = 1-x*den1(x,j1);
      Print +f "<5> %t";
    repeat;
        id den1(x1?!{x2?},j1)*den1(x2?!{x1?},j1) =
             (den1(x1,j1)-den1(x2,j1))*den(x2-x1);
        Print +f "<6> %t";
    endrepeat;
    id  den(x?number_) = 1/x;
      Print +f "<7> %t";
    Print +f;
    .end

which results in

        #-
    <1>  + den(j1)*den(2 + j1)*den(3 - 2*j1)
    <2>  + den(2,j1)*den(3, - 2*j1)*den(j1)
    <3>  + den(2,j1)*den(3, - 2*j1)*den1(0,j1)
    <4>  - 1/2*den1(0,j1)*den1(2,j1)*den1( - 3/2,j1)
    <5>  - 1/2*den1(0,j1)*den1(2,j1)*den1( - 3/2,j1)
    <6>  - 1/2*den(2)*den1(0,j1)*den1( - 3/2,j1)
    <6>  - 1/2*den(2)*den( - 3/2)*den1(0,j1)
    <6>  - 1/2*den(2)*den( - 3/2)*den1(0,j1)
    <7>  + 1/6*den1(0,j1)
    <6>  + 1/2*den(2)*den( - 3/2)*den1( - 3/2,j1)
    <6>  + 1/2*den(2)*den( - 3/2)*den1( - 3/2,j1)
    <7>  - 1/6*den1( - 3/2,j1)
    <6>  + 1/2*den(2)*den1(2,j1)*den1( - 3/2,j1)
    <6>  + 1/2*den(2)*den( - 7/2)*den1(2,j1)
    <6>  + 1/2*den(2)*den( - 7/2)*den1(2,j1)
    <7>  - 1/14*den1(2,j1)
    <6>  - 1/2*den(2)*den( - 7/2)*den1( - 3/2,j1)
    <6>  - 1/2*den(2)*den( - 7/2)*den1( - 3/2,j1)
    <7>  + 1/14*den1( - 3/2,j1)

       F =
           - 2/21*den1( - 3/2,j1) + 1/6*den1(0,j1) - 1/14*den1(2,j1);

Note that the termwise option of the print statement gives us a trace of what happens and in what order.

## The term environment

Sometimes one needs to work things out for just a few terms, but an intermediate sort for the results of these manipulations is needed in order to have things cancel. Or one would like to do even fancier things like trying whether the contents of certain brackets can be factorized by a given expression. If so, one would like to make that factorization. The term environment defines the current term temporarily as a small expression. Because this is done during the processing of the terms, sorting cannot be done with the .sort instruction which works for the whole expression. This means that we need a separate sort statement for all these small expressions. It should however be noted that the complete term environment consisting of the term statement, the endterm statement, and the intermediate regular statements and sort statements are all part of the same module and hence are all compiled before execution starts. Basically we use the same mechanism of operation in the argument environment. There function arguments can be operated upon and when the endargument statement is encountered the results are sorted and put back inside the function. The sort statement is hence equivalent to an endargument statement followed by a new argument statement. This last construction has the limitation that the result has 'to fit' and hence is limited to MaxTermSize or less. The Term environment does not suffer from this restriction because we do not have to keep the results inside a function argument and also in the intermediate stages even the disk can be used and the expression may be quite large.

    #-
    S   x,y,[x+1],[x+2],x1,x2;
    CF  acc;
    L   F = y*(x+1)^2*(x+2)+y^2*(x+1)*x+y^3*(x+2)*x+y^4*x^2;
    B   y;
    Print +f;
    .sort
    Collect,acc;
    Term;
        $min1 = 1000;
        $min2 = 1000;
        id acc(x?) = x;
        id  x = x1-1;
        sort;
        if ( count(x1,1) < $min1 ) $min1 = count_(x1,1);
        sort;
        Multiply ([x+1]/x1)^$min1;
        id  x1 = x+1;
        id  x = x2-2;
        sort;
        if ( count(x2,1) < $min2 ) $min2 = count_(x2,1);
        sort;
        Multiply ([x+2]/x2)^$min2;
        id  x2 = x+2;
    EndTerm;
    Print +f;
    .end

which gives

        #-

       F =
           + y * ( 2 + 5*x + 4*x^2 + x^3 )
           + y^2 * ( x + x^2 )
           + y^3 * ( 2*x + x^2 )
           + y^4 * ( x^2 );

       F =
          x*y^2*[x+1] + x*y^3*[x+2] + x^2*y^4 + y*[x+1]^2*[x+2];

Of course this works only if one has a suspicion which factors are involved and things would go much better if FORM would be able to deal with factorizations by itself. This is considered for the future. For now this provides at least a partial solution.

## Bracket indexing

In the old versions FORM would look for the contents of brackets inside an expression in a sequential manner. For relatively small expressions in computers with not much memory this was still not optimal, but also not a complete disaster. With the growing of the computers and hence the expressions the inefficiency of this method became a major factor as it is an algorithm that has a linear dependence of the size of the expression. Hence now the brackets can be indexed if the user asks for it. The index will of course take space of its own, and this space can approach (in principle) the size of the expression if the brackets have very little contents. This could result in bad problems again. Therefore there is a maximum to the size of the index (can be changed in the setup file) and when this maximum is reached FORM will start skipping brackets in the index. If such a skipped bracket is asked for, FORM will do a linear search, starting from the nearest bracket in front of it. The result is still a speedup by a big factor. The brackets in the index are located by a tree-like binary search which gives a logarithmic dependence of the number of brackets in the index. The degrading factor when brackets are skipped is proportional to the size of the expression divided by the number of brackets in the index. Hence in that case the improvement is proportional to a factor $B/\ln(B)$ with B the number of brackets in the index. Usually however there should be no problem in fitting the entire index inside the memory. Because this use of brackets is not very common and the making of the index does cost resources, the default is to not make an index. Here we have a simple example

    #-
    Symbols  x1,...,x10;
    Local    F = (x1+...+x10)^10;
    Bracket+ x1;
    .sort
    Drop F;
    #do i = 0,10
    Local    F`i' = F[x1^`i'];
    #enddo
    .end

When we run this program the second module takes 1.59 sec on a pentium 300. Without the + in Bracket+ this step takes 2.84 seconds and this is not a very big expression yet. The program that solves the equations for the values in $N\rightarrow\infty$ in the summer package had an improvement factor of more than 100.

## Error messages

The error messages have been changed completely. The most noticeable change is the indication of where the error occurs when the input listing is off. This mode is standard for procedures. There are additional warnings and there is a way to let FORM print its interpretation of the input. Together with the already existing printing of the name lists this provides extra tools for the debugging of FORM programs. In this example we have made two errors. It is the program of the bracket index. The name of the file is ex1.frm. Because we had turned off the listing, the line number information is rather crucial:

    #-
    Symbols  x1,...,x10;
    Local    F = (x1+...+x10)^^10;
    Bracket+ x1;
    .sort
    Drop F;
    #do i = 0,10
    Local    F`i' = FF[x1^`i'];
    #enddo
    .end

When this program is run we obtain:

        #-
    ex1.frm Line 3 --> Illegal position for operator: ^10
    ex1.frm Line 8 --> Undeclared variable FF
    ++++Errors in Loop

Because nearly all error messages have been changed and actually the complete compiler has been replaced, it is possible that some error messages either do not make complete sense or are too vague. The author is open for suggestions.

# The parallel version

Because of the way FORM processes expressions it should be possible to achieve a high degree of parallelization for the complete program. After an initial study at the special computer at FNAL in 1991 this assumption was verified. It took however till the late 90's before a more serious attempt was made. This was made possible in the framework of a large phenomenology project centered at the university of Karlsruhe (DFG Contract Ku 502/8-1). Two people worked part time on this (Albert Rétey and Denny Fliegner) and after struggling for a long time with the hardware and the parallelization library software they did indeed manage to obtain a working version of FORM that can run the Mincer package on an eight processor machine with a speed that ranges from 3 to 5 times the speed of a single processor. In addition many tests were made with other architectures .

It should be noted that thus far the parallelization has been rather crude. The terms of the input expression in a module are distributed over the various processors. These do their work, and they sort their results. After this the outputs are collected by the master processor for a final merge and the output is written to disk. It is possible to be far more refined about this and make a much better load balancing by interfering, if needed, in the main expansion tree. The main problem however is the speed of transfer of operation. Thus far use has been made of the MPI protocol (and in tests of much more of course). In the future it is expected that the use of threads will increase the data transfer rate considerably. It is of course this transfer rate that puts a limit to the eventual speed that can be obtained. A given transfer speed in combination with slow processors will lead to saturation for a much larger number of processors than in the case that fast processors are used. In a shared memory machine with threads however the transfer rate would be mostly a function of the processor speed and hence much is expected of this model. Unfortunately the implementation is not yet complete.

At the moment the only readily available version is the one for a Compaq Alpha server (with 8 Alpha 21264 processors). It is expected that more will follow. A time prognosis cannot be given yet.

Of course it is not always possible to run code in parallel. Especially the new \$-variables could cause problems because their eventual contents depend on the order in which terms passed. If each processor keeps its own version of a \$-variable the processors may not have identical values at the end of the module. Take the simple code

    #$max = -100;
    if ( count(x,1) > $max ) $max = count_(x,1);

which tries to find the maximum power of x. The various processors may have a different value in the end. Hence FORM should not parallelize modules in which \$-variables obtain values during running time, unless the user can provide some extra information. This can be done in the moduleoption statement. In that statement one can tell FORM that the final value of the \$-variable is either a sum, a maximum, a minimum or completely unimportant. In such cases FORM knows what to do with the results and the module can be run in parallel after all. It should be realized that this is all very new. Hence it could well be that many new facilities will be developed here and that there may be more ways in which future versions of FORM can decide about parallelization.

Any statement that concerns the parallelization will be completely ignored by a sequential version of FORM. This means that when a program is being prepared one could or should include already some of the indications for the parallel version. This way the upgrading to a parallel machine would be rather smooth.

# Availability

Whereas version 2 of FORM has been commercial, it was judged that the scientific community as well as the reputation of the author would benefit more from a free distribution. Hence, starting version 3, FORM will be freely available again. For the moment this will involve a number of binary executables of the program. Amoung these will be at least executables for LINUX on PC architectures and for alpha processors running UNIX. More binaries will become available in the near future. The manual will be available both as a postscript file and as a .pdf file. This will allow the average user to obtain the system and print out its manual as well as view it on the computerscreen.

Of course it is hoped that this development will not only improve the visibility and popularity of FORM, but will also lead to more possibilities to improve FORM itself. The potential for this depends of course on people in charge of jobs knowing about the importance of FORM in the science community. Hence it is expected that people who use FORM for scientific publications will refer to the current paper. This way the use of FORM can be 'measured'. The author hopes that the free distribution in combination with a proven popularity will lead to more people being involved in the development of FORM itself. There is still a whole list of potential improvements waiting for implementation. Undoubtedly many users will have their own suggestions. Also more packages would be appreciated.

The FORM distribution contains:

-   Executables for a variety of computers.

-   The conv2to3 program with its sources. This program converts old FORM code into new FORM code.

-   A postscript and a pdf version of the manual and a tutorial by André Heck.

-   A number of packages. Currently these are 'summer', 'harmpol', 'meltran', 'color' and 'mincer'.

-   The sources of the stedi editor. This editor works on BSD 4.0 systems and systems that still have an old compatibility mode. It also works under LINUX. There is a manual with it. Originally it was an editor for the Atari ST computers, made to work as well under MS-DOS. Then it was ported to BSD UNIX where it did run inside terminal windows. Under LINUX and X-windows it has recovered most of its old ease of use.

-   The sources of the minos database program for organizing large calculations. There is a small manual with it. The program should work on nearly any system. The database files should be system independent.

-   The axodraw system for including simple drawings and figures inside LaTeXfiles. This includes the manual.

The files can be obtained from the www pages in http://www.nikhef.nl/$\sim$form.

Disclaimer: The files are provided without guarantee whatsoever. If some commands do not work as mentioned in the manual or as the user thinks they should work, the user should submit a bug report. This may or may not be reacted to depending on circumstances.

Acknowledgements: The author is thankful for many comments during the development of FORM. Many people contributed in the form of bug reports and useful suggestions. Some people however stand out. Denny Fliegner and Albert Rétey for developing the parallel version of FORM (with support of DFG Contract Ku 502/8-1 (*DFG-Forschergruppe 'Quantenfeldtheorie, Computeralgebra und Monte Carlo Simulationen'*), Geert Jan van Oldenborgh for being the main guinea pig during the early stages of the project, André Heck for writing a good quality tutorial, Walter Hoogland for allowing me to spend so much time on the project in its early stages when success had not been proven yet.