Ever increasing demands on reliability call for tools for error detection in early stages of the design cycle. BEAM is such a tool, that detects errors by source-code analysis. Its main goal is low programmer cost per error reported. It achieves that by using techniques from lint-like tools and from formal verifiers. Like lint (and unlike verifiers) it requires no information above what is needed for compilation. Like formal verifiers (and unlike lint) it performs theorem proving in order to determine whether a potential error is feasible. The result is that an error is reported only if there are input that can cause it.
BEAM can accept information about specific programming projects allowing it to detect user specific error. Examples include violations of special protocols, illegal data base accesses, coding inefficiencies. On the average BEAM detects about one error per thousand lines of "tested" code.