Integrated Development of Algebra in Type Theory

1 downloads 0 Views 238KB Size Report
As a rst step towards this, we present direct constructive proofs of. Dickson's lemma and Hilbert's basis theorem, and use this to prove the constructive exis-.
Integrated Development of Algebra in Type Theory Thierry Coquand

Henrik Persson

Preliminary version at May 4, 1998

Abstract We present the project of developing computational algebra inside type theory in an integrated way. As a rst step towards this, we present direct constructive proofs of Dickson's lemma and Hilbert's basis theorem, and use this to prove the constructive existence of Grobner bases. This can be seen as an integrated development of the Buchberger algorithm, and so far we have a concise formalisation of Dickson's lemma in Half, a type{ checker for a variant of Martin-Lof's type theory. We then present work in progress on understanding commutative algebra constructively in type theory using formal topology. Currently we are interested in interpreting existence proofs of prime and maximal ideals, and valuation rings. We give two case-studies: a proof that certain a are nilpotent which uses prime ideals, and a proof of Dedekind's Prague theorem which uses valuation rings.

1 Introduction For the development and formal veri cation of algorithms, there are essentially two methods [Dyb90]. The rst, and most commonly used, is the external method, where an algorithm is given together with a proof that it is correct. In this method, the logic is external to the program, so the correctness proof is a logical comment external to the program. A strong form of external development is when a program is given together with an indirect correctness proof on the form \if this program would not be correct, then . . . , contradiction". A more restrictive form of external development is the Dijkstra/Hoare methods, where the program and the proof are more closely connected, e.g. while{loops are annotated with measures which decrease during execution. The second method is the integrated method, where a constructive proof is given which contains the algorithm implicitly. This can be done in for example Martin-Lof's type theory [NPS90] as suggested in [ML82]. With this method the logic is integrated with the program, often by using the same language. For example, a typical integrated development of a sorting algorithm is a constructive proof of the statement \any list is a permutation of a sorted list". Since the proof is constructive, an algorithm can be extracted mechanically from it, yielding a certi ed sorting{algorithm. By changing the proof, we can change the algorithm while preserving correctness, and the proof can in fact guide us in these changes. In this paper, we will present the project of developing algorithms in computational algebra inside type theory in an integrated fashion. We plan to use a proof{assistants in the email: [email protected], [email protected], address: Department of Computing Science, Chalmers University of Technology and University of Goteborg, S-412 96 Goteborg, Sweden. 

1

ALF{family [AGNvS94]. In these proof{assistants, the user builds up the proof-term explicitly, essentially in the same way as a functional programmer would write his programs in a functional programming language with dependent types such as Cayenne [Aug98]. In fact, the syntax we use is identical to that of Cayenne, so we hope to be able to execute our program directly, without any mechanical extraction or speci c optimisation. This should be feasible since Cayenne is a lazy functional programming language, and will therefore not execute parts of the proof which is not needed for the computation. So far, the veri cation and development of algorithms in computational algebra seems exclusively to have been of an external nature. For example, most accounts on Grobner bases [BW93, CLO97, Fro97] presents the Buchberger algorithm as a while{loop, together with an indirect proof of correctness. One reason for this is that the termination proof usually relies on Dickson's lemma or Hilbert's basis theorem, so there is no obvious measure which decreases in the while{loop. In fact, Thery's [The97] has formally veri ed the Buchberger algorithm in Coq [DFH+ 91], in an external way. In this development, a classical proof of Dickson's lemma in Coq was used [Pot96]. This suggests the question of how to verify this algorithm in an integrated way, or how to rewrite the while{program as a primitive recursive program. In this paper, we will present constructive proofs of Dickson's lemma and Hilbert's basis theorem which enables an integrated development of the Buchberger algorithm.1 These proofs proceeds by structural induction, hence the algorithms we obtain could be regarded as structural recursive. However, the proofs use generalised inductive de nitions, which intuitively means that the algorithms proceeds by structural recursion over countably branching trees.

2 An Integrated Development of Buchberger's Algorithm In this section, we describe the crucial parts in an integrated development of Buchberger's algorithm. Related work include Thery's [The97] external development in Coq, and Jacobsson and Lofwall's [JL91] development of a constructive proof of Hilbert's basis theorem and the correctness of Buchberger's algorithm for rings. We recall the basic de nitions which can be found in textbooks like [BW93, CLO97, Fro97].

De nition 2.1 A set of non{zero polynomials G = fg ; : : : ; gn g is a Grobner basis (for the 1

ideal they generate), if 0 6= f 2 Idl (G) ) 9gi 2 G: mdeg(gi )  mdeg(f ); where Idl (G) is the ideal generated by G, and mdeg(f ) is the leading monomial of f for a certain total order.

De nition 2.2 Given two polynomials f and g, their spolynomial, spol(f; g), is de ned as spol(f; g) = X  f ? X  g; hd f hd g

where hd f is the leading term of f , and is the least common multiple of mdeg(f ) and mdeg(g). One novelty with these proofs is that they have been extracted from classical proofs using the techniques of [Coq92] based on open induction [Rao88]. 1

2

Lemma 2.3 G = fg ; : : : ; gt g is a Grobner basis if REM (spol(gi ; gi ); G) = 0 for all i, where 1

+1

REM (f ; g1 ; : : : ; gt ) is the remainder of f after generalised division by polynomials g1 ; : : : ; gt . The proof of this lemma, as given [BW93, CLO97, Fro97], is constructive and should be directly translatable into type theory.

2.1 A Constructive Proof of Dickson's Lemma

In this subsection, we present a constructive proof of Dickson's lemma. The proof is translated into type theory, using the techniques in [Coq92] which are based on Raoult's open induction principle [Rao88]. Dickson's lemma says that for any in nite series of n-tuples of natural numbers u1 ; u2 ; : : :, there exists i < j such that ui n uj , where a1 ; : : : ; an n b1 ; : : : ; bn = 80 < i  n: ai  bi. Classically, a relation is called a wellquasi-relation (wqr) if it satis es the condition above. Remark 2.1 The proofs in this section only require < to be a decidable relation which is well{founded on an underlying set A, with a  b de ned as :(b < a). However, we will only instantiate the theorems for < being the less-than relation on N . We want to express in type theory, extended with inductive de nitions, what it means for a relation R over a set B to be a wqr. To this end, we de ne GoodR (b0 ; : : : ; bm ) to be 9i < j  m: bi R bj . We use an inductive de nition of bar [ML68] to express that for any in nite sequence b0 ; b1 ; : : :, GoodR () will eventually hold for an initial segment  of b0 ; b1 ; : : :.

De nition 2.4 Given a predicate R on a set B , we de ne inductively when the predicate GoodR bars , written Good R j : 8b: Good R j ; b GoodR () Good R j  Good R j  This is a generalised inductive de nition [Acz77], which comes with the following trans nite induction principle: Good R j  (8: GoodR () ) P ()) (8: (8b: Good R j ; b) ) (8b: P (; b)) ) P ()) P () Classically, assuming the axiom of dependent choices, Good R j [ ] is provable i R satis es the classical de nition of wqr. This justi es us to de ne R to be a wqr i Good R j [ ] is provable.

Lemma 2.5 If Good R j  , then Good R j  .

Proof. Immediate by induction on the proof of Good R j  . Given two relations R and S over sets B and C respectively, we de ne the product relation, R  S , over B  C as ab (R  S ) a0 b0 = a R a0 & b S b0 . Following [Coq92], we de ne a predicate M (), expressing that an initial sequence  of pairs in A  B is minimal w.r.t. ; M (; xu) = M () & 8b: y < x ) 8b: Good  R j ; yb: We can now express Raoult's open induction principle using inductive de nitions:

3

Theorem 2.6 (Open Induction) For any nite sequence  of pairs in A  B , if M () and 8ab: M (; ab) ) Good  R j ; ab, then Good  R j . Proof. Assume  to be a nite sequence such that M () and 8ab: M (; ab) ) Good  R j ; ab. We prove 8x: 8b: Good   R j ; xb by induction on x: Assume 8y: y < x ) 8b: Good   R j ; yb. From this we directly obtain M (; xb), and by H , Good   R j ; xb. Now, Dickson's lemma follows from:

