Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Path: gmd.de!dearn!frmop11.cnusc.fr!univ-lyon1.fr!vishnu.jussieu.fr!
zaphod.crihan.fr!pipex!uunet!world!srctran
From: srct...@world.std.com (Gregory Aharonian)
Subject: Bay Area software patents by companies and law firms
Message-ID: <CCw4Mz.Jwn@world.std.com>
Organization: The World Public Access UNIX, Brookline, MA
Date: Sun, 5 Sep 1993 17:01:47 GMT
Lines: 562

                       BAY AREA SOFTWARE PATENT ACTIVITIES
                                 Greg Aharonian
                        Source Translation & Optimization
                                  P.O. Box 404
                               Belmont, MA 02178
                                  617-489-3727
                             srct...@world.std.com


    This file lists software patents awarded to Bay Area companies, organized
by the law firm that aided the company in patent prosecution.  The following
Bay Area patent law firms were involved with more than a few software patents
over the last ten years, and are included below.  This list should not be
taken to be complete, representative or meaningful.

                  ARNOLD, WHITE & DURKEE
                  BLAKELY SOKOLOFF TAYLOR & ZAFMAN
                  BURNS, DOANE, SWECKER & MATHIS
                  FENWICK & WEST
                  FLEHR, HOHBACH, TEST, ALBRITTON & HERBERT
                  FLIESLER, DUBB, MEYER & LOVEJOY
                  LIMBACH & LIMBACH
                  SKJERVEN, MORRILL, MACPHERSON, FRANKLIN & FRIEL
                  TOWNSEND AND TOWNSEND KHOURIE AND CREW

==============================================================================

FIRM:     ARNOLD, WHITE & DURKEE

Architecture for composing computational modules uniformly across diverse
developmental frameworks
    Cimflex Teknowledge Corporation, Palo Alto

Knowledge based tutor
    Teknowledge, Inc., Palo Alto

Basic expert system tool
    Tecknowledge, Inc., Palo Alto

Knowledge based processor for application programs using conventional data
processing capabilities
    Teknowledge, Inc., Palo Alto


FIRM:     BLAKELY SOKOLOFF TAYLOR & ZAFMAN

Method for incremental rename propagation between hierarchical file name space
    Sun Microsystems, Inc., Mountain View

Apparatus and method for efficient organization of compressed data on a hard
disk utilizing an estimated compression factor
    Maxtor Corporation, San Jose

System for selectively aborting operation or waiting to load required data
based upon user response to non-availability of network load device
    Microsystems, Inc., Mountain View

Method for selectively transferring data instructions to a cache memory
    Sun Microsystems, Inc., Mountain View

Apparatus and method of monitoring the status of a local area network
    Synoptics Communications, Inc., Santa Clara

Apparatus and method for a space saving translation lookaside buffer for
content addressable memory
    Sun Microsystems, Inc., Mountain View

Method and apparatus for structuring and managing human communications by
explicitly defining the types of communications permitted between participants
    Action Technologies, Inc., Alameda

Synchronized journaling system
    Sun Microsystems, Inc., Mountain View

Method and apparatus for executing floating point instructions utilizing
complimentary floating point pipeline and multi-level caches
    Sun Microsystems, Inc., Mountain View

Method and apparatus for structuring and managing human communications by
explicitly defining the types of communications permitted between participants
    Action Technologies, Inc., Alameda

Computer architecture for conserving power by using shared resources and
method for suspending processor execution in pipeline
    Echelon Corporation, Palo Alto

Method and apparatus for cost-based heuristic instruction scheduling
    Sun Microsystems, Inc., Mountain View

Method and apparatus for the naming of database component files to avoid
duplication of files
    Sun Microsystems, Inc., Mountain View

Method for apparatus for implementing a class hierarchy of objects in a
hierarchical file system
    Sun Microsystems, Inc., Mountain View

Method and apparatus for current window cache with switchable address and out
cache registers
    Sun Microsystems, Inc., Mountain View

Transparent system interrupt
    Intel Corporation, Santa Clara

Apparatus for determining relative position of a cache memory in a cache
memory array
    Intel Corporation, Santa Clara

Ring interconnect system architecture
    Apple Computer, Inc., Cupertino

User extensible testing system
    Sun Microsystems, Inc., Mountain View

Method and apparatus for providing assistance with respect to the development,
selection and evaluation of ideas and concepts
    Fisher Idea Systems, Irvine

Local area network device startup process
    Apple Computer, Inc., Cupertino

Method for loading an operating system through a network
    Sun Microsystems, Inc., Mountain View

Apparatus and method for licensing software on a network of computers
    Sun Microsystems, Inc., Mountain View

Method and apparatus for searching database component files to retrieve
information from modified files
    Sun Microsystems, Inc., Mountain View

Method and apparatus for the context switching of devices
    Sun Microsystems, Inc., Mountain View

MIDI to RS 232 interface
    Sun Microsystems, Inc., Mountain View

User extensible, language sensitive database system
    Sun Microsystems, Inc., Mountain View

Input/output section for an intelligent cell which provides sensing,
bidirectional communications and control
    Echelon Corporation, Palo Alto

Locking mechanism for the prevention of race conditions
    Sun Microsystems, Inc., Mountain View

Method and apparatus for benchmarking the working set of window-based computer
systems
    Sun Microsystems, Inc., Mountain View

Apparatus and method for improved caching in a computer system
    Apple Computer, Inc., Cupertino

Method and apparatus for the synchronization of devices
    Sun Microsystems, Inc., Mountain View

Method and apparatus for the flow control of devices
    Sun Microsystems, Inc., Mountain View

Hierarchical file system to provide cataloging and retrieval of data
    Apple Computer, Inc., Cupertino

Computer system for automatically reconfigurating memory space to avoid
overlaps of memory reserved for expansion slots
    Apple Computer, Inc., Cupertino

Memory management unit with overlapping control for accessing main memory of a
digital computer
    Apple Computer, Inc., Cupertino

Method and apparatus for determining available memory size
    Apple Computer, Inc., Cupertino

Multiple processor accelerator for logic simulation
    Daisy Systems Corporation, Mountain View

Digital computer for implementing event driven simulation algorithm
    Daisy Systems Corporation, Mountain View

Memory access system
    Sun Microsystems, Inc., Mountain View

Higher order language-directed computer
    Rational, Santa Clara

Digital computer for implementing event driven simulation algorithm
    Daisy Systems Corporation, Mountain View

Set association memory system
    Rational, Mountain View

Compiler for evaluating Boolean expressions
    Pertron Controls, Corporation, Chatsworth

Local area network with carrier sense collision avoidance
    Apple Computer, Inc., Cupertino


FIRM:     BURNS, DOANE, SWECKER & MATHIS

Automated method of inserting pipeline stages in a data path element to
achieve a specified operating frequency
    VLSI Technology, Inc., San Jose

Integrated circuit placement method using netlist and predetermined ordering
constraints to produce a human readable integrated circuit schematic diagram
    VLSI Technology, Inc., San Jose


FIRM:     FENWICK & WEST

Apparatus and method for serial port interfacing
    Mediasonic Inc., Fremont

Target recognition using string-to-string matching
    Ford Aerospace & Communications Corporation, Newport Beach

Apparatus and method for reconstructing data
    Varian Associates, Inc., Palo Alto, CA

Tomographic apparatus and method for reconstructing planar slices from
non-absorbed and non-scattered radiation
    Varian Associates, Inc., Palo Alto, CA

Removal of spectral artifacts and utilization of spectral effects in
computerized tomography
    Varian Associates, Inc., Palo Alto, CA

Bus interface synchronization control system
    Acer Incorporated, Taipei, Taiwan

Bus structure and method for compiling pixel data with priorities
    Radius Inc., San Jose

Method for encoding color images
    Radius Inc., San Jose

Expandable printer buffer system
    Acer Incorporated, Hsin Chu, Taiwan

System and method for making staff schedules as a function of available
resources as well as employee skill level, availability and priority
    Mrs. Fields, Inc., Park City, UT

Image data accelerated processing apparatus and method
    Radius Inc., San Jose

Systolic array image processing system
    HNC, Inc., San Diego

Method and means for managing citations in documents
    Commsoft, Inc., Windsor

Method for encrypting transmitted data using a unique key
    Tandem Computers Incorporated, San Jose

Distributed multiprocess transaction processing system and method
    Tolerant Systems, Inc., San Jose

Display system and method for constructing and editing a hierarchical
arrangement of information
    Banner Blue Software Incorporated, Newark

File access security method and means
    Atalla Corporation, San Jose

Method and means for securing the distribution of encoding keys
    Atalla Technovations, Sunnyvale


FIRM:     FLEHR, HOHBACH, TEST, ALBRITTON & HERBERT

Expanded cache memory system
    Vitelic Corporation, San Jose

Multimedia interface and method for computer system
    Electric Power Research Institute, Palo Alto

Software development system and method using expanding outline interface
    Gupta Technologies, Inc., Menlo Park

Relational database management system and method for storing, retrieving and
modifying directed graph data structures
    Xidak, Inc., Palo Alto

Method for operating a real-time expert system in a graphical programming
environment
    Integrated Systems, Inc., Santa Clara

Event-controlled LCC stimulation
    VLSI Technology, Inc., San Jose

Method for specifying and controlling the invocation of a computer program
    EDA Systems, Inc., Santa Clara

Method for optimizing utilization of a cache memory
    VLSI Technology, Inc., San Jose

System for controlling instrument using a levels data structure and
concurrently running compiler task and operator task
    Finnigan Corporation, San Jose

Virtual bit map processor
    Stanford University

Multimedia interface and method for computer system
    Electric Power Research Institute, Palo Alto

Process distribution and sharing system for multiple processor computer system
    Counterpoint Computers, Inc., San Jose

Methods and apparatus for controlling access to information processed a
multi-user-accessible digital computer
    Enigma Logic, Inc., Concord

Adaptive data compression system
    Adaptive Computer Technologies, Santa Clara

Process control interface system for designer and operator
    Prometrix Corporation, Santa Clara

Interactive software training system
    Interactive Research Corporation, Santa Clara


