On October 30, 2008, the United States Court of Appeals for the Federal Circuit issued its decision in **In re Bilski**, which dealt a **serious blow to software patents** and largely did away with **business method patents **altogether, although there is still some room to receive a patent if the business process employs the use of a new, nonobvious and tangible computer system, but the protection would have to focused on the tangible computer system that employs an overarching architecture and not the process. I have written much about the decision of the Federal Circuit, and its wisdom, or lack thereof. For about a month I have owed **Groklaw** a response to some thoughtful comments regarding my opinions and beliefs, so without further ado I will try and explain my thoughts and what I would like to see moving forward. This will require a series of posts, so this post will act as Part 1.

I have been criticized quite a lot for statements I have made that computer software is not the same as math, and I simply cannot back away from that. Nevertheless, as I have read through comments provided to Groklaw I am not so sure that my critics and I are as far apart on this position as one would belief. One particularly helpful comment was made by Daniel Berinson, who has a PhD in Physics and got his degree in electrical engineering but who is also a programmer. Daniel cites to **On the Interplay Between Mathematics and Programming** by E. W. Dijkstra. Here are a few quotations from Dijkstra:

- “So much for the care needed to keep the arguments manageable: we can summarize it by stating that in programming mathematical elegance is not a dispensable luxury, but a matter of life and death.”
- “The programmer applies mathematical techniques in an environment with an unprecedented potential for complication; this circumstance makes him methodologically very, very conscious of the steps he takes, the notations he introduces etc.”
- “Much more than the average mathematician he is explicitly concerned with the effectiveness of this argument, much more than the average mathematician he is consciously concerned with the mathematical elegance of his argument.”

I would agree with all of this and do not see how what Dijkstra says in any way contradicts what I have said or what I believe. I think the disagreement between me and my critics is largely due to the way patent law views mathematics, which seems admittedly quite different from the way that many computer programmers view mathematics.

It is impossible to argue that software code does not employ mathematical influences, because it does. I think Dijkstra’s explanation that a “programmer applies mathematical techniques” is completely true and accurate. Having said this, the fact that mathematical techniques are employed does not as a matter of fact mean that software is mathematical. Under the US patent laws you cannot receive a patent that covers a mathematical equation or a law of nature. You can certainly use mathematical equations and laws of nature as the building blocks to create something that is new and nonobvious that is patentable. So even if software used mathematical equations there would be no prohibition against the patenting of software under a true and correct reading of the US patent laws.

The primary example defining the ability to use mathematical equations within an invention is the United States Supreme Court’s decision in **Diamond v. Diehr**, where the inventors claimed a method of operating molding presses during the production of rubber articles. The inventors asserted that their method ensured that articles remained within the presses for the proper amount of time. The patent examiner rejected the patent claims because it was believed that the patent claim recited a mathematical equation. The Board of Appeals within the Patent Office affirmed the examiner, but then the Court of Customs and Patent Appeals (the predecessor of the Federal Circuit) ruled that the claims were not directed to a mathematical algorithm, but rather to an improved process for molding rubber articles. The Supreme Court agreed with the CCPA and ruled that the claims were not an attempt to patent a mathematical formula, but rather covered an industrial process that utilized a mathematical formula. So the fact that mathematical computations were ongoing during the monitoring phase of the rubber curing process did not mean that the mathematical equations were being removed from the public domain. Others could use the mathematical equations and computations, just not as a part of the protected industrial process that resulted in properly formed and cured rubber. Now the Supreme Court’s decision in Diamond v. Diehr may be offensive to some, but it is well established and consistent with US patent laws, so for a legal discussion this needs to be the starting point.

Returning to the matter of software generally, the logic employed by the computer programmer is certainly of a mathematic nature, but that is quite different than saying that the code created by the programmer is a mathematical algorithm. Now I am speaking in generalities here, but what I am trying to address is whether all computer software should be considered unpatentable subject matter. I see absolutely no justification for all software to be considered unpatentable subject matter because it is simply not correct to say that software code is the equivalent of a mathematical equation or a mathematical algorithm. Employing the same logical structure is certainly wise, and complies with best practice standards for programming, but at the core computer software directs. The code is a series of instructions written using mathematical logic as its foundation. In the patent arena this does not and cannot mean that the patenting of software is the equivalent of patenting mathematics. It merely means that the instructions are written in a language and format that are heavily influenced by mathematics.

Before I proceed it is important to perhaps state the obvious. The fact that software ought to be considered **patentable subject matter** does not by any stretch of the imagination lead to the conclusion that software should be patented. It is unfortunate that the patent laws unnecessarily jumble the complex question of whether an invention ought to be patented by having the conclusion (i.e., patented) and one of the **five patentability requirements** (i.e., patentable subject matter) use confusingly similar labels for different concepts. The fact that an invention is patentable subject matter means only that the invention is one that could potentially receive a patent if it is useful, new, non-obvious and described specifically enough to satisfy the requirements of the US patent laws and rules. So the patentable subject matter inquiry is a threshold inquiry, not a conclusion that a patent will or ought to issue.

It is undeniable that programmers employ logic similar to the logic employed by mathematicians. Reaching the conclusion that the use of the same or similar logic means that software code is mathematical is a step to far. The influence mathematics has on programmers is largely or perhaps even solely related to work-flow. Mathematics teaches us how to manage a problem by going through the steps to solve the problem in a predictable and traceable manner. By employing the same type of thoughtful, step-by-step approach to writing code the programmer can manage write segments of code and tie everything together into an overall structure that will deliver the desired functionality. As we all know, first attempts fail with almost a 100% certainty, so where the mathematical influence can best be seen to be useful is in the debugging process. By following rules and processes learned from mathematics the debugging process becomes manageable.

I just cannot reconcile in my mind why employing lessons learned from mathematics would, could or ought to render software unpatentable. If you take this logic to its extreme you are left with absolutely nothing being patentable, which I suspect is the goal of some, but certainly not all, of those who would rather software not be patentable subject matter. Again, it is undeniable that mathematics is the backbone to virtually everything. Virtually everything can be explained using mathematical models. If you combine mathematics and physics there is virtually no mechanical, electrical or chemical phenomena that cannot be explained in a descriptive way. So does that mean that mechanical, electrical and chemical inventions ought not to be patentable?

Similarly, we know that there are known processes for investigating and researching in laboratories. The way that experiments are conducted and memorialized are through the use of the same mathematical logic that is employed by computer programmers. In order for a discovery to be believed it must be reproducible, so there needs to be a definition of controls, environment and process so that others can engage in the same process to verify the outcomes. This process is also extremely mechanical and largely influenced by mathematical logic and processes. So does that mean that anything that is the creation of a scientific process ought not to be patentable because the logic employed is the logic of mathematics?

Mathematics is the backbone of science and the backbone of invention. If we are willing to say that processes that relate to a computer are not patentable because they employ mathematical structures and logic then where does the line get drawn? In the patent context we cannot and do not concern ourselves with the foundational information and logic used by the inventor to achieve an invention. If we did then absolutely nothing would be patented because everything that can be created is a combination of elements and steps that have previously existed. Rather we focus on the output of scientific efforts. Is the output something that is sufficiently new and nonobvious to deserve a patent?

I tend to think that the real problem presented by software is not whether it is or ought to be patented, but rather the patent term associated with the awarding of a patent. For all intents and purposes a US patent can last for 20 years from the original filing date of the patent application, although we know that most patents do not last that long because they fall into the public domain far earlier due to the failure to make maintenance fee payments. Nevertheless, 20 years is a long time to provide protection for an invention that likely has a useful active life of maybe 2 years. On top of that, in the area of computer technologies you are going to wait on average wait 30.8 months to receive any substantive response from the Patent Office on your application, and will wait on average 42.4 months to have the application finally resolved. This is an unacceptably long wait, and 20 years is an unacceptably long period of time to grant protection. In my opinion we need to stop focusing on whether software ought to be patentable and decide to make it patentable once and for all. At the same time we need to figure out ways to cut the time inventors wait down to an acceptable length, and abandon the one-size-fits-all patent term. If we really want to benefit society as is the constitutional purpose we need to encourage, not discourage, the filing of patent applications and recognize rights for a reasonable but limited amount of time. It does no one any good to have computer related applications tied up in the Patent Office for 3.5 years, and it does society no good to recognize a right that lasts 20 years on technology that has at best a 5 year life cycle.

**About the Author**

President & Founder of IPWatchdog, Inc.Eugene R. Quinn, Jr.US Patent Attorney (Reg. No. 44,294) B.S. in Electrical Engineering, Rutgers University |

Gene is a US Patent Attorney, Law Professor and the founder of **IPWatchdog.com**. He teaches **patent bar review courses** and is a member of the Board of Directors of the United Inventors Association. Gene has been quoted in the Wall Street Journal, the New York Times, the LA Times, CNN Money and various other newspapers and magazines worldwide.

