Patent 7712080

Obviousness

Combinations of prior art that suggest the claimed invention would have been obvious under 35 U.S.C. § 103.

Active provider: Google · gemini-2.5-flash

Obviousness

Combinations of prior art that suggest the claimed invention would have been obvious under 35 U.S.C. § 103.

✓ Generated

Obviousness Analysis of US Patent 7712080 Under 35 U.S.C. § 103

This analysis identifies combinations of prior art references that would render the independent claims (Claim 1 and Claim 9) of US Patent 7712080 obvious to a person having ordinary skill in the art (PHOSITA) at the time of the invention (priority date May 21, 2003). The motivation to combine these references stems from recognized problems in the art (complexity and inefficiency in distributed programming) and established approaches to achieve more efficient and maintainable parallel distributed systems.

Key Elements of Independent Claims:

Both Claim 1 (method) and Claim 9 (system) independently claim a distributed parallel computing (DPC) program or system that involves:

  1. Distributed Shared Variable (DSV): A single logical variable comprising multiple physical variables distributed across multiple memories.
  2. Distributed Sequential Computing (DSC) Program: A program designed to access the DSV, typically involving a single locus of computation over distributed data.
  3. Transformation to DPC by Spawning Child DSCs: The DSC program transforms into a DPC program by spawning one or more child DSC programs.
  4. Intermediate Condition for Spawning: This spawning occurs when an "intermediate condition" arises within the parent DSC program, specifically one comprising an intermediate result required by the spawned child DSC program to continue its computation.
  5. Concurrent Execution: The parent and spawned child DSC programs execute concurrently to perform parallel processing/operations.
  6. Self-migrating threads/Mobile Agents: The patent explicitly states that DSC utilizes self-migrating threads, often in the form of mobile agents with strong mobility.

Identified Prior Art References (pre-May 21, 2003):

The following prior art references establish various elements of the claimed invention:

  • [A] Pan et al., "Mobile Agents—The Right Vehicle for Distributed Sequential Computing," Springer-Verlag Berlin Jeidelberg, 2002 (hereinafter "Pan DSC 2002"). This paper, co-authored by an inventor of US7712080, directly describes Distributed Sequential Computing (DSC) utilizing mobile agents. It teaches the concept of using self-migrating threads (mobile agents) to perform sequential computations efficiently over distributed data while preserving algorithmic and data structure integrity.
  • [B] Pan et al., "Distributed Parallel Computing using Navigational programming: Orchestrating Computations Around Data," IASTED PDCS 2002 (hereinafter "Pan DPC 2002"). This paper, also co-authored by an inventor, explicitly discusses Distributed Parallel Computing (DPC) using navigational programming and the principle of "orchestrating computations around data," which is equivalent to the "pivot-computes" principle described in US7712080 for efficiency. This demonstrates the recognized goal of achieving parallel computing within this paradigm.
  • [C] Fukuda et al., "Messengers: Distributed Programming Using Mobile Agents," Transactions of the SDPS, Dec. 2001 (hereinafter "Fukuda MESSENGERS 2001"). The patent itself extensively describes the "MESSENGERS" system as a mobile agent platform facilitating navigational programming. It teaches the use of mobile agents with "strong mobility," the hop() command for migration, the inject() command for spawning new Messengers (i.e., child mobile agents/threads), "agent variables" that carry data with a Messenger during migration, and signalEvent()/waitEvent() for local synchronization among Messengers.
  • [D] Stanislaw Chrobot, "Sharing Variables in Distributed Memory," Fundamenta Infomaticae 44 (2000) (hereinafter "Chrobot 2000"). This reference teaches the fundamental concept of shared variables in a distributed memory environment, providing the basis for Distributed Shared Variables (DSVs).
  • [E] Suzuki et al., "Self-Migrating Threads for Multi-Agent Applications," 1999 (hereinafter "Suzuki 1999"). This paper explicitly teaches the use of "self-migrating threads" in "multi-agent applications," directly addressing the core mechanism of mobile computation described in the patent.
  • [F] US6442663B1, Data collection and restoration for homogeneous or heterogeneous process migration, issued Aug. 27, 2002 (hereinafter "Louisiana University Patent"). This patent teaches process migration, which is a key aspect of self-migrating threads and mobile agents.
  • [G] US6496871B1, Distributed agent software system and method having enhanced process mobility and communication in a computer network, issued Dec. 17, 2002 (hereinafter "NEC Patent"). This patent describes a distributed agent system with enhanced process mobility and communication, reinforcing the known nature of mobile agent systems.