Lemma 2.7 If Good R j b ; : : : ; bm holds, then 8x ; : : : ; xm : M (x b ; : : : ; xm bm) ) Good   R j x b ; : : : ; xm bm: Proof. By induction on the proof of Good R j b ; : : : ; bm : GoodR (b ; : : : ; bm ): Then there exists a i < j  m such that bi R bj . Now, by cases on the decidable xj ), that means xi  xj so xi bi (  R) xj bj 1

1

1 1

1 1

1

1

holds by de nition, hence Good  R (x1 b1 ; : : : ; xm bm ). Otherwise, xi > xj , and since M (x1 b1 ; : : : ; xm bm ), we have Good   R j x1 b1 ; : : : ; xi?1 bi?1 ; xj bj , and using lemma 2.5, Good   R j x1 b1 ; : : : ; xm bm .

8b: Good R j (b ; : : : ; bm ; b): By IH, we get that for all b and x, if M (x b ; : : : ; xm bm ; xb), then Good   R j x b ; : : : ; xm bm ; xb. By theorem 2.6, Good   R j x b ; : : : ; xm bm follows. 1

1 1

1 1

1 1

Corollary 2.8 (Dickson's lemma) For all n 2 N , Good n j [ ]. Proof. By induction on n, using lemma 2.7 and the fact that M ([ ]) always holds, and the trivial relation om the singleton set is a wqr.

2.2 Constructive Existence of Grobner Bases Dickson's lemma implies the existence of Grobner bases for any nitely generated (f.g) ideal:

Theorem 2.9 Every f.g ideal F = ff ; : : : ; fng has a Grobner basis G. 1

Proof. We prove this using Dickson's lemma. Assume mdeg(fi ) = i . Let Bad ( 1 ; : : : ; n ) mean i 6 aj for all i < j . We can assume that Bad ( 1 ; : : : ; n ) holds; otherwise if i  j for i < j , we repeatedly reduce F by dividing fj by fi . The result follows from Dickson's lemma and the following lemma: Good  j mdeg(g1 ); : : : ; mdeg(gk ) ) Bad (mdeg(g1 ); : : : ; mdeg(gk )) ) 9G: G is a Grobner basis for F;