jJanuary 5, 2009 12:03 pmHi Gene,

What has happened to the blog posting and comments on pli.edu on this topic? A very healthy debate was still in progress.

j

Gene QuinnJanuary 5, 2009 12:45 pmJ-

A decision was made to change the format of the PLI blog. I will continue to write for the PLI blog, but the articles I write will be posted here on IPWatchdog.com. The PLI Patent Center page will continue to exist and have polls, but the links to the articles will take you to IPWatchdog.com where you can read the full article and comment. I did not know exactly when the change would occur, but it appears as if it has happened today. I fear that the comments that existed on this topic and published on the PLI site are lost, but I will inquire.

I apologize for any inconvenience, but hope that folks will continue reading my writings published here and comment to keep the debate ongoing. I will be writing more about software in the coming weeks, so hopefully we can jump start a new debate.

Thanks for your interest in my writings.

-Gene

ikhJanuary 7, 2009 12:34 amHere is a repeat of my previous post before the blog was moved:

breadcrumbs,

“Yet again, I ask, can a computer, tabula rasa, ACTUALLY perform in the same manner as a computer with software loaded? It really is a very simple and telling question.” – breadcrumbs

This is also a gedanken or thought experiment. Such a computer does not of course exist.

When the computer is powerd up memory takes on random values, as does the processor registers and the computer does what it is designed to do. It reads from memory, it writes to memory, it comutes numbers. It will start excuting instructions from the random value in the register known as the program counter and calculate numbers based on the values it finds.

If you switch it on ennough times it will generate every possible program that will fit within the memory. Computers do not stop computing just because no software has been loaded.

“Yes, a computer is built to be capable of having software loaded. This is NOT the same as saying that a computer, tabula rasa, encompasses the actuality of ALL possible software loadings, even those not yet developed.” – breadcrumbs.

As you can see from what I have written above this statement of yours is false.

“Turing -complete and universal algorithms are nice abstractions, but require infinite tape length and infinite time to meet the abstraction functionality.” breadcrumbs.

No. Turing used the infinite memory so that his proof would show that the usiversal Turing Machine was still universal for special purpose Turings machines of upto infinite size. It means that the proof works for any and all special purpose machines work on a Universal Machine. As PoIR says there are many Universal algorithims or Machines that have been proven to Turing Equivelent and infinite memory is not requied for Turing Equivilence. Babbages Analyical Engine is one such example and the modern computer is another.

“Case Law is NOT making a mistake in this manner. Your only recourse in not accepting what case law states does indeed boil down to a philospohical stand on refusing to believe that the first capability of the computer machine is indeed the capability to be transformed into a new machine.” – breadcrumbs.

We don’t tend to use philospohical arguments and everything I have stated above is fact. Computers don’t change into a new machine because of software has nothing to do with beliefs. Computers compute numbers you and the courts have created the idea, abstraction, belief, in a new machines. That does not make it true or even a good model. It simply means the courts do not understand computers well enough yet.

Take the Babbage Analytical Engine. It is a Turing Equivilent Engine. Its memory and processor are made of cogs and levers. And you are arguing that the position of the cogs and levers makes a new machine.

The courts also frequently make errors of fact in their judgements. One common one is that some claim requires a particular layout in physical memory. The following example is from in re Lowery:

“Indeed, Lowry does not seek to patent the Attributive data model in the abstract. Nor does he seek to patent the content of information resident in a database. Rather, Lowry’s data structures impose a physical organization on the data.”

^^^^^^^^

Physical layout of memory is a function of the CPU, MMU ( Memory Management Unit ) and the Operating System. Applications Programs no nothing of physical memories layout. They only can deal in the logical abstract layout of memory in a logical abstract machine.

“In Lowry’s invention, the stored data adopt no physical “structure” per se. Rather, the stored data exist as a collection of bits having information about relationships between the ADOs. Yet this is the essence of electronic Structure.”

The essence of electronic Structure! Someone has been serriously misleading them.

In Lowery quoting in re Bernhart:

“There is one further rationale used by both the board and the examiner, namely, that the provision of new signals to be stored by the computer does not make it a new machine, i.e. it is structurally the same, no matter how new, useful and unobvious the result…. To this question we say that if a machine is programmed in a certain new and unobvious way, it is physically different from the machine without that program; its memory elements are differently arranged.”

No! Its memory elements are not differently arranged. They hold different values. This is the same as a piece of paper that is written on by a pen being a different machine depending on what you write on it.

BTW, I’d still be interested in you comments on my abbacus example.

/ikh

jJanuary 7, 2009 7:11 amGene,

Just before the PLI blog archives were removed I posted a comment similar to what is below. The discussion had been pointing to case law and it’s use of new software on a computer being a “new machine” and therefore patentable. Please consider the following and answer

We have both independently created new inventions. These inventions are braking systems – yours works by hydraulics, mine by electromagnetism. Each takes the form of a black box with a micro switch and has a linkage which can be attached to brake pads to force them against a braking disc. Both are patentable but, to all intents and purposes, indistinguishable from each other. They look the same (size, shape, colour etc), have the same input (micro switch) and have the same output (movement of the linkage).

We both add a USB port to our black box brakes which allows for activation through the USB port from a simple on or off signal. Again they are indistinguishable and have the same inputs and the same outputs. These are again probably patentable.

Later we both do some programming. We use different programming languages, different operating systems, different microarchitectures and internal components, but the same inputs and outputs (ie keyboards, monitors, USB ports, etc). The computers we use take the form of a black box with a USB cable attached. Our programs do the same thing (eg check the time) and send an on or off signal down the USB port.

We can attach our black box computers to either of the black box brakes which will function as they did with the micro switch.

To find out whether our black boxes brakes infringe each other it would be necessary to dismantle them and examine the contents.

To find out whether our black box computers infringe each other it is NOT necessary to dismantle them and examine the contents. All that is necessary is to see that their actions are the same.

1) Why are our black box computers treated differently to our black box brakes? This I can only guess lies within case law.

2) Do the black box computers use different processes? There are, I think 2 answers to this question.

Yes. They use similar transistor level processes, but then so does all the compiled and running software that is out there. This would imply that no (running) software could be patentable – it’s been done before.

No. They use different microarchitectures. My black box computer could be based on RISC, yours on CISC. They might use the same transistor level processes, but these processes are done in a different way which is affected by the CPU, compiler, programming language, operating system, memory modules, motherboard, etc. This would imply that ALL (running) software is patentable – it’s never been done before. (Please bear in mind that with every clock tick of a CPU different gates are opening and closing which, given that there are millions upon millions of gates means that the possiblity of any 2 CPUs having the same configuration is pretty much impossible. There are also the memory modules, GPUs, northbridge, etc to consider.)

3) Are they, or are they not, different machines?

If yes then surely they are independantly patentable and neither will infringe the other.

If no, then why not? They have different internal parts and they operate in completely separate and distinct ways. I am unable to comprehend how 2 black boxes having different internal parts, structures, configurations and operations can logically be defined as being the same machine and therefore one being infringing if the other is patented. (Please bear in mind that with every clock tick of a CPU different gates are opening and closing which, given that there are millions upon millions of gates means that the possiblity of any 2 CPUs having the same configuration is pretty much impossible. There are also the memory modules, GPUs, northbridge, etc to consider.)

You, being a knowledgable patent attorney, managed to file your application before me. Though our machines are different, patent law says that I am infringing your patent.

j

jJanuary 9, 2009 5:05 amGene,

Please would you respond to my comment above. I understand that you are a busy man with clients to attend to but your lack of response does nothing to help bridge a gap which exists between software developers and patent attorneys. If you are thinking about the points raised and considering a response but don’t yet have the time to respond I’d be grateful if you could just say that.

j

Gene QuinnJanuary 9, 2009 11:00 amJ-

It is impossible to give you a concrete answer to your hypothetical question because there is some much information that needs to be considered before anyone can give an answer with respect to whether there is an infringement or not.

I think part of the problem here is that you seem to believe you understand patent law and infringement, but I am not sure that you really have a grasp on the intricacies. I do not mean that as a dig at all.

The fact that a machine or piece of software does the same thing as something that is patented does not at all mean that there is an infringement. In order for there to be an infringement each and every element of what is claimed needs to be present in the accused infringing device, so it is impossible to talk in terms of hypotheticals like you pose. The fact that two machines or two pieces of software provide the same functionality is not at all relevant. If I have a patent and you come up with something that provides the same functionality but does not use each step or each element as described in my patent claims then you are not infringing.

