What is in practice an anticausal filter? Could someone enlighten me about anticausal filters?
Actually, I'm trying to understand why the function
$\dfrac{1}{1-az}$ is the transfer function of a first order anticausal filter.
I think I understood why $\dfrac{1}{1-az^{-1}}$ is the transfer function of a first order causal filter : a first order causal filter is given by
$$
y(n) = x(n) + ay(n-1)
$$
and hence we can compute the output recursively and we obtain the impulse response $a^nu(n)$. Then the z-transform of this function is indeed $\dfrac{1}{1-az^{-1}}$.
But now for the anticausal filter I'm having doubts. A first order anticausal filter is given by $y(n) = x(n) + ay(n+1)$, right? Then how can I compute the outputs? Am I supposed to have an initial condition for some indice K and then applying the recursion in the decreasing way? Could someone give an example? I feel lost because it's the reverse case of the causal filter. And how can I get to the transfer function $\dfrac{1}{1-az}$?
Thanks a lot!
Marie
 A: By definition,

A causal filter is a filter whose output depends only on past and present
  inputs.

The filter described by the difference equation 
$$
\tag{1}
y[n] = x[n] + ay[n+1],
$$
is not causal. Indeed, by repeated use of $(1)$, one can write
$$
\begin{align}
y[n] &=x[n]+a(x[n+1]+ay[n+2])\\
&=x[n]+ax[n+1]+a^2y[n+2]\\
&=x[n]+ax[n+1]+a^2(x[n+2]+ay[n+3])\\
&=\cdots\\
\tag{2}
&=\sum_{l=0}^{\infty}a^lx[n+l],
\end{align}
$$
i.e., the output at time $n$ depends on current and future input values. Equivalently, one can show that the impulse response of the system is 
$$
h[n]=a^{-n}u[-n]
$$
which has non-zero elements for $n<0$, whereas a causal impulse response has non-zero elements only for $n\geq0$.
Now, it may appear that a non-causal filter is only a mathematical concept with no practical implementation as "one needs to know the future". In practice, a non-causal filter is implemented by introducing a sufficiently large delay. In particular, the system buffers the signal values $x[n],x[n+1],x[n+2],\cdots, x[n+D]$ where $D>0$ is the delay and computes the output $y[n]$ as $y[n]=\sum_{l=0}^{D}a^lx[n+l]$. 
Note that with this approach:


*

*The output $y[n]$ is computed when the signal $x[n+D]$ is available, i.e., the output is generated with a delay of $D$ samples.

*From $(2)$, the output at a certain instant depends on all future input samples. For practical reasons, we have to consider only a finite number (equal to $D$) of future input samples. Therefore the value of $D$ not only affects the delay of the output but also the computation accuracy (larger $D$ will provide a more accurate approximation of the output, however, with a cost of increased delay).