FIRM:     FLIESLER, DUBB, MEYER & LOVEJOY

Apparatus and method for controlling the transfer of digital information
between service processors memories in a computer
    Amdahl Corporation, Sunnyvale

Microprocessor system private split cache tag stores with the system tag store
having a different validity bit for the same data line
    Amdahl Corporation, Sunnyvale

Intelligent system for processing and storing articles
    Asyst Technologies, Inc., Milpitas

Parallel I/O network file server architecture
    Auspex Systems, Inc., Santa Clara

Data processing system with logical processing facility supporting a plurality
of system control programs for production operation
    Amdahl Corporation, Sunnyvale

Intelligent waxer carrier
    Asyst Technologies, Inc., Milpitas

Measuring utilization of processor shared by multiple system control programs
    Amdahl Corporation, Sunnyvale

Method and apparatus for updating system software for a plurality of data
processing units in a communication network
    Network Equipment Technologies, Inc., Redwood City

Cross-path optimization in multi-task processing
    Wiltron Company, Morgan Hill

Customization of a system control program in response to initialization of a
computer system
    Amdahl Corporation, Sunnyvale

Processing systems with intelligent article tracking
    Asyst Technologies, Inc., Milpitas

Error recovery scheme for destaging cache data in a multi-memory system
    Amdahl Corporation, Sunnyvale

Version management system using plural control fields for synchronizing two
versions of files in a multiprocessor system
    Amdahl Corporation, Sunnyvale

Multilevel bootstrap apparatus
    Scientific Micro Systems, Inc., Mountain View


FIRM:     LIMBACH & LIMBACH

Kiosk apparatus and method for point of preview and for compilation of market
data
    Intouch Group, Inc., San Francisco

Method of generating and accessing a database independent of its structure
and syntax
    Teknekron Communications Systems, Inc., Berkeley

Multi-channel peripheral interface using selectively flaggable channel
register sets for concurrent write in response to any selected channel
register write instruction
    National Semiconductor Corporation, Santa Clara

Method of programming a task, having a plurality of processes, created by a
plurality of different programmers, for operation by a computer
    Teknekron Communications Systems, Inc., Berkeley

Memory management in packet data mode systems
    National Semiconductor Corporation, Santa Clara

Distributed routing unit for fully-automated flexible manufacturing system
    National Semiconductor Corporation, Santa Clara

Transaction system with off-line risk assessment
    Visa International Service Association, San Mateo

Portable financial transaction card capable of authorizing a transaction in
foreign currencies
    VISA International Service Association, San Mateo

Transaction system with off-line risk assessment
    Visa International Service Association, San Mateo


FIRM:     SKJERVEN, MORRILL, MACPHERSON, FRANKLIN & FRIEL

Method and apparatus for data transfer between source and destination modules
    Alantec, Inc., Fremont

Method for controlling execution of host computer application programs through
a second computer by establishing relevant parameters having variable time of
occurrence and context
    Mitem Corporation, San Jose

Computer-based method and system for product development
    Advanced Micro Devices, Inc., Sunnyvale

Sound editing system using visually displayed control line for altering
specified characteristic of adjacent segment of stored waveform
    Macromedia, Inc., San Francisco

Programmable expandable controller with flexible I/O
    Advanced Micro Devices, Inc., Sunnyvale

Sound editing system using control line for altering specified characteristic
of adjacent segment of the stored waveform
    Macromedia, Inc., San Francisco

Application address display window mapper for a sharable MS-DOS processor
    Athenix Corporation, Sunnyvale

Expert control system for real time management of automated factory equipment
    DEL Partners L.P., Palo Alto

Method for increasing effective addresable data processing system memory space
    Cirrus Logic, Inc., Milpitas

Compensating time delay in filtering signals of multi-dimensional
reconfigurable array processors
    LSI Logic Corporation, Milpitas


FIRM:     TOWNSEND AND TOWNSEND KHOURIE AND CREW

Translation lookaside buffer shutdown scheme
    Silicon Graphics, Inc., Mountain View

Two-level translation look-aside buffer using partial addresses for enhanced
speed
    Silicon Graphics, Inc., Mountin View

Processor having plurality of functional units for orderly retiring
outstanding operations based upon its associated tags
    Nexgen Microsystems, San Jose

Resource management in a multiple resource system
    Micro Technology, Inc., Sunnyvale

Apparatus and method for controlling data flow between a computer and memory
devices
    Micro Technology, Inc., Sunnyvale

Method and apparatus for automatic categorization of applicants from resumes
    Resumix, Inc., Santa Clara

System for modifying relocatable object code files to monitor accesses to
dynamically allocated memory
    Pure Software Inc., Sunnyvale

Buffering system for dynamically providing data to multiple storage elements
    Micro Technology, Inc., Sunnyvale

Queue system with uninterrupted transfer of data through intermediate
locations to selected queue location
    Tandem Computers Incorporated, Cupertino

Distributed text editing system with remote terminal transmits successive
audit messages each identifying individual editing operation
    Tandem Computers Incorporated, Cupertino

Shipment system including processing of document images
    Teknekron Transportation Systems, Berkeley

Method and apparatus for computer understanding and manipulation of minimally
formatted text documents
    Resumix, Inc., Santa Clara

Data storage format for addressable or sequential memory media
    Dantz Development Corporation, Berkeley

Failure-tolerant mass storage system
    SF2 Corporation, Sunnyvale

System for cache space allocation using selective addressing
    Tandem Computers Incorporated, Cupertino

Solid state disk drive emulation
    GRiD Systems Corporation, Fremont

Geometric inference engine
    Ashlar, Inc., Sunnyvale

Method for prioritizing data in financial information system
    Pillar Corporation, Foster City

Computer system for minimizing body dysfunctions induced by jet travel or
shift work
    Kinetic Software, Inc., Woodside

Electronic book educational publishing method using buried reference materials
and alternate learning levels
    Learning Insights, Ltd., San Jose

Knowledge engineering tool
    Tesseract Corporation, San Francisco

Automated investment fund accounting system
    Tesseract Corporation, San Francisco

Method for integrating a knowledge-based system with an arbitrary database
system
    IntelliCorp, Inc., Mountain View

Method for representing a directed acyclic graph of worlds using an
assumption-based truth maintenance system
    IntelliCorp, Inc., Mountain View

Version management tool
    Tandem Computers Incorporated, Cupertino

System for measuring program execution by replacing an executable instruction
with interrupt causing instruction
    Tandem Computers Incorporated, Cupertino

Data-driven, functional expert system shell
    Syntelligence, Sunnyvale

State machine checker
    Tandem Computers Incorporated, Cupertino

Page mapping system
    Elxsi, San Jose

Method for multiprocessor communications
    Tandem Computers Incorporated, Cupertino

Method and apparatus for building knowledge-based systems
    Intellicorp Corporation, Mountain View
--
**************************************************************************
 Greg Aharonian                                      srct...@world.std.com
 Source Translation & Optimization                            617-489-3727
 P.O. Box 404, Belmont, MA 02178

Path: gmd.de!dearn!frmop11.cnusc.fr!univ-lyon1.fr!ghost.dsi.unimi.it!batcomputer!
 caen!spool.mu.edu!darwin.sura.net!udel!news.intercon.com!panix!not-for-mail
From: opped...@panix.com (Carl Oppedahl)
Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Date: 5 Sep 1993 21:24:43 -0400
Organization: PANIX Public Access Internet and Unix, NYC
Lines: 88
Message-ID: <26e3gr$ii0@panix.com>
References: <CCw4Mz.Jwn@world.std.com>
NNTP-Posting-Host: panix.com

In <CCw4Mz....@world.std.com> srct...@world.std.com (Gregory Aharonian) writes:

>                       BAY AREA SOFTWARE PATENT ACTIVITIES
>                                 Greg Aharonian
>                        Source Translation & Optimization
>                                  P.O. Box 404
>                               Belmont, MA 02178
>                                  617-489-3727
>                             srct...@world.std.com

>    This file lists software patents awarded to Bay Area companies, organized
>by the law firm that aided the company in patent prosecution.  The following
>Bay Area patent law firms were involved with more than a few software patents
>over the last ten years, and are included below.  This list should not be
>taken to be complete, representative or meaningful.

>                  ARNOLD, WHITE & DURKEE
>                  BLAKELY SOKOLOFF TAYLOR & ZAFMAN
>                  BURNS, DOANE, SWECKER & MATHIS
>                  FENWICK & WEST
>                  FLEHR, HOHBACH, TEST, ALBRITTON & HERBERT
>                  FLIESLER, DUBB, MEYER & LOVEJOY
>                  LIMBACH & LIMBACH
>                  SKJERVEN, MORRILL, MACPHERSON, FRANKLIN & FRIEL
>                  TOWNSEND AND TOWNSEND KHOURIE AND CREW

This is a meaningful list, despite the bashfulness of the poster.
For the would-be patent applicant who wants to know which firms are active
in the area this would be helpful.

There are several things to think about, if you are a software inventor,
and when the poster said the list should not be taken to be complete,
representative or meaningful, he may have meant some or all or none of
these things:

One has to worry about conflicts.  If one's invention is in software
area A (neural net cell axon designs, say) one would not want to be
represented by a patent law firm that already represents someone else
as to their things in area A.

One has to worry about the particular individual patent lawyer who is
good at the type of patent one needs.  If you know only that firm X
has done patents in your general area, you have not done enough home
work.  Call up the clients of that firm, and ask who is smart at that
firm in your area.  Then make sure you get that particular lawyer
on your file, rather than being shunted off to some other lawyer who
is not the one you want.

Now a few comments on the "most patents in a particular area" list.
Again, I am sure the poster's disclaimer should be kept in mind.

Some clients file first in foreign countries (perhaps that's where
they are located) and only later in the US.  The US patent firm that
does that work did not write the patent application, but worked from
an application written elsewhere.  So if all you know is a firm has
filed lots of applications in your area, you would want to check
further to see if the firm was merely US-filing applications written
elsewhere.  Assuming you are looking for a firm that has written lots
of applications in your area.