I think what you are getting at is that with software there is an enormous problem with respect to what is called enablement. I personally see no reason that software should be unpatentable subject matter, but that is a far cry from saying that software ought to be patented. All of the other patentability requirements ought to be satisfied in order to obtain a patent, and quite frankly in many if not most software patents the patentability requirements are not satisfied, which means that the patent claims and perhaps all claims are simply not valid and nothing to worry about at all.

For example, in many software patents there is only nebulous discussion of how things are actually done. You see this most frequently in business method and e-commerce applications. The patent reads more like a stream of ideas rather than any concrete discussion about how to actually implement the solution. In order to be valid and enforceable a patent needs to explain how the functionality is accomplished so that others knowledgeable would be able to follow the instructions provided and create the invention. If you read many software patents you know as well as I do that many, if not most, are cryptic and provide little if any useful guidance.

The fact that the Patent Office has allowed bad patents to issue ought not to mean that software should be considered unpatentable subject matter. If the patentability requirements were actually applied to software appropriately there would be less software patented and that which did receive patents would relate to well defined and truly new and nonobvious inventions.

_Gene

jJanuary 10, 2009 1:07 pmGene,

I freely admit that I don’t know much about patent law, it’s why I’m asking the questions I ask. I’m a reasonably logical person. I like to see things which come under the same rules being treated in a similar fashion. Again, I freely admit that are several (actually many) “intricacies” surrounding patents and infringement that I don’t understand. You may be thinking of me as a petulent child that refuses to listen to reason because I don’t know all the facts but when something runs contrary to what I believe, I feel that I must ask questions to get closer to the truth. If I’m convinced that my current thinking is wrong, then I would thank whoever had enlightened me and I would be content (and happy to admit that I was wrong).

The discussion on the PLI blog had been about how new software + computer = new machine. This was raised as the reason behind the patentability of software and that new machines are patentable. Software that exists on paper cannot be patented. How can it? It doesn’t do anything – it is just a list of instructions like a recipe in a cookbook. This is something I have not seen refuted by any lawyers. The enablement of software on a computer is what makes it patentable, currently.

I don’t know enough about patent law, mainly what has been discussed on the PLI blog (and a few others such as patently-o). I don’t know whether the lawyers that were posting on there were hiding something up their sleeves or whether they were showing all the arguments that they have. If enablement is the key aspect to patentability of software then I believe that every piece of software in existence could essentially be patentable.

On the PLI blog, breadcrumbs referred on a number of occasions to applied math being patentable. So even if software is maths, it is in its application that it can become patentable under 101 because it creates a new machine when running on a general purpose computer. In what way does it become a new machine? Apparently through the configuration of of the memory elements in re Bernhart and Fetterer, http://bulk.resource.org/courts.gov/c/F2/417/417.F2d.1395.8187.html

“To this question we say that if a machine is programmed in a certain new and unobvious way, it is physically different from the machine without that program; its memory elements are differently arranged. The fact that these physical changes are invisible to the eye should not tempt us to conclude that the machine has not been changed.”

This is a nonsensical statement. The physical changes that occur within a computer when a program runs will not be repeated in the same way each time the computer runs. The “machine” changes with each clock tick that the CPU, motherboard, RAM, etc experience. The machine will become a “new machine” with each clock tick.

With this illogical thinking from case law, a microVAX 2000 from 1987 (a mini computer) running the VMS operating system and a Motorola VE66 mobile phone running linux could be programmed with exactly the same functionality and yet an “inventor” with a patent on that functionality could sue for infringment even though the “invention” had previously never been implemented. This is something that is happening so my questions about the black boxes are relevent.

These are 2 very different “machines” which use different internal processes and yet case law says that irrespective of the hardware involved they are, in essence, the same machine.

I understand your point about patentability requirements, but if you apply the requirements of patentability – new machine, manufacture, process or composition of matter, or improvement thereof – as they keep being described, by Rocco Bama and breadcrumbs on the PLI blog and some other pro-software patent lawyers, then all software is separately and individually patentable whether or not it does the same thing as some other patented software because each “machine” is “new”.

Thanks for your time.

j

Gene QuinnJanuary 10, 2009 1:57 pmJ-

You said: “Software that exists on paper cannot be patented. How can it? It doesn’t do anything – it is just a list of instructions like a recipe in a cookbook. This is something I have not seen refuted by any lawyers. The enablement of software on a computer is what makes it patentable, currently.”

I am happy to refute this because you are not correct. When you file a patent application you explain the invention in writing. There is no requirement that there be a working model of the invention, with the sole exception being if you are claiming a perpetual motion machine. Only if you claim a perpetual motion machine must you produce a working model prior to receiving a patent. Otherwise the requirement is only that you explain your invention in writing enough so that others skilled in the area could reproduce your invention without having to spend undue amounts of time and energy to do so.

Additionally, processes are clearly patentable, and recipes are patentable as well. Now with recipes it would stretch the imagination that a recipe would be able to be both new and nonobvious, but recipes are patentable subject matter. See:

http://www.ipwatchdog.com/copyright/the-law-of-recipes/

This is the point that I think anti-software patent folks miss or refuse to accept. Processes are patentable subject matter now and always have been. Software is just a process, so it ought to be patentable the same way every other process has been since 1790.

You said: “This is a nonsensical statement. The physical changes that occur within a computer when a program runs will not be repeated in the same way each time the computer runs. The “machine” changes with each clock tick that the CPU, motherboard, RAM, etc experience. The machine will become a “new machine” with each clock tick.”

The statement you are quoting is not at all nonsensical if you understand patent law. Even if the computer only changes once in a predictable manner, which I would dispute if the computer is actually working, there is a physical difference.

You said: “software is separately and individually patentable whether or not it does the same thing as some other patented software because each “machine” is “new”.”

You are 100% correct, assuming that the way that the software operates is not the same as the way other software operates to achieve the function. You see, the problem you have is you are focusing on the function and that is simply incorrect. If, for example, you take the high road (I 80 from East Coast to CA) and I take the low road (I 40) from East Coast to CA) the fact that we are both in CA does not as a matter of fact or law mean that we took the same path. You are assuming that because we are both in CA we got there the same way. That is not the way patent law views things.

I have no problem with folks having opinions and I welcome the debate. My problem with the anti-patent software folks, however, is that they take uninformed positions based on what they think patent law means and requires when in fact what they think to be true is not at all correct.

-Gene

jJanuary 12, 2009 8:29 amGene,

It doesn’t feel right, but I’ll go along with your refutation about software on paper as, to the best of my knowledge, patents are just written on paper and are instructions on how to do/make things and drug patents are basically recipes. I happily stand enlightened.

You misquote me and seem to misunderstand what I’m saying when you say that I am 100% correct. What I mean to say is that if software X is run on your 2 computers, these computers will not have all their memory elements (in RAM, on the CPU, GPU, etc) arranged in the same particular configuration. In re Bernhart and Fetterer this is the argument used to say that software creates creates a new machine. Furthermore, just considering software X run on 1 computer, the memory elements will change with each clock tick. If a particular arrangement of memory elements means a “new machine”, then with each clock tick that 1 computer will be a new “new machine”.

Software patents are blurry images of processes they are . They do not get the same scruitiny that other patents get when there is “infringement”. I could happily agree with having software patents, however the code would need to be shown, the compiler flags, the machine configuration, etc.

A problems that anti-patent software folks have with what some patent lawyers say is that they argue contrary to fact, for example your stance on software is not maths.

I’m trying to learn, you taught me something, so thanks. Owing to the current credit crunch though, a cheque will not be in the post. I could send you a sweet wrapper instead.

j

Gene QuinnJanuary 12, 2009 11:17 pmJ-

I will agree with you that software patents should disclose far more information.

It is not at all contrary to fact to say that software is not math. Software is NOT math. The fact that software uses mathematical concepts and techniques to create instructions for a computer does not mean that it is math. Actually it means that it is a set of instructions that ought to be patentable like every other set of instructions. Either we do away with process patents or we need to recognize that software directs action and is simply a set of instructions.

I don’t suppose that we will ever agree on software vs. math, although I do enjoy the debate. I appreciate also your virtual check in the mail.

Thanks for reading.

-Gene

Terry ColeJune 4, 2009 5:02 amDear Mr Quinn,

I’ve had occasion to revisit your blog on the question of “Computer software is not math”. You may recall that I felt it was.

What is prompting me to write this time is your invocation of the holy name of Dijkstra. His comment is truly fascinating and I can see how you might feel it support your case.

My own reaction is that none of it matters, and in particular not elegance, since the end result is still isomorphic to a mathematical object, and as such ought not to be patentable. Of course you are entitled to feel my reaction is not decisive.

