Applying the AFC Test: What is the AFC Test?

September 18, 2017 - from DisputeSoft's Josh Siegel & T.J. Wolf

Software development is a competitive business, and disputes over intellectual property can arise when software engineers move to new companies that compete with their former employers. Should a dispute result in litigation, expert witnesses may be employed to determine whether and to what extent a party copied proprietary source code.

Experts encounter two kinds of copying: literal copying and non-literal copying. To prove copying occurred, a plaintiff must demonstrate that an alleged infringer had access to the copyrighted material and that the allegedly infringing work is substantially similar to the protected work. Experts are primarily employed to find evidence that supports or refutes allegations of substantial similarity.

In most cases of this sort, an expert first examines code for evidence of literal copying. Experts use a variety of software analysis tools to determine whether portions of code from program A were copied directly into program B. Such tools allow experts to review and compare source code files to determine whether the same text appears in both programs and the extent to which the programs overlap.

When evidence of literal copying is non-existent, inconclusive, or particularly weak, experts can search for evidence of non-literal copying. To find evidence of non-literal copying, an expert must determine whether protectable non-literal elements of a computer program, such as its “look-and-feel” or “structure, sequence, and organization” have been copied from one program into another. The Abstraction-Filtration-Comparison (“AFC”) test is a methodology promulgated by several U.S. district courts that allows an expert to analyze and compare the protectable elements of code of two programs.

The U.S. Circuits conceptualize and prescribe slightly different approaches for conducting an AFC test by placing emphasis on different “levels of abstraction.” For example, the Ninth Circuit focuses on the software’s structure, sequence, and organization, as well as user interfaces as the appropriate levels at which the abstraction analysis takes place, whereas the Second Circuit emphasizes parameter lists and services required. However, the test always has three steps.

– Abstraction incrementally pulls back from source code to compare the “structure, sequence, and organization” or the “look-and-feel” of two programs at different levels of generality/specificity. By analogy, this is similar to zooming out from a detailed map. If we think of source code as specific houses on a street, Abstraction involves zooming out to view the street’s location in a neighborhood, the neighborhood’s location within a city, the city’s location within a state, and so on. The appropriate level of “zoom” varies from case to case, and there is no one-size-fits-all. Two programs may appear completely different from each other when viewed at street level or city level, and an expert may need to examine the programs at the state level to view them in the way that they are most appropriately comparable to each other.

– Filtration removes any non-protectable elements of code before they are compared to allegedly infringing code. Non-protectable elements of code may be auto-generated, open source, or otherwise unoriginal or non-protectable. Since such code does not receive copyright protection, finding similarities between two programs’ non-protectable elements would not be useful or appropriate. Once the non-protectable elements of the programs are filtered out, all that remains are the protectable parts of each program as viewed at the appropriate level of abstraction, ready for comparison to each other.

– Comparison compares the two programs at the appropriate level of abstraction, with all non-protectable elements filtered out. During the Comparison stage, an expert comes to an opinion regarding substantial similarity between the two programs, and thus, whether copying of non-literal elements has occurred.

While the appropriate abstraction level varies from case to case and circuit to circuit, AFC methodology is repeatable. The value of the AFC test lies in its ability to uncover copying of non-literal elements of a computer program, which is useful in situations where copying is not obvious solely from a review of source code.

The AFC test is clearly applicable to copyright infringement matters involving allegations of non-literal copying; but could it be used to contemplate other intellectual property claims as well? To learn more about the kinds of intellectual property matters for which the AFC test can be used, check back next month for the next installment in our “Applying the AFC Test” series: “When to Apply the AFC Test.” To learn more about the services we provide as Copyright Infringement Experts, please don’t hesitate to contact us at