Parallel Processing Letters c World Scientific Publishing Company UNIMODULARITY AND THE PARALLELIZATION OF LOOPS ? MICHAEL BARNETT Laboratory for Applied Logic Department of Computer Science University of Idaho Moscow , Idaho 83843 , U.S.A. and CHRISTIAN LENGAUER Fakult?at f?ur Mathematik und Informatik Universit?at Passau D -LCB- W8390 Passau , Germany Received Revised Accepted by ABSTRACT The parallelization of loops can be made formal by basing it on an algebraic theory of loop transformations . In this theory , the concept of unimodularity arises . We discuss the pros and cons of insisting on unimodularity . 1 . Introduction In the parallelization of loops , one starts with a source program , SP , that does not specify parallelism and produces a target program , TP , that does specify parallelism . For our purposes , the source program is a set of , say , r perfectly nested loops ; it is represented by a set , IS , of integer points that is a convex polyhedral subset of the cartesian space Rr . IS is called the index space or iteration space . Each loop must have a unit stride . -LRB- A unit value is either +1 or ? 1 . -RRB- Thus , each integervalued point in the iteration space corresponds to one iteration . Target programs are represented by another subset of Rr , the target space , TS . We refer to the points in the spaces and the operations in the respective programs interchangably . ? Earlier and expanded version presented at the 20 ? eme Ecole de Printemps du LITP \ Algorithmique Parall?ele '' -LSB- 6 -RSB- . The derivation of TP rests on the discovery of two functions : T : : IS ?! TS This space-time transformation must , under preservation of the dependences of SP , provide a distribution of its operations in time and space | preferably such that at least some dimensions of TS can be represented by parallel rather than sequential loops . T should be invertible . Otherwise , two operations may be mapped to the same place and the same time , which contradicts the premiss that the multiprocessor array consists of sequential processors -LRB- from the programmer 's point of view -RRB- . CG : : -LRB- SP ; T -RRB- 7 ?! TP This code generator takes a source program and a spacetime transformation of it and produces a distributed program . Most work in both areas has focused on T : how to derive a space-time transformation that has certain properties such as minimizing the extent of the temporal dimension -LRB- s -RRB- of TS , or the extent of the spatial dimension -LRB- s -RRB- of TS , or maximizing throughput , or a combination of these . Instead , we concentrate on CG and on the way in which the unimodularity or non-unimodularity of T affects it . An explicit representation of TP must provide -LRB- 1 -RRB- a spatial enumeration of the processes and a temporal enumeration of the operations of each process and -LRB- 2 -RRB- in order to obtain the correct data references as specified in the source program , for each point in TS , the inverse image under T . We require that TP be defined by a set of loops . For spatial composition we use the operator par , temporal composition is denoted by seq. . Both may be used in an indexed form that allows enumeration . Communications are indicated by send and recv . 2 . Unimodular Transformations A transformation is unimodular if and only if -LRB- 1 -RRB- it is invertible , -LRB- 2 -RRB- it maps integer points to integer points , and -LRB- 3 -RRB- its inverse maps integer points to integer points . An integer matrix is unimodular if and only if it has a unit determinant . Thus , a unimodular transformation T and its inverse T ? 1 are both matrices in Zr?r . The benefit of a unimodular transformation is that it preserves convexity . Thus , if IS is convex so is TS . Then the target program can simply enumerate every integer-valued point within the convex hull of the target space and , for each point , execute the operation defined by applying T ? 1 to it . Non-unimodular transformations can be thought of as creating \ holes '' in the target space : integer points in the convex hull of TS that are not in the range of T . Is it easy to obtain unimodular transformations ? The basic transformations applied by parallelizing compilers correspond to elementary matrices that are unimodular -LSB- 3 -RSB- . Moreover , the composition of the transformations corresponds to the - 6 i j n n Fig. 1 . The index space for the example . matrix product | which preserves unimodularity . When using unimodular transformations it suffices to coerce non-integer points derived in the target space to the closest interior integer points -LRB- using the functions floor or ceiling -RRB- , since all integer-valued points inside the space boundaries are \ good '' points . Dowling -LSB- 9 -RSB- and Irigoin -LSB- 11 -RSB- present algorithms for deriving a unimodular transformation from a vector representing the wavefront direction -LRB- for programs that are amenable to wavefronting -RRB- . Ribas -LSB- 15 -RSB- uses only unimodular transformations , taking the position that unimodular transformations are sufficient for the actual programs one encounters . Le Verge , Mauras and Quinton -LSB- 12 -RSB- require unimodularity . For a non-unimodular transformation , they define a unimodular extension on a target space with one added dimension . An Example The following program multiplies the coefficients of two polynomials a and b , both of degree n , and produces a polynomial c of degree 2n , provided c is initially everywhere zero . for i = 1 ! n for j = 1 ! n c -LSB- i + j -RSB- : = c -LSB- i + j -RSB- + a -LSB- i -RSB- b -LSB- j -RSB- Figure 1 depicts the index space IS of the program . One valid transformation and its inverse are : T = < = 2 1 1 1 > = T ? 1 = < = 1 ? 1 ? 1 2 > = T skews the inner loop and then wavefronts both loops . It is unimodular and has the determinant +1 . This transformation produces the target space depicted in Figure 2 . The horizontal axis , with coordinate t -LRB- for time -RRB- , can be implemented - 6 t p n 2n 3n n 2n Fig. 2 . The target space produced by a unimodular transformation . The thick lines represent the loop bounds of the target program . by a sequential loop . The vertical axis , with coordinate p -LRB- for process -RRB- , can be implemented by a parallel loop | a DOALL loop if it is the inner loop -LSB- 17 -RSB- . Which one is the outer loop , and which the inner , depends on whether the program is implemented with synchronous or asynchronous parallelism . The target program is executed by enumerating the points in TS and , for each point , applying a modified operation . The point -LRB- t ; p -RRB- in the target space corresponds to the point -LRB- i ; j -RRB- = T ? 1 -LRB- t ; p -RRB- = -LRB- t ? p ; 2p ? t -RRB- in the index space . In the target program , variables must be indexed in terms of target space coordinates ; for example , c -LSB- i + j -RSB- becomes c -LSB- -LRB- t ? p -RRB- + -LRB- 2p ? t -RRB- -RSB- = c -LSB- p -RSB- . The target program is : seq t = 1 ! 3n par p = max -LRB- dt = 2e ; t ? n -RRB- 1 ! min -LRB- t ; b -LRB- t + n -RRB- = 2c -RRB- c -LSB- p -RSB- : = c -LSB- p -RSB- + a -LSB- t ? p -RSB- b -LSB- 2p ? t -RSB- To preserve the dependences of the source program , a barrier synchronization -LSB- 17 -RSB- between iterations of the outer loop is required : all processes p of one seq iteration must terminate before the next seq iteration can begin . That is , the seq loop imposes synchrony on the par loop . As written above , the target program implicitly assumes the use of a sharedmemory multiprocessor . Execution on a distributed memory machine requires the insertion of communication directives for the exchange of non-local data between processors . -LRB- On an asynchronous distributed architecture , one can save the overhead of the barrier synchronization by making the seq loop the inner loop ; then the data dependences are imposed by the data communications per se . -RRB- There are several methods for the derivation of the loop bounds in the target program : Wolf and Lam -LSB- 16 -RSB- , Irigoin -LSB- 11 -RSB- , Feautrier -LSB- 10 -RSB- , and Ancourt -LSB- 2 -RSB- all give general algorithms . Ribas -LSB- 15 -RSB- uses an algorithm that covers simple cases -LRB- linear loop bounds -RRB- and decomposes the target space when necessary . - 6 t p n 2n 3n -LCB- n n Fig. 3 The target space produced by a non-unimodular transformation . - 6 t p n 2n 3n -LCB- n n Fig. 4 The convex hull of the target space . - 6 t p n 2n 3n -LCB- n n Fig. 5 The precise boundaries of the target space . 3 . Non-Unimodular Transformations Any approach that permits non-unimodular transformations must ensure that only the \ good '' points | those in TS | are executed ; integer points that do not correspond to iterations of the source program must not be executed . Perhaps the simplest solution is to enumerate every integer point in a superset of TS | the convex hull is particularly simple | and then to test at run time which points T ? 1 maps to IS . With this strategy , one can use the same methods as for the unimodular case . This is the approach of Lu and Chen -LSB- 14 -RSB- . They do not make clear how inefficient this method is or what the complexity of the tests must be . -LRB- In their examples , they hand-optimize tests to simple inequalities . -RRB- Yang and Choo -LSB- 18 -RSB- also disregard unimodularity but express the boundaries of the target space as linear equations instead of loop bounds . A transformation of the linear equations to loop bounds is possible but non-trivial -LSB- 10 , 11 -RSB- . The question is whether it is possible to move -LRB- at least some of -RRB- the computation involved in determining \ goodness '' from run time to compile time . A related question is what amount of run-time overhead such compilation methods induce . In our own work , we enumerate the points in TS precisely -LSB- 4 , 5 -RSB- . We consider time and space separately | which avoids the issue of unimodularity altogether | and define the target program piecewise using a notation of tuple-valued loop indices -LRB- called \ repeaters '' -RRB- . By using piecewise loop bounds and non-unit strides in the target programs , we avoid the imprecise bounds of Wolf and Lam -LSB- 16 -RSB- and the holes of Le Verge , Mauras and Quinton -LSB- 12 -RSB- . The Example Revisited For the example , one valid non-unimodular transformation and its inverse are : T = < = 2 1 1 ? 1 > = T ? 1 = < = 1 = 3 1 = 3 1 = 3 ? 2 = 3 > = The determinant of T is ? 3 , the target space is depicted in Figure 3 . Note that it is not dense in the integers : points in TS are separated by integer points not in TS . We illustrate first the simple approach . Figure 4 depicts the convex hull of TS . The synchronous program with a guard that establishes \ goodness '' is : seq t = 1 ! 3n par p = max -LRB- ? t ; d -LRB- t ? 3n -RRB- = 2e -RRB- 1 ! min -LRB- bt = 2c ; 3n ? t -RRB- if T ? 1 -LRB- t ; p -RRB- 2 IS ! c -LSB- -LRB- 2t ? p -RRB- = 3 -RSB- : = c -LSB- -LRB- 2t ? p -RRB- = 3 -RSB- + a -LSB- -LRB- t + p -RRB- = 3 -RSB- b -LSB- -LRB- t ? 2p -RRB- = 3 -RSB- -LSB- -RSB- T ? 1 -LRB- t ; p -RRB- 62 IS ! skip The guard T ? 1 -LRB- t ; p -RRB- 2 IS may be simplified , but it is not clear how much of the simplification can be mechanized . Following the second approach , Figure 5 shows the precise bounds of the target space . A synchronous program that specifies these bounds and uses non-unit strides to omit the points that do not correspond to iterations in the source program is : seq t = 1 ! 3n lb ; rb : = f : t , g : t par p = lb 3 ! rb c -LSB- -LRB- 2t ? p -RRB- = 3 -RSB- : = c -LSB- -LRB- 2t ? p -RRB- = 3 -RSB- + a -LSB- -LRB- t + p -RRB- = 3 -RSB- b -LSB- -LRB- t ? 2p -RRB- = 3 -RSB- where f : t = if < = t < = n ! ? t -LSB- -RSB- n < = t < = 3n ^ 2 j -LRB- t ? 3n -RRB- ! -LRB- t ? 3n -RRB- = 2 -LSB- -RSB- n < = t < = 3n ^ 2 6 j -LRB- t ? 3n -RRB- ! -LRB- t ? 3n + 3 -RRB- = 2 and g is a similar piecewise linear function . Recalculating the number of active processes on each sequential iteration may be inefficient , in general . Consider , however , an asynchronous program | one defined by indexing the inner instead of the outer loop by t . In the absence of a synchronous loop enforcing the data dependences , the data communication constrains the order of execution , as explained before . Each process begins by calculating the loop bounds for its sequential loop . Given asynchronous processes that are static and do not contain nested loops -LRB- which is the case for full-dimensional systolic arrays -RRB- , the overhead incurred by this calculation should be negligible . This is our approach . Our asynchronous target program is : par p = ? n 1 ! n lb ; rb : = f :p , g :p seq t = lb 3 ! rb recv a -LSB- -LRB- t + p -RRB- = 3 -RSB- from p + 1 recv b -LSB- -LRB- t ? 2p -RRB- = 3 -RSB- from p ? 1 recv c -LSB- -LRB- 2t ? p -RRB- = 3 -RSB- from p ? 2 c -LSB- -LRB- 2t ? p -RRB- = 3 -RSB- : = c -LSB- -LRB- 2t ? p -RRB- = 3 -RSB- + a -LSB- -LRB- t + p -RRB- = 3 -RSB- b -LSB- -LRB- t ? 2p -RRB- = 3 -RSB- send a -LSB- -LRB- t + p -RRB- = 3 -RSB- to p ? 1 send b -LSB- -LRB- t ? 2p -RRB- = 3 -RSB- to p + 1 send c -LSB- -LRB- 2t ? p -RRB- = 3 -RSB- to p + 2 where f and g are similar as before . Our method generates these functions automatically but may create more processes than necessary : for simplicity , we use the rectangular closure of the dimensions of TS that are represented by parallel loops . An algorithm for more accurate par loop bounds could be used . When there is only one parallel loop , as in our example , our method creates no extra processes . 4 . Conclusions We conclude that , although unimodularity clearly simplifies the derivation of the target program , it is not essential . There certainly is enough information available at compile-time to make the alternative | testing for membership in TS at run time | unnecessary . An accurate description of a non-convex target space is also possible in the traditional setting where transformation T is not split into a time and a space component . Non-unit steps can be obtained by a change of basis and jagged boundaries can be accurately described by modifying the loop bounds appropriately -LSB- 7 -RSB- . -LRB- For a different treatment , see -LSB- 13 -RSB- . -RRB- Research intended for slightly different purposes -LRB- for example , -LSB- 1 -RSB- -RRB- may also be adaptable . Possibly , the \ folding '' proposed by Clauss , Mongenet , and Perrin -LSB- 8 -RSB- , could be used to make non-convex domains convex . The run-time testing involved in conditional bounds can be reduced if the target space is partitioned into the regions that are defined by the alternatives of the conditional , and each region is considered separately , yielding loops with linear bounds for each partition . Work on a theory of partitioned polyhedral domains of computation is under way in several places . Acknowledgements In addition to sending their papers , Corinne Ancourt , Paul Feautrier , Lee-Chung Lu , Hudson Ribas , Michael Wolf and Allan Yang explained their work in numerous e-mail discussions . Thanks to all of them . Thanks also to Jingling Xue for a careful reading . Financial support from the Science and Engineering Research Council of Britain -LRB- SERC -RRB- , grant no . GR/G55457 , is gratefully acknowledged . References 1 . C. Ancourt , Code generation for data movements in hierarchical memory machines , Int . Workshop on Compilers for Parallel Computers , Dec. 1990 , 91 -LCB- 102 . 2 . C. Ancourt and F. Irigoin , Scanning polyhedra with DO loops , Proc . Third ACM SIGPLAN Symp . on Principles & Practice of Parallel Programming -LRB- PPoPP -RRB- -LRB- ACM Press , Apr. 1991 -RRB- 39 -LCB- 50 . 3 . U. Banerjee , Dependence Analysis for Supercomputing , -LRB- Kluwer Academic Publishers , 1988 -RRB- . 4 . M. Barnett and C. Lengauer , The synthesis of systolic programs , Research Directions in High-Level Parallel Programming Languages , eds . J.-P . Ban ^ atre and D. Le M?etayer , LNCS 574 -LRB- Springer-Verlag , 1991 -RRB- 309 -LCB- 325 . 5 . M. Barnett , A systolizing compiler , Ph. D. Thesis , Department of Computer Sciences , The University of Texas at Austin , May 1992 . Technical Report TR-92 - 13 . 6 . M. Barnett and C. Lengauer , Loop parallelization and unimodularity , Algorithmique Parall?ele , eds . M. Cosnard , M. Nivat and Y. Robert , -LRB- Masson , 1992 -RRB- 369 -LCB- 379 . 7 . M. Barnett and C. Lengauer , Unimodularity considered non-essential -LRB- extended abstract -RRB- , CONPAR 92 -LCB- VAPP V , eds . L. Boug?e , M. Cosnard , Y. Robert and D. Trystram , LNCS 634 -LRB- Springer-Verlag , 1992 -RRB- 659 -LCB- 664 . 8 . P. Clauss , C. Mongenet , and G. R. Perrin , Calculus of space-optimal mappings of systolic algorithms on processor arrays , J. VLSI and Signal Processing , 4 -LRB- 1992 -RRB- 27 -LCB- 36 . 9 . M. L. Dowling , Optimal code parallelization using unimodular transformations , Parallel Computing , 16 -LRB- 1990 -RRB- 157 -LCB- 171 . 10 . P. Feautrier , Semantical analysis and mathematical programming Parallel & Distributed Algorithms , eds . M. Cosnard , Y. Robert , P. Quinton , and M. Raynal -LRB- North-Holland , 1989 -RRB- 309 -LCB- 320 . 11 . F. Irigoin , Code generation for the hyperplane method and for loop interchange , Technical Report ENSMP-CAI-88-E102 / CAI/I , Ecole Nationale Superieure des Mines de Paris , Oct. 1988 . 12 . H. Le Verge , C. Mauras , and P. Quinton , A language for the design of regular parallel algorithms , J. VLSI Signal Processing , 3 -LRB- 1991 -RRB- 173 -LCB- 182 . 13 . W. Li and K. Pingali , A singular loop transformation framework based on nonsingular matrices , Technical Report TR 92-1924 , Department of Computer Science , Cornell University , July 1992 . 14 . L.-C . Lu and M. Chen , New loop transformation techniques for massive parallelism , Technical Report YALEU/DCS/TR -833 , Department of Computer Science , Yale University , Oct. 1990 . 15 . H. B. Ribas , Automatic generation of systolic programs from nested loops , Ph. D. Thesis , Department of Computer Science , Carnegie-Mellon University , June 1990 . Technical Report CMU-CS-90-143 . 16 . M. Wolf and M. Lam , A loop transformation theory and an algorithm to maximize parallelism , IEEE Trans . on Parallel and Distributed Systems , 2 -LRB- 1991 -RRB- 452 -LCB- 471 . 17 . M. Wolfe , Multiprocessor synchronization for concurrent loops , IEEE Software , -LRB- 1/1988 -RRB- 34 -LCB- 42 . 18 . J. A. Yang and Y.-I . Choo , Parallel-program transformation using a metalanguage , Proc . Third ACM SIGPLAN Symp . on Principles & Practice of Parallel Programming -LRB- PPoPP -RRB- -LRB- ACM Press , 1991 -RRB- 11 -LCB- 20 .