Dijkstra is a peculiar choice as an ideal to which programmers aspire, since he did no programming in the modern sense, but created mathematical tools which underly programming. Using his ideas on elegance or style to create a distinction between software and math is quite odd. He handwrote all his “EWD” monographs, unlike e.g. Knuth who invented TeX to assist. He did not program himself after around 1960. Indeed, he did not own a computer, except for a Mac later in life (which was not used for programming).

What ought to be relevant, despite this, is Dijkstra’s own attitude to commercial use of software, which a cursory search on Google will help with. He was unimpressed with the idea that mathematics, and its expression in software, should be commercialized. But he felt that arguing that point with those who would profit was pointless. Humor, however, was both legitimate and effective.

So he created a fictional company (Mathematics, Inc) and a whole series of parables to illustrate the folly of intellectual property – be it copyright, trade secret, or patent – applied to mathematics or its expression in software.

Details can be found, with references, in the wikipedia entry on Dijkstra. I quote:

“One of Dijkstra’s sidelines was serving as Chairman of the Board of the fictional Mathematics Inc., a company that he imagined having commercialized the production of mathematical theorems in the same way that software companies had commercialized the production of computer programs. He invented a number of activities and challenges of Mathematics Inc. and documented them in several papers in the EWD series. The imaginary company had produced a proof of the Riemann Hypothesis but then had great difficulties collecting royalties from mathematicians who had proved results assuming the Riemann Hypothesis. The proof itself was a trade secret (EWD 475). Many of the company’s proofs were rushed out the door and then much of the company’s effort had to be spent on maintenance (EWD 539). A more successful effort was the Standard Proof for Pythagoras’ Theorem, that replaced the more than 100 incompatible existing proofs (EWD427). Dijkstra described Mathematics Inc. as “the most exciting and most miserable business ever conceived” (EWD475). He claimed that by 1974 his fictional company was the world’s leading mathematical industry with more than 75 percent of the world market (EWD443).

Having invented much of the technology of software, Dijkstra eschewed the use of computers in his own work for many decades. Almost all EWDs appearing after 1972 were hand-written. When lecturing, he would write proofs in chalk on a blackboard rather than using overhead foils, let alone Powerpoint slides. Even after he succumbed to his UT colleagues’ encouragement and acquired a Macintosh computer, he used it only for e-mail and for browsing the World Wide Web”

Regards, TC

Nathanael NerodeJune 7, 2009 2:21 amMr. Quinn is, to put it bluntly, wrong.

“I see absolutely no justification for all software to be considered unpatentable subject matter because it is simply not correct to say that software code is the equivalent of a mathematical equation or a mathematical algorithm.”

Wrong. Software code is, literally, a mathematical algorithm expressed in a formal mathematical language.

“The code is a series of instructions written using mathematical logic as its foundation.”

Not “as its foundation”. The code is a ‘sentence’ in a formal system in mathematical logic. Don’t believe me? Try making a typo in a computer program.

“It merely means that the instructions are written in a language and format that are heavily influenced by mathematics.”

Wrong, dead wrong. It’s not “heavily influenced by” mathematics — it *is* mathematics, with all the formality and precision that implies. In fact, all mathematical algorithms can be expressed as computer programs and vice versa with perfect translation. If expressed in a formal system they can be *machine-translated* into computer programs.

The code is a mathematical algorithm in a formal mathematical language. There is 100% equivalence and 0% difference. Ask *any computer scientist, and any mathematician familiar with formal systems*. I have a background in both fields; however, I know some of the mathematicians involved in the *creation* of computer science. They have absolutely no doubt about this.

Perhaps abstract mathematical algorithms should be patentable — they are “processes”. However, that is exactly what computer programs are. It’s a pity Gene Quinn, a patent attorney, didn’t bother to ask anyone who understands either mathematics or computer science. Or perhaps he did ask but didn’t like the answer he got because it endangered his income stream…

Nathanael NerodeJune 7, 2009 2:26 am“I am happy to refute this because you are not correct. When you file a patent application you explain the invention in writing. There is no requirement that there be a working model of the invention, wi”

The removal of this requirement, which existed for most of the history of patent law, was an inexcusable error.

Nathanael NerodeJune 7, 2009 2:34 amTo follow up, I’ve always wondered why mathematics was unpatentable.

Algorithms are processes. Is there any a priori reason that Newton’s Method is unpatentable? It’s certainly a process. The exclusion of mathematics (and consequently software) from patentability is a *special exclusion*, separate from the rest of patent law. It seems to exist largely for practical economic reasons: patents on mathematics hurt everyone, and they hurt people substantially, and obviously; but they benefit next to nobody. The exclusion of business methods, which are also processes, is for the *same reason*. They shouldn’t be patentable as a matter of public policy.

Legally, I suspect the best basis for both exclusions is that patents are supposed to be limited to *industrial* processes. Neither mathematics/software nor business methods are *industrial* in a traditional sense of the world, although “industrial” is a very ill-defined word as a legal term. This is why the software-assisted rubber curing process would be patentable: unlike most software, it is essentially “industrial”.

Gene QuinnJune 7, 2009 1:05 pmNathanael-

That would be a basis for preventing both the patenting of math, software and business methods, but there is no requirement in the patent laws that an invention have an industrial application.

If business methods are to be held not patentable it should be as a matter of public policy, which means that Congress has the sole authority to legislate away business method patents. Unfortunately for the Federal Circuit, its Bilski decision is all but guaranteed to be overturned because Congress has in fact recognized and authorized business method patents, a fact ignored by the majority of the Federal Circuit.

-Gene

Gene QuinnJune 7, 2009 1:10 pmNathanael-

You are showing your ignorance. You are 100% unequivocally wrong. Software code is not math, literally or otherwise. Those who are perpetuating this myth are mathematicians and computer science folks, who also choose to ignore software engineering as a discipline. The choice to ignore software engineering as a discipline is simply due to the fact that if you acknowledged its existence you would yourself be unable to continue to say that software is math. Software does not have a “proof” as so many illogically and incorrectly explain.

Math and computer science is math, but that does not mean that software created to provide a solution is math.

Simply put, those with math and computer science degrees are not even allowed to take the patent bar examination as a matter of course because the federal government does not recognize either of those fields to provide the required (or adequate) science background. To hold such obviously false believes and to continue to hold them in the fact of overwhelming proof to the contrary, and to continue in this believe when real scientists and engineers explain in detail why you are wrong show a tremendous ignorance and arrogance.

-Gene

Gene QuinnJune 7, 2009 1:17 pmNathanael-

One more thought. If you think engineers (like myself) do not understand math or computer science you are hopelessly misinformed. The truth is that when students cannot cut it in an engineering program they drop engineering as a major and go into something much easier, such as math and computer science. When I was in school so many folks couldn’t cut it as an engineer and became very successful math or computer science majors, because those fields are really quite easy and not at all based in the scientific application of the laws of nature in the real world.

Everyone in the electrical engineering department at my school saved our math electives for our last semester. We would take 400+ level math courses, show up, never study and get As, while the math majors would struggle and barely understand the most easy concepts. You see, there was no effort required because engineers take more math courses than math majors. I have far more calculus and applied math than was required to graduate with a math degree, and far more programming than any computer science major.

If you really think that engineers, scientists and patent attorneys who are engineers or scientists don’t understand then I suggest you go take a look in the mirror and the person who doesn’t understand will be standing right there for you to see.

-Gene

AdamJune 17, 2009 5:44 pmAs another data point, Donald Knuth seems to think that software is math:

http://www.groklaw.net/article.php?story=20090603224807259

In his letter, he says:

“I am told that the courts are trying to make a distinction between mathematical algorithms and nonmathematical algorithms. To a computer scientist, this makes no sense, because every algorithm is as mathematical as anything could be. An algorithm is an abstract concept unrelated to physical laws of the universe.

Nor is it possible to distinguish between “numerical” and “nonnumerical” algorithms, as if numbers were somehow different from other kinds of precise information. All data are numbers, and all numbers are data. Mathematicians work much more with symbolic entities than with numbers.”

Of course, he is a computer scientist, so it is expected that he would perpetuate this myth. And, just as Gene predicted, he dropped out of his Physics program to study Math, so he’s probably bad at Math. He is, however, possibly the greatest living computer scientist, so his opinion may have some value.

On the other hand, I’m a professional software developer, and I also think that software is math. Gene, you never explain why you think software code is not math itself (as opposed to just based on mathematical concepts). Would you mind laying it out for us, so we can understand why you disagree with Knuth on this point?

AdamJune 17, 2009 6:34 pmAlso, a correction to your general attacks on computer science students: a Bachelor’s degree in Computer Science is accepted as sufficient training to meet the technical requirements to take the patent bar exam, as long as it’s an accredited program:

http://www.uspto.gov/web/offices/dcom/olia/oed/grb.pdf

Gene QuinnJune 17, 2009 9:31 pmAdam-

