diff --git a/fs-succinct/Makefile b/fs-succinct/Makefile
index 33dc94d5bc23aedff1319f6331e34ac3ecd4ef80..08ab41e0f244a1f93051c26a871e87acf61334c2 100644
--- a/fs-succinct/Makefile
+++ b/fs-succinct/Makefile
@@ -1,5 +1,5 @@
 TOP=..
-PICS=sole sole_boxes sole_hilevel mixer
+PICS=sole sole_boxes sole_hilevel mixer composition
 
 
 include ../Makerules
diff --git a/fs-succinct/composition.asy b/fs-succinct/composition.asy
new file mode 100644
index 0000000000000000000000000000000000000000..a382b3043279997f9cb221fd31420c591b60db5d
--- /dev/null
+++ b/fs-succinct/composition.asy
@@ -0,0 +1,24 @@
+//import ads;
+//import flowchart;
+
+//draw(roundrectangle("f", (0,0)));
+//draw(roundrectangle("g", (1,-1)));
+//draw(roundrectangle("h", (-1,-2)));
+
+object f1 = draw("$f_1$", roundbox, (0,0),     xmargin=0.5, ymargin=0.5);
+object f2 = draw("$f_2$", roundbox, (1cm,-1cm),    xmargin=0.5, ymargin=0.5);
+object f3 = draw("$f_3$", roundbox, (-1cm,-1.5cm), xmargin=0.5, ymargin=0.5);
+
+// XXX this does not work when setting unitsize
+draw(point(f1, SE) -- point(f2, NW), Arrow);
+draw(point(f1, SW) -- point(f3, NE), Arrow);
+draw(point(f2, W) -- point(f3, E), Arrow);
+
+draw(roundbox(bbox(), xmargin=0.35cm));
+
+draw(point(f2, S) -- (xpart(point(f2, S)), -2.5cm), Arrow);
+draw(point(f3, S) -- (xpart(point(f3, S)), -2.5cm), Arrow);
+draw((xpart(point(f1, N)), 1cm) -- point(f1, N), Arrow);
+
+label("$f$", (xpart(min(currentpicture)), ypart(max(currentpicture))) + (0.25cm, -0.25cm));
+
diff --git a/fs-succinct/succinct.tex b/fs-succinct/succinct.tex
index 91c016ed61c7347b40fa87b9fa2f31c80730cb7d..b6b1679e5e9c73869bdf7fb505000f1f8e45fee5 100644
--- a/fs-succinct/succinct.tex
+++ b/fs-succinct/succinct.tex
@@ -284,6 +284,23 @@ want to set $C$ so that it satisfies the inequality $C \cdot Y \le 2^M$. Basical
 we are asking the question how much information can we fit in $m$ in addition to
 the whole of $y$. Clearly we want $C$ to be as high as possibly, thus we set
 $C := \lfloor 2^M / Y \rfloor$.
+
+Now let us calculate the redundancy. First we shall note that we can compute redundancy
+for $f_1$ and $f_2$ separately and add them up:
+$$\eqalign{r(f) &= M + \lceil\log S\rceil - \lceil\log X\rceil - \lceil\log Y\rceil \cr
+&= \left(M - \lceil\log C\rceil - \lceil\log Y\rceil\right) + \left(\lceil\log C\rceil + \lceil\log S\rceil - \lceil\log X\rceil\right)\cr
+&= r(f_2) + r(f_1)}$$
 }
+This is just a telescopic sum. It works similarly for more complex mapping compositions:
+as long as each intermediate result is used only once as an input to another mapping, you
+can just sum the redundancies of all the mappings involved.
+
+For example, if you have a mapping composition as in fig. \figref{composition},
+you can easily see $r(f) = r(f_1) + r(f_2) + r(f_3)$.
+\figure[composition]{composition.pdf}{}{Mapping composition}
+
+First, we shall estimate $r(f_2)$:
+$$\eqalign{r(f_2) &= M - \log(Y\cdot C)= M - \log(\overbrace{Y\cdot \lfloor 2^M / Y \rfloor}^{\ge 2^M - Y})\cr 
+r(f_2) &\le M - \log(2^M-Y)= \log{2^M\over 2^M-Y} = \log{1 \over 1-{Y \over 2^M}}}$$
 
 \endchapter