in this paper , we describe a new methodology for studying persistence of topological features across a family of spaces or point - cloud data sets .
this theory of _ zigzag persistence _ generalises the successful and widely used theory of persistence and persistent homology  @xcite
. moreover , zigzag persistence can handle several important situations that are not currently addressed by standard persistence .
the zigzag persistence framework is activated whenever one constructs a _
zigzag diagram _ of topological spaces or vector spaces : a sequence of spaces @xmath0 where each adjacent pair is connected by a map @xmath1 or @xmath2 .
the novelty of our approach is that the direction of each linking map is arbitrary , in contrast to the usual theory of persistence where all maps point in the same direction .
this paper has three principal objectives :    * to describe several scenarios in applied topology where it is natural to consider zigzag diagrams ( section  [ sec : intro ] ) . * to develop a mathematical theory of persistence for zigzag diagrams ( sections [ sec : zigzags ] and  [ sec : zigzag2filt ] ) .
* to develop algorithms for computing zigzag persistence ( section  [ sec : algorithms ] ) .
there is one subsidiary objective :    * to introduce the _ diamond principle _ , a calculational tool analogous in power and effect to the mayer
vietoris theorem in classical algebraic topology ( section  [ sec : further ] ) .
this is a theoretical paper rather than an experimental paper , and we devote most of our effort to covering the mathematical foundations adequately .
the technical basis for zigzag persistence comes from the theory of graph representations , also known as quiver theory .
we are deeply indebted to the practitioners of that theory ; what is new here is the emphasis on algorithmics and on applications to topology ( particularly sections [ sec : intro ] , [ sec : algorithms ] and  [ sec : further ] ) .
one of the principal challenges when attempting to apply algebraic topology to statistical data is the fact that traditional invariants  such as the betti numbers or the fundamental group  are extremely non - robust when it comes to discontinuous changes in the space under consideration .
persistent homology  @xcite is the single most powerful existing tool for addressing this problem .
a typical workflow runs as follows  @xcite .
the input is a _ point cloud _ , that is , a finite subset of some euclidean space or more generally a finite metric space .
after an initial filtering step ( to remove undesirable points or to focus on high - density regions of the data , say ) , a set of vertices is selected from the data , and a simplicial complex  @xmath3 is built on that vertex set , according to some prearranged rule . in practice , the simplicial complex depends on a coarseness parameter  @xmath4 , and what we have is a nested family @xmath5}$ ] , which typically ranges from a discrete set of vertices at  @xmath6 to a complete simplex at  @xmath7 .
persistent homology takes the entire nested family @xmath8 and produces a _
barcode _ or _ persistence diagram _ as output .
a barcode is a collection of half - open subintervals @xmath9 , which describes the homology of the family as it varies over  @xmath4 .
an interval @xmath10 represents a homological feature which is born at time  @xmath11 and dies at time  @xmath12 .
this construction has several excellent properties :    * there is no need to select a particular value of  @xmath4 .
* features can be evaluated by interval length .
long intervals are expected to indicate essential features of the data , whereas short intervals are likely to be artefacts of noise .
* there exists a fast algorithm to compute the barcode  @xcite . *
the barcode is a complete invariant of the homology of the family of complexes  @xcite .
* the barcode is provably stable with respect to changes in the input  @xcite .
in contrast , any individual homology group @xmath13 is highly unstable .
the major limitation of persistence is that it depends crucially on the family @xmath8 being nested , in the sense that @xmath14 whenever @xmath15 .
this applies to the current theoretical understanding as well as the algorithms .
zigzag persistence addresses this limitation .
if we discretise the variable  @xmath4 to a finite set of values , the family of simplicial complexes can be thought of as a diagram of spaces @xmath16 where the arrows represent the inclusion maps .
if we apply the @xmath17-dimensional homology functor @xmath18 with coefficients in a field  @xmath19 , this becomes a diagram of vector spaces @xmath20 and linear maps , where @xmath21 .
such a diagram is called a _
persistence module_. what makes persistence work is that there is a simple algebraic classification of persistence modules up to isomorphism ; each possible barcode corresponds to an isomorphism type .    our goal is to achieve a similar classification for diagrams in which the arrows may point in either direction
this is zigzag persistence , in a nutshell .
we consider some problems which arise quite naturally in the computational topology of data .
[ densityprofile ] some of the most interesting properties of a point cloud are contained in the estimates of the probability density from which the data are sampled .
deep structure is sometimes revealed after thresholding according to a density estimate ( see @xcite for an example drawn from visual image analysis ) .
however , the construction of a density estimation function  @xmath22 invariably depends on choosing a smoothing parameter : for instance @xmath23 might be defined to be the number of data points within distance  @xmath24 of  @xmath25 ; here @xmath24 is the smoothing parameter .
it happens that different choices of smoothing parameter may well reveal different structures in the data ; a particularly striking example of this occurs in  @xcite .
statisticians have invented useful criteria for determining what the ` appropriate ' value of such a parameter might be for a particular data set ; but another point of view would be to analyse all values of the parameter simultaneously , and to study how the topology changes as the parameter varies .
the problem with doing this is that there is no natural relationship between , say , the @xmath26 densest points as measured using two different parameter values .
this means that one can not build an increasing family of spaces using the change in parameters , and so one can not use persistence to analyze the evolution of the topology . on the other hand , there are natural zigzag sequences which can be used to study this problem .
select a sequence of parameter values @xmath27 and a percentage  @xmath28 , and let @xmath29 denote the densest @xmath30 of the point cloud when measured according to parameter value  @xmath24 .
we can then consider the union sequence @xmath31 or the intersection sequence @xmath32 as we see in section  [ subsec : strongdiamond ] , there is essentially no difference between the zigzag persistent homology of the union and intersection sequences of a sequence of spaces . here
that assertion needs to be filtered through the process of representing the data subsets  @xmath29 as simplicial complexes .
[ sampling ] suppose we are given a very large point cloud  @xmath33 . if it is too large to process directly , we may take a sequence of small samples @xmath34 and estimate their topology individually , perhaps obtaining a persistence barcode for each one .
how does this reflect the topology of the original sample  @xmath33 ?
on one hand , if most of the barcodes have similar appearance , then one might suppose that @xmath33 itself will have the same barcode .
on the other hand , one needs to be able to distinguish between a single feature detected repeatedly , and multiple features detected randomly but one at a time .
if we detect @xmath35  features in  @xmath36 on average , are we detecting @xmath35  features of  @xmath33 with detection probability  1 , or @xmath37 features with detection probability  @xmath38 ?    once again , there is a need to correlate features across different instances of the construction .
the union sequence comes to the rescue : @xmath39 in this case , the intersection sequence is not useful at the level of samples , because two sparse samples are unlikely to intersect very much .    the approach in this example is analogous to bootstrapping in statistics , where measurements on a large data set are estimated by making repeated measurements on a set of samples .    [ landmarking ] in computational topology , there exist several techniques for modelling a point cloud data set  @xmath33 by a simplicial complex  @xmath3 : the cech complex , the vietoris
 rips complex , the alpha complex  @xcite , the witness complex  @xcite , and so on .
the witness complex @xmath40 , in particular , depends on the choice of a small subset of ` landmark ' points @xmath41 which will serve as the vertex set of  @xmath3 . roughly speaking , a simplex  @xmath42 with vertices in  @xmath43
is included in @xmath44 if there is some @xmath45 which witnesses it , by being close to all the vertices .
how does the witness complex @xmath40 depend on the choice of landmark set ?
there is no direct way to compare @xmath40 with @xmath46 for two different choices of landmark sets @xmath47 .
however , it turns out that one can define a witness _ bicomplex _
@xmath48 which maps onto each witness complex .
the cells are cartesian products @xmath49 , where @xmath50 have vertices in @xmath47 respectively .
a cell @xmath49 is included provided that there exists @xmath45 which simultaneously witnesses @xmath42 for @xmath44 and @xmath51 for @xmath52 .    given a sequence @xmath53 of landmark subsets , one can then construct the biwitness zigzag : @xmath54 long intervals in the zigzag barcode will then indicate features that persist across the corresponding range of choices of landmark set .
the fundamental requirement is then for a way of assessing , in a zigzag diagram of vector spaces , the degree to which consistent families of elements exist .
the point of this paper is that there is such methodology .
we will interpret the isomorphism classes of zig - zag diagrams as a special case of the classification problem for quiver representations ( see @xcite for background on this theory ) .
there turns out to be a theorem of gabriel  @xcite which classifies arbitrary diagrams based on dynkin diagrams , and which shows in particular that the set of isomorphism classes of zigzag diagrams of a given length is parametrised by barcodes  just as persistence modules are .
long intervals in the classification define large families of consistent elements , hence indicate the presence of features stable across samples , landmark sets , or parameter values for a density estimator .      in section  [ sec : zigzags ]
we describe the theory of decompositions of zigzag modules .
these decompositions produce zigzag persistence barcodes analogous to the barcodes of persistent homology .
the foundational theorem of gabriel is stated without proof . in section  [ sec : zigzag2filt ] we develop the machinery of right - filtrations , which turn out to be the right tool for accessing the decomposition structure of a zigzag module .
this is an important section for the reader who wishes to make serious use of zigzag persistence . in section  [ sec :
algorithms ] , we present a general - purpose algorithmic framework for calculating zigzag persistence , and we show how this operates in a practical class of examples . the algorithm is based on a proof of gabriel s theorem for zigzag modules , included for completeness .
section  [ sec : further ] is devoted to a localisation principle which gives another approach to zigzag barcode calculations .
we apply this to prove the diamond principle .
we use this in turn to compare the zigzag barcodes for two natural zigzag diagrams obtained from a sequence of simplicial complexes .
we work over a field @xmath19 which remains fixed throughout this paper .
there is no significance to the choice of  @xmath19 .
all vector spaces are finite - dimensional .
let @xmath55 denote a sequence of vector spaces and linear maps , of length  @xmath35 : @xmath56 each @xmath57 represents either a forward map @xmath58 or a backward map @xmath59 .
the object @xmath55 is called a * zigzag diagram * of vector spaces , or simply a * zigzag module * , over  @xmath19 .
the sequence of symbols @xmath60 or @xmath61 is the * type * of  @xmath55 .
for instance , a diagram of type @xmath62 looks like this : @xmath63 the length of a type  @xmath51 is the length of any diagram of type  @xmath51 .
for example , we say that @xmath64 has length  4 .
we will usually be considering zigzag modules of a fixed type  @xmath51 of length  @xmath35 .
such diagrams are called * @xmath51-modules * , and the class of @xmath51-modules is denoted @xmath65 .
* persistence modules * ( see  @xcite ) are zigzag modules where all the maps have the forward orientation ; in other words , where @xmath66 .
as explained in  @xcite , persistence modules can be viewed as graded modules over the polynomial ring @xmath67 $ ] .
this observation simplifies the analysis of persistence modules quite considerably .
more generally , one can consider * graph representations * of arbitrary oriented graphs .
zigzag modules constitute the special case where the graph is @xmath68 ( a path with @xmath35  vertices and @xmath69 edges ) and the orientation is specified by the type  @xmath51 . in 1972 , gabriel showed that the dynkin  coxeter graphs @xmath68 , @xmath70 , @xmath71 , @xmath72 , @xmath73 ( arbitrarily oriented ) have an especially well - behaved representation theory  @xcite .
the theory of * quivers * was launched from this starting block ; see  @xcite for a beautiful and transparent introduction .
zigzag persistence is enabled by the good behaviour of @xmath68 graph representations .
@xmath65 has the structure of an abelian category .
given two @xmath51-modules @xmath74 , a morphism @xmath75 is defined to be a collection of linear maps @xmath76 which satisfy the commutation relations @xmath77 or @xmath78 for each  @xmath79 .
( here the forward and backward maps for  @xmath80 are written @xmath81 respectively . )
morphisms can be composed in the obvious way , and have kernels , images , and cokernels : for instance @xmath82 is the @xmath51-module with spaces @xmath83 and maps @xmath84 and @xmath85 defined by restriction .
the set of morphisms @xmath86 is naturally a vector space over  @xmath19 , and the endomorphism ring @xmath87 is a non - commutative @xmath19-algebra .
we can view @xmath88 as the subalgebra of @xmath89 defined by the commutation relations .
we wish to understand zigzag modules by decomposing them into simpler parts .
accordingly , a * submodule * @xmath80 of a @xmath51-module  @xmath55 is defined by subspaces @xmath90 such that @xmath91 or @xmath92 for all  @xmath79 .
these conditions guarantee that @xmath80 is itself a @xmath51-module , with maps given by the restrictions @xmath93 or @xmath94 .
we write @xmath95 .
a submodule  @xmath80 is called a * summand * of  @xmath55 if there exists a submodule @xmath96 which is complementary to  @xmath80 , in the sense that @xmath97 for all  @xmath79 . in that case
, we say that @xmath55 is the * direct sum * of @xmath98 and write @xmath99 .    as a rule ,
most submodules are not summands .
@xmath100 has the submodule @xmath101 .
however , @xmath80 is not a summand because the only possible complement is @xmath102 , and that is not a submodule of  @xmath55 .
the direct sum can also be defined as an ` external ' operation : given @xmath51-modules @xmath74 their direct sum @xmath103 is defined to be the @xmath51-module with spaces @xmath104 and maps @xmath105 or @xmath106 .
( here the forward and backward maps for  @xmath80 are written @xmath81 respectively . )
a @xmath51-module @xmath55 is * decomposable * if it can be written as a direct sum of nonzero submodules , and * indecomposable * otherwise .
any @xmath51-module @xmath55 has a * remak decomposition * ; in other words we can write @xmath107 , where the summands @xmath108 are indecomposable .
the existence of such a decomposition is proved by induction on the total dimension @xmath109 : if @xmath55 is decomposable , say @xmath99 , then we may assume inductively that @xmath98 have remak decompositions , and therefore so does  @xmath55 .
( base case : if @xmath55 is indecomposable , then it has a remak decomposition with one term . )    remak decompositions themselves are not unique .
however , the krull
schmidt principle from commutative algebra tells us that the summands in a remak decomposition are unique up to reordering :    ( krull  remak  schmidt . ) [ prop : krull ] suppose a @xmath51-module @xmath55 has remak decompositions @xmath110 then @xmath111 and there is some permutation  @xmath42 of @xmath112 such that @xmath113 for all  @xmath114 .
the proof of theorem  7.5 of lang  @xcite , which is stated for modules in the ordinary sense , can be applied verbatim to our present context ; all the required algebraic operations can be carried out within @xmath88 .
since our @xmath51-modules have finite total dimension , the ascending and descending chain conditions ( acc and dcc ) are automatic .    for further context
, we refer the reader to an elegant article by atiyah  @xcite ; the krull
schmidt principle applies in any exact abelian category to objects which satisfy acc and dcc , or a weaker ` bi - chain condition ' defined by atiyah . our category , @xmath65 ,
is included by this formulation .
thus we can use the multiset @xmath115 as an isomorphism invariant of  @xmath55 . for this to be useful
, we need to identify the set of indecomposable @xmath51-modules .
we now describe a natural collection of indecomposables . for each subinterval
@xmath116 $ ] of the integer sequence @xmath117 there is an associated @xmath51-module .
let @xmath51 be a type of length  @xmath35 and consider integers @xmath118 .
the * interval * @xmath51-module with birth time  @xmath119 and death time  @xmath120 is written @xmath121 and defined with spaces @xmath122 and with identity maps between adjacent copies of @xmath19 , and zero maps otherwise .
when @xmath51 is implicit , we will usually suppress it and simply write @xmath123 .    if @xmath62 then @xmath124 is the zigzag module @xmath125    [ prop : intind ] interval @xmath51-modules are indecomposable .
suppose @xmath126 and consider two adjacent terms  @xmath19 connected by an identity map . since @xmath74 are submodules , the dimensions of @xmath55 and @xmath80 can not decrease in the direction of the map ; nor , since they are complements , can they increase .
thus @xmath127 and @xmath128 are constant over @xmath129 , and in particular one of @xmath130 must be zero .    here
is the foundation stone for the theory of zigzag persistence .
[ thm : interval ] the indecomposable @xmath51-modules are precisely the intervals @xmath123 , where @xmath131 .
equivalently , every @xmath51-module can be written as a direct sum of intervals .
this is the simplest special case of gabriel s theorem , for the graphs @xmath68 .
the original reference ( in german ) is  @xcite .
see  @xcite for an accessible overview .
thus , any @xmath51-module can be described completely up to isomorphism as an unordered list of intervals @xmath116 $ ] , which correspond to its indecomposable summands .
this is in exact accordance with the special case of ordinary persistence , where the result is comparatively easy to prove : it is simply the classification of finitely - generated graded modules over the polynomial ring @xmath67 $ ] ( see  @xcite ) .
the philosophical point is that the decomposition theory of graph representations is somewhat independent of the orientation of the graph edges ( see kac  @xcite ) . even in our case
this is surprising , because there is no obvious congruence between persistence modules and zigzag modules of an arbitrary type  @xmath51 .
however , if we accept this principle , then the generalisation from ordinary persistence to zigzag persistence is not surprising : interval decomposition for persistence modules implies interval decomposition for zigzag modules .
we will devote much of this paper to constructing a stand - alone proof of theorem  [ thm : interval ] .
this provides technical support towards our two main goals : to provide algorithms for computing the interval summands of a given @xmath51-module ; and to make rigorous statements about the output of those algorithms .
we now define zigzag persistence and develop some of its elementary properties .
let @xmath55 be a zigzag module ( of arbitrary type ) .
the * zigzag persistence * of  @xmath55 is defined to be the multiset @xmath132
\subseteq \{1 , \dots , n\ } \mid   j = 1 , \dots , n \right\}\ ] ] of integer intervals derived from a decomposition @xmath133 .
the krull
schmidt principle asserts that this definition is independent of the decomposition .
graphically , @xmath134 can be represented as a set of lines measured against a single axis with labels @xmath117 ( the * barcode * ) , or as a multiset of points in  @xmath135 lying on or above the diagonal in the positive quadrant ( the * persistence diagram * ) .
see figure  [ fig : barpd ] for an example presented in each style .    ,
[ 1,3 ] , [ 3,3 ] , [ 3,4 ] , [ 3,4 ] \}$ ] of a zigzag module of length  4.,title="fig : " ] , [ 1,3 ] , [ 3,3 ] , [ 3,4 ] , [ 3,4 ] \}$ ] of a zigzag module of length  4.,title="fig : " ]    in the special case of persistence modules , this agrees with the standard treatment ( see  @xcite ) except in the following particular : the closed integer intervals
@xmath136 \subseteq \{1 , \dots , n\}$ ] are replaced by half - open real intervals @xmath137 in the standard treatment .
this is particularly natural when the indexing parameter is continuous : an interval @xmath138 indicates a feature born at time  @xmath119 that survives right up to , but vanishes at , time  @xmath120 .
our convention is motivated by the desire to maintain symmetry between the forward and backward directions .
we advise the reader to take particular care in handling the different conventions .
the transition from a zigzag module to its interval decomposition presents certain hazards which are not present in the case of persistence modules .
we now draw attention to these hazards .
let @xmath55 be a zigzag module and let @xmath139 $ ] denote the restriction of  @xmath55 to the index set @xmath140 .
a * feature * of  @xmath55 over the time interval @xmath141 $ ] is a summand of @xmath139 $ ] isomorphic to @xmath142 .    with persistence modules ,
there are several equivalent ways to recognise the existence of a feature .
here is a sample result .
[ prop : intuitions ] let @xmath55 be a persistence module of length  @xmath35 , and let @xmath143 .
the following are equivalent :    1 .
the composite map @xmath144 is nonzero .
2 .   there exist nonzero elements @xmath145 for @xmath140 , such that @xmath146 for @xmath147 .
there exists a submodule of @xmath139 $ ] isomorphic to @xmath142 .
4 .   there exists a summand of @xmath139 $ ] isomorphic to @xmath142 , i.e.  a feature over @xmath141 $ ] .
it is easy to verify that ( 1 ) , ( 2 ) , ( 3 ) are equivalent . for ( 1 )  @xmath148  ( 2 ) , begin by choosing @xmath149 that maps to a nonzero element in @xmath150 , and let @xmath151 be the image of @xmath152 in @xmath153
. for ( 2 )  @xmath148  ( 3 ) , define @xmath154 by @xmath155 . for ( 3 )  @xmath148  ( 1 ) , note that the restriction @xmath156 is nonzero .    clearly ( 4 )  @xmath148  ( 3 ) .
we now show that ( 1 )  @xmath148  ( 4 ) .
consider an interval decomposition @xmath139 = { { { \mathbb{i}}}}(b_1 , d_1 ) \oplus \dots \oplus { { { \mathbb{i}}}}(b_n , d_n)$ ] . on each summand ,
the map @xmath157 is zero unless @xmath158 and @xmath159 .
thus at least one of the summands is isomorphic to @xmath142 .
the intuitions supported by proposition  [ prop : intuitions ] break down in the general case .
let @xmath55 be a zigzag module of arbitrary type .
statement  ( 1 ) has no clear interpretation at this stage ( something can be said in terms of the right - filtration functor of section  [ sec : zigzag2filt ] ) .
consider the following statements :    1 .
there exist nonzero elements @xmath145 for @xmath140 , such that @xmath146 or @xmath160 ( whichever is applicable ) for @xmath147 .
2 .   there exists a submodule of @xmath139 $ ] isomorphic to @xmath142 .
3 .   there exists a summand of @xmath139 $ ] isomorphic to @xmath142 , i.e.  a feature over @xmath141 $ ] .
it is easy to verify that @xmath161 and that ( 4 ) implies @xmath162 .
however , the next two examples demonstrate that @xmath162 do not in general imply  ( 4 ) .    [
ex : caution1 ] let @xmath163 and consider the @xmath51-module @xmath55 defined as follows : @xmath164 the interval decomposition is @xmath165 , where the summands are @xmath166 and @xmath167 respectively .
if this example appeared in a statistical topology setting , the feature corresponding to the generator of the @xmath19 at  @xmath168 would be regarded as unrelated to the feature corresponding to the generator of the @xmath19 at  @xmath169 .    on the other hand
, @xmath55 does have a submodule ( in fact , many submodules ) isomorphic to @xmath170 .
indeed , let @xmath171 denote the diagonal subspace of @xmath172 .
then @xmath173 is a submodule @xmath95 isomorphic to @xmath170 .
the quotient @xmath51-module @xmath174 is isomorphic to @xmath175 but @xmath80 has no complementary @xmath51-module in  @xmath55 .
indeed , that would contradict the krull
schmidt theorem .
more concretely , any complement of  @xmath80 must be isomorphic to @xmath176 , but that would require a 1-dimensional subspace of @xmath177 .
[ ex : caution2 ] we can extend the previous example to arbitrary length .
consider the type @xmath178 , of length @xmath179 .
let @xmath55 be the @xmath51-module @xmath180 where @xmath181 , and @xmath182 .
then @xmath55 is isomorphic to a sum of short intervals @xmath183 but it has a submodule @xmath184 isomorphic to the long interval @xmath185 .    in zigzag persistence
it is necessary to respect the distinction between submodules and summands .
features are defined in terms of summands ; never submodules .
we have defined features in terms of a chosen subinterval @xmath141 $ ] .
features behave as expected when zooming to a larger or smaller window of observation .
the following proposition illustrates what we mean .
[ prop : restriction1 ] let @xmath55 be a zigzag module of length  @xmath35 and let @xmath143 .
the following statements are equivalent .    1 .
there exists a summand of @xmath139 $ ] isomorphic to @xmath142 , i.e.  a feature over @xmath141 $ ] .
2 .   there exists a summand of @xmath55 isomorphic to @xmath186 , for some @xmath187 \supseteq [ p , q]$ ] .
indeed , there is a bijection between intervals @xmath141 $ ] in  @xmath188)$ ] and intervals @xmath187 \supseteq [ p , q]$ ] in @xmath134 .
consider an interval decomposition @xmath189 . by restriction , this induces an interval decomposition of @xmath139 $ ] into intervals @xmath190 $ ] .
this induces the claimed bijection , because @xmath136 $ ] restricts to @xmath141 $ ] if and only if @xmath136 \supseteq [ p , q]$ ] .
operating invisibly in this proof is the krull
schmidt principle , which allows us to select the interval decompositions most convenient to us when calculating @xmath134 and @xmath188)$ ] .
sometimes it is useful to reduce the resolution of @xmath191 .
let @xmath192 be any subset .
we define the * restriction * of @xmath134 to  @xmath193 to be the multiset @xmath194 for instance , proposition  [ prop : restriction1 ] amounts to the observation that @xmath188 ) = { \operatorname{pers}}({{{\mathbb{v}}}})|_{[p , q]}$ ] .
our strategy is to understand ( and construct ) decompositions of a @xmath51-module  @xmath55 by an iterative process , moving from left to right and retaining the necessary information at each stage .
the bulk of this information is encoded as a filtration on the rightmost vector space @xmath195 .
[ def : rfilt ] the * right - filtration * @xmath196 of a @xmath51-module @xmath55 of length  @xmath35 takes the form @xmath197 where the  @xmath198 are subspaces of  @xmath195 satisfying the inclusion relations @xmath199 @xmath196 is defined recursively as follows .
base case :    * if @xmath55 has length  1 , then @xmath200 .
recursive step .
suppose we have already defined @xmath201 :    * if @xmath202 is @xmath203 , then @xmath204 .
* if @xmath202 is @xmath205 , then @xmath206 .    to verify that @xmath207 in the two inductive cases is a filtration of the specified form , note that @xmath208 implies that @xmath209 in the first case , and @xmath210 in the second case .
moreover @xmath211 , and @xmath212 .
here are the right - filtrations for the two length-2 types : @xmath213    here are the right - filtrations for the four length-3 types : @xmath214 see figure  [ fig : rfilt3 ] for a schematic representation .    , @xmath215 , @xmath216 , @xmath217 of length  3.,title="fig : " ] , @xmath215 , @xmath216 , @xmath217 of length  3.,title="fig : " ]    , @xmath215 , @xmath216 , @xmath217 of length  3.,title="fig : " ] , @xmath215 , @xmath216 , @xmath217 of length  3.,title="fig : " ]    in the examples
above , it is not difficult to see that @xmath196 comprises all the subspaces of  @xmath195 that are naturally definable in terms of the maps @xmath218 .
each of the @xmath35  subquotients @xmath219 carries information dating back to some earliest @xmath220 in the sequence of vector spaces .
[ ex : birthtimef ] the module @xmath221 has right - filtration @xmath222 .
the first subquotient @xmath223 corresponds to vectors born at time  1 which survive to time  2 .
the second subquotient @xmath224 corresponds to vectors which appear only at time  2 .
[ ex : birthtimeg ] the module @xmath225 has right - filtration @xmath226 . the first subquotient @xmath227 corresponds to vectors at time  2 which are destroyed when mapping back to time  1 .
the second subquotient @xmath228 is isomorphic to @xmath229 and records those vectors which survive from time  2 back to time  1 .
[ def : birthtime ] the * birth - time index * @xmath230 is a vector of integers @xmath231 which indicate the birth - times associated with the subquotients @xmath232 of the right - filtration of a @xmath51-module .
this is defined recursively as follows .
base case :    * if @xmath51 is empty ( i.e. @xmath55 has length  1 ) then @xmath233 .
recursive step .
suppose we have already defined @xmath230 :    * if @xmath234 is @xmath235 then @xmath236 .
* if @xmath234 is @xmath237 then @xmath238 .
at length  2 we have @xmath239 whereas @xmath240 .
this is consonant with the discussion in examples @xmath241 and  @xmath242 .
here are the birth - time indices for the types of length  3 .
@xmath243    in summary , the information in a @xmath51-module  @xmath55 which survives to time  @xmath35 is encoded as a filtration @xmath244 on  @xmath195 .
the ` age ' of the information at each level of the filtration ( i.e.  at each subquotient ) is recorded in the birth - time index  @xmath245 .    for a simplified but precise version of this last claim ,
we now calculate the right - filtrations of interval @xmath51-modules . in the filtration specified in the following lemma , @xmath246 is the only non - zero subquotient , corresponding to the birth time  @xmath231 .
[ lem : intervalformula ] let @xmath51 be a type of length  @xmath35 , with @xmath230 . for each @xmath247 , we have an isomorphism @xmath248 where @xmath249 is the filtration on  @xmath19 defined by @xmath250    we refer to the @xmath251 also as _ intervals _
( but now in the category of filtered vector spaces ) .
this is a straightforward calculation by induction on  @xmath51 . for the base case
, @xmath51 is empty and @xmath233 .
then @xmath252 as claimed .
now suppose the result is known for @xmath51 , with @xmath253 .
suppose @xmath254 or  @xmath237 .
in both cases , write @xmath255 .
case  @xmath60 : suppose that @xmath256 ; then @xmath257 and therefore @xmath258 writing @xmath259 , it follows that @xmath260 for @xmath261 , we have @xmath262 , and indeed @xmath263    case  @xmath61 : suppose that @xmath264 ; then @xmath265 and therefore @xmath266 writing @xmath267 , it follows that @xmath268 for @xmath269 , we have @xmath270 and then @xmath271 as required .    thus the right - filtration ( with the help of the birth - time index ) distinguishes the different intervals @xmath272 .
it gives no information about intervals @xmath123 when @xmath273 , since in those cases @xmath274 .
consider @xmath275 , so @xmath276 and in general @xmath277 in particular , @xmath278 which is in accordance with lemma  [ lem : intervalformula ] .
we now consider filtered vector spaces in their own right , independently of the connection to zigzag - modules , and develop the theory of remak decompositions .
we will see later that this is the right tool for understanding remak decompositions of zigzag modules .    a filtered vector space of depth  @xmath35 is a sequence @xmath279 of vector spaces , where @xmath280 .
the class of such objects is denoted @xmath281 .
the right - filtration @xmath196 of any zigzag module  @xmath55 of length  @xmath35 belongs to this class , as do the intervals @xmath282 defined in lemma  [ lem : intervalformula ] . indeed , if @xmath283 satisfies @xmath284 , then @xmath285 is isomorphic to some @xmath282 .
@xmath281 can be given the structure of a category in a natural way , but it is not quite an abelian category since morphisms do not generally have cokernels .
a filtered vector space @xmath286 is a * subspace * of  @xmath285 if @xmath287 for all  @xmath79 .
it is appropriate to consider a stronger notion of subspace when dealing with direct - sum decompositions : @xmath288  is an * induced subspace * of  @xmath285 if there exists a vector subspace @xmath289 such that @xmath290 for all  @xmath79 . in that event
, we write @xmath291 . note that @xmath292 .
we say that @xmath285 is the * direct sum * of two subspaces , and write @xmath293 , if @xmath294 for all  @xmath79 . we claim that @xmath295 must be induced subspaces .
note that @xmath296 .
for each  @xmath79 , then , @xmath297 is a subspace of @xmath198 which contains @xmath298 and meets @xmath299 only at  0 .
it follows that @xmath300 for all  @xmath79 .
thus @xmath301 , and symmetrically @xmath302 .
the general form of a direct - sum decomposition is therefore @xmath303 .
what are the requirements on @xmath304 to make this a valid decomposition ?
the direct sum condition implies that @xmath305 as a vector space .
moreover , given a vector space decomposition @xmath305 , the further condition @xmath306 is necessary and sufficient to guarantee @xmath303 .    if @xmath293 , the two subspaces @xmath295 are said to be complementary summands .
the following fact radically simplifies the decomposition theory of filtered vector spaces .
[ prop : complement ] every induced subspace of a filtered vector space has a complementary summand .
we are given @xmath291 , and seek to construct @xmath307 such that @xmath293 .
we proceed inductively . since @xmath308
we take @xmath309 . now
suppose we have chosen @xmath310 so that @xmath311 .
in particular , @xmath312 .
then @xmath313 thus @xmath310 and @xmath314 are independent subspaces of @xmath315 , and so @xmath310 can be extended to a complement @xmath316 of @xmath314 in @xmath315 .
this completes the induction .
the indecomposables in  @xmath281 are precisely the intervals @xmath282 .
thus , every filtered vector space can be decomposed as a finite direct sum of intervals .    by proposition  [ prop :
complement ] , @xmath285 has nontrivial summands if and only if @xmath317 has nontrivial vector subspaces ; this happens exactly when @xmath318 .
the dimension of @xmath319 is defined to be the vector of integers @xmath320 where @xmath321 are the dimensions of the successive subquotients of the filtration .    [ prop : filtinterval ] let @xmath285 be a filtered vector space of depth  @xmath35 , with @xmath322 . for any decomposition of @xmath285 into intervals , the multiplicity of @xmath282 is  @xmath323 .
thus : @xmath324    let @xmath325 be the multiplicity of @xmath282 .
then , for all  @xmath17 , @xmath326 by considering the contribution of each summand , whereas @xmath327 by considering the contribution of each subquotient @xmath328 .
this is possible only if @xmath329 for all  @xmath79 .
this concludes our tour of the decomposition theory for filtered vector spaces .
now we must leverage this to achieve a decomposition theory for @xmath51-modules . in one direction ,
the relationship is straightforward :    [ prop : directsum ] the right - filtration operation respects direct sums , in the sense that @xmath330 for @xmath51-modules @xmath331 .
this is proved by induction on  @xmath51 , following the recursive structure of definition  [ def : rfilt ] and using the standard facts @xmath332 and @xmath333 from linear algebra .
( for simplicity we are suppressing various indices here . )
however , what we need is a converse to proposition  [ prop : directsum ] : if the filtered vector space @xmath334 can be split as a direct sum @xmath335 , we would like to infer a corresponding splitting @xmath336 of @xmath51-modules . in the following two sections we establish such a principle for a particular class : the ` streamlined ' @xmath51-modules .
we introduce a special class of @xmath51-module for which the right - filtration functor preserves all structural information .
a @xmath51-module  @xmath55 is * ( right-)streamlined * if each @xmath337 is injective and each @xmath338 is surjective .    similarly , we may say that a @xmath51-module  @xmath55 is left - streamlined if each @xmath337 is surjective and each @xmath338 is injective .
we will not need to consider left - streamlined modules until section  [ sec : further ] . by default , ` streamlined ' will be taken to mean ` right - streamlined ' .
[ ex : streaminterval ] intervals @xmath272 are streamlined ( but not @xmath123 for @xmath273 ) .
conversely , a streamlined @xmath51-module @xmath55 with @xmath339 is necessarily isomorphic to some @xmath272 .
indeed , @xmath127 is a non - decreasing sequence and therefore comprises some @xmath340 zeros ( where @xmath341 ) followed by @xmath342 ones .
the maps between the one - dimensional terms are injective or surjective , and therefore isomorphisms .
[ prop : splitstream ] a direct sum @xmath336 of @xmath51-modules is streamlined if and only if each summand is streamlined .
each @xmath343 in  @xmath55 decomposes as @xmath344 and is injective if and only if each @xmath345 is injective .
each @xmath346 in  @xmath55 decomposes as @xmath347 and is surjective if and only if each @xmath348 is surjective .
the proof of the following lemma appears at the end of this section .
[ lem : decomp ] let @xmath55 be a streamlined @xmath51-module and let @xmath334 . for any decomposition @xmath349 , there exists a unique decomposition @xmath107 such that @xmath350 for all  @xmath114 .
[ thm : streamlinedremak ] let @xmath55 be a streamlined @xmath51-module of length  @xmath35 , and write @xmath351 and @xmath230 . then there is an isomorphism of @xmath51-modules @xmath352    let @xmath334 . by proposition  [ prop : filtinterval ] , there is a decomposition @xmath353 , where the @xmath354 are a collection of @xmath355 intervals with @xmath282 occuring with multiplicity  @xmath323 .
lemma  [ lem : decomp ] produces a decomposition @xmath356 , with @xmath357 for all  @xmath114 .
each @xmath358 is streamlined ( proposition  [ prop : splitstream ] ) with maximum dimension @xmath359 , and is therefore isomorphic to some @xmath272 ( example  [ ex : streaminterval ] ) . by lemma
[ lem : intervalformula ] , we must have @xmath360 whenever @xmath361 .
it follows that the @xmath358 are a collection of @xmath355 intervals with @xmath362 occuring with multiplicity  @xmath323 .
we complete this chapter with a proof of the decomposition lemma .
we may assume that @xmath363 , since the general case follows by iteration . accordingly
, suppose that @xmath334 can be written in the form @xmath293 ; we must show that there is a corresponding decomposition @xmath364 .
we will argue by induction on @xmath365 .
the first step is to determine the splitting @xmath366 .
in fact , the stipulation that @xmath367 and @xmath368 forces @xmath369 and @xmath370 .
if @xmath371 , then we are done .
otherwise , let @xmath372 denote the truncation of @xmath55 to the indices @xmath373 and let @xmath374 .
we will shortly establish that @xmath293 induces a unique compatible decomposition @xmath375 .
the inductive hypothesis will then provide @xmath376 , which combines with @xmath366 to produce the desired decomposition @xmath99 . that will complete the proof .
write @xmath279 .
there are two cases .
case  @xmath377 , injective .
we can identify @xmath378 with the subspace @xmath379 of @xmath195 .
thereupon we have @xmath380 the unique splitting of @xmath378 compatible with @xmath366 is @xmath381 we must now verify that the induced subspaces @xmath382 and @xmath383 give a valid decomposition @xmath375 of filtered vector spaces .
this follows because @xmath384 and similarly @xmath385 , for all  @xmath386 ; so @xmath387 as required .    case  @xmath388 , surjective . here
we identify @xmath378 as the quotient @xmath389 . under this identification , @xmath390 in splitting @xmath391
we are compelled to take @xmath392 which induce @xmath393 for the purported splitting @xmath375 . to confirm that this is a genuine decomposition , we note from linear algebra that the twin facts @xmath394 imply that @xmath395 as required .
there is a high - level proof of lemma  [ lem : decomp ] which in some sense is the natural explanation for the result .
we outline this proof now .
the first observation is that the transformation @xmath396 is a functor from @xmath65 to @xmath281 : a morphism @xmath75 induces a morphism @xmath397 .
indeed , @xmath398 is defined to be @xmath399 ; one must check that this respects the filtrations on @xmath195 and @xmath400 .
being a functor , @xmath401 defines a ring homomorphism @xmath402 .
the second key fact is that this homomorphism is an isomorphism if @xmath55 is streamlined ( in general it is surjective ) .
it is well known that direct - sum decompositions of a module can be extracted from the structure of its endomorphism ring : direct summands correspond to idempotent elements of the ring .
it follows that @xmath55 and @xmath196 have the same decomposition structure .
here we describe the algorithm for determining the indecomposable factors of a @xmath51-module . we give three versions of the ` algorithm ' .
the first version , in section  [ subsec : maintheorem ] , is not an algorithm but a proof that every @xmath51-module decomposes as a sum of interval modules ( theorem  [ thm : interval ] ) .
moreover , the structure of the proof makes it clear how to compute the interval decomposition ( theorem  [ thm : main ] ) .
the algorithms in the subsequent sections build on this .
in section  [ subsec : algabst ] we describe an abstract form of the decomposition algorithm , using the language of vector spaces and linear maps .
no consideration is given to how the spaces and maps are described and manipulated in practice .
in section  [ subsec : algconc ] we suppose that the maps @xmath403 are presented concretely as matrices @xmath404 with respect to a choice of bases for the vector spaces  @xmath153 .
we describe an algorithm which takes these matrices as input and returns the interval decomposition .
our present goal is to give a somewhat constructive proof of theorem  [ thm : interval ] , which asserts that any @xmath51-module  @xmath55 is isomorphic to a direct sum of intervals @xmath123 .
we prove a stronger , more precise result , which explicitly determines the multiplicity of each interval within  @xmath55 .
some notation will help with the theorem statement .
if @xmath405 then let @xmath406 =   ( v_1 { \stackrel{p_{1}}{{\longleftrightarrow } } } \dots { \stackrel{p_{k-1}}{{\longleftrightarrow } } } v_k)\ ] ] denote the truncation of @xmath55 to length  @xmath17 , and let @xmath407 $ ] denote its type ( which is a truncation of  @xmath51 ) .
[ thm : main ] let @xmath55 be a @xmath51-module . for @xmath408 , define @xmath409).\ ] ] writing @xmath410)$ ] , define @xmath411 ( whichever is applicable ) when @xmath412 , and @xmath413 then @xmath414    [ add : main ] in the situation of theorem  [ thm : main ] , write @xmath415 for @xmath416 , and conventionally define @xmath417 for all  @xmath79 .
then @xmath418 for @xmath419 .
the decomposition strategy begins with the following lemma .
the idea is to proceed from left to right along the complex , removing streamlined summands at each step .
having done this , the remak decompositions of those summands can be determined by counting dimensions , as prescribed in theorem  [ thm : streamlinedremak ] .    [
lem : cascade ] let @xmath420 be an irreducible @xmath51-module of length  @xmath35 .
then there exists a direct - sum decomposition @xmath421 where each @xmath422 is supported over the indices @xmath423 and is right - streamlined over that range .
the following picture illustrates the decomposition .
@xmath424 each row ( i.e.  summand ) is right - streamlined , and therefore amenable to analysis via the right - filtration functor .
we proceed by induction on the length of  @xmath55 .
the inductive statement is that @xmath406 = { { { \mathbb{v}}}}^1 \oplus \dots \oplus { { { \mathbb{v}}}}^{k-1 } \oplus { { { \mathbb{w}}}}^k\ ] ] where the @xmath425 are as in the theorem statement , and @xmath426 is itself right - streamlined .    for the base case @xmath427
, there is nothing to prove : take @xmath428 $ ] .
now suppose the inductive statement is established for  @xmath17 , and consider @xmath429 $ ] .
this can be written @xmath430 & = & ( { { { \mathbb{v}}}}^1 \oplus \dots \oplus { { { \mathbb{v}}}}^{k-1 } \oplus { { { \mathbb{w}}}}^k ) { \stackrel{p_{k}}{{\longleftrightarrow } } } v_{k+1 } \\ & = & { { { \mathbb{v}}}}^1 \oplus \dots \oplus { { { \mathbb{v}}}}^{k-1 } \oplus ( { { { \mathbb{w}}}}^k { \stackrel{p_{k}}{{\longleftrightarrow } } } v_{k+1})\end{aligned}\ ] ] where the rebracketing is permissible because all of the @xmath425 terms terminate before time  @xmath17 , and therefore do not interact with @xmath431 .
the goal now is to rewrite @xmath432 as @xmath433 , where @xmath422 terminates at time  @xmath17 and both @xmath422 and @xmath434 are right - streamlined .
the rightmost term of @xmath426 is @xmath435 , so @xmath436 is a filtration on  @xmath435 .
case  @xmath60 : @xmath437 . in other words
let @xmath439 .
proposition  [ prop : complement ] implies that @xmath288 has a complement in  @xmath436 ; say @xmath440 .
this corresponds ( lemma  [ lem : decomp ] ) to a direct sum decomposition @xmath441 , where both summands are streamlined ( proposition  [ prop : splitstream ] ) .
this defines @xmath422 , and we set @xmath442 . to check that this works , note that @xmath443 is zero on @xmath444 and is injective on the complementary subspace @xmath445 .
thus @xmath422 is a summand of @xmath429 $ ] terminating at time  @xmath17 , and @xmath434 is streamlined .
case  @xmath61 : @xmath446 . in other words
let @xmath448 . proposition  [ prop : complement ] implies that @xmath288 has a complement in  @xmath436 ; say @xmath440 .
this corresponds ( lemma  [ lem : decomp ] ) to a direct sum decomposition @xmath449 , where both summands are streamlined ( proposition  [ prop : splitstream ] ) .
this defines @xmath422 , and we set @xmath450 . to check that this works , note that @xmath451 is surjective onto @xmath452 and misses the complementary subspace @xmath453 .
thus @xmath422 is a summand of @xmath429 $ ] terminating at time  @xmath17 , and @xmath434 is streamlined .
this establishes the inductive step , so eventually @xmath454 = { { { \mathbb{v}}}}^1 \oplus \dots \oplus { { { \mathbb{v}}}}^{n-1 } \oplus { { { \mathbb{w}}}}^n\ ] ] and we set @xmath455 to finish the proof .
write @xmath456 according to lemma  [ lem : cascade ] .
we now calculate the decomposition of each @xmath422 into intervals @xmath457 .
note that @xmath406 = { { { \mathbb{v}}}}^k \oplus { { { \mathbb{v}}}}^{k+1}[k ] \oplus \dots \oplus { { { \mathbb{v}}}}^n[k].\ ] ] we can write @xmath458 , so then @xmath459 ) = { \mathrm{r}}({{{\mathbb{v}}}}^k ) \oplus { \mathrm{r}}({{{\mathbb{w}}}}^k[k])\ ] ] ( using proposition  [ prop : directsum ] ) . this is a filtration on @xmath460 .
suppose @xmath461 .
we note that @xmath426 is streamlined up to time @xmath462 , whereas @xmath422 is zero at time @xmath462 .
the next map in the sequence is @xmath463 in the first case , it follows that @xmath464 and therefore @xmath465 . in the second case
, @xmath466 is a complement to @xmath467 in @xmath435 , so @xmath468 .
thus @xmath469 ( whichever middle term is applicable ) . when @xmath470 , moreover , we have @xmath471 thus , at last , @xmath472 using theorem  [ thm : streamlinedremak ] to decompose the @xmath422 .
write @xmath473))$ ] . since @xmath474)$ ] we can take dimensions and obtain the formula @xmath475 note also that @xmath476 ) = { \mathrm{r}}({{{\mathbb{w}}}}^k[k+1])$ ] .
moreover , @xmath426 is streamlined up to time  @xmath462 .
it follows that @xmath477 ) ) =   \left\ { \begin{array}{ll } ( w^k_1 , \dots , w^k_k , ? ) & \qquad \mbox{case~$f$ } \\
( ? , w^k_1 , \dots , w^k_k ) & \qquad \mbox{case~$g$ } \end{array } \right.\ ] ] and therefore @xmath478 which is the desired formula .
we now transcribe theorem  [ thm : main ] as an abstract algorithm for determining the interval structure of a @xmath51-module @xmath55 of length  @xmath35 .
this algorithm will serve as a skeleton for the more concrete algorithms developed later .
[ alg : main ] we proceed through @xmath479 , computing the filtration @xmath410)$ ] , the birth - time index @xmath480)$ ] , and the dimensions @xmath481 iteratively .
begin    * initialisation * ( @xmath427 ) :    * @xmath482 .
* @xmath483 ) = ( 1)$ ] .
* iterative step * ( @xmath484 ) :    * calculate @xmath485 from @xmath486 using definition  [ def : rfilt ] : @xmath487 * calculate @xmath488))$ ] from @xmath480 ) = ( b^k_1 , b^k_2 , \dots , b^k_k)$ ] using definition  [ def : birthtime ] : @xmath489 * calculate @xmath490 using the formula in theorem  [ thm : main ] : @xmath491 alternatively , use the formula in addendum  [ add : main ] : @xmath492 here @xmath493 .    *
terminal step * ( @xmath470 ) :    * calculate @xmath494 .
* print results * :    * for @xmath419 , the interval @xmath495 occurs with multiplicity  @xmath481 .
end    note that steps ( 35 ) have an ` @xmath60 ' verson and a ` @xmath61 ' version , depending on the direction of the map  @xmath496 .
this abstract algorithm does not specify how the filtered vector spaces @xmath497)$ ] are stored , nor how the maps @xmath443 or  @xmath451 ( which are used in steps ( 3 ) and  ( 5 ) ) are represented . in any concrete setting
, it is necessary to specify data structures .
a good choice will facilitate the calculations in steps ( 3 ) and  ( 5 ) . in the next section
, we work out the details in a simple scenario .      in this section
we describe an algorithm to solve the following concrete problem .
let @xmath51 be a type of length  @xmath35 .
we specify a @xmath51-module  @xmath55 as follows .
set @xmath498 for integers @xmath499 .
for each  @xmath79 , the map @xmath500 is defined by an @xmath501-by-@xmath502 matrix @xmath503 or else the map @xmath504 is defined by an @xmath505-by-@xmath501 matrix @xmath506 .
we are to determine @xmath134 , given @xmath51 and the matrices @xmath503 or @xmath507 .
we follow algorithm  [ alg : main ] .
the substantial task is to calculate the sequence of right - filtrations @xmath410)$ ] , for step  ( 3 ) .
everything else is book - keeping : the birth - time indices  @xmath508 are calculated according to step  ( 4 ) ; and the filtration dimensions  @xmath509 ( and hence the  @xmath510 ) will be easy to read off from the stored description of the filtrations .
the algorithm operates on two levels . on the _ conceptual _ level ,
we proceed by modifying the bases of the spaces  @xmath153 by elementary basis transformations .
initially each basis @xmath511 is the standard basis of  @xmath512 .
we perform modifications on @xmath513 in sequence . on the _ pragmatic _ level ,
what we actually do is apply elementary row and column operations to the matrices @xmath503 or @xmath507 .
we make no attempt to track the bases themselves ; instead we implement the effect of those changes on the matrices .
suppose we apply elementary basis transformations to @xmath514 on the conceptual level . on the pragmatic level
, we must perform @xmath515 and simultaneously perform @xmath516 to enact those transformations .
thus , at every stage we must make parallel changes to two matrices simultaneously .
usually we are working to put @xmath517 or @xmath518 in a particular form , and while doing so the changes have to be mirrored in @xmath519 or @xmath520 ( paying no attention yet to the structure of that matrix ) .
we now make this precise .
the * elementary transformation * @xmath521 is defined as follows . on the conceptual level , this is a modification of @xmath522 involving basis vectors @xmath523 and  @xmath524 : @xmath525 on the pragmatic level , if @xmath43 is a matrix representing a linear map @xmath526 for some  @xmath527 ( this will be @xmath528 or @xmath503 in our situation ) , then we modify the columns of  @xmath43 accordingly : @xmath529 else , if @xmath43 represents a linear map of the form @xmath530 ( this will be @xmath531 or @xmath507 in our situation ) then we must apply the dual transformation to the rows of  @xmath43 : @xmath532 in spirit , we right - multiply by the matrix @xmath533 $ ] to modify columns , or else left - multiply by the inverse matrix @xmath534 $ ] to modify rows .
besides the elementary transformations @xmath521 , it is sometimes appropriate to permute the basis elements .
the operation @xmath535 of interchanging @xmath523 with  @xmath524 is realised pragmatically by interchanging @xmath536 with  @xmath537 , or @xmath538 with  @xmath539 , as appropriate .
the filtration @xmath410)$ ] on  @xmath435 is to be represented as follows .
we require the basis @xmath540 to be compatible with the filtration , in a sense that will become clear .
assuming such a basis , the filtration @xmath541 is represented as a non - decreasing function @xmath542 so that @xmath543 for @xmath544 . in other words
: the first few basis elements ( those @xmath523 with @xmath545 ) form a basis for  @xmath546 ; the next few basis elements extend this to a basis for  @xmath547 , and so on .
the dimension @xmath548 can be read off as the cardinality of @xmath549 .
step  ( 3 ) boils down to the following task .
suppose that @xmath550 and @xmath551 together represent the filtration @xmath552 ; then modify @xmath514 and determine @xmath553 to represent @xmath485 .
we now explain how to do this .
case  @xmath554 : the matrix @xmath555 represents a linear map @xmath556 .
we assume that @xmath550 is compatible with the filtration  @xmath552 , and that @xmath551 identifies the filtration .
this gives a block structure @xmath557\ ] ] where @xmath558 gathers together the columns  @xmath559 with @xmath560 .
using row operations only , put @xmath555 into ( unreduced ) row echelon form .
this means :    * each of the top @xmath24 rows contains a 1 ( the _ pivot _ ) as its leftmost nonzero entry . *
each pivot lies strictly to the left of the pivots of the rows below it . *
the lowest @xmath561 rows are entirely zero .
these row operations correspond to elementary operations @xmath562 , and the effect of these operations is felt on the next matrix @xmath519 or  @xmath520 , which must be modified accordingly .
we now define @xmath553 as follows : @xmath563 see figure  [ fig : gaussm ] .     from @xmath552.,title="fig : " ]   from @xmath552.,title="fig : " ]    it is evident in the figure that @xmath564 maps onto @xmath565 for all  @xmath79 .
case  @xmath566 : the matrix @xmath567 represents a linear map @xmath568 .
we assume that @xmath550 is compatible with the filtration  @xmath552 , and that @xmath569 identifies the filtration .
this time we have a vertical block structure @xmath570\ ] ] where @xmath571 gathers together the rows  @xmath559 with @xmath572 . using column operations only , put @xmath567 into the column echelon form defined as follows ( this echelon form begins on the bottom left ) :    * each of the leftmost @xmath24 columns contains a 1 ( the pivot ) as its _ lowest _ nonzero entry . *
each pivot lies strictly lower than the pivots of the columns to the right of it . *
the rightmost @xmath561 rows are entirely zero .
these column operations correspond to elementary operations @xmath562 , and the effect of these operations is felt on the next matrix @xmath519 or  @xmath520 , which must be modified accordingly .
we now define @xmath553 as follows : @xmath573 see figure  [ fig : gaussn ] .     from @xmath552.,title="fig : " ]   from @xmath552.,title="fig : " ]    it is evident in the figure that @xmath574 is the largest subspace which maps into @xmath575 , for all  @xmath79 .
this concludes our treatment of the concrete form of the zigzag algorithm .
let @xmath55 be a zigzag module of length  @xmath35 and let @xmath408 .
we consider the problem of determining the set of intervals in @xmath134 which contain  @xmath17 , without necessarily computing @xmath134 itself .
we shall see that all the necessary information is contained in a pair of filtrations on the vector space  @xmath435 .
let @xmath55 be a zigzag module of length  @xmath35 .
the * left - filtration * of @xmath55 is a filtration on  @xmath168 of depth  @xmath35 , defined as @xmath576 where @xmath577 is the reversal of  @xmath55 ; so @xmath578 , with maps @xmath579 or @xmath580 .
for any  @xmath17 we therefore have two natural filtrations on  @xmath435 : @xmath581 ) , \\ { { { \mathcal{l}}}}_k & = &   ( l_0 , l_1 , \dots , l_{n+1-k } ) & = & { \mathrm{l}}({{{\mathbb{v}}}}[k , n ] ) ; \end{array}\ ] ] the right - filtration over the index set @xmath582 and the left - filtration over the index set @xmath583 .
we also have birth - time and death - time indices @xmath584 ) \\
{ \mathrm{d}}_k & = & ( d_1 , \dots , d_{n+1-k } ) & = & n+1 - { \mathrm{b}}(\bar\tau[k , n ] ) \end{array}\ ] ] which indicate the birth and death times associated with the respective subquotients of @xmath552 and @xmath585 .
these depend on the type  @xmath51 of  @xmath55 .
[ ex : bifilt ] consider the zigzag module @xmath586 at @xmath587 , for instance , we have @xmath588 and @xmath589    we can now state the main theorem of this section .
[ thm : kinterval ] let @xmath55 be a zigzag module of length  @xmath35 and let @xmath408 .
let @xmath590 denote the right- and left - filtrations at  @xmath17 , and let @xmath591 denote the birth - time and death - time indices at  @xmath17 .
then , for all @xmath592 in the range @xmath593 , @xmath594 , the multiplicity of @xmath595 $ ] in @xmath134 is equal to @xmath596    equivalently , @xmath597 , the dimension of the @xmath598-th bifiltration subquotient .
this theorem answers the original question , because every interval containing  @xmath17 can be written as @xmath595 $ ] for some choice of @xmath592 .
we now work towards a proof of theorem  [ thm : kinterval ] .
[ prop : kstream ] it is sufficient to prove theorem  [ thm : kinterval ] in the special case where @xmath55 is right - streamlined over @xmath582 and left - streamlined over @xmath583 .
it is clear from lemma  [ lem : cascade ] that we can write @xmath599 where @xmath600 is supported in @xmath601 and @xmath80 is right - streamlined over @xmath582 .
indeed , take @xmath602 and @xmath603 .
moreover , it is sufficient to prove theorem  [ thm : kinterval ] for  @xmath80 , because the filtrations @xmath590 remain unchanged from  @xmath55 , and the discarded term @xmath600 decomposes into intervals which do not contain  @xmath17 .
thus , we may assume that @xmath55 is right - streamlined over @xmath604 .
repeating this argument from the other side , we may further assume that @xmath55 is left - streamlined over @xmath583 .
assume that @xmath55 satisfies the condition in proposition  [ prop : kstream ] .
it follows that every interval in @xmath134 contains  @xmath17 : any other interval in the decomposition would cause a failure of the streamline condition . we can therefore write the interval decomposition of  @xmath55 as @xmath605 where @xmath606 indexes the summands , and @xmath607 and @xmath608 identify the interval type of each summand in terms of the birth - time and death - time indices .
it is apparent from this formulation that @xmath609 and it remains to compute this in terms of the dimensions @xmath610 .
the interval decomposition restricts at index  @xmath17 to a direct sum decomposition of @xmath435 into 1-dimensional subspaces  @xmath611 , generated by elements @xmath612 , say .
then @xmath613 ) = \bigoplus_{a \in a } { { { \mathcal{r}}}}_k \cap u_a \cong \bigoplus_{a \in a } { { { \mathcal{j}}}}(p(a ) , k)\ ] ] where the final isomorphism comes from lemma  [ lem : intervalformula ] . now , the filtration subspace  @xmath198 is spanned by the terms isomorphic to @xmath614 with @xmath615 . in other words , for @xmath544 we have @xmath616 a similar argument proceeding from the other direction gives the analogous formula @xmath617 for @xmath618 .
since the @xmath612 are independent , these formulas give bases for @xmath619 .
we now claim that @xmath620 for all @xmath592 .
the inclusion @xmath621 is obvious , because each of the spanning vectors  @xmath612 belongs to both @xmath198 and  @xmath622 . in the other direction , if @xmath623 then write @xmath624 . since @xmath625 , all the coefficients @xmath626 with @xmath627 must be zero . since @xmath628 , all the coefficients @xmath626 with @xmath629 must be zero . thus @xmath630 .
this establishes the reverse inclusion @xmath631 and hence the equality .
then @xmath632 for all @xmath592 .
the formula in the theorem follows easily from this .
the salient fact behind this result is that it is possible to find a direct sum decomposition of  @xmath435 which simultaneously decomposes the filtered spaces @xmath590 into intervals within their respective categories @xmath633 , @xmath634 .
here we achieved this by appealing to the interval decomposition of  @xmath55 , but this can also be proved directly for an arbitrary pair of filtrations on a single vector space .
the analogous statement for a triple of filtrations is false . for example
@xmath635 ( where @xmath171 ) can not be simultaneously decomposed into intervals .
consider the following diagram : @xmath636{w_k } \\
\node{v_1 }    \arrow{e , t,<>}{p_1 } \node{\cdots }    \arrow{e , t,<>}{p_{k-2 } } \node{v_{k-1 } }    \arrow{ne , t}{f_{k-1 } } \node[2]{v_{k+1 } }    \arrow{nw , t}{g_{k } }    \arrow{e , t,<>}{p_{k+1 } } \node{\cdots }    \arrow{e , t,<>}{p_{n-1 } } \node{v_n } \\ \node[4]{u_k }    \arrow{nw , t}{g_{k-1 } }    \arrow{ne , t}{f_{k } } \end{diagram}\ ] ] let @xmath202 and @xmath637 denote the two zigzag modules contained in the diagram : @xmath638 we wish to compare @xmath639 with @xmath640 , particularly with respect to intervals that meet @xmath641 .
this requires a favourable condition on the four maps in the middle diamond .
we say that the diagram @xmath642 is * exact * if @xmath643 in the following sequence @xmath644 where @xmath645 and @xmath646 .
[ thm : diamond ] given @xmath202 and @xmath637 as above , suppose that the middle diamond is exact .
then there is a partial bijection of the multisets @xmath639 and @xmath640 , with intervals matched according to the following rules :    * intervals of type @xmath647 $ ] are unmatched .
* type @xmath648 $ ] is matched with type @xmath649 $ ] and vice versa , for @xmath650 .
* type @xmath651 $ ] is matched with type @xmath652 $ ] and vice versa , for @xmath653 . *
type @xmath116 $ ] is matched with type @xmath116 $ ] , in all other cases .
it follows that the restrictions @xmath654 , @xmath655 to the set @xmath656 are equal .
figures [ fig : diamond_barcode ] and  [ fig : diamond_pd ] illustrate theorem  [ thm : diamond ] in terms of barcodes and persistence diagrams , respectively .     and @xmath640 : ( top row ) the five cases where matching occurs ; ( bottom row ) unmatched intervals @xmath647$].,title="fig : " ]   and @xmath640 : ( top row ) the five cases where matching occurs ; ( bottom row ) unmatched intervals @xmath647$].,title="fig : " ]   and @xmath640 : ( top row ) the five cases where matching occurs ; ( bottom row ) unmatched intervals @xmath647$].,title="fig : " ]   and @xmath640 : ( top row ) the five cases where matching occurs ; ( bottom row ) unmatched intervals @xmath647$].,title="fig : " ]   and @xmath640 : ( top row ) the five cases where matching occurs ; ( bottom row ) unmatched intervals @xmath647$].,title="fig : " ]     and @xmath640 : ( top row ) the five cases where matching occurs ; ( bottom row ) unmatched intervals @xmath647$].,title="fig : " ]   and @xmath640 : ( top row ) the five cases where matching occurs ; ( bottom row ) unmatched intervals @xmath647$].,title="fig : " ]     to @xmath640 , for @xmath657 , @xmath658 : points in the persistence plane move according to the arrows ; the multiplicity of the point marked  @xmath659 changes unpredictably . ]
the @xmath660 summands in @xmath639 span the cokernel of  @xmath661 , whereas the @xmath660 summands in @xmath640 span the kernel of  @xmath662 .
the hypothesis of theorem  [ thm : diamond ] does not bring about any relation between these spaces ( which is why the @xmath647 $ ] intervals are unmatched ) . in section  [ subsec : strongdiamond ] , however , we consider a situation in which the @xmath647 $ ] intervals can be tracked .
we use the localization technique of section  [ subsec : localize ] to prove theorem  [ thm : diamond ] .
we begin with birth- and death - time indices .
[ prop : diamond ] let @xmath663 denote the zigzag types of  @xmath664 respectively .
if we write @xmath665 ) = { \mathrm{b}}(\tau^-[1,k-1])\ ] ] for the birth - time index up to time  @xmath666 , then @xmath667 ) & = & ( k+1 , b_1 , \dots , b_{k-1 } , k ) . \\ { \mathrm{b}}(\tau^-[1,k+1 ] ) & = & ( k , b_1 , \dots , b_{k-1 } , k+1),\end{aligned}\ ] ] similarly , if we write @xmath668 ) = { \mathrm{d}}(\tau^-[k+1,n])\ ] ] for the death - time index from time  @xmath462 , then @xmath669 ) & = & ( k-1 , d_1 , \dots , d_{n - k } , k ) . \\ { \mathrm{d}}(\tau^-[k-1,n ] ) & = & ( k , d_1 , \dots , d_{n - k } , k-1),\end{aligned}\ ] ]    this is immediate from the recursive definition of birth - time index .
if we write @xmath670 = \tau^-[1,k-1]$ ] then @xmath671 = \tau_0 fg$ ] and @xmath672 = \tau_0 gf$ ] .
the death - time index is treated similarly .
here is the crux of the matter :    [ lem : diamond ] in the situation of theorem  [ thm : diamond ] , the following filtrations are equal : @xmath673 ) & = & { \mathrm{r}}({{{\mathbb{v}}}}^-[1,k+1 ] ) \\ { \mathrm{l}}({{{\mathbb{v}}}}^+[k-1,n ] ) & = & { \mathrm{l}}({{{\mathbb{v}}}}^-[k-1,n])\end{aligned}\ ] ]    write @xmath674 ) = { \mathrm{r}}({{{\mathbb{v}}}}^-[1,k-1])$ ] . by the recursive formula ( definition  [ def : rfilt ] ) , @xmath675 ) = ( 0 , g_k^{-1 } f_{k-1}(r_0 ) , \dots , g_k^{-1 } f_{k-1}(r_{k-1 } ) , v_{k+1})\ ] ] and @xmath676 ) = ( 0 , f_k g_{k-1}^{-1}(r_0 ) , \dots , f_k g_{k-1}^{-1}(r_{k-1 } ) , v_{k+1}).\ ] ] thus we can prove the first statement of the lemma by showing that @xmath677 for any subspace @xmath678 .
we use first - order logic .
let @xmath679 .
we have the following chain of equivalent statements .
@xmath680 on the other hand : @xmath681 since @xmath643 by hypothesis , it follows that @xmath682 .
this proves the first equality .
the second equality follows symmetrically .
we adopt the notation of section  [ subsec : localize ] , and consider the right- and left - filtrations at  @xmath683 , for both @xmath202 and @xmath637 . since @xmath684 = { { { \mathbb{v}}}}^-[k+1,n]$ ] we have @xmath685 and by lemma  [ lem : diamond ] we have @xmath686 finally , @xmath687 agrees with @xmath688 except that @xmath689 are interchanged , according to proposition  [ prop : diamond ] .
thus , when we use theorem  [ thm : kinterval ] to calculate the multiplicity of @xmath116 $ ] for @xmath690 , there is perfect agreement between @xmath202 and @xmath637 except that we must interchange @xmath689 when they occur as birth - times .
a symmetrical argument can be made , localizing at  @xmath691 .
when we compute the multiplicity of @xmath116 $ ] for @xmath692 , there is perfect agreement between @xmath202 and @xmath637 except that we must interchange @xmath693 when they occur as death - times .
we have covered all cases of the theorem except for intervals which meet neither @xmath666 nor @xmath462 .
intervals contained in @xmath694 $ ] are automatically the same for @xmath202 and @xmath637 because they can be computed by restricting to @xmath695 $ ] and @xmath696 $ ] , which are equal .
similarly , intervals contained in @xmath697 $ ] are the same for @xmath202 and @xmath637 , by restricting to @xmath684 = { { { \mathbb{v}}}}^-[k+1,n]$ ] .
finally , consider intervals @xmath647 $ ] .
nothing can be said about those .
the diamond principle can usefully be applied to the following diagram of topological spaces and continuous maps .
the four maps in the central diamond are inclusion maps , and the remaining maps @xmath698 are arbitrary .
@xmath699{a \cup b } \\
\node{x_1 }    \arrow{e , t , < > } { } \node{\cdots }    \arrow{e , t , < > } { } \node{x_{k-2 } }    \arrow{e , t , < > } { } \node{a }    \arrow{ne , t } { } \node[2]{b }    \arrow{nw , t } { }    \arrow{e , t , < > } { } \node{x_{k+2 } }    \arrow{e , t , < > } { } \node{\cdots }    \arrow{e , t , < > } { } \node{x_n } \\
\node[5]{a \cap b }    \arrow{nw , t } { }    \arrow{ne , t } { } \end{diagram}\ ] ] let @xmath700 denote the upper and lower zigzag diagrams contained in this picture ; so @xmath701 passes through @xmath702 and @xmath703 , passes through @xmath704 .
[ thm : strongdiamond ] given @xmath701 and @xmath703 as above , there is a ( complete ) bijection between the multisets @xmath705 and @xmath706 .
intervals are matched according to the following rules :    * @xmath647 \in { \operatorname{pers}}(h_{\ell+1}({{{\mathbb{x}}}}^+))$ ] is matched with @xmath647 \in { \operatorname{pers}}(h_{\ell}({{{\mathbb{x}}}}^-))$ ] .    in the remaining cases ,
the matching preserves homological dimension :    * type @xmath648 $ ] is matched with type @xmath649 $ ] and vice versa , for @xmath650 .
* type @xmath651 $ ] is matched with type @xmath652 $ ] and vice versa , for @xmath653 .
* type @xmath116 $ ] is matched with type @xmath116 $ ] , in all other cases .
for any  @xmath707 , apply the homology functor @xmath708 to the diagram .
the central diamond @xmath709 is exact by virtue of the mayer
vietoris theorem , according to which @xmath710 is an exact sequence .
the diamond principle therefore applies to @xmath711 and @xmath712 , and we have a partial bijection which accounts for all intervals except those of type @xmath647 $ ] .
now consider the connecting homomorphism in the same mayer
vietoris sequence : @xmath713 by exactness , @xmath714 induces an isomorphism between the cokernel of @xmath661 and the kernel of  @xmath662 . but
the @xmath647 $ ] summands of @xmath715 precisely span @xmath716 , whereas the @xmath647 $ ] summands of @xmath717 span @xmath718 .
this establishes the claimed bijection between the @xmath647 $ ] intervals .
[ ex:1param ]
let @xmath719 be a sequence of simplicial complexes defined on a common vertex set .
suppose these have arisen in some context where each transition @xmath36 to @xmath720 is regarded as being a ` small ' change .
there are two natural zigzag sequences linking the  @xmath36 .
the union zigzag , @xmath721 : @xmath722{x_1 \cup x_2 } \node[2]{\dots } \node{\dots } \node[2]{x_{n-1 } \cup x_n } \\
\node{x_1 }    \arrow{ne } \node[2]{x_2 }    \arrow{nw }    \arrow{ne } \node[3]{x_{n-1 } }    \arrow{nw }    \arrow{ne } \node[2]{x_{n } }      \arrow{nw } \end{diagram}\ ] ] the intersection zigzag , @xmath723 : @xmath724{x_2 } \node[3]{x_{n-1 } }    \node[2]{x_{n } }    \\
\node[2]{x_1 \cap x_2 }    \arrow{nw }    \arrow{ne } \node[2]{\dots }    \arrow{nw } \node{\dots }    \arrow{ne } \node[2]{x_{n-1 } \cap x_n }    \arrow{nw }    \arrow{ne } \end{diagram}\ ] ] we can think of these as being indexed by the half - integers @xmath725 .
we can apply the strong diamond principle @xmath69 times to derive the following relationship between the zigzag persistence of the two sequences @xmath726 and @xmath727 . restricting to the integer indices
, there is a coarse equality : @xmath728 more finely , there is a partial bijection between @xmath727 and @xmath726 .
intervals @xmath729 $ ] shift homological dimension by @xmath730 ( from the intersection sequence to the union sequence ) . otherwise @xmath116
\leftrightarrow [ b',d']$ ] where @xmath731 is an unordered pair of the form @xmath732 and @xmath733 is an unordered pair of the form @xmath734 ; dimension is preserved .
figure  [ fig : n2u ] illustrates the complete correspondence as a transformation of the persistence diagram , for @xmath735 .
to @xmath736 , for @xmath735 : points in the persistence plane move according to the arrows ; points marked @xmath737 stay fixed and increase homological dimension by  1 . ]
we have presented the foundations of a theory of zigzag persistence which , we believe , considerably extends and enriches the well known and highly successful theory of persistent homology .
zigzag persistence originates in the work of gabriel and others in the theory of quiver representations .
one of our goals has been to bridge the gap between the quiver literature ( which is read largely by algebraists ) and the current language of applied and computational topology . to this end
, we have presented an algorithmic form of gabriel s structure theorem for @xmath68 quivers , and have indicated the first steps towards integrating these ideas into tools for applied topology .
there are several ways in which this work is incomplete .
the most significant omission is an algorithm for computing zigzag persistence in a homological setting ( as distinct from the somewhat sanitised vector space algorithm described in section  [ subsec : algconc ] ) .
we address this gap in a forthcoming paper with dmitriy morozov  @xcite , where we present an algorithm for computing the zigzag persistence intervals of a 1-parameter family of simplicial complexes on a fixed vertex set .
we have made no effort in this paper to flesh out the applications suggested in section  [ sec : intro ] .
there is often a substantial gap between the concrete world of point - cloud data sets and the ideal world of simplicial complexes and topological spaces .
we intend to develop some of these applications in future work .
meanwhile , we have given priority to establishing the theoretical language and tools .
the diamond principle is particularly powerful . in the manuscript with morozov  @xcite ,
we show that the diamond principle can be used to establish isomorphisms between several different classes of persistence invariants of a space with a real - valued ( e.g.  morse ) function .
in particular , we use zigzag persistence to resolve an open conjecture concerning extended persistence  @xcite .
this supports our prejudice that zigzag persistence provides the appropriate level of generality and power for understanding the heuristic concept of persistence in its many manifestations .
the authors wish to thank greg kuperberg , konstantin mischaikow and dmitriy morozov for helpful conversations and m.  khovanov for helpful correspondence .
the authors gratefully acknowledge support from darpa , in the form of grants hr0011 - 05 - 1 - 0007 and hr0011 - 07 - 1 - 0002 .
the second author wishes to thank pomona college and stanford university for , respectively , granting and hosting his sabbatical during late 2008 .