where gi = fi for i  n, and gi+1 is a non{zero REM (spol(gj ?1 ; gj ); g1 ; : : : ; gi ) for the least (say) 1 < j  i if n  i. We prove this lemma by induction on the proof of Good  j mdeg(g1 ); : : : ; mdeg(gk ): Good (mdeg(g1 ); : : : ; mdeg(gk )): This contradicts with Bad (mdeg(g1 ); : : : ; mdeg(gk )).

4

8m: Good  j mdeg(g ); : : : ; mdeg(gk ); m: Compute the REM (spol(gi ; gi ); g ; : : : ; gk ) for i < k. If all are zero, fg ; : : : ; gk g is a Grobner basis by lemma 2.3. Otherwise, 0 6= gk = REM (spol(gi ; gi ); g ; : : : ; gk ) for the least such i. Then mdeg(gl ) 6 mdeg(gk ) for all l  k, so if Bad (mdeg(g ); : : : ; mdeg(gk )), then Bad (mdeg(g ); : : : ; mdeg(gk ); mdeg(gk )). 1

+1

1

1

+1

+1

1

+1

1

1

Hence, by IH, we have a Grobner basis for F .

+1

From the proof it is clear that there is a freedom when choosing the order in which to compute the spols.

2.3 A Constructive Proof of Hilbert's Basis Theorem

In this subsection, we translate a very short classical proof of HBT from [BW93] into type theory. Again this is done using the open induction techniques in [Coq92]. Quite surprisingly, contrary to the constructive proofs of HBT previously known to us [Ric74, MRR88, JL91], the proof extracted does not require decidability of R or its ideals. We want to express in type theory, extended with inductive de nitions, the notion of noetherian rings. To this end, we de ne Good R (a0 ; : : : ; am ) to be 9k  m: ak 2 Idl (a0 ; : : : ; ak?1 ). Similar to the constructive de nition of wqr, the inductive de nition of bar gives a good constructive de nition of noetherian. Classically, assuming the axiom of dependent choices, Good R j [ ] is provable i there for any in nite sequence a0 ; a1 ; : : : in R, exists an initial segment  of a0 ; a1 ; : : : such that Good R () holds. This justi es us to de ne a ring R to be noetherian i Good R j [ ] is provable. The proof of HBT uses some simple properties of bar:

Lemma 2.10 If Good R j a ; : : : ; ak ; , then Good R j a ; : : : ; ak + Pki ? ri ai; . Proof. By induction on the proof of Good R j a ; : : : ; ak ; : If Good R (a ; : : : ; ak ; ), then it is P k ? direct since i ri ai is in Idl (a ; : : : ; ak? ). Otherwise, 8a: Good R j (a ; : : : ; ak ; ; a), and 0

1 =0

0

0

the result follows by IH.

0

1 =0 0

0

1

Lemma 2.11 If Good R j  , then Good R j  .

Proof. Immediate by induction on the proof of Good R j  .

Following [Coq92], we de ne a predicate M (), expressing that the initial sequence of polynomials  is minimal, by recursion on : M ([ ]) = > M (; f ) = M () & 8g: deg g < deg f ) Good R j ; g