You are 100% correct. What you fail to point out is that 26 of the top 30 computer science programs in the country do not qualify, while oddly enough the same number of the bottom 30 programs do qualify. If you have a computer science degree from a reputable institution you can rest assured that your degree does not qualify under Category A. The Patent Office has been sued because it was alleged this was not fair (I signed the complaint along with many others) but the lawsuit was tossed.

Whether you choose to acknowledge it or not, the Patent Office perceives computer science has non-technical in the same way they view degrees held by math majors. Math is required knowledge for engineers, but engineers take more math than math majors and study real world applications. Math is not patentable, equations are not patentable, real world applications of math and equations are patentable. If you don’t like that take it up with the US Supreme Court. That was their decision, not mine.

-Gene

Gene QuinnJune 17, 2009 9:36 pmAdam-

My proofs are all over my writing. Software is a process. It directs a computer with respect to what steps to take. Processes and methods have always been patentable, at least since 1790 when Thomas Jefferson was in charge of writing the Patent Act and issuing patents. The fact that you are choosing to ignore reality is not my problem, and quite frankly I don’t care if you want to stay in the dark. I also don’t care what Donald Knuth says. I don’t know who he is and if he really holds that belief he is obviously someone who should not be taken seriously.

If you are a software developer and you don’t realize that you are writing instructions that will define how certain processes will be handled and carried out you should really move into a different line of work. That is all software is and does, and how you can so willfully ignore that is beyond me.

-Gene

AdamJune 17, 2009 11:57 pmI agree that software is a description of a process, just like any other algorithm. Much of math is also a description of a process. The thing that neither I nor Donald Knuth understand is how software is distinct from the rest of mathematics. That is what I haven’t seen you explain. As far as I can tell, Newton’s Method is in no way different from Quicksort, or even the code for a video game. They all exist solely as descriptions of ways to calculate numbers. What do you think makes software distinctive?

I also find it strange that you wouldn’t describe MIT, UC Berkeley, Georgia Tech, or University of Michigan as reputable institutions.

Maury MarkowitzJuly 10, 2009 12:03 pm> The truth is that when students cannot cut it in an engineering program they drop engineering

> as a major and go into something much easier, such as math.

As someone with some experience in both fields I can’t think of a single person that would consider engineering to be a more difficult degree than math. Quite the opposite; engineering students are widely derided by students in the “real” courses. I do not share this opinion, but this claim of yours flies in the face of my experience, and I would wager the majority of the university population.

> We would take 400+ level math courses, show up, never study and get As

In general, engineering departments offer their own math courses that are greatly simplified, aimed at a practical math education for a practical science. Many even offer their own CS courses for the same reasons. If this is what you refer to, I don’t find your experience terribly surprising, I’m sure I could do the same (and I’m terrible at maths).

But if you claim that “everyone” in EE could take a 4th year advanced course from the real math syllabus, like topology or graph theory, with a practical calculus background, I have to conclude you’re just making this statement up on the fly. After all, you also noted:

> I also don’t care what Donald Knuth says. I don’t know who he is

This statement is telling. Knuth is, of course, one of the most widely known and influential people in the CS world. That you don’t know of him (or at least claim that) weakens your arguments considerably in my eyes.

In spite of what appears to be a personal attack by a wronged engineer, you call this apparently highly biased personal point of view “the truth”. That’s an interesting definition of “truth”. This also makes me question the validity of your statements.

Take my advice, stay away from the trolls.

Maury

Maury MarkowitzJuly 10, 2009 12:44 pmNow as to the matter at hand: I agree completely that software “is not math”. And I’m a professional programmer. The claims made above strike me as entirely specious. One poster suggested that a typo in a program somehow proves that computer programs are formal math, but fails to note the obviously patentable counterpart, placing the wrong part in a machine.

I cannot find a single cogent argument in the posts above that in any way makes me believe that the _intent_ of a computer program – which is all that counts – is “to do math”, any more than the intent of a mechanical loom is “to do gears”. It is the inputs and outputs that matter, not the expression. If I replace all the parts in a machine with new ones, patent law clearly considers that to be “the same thing”. If I replace every line of code in a program with the same code in a different language, I believe that to be analogous. Arguments about the 1’s and 0’s of the issue might be interesting from a CS perspective, but the intersection with the _intent of the law_ appears to be zero, and that’s well represented in IP law.

Consider a freeze-drying process for coffee. It takes hot coffee and turns it into a powder, then allows one to re-convert it into a facsimile of hot coffee. This is patentable, because it’s transformative.

Now consider the MP3 process. It takes a sound and converts it into a very different format, allowing one to re-convert it into a facsimile of the original sound. I can’t understand why anyone would believe this should not be offered precisely the same protection as a freeze-drying machine.

Given enough money I could build a machine similar to the Analytical Engine that would perform the MP3 process. If I replace one gear with a transistor, does that make a new machine? No, patent law is clear on that, it is the idea encoded in the mechanism, not the specifics of the mechanism. If I replace all of the gears with transistors, does that do it? No. But if I replace one of those transistors with a program running in a computer, THAT is suddenly supposed to change the interpretation?

That entire line of reasoning seems specious. It might make sense from a CS perspective that’s dialed-in on the hardware, but appears to be exactly nothing in terms of the intent of the law.

And only Gene has even attempted to look at what the law is actually trying to accomplish and come up with ways to do that. The law is attempting to protect new transformative concepts in order to cherish them. Clearly the modern application is out of control and needs to be fixed. The question is how to do that. Gene has suggested requiring software patents to be much more detailed and reducing the time limits. Another suggestion is to do away with them entirely, but I consider that to be akin to throwing out the baby with the bathwater.

I think modern legal challenges show another way out of the current mess. One key test is “transformation”, like what happens to coffee. That test was not being applied due to a couple of cases in the 1970s. Those cases suggested that software does transform something, even if it’s not physical. What appears to have happened is that the patent examiners simply skipped that test for many applications. Recent case law is stating that you do need to apply the test, and that, as it was intended, internal transformations don’t count.

So that means that Amazon’s One-Click is likely not patentable, because it doesn’t transform anything. It is new and novel, the test that was being applied, but not transformative, which apparently wasn’t.

It also means that MP3, which is a transformative system, is patentable. And I believe it should be.

So before we scrap everything and return to the yurt, everyone needs to sit down and decide whether or not the application of this test does what you want: blocking patents you think are bogus. So make a list of patents that you think are clearly bogus, and apply this test. In my case I tested against patent 5,443,036. Now apply to your pet cases.

Maury

Gene QuinnJuly 10, 2009 5:47 pmMaury-

You say: “I can’t think of a single person that would consider engineering to be a more difficult degree than math.”

After reading that it is impossible for me to take anything you write seriously. Everyone knows that engineering is much more difficult than mathematics, and when you refuse to acknowledge the readily obvious I question your agenda. Why is it that you would make such an obvious and provably incorrect statement?

What exactly do you mean about “practical calculus background”? Do you even really know how many levels of math engineers take? Allow me to speak for electrical engineers, which I can discuss with great authority. We take 2 full years of calculus, not practical or applied, just pure, straight calculus. Then we take 2 years of advanced mathematics. You see, you cannot hope to understand electromagnetic fields without rigorous calculus training. You cannot understand basic principles of electrical engineering without first having 3 full semesters of 4 credit hours worth of calculus. Electrical engineering departments then need to teach advanced engineering math because the math departments don’t offer training appropriate, choosing to stop with theory. Statics, dynamics, digital signal processing and so many more courses can only be hoped to understand after you have had more rigorous math training than math majors are required to take. Insofar as graph theory, you cannot be serious? Every electrical engineer can handle such a course hardly without study. It is really intuitive after our mathematics and applied mathematical training.

You are 100% correct when you say that engineering students are derided by math majors. That happens everywhere. It is so disheartening to be a math major and see engineering students come to class and Ace courses they struggle at, all with little or no study.

I would love to meet someone who failed out of mathematics and dropped into engineering. The reverse is extremely common, but we all know that no one fails at mathematics and finds success in any engineering discipline. The reason is that we learn more mathematics, and the we also learn how to apply that mathematics to solve problems. If you cannot do the former you will never do the later.

In terms of Knuth, I could care less who he is, or what he says. When you are wrong you are wrong. The funny thing here is no one who argues against me is capable of making any points themselves, but rather only quote others. If anything is telling it is that.

There is a reason the computer science is not treated as an appropriate background to become a patent agent or attorney. Of all the things that the Patent Office does wrong, the one overwhelming thing they get right is that mathematics and computer science is not technically rigorous enough to warrant licensing as a patent attorney or agent to work with scientists and engineers to define and protect their innovations.

