Fault tolerant and combinatorial software environment system, method and medium

a software environment and fault tolerance technology, applied in multi-programming arrangements, instruments, computing, etc., can solve problems such as inability to implement robust, life-like computer programs, and inability to arbitrarily recombine instructions to form new programs

Inactive Publication Date: 2006-12-21
RICE TODD M +1
View PDF7 Cites 10 Cited by
  • Summary
  • Abstract
  • Description
  • Claims
  • Application Information

AI Technical Summary

Benefits of technology

[0039] The present invention overcomes the deficiencies mentioned above by providing a fault tolerant software environment. In particular, embodiments of the present invention envision that various program components (e.g., portions of computer programs, applications, etc) are objectized into entities represented by (and referred to herein as) “codons,” as described herein. Further, it is thus envisioned that a computer program, comprising a plurality of codons, is executed codon by codon utilizing a virtual machine format. This is implemented such that, for example, executing a codon that would not have been expected in view of previously-executed codons (e.g., a codon requiring two inputs is executed without those inputs being available) does not, by itself, cause the program containing the codon to crash or terminate. Instead, the program will continue to run, albeit possibly without generating a meaningful result. This thus allows for improper syntax to occur, allowing for the inclusion of “junk” code.
[0040] The fault-tolerant aspects of the present invention enable, for example, combinatorial operations such as genetic programming. In the environment as envisioned herein, various portions of a computer program can be separated and spliced together, creating new and potentially different functional portions. As these portions are created, embodiments of the present invention contemplate that they can immediately be used in (and as part of) the program without concern for whether they are syntactically correct, and without having to terminate the execution of the program to re-compile it.
[0041] Embodiments of the present invention also contemplate the ability to probabilistically execute individual codons. That is, a codon can be selected to, for example, execute only a certain percentage of the time that it is encountered during execution of a program. The fault-tolerant aspects provided by embodiments of the present invention facilitate this, since the non-execution of a codon could otherwise lead to syntactical errors and adverse results. In general, probabilistic execution can allow for, for example, an enhanced capability to facilitate various types of modeling.
[0042] In addition, embodiments of the present invention also provide the capability of being able to switch between treating information as executable code or as data. An advantage to being able to treat programs as data is, for example, that it allows for a gr eater ability to execute programs in a genetic programming environment. Furthermore, treating programs as data can also facilitate program self-analysis, self-modification and the ability for programs to readily create other programs. A silent mode, as contemplated by embodiments of the present invention, also facilitates these concepts by allowing specified codons not to be executed.
[0044] Further, embodiments of the present invention provide for stack tagging capabilities, which facilitates analysis of functional portions of a program.

Problems solved by technology

Although many computer systems / languages are increasingly compared to DNA and genetics, they do not include many desirable attributes of biological “computation” systems and therefore are deficient for implementing robust, evolvable, life-like computer programs.
Instructions cannot be arbitrarily recombined to form new programs.
Superfluous, “junk”, instructions are not allowed within programs.
Although algorithms and programming methods have been specifically developed to emulate the evolutionary process (e.g. “Genetic Algorithms”, “Genetic Programming”), these also fail to provide the facilities of natural systems, are often cumbersome to deploy, and are not inherently designed to facilitate evolution.
Automatically created programs cannot themselves create, inspect, test, and terminate other automatic programs.
Implementations do not provide for multi-tasking, e.g. the simultaneous evaluation of two or more evolvable programs.
A fundamental problem in using genetic programming to evolve solutions to problems is that programs cannot be arbitrarily recombined without producing software with invalid syntax, nonsense logic, overflow errors, etc.
Termination is an unrecoverable error that stops the entire computing process in the middle of execution and typically requires human interaction in order to resume.
Traditional computing environments are therefore unsuitable for automatically evolving solutions to problems or designing a robust life-like computing system.
As noted above, existing virtual and silicon machines (computers) are not designed to process random code, and will halt execution on unhandled errors.
This restriction may hinder the achievement of an optimal solution as all paths must be syntactically correct, thereby prohibiting “short cuts” or “trespasses” through the space of “illegal programs.”
In addition to syntactical errors, the arbitrary recombination of programs frequently produces programs containing circular logic and infinite loops that cannot be readily terminated by existing genetic programming systems without human intervention.
Existing computer architectures do no allow for the inclusion of junk instructions which have the potential of later being executed (silent instructions).
Although the role of introns is not fully understood, no software system presently allows for their inclusion.
However, this real-time extensibility is not a feature of existing software languages.
Although it may be possible to detach and update object libraries that a program uses through operating system commands, existing computer languages do not provide functions to programmatically edit and update the elements of the libraries, i.e. prior art languages do not provide features for programs written in such languages to modify themselves at run-time.
The above-noted shortcoming limits the speed that programs can be evolved, as the process must continually be terminated and then restarted at each generation.
It also does not enable online adaptation or cooperative computing in which one personal computer is in production while another one is evolving improvements to the library.
For example, prior art computer systems are highly deterministic.
Were such deactivation of portions of code allowed to occur in current software environments, the program may become syntactically incorrect, thus generating an error.
Another deficiency of the prior art is the lack of ability to dynamically switch between treating information as executable code and treating it as data.
Programming languages such as LISP have a limited ability to switch between data and executable code mode in that it can manipulate text-based items rather than processing them.
However, LISP does not assign numerical designations to all of its instructions.
Thus, it does not manipulate the items on a numerical level, and would be deficient in implementing the concepts mentioned above.
The inability to individualize each instruction in current environments thus limits the possibility to analyze, study, research, modify, and price programs.
From the above, it can be appreciated that “prior art” computers (virtual and silicon) and software languages are deficient in emulating many of the characteristics that make up the evolutionary process and do not allow the deliberate or arbitrary recombination of software instructions.
Existing computers terminate execution on unhandled errors and are therefore not fault tolerant.
Code cannot be arbitrarily reassociated.
Unused code (analogous to introns) cannot reside embedded in software programs as the code itself lacks the facility to determine which sections to execute or ignore.
Software languages cannot be compiled or interpreted if syntax errors exist.
Extant languages do not permit real-time extensibility, the ability to add new functionality without stopping execution of the program and recompiling.
Existing machine instructions which make up software languages and are processed by the computer are uni-dimensional and do not provide for individualization (e.g., tagging).