where deg (am X m + am?1 X m?1 +    + a0 ) = m. Remark 2.2 We will represent a polynomial by a list of, not necessarily non{zero, coecients am ; am?1 ; : : : ; a0 2 R. Then the notion of degree, deg, becomes the length of such a list minus one. This is di erent from the ordinary notion of degree, which denotes the exponent for the greatest non{zero coecient. With this representation, our proof of HBT below does not require decidability of R or its ideals. We can now express Raoult's open induction principle using inductive de nitions:

5

Theorem 2.12 (Open Induction) For any sequence  of polynomials in R[X ], if M () and 8f: M (; f ) ) Good R j ; f , then Good R j . Proof. Assume  such that M () and 8f: M (; f ) ) Good R j ; f . We prove 8f: Good R j ; f by induction on the degree of f : Assume 8g: deg g < deg f ) Good R j ; g. From this we directly obtain M (; f ), and by hypothesis, Good R j ; f .

Now, Hilbert's Basis Theorem follows immediately from:

Lemma 2.13 If a ; : : : ; am , for which Good R j (a ; : : : ; am ) holds, are head coecients of the non{zero polynomials f ; : : : ; fm respectively, then M (f ; : : : ; fm ) ) Good R X j f ; : : : ; fm : 0

0

0

0

[

]

0

Proof. By induction on the proof of Good R j a0 ; : : : ; am : Good R (a0 ; : : : ; am ): Then there exists a k  m such that ak 2 Idl (a0 ; : : : ; ak?1 ), hence ak = r0 a0 +    + rk?1 ak?1 for r0 ; : : : ; rk?1 2 R. Now, it is decidable whether there exists 0  i < j  k such that deg fi > deg fj . In that case, since we have M (f0 ; : : : ; fi ), we obtain Good R[X ] j f0 ; : : : ; fi?1 ; fj and using lemma 2.11 twice, we obtain Good R[X ] j f0 ; : : : ; fi?1 ; fi ; : : : ; fj ; : : : ; fm . In the other case, deg f0      deg fk , we construct

f  = fk ?

k? X X 1

deg

i=0

fk ?deg fi ri fi :

Since deg f  < deg fk and M (f0 ; : : : ; fk ), we have Good R[X ] j f0 ; : : : ; fk?1 ; f  and by lemma 2.10, Good R[X ] j f0 ; : : : ; fk?1 ; fk , hence by lemma 2.11, Good R[X ] j f0 ; : : : ; fm .

8a: Good R j (a ; : : : ; am ; a): By IH, we get that for all a and for all non{zero polynomials f with head coecient a, M (f ; : : : ; fm ; f ) ) Good R X j f ; : : : ; fm ; f . This also holds if f is the zero polynomial, so by theorem 2.12, Good R X j f ; : : : ; fm . 0

0

[

0

]

[

]

0

Corollary 2.14 (Hilbert's Basis Theorem) Good R j [ ] implies Good R X1;:::;Xm j [ ]. [

]

Proof. Immediate by induction on m, using the fact that R[X ] is a ring if R is. Remark 2.3 The proof does not require decidability of R or its ideals, and it uses only generalised inductive de nitions of level one (the inductive de nition of bar ). Note also that a direct proof of \R noetherian implies R[X1 ; : : : ; Xm ] noetherian" is possible, which does not use induction over m: replace the use of degree deg, with multi{degree mdeg. However that proof requires a well{founded and decidable relation on N n .

2.4 Grobner Bases for Noetherian Rings Hilbert's basis theorem implies the existence of Grobner bases for noetherian and coherent rings [JL91]. 6

3 Some Constructive Interpretations of Commutative Algebra Zorn's lemma is often used in algebra, for example in the proof of existence of prime ideals in ring theory. In the reference [Coq96], it is argued that many such use of the Axiom of Choice and the excluded middle could be avoided by using constructive models based on pointfree topology. This is exempli ed here; in particular we want to show how to interpret the existence of maximal ideals, prime ideals and valuation rings. We study these interpretations on concrete examples such as a proof that certain elements in a ring is nilpotent, and Dedekind's Prague theorem concerning integral closures.

3.1 Existence of Prime Ideals

Let R be a commutative ring with a unit 1. Recall that a proper ideal I  R is a prime ideal if ab 2 I implies a 2 I or b 2 I . A fundamental existence theorem in commutative algebra is

Proposition 3.1 (Existence of Prime Ideals) Let M be a subset of R containing 1 and closed under multiplication, and I an ideal of R such that I \ M = ;. Then there exists a prime ideal P such that I  P and M \ P = ;. The proof of this proposition relies on Zorn's lemma, which does not have a constructive interpretation. However, the proposition is often used to claim the existence of algebraic identities, often using the following corollary:

Corollary 3.2 Let M be a subset of R containing 1 and closed under multiplication, and I an ideal of R such that M \ I = ;. Then the radical of I, rad(I ), de ned as rad(I ) = f a 2 R j man 2 I; n 2 N ; m 2 M g; is equal to the intersection of all prime ideals P such that I  P and M \ P = ;. For example, to prove the existence of an n such that an = 0, it is enough to prove that a is in every prime ideal of the ring. As a concrete application, we have the following exercise [AM69]:

Theorem 3.3 If f = am X m + am? X m? +    + a 2 R[X ] has an inverse g = bnX n + bn? Xn? +    + b , then all am ; : : : a are nilpotent. 1

1

1

1

0

0

1

This is a rather concrete statement with an abstract proof using Zorn's lemma. We would like to interpret this proof constructively so that one for any such a could compute a k and a derivation of ak = 0. This is in the spirit of Hilbert's program; Zorn's lemma can be seen as an ideal element which simpli es reasoning, but can be eliminated in any concrete application.

3.1.1 Constructive Existence of Prime Ideals

