If what you mean by redundant links is a situation where for example you
have task A as a predecessor to Task C, and Task B as a predecessor to Task
C, and A as a predecessor to Task B, then no, there is not automatic way to
eliminate the dependency.
I think that with some clever programming you could do this. You would have
to create an array of the dependencies for a task, then trace each of them
and if a task which is in the dependency list was found one or more steps
removed from the task then you would eliminate that dependency. Of course
you would have to check for any lags as well, as there might be some valid
reason for the redundancy.
Since the presence of redundant links does nothing bad other than to clutter
the file I don't see much incentive to automate the elimination of them.
One macro which I wrote can help you to filter your project so that it will
be easier to find these things.
Look at the "Trace" macro at:
http://masamiki.com/project/macros.htm
and select "all" when you are using it.
It won't eliminate anything, but will filter out certain chains of events so
that it is easier to see them.
-Jack