O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

parallelizing compiler
space-time transformation
systolic array


D?partement de Math?matiques et Informatique ________________________ ________________________ UPERIEURESORMALENE COLE CNRS URA 1327 Degrees of Parallelism in the Continuous Type Hierachy Antonio BUCCIARELLI LIENS - 95 - 17 Degrees of Parallelism in the Continuous Type Hierachy Antonio BUCCIARELLI LIENS - 95 - 17 Mai 1995 Laboratoire d'Informatique de l'Ecole Normale Sup?erieure 45 rue d'Ulm 75230 PARIS Cedex 05 Tel : -LRB- 33 -RRB- -LRB- 1 -RRB- 44 32 00 00 Adresse ? electronique : . . @dmi . ens.fr Degrees of parallelism in the continuous type hierarchy Antonio Bucciarelli LIENS-DMI , Ecole Normale Sup?erieure , 45 rue d'Ulm , Paris , France buccia@dmi.ens.fr Abstract A degree of parallelism is an equivalence class of Scott-continuous functions which are relatively definable each other with respect to the language PCF -LRB- a paradigmatic sequential language -RRB- . We introduce an infinite -LRB- \ bi-dimensional '' -RRB- hierarchy of degrees . This hierarchy is inspired by a representation of first order continuous functions by means of a class of hypergraphs . We assume some familiarity with the language PCF and with its continuous model . 1 Introduction A natural notion of relative definability in the continuous type hierarchy is given by the following definition : Definition 1 Given two continuous functions f and g , we say that f is less parallel than g -LRB- f < = par g -RRB- if there exists a PCF-term M such that -LSB- jM j -RSB- g = f . A degree of parallelism is a class of the equivalence relation associated to the preorder < = par . In this paper we deal with degrees of parallelism of first order boolean functions , i.e. of functions which take tuples of booleans as arguments and give booleans as results . PCF-definability for first order functions is fully characterized by the notion of sequentiality -LRB- in any of its formulations -RRB- , and Sieber 's sequentiality relations -LRB- -LSB- 6 -RSB- -RRB- provide a characterization of first order degrees of parallelism . Moreover this characterization is effective : given f and g one can decide if f < = par g , and recently A. Stoughton -LRB- -LSB- 7 -RSB- -RRB- has implemented an algorithm which solves this decision problem . Nevertheless , as far as I know , there is little knowledge of the structure of the partial order < = par on first order boolean functions . A well known fact is that any continuous function -LRB- al -RRB- is less parallel than the \ parallel or '' function -LRB- the non-strict binary disjunction -RRB- -LRB- -LSB- 4 -RSB- -RRB- , and we also know a that any first order stable function is less parallel than the BerryPlotkin function -LRB- -LSB- 3 -RSB- , p. 334 -RRB- , but there is a lack of general results about the poset of degrees , whose structure turns out to be quite complicated , already at first order . Sazonov 's paper -LSB- 5 -RSB- may be considered as a first step toward a systematic study of the poset of degrees of parallelism . In this paper we give a geometric account of first order degrees of parallelism , by representing first order functions as hypergraphs which higlight the structure of linearly coherent1 subsets in the trace of the function . Then we introduce a hierarchy of functions ff -LRB- n ; m -RRB- gn < = m2 ! which has the property that f -LRB- n ; m -RRB- < = par f -LRB- n0 ; m0 -RRB- if and only if there exists a morphism from the hypergraph associated to f -LRB- n ; m -RRB- to the hypergraph asociated to f -LRB- n0 ; m0 -RRB- . Throughout the paper PCF terms will be written in uncurryed form -LRB- as n-ary functions -RRB- , and some \ macros '' like a syntactic ? and a sequential conjunction ^ wil be used . 2 Preliminaries We denote by B the flat domain of boolean values f ? ; true ; falseg . Tuples of boolean values are ordered componentwise . Given a continuous function f : Bn ! B , the trace of f is defined by tr -LRB- f -RRB- = f -LRB- v ; b -RRB- j v 2 Bn ; b 2 B ; b < > ? ; f -LRB- v -RRB- = b and 8v0 < v f -LRB- v0 -RRB- = ? g A continuous function f : Bn ! B is stable if for all v1 ; v2 2 ss1 -LRB- tr -LRB- f -RRB- -RRB- , v1 6 '' v2 . A subset A = fv1 ; : : : ; vkg of Bn is linearly coherent -LRB- or simply coherent -RRB- if for any linear function : Bn ! O2 , -LRB- V A -RRB- = V -LRB- A -RRB- , or equivalently if 8j 1 < = j < = n -LRB- 8l 1 < = l < = k vj l < > ? -RRB- 8l1 ; l2 1 < = l1 < = l2 < = k vj l1 = vj l2 -RRB- The set of coherent subsets of Bn is noted C -LRB- Bn -RRB- . fact 1 : If A 2 C -LRB- Bn -RRB- and B is an Egli-Milner lower bound of A3 , then B 2 C -LRB- Bn -RRB- . Definition 2 A continuous function f : Bn ! Bm is linearly strongly stable -LRB- or simply strongly stable -RRB- if for any A 2 C -LRB- Bn -RRB- 1in the sense of -LSB- 2 -RSB- 2O denotes the Sierpinsky domain f ? ; > g 3that is 8x 2 A9y 2 B y < = x and 8y 2 B9x 2 A y < = x ffl f -LRB- A -RRB- 2 C -LRB- Bm -RRB- . ffl f -LRB- V A -RRB- = V -LRB- f -LRB- A -RRB- -RRB- . The following proposition states that strong stability captures the notion of sequential definability , at least at first order . Proposition 1 Any strongly stable , first order function f : Bn ! B is PCF - definable . 2.1 Sequential Logical Relations Definition 3 -LRB- Sieber -RRB- For each n > = and each pair of sets A ? B ? f1 ; : : : ; ng let SA ; B n ? Bn be defined by SA ; B n -LRB- b1 ; : : : ; bn -RRB- , -LRB- 9i 2 A bi = ? -RRB- _ -LRB- 8i ; j 2 B bi = bj -RRB- An n-ary logical relation R is called a sequentiality relation if it is an intersection of relations of the form SA ; B n . A function f : Bn ! B is invariant with respect to the m-ary logical relation R if for any -LRB- x1 1 ; : : : ; xm 1 -RRB- 2 R ; -LRB- x1 2 ; : : : ; xm 2 -RRB- 2 R ; : : : ; -LRB- x1 n ; : : : ; xm n -RRB- 2 R one has that -LRB- f -LRB- x1 1 ; x1 2 ; : : : ; x1 n -RRB- ; f -LRB- x2 1 ; x2 2 ; : : : ; x2 n -RRB- ; : : : ; f -LRB- xm 1 ; xm 2 ; : : : ; xm n -RRB- -RRB- 2 R Proposition 2 For any f : Bn ! B and g : Bm ! B continuous functions , f < = par g if and only if for any sequentiality relation R , if g is invariant with respect to R then f is invariant too . fact 2 : A set A = f -LRB- x1 1 ; : : : ; xn 1 -RRB- ; : : : ; -LRB- x1 k ; : : : ; xn k -RRB- g ? Bn is linearly coherent if and only if 81 < = i < = n -LRB- xi 1 ; xi 2 ; : : : ; xi k -RRB- 2 Sf1 ; : : : ; kg ; f1 ; : : : ; kg k 3 Hypergraphs for boolean functions We consider a category whose objects are -LRB- colored -RRB- hypergraphs and whose morphisms are arcs-preserving and coloring-preserving maps : Definition 4 A colored hypergraph h = -LRB- Vh ; Ah ; Ch -RRB- is given by a set Vh of vertexes , a set Ah ? fA ? Vhj # A > = 2g of -LRB- hyper -RRB- arcs and a coloring function Ch : Vh ! fblack ; whiteg . A morphism from an hypergraph h to an hypergraph h0 is a function m : Vh ! Vh0 such that : ffl for all A ? Vh , if A 2 Ah then m -LRB- A -RRB- 2 Ah0 . ffl for all x ; x0 2 Vh , Ch -LRB- x -RRB- = Ch -LRB- x0 -RRB- if and only if Ch0 -LRB- m -LRB- x -RRB- -RRB- = Ch0 -LRB- m -LRB- x0 -RRB- -RRB- . Definition 5 Let f : Bn ! B be the n-ary function defined by tr -LRB- f -RRB- = f -LRB- v1 ; b1 -RRB- ; : : : ; -LRB- vk ; bk -RRB- g . The hypergraph H -LRB- f -RRB- is defined by ffl VH -LRB- f -RRB- = f1 ; 2 ; : : : ; kg . ffl AH -LRB- f -RRB- = ffi1 ; i2 ; : : : ; ilg ? VH -LRB- f -RRB- j l > = 2 and fvi1 ; vi2 ; : : : ; vilg 2 C -LRB- Bng -RRB- . ffl CH -LRB- f -RRB- -LRB- i -RRB- = if bi then white else black . example 1 : Consider the functions G : B3 ! B and Por : Bool2 ! B defined by tr -LRB- G -RRB- = f -LRB- -LRB- ? ; true ; false -RRB- ; true -RRB- ; -LRB- -LRB- false ; ? ; true -RRB- ; true -RRB- ; -LRB- -LRB- true ; false ; ? -RRB- ; false -RRB- g and tr -LRB- Por -RRB- = f -LRB- -LRB- ? ; true -RRB- ; true -RRB- ; -LRB- -LRB- true ; ? -RRB- ; true -RRB- ; -LRB- -LRB- false ; false -RRB- ; false -RRB- g We have : H -LRB- G -RRB- = -LRB- f1 ; 2 ; 3g ; ff1 ; 2 ; 3gg ; CH -LRB- G -RRB- -LRB- 1 -RRB- = CH -LRB- G -RRB- -LRB- 2 -RRB- = white ; CH -LRB- G -RRB- -LRB- 3 -RRB- = black -RRB- H -LRB- Por -RRB- = -LRB- f1 ; 2 ; 3g ; ff1 ; 2g ; f1 ; 2 ; 3gg ; CH -LRB- Por -RRB- -LRB- 1 -RRB- = CH -LRB- Por -RRB- -LRB- 2 -RRB- = white ; CH -LRB- Por -RRB- -LRB- 3 -RRB- = black -RRB- The map m : H -LRB- G -RRB- ! H -LRB- Por -RRB- defined by m -LRB- i -RRB- = i , for i = 1 ; 2 ; 3 , is a morphism . A term M such that -LSB- jM j -RSB- P or = G is M = > = f > = x1x2x3 f -LRB- t1 ; t2 -RRB- where t1 = if x1 then -LRB- if x2 then ? else false -RRB- else if x3 then true else ? t2 = if x2 then -LRB- if x3 then ? else true -RRB- else if x1 then false else ? example 2 : Let 3 ? Por : B3 ! B be defined by tr -LRB- 3 ? Por -RRB- = f -LRB- -LRB- true ; ? ; ? -RRB- ; true -RRB- ; -LRB- -LRB- ? ; true ; ? -RRB- ; true -RRB- ; -LRB- -LRB- ? ; ? ; true -RRB- ; true -RRB- g The associated hypergraph is : H -LRB- 3 ? Por -RRB- = -LRB- f1 ; 2 ; 3g ; ff1 ; 2g ; f1 ; 3g ; f2 ; 3g ; f1 ; 2 ; 3gg ; C -LRB- 1 -RRB- = C -LRB- 2 -RRB- = C -LRB- 3 -RRB- = white -RRB- It is easy to see that there exists no morphism m : H -LRB- 3 ? Por -RRB- ! H -LRB- Por -RRB- . Nevertheless 3 ? Por < = par Por , since for instance 3 ? Por = -LSB- jM j -RSB- P or where M = > = f > = x1x2x3 f -LRB- f -LRB- x1 ; x2 -RRB- ; x3 -RRB- In the rest of this section we list some simple properties relating hypergraphs and degrees of parallelism : fact 3 : Let f : Bn ! B be a continuous function : ffl f is stable if and only if H -LRB- f -RRB- has no 2-arc . ffl f is strongly stable if and only H -LRB- f -RRB- has no arc . Proposition 3 Let f : Bn ! B and g : Bm ! B be such that minf # A j A 2 AH -LRB- f -RRB- g < minf # A j A 2 AH -LRB- g -RRB- g : Then f 6 < = par g. Proof : Let k = minf # A j A 2 AH -LRB- f -RRB- g . We show that the logical relation Sf1 ; 2 ; : : : ; kg ; f1 ; 2 ; : : : ; k +1 g k +1 is such that g is invariant with respect to it , and f is not . ffl f is not invariant : let v1 = -LRB- x1 1 ; x2 1 ; : : : ; xn 1 -RRB- ... vk = -LRB- x1 k ; x2 k ; : : : ; xn k -RRB- be a coherent subset of ss1 -LRB- tr -LRB- f -RRB- -RRB- . For 1 < = ? < = n , let wj be the k +1 - tuple defined by : wj = -LRB- xj 1 ; xj 2 ; : : : ; xj k ; ^ 1 < = l < = k xj l -RRB- The coherence of fv1 ; : : : ; vkg entails that , for all 1 < = j < = n , wj 2 Sf1 ; 2 ; : : : ; kg ; f1 ; 2 ; : : : ; k +1 g k +1 . Appliyng -LRB- f ; : : : ; f | -LCB- z -RCB- k +1 -RRB- to -LRB- v1 ; : : : ; vk ; -LRB- ^ 1 < = l < = k x1 l ; : : : ; ^ 1 < = l < = k xn l -RRB- -RRB- we get -LRB- b1 ; : : : ; bk ; ? -RRB- 62 Sf1 ; 2 ; : : : ; kg ; f1 ; 2 ; : : : ; k +1 g k +1 , where bi = f -LRB- vi -RRB- , and we have done . ffl g is invariant : let us suppose , by reductio ad absurdum , that there exist k + 1 m-tuple u1 = -LRB- y1 1 ; : : : ; ym 1 -RRB- ... uk +1 = -LRB- y1 k +1 ; : : : ; ym k +1 -RRB- such that for all 1 < = j < = m , -LRB- yj 1 ; yj 2 ; : : : ; yj k +1 -RRB- 2 Sf1 ; 2 ; : : : ; kg ; f1 ; 2 ; : : : ; k +1 g k +1 and -LRB- g -LRB- u1 -RRB- ; : : : ; g -LRB- uk +1 -RRB- -RRB- 62 Sf1 ; 2 ; : : : ; kg ; f1 ; 2 ; : : : ; k +1 g k +1 This entails that U = fu1 ; : : : ; ukg is coherent , and that any element of U has a lower bound in ss1 -LRB- tr -LRB- g -RRB- -RRB- . Hence there exists an Egli-Milner lower bound A of U in ss1 -LRB- tr -LRB- g -RRB- -RRB- , and 1 < # A < = k4 , which is absurd . 4 # A > 1 since , if all the elements of U are upper bounds of an element v 2 ss1 -LRB- tr -LRB- g -RRB- -RRB- , then uk +1 > = v , and hence -LRB- g -LRB- u1 -RRB- ; : : : ; g -LRB- uk +1 -RRB- -RRB- 2 Sf1 ; 2 ; : : : ; kg ; f1 ; 2 ; : : : ; k +1 g k +1 4 A hierarchy of degrees Definition 6 Given two natural numbers m > = n > = 3 , let h -LRB- n ; m -RRB- be the hypergraph defined by : h -LRB- n ; m -RRB- = -LRB- f1 ; 2 ; : : : ; mg ; fA ? f1 ; 2 ; : : : ; mg j # A > = ng ; for all i C -LRB- i -RRB- = white -RRB- Given h -LRB- n ; m -RRB- and h -LRB- n0 ; m0 -RRB- , we are interested in determining the conditions under which there exists a morphism f : h -LRB- n ; m -RRB- ! h -LRB- n0 ; m0 -RRB- . Since the h -LRB- i ; j -RRB- 's are mono-colored , the only condition to be satified for a function f : f1 ; : : : ; mg ! f1 ; : : : ; m0g to be a morphism is the preservation of arcs . It is easy to see that f is a morphism if and only if maxf # f ? 1 -LRB- B -RRB- j B ? f1 ; : : : ; m0g and # B = n0 ? 1g < n since only in that case any arc of h -LRB- n ; m -RRB- is mapped by f on an arc of h -LRB- n0 ; m0 -RRB- . Hence there exists a morphism from h -LRB- m ; n -RRB- to h -LRB- m0 ; n0 -RRB- if and only if n > minf : f1 ; : : : ; mg!f1 ; : : : ; m0gmaxf # f ? 1 -LRB- B -RRB- j B ? f1 ; : : : ; m0g and # B = n0 ? 1g It is quite easy to see that one of the functions f : f1 ; : : : ; mg ! f1 ; : : : ; m0g which realize the minimum above is f0 -LRB- i -RRB- = -LRB- -LRB- i ? 1 -RRB- MOD m0 -RRB- + 1 , and that maxf # f ? 1 -LRB- B -RRB- j B ? f1 ; : : : ; m0g and # B = n0 ? 1g = = -LRB- minfn0 ? 1 ; m MOD m0g ? '' -LRB- m m0 -RRB- -RRB- + -LRB- maxf0 ; -LRB- n0 ? 1 -RRB- ? -LRB- m MOD m0 -RRB- g ? # -LRB- m m0 -RRB- where '' x and # x denote the integer parts of x + 1 and x respectively . If we denote this natural number by Cm ; n0 ; m0 , we have that there exists a morphism from h -LRB- n ; m -RRB- to h -LRB- n0 ; m0 -RRB- if and only if n > Cm ; n0 ; m0 . We define now a set of boolean functions ff -LRB- n ; m -RRB- g such that for all n ; m -LRB- with 3 < = n < = m -RRB- , H -LRB- f -LRB- n ; m -RRB- -RRB- = h -LRB- n ; m -RRB- , and we show that for all n ; m ; n0 ; m0 f -LRB- n ; m -RRB- < = par f -LRB- n0 ; m0 -RRB- if and only if n > Cm ; n0 ; m0 . We start by showing how to construct , for any given h -LRB- n ; m -RRB- , a boolean function f such that H -LRB- f -RRB- = h -LRB- n ; m -RRB- . The trace of f has to contain m elements , its second projection has to be the singleton ftrueg and for any subset A of the first projection of the trace , A has to be coherent if and only if # A > = n. Before describing the general method for constructing such a function f , let us consider an example : example 3 : The function f described by the following trace -LRB- that we represent as a matrix -RRB- , is such that H -LRB- f -RRB- = h -LRB- 3 ; 4 -RRB- true true true ? ? ? true false ? ? true true ? true ? false ? false ? true true ? ? false ? false false true Actually a subset of the first projection of this trace is coherent if and only if its cardinality is at least 3 , since for any binary subset fi ; jg of rows there exists a column l such that the elements -LRB- i ; l -RRB- and -LRB- j ; l -RRB- are defined and different . For constructing a function f -LRB- n ; m -RRB- whose associated hypergraph be h -LRB- n ; m -RRB- we have just to generalize the idea above : for any subset of less then n rows -LRB- and of at least two rows -RRB- , it must exist a column which makes that subset uncoherent . The arity of the function is Pn ? 1 i = 2 Ci m 5 , and in the jth column , only elements corresponding to rows in the jth subset -LRB- with respect to an enumeration whatsoever -RRB- will be defined , say by true for the first row in that subset and by false for the other rows . example 4 : The following matrix represents ss1 -LRB- tr -LRB- f -LRB- 4 ; 4 -RRB- -RRB- -RRB- : v1 = true true true ? ? ? true true true ? v2 = false ? ? true true ? false ? false true v3 = ? false ? false ? true false false ? false v4 = ? ? false ? false false ? false false false and the following one represents ss1 -LRB- tr -LRB- f -LRB- 3 ; 3 -RRB- -RRB- -RRB- : w1 = true true ? w2 = false ? true w3 = ? false false Proposition 4 If n ; m ; n0m0 2 ! are such that 3 < = n < = m , 3 < = n0 < = m0 and n > Cm ; n0 ; m0 , then f -LRB- n ; m -RRB- < = par f -LRB- n0 ; m0 -RRB- . Proof : Let k = Pn ? 1 i = 2 Ci m and k0 = Pn0 ? 1 i = 2 Ci m0 , and let A = ss1 -LRB- tr -LRB- f -LRB- n ; m -RRB- -RRB- -RRB- = fv1 ; : : : ; vmg and B = ss1 -LRB- tr -LRB- f -LRB- n0 ; m0 -RRB- -RRB- -RRB- = fw1 ; : : : ; wm0g . By hypothesis there exists a function f : f1 ; : : : ; mg ! f1 ; : : : ; m0g which maps any non-singleton coherent subset of A on a non-singleton coherent subset of B. Consider the function F : Bk ! Bk0 defined by tr -LRB- F -RRB- = f -LRB- vi ; wf -LRB- i -RRB- -RRB- j 1 < = i < = mg . We show that F is strongly stable : given C 2 C -LRB- Bk -RRB- we have to prove that F -LRB- C -RRB- 2 C -LRB- Bk0 -RRB- and that F -LRB- V C -RRB- = V F -LRB- C -RRB- : ffl If -LRB- ? ; ? ; : : : ; ? | -LCB- z -RCB- k0 -RRB- 2 F -LRB- C -RRB- then F -LRB- C -RRB- is linearly coherent , else there exists an Egli-Milner lower bound C0 of C such that C0 ? ss1 -LRB- tr -LRB- F -RRB- -RRB- , and 5Cim denotes the binomial coefficient of m and i F -LRB- C -RRB- = F -LRB- C0 -RRB- = fwf -LRB- i -RRB- j vi 2 C0g . By fact 1 C0 is coherent , and hence fwf -LRB- i -RRB- j vi 2 C0g is coherent . Hence F preserves linear coherence . ffl The only interesting case is when there exists an Egli-Milner lower bound of C in ss1 -LRB- tr -LRB- F -RRB- -RRB- -LRB- otherwise V F -LRB- C -RRB- = -LRB- ? ; ? ; : : : ; ? | -LCB- z -RCB- k0 -RRB- , and F -LRB- V C -RRB- = V F -LRB- C -RRB- holds trivially -RRB- . Let C0 be the Egli-Milner lower bound of C such that C0 ? ss1 -LRB- tr -LRB- F -RRB- -RRB- , and F -LRB- C -RRB- = F -LRB- C0 -RRB- = fwf -LRB- i -RRB- j vi 2 C0g . If C0 is a singleton , say C0 = fvig , then V C > = vi and F -LRB- V C -RRB- = V F -LRB- C -RRB- . If C0 is non-singleton then F -LRB- C0 -RRB- = fwf -LRB- i -RRB- jvi 2 C0g is coherent and non singleton . Hence # F -LRB- C0 -RRB- > = n0 , and it is easy to see that by definition of f -LRB- n0 ; m0 -RRB- , V F -LRB- C0 -RRB- = -LRB- ? ; ? ; : : : ; ? | -LCB- z -RCB- k0 -RRB- = F -LRB- V C -RRB- . Since F is strongly stable , the function gi : Bk ! B defined by gi = ssi ffi F is strongly stable , for any i < = k0 , since projections are strongly stable functions , and strong stability is preserved by composition . The gi 's are first order functions , hence by proposition 1 , for all i < = k0 there exists a PCF term ti -LRB- x1 ; : : : ; xk -RRB- which defines gi . Consider the term M = > = y > = x1x2 : : : xk y -LRB- t1 -LRB- x1x2 : : : xk -RRB- ; t2 -LRB- x1x2 : : : xk -RRB- ; : : : ; tk0 -LRB- x1x2 : : : xk -RRB- -RRB- In order to prove that -LSB- jM j -RSB- f -LRB- n0 ; m0 -RRB- = f -LRB- n ; m -RRB- we just remark that , by construction , 8v 2 Bk -LRB- 9j < = m0 -LRB- g1 -LRB- v -RRB- ; : : : ; gk0 -LRB- v -RRB- -RRB- > = wj , 9i < = m v > = vi and f -LRB- i -RRB- = j -RRB- example 5 : Let us apply the construction above to show that f -LRB- 4 ; 4 -RRB- < = par f -LRB- 3 ; 3 -RRB- -LRB- remark that C4 ; 3 ; 3 = 3 -RRB- -LRB- we refers to example 4 -RRB- Any surjective function f : f1 ; 2 ; 3 ; 4g ! f1 ; 2 ; 3g satisfies the condition of being a morphism from h -LRB- 4 ; 4 -RRB- to h -LRB- 3 ; 3 -RRB- ; let us choose for instance f -LRB- 1 -RRB- = f -LRB- 4 -RRB- = 1 f -LRB- 2 -RRB- = 2 f -LRB- 3 -RRB- = 3 The corresponding F is defined by tr -LRB- F -RRB- = f -LRB- v1 ; w1 -RRB- ; -LRB- v2 ; w2 -RRB- ; -LRB- v3 ; w3 -RRB- ; -LRB- v4 ; w1 -RRB- g and the gi 's are defined by tr -LRB- g1 -RRB- = f -LRB- v1 ; true -RRB- ; -LRB- v2 ; false -RRB- ; -LRB- v4 ; true -RRB- g tr -LRB- g2 -RRB- = f -LRB- v1 ; true -RRB- ; -LRB- v3 ; false -RRB- ; -LRB- v4 ; true -RRB- g tr -LRB- g3 -RRB- = f -LRB- v2 ; true -RRB- ; -LRB- v3 ; false -RRB- g The terms ti 's are essentially sequences of conditionals statements : for instance t3 = > = x1 : : : x10 if x4 then -LRB- if -LRB- : x1 ^ x5 ^ : x7 ^ : x9 ^ x10 -RRB- then true else ? -RRB- else -LRB- if -LRB- : x2 ^ x6 ^ : x7 ^ : x8 ^ : x10 -RRB- then true else ? -RRB- The rest of this section is devoted to prove that the condition n > Cm ; n0 ; m0 . is indeed necessary for having f -LRB- n ; m -RRB- < = par f -LRB- n0 ; m0 -RRB- : Proposition 5 If n ; m ; n0 ; m0 are such that 3 < = n < = m , 3 < = n0 < = m0 and n < = Cm ; n0 ; m0 , then f 6 < = par g. Proof : By proposition 2 it is sufficient to define a sequential logical relation R such that f -LRB- n0 ; m0 -RRB- is invariant with respect to R and f -LRB- n ; m -RRB- is not . The first projection of tr -LRB- f -LRB- n ; m -RRB- -RRB- is ss1 -LRB- tr -LRB- f -LRB- n ; m -RRB- -RRB- -RRB- = f -LRB- x1 1 ; : : : ; x Pn ? 1 i = 2 Cim 1 -RRB- ; : : : ; -LRB- x1 m ; : : : ; x Pn ? 1 i = 2 Cim m -RRB- g Remark that , by definition , any \ column '' of the first projection of tr -LRB- f -LRB- n ; m -RRB- -RRB- , i.e. any tuple f -LRB- xi 1 ; xi 2 ; : : : ; xi m -RRB- g1 < = i < = Pn ? 1 i = 2 Cim contains at least m ? n + 1 \ ? `` s. Hence it is easy to see that f -LRB- n ; m -RRB- is not invariant with respect to the -LRB- m + 1 -RRB- - ary sequential logical relation R = -LRB- \ A?f1 ; 2 ; : : : ; mg ; # A = n SA ; A -RRB- \ -LRB- Sf1 ; : : : ; mg ; f1 ; : : : ; m +1 g -RRB- since the tuples f -LRB- xi 1 ; xi 2 ; : : : ; xi m ; ? -RRB- g1 < = i < = Pn ? 1 i = 2 Cim are in R , and the application of -LRB- f -LRB- n ; m -RRB- ; : : : ; f -LRB- n ; m -RRB- | -LCB- z -RCB- m +1 -RRB- to those tuples yelds the tuple -LRB- true ; true ; : : : ; true | -LCB- z -RCB- m ; ? -RRB- which is not in R If we prove that f -LRB- n0 ; m0 -RRB- is invariant with respect to R we have done . By reductio ad absurdum , let us suppose that f -LRB- n0 ; m0 -RRB- is not invariant . Then there exist m + 1 tuples in R v1 = -LRB- y1 1 ; : : : ; y Pn0 ? 1 i = 2 Cim0 1 -RRB- v2 = -LRB- y1 2 ; : : : ; y Pn0 ? 1 i = 2 Cim0 2 -RRB- ... vm +1 = -LRB- y1 m +1 ; : : : ; y Pn0 ? 1 i = 2 Cim0 m +1 -RRB- such that -LRB- f -LRB- n0 ; m0 -RRB- -LRB- v1 -RRB- ; : : : ; f -LRB- n0 ; m0 -RRB- -LRB- vm +1 -RRB- -RRB- 62 R It is easy to see that this is the case if and only if f -LRB- n0 ; m0 -RRB- -LRB- v1 -RRB- = f -LRB- n0 ; m0 -RRB- -LRB- v2 -RRB- = : : : = f -LRB- n0 ; m0 -RRB- -LRB- vm -RRB- = true and f -LRB- n0 ; m0 -RRB- -LRB- vm +1 -RRB- = ? Hence for any 1 < = i < = m there exists an element wf -LRB- i -RRB- of the first projection of tr -LRB- f -LRB- n0 ; m0 -RRB- -RRB- such that vi > = wf -LRB- i -RRB- 6 , for some function f : f1 ; 2 ; : : : ; mg ! f1 ; 2 ; : : : ; m0g . Since n < = Cm ; n0 ; m0 , there exists B ? f1 ; 2 ; : : : ; m0g such that # B = n0 ? 1 and # f ? 1 -LRB- B -RRB- > = n . This means that there exist n elements vi1 ; : : : ; vin , 1 < = ij < = m and there exist 1 < = k < = n0 ? 1 , w1 ; : : : ; wk 2 ss1 -LRB- tr -LRB- f -LRB- n0 ; m0 -RRB- -RRB- -RRB- , such that fw1 ; : : : ; wkg is an Egli-Milner lower bound of fvi1 ; : : : ; ving . If k > = 2 , we conclude that fvi1 ; : : : ; ving is not linearly coherent and then that there exists 1 < = h < = Pn0 ? 1 i = 2 Ci m0 such that fyh i1 ; yh i2 ; : : : ; yh ing = ftrue ; falseg . It follows that -LRB- yh 1 ; yh 2 ; : : : ; yh m +1 -RRB- 62 Sfi1 ; : : : ; ing ; fi1 ; : : : ; ing which is absurd . If k = 1 , there are two cases : ffl there exists 1 < = h < = m such that vh 6 > = w1 . In this case vh > = w for some w 2 ss1 -LRB- tr -LRB- f -LRB- n0 ; m0 -RRB- -RRB- -RRB- , w < > w1 , and we conclude as before , since fw ; w1g is not linearly coherent . ffl for all 1 < = i < = m , vi < = w1 . In this case for all 1 < = j < = Pn0 ? 1 i = 2 Ci m0 , we have yj 1 ; yj 2 ; : : : ; yj m > = wj 1 and hence , since -LRB- yj 1 ; yj 2 ; : : : ; yj m ; yj m +1 -RRB- 2 Sf1 ; : : : ; mg ; f1 ; : : : ; m +1 g we get yj m +1 > = wj 1 . Hence we conclude that vm +1 > = w1 and that f -LRB- n0 ; m0 -RRB- -LRB- vm +1 -RRB- = true , which is absurd . 6This element is unique since f -LRB- n0 ; m0 -RRB- is stable . Hence f -LRB- n ; m -RRB- < = par f -LRB- n0 ; m0 -RRB- if and only if n > Cm ; n0 ; m0 . In order to draw a picture of -LRB- a part of -RRB- this hierarchy of degrees , let us compute some typical value of Ci ; j ; l : Cn +1 ; n ; n = 2 + -LRB- n ? 2 -RRB- = n -RRB- 8n > = 3 f -LRB- n +1 ; n +1 -RRB- < = par f -LRB- n ; n -RRB- Cn ; n ? 1 ; n +1 = n ? 2 -RRB- 8n > = 4 f -LRB- n ? 1 ; n -RRB- < = par f -LRB- n ? 1 ; n +1 -RRB- Cn +1 ; n ? 1 ; n = 2 + -LRB- n ? 3 -RRB- = n ? 1 -RRB- 8n > = 4 f -LRB- n ; n +1 -RRB- < = par f -LRB- n ? 1 ; n -RRB- We can prove that the inequalities above are strict by using the same method : for the first one we have for instance Cn ; n +1 ; n +1 = n -RRB- 8n f -LRB- n ; n -RRB- 6 < = par f -LRB- n +1 ; n +1 -RRB- The following picture shows some degrees in the hierarchy : -LRB- 3 ; 5 -RRB- -LRB- 4 ; 6 -RRB- -LRB- 3 ; 4 -RRB- -LRB- 5 ; 7 -RRB- -LRB- 4 ; 5 -RRB- -LRB- 3 ; 3 -RRB- -LRB- 5 ; 6 -RRB- -LRB- 4 ; 4 -RRB- -LRB- 5 ; 5 -RRB- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OO ccGGGGGGG ??????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OO wwwwwww ; ; OOc cGGGGGGG ccGGGGGGG ??????????????? ccGGGGGGG OO wwwwwww ; ; ccGGGGGGG OO ????????????? ccGGGGGGG OO 5 Conclusion The hypergraph that we associate to a function f brings some information about the degree of parallelism of f . Actually , as shown by exemple 2 , the existence of a morphism from H -LRB- f -RRB- to H -LRB- g -RRB- is not a necessary condition for f < = par g , but some of the result we got -LRB- like proposition 3 , or the existence of the hierarchy f -LRB- n ; m -RRB- -RRB- , comfort our feeling that the study of the combinatory of hypergraphs can result in a better understanding of the poset of degrees of parallelism . A complete characterization of first order degrees of parallelism can be considered as preliminary to the study of the decidability problem for < = par at higher order , which is open . References -LSB- 1 -RSB- G. Berry . Mod?eles compl?etement ad?equats et stables des lambda-calculs typ?es . Th?ese de Doctorat d'Etat , Universit?e Paris 7 , 1979 . -LSB- 2 -RSB- A. Bucciarelli , T. Ehrhard . Sequentiality and strong stability . Proc . Sixth Annual IEEE Symposium on Logic in Computer Science , 1991 . -LSB- 3 -RSB- P.L. Curien . Categorical Combinators , Sequential Algorithms and Functional Programming . Revised edition , Birkh?auser , 1993 . -LSB- 4 -RSB- G. Plotkin . LCF considered as a programming language . Theoretical Computer Science 5 , 223-256 , 1977 . -LSB- 5 -RSB- V. Y. Sazonov . Degrees of Parallelism in Computations . Proc . Conference on Mathematical Foundations of Computer Science , Lecture Notes in Computer Science 45 , 1976 . -LSB- 6 -RSB- K. Sieber . Reasoning about Sequential Functions via Logical Relations . Proc . LMS Conference on the Applications of Categories to Computer Science , M. Fourman , P. Johnstone , A. Pitts eds , Cambridge University Press , 1992 . -LSB- 7 -RSB- A. Stoughton . Mechanizing Logical Relations . Proc . Ninth International Conference on Mathematical Foundations of Programming Semantics , Lecture Notes in Computer Science 802 , 1994 .

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O

logical relations
sequentiality
stability

sequentiality relations
strong stability