Interesting People mailing list archives

IBM awarded patent on finite state machines! [ You got to be kidding!!!! -- rest of long message ava


From: David Farber <>
Date: Thu, 30 Jun 1994 14:07:34 -0400

Date: Wed, 29 Jun 1994 13:29:57 -0400
From: Wendell Craig Baker <wbaker () splat baker com>
Subject: The Finite State Machine has been patented


Every week, Gregory Aharonian (patents () world std com) mails out a list
of newly-minted patents.  Every week I gaze over it and there is
always some few distinguished ones that just stand out and beg for a
wider audience.  This is but one this week.  And as with football, you
make the call.


Patent 05317757, on its face, covers any use of a finite state
machine.  Although the word ``software'' is not actually used in the
patent, the words ``code'' and ``process'' and the general tone of the
patent imply that a software implementation is what is intended.


Claim number one focuses on any use of a finite state machine
whatsoever, making no mention of the intended use of such a structure.
Claim 2 focuses on finite state machines with two actions in the
next-state computation.  Later claims add a third action.


The early part of the patent reads suspiciously like someone was
trying to patent the finite state machines used in a network protocol
stack.  As examples one can think of of TCP/IP, DECnet or SNA.


Interestingly it is just this year that the term ``protocol stack''
has gained currency, especially in the PC community where many PC
owners are attempting to get access to the Internet which is
TCP/IP-based.  ``Which protocol stack are you using?  Is it a an open
or closed one (general or proprietary)?'' was heard much on the
exhibits floor of Internet World.  If one can buy them at the corner
store with a range of choices, then finite state machines in software
and networking code in particular are definitely not a new invention.


Later on in the patent text we find explicit mention of IBM's Advanced
Peer-to-peer Network (APPN) protocol.  This is a general patent on
finite state machines originating from the software design of IBM's
APPN networking product.


The intended goals of the patent, or ``objects'' as they are called in
patentese, are quite general.  The ``objects'' of the patent are not
the ``claims'' but rather a listing of but why the patent is a useful
or non-trivial invention.  They are a sort of description of how it is
intended to be used.  They are as follows:


     1. to efficiently perform finite state machine processing in a
        system that is servicing multiple types of resources.
     2. to perform finite state machine processing in a system having
        multiple resources running under different concurrent processes.
     3. to perform finite state machine processing in a system,
        implemented in a minimum code space.
     4. to perform finite state machine processing in a system, that
        provides for ease of maintenance
     5. to provide finite state processing in a system, so that the
        implementations are tailored for each resource.
     6. to perform finite state machine processing in a system, while
        maintaining modularity of the design.


So, if you have a system that needs functionalities one through six,
then you had better examine this patent with special attention to
claim 1.


  Number:      05317757
  Title:       System and method for finite state machine processing
                   using action vectors
  Issue Date:  May 31, 1994
  Filing Date: Feb 6, 1992
  Inventors:   John A. Medicke; Paul Posharow;
  Assignee:    International Business Machines Corporation


Here's the abstract so you won't have to dig through the whole thing.


    Abstract


    A common set of building block action modules perform specific
    tasks in the finite state machine and are strongly modular in
    structure. The set of building block action modules can be made up
    of modules for tasks generic to resource type and modules that are
    resource type independent. A finite state machine is created for
    each resource type to govern the steps of activation and
    deactivation of the resource. Each finite state machine, uniquely
    defines the new state and action processing for each resource
    type. To tie the building block action modules to each finite
    state machine, action vectors are created for each resource type.
    The action vector correlates a particular action selection by the
    finite state machine to the dispatching of one or more building
    block action modules.  An action vector can contain a plurality of
    elements. Each of these elements identifies an action module to
    which control is passed and a function request pointer. The
    function pointer identifies the specific function to be performed
    by the designated action module. The building block action modules
    are invoked in the order of occurrence of the elements in the
    action vector.


I wonder what this means for TCP/IP.  Hey, does your stack violate
this patent?


Current thread: