Log-space transducer

In computational complexity theory, a log space transducer (LST) is a type of Turing machine used for log-space reductions.

A log space transducer, $$M$$, has three tapes:
 * A read-only input tape.
 * A read/write work tape (bounded to at most $$O(\log n)$$ symbols).
 * A write-only, write-once output tape.

$$M$$ will be designed to compute a log-space computable function $$f\colon \Sigma^\ast \rightarrow \Sigma^\ast$$ (where $$\Sigma$$ is the alphabet of both the input and output tapes). If $$M$$ is executed with $$w$$ on its input tape, when the machine halts, it will have $$f(w)$$ remaining on its output tape.

A language $$A \subseteq \Sigma^\ast$$ is said to be log-space reducible to a language $$B \subseteq \Sigma^\ast$$ if there exists a log-space computable function $$f$$ that will convert an input from problem $$A$$ into an input to problem $$B$$ in such a way that $$w \in A \iff f(w) \in B$$.

This seems like a rather convoluted idea, but it has two useful properties that are desirable for a reduction:
 * 1) The property of transitivity holds. (A reduces to B and B reduces to C implies A reduces to C).
 * 2) If A reduces to B, and B is in L, then we know A is in L.

Transitivity holds because it is possible to feed the output tape of one reducer (A&rarr;B) to another (B&rarr;C). At first glance, this seems incorrect because the A&rarr;C reducer needs to store the output tape from the A&rarr;B reducer onto the work tape in order to feed it into the B&rarr;C reducer, but this is not true. Each time the B&rarr;C reducer needs to access its input tape, the A&rarr;C reducer can re-run the A&rarr;B reducer, and so the output of the A&rarr;B reducer never needs to be stored entirely at once.