It is incredibly difficult for a company to find a good patent lawyer
in their area.  Thus it is not surprising if some companies go simply
to patent firms they have heard of before, or to patent firms that
have prosecuted lots of patents.  That could contribute in some
small way to the above listings.

It's a bit like the "halo effect" that is assumed to go on in
homes that are filling out Nielson diaries that are used to find
out how many households are watching each show.  People get sheepish
if they forget for a few days to write down what they are watching,
then go back and fill in the most popular shows out of laziness.

A strategy I recommend for use in picking a patent firm:  put your
technical types in the same room with the candidate patent lawyer.
Let them tell you which candidate is the most on-the-ball.

And ask to see sample patents *written by that person*.  And call up
the companies listed in those patents to see what they think.





--
Carl Oppedahl AA2KW  (patent lawyer)
1992 Commerce Street #309
Yorktown Heights, NY  10598-4412
voice 212-777-1330

Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Path: gmd.de!newsserver.jvnc.net!howland.reston.ans.net!europa.eng.gtefsd.com!
uunet!elroy.jpl.nasa.gov!decwrl!netcomsv!netcom.com!nagle
From: na...@netcom.com (John Nagle)
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <nagleCCyyLr.Iy5@netcom.com>
Organization: NETCOM On-line Communication Services (408 241-9760 guest)
References: <CCw4Mz.Jwn@world.std.com> <26e3gr$ii0@panix.com>
Date: Tue, 7 Sep 1993 05:44:15 GMT
Lines: 9

In <CCw4Mz....@world.std.com> srct...@world.std.com (Gregory Aharonian) writes:
>    This file lists software patents awarded to Bay Area companies, organized
>by the law firm that aided the company in patent prosecution.  

      He missed me.

	#4,740,904, Nagle, "Line Following System and Process".

					John Nagle

Path: gmd.de!newsserver.jvnc.net!udel!news.intercon.com!panix!not-for-mail
From: opped...@panix.com (Carl Oppedahl)
Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Date: 7 Sep 1993 12:17:15 -0400
Organization: PANIX Public Access Internet and Unix, NYC
Lines: 38
Message-ID: <26ic6b$p55@panix.com>
References: <CCw4Mz.Jwn@world.std.com> <26e3gr$ii0@panix.com> 
<nagleCCyyLr.Iy5@netcom.com>
NNTP-Posting-Host: panix.com

In <nagleCCyyLr....@netcom.com> na...@netcom.com (John Nagle) writes:

>In <CCw4Mz....@world.std.com> srct...@world.std.com (Gregory Aharonian) writes:
>>    This file lists software patents awarded to Bay Area companies, organized
>>by the law firm that aided the company in patent prosecution.  

>      He missed me.

>	#4,740,904, Nagle, "Line Following System and Process".

>					John Nagle

Your patent, according to Dialog file 653, lists an "attorney, agent
or firm" of Michael J. Hughes.  I believe Mr. Aharonian's listing was
ranked according to the most prolific "attorneys, agents or firms"
and that Mr. Hughes had handled fewer patents than the firms that topped 
Mr. Aharonian's list.

This should not be surprising.  Some patent firms have twenty or
more lawyers, and generate one or two patents a week for an annual total
in the hundreds.  That would move them to the top of Mr. Aharonian's
ranking.  They typically list the firm name, not the individual 
attorneys, on the front page of the patent, so the entire firm's output
comes out in one line in Mr. Aharonian's ranking.

My firm, with two attorneys, would never show up near the top in a
ranking such as Mr. Aharonian's.

I don't mean by this to criticize Mr. Aharonian's listing.  Only to 
mention factors that the reader might take into account when 
interpreting it.


-- 
Carl Oppedahl AA2KW  (patent lawyer)
1992 Commerce Street #309
Yorktown Heights, NY  10598-4412
voice 212-777-1330  

Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Path: gmd.de!newsserver.jvnc.net!howland.reston.ans.net!math.ohio-state.edu!
cs.utexas.edu!uunet!chronos.synopsys.com!news.synopsys.com!jbuck
From: jb...@synopsys.com (Joe Buck)
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <1993Sep7.174704.18811@Synopsys.Com>
Keywords: n
Sender: use...@Synopsys.Com
Organization: Synopsys, Inc.
References: <CCw4Mz.Jwn@world.std.com>
Date: Tue, 7 Sep 1993 17:47:04 GMT
Lines: 13

srct...@world.std.com (Gregory Aharonian) writes:
>    This file lists software patents awarded to Bay Area companies, organized
>by the law firm that aided the company in patent prosecution.

Many of the patents on the list do not appear to be software patents at
all (although many clearly are).  Quite a few of them, at least from
their titles, appear to refer to things that are implemented entirely
in hardware (having to do with organization of caches, translation
lookaside buffers, floating point execution units and pipelines, etc).
This list is a useful resource, but needs some cleaning up.
-- 
-- Joe Buck	jb...@synopsys.com
Posting from but not speaking for Synopsys, Inc

Path: gmd.de!rrz.uni-koeln.de!unidui!math.fu-berlin.de!xlink.net!
howland.reston.ans.net!usc!rutgers!cmcl2!panix!not-for-mail
From: opped...@panix.com (Carl Oppedahl)
Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Keywords: n
Message-ID: <26iorc$m8f@panix.com>
Date: 7 Sep 93 19:53:16 GMT
References: <CCw4Mz.Jwn@world.std.com> <1993Sep7.174704.18811@Synopsys.Com>
Organization: PANIX Public Access Internet and Unix, NYC
Lines: 41
NNTP-Posting-Host: panix.com

In <1993Sep7.174704.18...@Synopsys.Com> jb...@synopsys.com (Joe Buck) writes:

>srct...@world.std.com (Gregory Aharonian) writes:
>>    This file lists software patents awarded to Bay Area companies, organized
>>by the law firm that aided the company in patent prosecution.

>Many of the patents on the list do not appear to be software patents at
>all (although many clearly are).  Quite a few of them, at least from
>their titles, appear to refer to things that are implemented entirely
>in hardware (having to do with organization of caches, translation
>lookaside buffers, floating point execution units and pipelines, etc).
>This list is a useful resource, but needs some cleaning up.

This goes back, I suppose, to the neverending semantic question "what
is a software patent".  Some readers may recall a rather heated thread
on comp.patents two years ago about this.

Part of the problem is, software is by definition not patentable.  
Therefore, on some definitions a software patent is an oxymoron -- they
just don't exist.

But the League for Programming Freedom, to name one interested party,
has a definition for software patent such that some software patents
do exist.  And, in their view, should not have been granted.  Poor
stupid me, though, I have read and reread their postings and cannot
discern what exactly would be the rule the Patent Office would use 
to decide whether or not to grant a patent, if it were to choose not
to grant the patents LPF says should not be granted.

One definition I find helpful is, a patent that claims an invention
which, to practice, requires only off-the-shelf hardware plus software.
On that definition a hardware-resident invention, such as an improved
floating point execution unit, would not be a software patent.  I suspect
this means I agree with the poster.


-- 
Carl Oppedahl AA2KW  (patent lawyer)
1992 Commerce Street #309
Yorktown Heights, NY  10598-4412
voice 212-777-1330  

Path: gmd.de!xlink.net!howland.reston.ans.net!agate!ucbvax!silverton.berkeley.edu!djb
From: d...@silverton.berkeley.edu (D. J. Bernstein)
Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <8019.Sep722.14.0493@silverton.berkeley.edu>
Date: 7 Sep 93 22:14:04 GMT
References: <CCw4Mz.Jwn@world.std.com> <1993Sep7.174704.18811@Synopsys.Com> 
<26iorc$m8f@panix.com>
Organization: IR
Lines: 29

In article <26iorc$...@panix.com> opped...@panix.com (Carl Oppedahl) writes:
> Part of the problem is, software is by definition not patentable.  

Carl, did you mean to say ``a mathematical algorithm'' rather than 
``software''?

The phrase ``mathematical algorithm'' is a legal term with a precise
definition (to wit: ``algorithm for the solution of a mathematical
problem'') and a set of doctrines which explain that a mathematical 
algorithm per se is not patentable subject matter.

The phrase ``software'' has not been given any such precise definition,
and to my knowledge no court has ever stated that software is not 
patentable.

> Poor
> stupid me, though, I have read and reread their postings and cannot
> discern what exactly would be the rule the Patent Office would use 
> to decide whether or not to grant a patent, if it were to choose not
> to grant the patents LPF says should not be granted.

Funny, when I read ``Against Software Patents,'' I saw a quite specific
rule: ``For the purpose of this legislation, software should be defined 
by the characteristics that make software patents especially harmful:
Software is built from ideal infallible mathematical components, whose
outputs are not affected by the components they feed into. ... Software
can be easily and cheaply copied.''

---Dan

Path: gmd.de!Germany.EU.net!mcsun!uknet!pipex!uunet!spool.mu.edu!darwin.sura.net!
udel!news.intercon.com!panix!not-for-mail
From: opped...@panix.com (Carl Oppedahl)
Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Date: 8 Sep 1993 00:21:15 -0400
Organization: PANIX Public Access Internet and Unix, NYC
Lines: 70
Message-ID: <26jmjr$9dg@panix.com>
References: <CCw4Mz.Jwn@world.std.com> <1993Sep7.174704.18811@Synopsys.Com> 
<26iorc$m8f@panix.com> <8019.Sep722.14.0493@silverton.berkeley.edu>
NNTP-Posting-Host: panix.com

In <8019.Sep722.14.0...@silverton.berkeley.edu> d...@silverton.berkeley.edu 
(D. J. Bernstein) writes:

>In article <26iorc$...@panix.com> opped...@panix.com (Carl Oppedahl) writes:
>> Part of the problem is, software is by definition not patentable.  

>Carl, did you mean to say ``a mathematical algorithm'' rather than 
>``software''?

>The phrase ``mathematical algorithm'' is a legal term with a precise
>definition (to wit: ``algorithm for the solution of a mathematical
>problem'') and a set of doctrines which explain that a mathematical 
>algorithm per se is not patentable subject matter.

>The phrase ``software'' has not been given any such precise definition,
>and to my knowledge no court has ever stated that software is not 
>patentable.