Method used

the structure of the environmentally friendly knitted fabric provided by the present invention; figure 2 Flow chart of the yarn wrapping machine for environmentally friendly knitted fabrics and storage devices; image 3 Is the parameter map of the yarn covering machine
View more

Image

Smart Image Click on the blue labels to locate them in the text.
Viewing Examples
Smart Image
  • Fault tolerant and combinatorial software environment system, method and medium
  • Fault tolerant and combinatorial software environment system, method and medium
  • Fault tolerant and combinatorial software environment system, method and medium

Examples

Experimental program
Comparison scheme
Effect test

Embodiment Construction

[0067] The present invention relates to a fault tolerant and combinatorial software environment. More specifically, the present invention relates to a system, method and medium for providing and facilitating a virtual machine and instruction format that facilitates systematic or arbitrary alteration and recombination of portions of code (e.g., programs) at run-time. Instructions that comprise a language that can be used with the present invention can be individualized, allowing for differentiation of each instruction based on, e.g., usage, origin, authorship, or any other user-defined tag. The overall instruction set can be extended to include any object or procedure that can be represented by software. The invention is envisioned for use in applications such as those relating to automatic program creation (e.g. genetic programming), artificial / directed evolution of digital designs (graphic, industrial, mechanical, architectural, engineering, etc.), online adaptive software systems,...

the structure of the environmentally friendly knitted fabric provided by the present invention; figure 2 Flow chart of the yarn wrapping machine for environmentally friendly knitted fabrics and storage devices; image 3 Is the parameter map of the yarn covering machine
Login to view more

PUM

No PUM Login to view more

Abstract

A fault tolerant software environment, in which various program components (e.g., portions of computer programs, applications, etc) are objectized into entities represented by “codons.” This allows for improper syntax to occur, enabling, for example, combinatorial operations such as genetic programming. The present invention also contemplates such features as the ability to probabilistically execute individual codons, to switch between treating information as executable code or as data (or passing over it), provides that the individual codons can be tagged so that additional information can be associated with them, and provides for tagging of the stack.

Description

CROSS-REFERENCE TO RELATED APPLICATION [0001] This application is a continuation of U.S. application Ser. No. 09 / 570,605 which issued on Dec. 6, 2005 as U.S. Pat. No. 6,973,560, which claims priority under 35 U.S.C. § 119(e)(1) of provisional application Ser. Nos. 60 / 144,078 (filed Jul. 16, 1999, entitled “System, Method and Medium For Enabling Solutions To Problems”), now abandoned, 60 / 144,204 (filed Jul. 19, 1999, entitled “system, Method and Medium For Enabling Solutions To Problems”), now abandoned, and 60 / 196,084 (filed Apr. 11, 2000, entitled “Fault Tolerant and Combinatorial Software Environment System, Method and Medium”), now abandoned, all of which are hereby incorporated by reference in their entireties.BACKGROUND OF THE INVENTION [0002] 1. Field of the Invention [0003] The present invention relates to a fault tolerant and combinatorial software environment. More specifically, the present invention relates to a system, method and medium for providing and facilitating a vi...

Claims

the structure of the environmentally friendly knitted fabric provided by the present invention; figure 2 Flow chart of the yarn wrapping machine for environmentally friendly knitted fabrics and storage devices; image 3 Is the parameter map of the yarn covering machine
Login to view more

Application Information

Patent Timeline
no application Login to view more
Patent Type & Authority Applications(United States)
IPC IPC(8): G06F9/455G06F9/40G06F9/44G06F9/46
CPCG06F9/4436G06F9/4494
Inventor RICE, TODD M.BENNETT, GORDON E.
Owner RICE TODD M
Who we serve
  • R&D Engineer
  • R&D Manager
  • IP Professional
Why Eureka
  • Industry Leading Data Capabilities
  • Powerful AI technology
  • Patent DNA Extraction
Social media
Try Eureka
PatSnap group products