I have no problem with you questioning the validity of my statements. That is what makes the world go around. While I do not agree with you, I respect your opinions and beliefs… even if we joust a bit here.

-Gene

DrewJuly 10, 2009 6:32 pmIt seems to me the difference in opinion as to whether computer code is math or not stems not from what the source code IS, but what its intent is to BECOME. While a person could make a reasonable argument that source code, read directly from a compiling program, reads like a set of instructions and not math. The fact is a compiling program translates the source code which we can easily read as instructions, into the machine code (binary) which we can not easily read but which a computer can process. The source code is literally shorthand machine code.

The hiccup is; machine code, when handled by a processor, IS math. Literally no different than using an abacus, just on a much grander scale. Source code is really just a way for people to translate their overarching thoughts into the massive amount of math your computer’s processor can understand.

Is it reasonable to patent a compiling language? Sure, why not? You figured out a new way translating easy to understand thoughts into vast amounts of math. Is it reasonable to patent source code? Arguably, a new process is a new process… but that patent shouldn’t extend to source code written in a different language netting similar results. Is it reasonable to extend the patent of a piece of source code out to the translated machine code that runs on my machine? No. If machine code is patentable by proxy of the source code netting it, then for all intents and purposes theres no reason to think I couldn’t literally program a series of computers to fill out a patent applications for every binary expression starting a 0 and working its way up ad infinitum. Sure, the first hundred trillion or so applications get turned down for prior art, but at some point I would be filing for patents for machine code that had not, as of then, been expressed by any computer. Assuming I could cover the application fees, from that point forward I would own the ends to the means of every piece of source code imaginable.

Gene QuinnJuly 10, 2009 7:04 pmDrew-

You are really on to something here. I do disagree with you when you say: “but that patent shouldn’t extend to source code written in a different language netting similar results.” Can you elaborate a bit why you think that? Why not?

Under US patent law, what I quoted above is not a true and correct legal statement. The software patent would cover the new process regardless of the language used. Patents do not protect the source code, they protect the steps, which sometimes must be tied to identifiable hardware (particularly now). Copyrights protect the source code itself.

It is not proper to focus on what would be new or unobvious when dealing with patentable subject matter. I readily agree that much software should not receive a patent because it is either not new, or is obvious. The question with patentable subject matter, which is merely a threshold inquiry, is this — if the invention is useful, new and nonobvious, is it the type of innovation that can receive a patent? In the US we almost universally say if something is useful, new and nonobvious then it can be patented, which means it embodies patentable subject matter.

I also agree that the object code is mathematical in nature. It is binary, and even the process of translating into binary code is mathematical. The process directing steps, which is what a patent protects, however is not.

Would love to follow this chain some more. I think a lot of insights could be had.

-Gene

DrewJuly 10, 2009 10:07 pmOk, well I’m going to start by stating the assumption that I think has already been made by everyone participating, just so it’s clear: I’m specifically going to be referring to US patent law (apologies to any non-Americans, fight your own battles!).

That being said the best argument I can think of FOR code being patentable would probably stem from including it into the definition of “process”: Title 35 part II Chapter 10 § 100(b) – “The term “process” means process, art or method, and includes a new use of a known process, machine, manufacture, composition of matter, or material” and the subsequent protection provided. Specifically the whole “new use of a known machine” part. Since thats about the best reason against my opinion, that machine code is inviable as patentable material, I’m going to focus on that, if you disagree based on another reason I’d like to hear it.

I would argue that machine code can not be considered “new use” as the use was engineered into the machine to begin with.

I.E. – Using a detector in conjunction with a light bulb to determine if something has crossed the lights path (e.g. laser burglar alarm) would be considered finding a “new use” for a light bulb. However; taking something which is designed to read machine code and then trying to describe the “new use” for it as being reading DIFFERENT machine code does not make sense. It is akin to attempting to patent alcohol or biodiesel or candle wax as potential fuels in a gas engine because they burn. The purpose of the engine is specifically to burn what you put in it, if its flammable enough the engine keeps spinning. Simply figuring out that other things burn wouldn’t be patentable as it would have been a violation of one of the conditions for patentability, specifically § 103 (a) – “A patent may not be obtained… if… obvious at the time the invention was made to a person having ordinary skill in that art to which the subject pertains.”

Even then, it’s feasible that you could reserve doubts of binary instruction sets applicability to patent law. You could claim that they aren’t obvious. Now, granted; it takes a lot of hard work to write the code that results in the desired effect and the end result could be considered not “obvious” due to the huge amount of man hours that go into writing, debugging, et al. So lets say your still not convinced, stuck in your ways and need more reason to be convinced.

§ 103(b)(2)(B) A patent issued on a process under paragraph (1) shall, if such composition of matter is claimed in another patent, be set to expire on the same date as such other patent, notwithstanding section 154.

-AND-

§ 154(a)(2) …if the application contains a specific reference to an earlier filed application or applications under section 120, 121, or 365 (c) of this title, from the date on which the earliest such application was filed.

Extending this to your “process” of machine code that would mean all code runnable on x86 architecture (the foundation of the most prevalent chip designs currently in market) as well as all extensions therewith WOULD be patentable but only UP to the expiration date of the original x86 design which has lapsed it’s 20 years. But even then, taking it a step further the reduced instruction sets in general have been around since the 70’s, well past their 20 years. Yet, somehow using an instruction set that by its own nature makes reference to an earlier patent means you get new patentable material for a new two decades?

From my vantage every time code is patented it has the effect of re-patenting a small section of that which is public domain. I think thats what irks me most, theres a limited number of ways to do something and if you and I are both trying to figure the one path to our shared destination in free and open pastures belonging to the public why should you get to suddenly turn around and put up a fence across the only bridge so you can start charging tolls?

However, that being said it’s obvious that my interpretation of patent law is not shared by SCOTUS’ so it’s really a moot point I guess.

Gene QuinnAugust 15, 2009 12:57 amSorry Anonymous. prefer@not.to.give.com is not an acceptable e-mail address to use. If you are so insecure in your thoughts and beliefs that you cannot provide a valid e-mail address then I choose not to allow you to post.

-Gene

AnonymousAugust 15, 2009 1:51 amAs far as your statements concerning mathematics and computer science go.

I will not deride the difficulty required to study the various forms of engineering. However to seriously compare the difficulty of engineering with the difficulty of understanding calculus is ridiculous and implies (although I can’t be sure) that you don’t really have an understanding of what mathematics is and why it is considered difficult. Many people make the mistake of taking applied calculus in its various forms to be the peak of mathematics. It seems you have done this and consequently decided math is trivial in comparison to engineering.

This is because applied calculus IS trivial, even in its various forms. Calculus is just an advanced form of arithmetic. In order to solve a calculus problem, one needs only memorize the methodology involved. This is true from single variable calculus up to partial differential equations. There is no “thought” involved, simply application of memorized methods.

This is in fact the reason many math majors deride engineering. To them, success in these fields involves, for the most part, memorization and application. The most advanced math you need to know IS calculus (which is in fact, trivial) unless perhaps if you study physics in which case more advanced math may become necessary.

On to more advanced math. Consider a course in real analysis, or complex analysis. This is the math majors version of calculus. There is much beyond this. Topology, set theory, number theory, algebraic structures, combinatorics, graph theory, category theory, (some would consider theoretical computer science as math), etc. Basically, the things that fall under discrete mathematics. These are considered “real” math.

The reason they are considered more difficult is because they require you to reason as opposed to memorize. They are entirely based on the proof of theorems. In order to have a solid understanding of math one needs to be able to reason from axioms to develop a solid logical argument as to why a statement is true. At the highest levels of the field, this involves proving theorems that no one in all of human history has been able to reason to be true from what was known to be true at the time. Pitting one’s intellect against the whole of humanity and human history is no small undertaking.

As far as your saying that a mathematics and computer science understanding is not rigourous enough to become an attourney, it is because they have not spent the time to memorize the laws. I am not a lawyer, so you can correct me on this, but the form of reasoning one must do when one is an attourney would involve making a lot of assumptions about what the listener/reader understands and what they consider “common sense.” In this way they can be considered “fuzzy” and are not “rigorous” in the sense of a mathematician. In mathematics, all theorems are proved from a basic set of axioms. Nothing can be assumed about the readers knowledge or their sense of common sense. Even such things as “2 > 1″ must be proven (or taken as an axiom, but it is generally proven).

Some mathematicians may take this personally but I would argue that computer science is at least as rigorous as mathematics. The theoretical side of computer science requires its algorithms to be proven correct as theorems. The application side of computer science (programming) requires a level high level of rigour because the computer has no “common sense” which can be assumed. The amount of rigour necessary to write a correct program (I’m assuming, of course, you are trying to write a correct program) is akin to the level of rigour of the proofs that an automatic theorem prover would churn out.

That is why I must disagree with you when you say that “mathematics and computer science is not technically rigorous enough to warrant licensing as a patent attorney or agent…”

AnonymousAugust 15, 2009 1:54 amBut computer programs ARE math.

Are mathematical functions patentable? A mathematical function is a mapping from some set of inputs to some set of outputs. A computer program is the same thing: it takes in inputs and produces some output. A computer program IS a mathematical expression. Mathematical expressions are also processes. They are evaluated in very particular ways, sometimes there is only one way to evaluate mathematical expression. Programs are just mathematical expressions that can only be evaluated in one way. That is why they seem to be able to be patented as “processes.”

Also, where would you draw the line between mathematical functions and programs? There are languages across the entire spectrum from one to the other. Consider Mathcad. This is software in which you can put in mathematical expressions in their normal math notation and they can be evaluated. Mathematica is similar, except the expressions are all text. From there you can go to Maple, SML, C, Assembly, and finally to binary (there are probably programming languages that could fit between these that I left out).

You might argue that Mathcad and Mathematica can’t compile to native code, but what’s to stop me from writing such a compiler? If I wrote a compiler for the “Mathcad” language (aka math notation) could I patent Maxwell’s equations?

You might argue that these don’t allow me to implement a lot of the things traditional programming languages can. For example guis. But there are other problems. Are programs with guis the only one’s patentable? Also what’s to stop me from implementing these functionalities in them? OCaml has OpenGL bindings. Why not add OpenGL to Mathcad?

This is where the problem lies in distinguishing math from programs. They ARE the same. Study Programming Languages Theory/Type Theory and you’ll see that programs are just mathematical expressions in different notation. So then, how can you differentiate them?

Paul JohnsonMay 11, 2011 8:12 amGene,

I’ve tackled this question of software versus mathematics on my blog, where amongst other things I reduce a patent to a set of mathematical formulae in the Lambda Calculus. In Bilski the Supreme Court stated that a method reduced to a mathematical formula is not patentable subject matter. Hence logically the claims of patent 5893120 are not in fact patentable subject matter. Would you agree with this?

A lot of computer programmers seem to agree with me, but I’ve not seen anything cogent from anyone on the other side of the argument.

You can find the relevant postings on http://paulspontifications.blogspot.com/

Gene QuinnMay 11, 2011 9:36 amPaul-

It is not that explanations of mathematicians and computer scientists fall on def ears in the patent community. It is that mathematicians and computer scientists think they understand patent law better than patent attorneys.

You claim that all software is unpatentable post Bilski. That is simply not true. The Patent Office issues software patents and software patents are upheld in courts, so whether you or anyone else thinks software shouldn’t be patentable is really of no consequence. Software is patentable even post Bilski.

A mathematical equation is not patentable, but as I’m sure you realize the claims in the 5,893,120 patent are not mathematical equations. The invention relates to an information storage and retrieval system, hardly a mathematical equation. So everyone can see what we are talking about, here is claim 1:

“1. An information storage and retrieval system, the system comprising:

a linked list to store and provide access to records stored in a memory of the system, at least some of the records automatically expiring, a record search means utilizing a search key to access the linked list, the record search means including a means for identifying and removing at least some of the expired ones of the records from the linked list when the linked list is accessed, and means, utilizing the record search means, for accessing the linked list and, at the same time, removing at least some of the expired ones of the records in the linked list.”

Now it is obviously clear that this is not a mathematical equation that is unpatentable to anyone willing to be objective. If it were a mathematical equation it would be solvable, which it is not. Your efforts to translate this into mathematical expressions is just trying to articulate the process steps in a different language, nothing more. You cannot say that claim 1 equals any particular number, which of course you could do if it were a mathematical equation, or at the very least you could reduce claim 1, which you also cannot do while still keeping all of the process steps and the same meaning.

I doubt you will agree with the clearly correct statement above, so allow me to ask you this. Would a mathematical equation infringe any claim in this patent? If a mathematical equation would not infringe then the claim cannot be or cover a mathematical equation. The answer is a resounding no, of that I am 100% certain. How do I know? Aside from the obvious (i.e., that the claim defines steps, not math), if a mathematical equation would infringe then the claim would be invalid under either 101 or 112 or both because it would fail the Bilski machine or transformation test. It is clear that software does not preempt all uses of mathematical equations. At best software preempts a particular use in a particular scenario. You might not like that distinction, but that is one that the law makes.

What mathematicians and computer scientists fail to understand is the basic function of software, which is really rather alarming when you think about it. How is it possible that a computer programmer can’t appreciate what software is doing? Software creates a set of instructions to operate a machine; a process for accomplishing a task. Methods and processes have been patentable since at least 1790.

I don’t doubt that computer programmers agree with you, but you really should ask why that is the case when the legal community, the Patent Office and judges disagree with you on a legal issue. Computer programmers prefer to copy code and don’t like the fact that they have to respect patents. They feel that they have some inalienable right to do whatever they want. They feel special, and believe that the laws that apply to all other businesses shouldn’t apply to them. On top of that, the U.S. government doesn’t even think computer programmers have the requisite scientific training to become a patent attorney or patent agent.

In closing I would just point out that it is extremely odd that mathematicians and computer scientists want so desperately to prove that software is not patentable when that is a legal conclusion and the entire weight of legal reasoning is 100% in opposition. You can write as much as you want and as long as you cling to erroneous views that are the premise of your theory you have no hope. If you want to influence outcomes in legal debates you have to know the law, how it is interpreted and how it is applied and work within the system. But the issue of software has, at least for now, been conclusively decided and pretending that is not the case strikes me as a truly academic exercise.

-Gene

Paul JohnsonMay 11, 2011 5:27 pmYour argument seems to be ignoring the basic points of my argument, while just repeating that software is not mathematics and the legal situation is settled. Lets take those one at a time. First the software vs maths issue: would you disagree with any of the following statements?

1: The Lambda Calculus is part of mathematics.

2: A formula in the Lambda Calculus is a mathematical formula.

3: A formula in the Lambda Calculus is not patentable subject matter.

4: Any supposed invention which can be reduced to a formula in the Lambda Calculus is thereby shown not to be patentable subject matter.

5: The formula “x = (-b +/- sqrt(b^2-4ac))/2a” is not patentable subject matter.

6: If the keyboard and display means are already well known, then the following claim describes non-patentable subject matter: “An machine where the user enters the values of ‘a’, ‘b’ and ‘c’ using a keyboard means, and a display means then shows the two values of ‘x’ found by applying the formula “x = (-b +/- sqrt(b^2-4ac))/2a”.

7: If the input and display steps are already well known, then the following claim describes non-patentable subject matter: “A process where in step 1 the user enters values ‘a’, ‘b’ and ‘c’, in step 2 the value ‘b’ is squared, in step 3 the values of ‘a’ and ‘c’ are multiplied, and the result is multiplied by 4, in step 4 the result of step 3 is subtracted from the result of step 2, in step 5 the square root of the result of step 4 is taken, in step 6 the result of step 5 is both added to and subtracted from the negation of the value ‘b’, yielding two results, and in step 7 both of these results are then divided by twice the value of ‘a’, and in step 8 the resulting numbers from step 7 are displayed to the user.”

You ask if a “mathematical equation” could infringe any of the claims in the ‘120 patent. Leaving aside your apparent confusion over the difference between a formula and an equation, I believe the answer is a plain yes; those claims can be recast as mathematical formulae. You dismiss my demonstration of this as just “articulating the process steps in a different language”, and in doing so you miss the whole point; the language I used was a version of the Lambda Calculus, and a formula in the Lambda Calculus is part of mathematics. To any computer scientist this is of course trivial, but only because we all know that Alonzo Church proved that any method of manipulating information can be reduced to a formula in the Lambda Calculus.

When you ask for a number, you make the common layman’s error of assuming that mathematics is only concerned with numerical values. Topology, geometry, set theory and the predicate calculus are examples of branches of mathematics that are not concerned with numbers. Of course any form of information can be reduced to numbers; this argument itself is represented as nothing more than a series of numbers as it is moved around the Internet. So if you insist on mathematics being only concerned with numbers (a contention which any professional mathematician would find insulting) then I could show how the “lists” and “tables” of the 120 patent can be encoded as numbers, and hence translate my formulae into numerical ones. But the result would be pretty unedifying.

(Incidentally, Kurt Godel did represent mathematical formulae as numbers as part of his undecidability proof. Turing did the same in his paper “On Computable Numbers”. If computer science really is the easy option, as you have previously claimed, then you should find both of these papers to be a little light reading, and you might also find them enlightening).