The non{constructive argument we need to interpret is \if it is contradictory to assume x is not in a prime ideal P , then x is nilpotent". This is usually how proposition 3.1 and corollary 3.2 is used in concrete applications such as theorem 3.3. We want to capture a statement  (x), denoting \x is not in a prime ideal P ". Given an intuitionistic theory of rings, `, the following propositional theory axiomatise  , when P is a prime ideal containing I and disjoint to M : 7

1. `  (x), if x 2 M , 2.  (x) ` ?, if x 2 I , 3.  (xy) `  (x), 4.  (x + y) `  (x) _  (y), 5.  (x) &  (y) `  (xy). Let ` denote ` extended with these axioms. To make constructive sense of the proofs which uses the existence of prime ideals, one should prove that ` : (x) implies ` 9n: xn = 0. We obtain a constructive proof of this by using a constructive model of ` . This model is based on phase semantics and formal topology and uses a non-standard notion of truth. We have formalised the model and theorem 3.3 in type theory using Half. In the simplest case, the theorem claims that if

ab2 = 0 ab1 + b2 = 0 a + b1 = 0

(1) (2) (3)

holds, then a is nilpotent. By normalising the constructive proof of this one gets a derivation = a3 . This is a concrete example of how one can eliminate Zorn's lemma. = a2 b1 (3) 0 (1) = ab2 (2)

3.2 Maximal Ideals

Recall that a proper ideal I  R is maximal if for any ideal J such that I  J , we have x 2 I or 1 2 J for all x 2 J . The classical existence proof of prime ideals works as well for establishing the existence of maximal ideals. To interpret proofs which uses the existence of maximal ideals, we axiomatise the statement M (x), \x is in a maximal ideal containing an ideal I ": 1. M (x), if x 2 I , 2. M (1) ` ?, 3. M (x) ` M (xy), 4. M (x); M (y) ` M (x + y), 5. ` M (x) _ 9y: M (xy ? 1). We have a non-standard model such that j= :M (x) implies that I [ fxg generates R.

3.3 Valuation Rings

We are currently working with constructive interpretations of the existence of valuation rings. Rather than axiomatising valuation rings, we axiomatise the notion of valuation order, from which valuation rings can be de ned [AM69]. We belive this is a good intuitionistic axiomatisation of valuation orders: 1. a > b; b > a ` ?, 8

2. a > c ` a > b _ b > c, 3. a > b; a > c ` a > b + c, 4. a > b ` a > ?b, 5. a > u; b > c ` ab > ac. We also belive we have a suitable non-standard model of this theory. As a concrete application, we hope to interpret a classical proof of Dedekind's Prague theorem:

Theorem 3.4 Given a ; : : : ; am ; b ; : : : ; bn in a ring, and c ; : : : cm n de ned as 0

0

ci =

X ab:

j +k=i

0

+

j k

Then each aj bk is in the integral closure of c0 ; : : : ; cm+n .

References [Acz77]

P. Aczel. An Introduction to Inductive De nitions. In J. Barwise, editor, Handbook of Mathematical Logic, pages 739{782. North-Holland Publishing Company, 1977. [AGNvS94] Th. Altenkirch, V. Gaspes, B. Nordstrom, and B. von Sydow. A User's Guide to ALF. Chalmers University of Technology, Sweden, May 1994. [AM69] M. F. Atiyah and I. G. MacDonald. Introduction to Commutative Algebra. Addison-Wesley, 1969. [Aug98] L. Augustsson. Cayenne - a language with dependent types. Technical report, Department of Computing Science, Chalmers University of Technology, 1998. Homepage: http://www.cs.chalmers.se/~ augustss/cayenne/. [BW93]

T. Becker and V. Weispfenning. Grobner bases, volume 141 of Graduate Texts in Mathematics. Springer-Verlag, New York, 1993. A computational approach to commutative algebra, In cooperation with H. Kredel.

[CLO97]

D. Cox, J. Little, and D. O'Shea. Ideals, varieties, and algorithms. Undergraduate Texts in Mathematics. Springer-Verlag, New York, second edition, 1997. An introduction to computational algebraic geometry and commutative algebra.

[Coq92]

Th. Coquand. Constructive topology and combinatorics. In proceeding of the conference Constructivity in Computer Science, San Antonio, LNCS 613, pages 28{32, 1992.

[Coq96]

Th. Coquand. Computational content of classical logic. In A. M. Pitts and P. Dybjer, editors, Semantics and Logics of Computation. Cambridge University Press, 1996. 9

[DFH+ 91] G. Dowek, A. Felty, H. Herbelin, H. Huet, G. P. Murthy, C. Parent, C. PaulinMohring, and B. Werner. The coq proof assistant user's guide version 5.6. Technical report, Rapport Technique 134, INRIA, December 1991. [Dyb90] P. Dybjer. Comparing integrated and external logics of functional programs. Science of Computer Programming, 14:59{79, 1990. [Fro97] R. Froberg. An introduction to Grobner bases. John Wiley & Sons, 1997. [JL91] C. Jacobsson and C. Lofwall. Standard bases for general coecient rings and a new constructive proof of Hilbert's basis theorem. J. Symbolic Comput., 12(3):337{371, 1991. [ML68] P. Martin-Lof. Notes on Constructive Mathematics. Almqvist & Wiksell, 1968. [ML82] P. Martin-Lof. Constructive Mathematics and Computer Programming. In Logic, Methodology and Philosophy of Science, VI, 1979, pages 153{175. North-Holland, 1982. [MRR88] R. Mines, F. Richman, and W. Ruitenburg. A course in constructive algebra. Universitext. Springer-Verlag, New York, 1988. [NPS90] B. Nordstrom, K. Petersson, and J. M. Smith. Programming in Martin-Lof's Type Theory. An Introduction. Oxford University Press, 1990. [Pot96] Loc Pottier. Dixon's lemma. Available at ftp://www.inria.fr/sa r/pottier/MON, 1996. [Rao88] J-C. Raoult. Proving open properties by induction. Information processing letters, 29:19{23, 1988. [Ric74] F. Richman. Constructive aspects of noetherian rings. In Proc. AMS 44, pages 436{441, 1974. [The97] L. Thery. Proving and computing: A certi ed version of the Buchberger's algorithm. Technical Report 3275, INRIA, October 1997.

10