"The other problem is this: Where do you draw the line between patentable algorithm and abstract concept which is not subject to protection? Edgar Codd invented Relational Algebra, which is roughly a sequence of innovations based on set theory for mathematically representing and manipulating information in a specific way. He also invented Relational Calculus which includes some advanced uses of this sort of thing. Why would a Left Join as a mathematical operations be unpatentable but a Left Join operation in software be patentable? Why should there be this difference? In reality they are basically identical and most relational query languages are (imperfect) representations of Codd's abstract inventions. In most cases, software represents a set of abstract mathematical instructions."