What matters here is not any court, but the Patent Office.  It does not
grant patent claims of the form "A computer program comprising ...".
Actually, it happened once but will not happen again.

The Arrythmia case (by the Federal Circuit) says that software is not
patentable.

>> Poor
>> stupid me, though, I have read and reread their postings and cannot
>> discern what exactly would be the rule the Patent Office would use 
>> to decide whether or not to grant a patent, if it were to choose not
>> to grant the patents LPF says should not be granted.

>Funny, when I read ``Against Software Patents,'' I saw a quite specific
>rule: ``For the purpose of this legislation, software should be defined 
>by the characteristics that make software patents especially harmful:
>Software is built from ideal infallible mathematical components, whose
>outputs are not affected by the components they feed into. ... Software
>can be easily and cheaply copied.''

Hmmm ... on the one hand you say that "software" has no precise
definition, on the other you say that LPF has defined it.

I feel the quoted language from ASP does not count as a "rule" that
the Patent Office could use to decide whether or not to grant a patent.
I think the ASP language is in fact quite fuzzy.

There are many non-software items, including most digital logic gates
and most op amps, where the physical design goal is that the outputs
are not affected by the components they feed into.  Does ASP mean
that apparatus made of digital logic gates and/or op amps should be
unpatentable?

Many things that most people would consider patentable without question --
mousetraps, whistles ... count as "easily and cheaply copied".  An
artisan with a modest workshop could easily and cheaply copy many 
otherwise-patentable  things made of wood and metal.

If the ASP standard is to be taken at face value, the standard for
patentability would apparently shift like sand as the years pass.
A category of item (cassette players, say) would be within the 
category of things that could be patented, until the fateful day when
someone comes up with a device that "easily" and "cheaply" copies
cassette players.  In the world of Star Trek, a replicator would
presumably render all things unpatentable, since they would be "easily"
and "cheaply" copied.


-- 
Carl Oppedahl AA2KW  (patent lawyer)
1992 Commerce Street #309
Yorktown Heights, NY  10598-4412
voice 212-777-1330  

Path: gmd.de!newsserver.jvnc.net!howland.reston.ans.net!agate!ucbvax!
silverton.berkeley.edu!djb
From: d...@silverton.berkeley.edu (D. J. Bernstein)
Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <8798.Sep817.56.0293@silverton.berkeley.edu>
Date: 8 Sep 93 17:56:02 GMT
References: <CCw4Mz.Jwn@world.std.com> <26iorc$m8f@panix.com> 
<8019.Sep722.14.0493@silverton.berkeley.edu> <26jmjr$9dg@panix.com>
Organization: IR
Lines: 39

In article <26jmjr$...@panix.com> opped...@panix.com (Carl Oppedahl) writes:
> The Arrythmia case (by the Federal Circuit) says that software is not
> patentable.

Where? Please give an exact quote, including the context. I think you're 
misreading the opinion.

> >> Poor
> >> stupid me, though, I have read and reread their postings and cannot
> >> discern what exactly would be the rule the Patent Office would use 
> >> to decide whether or not to grant a patent, if it were to choose not
> >> to grant the patents LPF says should not be granted.
> >Funny, when I read ``Against Software Patents,'' I saw a quite specific
> >rule: ``For the purpose of this legislation, software should be defined 
> >by the characteristics that make software patents especially harmful:
> >Software is built from ideal infallible mathematical components, whose
> >outputs are not affected by the components they feed into. ... Software
> >can be easily and cheaply copied.''
> Hmmm ... on the one hand you say that "software" has no precise
> definition, on the other you say that LPF has defined it.

Software has not been given a precise definition BY THE COURTS. That 
doesn't stop public-interest groups from giving definitions.

> I feel the quoted language from ASP does not count as a "rule" that
> the Patent Office could use to decide whether or not to grant a patent.

Why doesn't it ``count as a "rule"''? It looks like a rule to me. You 
object that some of the phrases are ambiguous; but the fact that the 
line between software and non-software may be fuzzy doesn't mean that it 
doesn't exist. Every doctrine, every regulation, every statute is 
ambiguous at heart.

> Many things that most people would consider patentable without question --
> mousetraps, whistles ... count as "easily and cheaply copied".

But they fail to satisfy the other criterion.

---Dan

Path: gmd.de!newsserver.jvnc.net!rutgers!uwm.edu!math.ohio-state.edu!usc!
elroy.jpl.nasa.gov!ucla-cs!twinsun!eggert
From: egg...@twinsun.com (Paul Eggert)
Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Keywords: n
Message-ID: <CD1x8o.n1M@twinsun.com>
Date: 8 Sep 93 20:07:35 GMT
References: <CCw4Mz.Jwn@world.std.com> <1993Sep7.174704.18811@Synopsys.Com> 
<26iorc$m8f@panix.com>
Sender: use...@twinsun.com
Organization: Twin Sun Inc, El Segundo, CA, USA
Lines: 83
Nntp-Posting-Host: spot

opped...@panix.com (Carl Oppedahl) writes:

>But the League for Programming Freedom, to name one interested party,
>has a definition for software patent such that some software patents
>do exist.  And, in their view, should not have been granted.  Poor
>stupid me, though, I have read and reread their postings and cannot
>discern what exactly would be the rule the Patent Office would use ...

A common attitude of patent lawyers is that software developers are a
confused bunch, who don't all agree on exactly what constitutes a
software patent, and who don't understand the law as well as the patent
lawyers do.  The implication is that it's better to ignore software
developers and devise the rules the way that patent lawyers like them,
which naturally is to make as much software patentable as possible.
This hostile attitude by patent lawyers greatly hinders progress towards
solutions to the real problems we currently have with software patents.

Instead of jeering at the LPF's definition of software patents,
wouldn't it be more productive to improve on it?  For reference, here's
the relevent section of ``Against Software Patents''.  This section
sounds clear to me, but then I'm a software practitioner, and it would
be helpful to have a patent lawyer's reaction to it.  If there's
something that is unclear here, then bringing the ambiguity out into
the open would improve the quality of the debate.

-----

One Way to Eliminate Software Patents

We recommend the passage of a law to exclude software from the domain of
patents.  That is to say that, no matter what patents might exist, they
would not cover implementations in software; only implementations in the
form of hard-to-design hardware would be covered.  An advantage of this
method is that it would not be necessary to classify patent applications
into hardware and software when examining them.

Many have asked how to define software for this purpose---where the line
should be drawn.  For the purpose of this legislation, software should be
defined by the characteristics that make software patents especially
harmful:

* Software is built from ideal infallible mathematical components, whose
  outputs are not affected by the components they feed into.

  Ideal mathematical components are defined by abstract rules, so that
  failure of a component is by definition impossible.  The behavior of any
  system built of these components is likewise defined by the consequences
  of applying the rules step by step to the components.  

* Software can be easily and cheaply copied.

Following this criterion, a program to compute prime numbers is a piece
of software.  A mechanical device designed specifically to perform the
same computation is not software, since mechanical components have
friction, can interfere with each other's motion, can fail, and must be
assembled physically to form a working machine.

Any piece of software needs a hardware platform in order to run.  The
software operates the features of the hardware in some combination,
under a plan.  Our proposal is that combining the features in this way
can never create infringement.  If the hardware alone does not infringe
a patent, then using it in a particular fashion under control of a
program should not infringe either.  In effect, a program is an
extension of the programmer's mind, acting as a proxy for the programmer
to control the hardware.

Usually the hardware is a general purpose computer, which implies no
particular application.  Such hardware cannot infringe any patents
except those covering the construction of computers.  Our proposal means
that, when a user runs such a program on a general purpose computer, no
patents other than those should apply.

The traditional distinction between hardware and software involves a
complex of characteristics that used to go hand in hand.  Some newer
technologies, such as gate arrays and silicon compilers, blur the
distinction because they combine characteristics associated with
hardware with others associated with software.  However, most of these
technologies can be classified unambiguously for patent purposes, either
as software or as hardware, using the criteria above.  A few gray areas
may remain, but these are comparatively small, and need not be an
obstacle to solving the problems patents pose for ordinary software
development.  They will eventually be treated as hardware, as software,
or as something in between.

Path: gmd.de!newsserver.jvnc.net!rutgers!gatech!howland.reston.ans.net!usc!
ucla-cs!twinsun!eggert
From: egg...@twinsun.com (Paul Eggert)
Newsgroups: ba.general,misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <CD1xr9.n3L@twinsun.com>
Date: 8 Sep 93 20:18:44 GMT
References: <CCw4Mz.Jwn@world.std.com> <1993Sep7.174704.18811@Synopsys.Com> 
<26iorc$m8f@panix.com> <8019.Sep722.14.0493@silverton.berkeley.edu> 
<26jmjr$9dg@panix.com>
Sender: use...@twinsun.com
Organization: Twin Sun Inc, El Segundo, CA, USA
Lines: 23
Nntp-Posting-Host: spot

opped...@panix.com (Carl Oppedahl) writes:

	I feel the quoted language from ASP does not count as a "rule" that
	the Patent Office could use to decide whether or not to grant a patent.

The ``Against Software Patents'' proposal doesn't affect the rules that
the Patent Office uses -- it affects only the rules for what is considered
to infringe a patent.

	Does ASP mean that apparatus made of digital logic gates and/or
	op amps should be unpatentable?

Of course not.  One must take all the characteristics together to decide
whether something is software.  For example, software is easily copied,
but this does not mean that everything that is easily copied must be software.
The LPF's proposal is fairly clear about this.

	Hmmm ... on the one hand you say that "software" has no precise
	definition, on the other you say that LPF has defined it.

The ``one hand'' was what the courts have said, and the ``other hand'' is
what the League for Programming Freedom proposes.  So there's no
contradiction in what Bernstein wrote.

Path: gmd.de!newsserver.jvnc.net!yale.edu!cmcl2!panix!not-for-mail
From: opped...@panix.com (Carl Oppedahl)
Newsgroups: misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Date: 9 Sep 1993 12:34:12 -0400
Organization: PANIX Public Access Internet and Unix, NYC
Lines: 64
Message-ID: <26nlu4$dgj@panix.com>
References: <26iorc$m8f@panix.com> <8019.Sep722.14.0493@silverton.berkeley.edu> 
<26jmjr$9dg@panix.com> <mcgregorCD0zuG.MyM@netcom.com> <CD2G74.o3@twinsun.com>
NNTP-Posting-Host: panix.com