As for the legal situation, from my understanding it was the State Street decision that created the concept that “formula + useful application = invention”. However in Bilski the Supreme Court explicitly stated that they did not endorse anything in State Street, while laying down a different set of principles by which the patentability of business methods and other methods of processing information were to be judged. Since Bilski is new and there is very little case law following from it, it seems to me that the law on this point is anything but settled. The patent in Bilski was found to be non-patentable subject matter because the only novel element was a mathematical formula, which is contrary to the decision in State Street. Or do you think that there is some legal principle under which the State Street and Bilski decisions can both be considered correct?

The claims in the ‘120 patent are not phrased as mathematical formulae (note, not equations). However this doesn’t matter because they are reducible to mathematical formulae. To argue otherwise you would have to find some difference between statements 5, 6 and 7 above.

In closing, I would just point out that it is extremely odd that some lawyers want so desperately to prove that software is not a form of mathematics when the opposite has been logically shown to be the case, and the entire weight of mathematical proof is 100% in opposition. You can write as much as you want, but as long as you cling to the erroneous views that are the premise of your theory you have no hope. It is not that explanations of the lawyers fall on deaf ears, it is that some lawyers think they understand mathematics and computer science better than the mathematicians and computer scientists.

Gene QuinnMay 12, 2011 10:14 amPaul-

You say you want to have a debate about the legal issues surrounding the patenting of software and then you want to ignore the law, how the law interprets method claims, and fundamentally what software does and is. You start with the premise that software can be expressed in mathematical equations and therefore is not patentable. That premise is, however, flawed. Not only is it flawed in reality, it is simply not how the law approaches the issue. So if you want to have a legal debate then lets have that legal debate. You need to stop ignoring the law in what is a legal matter.

Nevertheless, I am happy to engage you in debate just as soon as you either solve or reduce claim 1 of the ‘120 patent. Of course, we both know you can’t do that which in and of itself proves I am correct and you are incorrect.

-Gene

Gene QuinnMay 12, 2011 10:21 amPaul-

A couple more thoughts…

You say: “The patent in Bilski was found to be non-patentable subject matter because the only novel element was a mathematical formula, which is contrary to the decision in State Street. Or do you think that there is some legal principle under which the State Street and Bilski decisions can both be considered correct?”

That was not the holding in Bilski at all. Neither the Federal Circuit or the Supreme Court ever reached the novelty issue. Patentable subject matter is what the case is about and that is a wholly different inquiry than whether a claimed invention is novel. This is exactly why I say that those who want to take issue with patents really need to understand patent law. You are fundamentally misunderstanding Bilski and think it has to do with an issue that was never argued, never briefed and never addressed by any court.

The Supreme Court seemed to pretty clearly want to make sure that the invention in State Street remained patentable. They just didn’t like the test used. The test is now machine or transformation. If a process is inextricably intertwined with a machine then the process satisfies the patent eligible subject matter threshold. That is why it is extremely well settled that software is indeed patentable.

Your article and response suggest you just do not understand patent law. I also question whether you really understand what software is on a foundational level. Software is not a set of code or mathematical expressions or disassociated algorithms. Software is a set of instructions that directs a machine to perform a task. That has been and always will be patentable in the United States.

I also question whether you really are arguing about whether software should be considered patent eligible. Your bleeding over of the novelty issue suggest that your problem is with granting patents on software that is not new. That is certainly a valid concern, but not at all relevant when considering whether a class of invention expresses patent eligible subject matter.

-Gene

Paul JohnsonMay 12, 2011 6:38 pmGene,

Sorry, I was actually trying to avoid getting into the issue of novelty, but I fear I expressed myself badly. Lets drop that one for now.

From my layman’s understanding of the law, the first step is to establish the facts of the case, and the second step is to apply the law to those facts. I suggest we proceed in the same way.

It is a well established fact, backed up by mathematical proof, that any algorithm (i.e. a finite sequence of steps for manipulating information) can be expressed as a mathematical formula in the Lambda Calculus. Do you accept this fact?

Paul.

WorBluxSeptember 5, 2012 10:50 pm“This is the point that I think anti-software patent folks miss or refuse to accept. Processes are patentable subject matter now and always have been. Software is just a process, so it ought to be patentable the same way every other process has been since 1790.”

No not every other process. An Algorithm is a step-by-step procedure for calculations, which operate on symbolic representation and proceed according to a scrict set of formal rules. Every bit of software now existing operates in this fashion. The actual implementation is stranger still, where a specific arbitrary number is given as an input into the algorithm of the machine cycle on a cumputer, which results in the machine cycle emulating some other algorithm.

It’s just feeding inputs into a mathematical process, in order to emulate some other mathematical process.

Maury Markowitz

“…

Now consider the MP3 process. It takes a sound and converts it into a very different format, allowing one to re-convert it into a facsimile of the original sound. I can’t understand why anyone would believe this should not be offered precisely the same protection as a freeze-drying machine.

Given enough money I could build a machine similar to the Analytical Engine that would perform the MP3 process. …

….

It also means that MP3, which is a transformative system, is patentable. And I believe it should be.

…”

The MP3 process takes a symbolic repesentation of a sound. (zeros and ones) and transforms it into a different symoblic representation of a sound. It involves not transformation of sound. It is transformation of symbols according to specific rule, without the intervention of intellegent agency. A.k.a math, specificly lambda calculus.

The process to tranform sound to symbols is well known. Samples of amplitude are taken at specific intervals and converting into a number (of whose representation is different in different devices, but the meaning is the same). The mechanism neccessary to to this are not all obvious so the is potential for petents there. Nearly the same is true for the reverse.

The Analytical Engine is actually a turing-complete computer. Computers are machines that run and instruction cycle and in so doing can caluclate and calculable function given enough time, and give that the function does not require more memory than the machine has available.

And if your machine proceeded by algorithm, or manipulation of symbolic data according to set rules, (of which the mp3 conversion process is) the process in not patentable. All software functionality is actually the result of the manipulation of symbolic data a process for which exact functional replicas may be contruction in the notation of lambda calculus. This is why software ought not be granted patents under current law.

No if you in this process invent some new way or mechanicly storting the symoblic data, or a better linkage to manipulate it, that is patentable. Machine instruction sets or parts of are patented all the time and are not particularly controversial

JasonNovember 16, 2012 7:20 pmThe biggest problem with all these arguments are that software is both directly reducable to mathematics AND directly reducable to a process that is run by a “machine”. It is right smack in the middle of the area that use to distinguish legally patentable from non-patentable. The machine in question is also as close to a universal (Turing Complete) machine that has ever been invented. The question then becomes what is the software patent actually trying to patent? My understanding from reading above is that the end result is a “machine” that becomes patentable. It seems to me that any interpretation of this idea ends up being practically useless in that it is stupidly easy to create another “machine” that ends up with the same result.

Let me elaborate on the above. How do we define where the machine begins and ends in the patent? Is it the machine code that is generated by the compiler? If that’s the case, then is it still infringing if I use a different compiler that generates different machine code for my computer to do the same algorithm? Maybe it’s any machine that uses the same instruction set. Does it still apply if I compile the same software for an ARM computer as for an x86? How about for an x64 instead of an x86? Ok then maybe the machine can include the language standard that the software was written for? I could obviously just write the algorithm in a different language then. Does it include any implementation that can be run on a Turing Complete machine? So I can generate a machine to do nothing but the presented algorithm which would not be in violation of the patent but a general purpose machine that runs the algorithm would be? How about a machine that handles a typed lambda calculus that is able to do the same process? It’s no longer Turing complete. That doesn’t make much sense. What if I implement that machine in a Turing machine? It seems to me that defining the patent as covering a “machine” seems to make it to easy to work around the patent.

Ok so what if we defined the patent based on the implemented algorithm? No matter if you are a computer scientist or software engineer, the end result is something that can be directly reduced to mathematics. The process by which the software engineer generates the algorithm isn’t what’s up for debate here. The question is whether the end result of their work is patentable.

Copyright already covers the actual text files so there is no need to patent those.

I would argue that software is simply to malleable and replicatable to be reasonably patented. Any end “machine” generated can be transformed by any number of intermediary processes such that the new “machine” is different but issues the same basic result with the same initial starting point. I can buy the argument that software is a set of instruction to a machine to perform a process but for argument’s and curiosity’s sake, which set of instructions/process are you claiming should be patentable? Which set does patent law actually define as patentable as it stands? Abstract mathematical process, software language, machine instruction set, or machine code/bits to the various hardware components?

WorBluxNovember 17, 2012 9:50 pm“Let me elaborate on the above. How do we define where the machine begins and ends in the patent?”

For all of Jason’s questions It depends mostly on the specific claims and the language of the patent. Some of apple’s patents are just on “mobile platforms” or “touchscreen devices”, while the mp3 patents is on the actual algorithm so the claims extend to any device that encodes or decodes the mp3 format.