Obviousness Combination and Rationale:

A PHOSITA, at the time of the invention, would have been motivated to combine the teachings of Pan DSC 2002, Pan DPC 2002, Fukuda MESSENGERS 2001, Chrobot 2000, and Suzuki 1999 (further supported by Louisiana University Patent and NEC Patent) to arrive at the claimed invention.

Rationale for Combination:

  1. Establishing DSC and the Need for DPC: Pan DSC 2002 explicitly teaches the advantages of Distributed Sequential Computing (DSC) using mobile agents (self-migrating threads) over distributed data, emphasizing the preservation of algorithmic and data structure integrity. Concurrently, Pan DPC 2002 highlights the objective of achieving Distributed Parallel Computing (DPC) using "navigational programming" and the "pivot-computes" principle. A PHOSITA would naturally recognize the benefit of extending the integrity-preserving DSC paradigm to DPC.
  2. Implementing DSVs: Chrobot 2000 teaches the general concept of sharing variables in distributed memory. The patent itself notes that DSVs and self-migration enable shared variable programming beyond single-address space. Given the context of distributed computing with mobile agents, a PHOSITA would readily understand how to implement logically single, but physically distributed, shared variables to facilitate data access by mobile agents, especially when the "pivot-computes" principle (from Pan DPC 2002) calls for computation to occur where the data resides. The patent further clarifies that "an explicit-navigation mobile agent system may be built on top of a DSM. A DSM system may be used to serve as communication media for the globally accessible data, or in other words, agent variables." This directly links DSM concepts to agent variables for distributed data access.
  3. Utilizing Self-Migrating Threads/Mobile Agents for Parallelization: Suzuki 1999 and the general knowledge of mobile agents (reinforced by Louisiana University Patent and NEC Patent) establish the concept of self-migrating threads and process mobility in multi-agent applications. Fukuda MESSENGERS 2001 provides a concrete system that enables this. MESSENGERS explicitly provides the hop() command for thread migration and, crucially, the inject() command for spawning new Messengers (i.e., child self-migrating threads/DSC programs). This directly addresses the "spawning at least one child distributed sequential computing program" element of the claims. The "agent variables" in MESSENGERS are designed to travel with the agent, providing a mechanism for an intermediate result to be "required by the at least one spawned child distributed sequential computing program to continue computation".
  4. Spawning Based on Intermediate Conditions for Concurrent Processing: The concept of initiating a new computation (spawning a thread/task) upon the availability of an intermediate result is a well-known parallelization and pipelining technique in distributed computing. The inject() command in Fukuda MESSENGERS 2001 provides the means to spawn a child program. Furthermore, MESSENGERS includes signalEvent() and waitEvent() for synchronization, which would allow a parent DSC program to signal the completion of an intermediate result and a child DSC program to wait for it before proceeding. The patent's own examples in FIGS. 3(a)-(b) illustrate this transformation: "the thread can clone itself as soon as the computation of R is done, and have the clone hop to the next node carrying the intermediate result and continue the computation at the same time when it continues the computation of NR on the current node". A PHOSITA would understand that by spawning a child Messenger (using inject() from Fukuda MESSENGERS 2001) at the point an intermediate result becomes available, and passing that result via agent variables (from Fukuda MESSENGERS 2001), concurrent processing of independent or pipelined tasks could be achieved.

Conclusion:

The combination of the aforementioned prior art references, particularly the explicit teachings by the inventors themselves in Pan DSC 2002 and Pan DPC 2002, along with the practical mobile agent system described in Fukuda MESSENGERS 2001 and the foundational concepts of distributed shared variables from Chrobot 2000 and self-migrating threads from Suzuki 1999, would have made claims 1 and 9 of US7712080 obvious. A PHOSITA would have been motivated to combine these known elements to create an efficient and maintainable parallel distributed programming system that leverages mobile agent mobility for data access (pivot-computes) and spawns concurrent tasks based on intermediate results, thereby addressing the existing challenges in the field. The specific mechanisms for spawning, migrating, passing data, and synchronizing, as described in the claims, are all clearly taught or suggested by these prior art references.

Generated 5/24/2026, 6:47:40 AM