Applying the AFC Test: What the AFC Test Reveals

November 20, 2017 - from DisputeSoft's Josh Siegel and T.J. Wolf

In the first installment in this series, we answered the question, What is the AFC test? In the second installment we discussed when to apply the AFC test. In this installment, we consider what the AFC test reveals. Consider the following example, which illustrates the AFC test’s ability to reveal hidden similarities in the structure, sequence, and organization of two programs.

Company A creates a Java program for baking pies. This simple program is named “Bake Pie,” and Company A holds a registered copyright for “Bake Pie.”

Company B also creates a Java program for baking pies. This program is named “Perfect Pie.” The “Perfect Pie” program was written by a former employee of Company A, and evidence indicates that the employee took a thumb drive containing the “Bake Pie” code with him after his termination. Company A sues Company B and former employee for copyright infringement, and code for both programs is produced for experts to review.

An expert must first determine whether literal copying occurred, perhaps by using text comparison software to directly compare the programs line-by-line. Were an expert to use a text comparison software, like Beyond Compare , to examine the “Bake Pie” and “Perfect Pie” programs, the result of such a comparison might look something like the screenshot below, with “Bake Pie” on the left and “Perfect Pie” on the right. Lines in white match exactly, while lines highlighted in red do not match.

Most of the programs’ lines match exactly, indicating that literal copying occurred. A situation in which literal copying occurred may not require an expert to perform the AFC test.
But perhaps, instead of creating “Perfect Pie” in Java, the language used in “Bake Pie,” Company B creates it in the Visual Basic .NET language. The below screenshot illustrates what happens when an expert compares the two programs using Beyond Compare.

One cannot immediately determine whether one program was copied from the other by merely looking at the literal code, as no text matches exactly, and the programs share only blank lines. This is a direct result of “Perfect Pie” being written in an entirely different programming language than “Bake Pie.” However, these two programs still may be similar in other ways.

While the text comparison software indicates that “Pefect Pie” did not copy source code directly from “Bake Pie,” the two programs’ variable names, method names, and program sequence are suspiciously similar, raising the question of whether non-literal elements of “Perfect Pie” were copied from “Bake Pie.” How might an expert determine whether “Perfect Pie” exhibits similarity to “Bake Pie” with regard to structure, sequence, and organization?

In this example, assume that the employee in question had access to the original protected work of Company A. This fact allows us to analyze the two programs for evidence of non-literal copying. One method of conducting such an analysis is to apply the AFC test. For the purposes of this example, we abstract each program into simple modules, with a module for each function. Assume as well for this example that after applying various filters (e.g., legal doctrines, industry-specific requirements, etc.), we have concluded that nothing needs to be filtered out of the programs, as they contain only protectable code. Now that the abstraction and filtration steps are complete, we can compare the programs; one way to do this is by examining the programs’ “control flow” through the modules.

The way a program gets from start to finish is referred to as its control flow. A computer program that needs to accomplish a specific task can do so using a variety of different control flow structures, and a programmer’s decision to design a program’s control flow one way instead of another way may arguably be protectable expression. Examining control flow can reveal similarities in two programs’ structure, sequence and organization that may have remained hidden from other analyses. Below are two control flow diagrams, one for “Bake Pie” and one for “Perfect Pie,” with similarities in structure, sequence, and organization highlighted in yellow.

Although the “Perfect Pie” program contains three pies (Pecan, Banana, and Coconut) that “Bake Pie” does not, and the “Bake Pie” program contains one pie (Blueberry) that “Perfect Pie” does not, the diagrams show that the structure, sequence, and organization of “Perfect Pie” is very similar to that of “Bake Pie.” Both start in the same way, generate a person to create the pie, create the pie by getting user input, call the function to create the pie, and generate a pie as the end result. Such similarity suggests that non-literal elements of “Perfect Pie” were copied from “Bake Pie.” Had “Perfect Pie” accomplished the same task as “Bake Pie” by ordering the steps of its control flow differently or by employing completely different procedures, the non-literal elements of the two programs may have been different enough to conclude that protected expression was not copied from the other.

The AFC test can reveal material similarities between programs that may have otherwise remained hidden. Experts use the process of abstracting programs into modules, filtering out non-protectable elements, and comparing the control flow of the programs to come to an opinion regarding whether two programs that differ literally are still substantially similar. This is especially necessary when a party suspects that protected code was copied and translated into a different programming language or otherwise used as the basis for creating a competing program. To learn more about the services we provide as Copyright Infringement Experts, please don’t hesitate to contact us at

Applying the AFC Test: When to Apply the AFC test

October 16, 2017 - from DisputeSoft's Josh Siegel and T.J. Wolf

We noted in our first blog in this series that when evidence of literal copying is non-existent, inconclusive, or particularly weak, and defendants had access to a protected work, experts can search for evidence of non-literal copying. But in what kinds of matters is it appropriate for an expert to employ the AFC test? The AFC test applies to intellectual property suits as follows:

-Copyright (YES): The AFC test was expressly adopted for copyright matters in which one party contends that non-literal copying of computer software has occurred. An expert abstracts source code to the appropriate level, filters out non-protectable expression, and compares the remaining expressive elements of the filtered programs for substantial similarity.

-Trade Secret (MAYBE): When an allegedly misappropriated trade secret involves computer software, an expert can follow abstraction-filtration-comparison methodology similarly to the way he/she would in a copyright matter. The abstraction step remains the same, but filtration removes elements not protectable as trade secrets, such as open source code. After filtration, an expert can then compare the parts of the program remaining against the allegedly misappropriated trade secrets/

-Patent (NO): The AFC test is not applicable to patent litigation. Patent protections deal closely with explicit functionality, not with expression. The process of abstraction is not appropriate when reviewing patents, as any level of abstraction removes the specificity required for patent claim and/or specification comparison and analysis.

The AFC test, as variously promulgated by several District Courts, is an accepted method for determining whether indirect or non-literal copying has occurred in intellectual property matters involving copyrights and trade secrets, but it is not used for matters concerned with patents. Check back next month for the next installment in our “Applying the AFC Test” series: “Why use the AFC test?” To learn more about the services we provide as Copyright Infringement Experts, please don’t hesitate to contact us at

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