In <CD2G74...@twinsun.com> egg...@twinsun.com (Paul Eggert) writes:

>mcgre...@netcom.com (Scott L. McGregor) writes:

[in a previous posting I had a working definition of "software 
patent" namely, a patent claiming a system composed of off-the-shelf 
hardware plus novel software.]

>	if the definition of off-the-shelf hardware is included,
>	patentability would change over time, [because]... what
>	constitutes off-the-shelf computer hardware changes with time.

>That is a problem with Oppedahl's definition of software patents
>(which is much broader than the LPF's), but it is not a problem with
>the LPF's definition, which talks about software running on
>``general-purpose computers'', not on ``off-the-shelf hardware''.

But what some readers may have missed is this -- I have no gripe with
the present Patent Office threshold for what is or is not patentable
subject matter.  So it really doesn't matter what my working definition
of "software patent" might be, or whether there is a "problem" with
it.

And for the purposes I use the term, mostly in trying to make a 
rough guess what skills will be needed to write the patent application
or to understand it, it is a virtue, not a problem, that my 
definition has a moving horizon based on what is "off-the-shelf" 
hardware.

The only people who have a "problem" are those who are suggesting a 
change is needed in the Patent Office threshold for what is or is not
patentable subject matter, if their proposed definition for what is
to be unpatentable turns out to be sloppy or fuzzy or meaningless.

I have said this many times.  If you are going to be helpful here you
(and if you are one of those who seeks a change) you are going to
have to propose a standard by which the Patent Office would sort
patent applications into two piles, patentable subject matter and
unpatentable (that is, they choose to follow your views on this).

Criteria such as "is it easily copied" are unhelpful.  This leads
to anomalies like an invention that is patentable in 1993 but not
in 1994, only because a new kind of copier came on the scene.

Criteria such as "is there friction or noise in it" are unhelpful.
The proponent is essentially trying to say that only analog devices,
with signal-to-noise ratios and coefficients of friction, are 
patentable subject matter.  The proponent is essentially trying to
say that anything digitized (with schmitt triggers on the inputs,
for example) that is largely noise-immune falls in the supposedly
unpatentable subject matter area.

The plain fact, which many try to ignore, is that a black box with
inputs and outputs, when connected with and interacting with the
world in some useful way, is patentable subject matter.  It is 
intellectually irrelevant whether the stuff in the black box is
a processor running a stored program or a thousand op amps and 
resistors.

-- 
Carl Oppedahl AA2KW  (patent lawyer)
1992 Commerce Street #309
Yorktown Heights, NY  10598-4412
voice 212-777-1330  

Newsgroups: misc.legal.computing,comp.software-eng
Path: gmd.de!newsserver.jvnc.net!howland.reston.ans.net!usc!elroy.jpl.nasa.gov!
ucla-cs!twinsun!eggert
From: egg...@twinsun.com (Paul Eggert)
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <CD4o02.5Hv@twinsun.com>
Sender: use...@twinsun.com
Nntp-Posting-Host: spot
Organization: Twin Sun Inc, El Segundo, CA, USA
References: <26iorc$m8f@panix.com> <8019.Sep722.14.0493@silverton.berkeley.edu> 
<26jmjr$9dg@panix.com> <mcgregorCD0zuG.MyM@netcom.com> <CD2G74.o3@twinsun.com> 
<26nlu4$dgj@panix.com>
Date: Fri, 10 Sep 1993 07:40:47 GMT
Lines: 47

Carl Oppedahl writes:

   you are going to have to propose a standard by which the Patent Office
   would sort patent applications into two piles, patentable subject matter
   and unpatentable

I don't see why this is necessary.  For example, the LPF's proposal
doesn't make the patent office sort applications into two piles.  It
merely exempts software (as narrowly defined by the LPF) from the scope
of patent infringement suits.

   Criteria such as "is it easily copied" are unhelpful.

That is just one criterion that the LPF gives for software, and it's
not even the most important one.  Just because something is easily
duplicated does not mean it is software.  In the past, new kinds of
copiers have not materially affected the issue of whether software is
software.  This won't change any time soon.

   The proponent is essentially trying to say that only analog devices,
   with signal-to-noise ratios and coefficients of friction, are 
   patentable subject matter.

The LPF's proposal says nothing of the sort.  Digital devices must also
deal with signal-to-noise ratios and the like, and the LPF's proposal
would allow them to be patented.

   The plain fact, which many try to ignore, is that a black box with
   inputs and outputs, when connected with and interacting with the
   world in some useful way, is patentable subject matter.

That is an extreme let's-patent-everything-in-sight position.  It is
not a ``plain fact''.  Many such black boxes are not patentable subject
matter.  For example, surgical methods are not patentable.

If I wanted to reply in kind, I would say something like ``The plain
fact, which many try to ignore, is that mathematics is not patentable
subject matter; and software consists of mathematical objects.''  The
controversy about software patents comes from this collision between
worlds, one with patents, the other with freedom.  We could argue about
this till the cows come home, and I believe I hear them mooing already.

But the bottom line is that we should grant patents in a field only if
they promote progress.  If software patents are hindering progress, we
should stop wasting millions of dollars handing them out.  We've got
better things to do.  Legal theories about black boxes and mathematics
are secondary.

Path: gmd.de!newsserver.jvnc.net!howland.reston.ans.net!wupost!csus.edu!
netcom.com!netcomsv!ulogic!hartman
From: hart...@ulogic.UUCP (Richard M. Hartman)
Newsgroups: misc.legal.computing,comp.software-eng
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <2247@ulogic.UUCP>
Date: 13 Sep 93 22:18:38 GMT
References: <CD2G74.o3@twinsun.com> <26nlu4$dgj@panix.com> <CD4o02.5Hv@twinsun.com>
Followup-To: misc.legal.computing
Organization: negligable
Lines: 37

In article <CD4o02....@twinsun.com> egg...@twinsun.com (Paul Eggert) writes:
>But the bottom line is that we should grant patents in a field only if
>they promote progress.  If software patents are hindering progress, we
>should stop wasting millions of dollars handing them out.  We've got
>better things to do.  Legal theories about black boxes and mathematics
>are secondary.

I think you have the purpose of patents sideways, if not backwards.

The purpose is to simultaneously promote progress WHILE ENSURING that
the innovators benefit from their works.

In almost every case a patented item or process could be developed
better by a large corporation with (essentially) unlimited resources.
If we were to follow your statement to it's extreme then we should
never grant ANY patent, because they hinder these corporations from
making progress by requiring that these insignificant gnats actually
be PAID for their efforts.

That said, I think the case against software patents is more to be
found in the review and granting process.  Conditions that would
normally invalidate some other sort of patent, such as prior art
or obviousness are consistantly overlooked by the patent office
when reviewing software patents.  Without being familiar with the
patent office's procedures I would surmise that since these people
are essentially laywers and not software engineers they are just
plain not aware of what prior art (speficially not-patented but
wide spread practices) might already exist, or what may or may not
be obvious to someone with a background and training that did not
come from a law school.

		-Richard Hartman
		hart...@ulogic.COM

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
"Fosters!  It's Australian for beer, mate!"

Newsgroups: misc.legal.computing
Path: gmd.de!newsserver.jvnc.net!yale.edu!nigel.msen.com!sdd.hp.com!
vixen.cso.uiuc.edu!uwm.edu!cs.utexas.edu!uunet!ftpbox!mothost!schbbs!
node_142cf.aieg.mot.com!user
From: rcr...@email.mot.com (Mike Waters)
Subject: Re: Bay Area software patents by companies and law firms
Organization: Motorola IPD
Date: Tue, 14 Sep 1993 09:14:56 -0700
Message-ID: <rcrw90-140993091456@node_142cf.aieg.mot.com>
Followup-To: misc.legal.computing
References: <CD2G74.o3@twinsun.com> <26nlu4$dgj@panix.com> 
<CD4o02.5Hv@twinsun.com> <2247@ulogic.UUCP>
Sender: n...@schbbs.mot.com (Net News)
Nntp-Posting-Host: 129.188.192.7
Lines: 49

In article <2...@ulogic.UUCP>, hart...@ulogic.UUCP (Richard M. Hartman)
wrote:


> That said, I think the case against software patents is more to be
> found in the review and granting process.  Conditions that would
> normally invalidate some other sort of patent, such as prior art
> or obviousness are consistantly overlooked by the patent office
> when reviewing software patents.

I would agree that the prior art in software cases is very poorly organized
and hard to search.  I think the USPTO would agree with this too!  The
solution, however, is not to forbid software patents but to organize the
body of software knowledge in much the same way as other fields have been -
circuit design comes to mind.  In areas where patents have been a
signioficant factor for a long time the prior art by necssity is very well
organized and easy to search.   I know of no reason whht this will not
happen with software as time goes on.

> Without being familiar with the
> patent office's procedures I would surmise that since these people
> are essentially laywers and not software engineers they are just
> plain not aware of what prior art (speficially not-patented but
> wide spread practices) might already exist, or what may or may not
> be obvious to someone with a background and training that did not
> come from a law school.


As one who deals daily with USPTO examiners I would agree that they have
"blind spots" in their expertise when compared to the average software
engineer.  On the whole, however,  their technical knowledge is very good
and I have always found examiners willing to learn new technology.  Most
seem to look at this as a significant benefit from their jobs.

The USPTO does not require a law degree to be an examiner, and most
examiners are not lawyers.  The requirement is primarily one of technical
expertise in an area, all of the examiners I have talked to have technical
degrees in an appropriate subject area.  At one time the USPTO would not
accept a Computer Science degree either for registration as an agent or as
an examiner, this is no longer true.  For registration (the area I know
best :-) they look at individual course content since there are so called
CS degrees which actually have nothing to do with computing technology. 
Otherwise they are accepted just like any other degree.

In short, no one deneys that there are problems with software patents, the
dispute is whether the LPF "solution" is needed or even if it would help
anything.
-- 
Mike Waters  rcr...@email.mot.com  AA...@KC7Y.PHX.AZ.US.NA

Path: gmd.de!newsserver.jvnc.net!darwin.sura.net!howland.reston.ans.net!
usenet.ins.cwru.edu!agate!ucbvax!silverton.berkeley.edu!djb
From: d...@silverton.berkeley.edu (D. J. Bernstein)
Newsgroups: misc.legal.computing
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <19331.Sep1507.02.2793@silverton.berkeley.edu>
Date: 15 Sep 93 07:02:27 GMT
References: <CD2G74.o3@twinsun.com> <CD4o02.5Hv@twinsun.com> <2247@ulogic.UUCP> 
<rcrw90-140993091456@node_142cf.aieg.mot.com>
Organization: IR
Lines: 15

In article <rcrw90-140993091456@node_142cf.aieg.mot.com> rcr...@email.mot.com 
(Mike Waters) writes:
> I would agree that the prior art in software cases is very poorly organized
> and hard to search.  I think the USPTO would agree with this too!  The
> solution, however, is not to forbid software patents but to organize the
> body of software knowledge in much the same way as other fields have been -

But of course the problem of software patents extends much deeper than
the USPTO's mere failure to comprehend existing literature. Surely you
will agree that there is already a body of prior art which could not be
any better organized by the USPTO---namely, its very own patents! Yet
the USPTO grants software patents which are entirely anticipated by
_previous software patents_. How could any database of knowledge solve
this problem?

---Dan

Path: gmd.de!newsserver.jvnc.net!howland.reston.ans.net!europa.eng.gtefsd.com!
darwin.sura.net!news.udel.edu!udel!news.intercon.com!panix!not-for-mail
From: opped...@panix.com (Carl Oppedahl)
Newsgroups: misc.legal.computing
Subject: Re: Bay Area software patents by companies and law firms
Date: 15 Sep 1993 21:03:28 -0400
Organization: PANIX Public Access Internet and Unix, NYC
Lines: 16
Message-ID: <278e10$84e@panix.com>
References: <CD2G74.o3@twinsun.com> <CD4o02.5Hv@twinsun.com> <2247@ulogic.UUCP> 
<rcrw90-140993091456@node_142cf.aieg.mot.com> 
<19331.Sep1507.02.2793@silverton.berkeley.edu>
NNTP-Posting-Host: panix.com

In <19331.Sep1507.02.2...@silverton.berkeley.edu> d...@silverton.berkeley.edu 
(D. J. Bernstein) writes:

>Yet
>the USPTO grants software patents which are entirely anticipated by
>_previous software patents_.

Your statement suggests this has happened at least twice.  Can you give
an example or two of this?  For each example, it would be helpful to
have the patent numbers involved.


-- 
Carl Oppedahl AA2KW  (patent lawyer)
1992 Commerce Street #309
Yorktown Heights, NY  10598-4412
voice 212-777-1330  

Path: gmd.de!newsserver.jvnc.net!darwin.sura.net!europa.eng.gtefsd.com!uunet!
mcsun!julienas!chorus!octave.chorus.fr!jloup
From: jl...@chorus.fr (Jean-loup Gailly)
Newsgroups: misc.legal.computing
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <5112@chorus.chorus.fr>
Date: 16 Sep 93 08:23:53 GMT
References: <CD2G74.o3@twinsun.com> <CD4o02.5Hv@twinsun.com> <2247@ulogic.UUCP> 
<rcrw90-140993091456@node_142cf.aieg.mot.com> 
<19331.Sep1507.02.2793@silverton.berkeley.edu> <278e10$84e@panix.com>
Sender: n...@chorus.chorus.fr
Reply-To: jl...@chorus.fr (Jean-loup Gailly)
Lines: 26

Dan Bernstein <d...@silverton.berkeley.edu> wrote:

> Yet the USPTO grants software patents which are entirely anticipated by
> _previous software patents_.

Carl Oppedahl <opped...@panix.com> replied:

> Your statement suggests this has happened at least twice.  Can you give
> an example or two of this?  For each example, it would be helpful to
> have the patent numbers involved.

Two examples in the domain of data compression:

- The LZW algorithm used in 'compress' is patented by IBM (4,814,746)
  and Unisys (4,558,302). The IBM patent application was first filed
  three weeks before that of Unisys. The IBM patent is more general,
  but its claim 7 is exactly LZW.

- The LZRW1 algorithm is patented by Waterworth (4,701,745) and Gibson
  & Graybill (5,049,881). (It was later independently reinvented by Ross
  Williams who gave his name to the algorithm.) The G&G patent contains
  more claims but the basic algorithm is exactly the same as in the
  Waterworth patent.

Jean-loup Gailly
jl...@chorus.fr

Path: gmd.de!newsserver.jvnc.net!udel!news.intercon.com!panix!not-for-mail
From: opped...@panix.com (Carl Oppedahl)
Newsgroups: misc.legal.computing
Subject: Re: Bay Area software patents by companies and law firms
Date: 16 Sep 1993 22:00:56 -0400
Organization: PANIX Public Access Internet and Unix, NYC
Lines: 559
Message-ID: <27b5oo$s0n@panix.com>
References: <CD2G74.o3@twinsun.com> <CD4o02.5Hv@twinsun.com> <2247@ulogic.UUCP> 
<rcrw90-140993091456@node_142cf.aieg.mot.com> 
<19331.Sep1507.02.2793@silverton.berkeley.edu> <278e10$84e@panix.com> 
<5112@chorus.chorus.fr>
NNTP-Posting-Host: panix.com

In <5...@chorus.chorus.fr> jl...@chorus.fr (Jean-loup Gailly) writes:

>Dan Bernstein <d...@silverton.berkeley.edu> wrote:

>> Yet the USPTO grants software patents which are entirely anticipated by
>> _previous software patents_.

>Carl Oppedahl <opped...@panix.com> replied:

>> Your statement suggests this has happened at least twice.  Can you give
>> an example or two of this?  For each example, it would be helpful to
>> have the patent numbers involved.

>Two examples in the domain of data compression:

>- The LZW algorithm used in 'compress' is patented by IBM (4,814,746)
>  and Unisys (4,558,302). The IBM patent application was first filed
>  three weeks before that of Unisys. The IBM patent is more general,
>  but its claim 7 is exactly LZW.

>- The LZRW1 algorithm is patented by Waterworth (4,701,745) and Gibson
>  & Graybill (5,049,881). (It was later independently reinvented by Ross
>  Williams who gave his name to the algorithm.) The G&G patent contains
>  more claims but the basic algorithm is exactly the same as in the
>  Waterworth patent.

I don't see where the statement by Jean-Loup Gailly provides support for the
statement of Dan Bernstein.  Let's look again at what Mr. Bernstein said.

Assertion (by Mr. Bernstein):  On at least two occasions, the U.S. Patent
Office has granted a software patent that is anticipated by a previous
software patent.

Now, to say that a patent is "anticipated" is to say that its _claims_ are
anticipated -- that each of its claims appear in something in the prior
art.  So, to be specific, if the patent has eighteen claims, then everything
in each of the eighteen claims would have to appear in something in the prior
art.

It is important, here, to appreciate the enormous difference between what a
patent _discloses_ and what it claims.  You could have patent 1 which
discloses doing A and B and C, and that claims doing A and B and C.  You could
have a later patent 2 that discloses doing A and B and C, and goes on to say
you could follow that by doing D, and which claims doing A and B and C and D.

In this situation it would be incorrect to say that patent 2 is anticipated by
patent 1.  The reason is simple -- you can look and look in patent 1 and you
will not find it disclosed that you can do A and B and C and D.

Turning now to the example given by M. Gailly.

Gailly cites the pair of patents 4,558,302 and 4,814,746.  Apparently it is
suggested that one of the patents "anticipates" or "entirely anticipates" the
other.  The time sequence for anticipation is simple -- to anticipate, a
reference has to be older than the thing it anticipates.  Since patent number
4.558,302 issued in 1985, and patent number 4,814,746 issued in 1989, it
appears that Gailly is saying that '746 is "anticipated" by '302.

And recall this means Gailly is saying that for _each_ claim of '746, it is
the case that everything in the claim is found in '302.

The '746 patent has eighteen claims.  I looked and there is lots and lots in
those claims that does not appear in '302.  It looks to me as though this, the
first of Gailly's examples, fails.

Perhaps what Gailly is saying is that if you read the '746 patent (the
specification rather than the claims) you will find LZW disclosed, and that
the same is true of the '302 patent.  If so, the statement is true but
trivial, and gives no support to Mr. Bernstein's statement.  It happens all
the time, as in the ABC example above, that two patents can be found to
overlap in the sense of both disclosing some particular thing.  And if this
happens, it does not mean that the same thing has been patented twice.  Nor
does it mean that the older of the patents anticipates the newer of the two.

There is another problem with what Gailly says.  It is said that the
application of the IBM patent ('746) "was first filed three weeks before that
of Unisys" ('302).  But by my reading the time sequence is this:

June 20, 1983     --- '302 application filed.
December 10, 1985 --- '302 patent issued.

August 11, 1986   --- '746 application filed.
March 21, 1989    --- '746 patent issued.

So the two applications were filed about three years apart, not three weeks.

Turning now to the second of Gailly's assertions.

Gailly gives a pair of patents:  4,701,745 and 5,049,881.  If this pair is to
provide support for Mr. Bernstein's claims, then it would have to be the case
that the '881 patent is "anticipated" by the '745 patent.

The time sequence here is:

March 6, 1985      --- British application filed that will lead to '745.
March 3, 1986      --- US application filed.
October 20, 1987   --- '745 patent issued.

June 18, 1990      --- '881 application filed.
September 17, 1991 --- '881 patent issued.

I have looked and looked at the fifteen claims of the '881 patent, and cannot
find one of them, let alone all of them, in the '745 patent.

Perhaps here, too, Gailly's statement is merely that both patents disclose
some of the same things -- in which case again it can be trivially true and
yet would not provide support for Mr. Bernstein's statement.

In case it may be of interest to the reader, I have reproduced below the
eighteen claims of the '746 patent (so that one may see what would have to be
in the '302 patent if the '746 were to be "completely anticipated" by the
'302) and the fifteen claims of the '881 patent.

PATENT NO.:  4,814,746

 1. A method for data compression of individual sequences or strings of
symbols arranged in a data stream, comprising the steps of:
 initializing a dictionary consisting of a set of strings with an index for
each of said strings and including all possible strings of length l;
 setting a current input position at the beginning of said data stream and
repeating the following steps until the data stream to be compressed is
exhausted;
 determining a longest string S in said dictionary which matches a current
string in the data stream starting from the current input position;
 generating an identifier I for S consisting of an encoding of the index
associated with said longest matched string S;
 advancing the current input position to immediately after said current
string in the data stream;
 modifying said dictionary based on the preceding longest matched string S,
the immediately succeeding symbols in the next string in the data stream,
and the sequence of previously matched strings;
 transmitting I to a utilization device; and
 decoding I at said utilization device to recover said string S.

 2. A method for data compression of individual sequences or strings of
characters in a data stream comprising the steps of:
 initializing a set of strings into a dictionary consisting of n strings
each with an identifier and including all possible strings of length l;
 setting a current input position at the beginning of said data stream;
 determining the longest string S in the dictionary which matches the
current string of characters of the data stream starting at the current
input position;
 finding the identifier I for S;
 transmitting I to a utilization device;
 decoding I at said utilization device to recover said string S;
 adding a new string S' to said dictionary where S' comprises a
concatenation of a previous string match and said current string match;
 generating and assigning an identifier I' to string S';
 advancing the current input position to a next character in said stream
following the current matched string; and
 repeating the above determining, finding, transmitting, decoding, adding,
generating and assigning, and advancing steps for a next string until the
data stream to be compressed is exhausted.

 3. A method according to claim 2, further comprising the step of:
 deleting a least recently used string from said dictionary to create an
empty slot for said new string S', if no empty slot is found when modifying
said dictionary.

 4. A method for creating a dynamic dictionary of fixed size to be used in
achieving data compression of individual sequences or strings of symbols in
a data stream, comprising the steps of:
 initializing a set of strings to consist of n sequences of symbols
including all possible strings of length l;
 providing a dictionary of fixed size in storage containing said
initialized set of strings each with an identifier;
 determining a longest string S of the set which matches a current string
of the data stream to be compressed;
 testing said dictionary of fixed size in storage containing said set of
strings for an empty slot to store a new matched string;
 deleting a least recently used string from said dictionary, if no empty
slot is found, to create an empty slot; and
 assigning a slot identifier j to said empty slot found or created from the
above steps of testing and deleting to identify a new matched string stored
therein.

 5. A method for data compression of individual sequences in a data
stream, comprising the steps of: initializing a set of strings to consist
of n sequences; determining a longest string S of the set which matches a
current string; generating an identifier I for S; transmitting I to a
utilization device; testing a dictionary in storage containing said set of
strings for an empty slot; deleting a least recently used string from said
dictionary if no empty slot is found to create an empty slot; assigning
slot identifier j to said empty slot found or created from the above steps
of testing and deleting; adding a new string S' to said set where S'
comprises a concatenation of a previous string match and said current
string match; assigning an identifier k to string S'; advancing the input
position to a next character in said stream; outputting an identifier m to
indicate a match; and repeating the above steps for a next string.

 6. A method according to claim 1, wherein said modifying step comprises
the steps of:
 adding a new string S' to said set, where S' comprises a concatenation of
a previous string match and said current string match; and
 assigning an identifier I' to said string S'.

 7. A method according to claim 1, wherein said modifying step comprises
the steps of:
 adding a new string S' to said set, where S' comprises a concatenation of
said current string match and an immediately succeeding symbol in said data
stream; and
 assigning an identifier I' to said string S'.

 8. A method according to claim 1, further comprising the step of:
 testing a dictionary of fixed size in storage containing said set of
strings for an empty slot to store said new string S'.

 9. A method according to claim 8, further comprising the step of:
 deleting a least recently used string from said dictionary to create an
empty slot, if no empty slot is found.

 10. A system for data compression of individual sequences or strings of
symbols arranged in a data stream, comprising:
 means for initializing a dictionary consisting of a set of strings with an
index for each of said strings and including all possible strings of length
l;
 means for setting a current input position at the beginning of said data
stream;
 means for determining the longest string S in said dictionary which
matches a current string in the data stream starting from the current input
position;
 means for generating an identifier I for S consisting of an encoding of
the index associated with said longest matched string S;
 means for advancing the current input position to immediately after said
current string in the data stream;
 means for modifying said dictionary based on the preceeding longest
matched string S, the immediately succeeding symbols in the next string in
the data stream, and the sequence of previously matched strings;
 means for transmitting I to a utilization device;
 means for decoding I at said utilization device to recover said string S;
and
 means for repeatedly activating said determining, generating, advancing,
modifying, transmitting, and decoding means until the data stream to be
compressed is exhausted.

 11. A system as in claim 10, wherein said modifying means comprises:
 means for adding a new string S' to said set, where S' comprises a
concatenation of a previous string match and said current string match; and
means for assigning an identifier I' to string S'.

 12. A system as in claim 10, wherein said modifying means comprises:
 means for adding a new string S' to said set, where S' comprises a
concatenation of said current string match and an immediately succeeding
symbol in said data stream; and
 means for assigning an identifier I' to string S'.

 13. A system according to claim 10, further comprising:
 means for storing a dictionary of fixed size containing said set of
strings; and
 means for testing said dictionary for an empty slot to store said new
string S'.

 14. A system according to claim 13, further comprising:
 means for deleting a least recently used string from said dictionary to
create an empty slot, if no empty slot is found.

 15. A system for data compression of individual sequences or strings of
characters in a data stream, comprising:
 means for initializing a set of strings into a dictionary consisting of n
strings each with an identifier and including all possible strings of
length l;
 means for setting a current input position at the beginning of said data
stream;
 means for determining the longest string S in the dictionary which matches
the current string of characters of the data stream starting at the current
input position;
 means for finding the identifier I for S;
 means for transmitting I to a utilization device;
 means for decoding I at said utilization device to recover said string S;
 means for adding a new string S' to said dictionary, where S' comprises a
concatenation of said current string match and at least one of a previous
string match and an immediately succeeding character in said data stream;
 means for generating and assigning an identifier I' to string S';
 means for advancing the current input position to a next character in said
stream following the current matched string;
 means for repeatedly actuating said determining, finding, transmitting,
decoding, adding, generating and assigning, and advancing means to operate
on a next string until the data stream to be compressed is exhausted.

 16. A system according to claim 15, further comprising:
 means for deleting a least recently used string from said dictionary to
create an empty slot for said new string S', if no empty slot is found when
adding said new string to said dictionary.

 17. A system for creating a dynamic dictionary of fixed size to be used
in achieving data compression of individual sequences or strings of symbols
in a data stream, comprising:
 means for initializing a set of strings to consist of n sequences of
symbols including all possible strings of length l;
 means for determining a longest string S of the set which matches a
current string of the data stream to be compressed;
 means for storing a dictionary of fixed size containing said intialized
set of strings each with an identifier;
 means for testing said dictionary for an empty slot to store a new matched
string;
 means for deleting a least recently used string from said dictionary, if
no empty slot is found, to create an empty slot; and
 means for assigning a slot identifier j to said empty slot found or
created following the operation of said testing and deleting means to
identify a new matched string stored therein.

 18. A system for data compression of individual sequences or strings in a
data stream, comprising:
 means for initializing a set of strings to consist of n sequences;
 means for determining a longest string S of the set which matches a
current string to be compressed;
 means for generating an identifier I for S;
 means for transmitting I to a utilization device;
 storage means comprising a dictionary containing said set of strings;
 means for testing said dictionary in storage for an empty slot;
 means for deleting a least recently used string from said dictionary, if
no empty slot is found, to create an empty slot;
 means for assigning slot identifier j to said empty slot found or created
by said testing and deleting means;
 means for adding a new string S' to said set where S' comprises a
concatenation of a previous string match and said current string match;
 means for assigning an identifier k to said string S';
 means for advancing the input position to a next character in said stream;
 means for outputting an identifier m to indicate a match; and
 means for repeatedly actuating said foregoing means for a next string.


PATENT NO.: 5,049,881

 1. A compression method for compressing a stream of input data into a
compressed stream of output data based on a minimum number of characters in
each input data subblock to be compressed, said compression method
comprising the steps of:
 a. initializing a hash table and initializing an SRC pointer;
 b. processing input data in the order in which the characters in the data
appear and hashing input data subblocks of the minimum compression size
selected;
 c. maintaining a hash table which contains at each entry, an SRC pointer
which points to a previous subblock which hashed to this hash table entry,
such that the possibility of any string of data previously occurring in the
input block may be tested by hashing the current subblock to a hash table
entry, obtaining the previous SRC pointer contained in that entry, and
comparing the two strings of data;
 d. if the two strings of data match on at least the size of the subblock,
then generating a backwards pointer to the previous occurrence of the same
string of data and thereby compressing the second occurrence of the string
of data;
 e. if the two strings of data do not match, then storing the string of
data as incompressible data; and
 f. continuing steps b. through e. until the entire input data has been
processed.

 2. The method in accordance with claim 1 wherein said backwards pointer
is encoded with a variable number of bits and storing the backwards pointer
to the most recent occurrence of a string, thereby creating a short
backwards distance to repeated strings.

 3. A method for expanding the stream of compressed data which has been
compressed in accordance with claim 1 back into the original stream of
data, the expansion method comprising the steps of:
 a. determining for each segment of the compressed input data, whether it
comprises incompressible data or is a back pointer reference;
 b. if the input data segment comprises incompressible data, copying the
input data segment to the output data stream;
 c. if the input data segment comprises a back pointer reference, computing
the location of the previously expanded data referred to, and copying that
previously expanded data to the output stream; and
 d. continuing steps a. through c. until the entire compressed input data
has been processed.

 4. A compression method for compressing a stream of input data into a
compressed stream of output data based on a minimum number of characters in
each input data string to be compressed, said compression method comprising
the creation of a hash table, hashing each occurrence of a string of input
data and subsequently searching for identical strings of input data and if
such an identical string of input data is located whose string size is at
least equal to the minimum compression size selected, compressing the
second and all subsequent occurrences of such identical string of data, if
a string of data is located which does not match to a previously compressed
string of data, storing such data as uncompressed data, and for each input
string after each hash is used to find a possible previous match location
for the string, the location of the string is stored in the hash table,
thereby using the previously processed data to act as a compression
dictionary.

 5. A method for expanding the stream of compressed data which has been
compressed in accordance with claim 4 back into the original stream of
data, the expansion method comprising sequentially analyzing each string of
compressed data and if the string contains incompressible data then
duplication of the string, and if the string references previously expanded
data then duplication of the previously expanded data and repeating the
steps until the entire compressed input data stream has been expanded back
to the original data.

 6. A compression method for compressing a stream of input data into a
compressed stream of output data based on a minimum number of characters in
each input data subblock to be compressed, said compression method
comprising the steps of:
 a. creating an identifier header having a count value for data to follow
and marking the identifier header with a code to designate whether
incompressible or compressible data follows;
 b. reading input data in the order in which the input data appears and
hashing subblocks and comparing them to previous subblocks with the same
hash until a match to a previous subblock occurs which is a match on a
string up to the maximum count value in the identifier header, and then
generating a backwards pointer to designate the second occurrence of a
character string equal to a previous identical string of characters of at
least minimum match size and thereby compressing the second occurrence of
the string; and
 c. continuing generating identifier headers and data until the entire
input data stream has been processed.

 7. The method in accordance with claim 6 wherein said backwards pointer
is encoded with a variable number of bits and storing the backwards pointer
to the most recent occurrence of a string, thereby creating a short
backwards distance to repeated strings.

 8. The method in accordance with claim 6 further comprising a method for
expanding the stream of compressed data back into the original stream of
data, the expansion method comprising the steps of:
 a. evaluating each section sequentially and determining if it contains
incompressible data or a backwards pointer immediately following the
identifier header;
 b. if incompressible data is found, then the count value from the
identifier header determines the amount of data to be copied from the input
stream;
 c. if a backwards pointer is found, then the count value from the
identifier header determines the amount of data to be copied from the
previously expanded data referred to by the backwards pointer; and
 d. repeating steps a. through c. until the entire compressed input stream
has been expanded back to the original data.

 9. In a data compression method, having defined at least one variable
length compression match output token which includes a count field
containing a maximum count value and an incompressible data indicator field
which together form an identification header, a backwards pointer to a
previously encountered data field, and a size of backwards pointer field,
having further defined at least one variable length incompressible data
output token which consists of the identification header followed by
incompressible data of length specified by the count field, and having
further defined a subblock size of a minimum length for performing hash
computations that cannot result in the compressed data being larger than
the uncompressed data, a method for compressing input data into compressed
output data, said compression method comprising the steps of:
 a. initializing a hash table, a source pointer and a destination pointer;
 b. initializing a count value and initializing and storing an
identification header at the location of the destination pointer and then
incrementing the destination pointer;
 c. reading input subblocks pointed to by the source pointer, and computing
hash values for the subblocks in the order in which they appear, and
comparing the string located by the previous entry for this hash value to
determine potential matches and unconditionally replacing the hash table
entry with the current source pointer;
 d. if a hash match does not occur, the data character pointed to by the
source pointer is copied to the data area pointed to by the destination
pointer, and the source pointer, destination pointer, and count value are
incremented such that if the count value then is equal to the maximum count
value, the maximum count value is stored in the current identification
header and processing resumes with step b.;
 e. if a hash match occurs, the match length of the data pointed to by the
current hash table value and the data pointed to by the prior identical
hash table value is determined;
 f. if the match length so computed is less than the minimum match length,
step d. is performed as if no hash value match had occurred;
 g. if the match length so computed is equal to or greater than the minimum
match length, the current identification header is updated with the count
value to complete a prior packet of uncompressible data and an output match
token is then stored at the location pointed to by the destination point
consisting of a count field containing the match count, a raw data
indicator field indicating that a backwards pointer follows, and a variable
length backwards pointer that points to the most recent previous occurrence
of the matching data and then the source pointer is incremented by the
match count and the destination pointer is incremented by the output match
size; and
 h. repeating steps b. through g. until the source data has been processed.

 10. A compression apparatus for compressing a stream of input data into a
compressed stream of output data based on a minimum number of characters in
each input data subblock to be compressed, said compression apparatus
comprising:
 a. means for initializing a hash table and means for initializing an SRC
pointer;
 b. means for processing input data in the order in which the characters in
the data appear and means for hashing input data subblocks of the minimum
compression size selected;
 c. means for maintaining a hash table which contains at each entry, an SRC
pointer which points to a previous subblock which hashed to this hash table
entry, such that the possibility of any string of data previously occurring
in the input block may be tested by hashing the current subblock to a hash
table entry, means for obtaining the previous SRC pointer contained in that
entry, and means for comparing the two strings of data;
 d. if the two strings of data match on at least the size of the subblock,
then means for generating a backwards pointer to the previous occurrence of
the same string of data and thereby compressing the second occurrence of
the string of data; and
 e. if the two strings of data do not match, then means for storing the
string of data as incompressible data.

 11. Means for expanding the stream of compressed data which has been
compressed in accordance with claim 10 back into the original stream of
data, the expansion means comprising:
 a. means for determining for each segment of the compressed input data,
whether it comprises incompressible data or is a back pointer reference;
 b. if the input data segment comprises incompressible data, means for
copying the input data segment to the output data stream; and
 c. if the input data segment comprises a back pointer reference, means for
computing the location of the previously expanded data referred to, and
copying that previously expanded data to the output stream.

 12. A compression apparatus for compressing a stream of input data into a
compressed stream of output data based on a minimum number of characters in
each input data string to be compressed, said compression apparatus
comprising the creation of a hash table, means for hashing each occurrence
of a string of input data and subsequently searching for identical strings
of input data and if such an identical string of input data is located
whose string size is at least equal to the minimum compression size
selected, means for compressing the second and all subsequent occurrences
of such identical string of data, if a string of data is located which does
not match to a previously compressed string of data, means for storing such
data as uncompressed data, and for each input string after each hash is
used to find a possible previous match location for the string, means for
storing the location of the string in the hash table, thereby using the
previously processed data to act as a compression dictionary.

 13. An apparatus for expanding the stream of compressed data which has
been compressed in accordance with claim 12 back into the original stream
of data, the expansion apparatus comprising means for sequentially
analyzing each string of compressed data and if the string contains
incompressible data then means for duplication of the string, and if the
string references previously expanded data then means for duplication of
the previously expanded data.

 14. A compression apparatus for compressing a stream of input data into a
compressed stream of output data based on a minimum number of characters in
each input data subblock to be compressed, said compression apparatus
comprising:
 a. means for creating an identifier header having a count value for data
to follow and means for marking the identifier header with a code to
designate whether incompressible or compressible data follows; and
 b. means for reading input data in the order in which the input data
appears and means for hashing subblocks and comparing them to previous
subblocks with the same hash until a match to a previous subblock occurs
which is a match on a string up to the maximum count value in the
identifier header, and then means for generating a backwards pointer to
designate the second occurrence of a character string equal to a previous
identical string of characters of at least minimum match size and thereby
compressing the second occurrence of the string.

 15. The apparatus in accordance with claim 14 further comprising an
apparatus for expanding the stream of compressed data back into the
original stream of data, the expansion apparatus comprising:
 a. means for evaluating each section sequentially and determining if it
contains incompressible data or a backwards pointer immediately following
the identifier header;
 b. if incompressible data is found, then using means for copying data from
the input stream according to the count value in the identifier header; and
 c. if a backwards pointer is found, then using means for copying data from
the previously expanded data referred to by the backwards pointer according
to the count value in the identifier header.
-- 
Carl Oppedahl AA2KW  (patent lawyer)
1992 Commerce Street #309
Yorktown Heights, NY  10598-4412
voice 212-777-1330

Path: gmd.de!newsserver.jvnc.net!howland.reston.ans.net!europa.eng.gtefsd.com!
uunet!mcsun!julienas!chorus!octave.chorus.fr!jloup
From: jl...@chorus.fr (Jean-loup Gailly)
Newsgroups: misc.legal.computing
Subject: Re: Bay Area software patents by companies and law firms
Message-ID: <5151@chorus.chorus.fr>
Date: 20 Sep 93 11:52:47 GMT
References: <CD2G74.o3@twinsun.com> <CD4o02.5Hv@twinsun.com> <2247@ulogic.UUCP> 
<rcrw90-140993091456@node_142cf.aieg.mot.com> 
<19331.Sep1507.02.2793@silverton.berkeley.edu> <278e10$84e@panix.com> 
<5112@chorus.chorus.fr> <27b5oo$s0n@panix.com>
Sender: n...@chorus.chorus.fr
Reply-To: jl...@chorus.fr (Jean-loup Gailly)
Lines: 23

Enough has been said on LZW (4,558,302) and MW (4,814,746).
Carl Oppedahl has put in my mouth words I did not say
("Gailly is saying that for _each_ claim of '746, it is
the case that everything in the claim is found in '302") but
I think that the debate does not benefit from being continued
at this level.

However, I cannot let one of Carl Oppedahl's assertions remain unchallenged:

> I have looked and looked at the fifteen claims of the '881 patent, and
> cannot find one of them, let alone all of them, in the '745 patent.

I assert that Gibson & Graybill 5,049,881 does not contain any
invention which is not already disclosed (I mean disclosed, not
claimed) in Waterworth 4,701,745, and consequently that the claims
of '881 should not have been granted because they fail the novelty
requirement. You assert that '881 does in fact contain novelty in all
of its claims. I won't ask you to substantiate your assertion for all
claims, but could you do it just for claim 12 of '881? What is the
novel and non-obvious invention in this claim?

Jean-loup Gailly
jl...@chorus.fr