DE202017007536U1 - Inductive equivalence in instruction machining - Google Patents

Inductive equivalence in instruction machining Download PDF

Info

Publication number
DE202017007536U1
DE202017007536U1 DE202017007536.9U DE202017007536U DE202017007536U1 DE 202017007536 U1 DE202017007536 U1 DE 202017007536U1 DE 202017007536 U DE202017007536 U DE 202017007536U DE 202017007536 U1 DE202017007536 U1 DE 202017007536U1
Authority
DE
Germany
Prior art keywords
function
processor
equivalence
candidate
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202017007536.9U
Other languages
German (de)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phase Change Software LLC
Original Assignee
Phase Change Software LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phase Change Software LLC filed Critical Phase Change Software LLC
Priority to DE202017007536.9U priority Critical patent/DE202017007536U1/en
Publication of DE202017007536U1 publication Critical patent/DE202017007536U1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Abstract

Prozessor, ausgebildet zum Ausführen eines Verfahrens, das die folgenden Schritte aufweist:
Abrufen eines Kandidaten-Quellcodes mit einer Kandidaten-Funktion aus einem Datenspeicher;
Zugreifen auf eine Ersatzfunktion aus dem Datenspeicher;
Zugreifen auf ein Niveau der Hypothesenstärke und eine Ressourcenbegrenzung, wobei das Niveau der Hypothesenstärke durch erfolgreiches Abschließen einer Anzahl von Äquivalenzbewertungen bestimmt wird;
automatisches Bestimmen der Äquivalenz zwischen der Kandidaten-Funktion und der Ersatzfunktion, wobei der Prozessor die Anzahl von Äquivalenzbewertungen ausführt, indem er Eingaben durch eine Vielzahl von Verarbeitungsoperationen laufen lässt und die entsprechenden Ausgaben vergleicht, bis entweder das Niveau der Hypothesenstärke oder die Ressourcenbegrenzung erreicht ist;
wenn die Äquivalenz durch Erreichen des Niveaus der Hypothesenstärke bestimmt wird, automatisches Bereitstellen von Indizien der Äquivalenz, die der Kandidaten-Funktion und der Ersatzfunktion zugeordnet sind;
wenn die Indizien bereitgestellt werden, automatisches Transformieren des Kandidaten-Quellcodes, aufweisend das Ersetzen der Kandidaten-Funktion durch die Ersatzfunktion;
Ausgeben des veränderten Kandidaten-Quellcodes; und
Speichern oder anderweitiges Verfügbarmachen des veränderten Quellcodes für zukünftigen Zugriff und/oder Verarbeitung.

Figure DE202017007536U1_0000
Processor configured to execute a method comprising the following steps:
retrieving candidate source code having a candidate function from a data store;
accessing a surrogate function from the data store;
accessing a hypothesis strength level and a resource constraint, the hypothesis strength level being determined by successfully completing a number of equivalency evaluations;
automatically determining the equivalence between the candidate function and the replacement function, wherein the processor performs the number of equivalence evaluations by running inputs through a plurality of processing operations and comparing the corresponding outputs until either the hypothesis strength level or the resource limit is reached;
if equivalence is determined by reaching the hypothesis strength level, automatically providing indicia of equivalence associated with the candidate function and the surrogate function;
if the indicia are provided, automatically transforming the candidate source code, comprising replacing the candidate function with the replacement function;
outputting the modified candidate source code; and
Store or otherwise make available the modified source code for future access and/or processing.
Figure DE202017007536U1_0000

Description

Gebiet der Offenbarungfield of revelation

Die vorliegende Offenbarung bezieht sich im Allgemeinen auf eine oder mehrere maschinelle Mustererkennung und selektive Bearbeitung.The present disclosure generally relates to one or more pattern recognition and selective editing machines.

Technischer HintergrundTechnical background

Die Entwicklung programmierbarer Maschinen schreitet mit der Weiterentwicklung der Software und der Software-Schreibwerkzeuge voran. Dennoch schreiben Programmierer oft noch immer Software, die bereits geschrieben wurde, sei es aus Zeitgründen, die dem Auffinden und Überprüfen vorhandener Software zugeordnet sind, aus persönlichen Vorlieben, aus Unkenntnis über das Vorhandensein vorhandener Software oder aus anderen Gründen. Infolgedessen weist die Software oft Abschnitte auf, die nicht ideal sind, auch wenn sie funktional äquivalent sind. Frühere Lösungen enthalten „Software Equivalence Checking“, U.S.-Patent-Veröffentlichung 2011/0138362, deren Inhalt hier vollständig durch Bezugnahme aufgenommen wird.The development of programmable machines progresses with the advancement of software and software writing tools. However, programmers often still write software that has already been written, whether for reasons of time associated with finding and verifying existing software, personal preference, ignorance of the existence of existing software, or other reasons. As a result, the software often has sections that are not ideal, even though they are functionally equivalent. Previous solutions include "Software Equivalence Checking," U.S. Patent Publication 2011/0138362, the contents of which are incorporated herein by reference in their entirety.

Compiler und Interpreter wandeln menschenlesbaren Quellcode in maschinenlesbaren Code (z.B. Objektcode, ausführbaren Code, etc.) zur Ausführung um. Compiler können die Auswirkungen vieler Kodierungsprobleme beseitigen, aber nicht alle und nicht immer vollständig. Beispielsweise kann ein Softwarecode, der das Durchlaufen der einzelnen Elemente eines Arrays aufweist, unterschiedliche Leistungsmerkmale aufweisen, wenn der Programmierer das Array nach Zeilenelementen durchläuft und dann die Spalte inkrementiert, oder nach Spaltenelementen und dann die Zeile inkrementiert. Objektcode, wie z. B. ein Assembler, kann Werte unterschiedlich speichern und bei Verwendung einer Technik mehr Verarbeitungsschritte erfordern als bei einer anderen, auch wenn das Endergebnis dasselbe ist. Ebenso kann die Wahl einer bestimmten Sortiermethode je nach den zu sortierenden Daten erhebliche Auswirkungen auf die Leistung haben. Ein Bubble Sort ist beispielsweise effizient, wenn eine relativ kleine Anzahl von Elementen oder eine große Anzahl von Elementen mit nur wenigen Elementen, die nicht in der Sortierreihenfolge sind, sortiert wird. Für die meisten anderen Anwendungen oder Anmeldungen ist der Bubble Sort jedoch wahrscheinlich eine schlechte Wahl.Compilers and interpreters convert human-readable source code into machine-readable code (e.g., object code, executable code, etc.) for execution. Compilers can eliminate the effects of many coding problems, but not all and not always completely. For example, software code that involves iterating through each element of an array may perform differently if the programmer iterates through the array by row elements and then increments the column, or by column elements and then increments the row. object code, such as An assembly language, for example, can store values differently and require more processing using one technique than another, even if the end result is the same. Likewise, the choice of a particular sorting method can have a significant performance impact, depending on the data being sorted. For example, a bubble sort is efficient when sorting a relatively small number of items, or a large number of items with only a few items that are not in the sort order. However, for most other uses or logins, the Bubble Sort is probably a poor choice.

Selbst wenn zwei Softwaresätze jeweils das gleiche Ergebnis liefern, hat nicht jede Software die gleiche Wirkung, z. B. innerhalb einer Anwendung oder eines Softwaremanagementsystems. Software kann Ineffizienzen oder andere unerwünschte Probleme aufweisen. Infolgedessen können Computer oder andere Maschinen, die Software ausführen, nicht optimal arbeiten.Even if two software sets each give the same result, not every software has the same effect, e.g. B. within an application or a software management system. Software may have inefficiencies or other undesirable issues. As a result, computers or other machines running software cannot perform optimally.

Zusammenfassende DarstellungSummary presentation

Bestimmte offenbare Ausführungsformen können SMT-Solver verwenden und können mit Hilfe von „Decision Procedures, An Algorithmic Point of View“, Kroening und Strichman, 2008, ISBN: 978-3-540-74104-6, das hier durch Bezugnahme in seiner Gesamtheit und für alles, was es lehrt, aufgenommen wird, besser verstanden werden. Darüber hinaus können die hier offenbaren Ausführungsformen besser verstanden werden, wenn man die internationale Anmeldung „Machine-Based Instruction Editing“, PCT/US2016/017160 , eingereicht am 9. Februar 2016 und veröffentlicht als WO 2016/130551 , berücksichtigt, die hier in ihrer Gesamtheit und für alles, was sie lehrt, durch Bezugnahme aufgenommen wird.Certain disclosed embodiments may use SMT solvers and may be described using "Decision Procedures, An Algorithmic Point of View," Kroening and Strichman, 2008, ISBN: 978-3-540-74104-6, incorporated herein by reference in its entirety and for everything it teaches is absorbed, better understood. Additionally, the embodiments disclosed herein may be better understood by reviewing International Application Machine-Based Instruction Editing, PCT/US2016/017160 , filed on February 9, 2016 and published as WO 2016/130551 , which is incorporated herein by reference in its entirety and for all that it teaches.

Software oder „Code“ bezieht sich auf Anweisungen, die von einem Menschen für die Verwendung durch eine Maschine, wie z. B. einen Mikroprozessor (oder allgemeiner „Prozessor“), geschrieben wurden, sobald der Code in eine maschinenlesbare Form gebracht wurde. Software kann auch in Schaltkreisen (z.B. Logikschaltung, Firmware usw.) verkörpert sein. Software hat viele Eigenschaften, die über die Funktionalität, für die sie geschrieben wurde, oder das Ergebnis, das sie erzeugt, hinausgehen. So benötigt Software beispielsweise Platz, benötigt Maschinenzyklen, wird von Menschen gelesen, die die Software geschrieben haben können oder auch nicht, kann Sicherheitslücken aufweisen, muss möglicherweise aktualisiert werden, muss auf eine andere Plattform portiert werden, und/oder andere Aspekte. Oft steht eine ideale oder bevorzugte Funktion zur Verfügung, die zuvor geprüft, untersucht und als bevorzugt bestimmt worden ist. Als allgemeine Einführung und bei einer Ausführungsform wird eine maschinenbasierte Anweisung bereitgestellt, um automatisch einen Kandidatenfunktions-Quellcode zu identifizieren, zu bestimmen, ob die Kandidatenfunktion (candidate function) funktionell äquivalent (z.B. dasselbe Ergebnis erzeugt) zu einem Vorzugsfunktions-Quellcode ist, der zuvor überprüft und als autorisierter Quellcode bestimmt wurde, und, falls er innerhalb einer bestimmten Hypothesenstärke und/oder Ressourcenbeschränkung äquivalent ist, den Kandidaten-Quellcode in einen Vorzugsquellcode zu verändern, indem die Kandidatenfunktion durch die Vorzugsfunktion (preferred function) ersetzt wird und der veränderte Quellcode gespeichert oder anderweitig für einen zukünftigen Zugriff und/oder eine zukünftige Verarbeitung verfügbar gemacht wird.Software or "code" refers to instructions written by a human for use by a machine such as an a microprocessor (or more generally "processor"), once the code has been put into a machine-readable form. Software may also be embodied in circuitry (eg, logic circuitry, firmware, etc.). Software has many properties that go beyond the functionality it was written to provide or the result it produces. For example, software requires space, requires machine cycles, is read by humans who may or may not have written the software, may have security vulnerabilities, may need to be updated, need to be ported to another platform, and/or other considerations. Often an ideal or preferred function is available that has previously been tested, studied, and determined to be preferred. As a general introduction and in one embodiment, a machine-based instruction is provided to automatically identify candidate function source code, determine whether the candidate function is functionally equivalent (e.g., produces the same result) to a preferred function source code previously checked and determined to be authorized source code, and if equivalent within a given hypothesis strength and/or resource constraint, the candidate Modify source code to preferred source code by replacing the candidate function with the preferred function and storing or otherwise making the modified source code available for future access and/or processing.

Eine „Funktion“, wie sie hier verwendet wird, weist Softwarefunktionen, Unterprogramme, Prozeduren, (maschinenausführbare) Verfahren, Prädikate, Folgen von Anweisungen oder Regeln innerhalb eines größeren Computerprogramms auf, eine Beziehung, die eine Eingabe einer einzelnen Ausgabe gemäß einer Regel zuordnet. Die einzelne Ausgabe kann einen primitiven Datentyp oder einen komplexeren Datentyp wie einen zusammengesetzten oder abstrakten Datentyp aufweisen.A "function" as used herein includes software functions, subprograms, procedures, (machine-executable) methods, predicates, sequences of instructions, or rules within a larger computer program, a relationship that associates an input with a single output according to a rule. The single output can be a primitive data type or a more complex data type such as a composite or abstract data type.

Bei einer Ausführungsform werden zwei Abschnitte des Quellcodes betrachtet: eine Kandidatenfunktion und eine Vorzugsfunktion. Wie hier noch genauer erläutert wird, wird bestimmt, dass die Kandidatenfunktion und die Vorzugsfunktion identische Ergebnisse oder identische Ergebnisse mit mindestens einer vorbestimmten Hypothesenstärke liefern. Beispielsweise ist die Ausgabe der Kandidatenfunktion und der Vorzugsfunktion über alle bereitgestellten Eingaben äquivalent. Bei einer anderen Ausführungsform wird eine logische Gleichung für die Kandidatenfunktion und die Vorzugsfunktion bestimmt und dann einem automatisierten Theorembeweiser, z. B. einem Satisfiability Modulo Theories („SMT“)-Löser, zur Verfügung gestellt, der die Äquivalenz der Funktionen über eine endliche Menge von Eingaben bestimmen kann. Es können jedoch noch Unterschiede bestehen. Die Kandidatenfunktion kann auf einen oder mehrere Faktoren geprüft worden sein, wie Speichereffizienz, Ausführungsleistung, Lesbarkeit, Wartbarkeit, Sicherheit und/oder andere funktionsunabhängige Unterschiede. Bei einer Ausführungsform weist der Unterschied die Programmiersprache auf. Bei einer anderen Ausführungsform weist der Unterschied auf die Kompaktheit des Codes hin. Zum Beispiel kann „C=2A+2B“ gegenüber „C=A+A+B+B“ und C=2*(A+B) gegenüber „C=2A+2B“ bevorzugt werden. Bei einer anderen Ausführungsform weist der Unterschied auf die Lesbarkeit hin. Zum Beispiel kann „RechteckUmfang =2(SeiteA + SeiteB)“ gegenüber „X=2A+2B“ bevorzugt werden. Bei einer anderen Ausführungsform kann der Unterschied die Ressourceneffizienz aufweisen. So kann es z. B. effizienter sein, auf die Gesamtheit eines Datensatzes aus einer entfernten Datenbank zuzugreifen und den Datensatz im Speicher zu halten, auch wenn nicht alle Felder des Datensatzes benötigt werden, als wiederholt auf die entfernte Datenbank zuzugreifen, um nur die benötigten Felder abzurufen. Die vorstehenden Ausführungen stellen eine Einführung in funktionsunabhängige Unterschiede dar, die zwischen einer Kandidatenfunktion und einer Vorzugsfunktion bestehen können, und sind nicht als erschöpfende Liste gedacht.In one embodiment, two sections of source code are considered: a candidate function and a preferred function. As explained in more detail herein, it is determined that the candidate function and the preference function produce identical results or identical results with at least a predetermined hypothesis strength. For example, the output of the candidate function and the preference function is equivalent over all the inputs provided. In another embodiment, a logical equation for the candidate function and the preference function is determined and then submitted to an automated theorem prover, e.g. B. a Satisfiability Modulo Theories ("SMT") solver that can determine the equivalence of the functions over a finite set of inputs. However, differences may still exist. The candidate function may have been checked for one or more factors such as memory efficiency, execution performance, readability, maintainability, security, and/or other function-independent differences. In one embodiment, the difference includes the programming language. In another embodiment, the difference indicates compactness of the code. For example, "C=2A+2B" may be preferred over "C=A+A+B+B" and C=2*(A+B) over "C=2A+2B". In another embodiment, the difference indicates readability. For example, RectanglePerimeter=2(SideA + SideB) may be preferred over X=2A+2B. In another embodiment, the difference may include resource efficiency. So it can e.g. For example, it may be more efficient to access the entirety of a record from a remote database and keep the record in memory even if not all of the record's fields are needed than to access the remote database repeatedly to retrieve only the fields needed. The foregoing is an introduction to role-independent differences that may exist between a candidate role and a preferred role, and is not intended to be an exhaustive list.

Bei einer anderen Ausführungsform unterscheidet sich die Kandidatenfunktion von der Vorzugsfunktion; der Unterschied beschränkt sich jedoch auf Mitglieder (z.B. Eingänge und/oder Ausgänge) innerhalb der gleichen Äquivalenzklasse. Eine Äquivalenzklasse können z.B. die binären Wertepaare (z.B. {(1,0), (TRUE, FALSE), (ON, OFF)}) oder numerische Äquivalente (z.B. {„.1“, „0.1“, „0.1000“}) sein.In another embodiment, the candidate function differs from the preferred function; however, the difference is limited to members (e.g. inputs and/or outputs) within the same equivalence class. An equivalence class can be, for example, the binary value pairs (e.g. {(1,0), (TRUE, FALSE), (ON, OFF)}) or numeric equivalents (e.g. {".1", "0.1", "0.1000"}). .

Wenn die Vorzugsfunktion und die Kandidatenfunktion bei gleicher(n) Eingabe(n) unterschiedliche Ausgaben erzeugen, die jedoch alle in derselben Äquivalenzklasse liegen, können die Vorzugsfunktion und die Kandidatenfunktion als funktional äquivalent bestimmt werden. Wenn beispielsweise die Vorzugsfunktion und die Kandidatenfunktion dieselben Eingaben erhalten und die Vorzugsfunktion „WAHR“ und die Kandidatenfunktion „1“ (eines binären Datentyps) ausgibt, kann eine funktionale Äquivalenz gegeben sein, selbst bei nicht identischen Ausgaben. Wenn jedoch bei gleicher Eingabe die Vorzugsfunktion „EIN“ und die Kandidatenfunktion „0“ ausgibt, ist die Äquivalenz widerlegt.Given the same input(s), if the preferred function and the candidate function produce different outputs, but they are all in the same equivalence class, then the preferred function and the candidate function can be determined to be functionally equivalent. For example, if the preferred function and the candidate function receive the same inputs, and the preferred function outputs TRUE and the candidate function outputs 1 (of a binary data type), then there can be functional equivalence, even if the outputs are not identical. However, if the preferred function returns "ON" and the candidate function returns "0" given the same input, the equivalence is broken.

Bei bestimmten Ausführungsformen, die hier offenbart werden, können die Probleme, die durch frühere Computersysteme und Softwareentwicklung entstanden sind, gemildert werden. Die Computerprogrammierindustrie konnte viele Probleme ignorieren, die mit der begrenzten Verarbeitungs-, Bandbreiten- und Speicherkapazität zusammenhängen. Die Hardware ist immer billiger und kleiner geworden. Die Investitionen, die erforderlich sind, um einen angemessenen Softwarecode, der die Funktion ausführt, für die er entwickelt wurde, in einen effizienten Code zu verwandeln, werden häufig mit Hardware gelöst. Die Verbesserung der Software über ihre Funktionalität hinaus wurde weitgehend aufgegeben zugunsten der Entwicklung einer angemessenen Funktionalität und, sobald dies geschehen ist, des Übergangs zu anderen Aufgaben - ein Kompromiss, der in der Entwicklungspraxis nach dem Stand der Technik leicht akzeptiert wird.In certain embodiments disclosed herein, the problems posed by previous computer systems and software development can be mitigated. The computer programming industry has been able to ignore many of the problems associated with limited processing, bandwidth, and storage capacity. The hardware has become cheaper and smaller. The investments required to turn adequate software code into efficient code that performs the function it was designed to do are often solved in hardware. Improving the software beyond its functionality has largely been abandoned in favor of developing adequate functionality and, once done, moving on to other tasks - a compromise easily accepted in prior art development practice.

In den Anfängen der Programmierung war prägnante Programmierung ein Artefakt der Sprache. Sprachen wie Assembler ließen kaum Möglichkeiten, mehr als das Wesentliche zu tun, um den Prozessor in die Lage zu versetzen, die erforderliche Funktionalität bereitzustellen. Heute gibt es viele funktionale und objektorientierte Sprachen, die den Programmierern reichlich Gelegenheit geben, ihre Programmierung und Dokumentation zu verschönern. Wenn das Programm jedoch seine funktionale Aufgabe ausführt, wird selten mehr als das geboten.In the early days of programming, concise programming was an artifact of language. Languages like assembler left few opportunities to do more than the essentials to enable the processor to provide the required functionality. Today there are many functional and object-oriented languages that give programmers ample opportunity to develop their programming and beautify documentation. However, when the program performs its functional task, it rarely offers more than that.

Es reicht nicht mehr aus, eine Software bereitzustellen, die lediglich eine gewünschte Funktion ausführt. Bestimmte Computerimplementierungen reagieren nach wie vor sehr empfindlich auf den Speicherbedarf für den Code, die Verarbeitungszeit und den Energiebedarf. Während Desktop-Computer und andere an einem festen Ort angeordnete Computersysteme oft jede Einschränkung bei der Verarbeitung oder Speicherung mit zusätzlicher Hardware lösen, ist die mobile Datenverarbeitung besonders empfindlich gegenüber Speicher-, Verarbeitungs- und Energieanforderungen. Selbst eine sehr bescheidene Verbesserung der Speicher-, Verarbeitungs- und Leistungsanforderungen kann einen epochalen Durchbruch bedeuten, durch den ein zuvor unpraktisches Gerät nun zu einem praktischen Produkt wird. Darüber hinaus werden Faktoren wie die Wiederverwendbarkeit immer wieder angepriesen, kommen aber in der Praxis nur selten zum Einsatz, und wenn, dann ist ein erheblicher Aufwand für einen menschlichen Programmierer erforderlich, um die funktionale Äquivalenz sicherzustellen. Mit Hilfe der hierin enthaltenen Offenbarung können die Computerwissenschaften jedoch von der maschinellen Bearbeitung von Software profitieren, um einen robusteren, sichereren und wiederverwendbaren Code zu erhalten.It is no longer enough to provide software that only performs a desired function. Certain computer implementations remain very sensitive to code memory requirements, processing time, and power requirements. While desktop computers and other fixed-location computing systems often solve any processing or storage limitations with additional hardware, mobile computing is particularly sensitive to storage, processing, and power requirements. Even a very modest improvement in storage, processing, and performance requirements can mean a game-changing breakthrough that turns a previously impractical device into a practical product. In addition, factors such as reusability are often touted but rarely used in practice, and when they are, a significant effort by a human programmer is required to ensure functional equivalence. However, with the aid of the disclosure contained herein, the computer sciences can benefit from software machining to achieve more robust, secure, and reusable code.

Ein weiterer Vorteil der hier offenbaren Ausführungsformen besteht darin, dass Tests und Verifizierungen reduziert oder sogar eliminiert werden können, da die funktionale Äquivalenz innerhalb einer vorgegebenen Begrenzung der Hypothesenstärke und/oder der Ressourcennutzung (z.B. Prozessoren, Prozesszyklen, Zeit usw.) gewährleistet ist. Ein wesentlicher Abschnitt eines jeden Softwareentwicklungsprojekts, das den Stand der Technik nutzt, beinhaltet die Bestätigung, dass die funktionalen Ziele durch das Programm erfüllt werden. Die vorliegende Offenbarung bietet jedoch den Vorteil, dass, sobald eine Funktion genehmigt ist, jeder funktional äquivalente nachfolgende Code durch den genehmigten Code ersetzt werden kann und die funktionale Äquivalenz gewährleistet ist, ohne dass der genehmigte Code anschließend getestet werden muss.Another advantage of the embodiments disclosed herein is that testing and verification can be reduced or even eliminated since functional equivalence is guaranteed within a given constraint on hypothesis strength and/or resource usage (e.g., processors, process cycles, time, etc.). An essential part of any software development project that uses the state of the art involves confirming that the functional goals will be met by the program. However, the present disclosure provides the advantage that once a function is approved, any functionally equivalent subsequent code can be replaced with the approved code and functional equivalence is assured without the need to subsequently test the approved code.

Die Ausdrücke „mindestens eines“, „eines oder mehrere“ und „und/oder“ sind unbestimmte Ausdrücke, die sowohl konjunktiv als auch disjunktiv verwendet werden können. Zum Beispiel bedeutet jeder der Ausdrücke „mindestens eines von A, B und C“, „mindestens eines von A, B oder C“, „eines oder mehrere von A, B und C“, „eines oder mehrere von A, B oder C“ und „A, B und/oder C“, A allein, B allein, C allein, A und B zusammen, A und C zusammen, B und C zusammen oder A, B und C zusammen.The expressions "at least one", "one or more" and "and/or" are indefinite expressions that can be used both conjunctively and disjunctively. For example, each of the phrases means "at least one of A, B and C", "at least one of A, B or C", "one or more of A, B and C", "one or more of A, B or C ' and 'A, B and/or C', A alone, B alone, C alone, A and B together, A and C together, B and C together or A, B and C together.

Der Begriff „eine“ oder „ein“ Einheit bezieht sich auf eine oder mehrere dieser Einheiten. Die Begriffe „eine“ (oder „ein“), „eine oder mehrere“ und „mindestens eine“ können hier austauschbar verwendet werden. Es ist auch zu beachten, dass die Begriffe „aufweisend“, „beinhaltend“ und „umfassend“ austauschbar verwendet werden können.The term "a" or "an" entity refers to one or more of such entities. The terms "a" (or "an"), "one or more" and "at least one" may be used interchangeably herein. It is also noted that the terms "comprising," "including," and "comprising" can be used interchangeably.

Der Begriff „automatisch“ und Variationen davon, wie er hier verwendet wird, bezieht sich auf jeden Prozess oder Vorgang, der ohne wesentliche menschliche Eingaben durchgeführt wird, wenn der Prozess oder Vorgang ausgeführt wird. Ein Prozess oder Vorgang kann jedoch automatisch sein, auch wenn die Ausführung des Prozesses oder Vorgangs materielle oder immaterielle menschliche Eingaben erfordert, wenn die Eingaben vor der Ausführung des Prozesses oder Vorgangs empfangen werden. Menschliche Eingaben gelten als wesentlich, wenn sie die Art und Weise, wie der Prozess oder Vorgang ausgeführt wird, beeinflussen. Menschliche Eingaben, die der Ausführung des Prozesses oder Vorgangs zustimmen, gelten nicht als „wesentlich“.The term "automatic" and variations thereof, as used herein, refers to any process or operation that is performed without significant human input when the process or operation is executed. However, a process or operation may be automatic even if execution of the process or operation requires tangible or intangible human input if the input is received prior to execution of the process or operation. Human input is considered material if it affects how the process or operation is performed. Human input consenting to the execution of the process or operation is not considered "essential".

Der Begriff „computerlesbares Medium“, wie er hier verwendet wird, bezieht sich auf jeden dinglichen Speicher, der dazu beiträgt, Anweisungen an einen Prozessor zur Ausführung zu liefern. Ein solches Medium kann viele Formen annehmen, die nichtflüchtige Medien, flüchtige Medien und Übertragungsmedien aufweisen, aber nicht darauf beschränkt sind. Nichtflüchtige Medien weisen z. B. NVRAM oder magnetische oder optische Platten auf. Flüchtige Medien weisen dynamische Speicher, wie z. B. Hauptspeicher, auf. Gängige Formen von computerlesbaren Medien weisen beispielsweise eine Diskette, eine flexible Platte, eine Festplatte, ein Magnetband oder ein anderes magnetisches Medium, ein magnetooptisches Medium, eine CD-ROM, ein anderes optisches Medium, Lochkarten, ein Papierband, ein anderes physikalisches Medium mit Lochmustern, ein RAM, ein PROM, ein EPROM, ein FLASH-EPROM, ein Festkörpermedium wie eine Speicherkarte, ein anderer Speicherchip oder eine Kassette oder ein anderes Medium auf, von dem ein Computer lesen kann. Wenn das computerlesbare Medium als Datenbank ausgebildet ist, kann die Datenbank jede Art von Datenbank sein, wie z. B. relational, hierarchisch, objektorientiert und/oder ähnliches. Dementsprechend wird davon ausgegangen, dass die Offenbarung ein materielles Speichermedium und nach dem Stand der Technik anerkannte Äquivalente und Nachfolgemedien aufweist, in denen die Softwareimplementierungen der vorliegenden Offenbarung gespeichert sind.As used herein, the term "computer-readable medium" refers to any tangible storage device that helps deliver instructions to a processor for execution. Such a medium may take many forms, including but not limited to non-volatile media, volatile media, and transmission media. Non-volatile media have z. B. NVRAM or magnetic or optical disks. Volatile media include dynamic memory, such as B. main memory on. Common forms of computer-readable media include, for example, a floppy disk, flexible disk, hard disk, magnetic tape or other magnetic medium, magneto-optical medium, CD-ROM, other optical medium, punched cards, paper tape, other physical medium with punched patterns , RAM, PROM, EPROM, FLASH EPROM, a solid state medium such as a memory card, other memory chip or cartridge, or other medium from which a computer can read. If the computer-readable medium is embodied as a database, the database can be any type of database, such as e.g. B. relational, hierarchical, object-oriented and / or the like. Accordingly, the disclosure is deemed to exist on a tangible medium and as of the prior art includes art-recognized equivalents and successor media in which the software implementations of the present disclosure are stored.

Während maschinenausführbare Anweisungen lokal auf einer bestimmten Maschine (z.B. einem Personalcomputer, einer mobilen Rechenvorrichtung, einem Laptop usw.) gespeichert und ausgeführt werden können, sollte man sich darüber im Klaren sein, dass die Speicherung von Daten und/oder Anweisungen und/oder die Ausführung mindestens eines Abschnitts der Anweisungen über eine Verbindung zu einer entfernten Datenspeicher- und/oder Verarbeitungsvorrichtung oder einer Sammlung von Vorrichtungen bereitgestellt werden kann, die gemeinhin als „die Wolke“ bekannt ist, aber ein öffentliches, privates, dediziertes, gemeinsam genutztes und/oder anderes Servicebüro, einen Rechendienst und/oder eine „Serverfarm“ aufweisen kann.While machine-executable instructions may be stored and executed locally on a specific machine (e.g., a personal computer, mobile computing device, laptop, etc.), it should be recognized that the storage of data and/or instructions and/or execution at least a portion of the instructions may be provided via a connection to a remote data storage and/or processing device or collection of devices commonly known as "the cloud," but public, private, dedicated, shared, and/or other service bureau, a computing service and/or a "server farm".

Die Begriffe „bestimmen“ bzw. „feststellen“, „berechnen“ und „rechnen“ und Variationen davon werden hier austauschbar verwendet und weisen jede Art von Methodik, Prozess, mathematischer Operation oder Technik auf.The terms "determine," "calculate," and "calculate," and variations thereof, are used interchangeably herein and encompass any type of methodology, process, mathematical operation, or technique.

Der Begriff „Modul“, wie er hier verwendet wird, bezieht sich auf jede bekannte oder später entwickelte Hardware, Software, Firmware, künstliche Intelligenz, Fuzzy-Logik oder Kombination von Hardware und Software, die in der Lage ist, die diesem Element zugeordnete Funktionalität auszuführen. Auch wenn die Offenbarung in Form von beispielhaften Ausführungsformen beschrieben wird, sollte man sich darüber im Klaren sein, dass andere Aspekte der Offenbarung separat beansprucht werden können.The term "module" as used herein refers to any known or later developed hardware, software, firmware, artificial intelligence, fuzzy logic, or combination of hardware and software capable of performing the functionality associated with that element to execute. Although the disclosure is described in terms of exemplary embodiments, it should be understood that other aspects of the disclosure may be separately claimed.

Der Begriff „menschenlesbar“ in Bezug auf Quellcode, Code, Software oder Äquivalente, wie er hier verwendet wird, bezieht sich auf Computeranweisungen, die ein computerlesbares Format verwenden, das ohne Interpretation oder Kompilierung nicht von einer Maschine zum Zwecke der Ausführung der Anweisungen gelesen werden kann. Der Quellcode kann symbolische Darstellungen aufweisen, wie z.B. benannte Variablen, Funktionen (z.B. „float payment (int principle, float interest)“), die sprachliche Darstellungen aufweisen können (z.B. „if“, „return“, „get“, „fetch“, usw.) und sprachliche Zeichendarstellungen (z.B. „=“, „.“, „(“, „)“, usw.), die als „reservierte Wörter“ bekannt sein können. Die Programmiersprache, die für den menschenlesbaren Quellcode verwendet wird, kann spezifische Regeln dafür haben, was ein reserviertes Wort oder ein äquivalentes Symbol ist und was nicht. Im Allgemeinen ist der Quellcode die menschliche Ausgabe einer entwickelten Programmieranweisung und allgemein bekannt durch die Quellcode-Sprache (z.B. Python, C, C++, FORTRAN, BASIC, usw.).The term "human-readable" in relation to source code, code, software, or equivalent, as used herein, refers to computer instructions that use a computer-readable format that cannot be read by any machine for the purpose of executing the instructions without interpretation or compilation can. The source code may have symbolic representations, such as named variables, functions (e.g. "float payment (int principle, float interest)"), which may have linguistic representations (e.g. "if", "return", "get", "fetch" , etc.) and linguistic character representations (e.g. "=", ".", "(", ")", etc.) which may be known as "reserved words". The programming language used for the human-readable source code may have specific rules as to what is and is not a reserved word or equivalent symbol. In general, the source code is the human output of a developed programming instruction and is commonly known by the source code language (e.g. Python, C, C++, FORTRAN, BASIC, etc.).

Der Begriff „maschinenlesbar“ in Bezug auf Maschinencode, Code, Software oder Äquivalente, wie er hier verwendet wird, bezieht sich auf menschenlesbaren Code, der über einen Compiler oder Interpreter verarbeitet wurde, um eine maschinenlesbare und ausführbare Form des menschenlesbaren Quellcodes aufzuweisen. Bei einer Ausführungsform handelt es sich bei dem maschinenlesbaren Code um Assembler. Bei einer anderen Ausführungsform handelt es sich bei dem maschinenlesbaren Code um Maschinencode (z.B. Binärcode). Der maschinenlesbare Code kann standardisierte Bezeichner verwenden, die symbolische Darstellungen von menschenlesbarem Quellcode übersetzen (z.B., „Prinzip“ und „Zinsen“ werden zu „$01“ und „$02“, „Verkauf“ und „Steuer“ werden zu „$03“ und „$04“ usw.), um Unterschiede zwischen ähnlichen Funktionen, die von verschiedenen Quellcode-Sprachen bereitgestellt werden, ganz oder teilweise zu beseitigen, und kann auch plattformspezifischer werden (z.B. Intel x86, Motorola 8000x, CISC, RISC usw.), um den Anweisungssatz für Prozessoren oder Prozessorfamilien zu berücksichtigen. Maschinenlesbarer Code muss unter Umständen nicht weiter verarbeitet werden, um von einer Maschine, wie z.B. einem Mikroprozessor, gelesen werden zu können, kann aber zusätzliche Verarbeitung (z.B. Verknüpfung) erfordern, um von der Maschine ausgeführt werden zu können. Ein erfahrener Programmierer kann zwar in der Lage sein, Maschinencode zu „lesen“, aber wenn eine solche Form der Software keine sprachbasierten Symbole enthält, wird ein solcher Maschinencode als nicht menschenlesbar betrachtet.As used herein, the term "machine-readable" in relation to machine code, code, software, or equivalent, refers to human-readable code that has been processed via a compiler or interpreter to have a machine-readable and executable form of human-readable source code. In one embodiment, the machine-readable code is assembler. In another embodiment, the machine-readable code is machine code (e.g., binary code). The machine-readable code may use standardized identifiers that translate symbolic representations from human-readable source code (e.g., "principle" and "interest" become "$01" and "$02", "sale" and "tax" become "$03" and "$04 ', etc.) to eliminate, in whole or in part, differences between similar functions provided by different source code languages, and may also become more platform-specific (e.g. Intel x86, Motorola 8000x, CISC, RISC, etc.) to improve the instruction set for Processors or processor families to consider. Machine-readable code may not require further processing to be read by a machine, such as a microprocessor, but may require additional processing (e.g., linking) to be executable by the machine. While a skilled programmer may be able to "read" machine code, if such form of software does not contain language-based symbols, such machine code is considered non-human readable.

Der Begriff „Datenspeicher“, wie er hier verwendet wird, ist ein Gerät, ein Medium, eine Komponente, ein Abschnitt einer Komponente, eine Sammlung von Komponenten und/oder eine andere Struktur, die in der Lage ist, Daten zu speichern, die für einen Prozessor zugänglich sind. Beispiele für hier betrachtete Datenspeicher weisen z.B. Prozessorregister, On-Chip-Speicher, On-Board-Speicher, Festplatten, Solid-State-Geräte, feste Mediengeräte, Wechselmediengeräte, logisch angeschlossene Speicher, vernetzte Speicher, verteilte lokale und/oder entfernte Speicher (z.B. Serverfarmen, „Cloud“-Speicher usw.), Medien (z.B. Solid-State, optische, magnetische usw.) und/oder Kombinationen davon auf. Auf den Datenspeicher kann mindestens ein Prozessor zugreifen, er kann jedoch logisch und/oder physisch von dem Prozessor getrennt sein, wenn kein Prozessor einen aktuellen Zugriffsbedarf hat. Auf die Datenablage kann direkt oder über eine oder mehrere dazwischenliegende Komponenten zugegriffen werden, die unter anderem einen Cache und/oder Puffer aufweisen. Bei bestimmten Ausführungsformen kann die Datenablage in einer Datenbank, einer Datei, einem Datensatz oder einer anderen logischen Speicherstruktur und/oder einem Abschnitt oder einer Sammlung davon organisiert sein.The term "data storage" as used herein is a device, medium, component, portion of a component, collection of components, and/or other structure capable of storing data required for a processor are accessible. Examples of data storage considered here include processor registers, on-chip memory, on-board storage, hard drives, solid-state devices, fixed media devices, removable media devices, logically attached storage, networked storage, distributed local and/or remote storage (eg server farms, "cloud" storage, etc.), media (eg, solid-state, optical, magnetic, etc.), and/or combinations thereof. The data store can be accessed by at least one processor, but may be logically and/or physically separate from the processor if no processor has a current need for access. The data storage can be accessed directly or via a or multiple intervening components including, but not limited to, a cache and/or buffer. In certain embodiments, data storage may be organized into a database, file, record, or other logical storage structure and/or a portion or collection thereof.

Figurenlistecharacter list

Die vorliegende Offenbarung wird in Verbindung mit den beigefügten Figuren beschrieben:

  • 1 zeigt ein erstes System gemäß den Ausführungsformen der vorliegenden Offenbarung;
  • 2 zeigt ein zweites System gemäß den Ausführungsformen der vorliegenden Offenbarung;
  • 3 zeigt ein drittes System gemäß den Ausführungsformen der vorliegenden Offenbarung;
  • 4 zeigt ein viertes System gemäß den Ausführungsformen der vorliegenden Offenbarung;
  • 5 zeigt ein Verfahren gemäß den Ausführungsformen der vorliegenden Offenbarung;
  • 6 zeigt ein fünftes System gemäß den Ausführungsformen der vorliegenden Offenbarung;
  • 7 zeigt eine Begrenzungskomponente der Äquivalenzbestimmung gemäß den Ausführungsformen der vorliegenden Offenbarung;;
  • 8 zeigt eine Ressourcenbelegungskomponente der Äquivalenzbestimmung gemäß den Ausführungsformen der vorliegenden Offenbarung;
  • 9 zeigt ein sechstes Verfahren gemäß den Ausführungsformen der vorliegenden Offenbarung; und
  • 10-71 zeigen eine Lösung gemäß den Ausführungsformen der vorliegenden Offenbarung.
The present disclosure is described in connection with the attached figures:
  • 1 Figure 1 shows a first system according to embodiments of the present disclosure;
  • 2 12 shows a second system according to embodiments of the present disclosure;
  • 3 Figure 13 shows a third system according to embodiments of the present disclosure;
  • 4 12 shows a fourth system according to embodiments of the present disclosure;
  • 5 Figure 12 shows a method according to embodiments of the present disclosure;
  • 6 12 shows a fifth system according to the embodiments of the present disclosure;
  • 7 12 shows a limiting component of the equivalence determination according to the embodiments of the present disclosure;
  • 8th FIG. 12 shows a resource allocation component of the equivalency determination according to embodiments of the present disclosure; FIG.
  • 9 12 shows a sixth method according to the embodiments of the present disclosure; and
  • 10-71 show a solution according to the embodiments of the present disclosure.

Detaillierte BeschreibungDetailed description

Die nachfolgende Beschreibung enthält lediglich Ausführungsformen und soll den Umfang, die Anwendbarkeit oder die Ausgestaltung der Ansprüche nicht einschränken. Vielmehr soll die nachfolgende Beschreibung dem Fachmann die Umsetzung der Ausführungsformen ermöglichen. Es versteht sich, dass verschiedene Änderungen in der Funktion und Anordnung der Elemente vorgenommen werden können, ohne vom Geist und Umfang der beigefügten Ansprüche abzuweichen.The following description is merely exemplary in nature and is not intended to limit the scope, applicability, or phrase of the claims. Rather, the following description should enable the person skilled in the art to implement the embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the spirit and scope of the appended claims.

Jeder Verweis in der Beschreibung, der eine Elementnummer aufweist, ohne einen Unterelement-Identifikator, wenn ein Unterelement-Identifikator in den Figuren vorhanden ist, soll, wenn er im Plural verwendet wird, auf zwei oder mehr Elemente mit einer gleichen Elementnummer verweisen. Wenn ein solcher Verweis in der Einzahl erfolgt, soll er auf eines der Elemente mit der gleichen Elementnummer verweisen, ohne sich auf ein bestimmtes Element zu beschränken. Jede gegenteilige ausdrückliche Verwendung hierin oder eine weitere Qualifizierung oder Identifizierung hat Vorrang.Any reference in the specification having an element number without a sub-element identifier when a sub-element identifier is present in the figures, when used in the plural, is intended to refer to two or more elements with a same element number. When such a reference is in the singular, it shall refer to one of the elements with the same element number, without being limited to any particular element. Any express use herein to the contrary, or any further qualification or identification, takes precedence.

Die beispielhaften Systeme und Verfahren dieser Offenbarung werden auch in Bezug auf Analysesoftware, Module und zugeordnete Analysehardware beschrieben. Um die vorliegende Offenbarung jedoch nicht unnötig zu verschleiern, wird in der folgenden Beschreibung auf bekannte Strukturen, Komponenten und Geräte verzichtet, die in Form von Blockschaltbildern dargestellt werden können und die bekannt sind oder anderweitig zusammengefasst werden.The example systems and methods of this disclosure are also described in terms of analysis software, modules, and associated analysis hardware. However, in order not to unnecessarily obscure the present disclosure, the following description avoids well-known structures, components, and devices that may be shown in block diagram form that are known or otherwise summarized.

Zu Erklärungszwecken werden zahlreiche Details dargelegt, um ein umfassendes Verständnis der vorliegenden Offenbarung zu ermöglichen. Es sollte jedoch anerkannt werden, dass die vorliegende Offenbarung über die hierin dargelegten spezifischen Details hinaus auf vielfältige Weise praktiziert werden kann.For purposes of explanation, numerous details are set forth in order to provide a thorough understanding of the present disclosure. However, it should be appreciated that the present disclosure can be practiced in a variety of ways beyond the specific details set forth herein.

1 zeigt ein System 100 gemäß den Ausführungsformen der vorliegenden Offenbarung. Das System 100 weist einen Prozessor 106 auf, der auf den Quellcode 102 zugreift, in dem sich die Kandidatenfunktionen 104A-104D befinden. Bei einer Ausführungsform weist mindestens eine der Kandidatenfunktionen 104 eine Funktion auf, die mindestens eine Eingabe empfängt, um mindestens eine Ausgabe zu erzeugen. Bei einer anderen Ausführungsform kann mindestens eine der Eingaben und Ausgaben ein Funktionsparameter, eine Eingabe von einem menschlichen Eingabegerät, eine Speicheradresse, ein Register, ein Port oder eine andere Datenquelle sein. Bei einer anderen Ausführungsform kann die Ausgabe eine Funktionsausgabe sein, die an eine Adresse geschrieben wird, die auf einem Ausgabegerät dargestellt wird, die in eine Speicheradresse oder ein Register geschrieben wird, die an einem Port ausgegeben wird, und/oder jede andere Eingabe- und/oder Ausgabeeinrichtung, die in der elektronischen Datenverarbeitung bekannt ist. 1 10 shows a system 100 according to embodiments of the present disclosure. The system 100 includes a processor 106 that accesses the source code 102 in which the candidate functions 104A-104D reside. In one embodiment, at least one of the candidate functions 104 comprises a function that receives at least one input to produce at least one output. In another embodiment, at least one of the inputs and outputs may be a function parameter, input from a human input device, memory address, register, port, or other data source. In another embodiment, the output may be a function output written to an address presented on an output device written to a memory written to a memory address or a register that is output at a port, and/or any other input and/or output device known in electronic data processing.

Bei einer Ausführungsform kann der Quellcode 102 Kandidatenfunktionen 104 aufweisen, die von einem Programmierer geschrieben wurden, beispielsweise unter Verwendung einer integrierten Entwicklungsumgebung oder eines anderen Software-Autorenwerkzeugs. Bei einer Ausführungsform ist der Quellcode 102 mit einer Vielzahl von Funktionen 104 dargestellt. Bei einer anderen Ausführungsform kann der Quellcode 102 eine einzige Funktion 104 aufweisen, wie z.B. 104A.In one embodiment, source code 102 may include candidate functions 104 written by a programmer, for example using an integrated development environment or other software authoring tool. In one embodiment, source code 102 is presented with a variety of functions 104 . In another embodiment, source code 102 may include a single function 104, such as 104A.

Der Prozessor 106 greift auf den Quellcode 102 und die Funktionen 104 zu und vergleicht einige der Kandidatenfunktionen 104 mit einigen der Vorzugsfunktionen 108A-108n, die in der Datenspeicher 114 verwaltet werden. Der Prozessor 106 kann dann diejenigen der Kandidatenfunktionen 104 identifizieren, die durch welche der Vorzugsfunktionen 108 zu ersetzen sind, und der Prozessor 106 kann dann Datensätze erstellen, wie z. B. solche, die Funktionskennungen 110 aufweisen, die den Indizien 112 zugeordnet sind, um eine Verbindung zwischen einigen der Kandidatenfunktionskennungen 116A-116D und einigen der Ersatzkennungen 118A-118-D herzustellen. So ist beispielsweise die Funktionskennung 116A („Kandidatenfunktion 1“), die eine bestimmte Funktion, die Kandidatenfunktion 1 (104A), identifiziert, den Funktionsindizien 118A zugeordnet, die das Ersetzen durch die Vorzugsfunktion 108C (bestimmt als „Vorzugsfunktion C“) anzeigen. Bei einer anderen Ausführungsform können die der Funktionskennung 116B zugeordneten Ersetzungsindizen 118B anzeigen, dass die zugeordnete Funktion Kandidatenfunktion 2 (104B) beibehalten werden soll. Beispielsweise kann die Kandidatenfunktion 2 (104B) eventuell kein Gegenstück oder kein bestimmbares Gegenstück im Datenspeicher 114 haben oder anderweitig funktional nicht äquivalent zu einer der Vorzugsfunktionen 108 sein. Bei einer anderen Ausführungsform kann zusätzlich oder alternativ zum Ausführen der Ersetzung eine Empfehlung oder Lehre implementiert werden. Beispielsweise kann einem Programmierer eine Nachricht präsentiert werden, die anzeigt, dass eine vom Programmierer geschriebene Funktion (z.B. „Kandidatenfunktion 1“) verbessert werden kann, und optional das Verbesserungskriterium präsentiert werden, um einer anderen Funktion (z.B. „Vorzugsfunktion C“) ähnlicher zu sein.Processor 106 accesses source code 102 and functions 104 and compares some of candidate functions 104 to some of preferred functions 108A-108n maintained in data store 114. The processor 106 can then identify which of the candidate functions 104 to replace with which of the preferred functions 108, and the processor 106 can then create data sets, such as: e.g., those having capability identifiers 110 associated with indicia 112 to establish an association between some of candidate capability identifiers 116A-116D and some of surrogate identifiers 118A-118-D. For example, the function identifier 116A ("candidate function 1"), which identifies a particular function, candidate function 1 (104A), is associated with the function indicia 118A indicating replacement with preferred function 108C (identified as "preferred function C"). In another embodiment, the replacement indicia 118B associated with the function identifier 116B may indicate that the associated function candidate function 2 (104B) should be retained. For example, candidate function 2 ( 104B ) may have no counterpart or determinable counterpart in data storage 114 or may otherwise not be functionally equivalent to one of preferred functions 108 . In another embodiment, a recommendation or teaching may be implemented in addition to or as an alternative to performing the replacement. For example, a programmer may be presented with a message indicating that a function written by the programmer (e.g., "Candidate Function 1") can be improved, and optionally presented with the improvement criterion to make another function (e.g., "Preferred Function C") more similar .

Die Indizien 112 sind so dargestellt, dass sie menschenlesbare englische Dateneinträge aufweisen, eine Ausführungsform, die zum Teil aus Gründen der Anschaulichkeit ausgewählt wurde. Andere Ausführungsformen, die hier in Betracht gezogen werden, weisen einen Datenwert auf, wie z.B. einen Eintrag in einem Datenelement (z.B. binär, aufgezählter Datentyp, Datenstruktur usw.) und/oder das Vorhandensein eines Datenelements (z.B, Flag/kein Flag, Datensatz/kein Datensatz, Objekt/kein Objekt usw.), das in einem flüchtigen Speicher, einem nichtflüchtigen Speicher, einem Medium, einem Datenspeicher 114, einem anderen Datenspeicher, einem Medium und/oder einer anderen datenspeichernden Komponente, einer Sammlung von Komponenten oder Abschnitten davon gehalten wird, und kann in den hier offenbaren Ausführungsformen implementiert werden, ohne vom Umfang der Offenbarung abzuweichen.The indicia 112 are illustrated as having human-readable English data entries, an embodiment chosen in part for the sake of clarity. Other embodiments contemplated herein include a data value such as an entry in a data element (e.g., binary, enumerated data type, data structure, etc.) and/or the presence of a data element (e.g., flag/no flag, record/ (not a record, object/object, etc.) held in volatile memory, non-volatile memory, media, data storage 114, other data storage, media, and/or other data-storing component, collection of components, or portions thereof and may be implemented in the embodiments disclosed herein without departing from the scope of the disclosure.

2 zeigt das System 200 gemäß den Ausführungsformen der vorliegenden Offenbarung. Bei einer Ausführungsform zeigt 2, wie das System 200 den Quellcode 102 (siehe 1) in einen Vorzugsquellcode 202 unter Verwendung von Funktionsindizien 112 verändert. Der Prozessor 106 greift auf Funktionsindizien 112 zu, die Einträge 118 aufweisen und den jeweiligen Funktionsindizien 110 zugeordnet sind, die Einträge 116 aufweisen. Der Prozessor 106 greift dann auf den Quellcode 102 zu, um einen Vorzugsquellcode 202 zu erzeugen, einen Quellcode, der funktional äquivalent zum Quellcode 102 ist, jedoch mit Substitutionen versehen ist, wobei mindestens eine Kandidatenfunktion 104 durch eine funktional äquivalente Vorzugsfunktion 108 ersetzt wird, wobei die Äquivalenz innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbegrenzung liegt. Der Prozessor 106 greift auf die Vorzugsfunktionen 108 zu, die in den Funktionsindizien 112 aus dem Datenspeicher 114 angegeben sind, und sorgt für eine automatische Ersetzung, um den bevorzugten Quellcode 202 zu erzeugen. 2 10 shows the system 200 according to embodiments of the present disclosure. In one embodiment 2 , how the system 200 the source code 102 (see 1 ) changed to preferred source code 202 using function indicia 112. Processor 106 accesses functional indicia 112 having entries 118 and associated with respective functional indicia 110 having entries 116 . The processor 106 then accesses the source code 102 to produce a preferred source code 202, a source code that is functionally equivalent to the source code 102, but provided with substitutions, wherein at least one candidate function 104 is replaced by a functionally equivalent preferred function 108, where the equivalence is within a defined hypothesis strength and/or resource limitation. The processor 106 accesses the preferred functions 108 specified in the function indicia 112 from the data store 114 and provides automatic substitution to generate the preferred source code 202 .

Bei einer Ausführungsform wird die Vorzugsfunktion 1 (104A) durch die Vorzugsfunktion C (108C) ersetzt, die Vorzugsfunktion 2 (104B) wird beibehalten, die Vorzugsfunktion 3 (104C) wird durch die Vorzugsfunktion A (108A) ersetzt, und die Vorzugsfunktion 4 (104D) wird durch die Vorzugsfunktion X (108X) ersetzt. Vorzugsquellcode 202 kann dann gespeichert und als Vorzugsquellcode bestimmt werden und für zusätzliche Entwicklung, Kompilierung oder Interpretation, Verknüpfung, Ausführung und/oder Speicherung bereitgestellt werden, um zu einem späteren Zeitpunkt zugänglich zu sein.In one embodiment, preference 1 (104A) is replaced with preference C (108C), preference 2 (104B) is retained, preference 3 (104C) is replaced with preference A (108A), and preference 4 (104D ) is replaced by the preferred function X (108X). Preferred source code 202 may then be saved and designated as preferred source code and made available for additional development, compilation or interpretation, linking, execution, and/or storage to be accessible at a later time.

3 zeigt das System 300 gemäß Ausführungsformen der vorliegenden Offenbarung. Bei einer Ausführungsform zeigt das System 300 den Quellcode 102, der in einen Vorzugsquellcode 202 verändert wird, wobei die Indizien der funktionalen Äquivalenz innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung ausschließlich vom Prozessor 106 aufrechterhalten werden, so dass der Prozessor 106 den Vorzugsquellcode 202 direkt ausgeben kann. Beispielsweise kann der Prozessor 106 auf den Quellcode 102 zugreifen und bestimmen, dass die Kandidatenfunktionen 1 (104A), 3 (104C), 4 (104D) durch Vorzugsfunktionen 108 (siehe 1) zu ersetzen sind, die von dem Datenspeicher 114 gepflegt werden. Infolgedessen kann der Prozessor 106 direkt bevorzugten Quellcode 202 ausgeben, der die Vorzugsfunktion C (108C) aufweist und die Vorzugsfunktion 2 (104B), die Vorzugsfunktion A (108A) und die Vorzugsfunktion X (108X) beibehält. 3 10 shows the system 300 according to embodiments of the present disclosure. In one embodiment, system 300 depicts source code 102 being modified into preferred source code 202, with indicia of functional equivalence within a defined hypothesis strength and/or Resource limitations are maintained exclusively by the processor 106, so that the processor 106 can issue the preferred source code 202 directly. For example, processor 106 may access source code 102 and determine that candidate functions 1 (104A), 3 (104C), 4 (104D) are replaced by preferred functions 108 (see 1 ) maintained by the data store 114 are to be replaced. As a result, the processor 106 can directly issue preferred source code 202 that has preference function C (108C) and retains preference function 2 (104B), preference function A (108A), and preference function X (108X).

4 zeigt das System 400 gemäß Ausführungsformen der vorliegenden Offenbarung. Bei einer Ausführungsform wird bestimmt, ob zwei Funktionen innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung äquivalent sind, z.B. ob die Kandidatenfunktion 1 (104A) funktional äquivalent zur Vorzugsfunktion C (108C) ist, also äquivalent innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung ist und mittels Anwendung einer Logik. Die Logik ist in verschiedenen Ausführungsformen realisiert. Bei einer Ausführungsform weist die Logik eine Logik erster Ordnung auf, in einer anderen Ausführungsform weist die logische Gleichung eine Logik zweiter Ordnung auf. Bei einer Ausführungsform wird eine einzelne Kandidatenfunktion 402 betrachtet, um die Äquivalenz mit einer einzelnen Vorzugsfunktion 404 zu bestimmen. Bei anderen Ausführungsformen kann die Kandidatenfunktion 402 eine Vielzahl von Funktionen aufweisen, wie z. B. eine Vielzahl von Kandidatenfunktionen 104 und/oder die Vorzugsfunktion 404 kann eine Vielzahl von Funktionen aufweisen, wie z. B. eine Vielzahl von Vorzugsfunktionen 108. Eine logische Gleichung kann zwar Äquivalenz mit identischen Werten zeigen, z. B. „A oder B“ ist identisch und daher äquivalent zu „A oder B“. Aber auch nicht-identische, aber funktionell äquivalente Darstellungen können Äquivalenz anzeigen, z. B. „A oder B“ ist nicht-identisch, aber funktionell äquivalent zu „B oder A“. Zusätzlich können symbolische Darstellungen verwendet werden, um zumindest einen Abschnitt einer Gleichung darzustellen, z.B. „A oder B“ ist nicht identisch, aber funktionell äquivalent zu „A oder (X und Y noch Z)“, wenn „B“ für „X und Y noch Z“ steht. 4 10 shows the system 400 according to embodiments of the present disclosure. In one embodiment, it is determined whether two functions are equivalent within a defined hypothesis strength and/or resource constraint, e.g., whether candidate function 1 (104A) is functionally equivalent to preferred function C (108C), i.e. equivalent within a defined hypothesis strength and/or resource constraint, and by applying logic. The logic is implemented in various embodiments. In one embodiment the logic comprises first order logic, in another embodiment the logical equation comprises second order logic. In one embodiment, a single candidate function 402 is considered to determine equivalency with a single preference function 404 . In other embodiments, candidate function 402 may include a variety of functions, such as: B. a plurality of candidate functions 104 and / or the preference function 404 may have a variety of functions such. a plurality of preference functions 108. While a logical equation may show equivalence with identical values, e.g. B. "A or B" is identical and therefore equivalent to "A or B". But non-identical but functionally equivalent representations can also indicate equivalence, e.g. B. "A or B" is non-identical but functionally equivalent to "B or A". Additionally, symbolic representations can be used to represent at least a portion of an equation, e.g. "A or B" is not identical but functionally equivalent to "A or (X and Y nor Z)" when "B" stands for "X and Y still Z” stands.

Bei einer anderen Ausführungsform wird die funktionale Äquivalenz durch die Nichtäquivalenz mit allen außer einem Mitglied einer aufgezählten Menge bestimmt, für die die Kandidatenfunktion 402 ein bekanntes Mitglied ist. So kann beispielsweise bekannt sein, dass die Kandidatenfunktion 402 eine grundlegende mathematische Funktion ausführt, nämlich eine der Funktionen Addition, Subtraktion, Multiplikation und Division. Die Vorzugsfunktion 404 kann als funktional äquivalent zur Kandidatenfunktion 402 bestimmt werden, wenn die Vorzugsfunktion 404 ein Mitglied der Menge der vier mathematischen Grundfunktionen ist und für drei andere Funktionen eine Nicht-Äquivalenz bestimmt wird, so dass die Vorzugsfunktion 404 die einzige Funktion ist, für die eine Äquivalenz bestimmt wird, und somit funktional äquivalent ist.In another embodiment, functional equivalence is determined by non-equivalence with all but one member of an enumerated set for which candidate function 402 is a known member. For example, candidate function 402 may be known to perform a basic mathematical function, namely one of addition, subtraction, multiplication, and division. Preference function 404 can be determined to be functionally equivalent to candidate function 402 if preference function 404 is a member of the set of four basic mathematical functions and non-equivalence is determined for three other functions such that preference function 404 is the only function for which an equivalence is determined, and is therefore functionally equivalent.

Die Kandidatenfunktion 402 hat eine Eingabe-/Ausgabesignatur, die über die Parse-Funktion I/O 406 geparst wird. In ähnlicher Weise verfügt die Vorzugsfunktion 404 über eine Ein-/Ausgangssignatur, die über die Parse-Funktion I/O 408 geparst wird. Liste 1 enthält ein Beispiel für die Kandidatenfunktion 402:

int sum_mod (int x, int y) {
      if (y == 0) {

           }throw domain_error ("Modulus cannot be 0.");
      }

      if (y<0) {
            int pos_y = -y;
            }return sum_mod(x, pos_y);
      }

      if (x<0) {
            while (x<0) {
                 x+=y;
            }
            return x;
      }

      while (x>=0) {
           x -= y;
      }
      }return (x+y)
      }
The candidate function 402 has an input/output signature that is parsed via the parse function I/O 406 . Similarly, preference function 404 has an input/output signature that is parsed via parse function I/O 408 . Listing 1 contains an example of candidate function 402:
 int sum_mod (int x, int y) {
      if (y == 0) {

           }throw domain_error ("Modulus cannot be 0.");
      }

      if (y<0) {
            int pos_y = -y;
            }return sum_mod(x, pos_y);
      }

      if (x<0) {
            while (x<0) {
                 x+=y;
            }
            return x;
      }

      while (x>=0) {
           x -= y;
      }
}return (x+y)
      }

LISTE 1LIST 1

Liste 2 zeigt ein Beispiel für die Vorzugsfunktion 404:

             int div_mod (int x, int y) {
                  if (y==0) {
                       throw domain error ("Modulus cannot be 0.");
                  }
                  int div = x/y;
                  int rem = x - (div*y);
                  return rem;
             }
Listing 2 shows an example of preference function 404:
 int div_mod (int x, int y) {
                  if (y==0) {
                       throw domain error ("Modulus cannot be 0.");
                  }
                  int div = x/y;
                  int rem = x - (div*y);
                  return rem;
             }

LISTE 2LIST 2

Bei einer Ausführungsform wurde die Vorzugsfunktion 404 geprüft und als bevorzugt bestimmt, z. B. aufgrund der Prägnanz des darin enthaltenen menschenlesbaren Codes. Prägnanz kann durch eine abstrakte syntaktische Struktur, wie z.B. einen abstrakten Syntaxbaum (Abstract Syntax Tree, AST), erreicht werden. Beispielsweise können wenige Knoten, weniger Blattknoten, Knotentiefe und Knotenbreite eine Prägnanzmetrik darstellen. Der funktionale Äquivalenzdienst 410 bestimmt dann, ob die Äquivalenz wahr ist. Bei einer Ausführungsform leitet der funktionale Äquivalenzdienst die Logik erster Ordnung 412 für die geparste Kandidatenfunktion 402 und die Logik erster Ordnung 414 für die geparste Vorzugsfunktion 404 ab, um eine Logik erster Ordnung abzuleiten, die in einer Ausführungsform die SMT-Abfrage 416 aufweist.In one embodiment, the preference function 404 has been examined and determined to be preferred, e.g. B. due to the conciseness of the human-readable code it contains. Conciseness can be achieved through an abstract syntactic structure, such as an Abstract Syntax Tree (AST). For example, fewer nodes, fewer leaf nodes, node depth, and node width can represent a succinct metric. The functional equivalence service 410 then determines whether the equivalence is true. In one embodiment, the functional equivalence service derives first order logic 412 for parsed candidate function 402 and first order logic 414 for parsed preference function 404 to derive first order logic comprising SMT query 416 in one embodiment.

Liste 3 zeigt ein Beispiel für eine Funktion, die in Logik, Eingänge und Ausgänge zerlegt ist.

                             f1-sum_mod:
                             [...f1 Logic ...]
                             Inputs:
                             [f1(x), f1(y)]
                             Outputs:
                             [f1(retVal)]
Listing 3 shows an example of a function broken down into logic, inputs and outputs.
 f1-sum_mod:
                             [...f1 logic...]
                             inputs:
                             [f1(x), f1(y)]
                             outputs:
                             [f1(retVal)]

LISTE 3LIST 3

Liste 4 zeigt ein weiteres Beispiel einer Funktion, die in Logik, Eingaben und Ausgaben zerlegt wurde.

                             f2-div_mod:
                             [...f2 Logic ...]
                             Inputs:
                             [f1(x), f2(y)]
                             Outputs:
                             [f2(retVal)]
Listing 4 shows another example of a function broken down into logic, inputs, and outputs.
 f2-div_mod:
                             [...f2 logic...]
                             inputs:
                             [f1(x), f2(y)]
                             outputs:
                             [f2(retVal)]

LISTE 4LIST 4

Liste 5 zeigt ein Beispiel einer SMT-Abfrage. ( f 1  Logic ) ( f 2  Logic ) ( f 1 ( x ) = f 2 ( x ) ) ( f 1 ( y ) = f 2 ( y ) ) ( ¬ ( f 1 ( retVal ) = f 2 ( retVal ) )

Figure DE202017007536U1_0001
List 5 shows an example of an SMT query. ( f 1 logic ) ( f 2 logic ) ( f 1 ( x ) = f 2 ( x ) ) ( f 1 ( y ) = f 2 ( y ) ) ( ¬ ( f 1 ( retVal ) = f 2 ( retVal ) )
Figure DE202017007536U1_0001

LISTE 5LIST 5

Bei einer weiteren Ausführungsform wird die SMT-Abfrage 416 an den SMT-Solver 420 übermittelt, um eine Ausgabe zu erzeugen, die ein erfülltes („SAT“) Nicht-Äquivalenz-Ergebnis oder ein NEIN-Ergebnis 422 oder ein nicht-erfüllbares („UNSAT“) Äquivalenz-Ergebnis oder ein JA-Ergebnis 424 anzeigt.In another embodiment, the SMT query 416 is submitted to the SMT solver 420 to produce an output that indicates a satisfied ("SAT") non-equivalence result or a NO result 422 or a non-satisfiable (" UNSAT") equivalence result or a 424 YES result.

5 zeigt den Prozess 500 gemäß Ausführungsformen der vorliegenden Offenbarung. Bei einer Ausführungsform wird der Prozess 500 ausgeführt, z.B. durch den Prozessor 106. Der Prozess 500 kann mit einem oder beiden der Schritte 502, 504 beginnen, wobei Schritt 502 auf eine Kandidatenfunktion zugreift, beispielsweise aus einem Kandidaten-Quellcode 102, der eine Vielzahl von Funktionen 104 aufweisen kann. Schritt 504 greift auf eine Vorzugsfunktion zu, die beispielsweise eine oder mehrere Vorzugsfunktionen 108 innerhalb eines Vorzugsquellcodes 202 aufweist. 5 FIG. 5 shows the process 500 according to embodiments of the present disclosure. In one embodiment, process 500 is performed, eg, by processor 106. Process 500 may begin with either or both of steps 502, 504, where step 502 accesses a candidate function, such as from candidate source code 102 that includes a plurality of Functions 104 may have. Step 504 accesses a preference function comprising, for example, one or more preference functions 108 within a preference source code 202 .

Als nächstes bestimmt Schritt 506, ob die Funktionen funktional äquivalent sind (z.B. dieselben Ergebnisse erzeugen, wenn dieselben Eingaben gegeben werden) innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung, und wenn ja, fährt der Prozess 500 mit dem optionalen Schritt 508 fort, um Indizien für die Ersetzung bereitzustellen oder, wenn Schritt 508 nicht implementiert ist, um die Indizien extern für den Prozess 500 bereitzustellen. Andernfalls wird die Verarbeitung mit Schritt 510 fortgesetzt. In Schritt 510 wird die Kandidatenfunktion 502 durch die Vorzugsfunktion 504 ersetzt. Wenn Schritt 506 negativ bestimmt wird, ist keine Ersetzung erforderlich, und der Prozess 500 kann beendet werden. Optional kann im Anschluss an Schritt 510 der Quellcode, der die nun ersetzte Vorzugsfunktion 504 aufweist, auf einem Medium gespeichert oder auf andere Weise für eine zusätzliche oder zukünftige Verarbeitung und/oder Referenz aufbewahrt werden.Next, step 506 determines whether the functions are functionally equivalent (e.g., produce the same results given the same inputs) within a defined hypothesis strength and/or resource constraint, and if so, the process 500 continues to optional step 508 to provide indicia for replacement or, if step 508 is not implemented, to provide the indicia external to the process 500. Otherwise, processing continues with step 510. In step 510, the candidate function 502 is replaced with the preferred function 504. If step 506 is determined negatively, no replacement is required and process 500 may end. Optionally, following step 510, the source code comprising the now replaced preference function 504 may be stored on media or otherwise preserved for additional or future processing and/or reference.

Wie hierin vorgesehen, kann ein Vorzugsquellcode, der beispielsweise eine oder mehrere Vorzugsfunktionen 108 aufweist, durch automatisches Ersetzen eines funktionell äquivalenten, aber nicht bevorzugten Kandidatenquellcodes, der beispielsweise eine oder mehrere Kandidatenfunktionen 104 aufweist, bereitgestellt werden. Der Vorzugsquellcode kann auf der Grundlage einer vorherigen Prüfung als bevorzugt bestimmt werden, wobei der Vorzugsquellcode zur Verwendung zugelassen wird. Der Vorzugsquellcode kann aufgrund der Speicheranforderungen der menschenlesbaren Form und/oder der maschinenlesbaren Form, der Leistungsmetrik, der Sicherheit, des Vorhandenseins interner Dokumentation, des Vorhandenseins eines bestimmten Umfangs interner Dokumentation, der Verwendung ausführlicher Variablennamen, der Prägnanz der Anweisungen, der Fehlerbehandlung und/oder anderer Attribute als Vorzugsquellcode bestimmt werden. Bei einer anderen Ausführungsform wird der Quellcode aufgrund einer vorherigen Prüfung bevorzugt. Bei einer weiteren Ausführungsform wurde der in Frage kommende Quellcode keiner vorherigen Prüfung unterzogen. Bei einer weiteren Ausführungsform wurde der Vorzugsquellcode von einer höheren Instanz überprüft als der Kandidatenquellcode, der von einer niedrigeren Instanz, wie dem Entwickler des Kandidatenquellcodes, überprüft worden sein kann. Bei einer weiteren Ausführungsform kann die Bestimmung eines Vorzugsquellcodes gemäß einem Kriterium bestimmt werden, z.B. einem oder mehreren von weniger Codezeilen, weniger prozeduralen Aufrufen, mehr Kommentaren, längeren Variablennamen, usw.As provided herein, preferred source code, for example having one or more preferred functions 108, may be provided by automatically replacing a functionally equivalent but non-preferred candidate source code, for example having one or more candidate functions 104. The preferred source code may be determined to be preferred based on a prior review, with the preferred source code being approved for use. Preferred Source Code may vary due to storage requirements of human-readable form and/or machine-readable form, performance metrics, security, existence of internal documentation, existence of a certain amount of internal documentation, use of verbose variable names, conciseness of instructions, error handling, and/or other attributes are designated as preferred source code. In another embodiment, source code is preferred based on prior verification. In a further embodiment, the source code in question has not undergone any prior testing. In another embodiment, the preferred source code has been reviewed by a higher authority than the candidate source code, which may have been reviewed by a lower authority, such as the developer of the candidate source code. In another embodiment, the determination of preferred source code may be determined according to a criterion, e.g. one or more of fewer lines of code, fewer procedural calls, more comments, longer variable names, etc.

6 zeigt das System 600 gemäß Ausführungsformen der vorliegenden Offenbarung. Das System 600 zeigt den Prozessor 106, der auf den Kandidaten-Quellcode 102 zugreift, der die Kandidatenfunktion 602 aufweist. Bei einer Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktional äquivalent zu mindestens einer Vorzugsfunktion 606A-606n ist, die im Datenspeicher 114 gehalten wird. 6 6 shows the system 600 according to embodiments of the present disclosure. System 600 shows processor 106 accessing candidate source code 102 having candidate function 602 . In one embodiment, processor 106 determines that candidate function 602 is functionally equivalent to at least one preferred function 606A-606n maintained in data store 114 within a defined hypothesis strength and/or resource constraint.

Bei einer Ausführungsform transformiert der Prozessor 106 den Kandidatenquellcode in einen der Vorzugsquellcodes 604A-606E. Bei einer anderen Ausführungsform verändert der Prozessor 106 den Vorzugsquellcode in zwei oder mehr der Vorzugsquellcodes 604A-604E. Der Prozessor 106 verändert den Quellcode 102 in einen oder mehrere der Vorzugsquellcodes 604A-604E, um einen Quellcode, z. B. eine Quellcodedatei, auszugeben, der mindestens einen Vorzugsaspekt erfüllt. Der Vorzugsquellcode kann zu einem optimaleren Betrieb einer Maschine oder Komponente einer Maschine führen, z.B. durch Ausführen von weniger Operationen, schnelleren Operationen, geringeren Speicherbedarf, Ausführen einer Operation mit geringerem Ressourcenbedarf, Nutzung von weniger teuren Ressourcen (z.B. Energie, Ausgaben usw.), Ausführen von sichereren Operationen usw. Der bevorzugte Aspekt ist vielfältig ausgeprägt und weist unter anderem Sicherheit, CPU-Effizienz, Bandbreiteneffizienz, Speicherbedarf, Prägnanz des Codes, Datenbankzugriffe oder eine Kombination aus zwei oder mehr auf.In one embodiment, processor 106 transforms the candidate source code into one of preferred source codes 604A-606E. In another embodiment, the processor 106 changes the preferred source code to two or more of the preferred source codes 604A-604E. The processor 106 modifies the source code 102 to one or more of the preferred source codes 604A-604E to provide a source code, e.g. B. a source code file to issue, which meets at least one preferred aspect. The preferred source code can lead to a more optimal operation of a machine or component of a machine, e.g. by performing fewer operations, faster operations, smaller memory requirements, performing an operation with fewer resource requirements, using less expensive resources (e.g. energy, expenses, etc.), executing more secure operations, etc. The preferred aspect takes a variety of forms and includes security, CPU efficiency, bandwidth efficiency, memory requirements, conciseness of code, database access, or a combination of two or more.

Bei einer Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktional äquivalent zu der Vorzugsfunktion 606A ist, die hinsichtlich der CPU-Nutzung (z.B. Taktzyklen, Operationen usw.) als bevorzugt bestimmt wurde. Dementsprechend verändert der Prozessor 106 den Quellcode 102 in den Vorzugsquellcode 604A, der die Vorzugsfunktion 606A anstelle der Kandidatenfunktion 602 aufweist. Infolgedessen wird der Quellcode 102 in den Quellcode 604A transformiert.In one embodiment, processor 106 determines that candidate function 602 is functionally equivalent to preferred function 606A, determined to be preferred in terms of CPU usage (e.g., clock cycles, operations, etc.), within a defined hypothesis strength and/or resource constraint. Accordingly, processor 106 changes source code 102 to preferred source code 604A, which has preferred function 606A in place of candidate function 602. As a result, source code 102 is transformed into source code 604A.

Bei einer anderen Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktional äquivalent zu der Vorzugsfunktion 606B ist, die in Bezug auf die Sicherheit als bevorzugt bestimmt worden ist. Beispielsweise kann die Funktion 606B ein zuvor genehmigtes Verschlüsselungsprotokoll für die Kommunikation, einen genehmigten Kommunikationsport, eine genehmigte Fehlerbehandlungsroutine usw. verwenden.In another embodiment, the processor 106 determines that the candidate function 602 is functionally equivalent, within a defined hypothesis strength and/or resource constraint, to the preferred function 606B that has been determined to be preferred in terms of security. For example, function 606B may use a previously approved communications encryption protocol, communications port, error handler, and so forth.

Bei einer anderen Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktionell äquivalent zu der Vorzugsfunktion 606C ist, die hinsichtlich der Prägnanz des Codes als bevorzugt bestimmt wurde. Zum Beispiel kann die Funktion 606C einen menschenlesbaren Quellcode verwenden, der als prägnanter bestimmt wurde, um die Lesbarkeit und optional die Maschineneffizienz zu fördern. Zum Beispiel kann es bevorzugt sein, einen Quellcode zu verwenden, der weniger Operatoren verwendet, wie „X++“ gegenüber „X = X+1.“In another embodiment, the processor 106 determines that the candidate function 602 is functionally equivalent, within a defined hypothesis strength and/or resource constraint, to the preferred function 606C determined to be preferred in terms of code conciseness. For example, function 606C may use human-readable source code that has been determined to be more concise to promote readability and optionally machine efficiency. For example, it may be preferable to use source code that uses fewer operators, such as "X++" versus "X = X+1."

Bei einer anderen Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktional äquivalent zu der Vorzugsfunktion 606D ist, die hinsichtlich der Speicherung als bevorzugt bestimmt worden ist. Selbst mit moderner Datenspeichertechnologie kann die Datenspeicherung immer noch ein Problem darstellen, insbesondere bei eingebetteten Systemen und mobiler Technologie, wo der Platzbedarf von Chip und Platine kritischer ist. Zum Beispiel kann die Funktion 606D einen Quellcode verwenden, der weniger Speicherplatz benötigt, wie z.B. „i=r*b“ kann gegenüber dem ausführlichen „interest= rate * balance“ bevorzugt werden.In another embodiment, processor 106 determines that candidate function 602 is functionally equivalent, within a defined hypothesis strength and/or resource constraint, to preferred function 606D that has been determined to be preferred for storage. Even with modern data storage technology, data storage can still be an issue, particularly in embedded systems and mobile technology where chip and board real estate is more critical. For example, function 606D may use source code that requires less memory, such as "i=r*b" may be preferred over verbose "interest= rate * balance".

Bei einer anderen Ausführungsform bestimmt der Prozessor 106, dass die Kandidatenfunktion 602 innerhalb einer definierten Hypothesenstärke und/oder Ressourcenbeschränkung funktional äquivalent zu der Vorzugsfunktion 606E ist, die sowohl in Bezug auf die Sicherheit als auch auf die Bandbreite als bevorzugt bestimmt worden ist. Zum Beispiel kann die Vorzugsfunktion 606E weniger netzwerkabhängige Operationen und einen bevorzugten Port und/oder ein bevorzugtes Sicherheitsprotokoll verwenden.In another embodiment, processor 106 determines that candidate function 602 is functionally equivalent, within a defined hypothesis strength and/or resource constraint, to preferred function 606E, which has been determined to be preferred in terms of both security and bandwidth. For example, preference function 606E may use fewer network dependent operations and a preferred port and/or security protocol.

7 zeigt die Komponente 700 zur Bestimmung der Äquivalenz gemäß Ausführungsformen der vorliegenden Offenbarung. Bei einer Ausführungsform wird die Äquivalenz mit absoluter Sicherheit bestimmt. Beispielsweise werden alle möglichen Eingaben sowohl in den Kandidatenquellcode (z.B. Kandidatenquellcode 102, Kandidatenfunktion 1 (104A), Kandidatenfunktion 2 (104B), usw.) als auch in einen Vorzugsquellcode (z.B. Vorzugsquellcode 112, Vorzugsfunktion A (108A), Vorzugsfunktion B (108B), usw.) eingegeben, und dann kann die Äquivalenz mit absoluter Sicherheit bestimmt werden, wenn für eine der Eingaben die resultierende Ausgabe sowohl für den Kandidatenquellcode als auch für den Vorzugsquellcode identisch ist. Bei anderen Ausführungsformen ist es jedoch nicht möglich, bis zur Erschöpfung zu testen. Ressourcen, wie z. B. Verarbeitungs-, Zeit- und Bandbreitenressourcen, sind nicht unbegrenzt. Oft schließen sich solche Ressourcen gegenseitig aus. Dementsprechend kann Äquivalenz bestimmt bzw. festgestellt werden, wenn der Kandidaten-Quellcode und der Vorzugsquellcode als äquivalent bestimmt bzw. festgestellt werden, wenn sie innerhalb der Beschränkungen einer Ressourcenbegrenzung verglichen werden. 7 7 shows the component 700 for determining equivalency, in accordance with embodiments of the present disclosure. In one embodiment, equivalence is determined with absolute certainty. For example, all possible inputs to both candidate source code (e.g., candidate source code 102, candidate function 1 (104A), candidate function 2 (104B), etc.) and a preferred source code (e.g., preferred source code 112, preferred function A (108A), preferred function B (108B) , etc.) are input, and then equivalence can be determined with absolute certainty if, for one of the inputs, the resulting output is identical for both the candidate source code and the preferred source code. However, in other embodiments it is not possible to test to exhaustion. resources, such as B. processing, time and bandwidth resources are not unlimited. Such resources are often mutually exclusive. Accordingly, equivalence may be determined if the candidate source code and the preferred source code are determined to be equivalent when compared within the constraints of a resource constraint.

Oft machen die Ressourcenbeschränkungen und/oder eine akzeptable Hypothesenstärkeanforderung die Prüfung der Äquivalenz bis zur Erschöpfung unerwünscht oder unnötig. Zum Beispiel kann ein komplexer Kandidaten-Quellcode gegen einen Vorzugsquellcode evaluiert werden. Es kann eine Annahme, z. B. durch einen Menschen, getroffen werden, dass der Kandidaten-Quellcode wahrscheinlich äquivalent zu einem bestimmten Vorzugsquellcode oder einem bestimmten Satz von Vorzugsquellcodes ist. Häufig können solche Annahmen jedoch nicht getroffen werden oder sie sind ungenau. Beispielsweise kann ein vollautomatisches System möglicherweise keine vorläufigen Übereinstimmungen mit einem bestimmten Vorzugsquellcode oder einer bestimmten Menge von Codes feststellen und muss daher die Äquivalenz mit einem gesamten Pool von Vorzugsquellcodes bestimmen, bis eine ausreichende Äquivalenz festgestellt wird. Bei anderen Ausführungsformen kann ein Vorzugsquellcode Namen von Variablen, Funktionen, Modulen usw. aufweisen, die einen Hinweis darauf geben, welcher Vorzugsquellcode oder welche Vorzugsquellcodes für die Bestimmung der Äquivalenz am besten geeignet sind. Wenn zum Beispiel die Variablen „Zinsen“ und „Kontonummer“ heißen, dann ist „Banking“. „Kontoführung“ oder ein ähnlicher Quellcode kann für die Äquivalenz in Betracht gezogen werden, oder zumindest als erstes. Wird keine Übereinstimmung erkannt, kann ein anderer Bereich des Vorzugsquellcodes (z.B. „Versicherung“, „Makler“ usw.) ausgewählt werden. Often the resource limitations and/or an acceptable hypothesis strength requirement make testing equivalence to exhaustion undesirable or unnecessary. For example, a complex candidate source code can be evaluated against a preferred source code. There may be an assumption, e.g. by a human, that the candidate source code is likely to be equivalent to a particular preferred source code or set of preferred source codes. Often, however, such assumptions cannot be made or they are inaccurate. For example, a fully automated system may not be able to find preliminary matches to a particular preferred source code or set of codes, and must therefore determine equivalency against an entire pool of preferred source codes until sufficient equivalence is found. In other embodiments, a preferred source code may include names of variables, functions, modules, etc. that provide an indication of which preferred source code or codes are best suited for determining equivalence. For example, if the variables are "interest" and "account number" then it is "banking". "Accounting" or similar source code may be considered for equivalence, or at least first. If no match is found, another area of the preferred source code (e.g. "insurance", "broker", etc.) can be selected.

Folglich kann die Nicht-Bestimmung der Äquivalenz als Nicht-Bestimmung der Äquivalenz mit einem Kandidaten-Quellcode und einem bestimmten Vorzugsquellcode betrachtet werden. Ein anderer Quellcode kann äquivalent sein.Consequently, failure to determine equivalence may be viewed as failure to determine equivalence with a candidate source code and a particular preferred source code. Other source code may be equivalent.

Bei einer Ausführungsform wird die Äquivalenz im Hinblick auf eine Systembegrenzung unter Zeitdruck bestimmt. Bei unbegrenzter Zeit kann selbst der kleinste Prozessor die intensivste Verarbeitungsaktivität ausführen. Ebenso ist bei einer unbegrenzten Menge an Hardware nur eine triviale Menge an Zeit erforderlich, um die gleiche intensive Verarbeitungstätigkeit auszuführen. Solche unbegrenzten Beschränkungen liegen oft außerhalb der Realität, da Verarbeitungsaufgaben auf einer begrenzten Verarbeitungsplattform und/oder innerhalb eines begrenzten Zeitrahmens ausgeführt werden müssen. Wird die Äquivalenz nicht bewiesen, kann die Aufgabe abgebrochen werden. Der Nachweis der Äquivalenz kann jedoch auch darin bestehen, dass während einer ressourcenbeschränkten Äquivalenzprüfung keine Nicht-Äquivalenz festgestellt wird.In one embodiment, the equivalency is determined against a system limitation under time pressure. With unlimited time, even the smallest processor can perform the most intense processing activity. Likewise, with an unlimited amount of hardware, only a trivial amount of time is required to perform the same intensive processing activity. Such unbounded constraints are often outside of reality, as processing tasks must be performed on a limited processing platform and/or within a limited time frame. If the equivalence is not proven, the task can be aborted. However, proof of equivalence can also consist in the fact that no non-equivalence is found during a resource-constrained equivalence test.

Bei einer Ausführungsform ist die Verarbeitungsressource festgelegt und die Zeit, die der Verarbeitungsressource zum Ausführen der Äquivalenzbeurteilung zur Verfügung steht, ist variabel. Beispielsweise kann ein Desktop-Computer die Bewertung ausführen, und eine Antwort wird innerhalb einer Stunde erwartet. Eine fi festgelegte xierte Ressource kann vollständig festgelegt (z.B. ausschließlich für die Bewertungsaufgabe) oder teilweise festgelegt sein (z.B. ein Multitasking-Prozessor, der die Bewertungsaufgabe und andere Aufgaben ausführt). Eine teilweise festgelegte Ressource kann je nach den Anforderungen, die andere Aufgaben an den Prozessor stellen, mehr oder weniger Beurteilungsverarbeitungsvorgänge ausführen. Dementsprechend kann eine Bewertung für eine festgelegte Zeitspanne eine variable Anzahl von Prozessoroperationen zur Folge haben, oder eine festgelegte Anzahl von Prozessoroperationen kann zu einer variablen Dauer führen. Vorzugsweise wird ein menschlicher oder überwachender Computerprozess mit den potenziellen Auswirkungen versehen, die bestehen können, wenn fremde Verarbeitungsanforderungen an den Prozessor gestellt werden, der die Bewertung zur Verwaltung ausführt (z.B. Einstellung einer Prioritätsstufe, die ausreicht, um den Prozessor zuzuweisen, damit er die Bewertung innerhalb der gewünschten Anzahl von Operationen/Zeit ausführt, Deaktivierung fremder Aufgaben, Änderung einer angeforderten Ressourcenbegrenzung im Hinblick auf zusätzliche Ressourcenbegrenzungen, die durch fremde Aufgaben auferlegt werden, usw.).In one embodiment, the processing resource is fixed and the time available for the processing resource to perform the equivalence assessment is variable. For example, a desktop computer can run the assessment and a response is expected within an hour. A fixed resource may be fully committed (e.g., dedicated solely to the assessment task) or partially committed (e.g., a multitasking processor that performs the assessment task and other tasks). A partially committed resource may perform more or less judgment processing depending on the demands that other tasks place on the processor. Accordingly, an evaluation for a fixed period of time may result in a variable number of processor operations, or a fixed number of processor operations may result in a variable duration. Preferably, a human or supervisory computer process is provided with the potential impact that may exist if extraneous processing requests are made to the processor executing the assessment for management (e.g., setting a priority level sufficient to assign the processor to do the assessment within the desired number of operations/time, disabling foreign tasks, changing a requested resource limit in view of additional resource limits imposed by foreign tasks, etc.).

Bei einer Ausführungsform zeigt die Komponente 700 zur Begrenzung der Äquivalenz eine relative Priorität für eine Äquivalenz-Operation an. Zum Beispiel kann der Joystick 702 eine relative Position entlang der Zeitachse 704, der Hypothesenstärkeachse 706 und der Ressourcennutzungsachse 708 auswählen. Der Joystick 702 befindet sich, wie dargestellt, nahe der Mitte der Komponente 700 zur Begrenzung der Äquivalenz, was auf eine nahezu ausgewogene Strategie hinweist. Insbesondere wird die Reduzierung der Ressourcennutzung betont, aber nicht maximiert, wie durch das Liniensegment 712 angedeutet wird, das eine Länge ungleich Null hat, aber kürzer als die Liniensegmente 710 und 714 ist. Die Hypothesenstärke ist die zweite Achse, die betont wird, wie durch das Liniensegment 710 dargestellt wird, das länger als das Liniensegment 712, aber kürzer als das Liniensegment 714 ist. Die Zeit ist die dritte Achse und relativ weniger betont, wie durch das Liniensegment 714 dargestellt, das länger ist als die Liniensegmente 710 und 712.In one embodiment, the equivalence limit component 700 indicates a relative priority for an equivalence operation. For example, the joystick 702 can select a relative position along the time axis 704, the hypothesis strength axis 706, and the resource use axis 708. As shown, the joystick 702 is located near the center of the equivalence limit component 700, indicating a nearly balanced strategy. In particular, the reduction in resource usage is emphasized but not maximized, as indicated by line segment 712, which has non-zero length but is shorter than line segments 710 and 714. Hypothesis strength is the second axis that is emphasized, as represented by line segment 710, which is longer than line segment 712 but shorter than line segment 714. Time is the third axis and is relatively less emphasized, as represented by line segment 714, which is longer than line segments 710 and 712.

Bei einer anderen Ausführungsform kann ein System, z. B. unter Verwendung des Prozessors 106, Eingaben von der Komponente 700 zur Begrenzung der Äquivalenz empfangen und eine Äquivalenzbestimmung auf der Grundlage einer geringeren Nutzung von Ressourcen, einer weiter reduzierten Hypothesenstärke und mit geringerer Beachtung des Zeitbedarfs ausführen. Das System kann solche Eingaben in maschinenausführbare Anweisungen wandeln, z.B. einen einzelnen Prozessor belegen, um einen Äquivalenzprozess mit hoher Priorität auszuführen (z.B. eine reduzierte Nutzung von Ressourcen), Äquivalenz und/oder das Nichtvorhandensein von Nicht-Äquivalenz mit einer 85%igen Hypothesenstärke auszuführen (z.B. eine reduziertere Hypothesenstärke) und die Anweisungen zwanzig Stunden lang auszuführen (z.B. mit weniger Rücksicht auf die benötigte Zeit).In another embodiment, a system, e.g. e.g., using processor 106, receive input from equivalence constraint component 700 and perform an equivalency determination based on lower resource usage, further reduced hypothesis strength, and with less consideration of time requirements. The system can convert such inputs into machine-executable instructions, e.g., allocate a single processor to execute a high-priority equivalence process (e.g., reduced use of resources), execute equivalence and/or the absence of non-equivalence with an 85% hypothesis strength ( e.g., a reduced hypothesis strength) and to carry out the instructions for twenty hours (e.g., with less regard for the time taken).

Der Fachmann wird erkennen, dass die Hypothesenstärke als erfolgreicher Abschluss einer Anzahl von Äquivalenzbewertungen bestimmt werden kann, die eine bestimmte Standardabweichung oder eine andere statistische Anforderung erfüllen. Das System kann dem Benutzer eine Ausgabe liefern, die auf einer bestimmten Einstellung in der Komponente 700 zur Begrenzung der Äquivalenz beruht. Zum Beispiel: „Um die Äquivalenz mit mindestens der von Ihnen gewählten Hypothesenstärke zu bestimmen, wird der Prozessor zwanzig Stunden lang fast ausschließlich auf dieser Maschine laufen und zwölf Millionen Operationen ausführen, um zu bestimmen, ob der ‚Kandidaten-Quellcode‘ mit dem ‚Vorzugsquellcode‘ äquivalent ist, und im Erfolgsfall wird die Äquivalenz mit einer Hypothesenstärke von 85,04 % bereitgestellt. Drücken Sie ‚Start‘, um zu beginnen.“Those skilled in the art will recognize that hypothesis strength can be determined as the successful completion of a number of equivalence assessments that meet a certain standard deviation or other statistical requirement. The system may provide the user with an output based on a particular setting in the equivalence limit component 700 . For example: "To determine equivalence with at least your chosen hypothesis strength, the processor will run almost exclusively on this machine for twenty hours, performing twelve million operations to determine whether the 'candidate source code' matches the 'preferred source code ' is equivalent, and if successful, equivalence is provided with a hypothesis strength of 85.04%. Press 'Start' to begin.”

Bei einer anderen Ausführungsform kann ein System ausgeführt werden, bis es unterbrochen wird, und die Komponente zur Begrenzung der Äquivalenz 700 kann ein Display sein, das einen aktuellen Zustand anzeigt. Wenn beispielsweise eine Äquivalenz-Operation eingeleitet wird, kann sich der Joystick 702, der physisch oder ein Display-Element sein kann, in der Nähe des unteren Randes von 7 befinden, um anzuzeigen, dass die Zeit momentan den niedrigsten Wert erreicht hat. Da die Anzahl der Operationen trivial sein kann, kann der Joystick 702 anzeigen, dass die Hypothesenstärke am niedrigsten ist. Wenn mehr Operationen ausgeführt werden, kann sich der Joystick 702 entsprechend bewegen, um eine aktuelle Ausführungszeit und eine aktuelle Hypothesenstärke anzuzeigen.In another embodiment, a system may run until interrupted, and equivalency limiting component 700 may be a display showing a current state indicates. For example, when an equivalence operation is initiated, joystick 702, which may be physical or a display element, may be near the bottom of 7 to indicate that the time is currently at its lowest value. Because the number of operations may be trivial, the joystick 702 may indicate that the hypothesis strength is lowest. As more operations are executed, the joystick 702 can move accordingly to display a current execution time and a current hypothesis strength.

Bei einer anderen Ausführungsform kann die Komponente 700 zur Begrenzung der Äquivalenz bestimmte Achsen, wie z. B. die Ressource 712, weglassen, wenn die Verarbeitungsressourcen zumindest im Wesentlichen festgelegt oder zumindest nicht signifikant variabel sind. Beispielsweise kann ein Benutzer, der ein Rack mit Blade-Servern zur Verfügung hat, die Verarbeitungskapazität des Racks nicht erhöhen, ohne zusätzliche Blades hinzuzufügen. Während die Komponente 700 zur Ressourcenbegrenzung eine Option zum Hinzufügen von Hardware anzeigen kann, ist die Komponente 700 zur Ressourcenbegrenzung in anderen Ausführungsformen auf momentan verfügbare Optionen beschränkt, z. B. auf solche, die innerhalb der wenigen Sekunden verfügbar sind, die ein Benutzer zur Eingabe der gewünschten Parameter und zur Einleitung der Äquivalenz-Operationen benötigen kann.In another embodiment, the equivalence constraint component 700 may include specific axes, such as e.g. e.g. resource 712, if the processing resources are at least substantially fixed or at least not significantly variable. For example, a user who has a rack of blade servers available cannot increase the processing capacity of the rack without adding additional blades. While resource-limiting component 700 may display an option to add hardware, in other embodiments resource-limiting component 700 is limited to currently available options, e.g. B. to those available within the few seconds it may take a user to enter the desired parameters and initiate the equivalence operations.

Bei einer anderen Ausführungsform kann eine Systembegrenzung bestimmt und zur Quantifizierung einer Operation verwendet werden. Wenn beispielsweise ein bestimmter Kandidatencode mit einem einzigen Satz von Eingabevariablen in 1 Millisekunde durchlaufen werden kann und ein vollständiger Satz von Eingabevariablen 10 Millionen Werte aufweisen würde, dann würde die Äquivalenz mit absoluter Sicherheit in etwa 2,8 Stunden bestimmt werden. Der Einfachheit halber wird in dem Beispiel davon ausgegangen, dass das Durchlaufen des Vorzugsquellcodes bereits ausgeführt wurde, wobei die Eingabe-Ausgabe-Kombinationen im Speicher gehalten werden und nur eine vernachlässigbare Zugriffszeit erfordern. Es sei darauf hingewiesen, dass die Zeit für das Durchlaufen des Vorzugsquellcodes mit dem Satz von Eingaben, um den Satz von Ausgabewerten zu erhalten, möglicherweise addiert werden muss, um eine bessere Schätzung der benötigten Zeit zu erhalten, falls dies nicht bereits geschehen ist. In ähnlicher Weise kann die Zeit, die für den Vergleich der einzelnen Ausgaben aus dem Kandidaten- und dem Vorzugsquellcode benötigt wird, zu der benötigten Zeit hinzugezählt werden.In another embodiment, a system boundary may be determined and used to quantify an operation. For example, if a given candidate code could be traversed in 1 millisecond using a single set of input variables, and a full set of input variables would have 10 million values, then equivalence would be determined with absolute certainty in about 2.8 hours. For the sake of simplicity, it is assumed in the example that the iteration of the preferred source code has already been performed, with the input-output combinations being held in memory and requiring only a negligible access time. It should be noted that if it has not already been done, the time taken to iterate through the preferred source code with the set of inputs to get the set of output values may need to be added to get a better estimate of the time required. Similarly, the time taken to compare each output from the candidate and preferred source code can be added to the time taken.

In Anbetracht der benötigten Zeit kann eine Alternative gewählt werden, z. B. die Bestimmung auf einem anderen Computersystem auszuführen und/oder weniger Operationen durchzuführen. Zum Beispiel kann unter der Annahme einer Standardverteilung, bei der eine Hypothesenstärke von 50 % einem kumulativen Perzentil von 50 % entspricht, ein erster Test ausgeführt werden. Um innerhalb desselben Zeitfensters eine Hypothesenstärke von 75 % zu erreichen, die einem kumulativen Perzentil von 75 % entspricht, kann ein zusätzlicher oder leistungsfähigerer Prozessor eingesetzt werden. Es ist zu beachten, dass die Tests aufgrund des Aufwands oder der Details eines bestimmten zu testenden Werts von einer bestimmten statistischen Kurve abweichen können. Zum Beispiel kann das Ausführen von 1.000 Tests für einen Abschnitt des Codes eine Einrichtung oder einen anderen Overhead erfordern, der dazu führt, dass ein solcher Test anders ausfällt als zwei Gruppen von 500. Außerdem kann ein bestimmter Wert dazu führen, dass ein bestimmter Abschnitt des Codes ausgeführt wird, der besonders zeitaufwendig oder zeitsparend ist. So kann z.B. das zufällige Testen von Code mit einer numerischen Eingabe bei einer relativ kleinen Anzahl von Werten für eine solche Eingabe einen Offline-Vorgang auslösen (z.B. Zugriff auf einen Remote-Server, Einlegen eines Bandlaufwerks usw.). Dementsprechend kann das Ausführen eines Tests, der eine festgelegte Anzahl von Iterationen aufweist, zwei oder mehr Mal, dazu führen, dass die für jeden Test benötigte Zeit variiert. Bei einer weiteren Ausführungsform können diese Zeiten aufgezeichnet und eine Wahrscheinlichkeitskurve der Zeiten mit den sich daraus ergebenden Konfidenzwerten erstellt werden (z.B. dauert ein Test mit 1.000.000 Eingaben auf der Grundlage einer Vielzahl von Tests mit jeweils 1.000 Iterationen mit 97,7%iger Wahrscheinlichkeit 75 Sekunden +/- 10 Sekunden).Considering the time needed, an alternative can be chosen, e.g. B. to perform the determination on another computer system and/or perform fewer operations. For example, assuming a standard distribution where a hypothesis strength of 50% corresponds to a cumulative percentile of 50%, a first test can be performed. An additional or more powerful processor can be used to achieve a hypothesis strength of 75%, which corresponds to a cumulative percentile of 75%, within the same time window. It should be noted that the tests may deviate from a particular statistical curve due to the complexity or detail of a particular value being tested. For example, running 1,000 tests on a section of code may require setup or other overhead that causes such a test to fail differently than two groups of 500. Also, a specific value may cause a specific section of the Code is executed that is particularly time-consuming or time-saving. For example, randomly testing code with a numeric input given a relatively small number of values for such an input may trigger an offline operation (e.g., accessing a remote server, mounting a tape drive, etc.). Accordingly, running a test that has a fixed number of iterations two or more times may cause the time required for each test to vary. In another embodiment, these times can be recorded and a probability curve of the times constructed with the resulting confidence values (e.g., a test with 1,000,000 inputs based on multiple tests of 1,000 iterations each takes 75 with 97.7% probability seconds +/- 10 seconds).

Bei einer weiteren Ausführungsform entscheidet der Benutzer, dass die angestrebte Fehlerrate für die funktionale Äquivalenz ein bestimmter Prozentsatz (D) ist. Der Benutzer wählt ferner ein statistisches Black-Box-Stichprobenverfahren mit einem Stichprobenumfang N. Bei einer solchen Ausführungsform wird die Hypothesenstärke (HS) als Zufallswahrscheinlichkeit für die Nichtentdeckung eines Fehlers bei der angenommenen Fehlerrate berechnet, wie in Formel 1 angegeben, wenn kein Fall unterschiedlicher Ausgaben bei gleichen Eingaben für einen Kandidatencode und einen Vorzugscode entdeckt wird.In another embodiment, the user decides that the target error rate for functional equivalence is a certain percentage (D). The user also selects a black-box statistical sampling method with a sample size N. In such an embodiment, the hypothesis strength (HS) is calculated as the random probability of not detecting an error at the assumed error rate, as given in Formula 1, when no case of different outputs is discovered with the same entries for a candidate code and a preference code.

HS = 1 ( 1 D ) N

Figure DE202017007536U1_0002
HS = 1 ( 1 D ) N
Figure DE202017007536U1_0002

Funktionale Äquivalenz ist die Eigenschaft zweier Rechenfunktionen, äquivalent zu sein. Äquivalenz kann in verschiedenen Ausführungsformen ausgestaltet sein. Eine Ausführungsform ist formal (oder deduktiv) und eine andere Ausführungsform ist empirisch (oder induktiv). Nach der formalen Ausführungsform sind zwei Funktionen äquivalent, wenn die von der einen ausgeführten aufeinanderfolgenden Operationen mathematisch oder logisch auf die von der anderen ausgeführten aufeinanderfolgenden Operationen reduziert werden können. Nach der empirischen Ausführungsform ist der von den beiden Funktionen zurückgegebene Wert gleich, wenn die als Eingabe eingegebenen Argumente gleich sind. Die formale Ausführungsform kann die empirische Ausführungsform nach sich ziehen, aber nicht umgekehrt.Functional equivalence is the property of two arithmetic functions to be equivalent. Equivalency can be embodied in various embodiments. One embodiment is formal (or deductive) and another embodiment is empirical (or inductive). According to the formal embodiment, two functions are equivalent if the consecutive operations performed by one can be mathematically or logically reduced to the consecutive operations performed by the other. According to the empirical embodiment, if the arguments given as input are the same, the value returned by the two functions is the same. The formal embodiment can entail the empirical embodiment, but not vice versa.

Die empirische Ausführungsform geht von einer theoretischen Fehlerwahrscheinlichkeit ungleich Null aus, selbst wenn diese Wahrscheinlichkeit sehr gering ist. Die Stärke der Hypothese der funktionalen Äquivalenz ist dann der Grad des Vertrauens, dass diese Ausfallwahrscheinlichkeit durch eine extrem niedrige Obergrenze begrenzt ist.The empirical embodiment assumes a non-zero theoretical error probability, even if this probability is very small. The strength of the functional equivalence hypothesis is then the level of confidence that this probability of failure is bounded by an extremely low upper bound.

Die funktionale Äquivalenz oder die Stärke der Funktionsäquivalenzhypothese (Functional Equivalence Hypothesis Strength, FEHS) kann wie folgt definiert werden:Functional equivalence or Functional Equivalence Hypothesis Strength (FEHS) can be defined as follows:

Angenommen, „G“ und „F“ seien Funktionen, deren funktionale Äquivalenz zueinander derzeit unbekannt ist. Die G-F-Funktionsäquivalenzhypothese ist die Hypothese, dass die Funktionen G und F induktiv äquivalent sind, d.h. in Bezug auf ihre Eingaben und Ausgaben. Formal gilt für alle Eingaben („x“), dass G(x) äquivalent zu F(x) ist, daher haben wir Formel 2:Suppose "G" and "F" are functions whose functional equivalence to each other is currently unknown. The G-F function equivalence hypothesis is the hypothesis that the functions G and F are inductively equivalent, i.e. with respect to their inputs and outputs. Formally, for all inputs (“x”), G(x) is equivalent to F(x), so we have formula 2:

x ,  G ( x ) = F ( x ) .

Figure DE202017007536U1_0003
x , G ( x ) = f ( x ) .
Figure DE202017007536U1_0003

Die Fehlerrate (Defect Rate, DR) einer G-F Funktionsäquivalenzhypothese ist die Wahrscheinlichkeit, dass F und G bei einer Eingabe zwei unterschiedliche Werte liefern. Wenn x eine zufällige Eingabe für F und G ist, lautet die Formel 3:The defect rate (DR) of a G-F functional equivalence hypothesis is the probability that F and G will give two different values given an input. If x is a random input to F and G, the formula 3 is:

DR ( F , G ) = Pr ( F ( X ) G ( X ) ) .

Figure DE202017007536U1_0004
DR ( f , G ) = Pr ( f ( X ) G ( X ) ) .
Figure DE202017007536U1_0004

Wir definieren einen Parameter namens Maximale Fehlerrate (Maximum Defect Rate, MDR) als die maximale Fehlerrate, die in einem bestimmten Kontext akzeptabel ist. Als Standardwert wird diese Rate auf MDR = 0,0001 festgelegt.We define a parameter called Maximum Defect Rate (MDR) as the maximum defect rate that is acceptable in a given context. By default, this rate is set to MDR = 0.0001.

Die Stärke, siehe Formel 4, der G-F Funktionsäquivalenzhypothese ist das Vertrauensniveau für ihre Fehlerrate, die nach N erfolgreichen Versuchen zwischen 0 und 0,0001 gewählt wird, siehe Formel 5.The strength, see Formula 4, of the G-F functional equivalence hypothesis is the confidence level for its error rate, which is chosen between 0 and 0.0001 after N successful trials, see Formula 5.

S G F ( N )

Figure DE202017007536U1_0005
S G f ( N )
Figure DE202017007536U1_0005

S = 1 0.9999 N .

Figure DE202017007536U1_0006
S = 1 0.9999 N .
Figure DE202017007536U1_0006

Formal, gemäß Formel 6:Formally, according to formula 6:

FEHS ( F , G ) = P [ 0 < DR ( F , G ) < 0.0001 /N Erfolge ] .

Figure DE202017007536U1_0007
FEHS ( f , G ) = P [ 0 < DR ( f , G ) < 0.0001 /N achievements ] .
Figure DE202017007536U1_0007

Es ist zu beachten, dass die Fehlerrate ein Wert zwischen 0 und 1 oder ein engerer Abschnitt davon ist. Zum Beispiel, und wie hier verwendet (siehe Formel 5) ist die Fehlerrate 0,0001. Selbstverständlich können auch andere Fehlerraten gewählt werden. Bei einer anderen Ausführungsform können die ausgewählten Eingaben auch zufällig (z.B. eine unbeeinflusste Auswahl von Werten für alle potenziellen Werte eines bestimmten Datentyps), gewichtet zufällig (z.B. eine bevorzugte Tendenz, einen wahrscheinlicheren Wert auszuwählen, wie z.B. eine Normalverteilungskurve von Eingaben, die dazu führen kann, dass die Auswahl einer ähnlichen Normalverteilungskurve folgt), zurückliegend (z.B. ein Satz bekannter früherer Eingaben) oder andere Wertegruppen sein, die gemäß bekannten oder vermuteten Verteilungen bestimmt werden können. Ein Beispiel: Eine Eingabe für eine kurze Ganzzahl („short“) mit Vorzeichen ist -32.768 bis 32.767. Wenn die Eingabe jedoch den Variablennamen „Monat“ hat, kann der Wert für die „short“ über eine Nachschlagefunktion oder einen anderen Datensatz aus der Menge der Zahlen von 1 bis 12 ausgewählt werden, die die möglichen Werte für einen Monat angeben. Um jedoch mögliche Fehler bei einer solchen Auswahl zu vermeiden (z.B. können Monate aus einem bestimmten Ereignis akkumuliert werden und nicht nur ein Kalenderwert sein), können zusätzliche und/oder andere Verteilungen von Eingaben verwendet werden. Es sollte klar sein, dass ein solcher Ansatz eine optionale Ausführungsform ist, da der Vergleich zweier Funktionen, die Kalendermonate verwenden und einen großen Wert eingeben, beide einen Fehlercode zurückgeben oder anderweitig eine äquivalente Verarbeitung bieten sollten.It should be noted that the error rate is a value between 0 and 1 or a narrower fraction thereof. For example, and as used here (see Formula 5), the error rate is 0.0001. Of course, other error rates can also be selected. In another embodiment, the selected inputs can also be random (e.g., an unbiased selection of values for all potential values of a particular data type), weighted random (e.g., a preferred tendency to select a more likely value, such as a normal distribution curve of inputs that can lead to that the selection follows a similar normal distribution curve), historical (e.g., a set of known prior inputs), or other sets of values that can be determined according to known or conjectured distributions. For example, an input for a signed short integer is -32,768 to 32,767. However, if the input has the variable name "Month", the value for the "short" can be selected via a lookup function or other data set from the set of numbers from 1 to 12 that indicate the possible values for a month. However, to avoid possible errors in such a selection (e.g. months from a particular event can be accumulated and not just a calendar value), additional and/or different distributions of inputs can be used. It should be clear that such an approach is an optional embodiment, since comparing two functions that use calendar months and input a large value should both return an error code or otherwise provide equivalent processing.

Bei einer anderen Ausführungsform kann die Hypothesenstärke einer statistischen Konfidenz entsprechen. Bei anderen Ausführungsformen stellt die Hypothesenstärke ein ähnliches Konzept, aber eine andere Darstellung der ausgewählten Eingabe dar, z. B. wenn die als Eingaben ausgewählten Werte nicht zufällig oder nicht vollständig zufällig sind. Dementsprechend, und bei einer anderen Ausführungsform, wenn weniger als alle möglichen Eingaben berücksichtigt werden, kann die Auswahl der Eingabemenge eine Zufallsstichprobe aller möglichen Eingaben sein. Bei anderen Ausführungsformen können die Eingaben jedoch teilweise zufällig (z.B. zufällig, aber mit mindestens einem bestimmten Wert, wie Null und/oder Eins für eine ganze Zahl), nicht zufällig, festgelegt oder gezielt ausgewählt werden, wie z.B. als Ergebnis einer Pfadanalyse, um die Übereinstimmung mit dem Ziel sicherzustellen, dass Codezweige mindestens eine gewünschte Anzahl von Malen getestet werden. So kann beispielsweise ein Quellcode-Kandidat analysiert und bestimmt werden, dass er eine Verzweigung aufweist, die auftritt, wenn eine ganze Zahl zwischen 1 und 50 liegt. Dementsprechend können Werte ausgewählt werden, bei denen ein mehr als zufälliger Abschnitt der Eingaben zwischen 1 und 50 liegt. Zusätzlich oder alternativ kann ein Quellcode-Kandidat mit einer begrenzten oder durchgezählten Verzweigungsart auf der Grundlage einer relativ kleinen Anzahl von Eingaben im Vergleich zu allen möglichen Werten für eine Eingabe so gewichtet werden, dass mehr oder sogar alle Werte verwendet werden, die für die Verzweigung oder eine andere Operation entscheidend sind. Zeit- und/oder andere Ressourcenschätzungen können entsprechend vorgenommen werden. Wenn z. B. eine ganze Zahl zwischen 1 und 50 einen Aufruf an ein Sicherungsband auslöst, der zehn Sekunden pro Aufruf erfordert, und jeder andere Wert einen solchen zeitintensiven Vorgang nicht ausführt, kann die Zeitschätzung dieses Ereignis auf der Grundlage der Anzahl der Eingabewerte widerspiegeln, die in den Bereich von 1 bis 50 fallen werden bzw. für die geschätzt wird, dass sie in diesen Bereich fallen. Bei einer weiteren Ausführungsform kann alternativ ein anderes System, z. B. ein Solid-State-Backup-System, gewählt werden, um die für den Zugriff auf Daten auf einem Magnetband erforderliche Zeit zu vermeiden. Die zugeordneten Kosten (z.B. Einrichtungsaufwand, Zuweisung anderer Ressourcen, Aufhebung der Prioritäten anderer Programme usw.) können in Betracht gezogen werden. Als Vorteil kann die Bestimmung der Äquivalenz in einem bestimmten Umfang auf der Grundlage der Rechenanforderungen und der verfügbaren Systemkapazitäten vorgenommen werden und umgekehrt.In another embodiment, the hypothesis strength may correspond to statistical confidence. In other embodiments, hypothesis strength represents a similar concept but a different representation of the selected input, e.g. B. when the values selected as inputs are not random or not completely random. Accordingly, and in another embodiment when less than all possible inputs are considered, the selection of the input set may be a random sample of all possible inputs. However, in other embodiments, the inputs may be partially random (e.g., random but having at least one specific value, such as zero and/or one for an integer), non-random, fixed, or deliberately selected, such as as a result of path analysis, to determine the Consistent with the goal of ensuring that code branches are tested at least a desired number of times. For example, a candidate source code may be analyzed and determined to have a branch that occurs when an integer is between 1 and 50. Accordingly, values can be chosen where a more than random portion of the inputs falls between 1 and 50. Additionally or alternatively, a source code candidate with a finite or enumerated branch type based on a relatively small number of inputs compared to all possible values for an input can be weighted such that more or even all values necessary for the branch or another operation are crucial. Time and/or other resource estimates may be made accordingly. if e.g. For example, if an integer between 1 and 50 triggers a call to a backup tape that requires ten seconds per call, and any other value does not perform such a time-consuming operation, the time estimate can reflect that event based on the number of input values passed in will fall or are estimated to fall within the range of 1 to 50. Alternatively, in another embodiment, another system, e.g. a solid-state backup system, may be chosen to avoid the time required to access data on magnetic tape. The associated costs (e.g., setup effort, allocation of other resources, deprioritization of other programs, etc.) may be considered. Advantageously, the determination of equivalence can be made to a certain extent based on the computing requirements and the available system capacities and vice versa.

Die Eingabewerte können gemäß ihrem Datentyp ausgewählt werden. Beispielsweise ist das Testen aller möglichen Buchstaben-Kombinationen einer Zeichenkette wahrscheinlich nicht besonders nützlich. Das Testen einer anderen Anzahl von Zeichen, einer anderen Mischung aus Groß- und Kleinbuchstaben, Sonderzeichen, Zahlen und/oder anderen Eingaben kann jedoch einen höheren Testwert haben, da Fehler bei der Verarbeitung von Zeichenketten bekanntermaßen häufiger auftreten, wenn unerwartete Werte bereitgestellt werden. Für Datenstrukturen (z.B. eine bestimmte Kombination aus einer Vielzahl von Datentypen) kann die Testzeit anhand der sie bildenden Datentypen geschätzt werden. Bei einigen Datenstrukturen und Standarddatentypen kann jedoch eine kleine Stichprobe ausgeführt und die Zeit gemessen werden, um die für einen bestimmten Äquivalenztest benötigte Zeit genauer zu bestimmen, damit die gewählte Hypothesenstärke erreicht wird. Datentypen und/oder Datenstrukturen, die selektiv auf Ressourcen mit unbekannter Antwortzeit zugreifen, können durch einen solchen Pilotversuch genauer bewertet werden. Die Größe der Stichprobe kann festgelegt oder dynamisch bestimmt werden, basierend auf der Variabilität der Zeit, die eine bestimmte Iteration benötigt, um eine Ausgabe zu erzeugen. Wenn beispielsweise zwanzig Pilotversuche ausgeführt werden und die Abweichung der Testdauer für jede Iteration beträchtlich ist, kann ein zusätzlicher Test erforderlich sein, verglichen mit einem anderen Äquivalenztest mit zwanzig Pilotversuchen, die innerhalb desselben Zeitrahmens eine Antwort liefern. Alternativ kann anstelle einer einzelnen Zeitschätzung auch eine Testzeitspanne oder eine Wahrscheinlichkeitskurve angegeben werden. In ähnlicher Weise können bestimmte Ressourcen während eines Äquivalenztests selektiv verfügbar sein, genutzt und/oder benötigt werden. Ein Ressourcen- und/oder Zeitbereich kann angegeben werden, um die schwankende Verfügbarkeit einer bestimmten Ressource für einen Äquivalenztest anzuzeigen.The input values can be selected according to their data type. For example, testing all possible combinations of letters in a string is probably not very useful. However, testing a different number of characters, a different mix of uppercase and lowercase letters, special characters, numbers, and/or other input may have a higher test value, since string processing errors are known to occur more frequently when unexpected values are provided. For data structures (e.g. a specific combination of a large number of data types), the test time can be estimated using the data types that make up them. However, for some data structures and standard data types, a small sample can be run and timed to more accurately determine the time required for a given equivalence test to reach the selected hypothesis strength. Data types and/or data structures that selectively access resources with an unknown response time can be evaluated more precisely by such a pilot test. The sample size can be fixed or determined dynamically based on the variability of the time it takes a given iteration to produce an output. For example, if twenty pilot trials are run and the variation in test duration for each iteration is significant, an additional test may be required compared to another equivalence test with twenty pilot trials yielding an answer within the same time frame. Alternatively, instead of an individual time estimate, a test time period or a probability curve can also be specified. Similarly, certain resources may be selectively available, utilized, and/or required during an equivalence test. A resource and/or time range can be specified to indicate the fluctuating availability of a particular resource for an equivalence test.

8 zeigt die Ressourcenbelegungskomponente 800 der Äquivalenzbestimmung gemäß Ausführungsformen der vorliegenden Offenbarung. Bei einer Ausführungsform kann eine explizitere Ressourcenzuweisung bereitgestellt werden, z. B. um Indizien für spezifische verfügbare/ausgelastete Ressourcen für verschiedene Positionen entlang der Achse 708 bereitzustellen. Zum Beispiel kann die Skala 804 eine bestimmte verfügbare Ressource oder Ressourcen anzeigen. Der Indikator 802 kann eine oder mehrere Ressourcen anzeigen, die bei der Ausführung einer Äquivalenz-Operation verwendet werden. Ein bestimmtes System kann z.B. eine lokale Maschine mit einem Prozessor aufweisen, der gemeinsam genutzt werden kann (z.B. einen Prozess mit niedriger Priorität ausführen), nicht gemeinsam genutzt werden kann (z.B. einen Prozess mit hoher Priorität ausführen) oder die Verarbeitung auslagern kann, z.B. auf einen Server, ein Server-Rack, eine Server-Farm oder eine „Cloud“, die viele, oft Tausende von Hochleistungsservern umfasst. 8th 8 shows the resource allocation component 800 of the equivalence determination according to embodiments of the present disclosure. In one embodiment, a more explicit resource allocation may be provided, e.g. B. to provide indicia of specific available/utilized resources for various locations along axis 708. For example, gauge 804 may indicate a particular available resource or resources. Indicator 802 may indicate one or more resources used in performing an equivalency operation. For example, a particular system may have a local machine with a shared processor can (e.g., run a low-priority process), cannot be shared (e.g., run a high-priority process), or can offload processing, e.g., to a server, server rack, server farm, or "cloud" , which includes many, often thousands, of high-performance servers.

Die Ressourcenbelegungskomponente 800 der Äquivalenzbestimmung kann die für die Ausführung einer Äquivalenzbestimmung verfügbaren Ressourcen angeben. Dementsprechend kann die Skala 804 so ausgebildet sein, dass sie verfügbare Verarbeitungselemente und -kombinationen anzeigt, die für eine bestimmte Einstellung exklusiv sein können oder nicht. Beispielsweise kann ein einzelner Mikroprozessor, der eine Aufgabe mit „hoher Priorität“ ausführt, auch Operationen einer Aufgabe mit „niedriger Priorität“ ausführen, aber die Zuweisung einer anderen Komponente, z. B. eines „Servers“, kann die Zuweisung eines lokalen Prozessors aufheben. Bei anderen Ausführungsformen kann die Verwendung einer anderen Komponente, z. B. eines „Servers“, zusätzlich sein, und ein lokaler Prozessor führt zumindest einige der Operationen aus. Bei anderen Ausführungsformen ermöglicht die Ressourcenbelegungskomponente der Äquivalenzbestimmung 800 einem Benutzer die Auswahl, welche Komponenten aus einem Pool von verfügbaren Komponenten für die Äquivalenzbestimmung verwendet werden.The resource allocation component 800 of the equivalency determination may indicate the resources available for performing an equivalency determination. Accordingly, gauge 804 may be configured to indicate available processing elements and combinations, which may or may not be exclusive to a particular setting. For example, a single microprocessor performing a "high priority" task can also perform operations of a "low priority" task, but the allocation of another component, e.g. a "server" can deallocate a local processor. In other embodiments, the use of another component, e.g. a "server", and a local processor performs at least some of the operations. In other embodiments, the resource allocation component of the equivalence determination 800 allows a user to select which components from a pool of available components are used for the equivalence determination.

Bei einer anderen Ausführungsform ist die Ressourcenbelegungskomponente 800 der Äquivalenzbestimmung eine Ausgabe, die Indizien für Rechenressourcen liefert, die für die Durchführung einer Äquivalenzbestimmung ausgeführt werden, ausgeführt werden können und/oder ausgeführt wurden.In another embodiment, the resource usage component 800 of the equivalency determination is an output that provides indicia of computational resources that are, can be, and/or have been executed to perform an equivalency determination.

9 zeigt den Prozess 900 gemäß den Ausführungsformen der vorliegenden Offenbarung. Bei einer Ausführungsform stellt der Prozess 900 Schritte dar, die von einem oder mehreren Prozessoren auszuführen sind. Der Prozess 900 kann ganz oder teilweise von einem Prozessor ausgeführt werden, der sich von dem/den Prozessor(en) unterscheidet, der/die verwendet wird/werden, um die Äquivalenzbestimmung (z.B. Schritt 924) der Schritte des Prozesses 900 auszuführen. Es sollte klar sein, dass die Schritte des Prozesses 900 von einem Prozessor ausgeführt werden können, wie z. B. dem Prozessor 106, einem Prozessor eines Servers, Blade, Core und/oder einer anderen Verarbeitungsvorrichtung. Virtuelle Prozessoren bieten Vorteile, indem sie z.B. den Anschein einer dedizierten Hardwarekomponente erwecken, obwohl solche Komponenten eine von einer Vielzahl von Komponenten, eine gemeinsam genutzte Komponente oder eine sich ändernde Hardwarekomponente sein können, oder eine Schnittstelle bereitstellen, die einen Prozessorbefehlssatz simuliert, während die zugrunde liegende Hardwarekomponente einen anderen Prozessorbefehlssatz verwendet (z.B. einen Emulator). Bei bestimmten Ausführungsformen, die hierin beschrieben werden, können die tatsächlichen Prozessoroperationen den Anschein erwecken, dass die Software Prozessoroperationen ausführt; die zugrunde liegende Hardware bleibt jedoch bestehen und führt letztlich die hierin beschriebenen Operationen aus. 9 9 shows the process 900 in accordance with embodiments of the present disclosure. In one embodiment, process 900 represents steps to be performed by one or more processors. Process 900 may be executed in whole or in part by a processor other than the processor(s) used to perform the equivalence determination (eg, step 924) of the steps of process 900. It should be understood that the steps of process 900 can be performed by a processor, such as a processor. B. the processor 106, a processor of a server, blade, core and/or other processing device. Virtual processors offer advantages, for example, by giving the appearance of a dedicated hardware component, although such components can be one of a variety of components, a shared component, or a changing hardware component, or by providing an interface that simulates a processor instruction set while the underlying underlying hardware component uses a different processor instruction set (e.g. an emulator). In certain embodiments described herein, the actual processor operations may make it appear that the software performs processor operations; however, the underlying hardware remains and ultimately performs the operations described herein.

Bei einer Ausführungsform erhält Schritt 902 einen Schwellenwert für die Äquivalenzbegrenzung. Schritt 902 kann ausgeführt werden, z. B. durch die Begrenzungskomponente 700 der Äquivalenzbestimmung, die Ressourcenbelegungskomponente 800der Äquivalenzbestimmung, den Zugriff auf einen Datensatz in einem Speicher oder einer Datenspeicherkomponente und/oder andere Eingabemittel. Schritt 904 führt einen oder mehrere der Unterprozesse 906, 908 und 910 gemäß der in Schritt 902 empfangenen Eingabe aus. Die Teilprozesse 906, 908 und 910 können parallel oder nacheinander ausgeführt werden, je nach Wahl der Realisierung. Der Teilprozess 906 wird ausgeführt und Schritt 912 bestimmt, ob die in Schritt 902 empfangene Eingabe eine Zeitbeschränkung darstellt. Wenn ja, wird Schritt 912 ausgeführt, um eine Uhr, einen Countdown, einen Timer oder andere Mittel einzustellen, mit denen die Verarbeitung (z.B. die Schritte 924 und 926) beendet werden kann, wenn ein zeitlicher Zustand eintritt, der durch die in Schritt 902 empfangene Eingabe angezeigt wird. Der Teilprozess 908 wird ausgeführt und Schritt 916 bestimmt, ob die Ressource durch die in Schritt 902 empfangene Eingabe begrenzt ist, und wenn ja, führt Schritt 918 den Zuweisungsschritt bzw. Belegungsschritt aus. Schritt 918 kann Ressourcen belegen, z. B. durch Signalisierung an eine überwachende Ressource, die Verwendung von überwachten Ressourcen zu belegen und/oder den Zugriff auf fremde Prozesse für die überwachte Ressource während der Ausführung mindestens eines Abschnitts von Prozess 900 (z. B. Schritte 924 und 926) zu verweigern. Der Unterprozess 910 wird ausgeführt und der Schritt 920 bestimmt, ob der Prozess 900 in seiner Hypothesenstärke („HS“) begrenzt ist, so dass die Schritte 924 auszuführen sind, bis eine bestimmte Hypothesenstärke des Ergebnisses bestimmt ist.In one embodiment, step 902 obtains an equivalence limit threshold. Step 902 can be performed, e.g. B. by the limitation component 700 of the equivalence determination, the resource allocation component 800 of the equivalence determination, the access to a data record in a memory or a data storage component and/or other input means. Step 904 performs one or more of sub-processes 906, 908, and 910 according to the input received in step 902. Threads 906, 908, and 910 may be executed in parallel or sequentially, depending on the implementation choice. Sub-process 906 is executed and step 912 determines whether the input received in step 902 represents a time constraint. If so, step 912 is executed to set a clock, countdown, timer, or other means by which processing (e.g., steps 924 and 926) may terminate when a timing condition occurs that is determined by the conditions defined in step 902 received input is displayed. Sub-process 908 is executed and step 916 determines whether the resource is limited by the input received in step 902, and if so, step 918 performs the allocation step. Step 918 may allocate resources, e.g. by signaling a monitoring resource to reserve use of monitored resources and/or deny access to foreign processes for the monitored resource during execution of at least a portion of process 900 (e.g., steps 924 and 926). Sub-process 910 is executed and step 920 determines whether process 900 is hypothesized ("HS") constrained, such that steps 924 are to be executed until a certain hypothesis strength of the result is determined.

Bei einer Ausführungsform wird mindestens einer der Schritte 912, 916, 920 positiv bestätigend bestimmt. Wird einer der Schritte 912, 916, 920 negativ bestimmt, kann der nächste Schritt (z.B. 914, 918 bzw. 922) ausgelassen werden. Wenn einer der Schritte 912, 916, 920 nacheinander ausgeführt wird, kann nach Abschluss eines oder mehrerer der Schritte 912, 916, 920 ein nicht ausgeführter Schritt 912, 916, 920 ausgeführt werden.In one embodiment, at least one of steps 912, 916, 920 is determined in the affirmative. If any of steps 912, 916, 920 is determined negatively, the next step (e.g. 914, 918 or 922) can be omitted. If one of the steps 912, 916, 920 is executed in succession, after the completion of one or more of the steps 912, 916, 920 an unexecuted step 912, 916, 920 can be executed.

Bei einer anderen Ausführungsform kann der Schritt 904 einen Konflikt zwischen zwei oder mehreren der Teilprozesse 906, 908 und 910 auflösen. Zum Beispiel kann ein Benutzer eine Anforderung eingeben, eine Äquivalenz-Bestimmung auszuführen, dabei eine festgelegte Verarbeitungsressource zu verwenden, eine 99,8%ige Hypothesenstärke zu erzeugen und nach fünfzehn Minuten zu stoppen. Ein Prozessor, wie z.B. Prozessor 106, kann Schritte des Prozesses 900 ausführen und bestimmen, dass die angeforderte Äquivalenzbestimmung nicht innerhalb des angegebenen Zeitlimits ausgeführt werden kann, um ein Ergebnis mit dem angegebenen Grad der Hypothesenstärke zu liefern. Dementsprechend kann der Prozess 900 in einer Schleife (nicht dargestellt) zum Schritt 902 zurückkehren, um eine alternative Eingabe vom Benutzer zu erhalten. Wie man sich vorstellen kann, kann das System, das den Prozess 900 ausführt, den Benutzer auffordern, ein erreichbares Ergebnis in Bezug auf Zeit, Hypothesenstärke und Ressourcen einzugeben. Alternativ kann der Prozess 900 so lange fortgesetzt werden, bis eine der Bedingungen (siehe Schritt 926) erfüllt ist, um den Benutzer zu fragen, ob die Ergebnisse ausreichend sind oder ob er fortfahren soll. Zum Beispiel kann der Benutzer nach einem ersten Schwellwert (z.B. bestimmt Schritt 928, dass fünfzehn Minuten vergangen sind) aufgefordert werden, z.B. zu sagen: „Die fünfzehnminütige Zeitgrenze wurde mit einer Hypothesenstärke von 9,8% erreicht. Beenden? Weiter?“ und entsprechend fortsetzen oder beenden. Alternativ kann der Benutzer aufgefordert werden, zusätzliche Verarbeitungsressourcen zu genehmigen und/oder zuzuweisen, und/oder eine Komponente für die automatische Ressourcenzuweisung kann Verarbeitungsressourcen zuweisen, um eine Hypothesenstärke und/oder Zeitbeschränkung einzuhalten.In another embodiment, step 904 may resolve a conflict between two or more of threads 906, 908, and 910. For example, a user may enter a request to perform an equivalency determination using a specified processing resource, generate a 99.8% hypothesis strength, and stop after fifteen minutes. A processor, such as processor 106, may perform steps of process 900 and determine that the requested equivalency determination cannot be performed within the specified time limit to provide a result with the specified level of hypothesis strength. Accordingly, the process 900 may loop (not shown) back to step 902 to receive alternative input from the user. As can be imagined, the system performing process 900 may prompt the user to enter an achievable outcome in terms of time, hypothesis strength, and resources. Alternatively, the process 900 may continue until one of the conditions (see step 926) is met to prompt the user if the results are sufficient or if he should continue. For example, after a first threshold (eg, step 928 determines that fifteen minutes has elapsed), the user may be prompted to say, eg, “The fifteen minute time limit has been met with a hypothesis strength of 9.8%. End? Next?” and continue or end accordingly. Alternatively, the user may be prompted to approve and/or allocate additional processing resources, and/or an automatic resource allocation component may allocate processing resources to meet a hypothesis strength and/or time constraint.

Sobald Einschränkungen bekannt sind oder bekannt werden (z.B. eine Unterbrechung), führt Schritt 924 Verarbeitungsvorgänge aus, die der Bestimmung der Äquivalenz zugeordnet sind. Bei einer Ausführungsform kann es sich bei den Verarbeitungsvorgängen um eine Reihe von Iterationen eines Tests handeln, wobei eine bestimmte Eingabe sowohl für einen Kandidaten-Quellcode als auch für einen Vorzugsquellcode bereitgestellt wird und die Ausgaben beider dann auf Äquivalenz, Prozessortaktzyklen, Prozessoroperationen, FLOPs usw. bewertet werden. Zusätzlich oder alternativ kann eine Umrechnung eines Wertes in einen anderen vorgesehen und genutzt werden (z.B. kann die Anzahl der Iterationen in Prozessorzyklen gewandelt werden usw.)Once constraints are known or become known (e.g., an interrupt), step 924 performs processing associated with determining equivalence. In one embodiment, the processing operations may be a series of iterations of a test, where a given input is provided to both a candidate source code and a preferred source code, and the outputs of both are then checked for equivalency, processor clock cycles, processor operations, FLOPs, etc. be rated. Additionally or alternatively, a conversion of one value into another can be provided and used (e.g. the number of iterations can be converted into processor cycles, etc.)

Als nächstes werden in Schritt 924 Verarbeitungsvorgänge von der ausgewählten/zugewiesenen Verarbeitungsressource ausgeführt. Schritt 926 bestimmt, ob der Verarbeitungsschritt 924 abgebrochen werden soll. Schritt 926 weist die Unterschritte 928, 930 und 932 auf. Bei einer Ausführungsform ist die Verarbeitung zu unterbrechen, wenn einer der Unterschritte 928, 930 und 932 zutrifft, und der Prozess 900 wird mit Schritt 934 fortgesetzt. Bei einer anderen Ausführungsform wird, wenn alle Unterschritte 928, 930 und 932 negativ bestimmt werden, der Prozess 900 fortgesetzt und mit Schritt 924 fortgefahren. Schritt 928 weist den Schritt 928 auf, der bestimmt, ob ein Zeitlimit erreicht wurde, wie z. B. eine Zeit, Dauer usw., die in Schritt 914 festgelegt wurde. Schritt 928 weist Schritt 930 auf, der bestimmt, ob die Äquivalenz fehlgeschlagen ist, d.h. eine Operation von Schritt 924 hat ergeben, dass ein Kandidatenquellcode und ein Vorzugsquellcode, wenn sie mit äquivalenten Eingaben versehen sind, keine äquivalenten Ausgaben erzeugen. Schritt 928 weist den Schritt 932 auf, der bestimmt, ob eine bestimmte Hypothesenstärke („HS“), wie sie in Schritt 922 festgelegt wurde, erreicht wurde. Anschließend wird Schritt 934 ausgeführt, in dem die Äquivalenz oder das Fehlen der Äquivalenz angezeigt wird, wenn Schritt 930 bejaht wird. Optional kann in Schritt 934 eine Substitutionsoperation ausgeführt werden, bei der der Vorzugsquellcode den Kandidatenquellcode ersetzt.Next, in step 924, processing operations are performed by the selected/assigned processing resource. Step 926 determines whether processing step 924 should be aborted. Step 926 includes substeps 928, 930, and 932. In one embodiment, if any of sub-steps 928, 930, and 932 are true, processing is to be interrupted and process 900 proceeds to step 934. In another embodiment, if all of sub-steps 928, 930, and 932 are determined negatively, process 900 continues and proceeds to step 924. Step 928 includes step 928 determining whether a time limit has been reached, such as a time limit. B. a time, duration, etc., which was determined in step 914. Step 928 includes step 930 determining whether the equivalence failed, i.e., an operation of step 924 determined that a candidate source code and a preferred source code, when provided with equivalent inputs, do not produce equivalent outputs. Step 928 includes step 932 which determines whether a certain hypothesis strength ("HS") as determined in step 922 has been met. Step 934 is then executed, in which equivalence or lack of equivalence is indicated if step 930 is affirmative. Optionally, in step 934, a substitution operation can be performed, in which the preferred source code replaces the candidate source code.

Die 10-71 zeigen eine Lösung gemäß den Ausführungsformen der vorliegenden Offenbarung. 10 zeigt zumindest einen Teil einer Übersicht über ein Problem und eine Lösung gemäß Ausführungsformen der vorliegenden Offenbarung. 11 zeigt zumindest einen Teil einer weiteren Übersicht über gelöste Probleme gemäß Ausführungsformen der vorliegenden Offenbarung. 12 zeigt zumindest einen Teil eines Ziels gemäß den Ausführungsformen der vorliegenden Offenbarung. 13 zeigt zumindest einen Teil einer Analogie gemäß den Ausführungsformen der vorliegenden Offenbarung. 14 zeigt zumindest einen Teil eines zusätzlichen Übersichtsabschnitts gemäß Ausführungsformen der vorliegenden Offenbarung. 15 zeigt mindestens einen Teil eines zusätzlichen Übersichtsabschnitts gemäß Ausführungsformen der vorliegenden Offenbarung.the 10-71 show a solution according to the embodiments of the present disclosure. 10 FIG. 12 shows at least part of an overview of a problem and a solution according to embodiments of the present disclosure. 11 FIG. 12 shows at least part of another overview of solved problems according to embodiments of the present disclosure. 12 10 shows at least a portion of a target according to embodiments of the present disclosure. 13 12 shows at least a portion of an analogy in accordance with embodiments of the present disclosure. 14 FIG. 12 shows at least part of an additional overview section according to embodiments of the present disclosure. 15 12 shows at least a portion of an additional overview section according to embodiments of the present disclosure.

16 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die einen Code 1602 mit einer Funktion 1604, einer Funktion 1606, einer Funktion 1608 und einer Funktion 1610 aufweist. 17 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die den Code 1602 mit der Funktion 1604, der Funktion 1606, der Funktion 1608 und der Funktion 1610 aufweist. Funktion 1604 und Funktion 1610 sind hervorgehoben. 18 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die den Code 1602 mit der Funktion 1604, der Funktion 1606, der Funktion 1608 und der Funktion 1610 aufweist. Funktion 1604 und Funktion 1610 sind hervorgehoben. 19A zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die den Code 1602 mit den Funktionen 1604, 1606, 1608 und 1610 aufweist. Funktion 1604 und Funktion 1610 sind hervorgehoben. 16 shows at least part of the in the 10-71 solution shown having a code 1602 with a function 1604, a function 1606, a function 1608 and a function 1610. 17 shows at least part of the in the 10-71 solution shown, which has code 1602 with function 1604, function 1606, function 1608 and function 1610. Function 1604 and function 1610 are highlighted. 18 shows at least part of the in the 10-71 solution shown, which has code 1602 with function 1604, function 1606, function 1608 and function 1610. Function 1604 and function 1610 are highlighted. 19A shows at least part of the in the 10-71 solution shown, which has code 1602 with functions 1604, 1606, 1608, and 1610. Function 1604 and function 1610 are highlighted.

Die 19B, 20, 27 zeigen jeweils mindestens einen Teil der in den 10-71 dargestellten Lösung und weisen jeweils den Code 1902 mit der Funktion 1604 und der Funktion 1610 auf. 19 wird durch 19A, die den linken Teil von 19 darstellt, und 19B, die den rechten Teil von 19 darstellt, veranschaulicht. 20 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die die Funktion 1606, die Funktion 1608 und die Funktion 1610 aufweist.the 19B , 20 , 27 each show at least part of the in the 10-71 solution shown and each have the code 1902 with the function 1604 and the function 1610. 19 will through 19A showing the left part of 19 represents, and 19B showing the right part of 19 represents, illustrates. 20 shows at least part of the in the 10-71 solution shown having function 1606, function 1608 and function 1610.

21 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 21 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 22 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 23 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 24 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 24 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 25 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 26 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 27 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der Quellcode 1902, Funktion 1604 und Funktion 1610 aufweist. 28 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die den Quellcode 1902, die Funktion 1604 und die Funktion 1610 aufweist. 29 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 30 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 31 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 21 shows at least part of the in the 10-71 shown solution. 21 shows at least part of the in the 10-71 shown solution. 22 shows at least part of the in the 10-71 shown solution. 23 shows at least part of the in the 10-71 shown solution. 24 shows at least part of the in the 10-71 shown solution. 24 shows at least part of the in the 10-71 shown solution. 25 shows at least part of the in the 10-71 shown solution. 26 shows at least part of the in the 10-71 shown solution. 27 shows at least part of the in the 10-71 solution shown, comprising source code 1902, function 1604, and function 1610. 28 shows at least part of the in the 10-71 solution shown having source code 1902, function 1604 and function 1610. 29 shows at least part of the in the 10-71 shown solution. 30 shows at least part of the in the 10-71 shown solution. 31 shows at least part of the in the 10-71 shown solution.

32 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der den Code 3202 aufweist. 32 shows at least part of the in the 10-71 solution shown, which has the code 3202.

33 ist durch 33A, die den linken Teil von 33 zeigt, und 33B, die den rechten Teil von 33 zeigt, dargestellt. 33A zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die den Code 3302 aufweist. 34 wird durch 34A, die den linken Teil von 34 zeigt, und 34B, die den rechten Teil von 34 zeigt, veranschaulicht. 35 ist durch 35A, die den linken Teil von 35 zeigt, 35B, die den mittleren Teil von 35 zeigt, und 35C, die den rechten Teil von 35 zeigt, dargestellt. 35C zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die die Funktionen 3502, 3504 und 3506 aufweist. 36 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 37 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 38 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 39 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 40 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der die Funktion 3502, die Funktion 4002 und die Funktion 4004 aufweist. 33 is through 33A showing the left part of 33 shows and 33B showing the right part of 33 shows, represented. 33A shows at least part of the in the 10-71 solution shown, which has code 3302. 34 will through 34A showing the left part of 34 shows and 34B showing the right part of 34 shows, illustrates. 35 is through 35A showing the left part of 35 indicates, 35B , which is the middle part of 35 shows and 35C showing the right part of 35 shows, represented. 35C shows at least part of the in the 10-71 solution shown, which has functions 3502, 3504, and 3506. 36 shows at least part of the in the 10-71 shown solution. 37 shows at least part of the in the 10-71 shown solution. 38 shows at least part of the in the 10-71 shown solution. 39 shows at least part of the in the 10-71 shown solution. 40 shows at least part of the in the 10-71 solution shown, which has the function 3502, the function 4002 and the function 4004.

41 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der die Funktion 3502, die Funktion 3508 und die Funktion 3510 aufweist. 42 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der jeweils die Funktionen 3502, 3508 und 3510 aufweist. 43 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der die Funktionen 3502 und 3510 aufweist. 41 shows at least part of the in the 10-71 solution shown, which has the function 3502, the function 3508 and the function 3510. 42 shows at least part of the in the 10-71 solution shown, which has functions 3502, 3508, and 3510, respectively. 43 shows at least part of the in the 10-71 solution shown, which has functions 3502 and 3510.

44 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 45 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 46 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 47 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 48 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 49 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 50 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 51 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung und wird durch 51A, die den linken Teil von 51 zeigt, und 51B, die den rechten Teil von 51 zeigt, veranschaulicht. 52 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 50 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 53 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der die Funktion 3202 aufweist 44 shows at least part of the in the 10-71 shown solution. 45 shows at least part of the in the 10-71 shown solution. 46 shows at least part of the in the 10-71 shown solution. 47 shows at least part of the in the 10-71 shown solution. 48 shows at least part of the in the 10-71 shown solution. 49 shows at least part of the in the 10-71 shown solution. 50 shows at least part of the in the 10-71 shown solution. 51 shows at least part of the in the 10-71 shown solution and is carried out by 51A showing the left part of 51 shows and 51B showing the right part of 51 shows, illustrates. 52 shows at least part of the in the 10-71 shown solution. 50 shows at least part of the in the 10-71 shown solution. 53 shows at least part of the in the 10-71 solution shown, which has the function 3202

54 wird durch 54A, die den linken Teil von 54 zeigt, 54B, die den mittleren Teil von 54 zeigt, und 54C, die den rechten Teil von 54 zeigt, dargestellt. 54A zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der Code 3502, Funktionen 3502, Funktion 4002 und Funktion 4004 aufweist. 54B zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der die Funktionen 5402, 5404 und 5406 aufweist. 54C zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der die Funktionen 5408, 5410, 5412, 5414 und 5416 aufweist. 54 will through 54A showing the left part of 54 indicates, 54B , which is the middle part of 54 shows and 54C showing the right part of 54 shows, represented. 54A shows at least part of the in the 10-71 solution shown, which has code 3502, functions 3502, function 4002 and function 4004. 54B shows at least part of the in the 10-71 solution shown, which has functions 5402, 5404, and 5406. 54C shows at least part of the in the 10-71 solution shown, which has functions 5408, 5410, 5412, 5414, and 5416.

55 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der die Funktionen 5502, 5404, 5406 und 5408 aufweist. 56 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 57 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 58 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 59 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 59 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 55 shows at least part of the in the 10-71 solution shown, which has functions 5502, 5404, 5406, and 5408. 56 shows at least part of the in the 10-71 shown solution. 57 shows at least part of the in the 10-71 shown solution. 58 shows at least part of the in the 10-71 shown solution. 59 shows at least part of the in the 10-71 shown solution. 59 shows at least part of the in the 10-71 shown solution.

60B zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die den Code 1602 mit der Funktion 1604, der Funktion 1606, der Funktion 1608 und der Funktion 1610 aufweist. Funktion 1604 und Funktion 1610 sind hervorgehoben. 60C zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der die Funktion 6002 aufweist. 60 ist durch 60A dargestellt, die einen oberen Teil von 60 illustriert, und der untere Teil von 60 ist durch 60B dargestellt, die den linken unteren Teil von 60 illustriert, und 60C, die den rechten unteren Teil von 60 illustriert. 60B shows at least part of the in the 10-71 solution shown, which has code 1602 with function 1604, function 1606, function 1608 and function 1610. Function 1604 and function 1610 are highlighted. 60C shows at least part of the in the 10-71 solution shown, which has the function 6002. 60 is through 60A shown showing an upper part of 60 illustrated, and the lower part of 60 is through 60B shown showing the lower left part of 60 illustrated, and 60C , which is the lower right part of 60 illustrated.

61 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 62 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, der die Interaktion 6202 aufweist. 62 wird durch 62A veranschaulicht, die den linken Teil von 62 illustriert, 62B, die den rechten Teil von 62 illustriert. 61 shows at least part of the in the 10-71 shown solution. 62 shows at least part of the in the 10-71 solution shown, which has the interaction 6202. 62 will through 62A illustrates showing the left part of 62 illustrated, 62B showing the right part of 62 illustrated.

63 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die Code 3502 und Funktion 5402, Funktion 5404, Funktion 5406, Funktion 5408, Funktion 5410, Funktion 5412, Funktion 5414, und Funktion 5416 aufweist. 63 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung und wird durch 63A, die den linken Teil von 63 zeigt, 63B, die den rechten oberen Teil von 63 zeigt, und 63C, die den rechten unteren Teil von 63 zeigt, dargestellt. 63 shows at least part of the in the 10-71 solution shown having code 3502 and function 5402, function 5404, function 5406, function 5408, function 5410, function 5412, function 5414, and function 5416. 63 shows at least part of the in the 10-71 shown solution and is carried out by 63A showing the left part of 63 indicates, 63B showing the upper right part of 63 shows and 63C , which is the lower right part of 63 shows, represented.

64 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 65 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 66 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 67 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 64 shows at least part of the in the 10-71 shown solution. 65 shows at least part of the in the 10-71 shown solution. 66 shows at least part of the in the 10-71 shown solution. 67 shows at least part of the in the 10-71 shown solution.

68 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung, die den Code 3502 und die Interaktion 6202 aufweist. 69 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 69 wird durch 69A dargestellt, die den linken Teil von 69 illustriert, und 69B, die den rechten Teil von 69 illustriert. 70 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 71 zeigt mindestens einen Teil der in den 10-71 dargestellten Lösung. 68 shows at least part of the in the 10-71 solution shown, which has code 3502 and interaction 6202. 69 shows at least part of the in the 10-71 shown solution. 69 will through 69A shown showing the left part of 69 illustrated, and 69B showing the right part of 69 illustrated. 70 shows at least part of the in the 10-71 shown solution. 71 shows at least part of the in the 10-71 shown solution.

Offenbart werden ebenfalls die folgenden Aspekte:

  • Verfahren, das Folgendes aufweist:
    • Abrufen eines Kandidaten-Quellcodes, der eine Kandidatenfunktion aufweist und eine erste menschenlesbare Maschinenanweisung aufweist, durch einen Prozessor aus einem Datenspeicher;
    • Zugreifen des Prozessors aus dem Datenspeicher auf eine Vorzugsfunktion, die eine zweite menschenlesbare Maschinenanweisung umfasst und zuvor als autorisierter Quellcode identifiziert wurde;
    • Zugreifen des Prozessors auf einen Schwellenwert für die Äquivalenzbegrenzung;
    • automatisches Bestimmen der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion durch den Prozessor, wobei der Prozessor eine Vielzahl von Verarbeitungsoperationen ausführt, die die Bestimmung der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion aufweisen, bis der Schwellenwert für die Äquivalenzbegrenzung erreicht ist;
    • bei Feststellung der Äquivalenz, automatisches Bereitstellen von Äquivalenzindikatoren durch den Prozessor, die mit der Kandidatenfunktion und der Vorzugsfunktion verbunden sind;
    • bei Vorliegen der Indizien automatische Umwandlung des Kandidaten-Quellcodes durch den Prozessor, wobei die Kandidatenfunktion durch die Vorzugsfunktion ersetzt wird; und
    • die Ausgabe des transformierten Kandidaten-Quellcodes.
  • Wobei der Schwellenwert für die Äquivalenzbegrenzung mindestens eines der folgenden Elemente aufweist: Niveau der Hypothesenstärke, Anzahl der Verarbeitungsvorgänge, die erforderlich sind, um das Niveau der Hypothesenstärke zu erreichen, Taktzeit, Prozessorzyklen, Verarbeitungsressourcen, die die Verarbeitungsvorgänge zusätzlich zum Prozessor durchführen, und Verarbeitungsressourcen, die die Verarbeitungsvorgänge ohne den Prozessor durchführen.
  • Wobei die Vorzugsfunktion menschenlesbare Elemente aufweist, die nicht mit der zweiten menschenlesbaren Maschinenanweisung verbunden sind.
  • Wobei der Schritt der Bestimmung der Äquivalenz fehlschlägt, wenn festgestellt wird, dass eine Anzahl von Eingabe-/Ausgabeparametern zwischen der Kandidatenfunktion und der Vorzugsfunktion unterschiedlich ist.
  • Wobei der Schritt der Bestimmung der Äquivalenz fehlschlägt, wenn:
    • bestimmt wird, dass mindestens eines Eingabe-/Ausgabeparameter sich zwischen der Kandidatenfunktion und der Vorzugsfunktion unterscheidet; und
    • wobei die Differenz eine Differenz von Äquivalenzklassen aufweist.
  • Bereitstellen einer ersten maschinenlesbaren Übersetzung der Kandidatenfunktion;
  • Bereitstellen einer zweiten maschinenlesbaren Übersetzung der Vorzugsfunktion;
  • Ausführen sowohl der ersten maschinenlesbaren Übersetzung als auch der zweiten maschinenlesbaren Übersetzung mit Eingaben aus einem endlichen Satz von Eingaben; und
  • Bestimmen der Äquivalenz nach dem Schritt des Ausführens sowohl der ersten maschinenlesbaren Übersetzung als auch der zweiten maschinenlesbaren Übersetzung, die jeweils äquivalente Werte von jeder der ersten maschinenlesbaren Übersetzung und der zweiten maschinenlesbaren Übersetzung der Kandidatenfunktion ausgeben.
  • Wobei der Schritt des Bestimmens der Äquivalenz weiterhin aufweist:
    • Ableiten einer logischen Gleichung für die Kandidatenfunktion;
    • Zugreifen auf eine logische Gleichung für die Vorzugsfunktion; und
    • wobei die Äquivalenz nicht festgestellt wird, wenn festgestellt wird, dass die logische Gleichung für die Kandidatenfunktion sich von der logischen Gleichung für die Vorzugsfunktion unterscheidet.
  • Wobei die Bestimmung, ob die logische Gleichung der Kandidatenfunktion als äquivalent zu der logischen Gleichung der Vorzugsfunktion bestimmt wird, ferner aufweist:
    • Bereitstellen der logischen Gleichung für die Kandidatenfunktion und der logischen Gleichung für die Vorzugsfunktion für einen automatischen Theorembeweiser; und
    • Empfang von Indizien aus dem automatischen Theorembeweiser, die die Äquivalenz anzeigen.
  • Wobei die Vorzugsfunktion eine Gruppe von Anweisungen aufweist, die, wenn sie in Maschinencode umgewandelt werden, eine Maschine veranlassen, die Vorzugsfunktion auf eine zuvor bestimmte optimale Weise auszuführen.
  • Wobei die zuvor bestimmte optimale Art und Weise eine bestimmte Art und Weise aufweist, die mit mindestens einem Sicherheitsziel übereinstimmt.
  • Wobei die Maschine einen Prozessor aufweist und die zuvor bestimmte optimale Art und Weise eine bestimmte Anzahl von Prozessoroperationen aufweist.
  • Wobei die Maschine einen Speicher aufweist und die zuvor bestimmte optimale Art und Weise eine bestimmte Größe des Speichers aufweist, die zum Speichern des Maschinencodes erforderlich ist.
  • Wobei die Vorzugsfunktion eine Gruppe von Anweisungen aufweist, die zuvor als prägnanter Quellcode identifiziert wurden.
  • Wobei der Schritt des Bestimmens der Äquivalenz weiterhin aufweist:
    • Erzeugen einer Gruppe von Äquivalenzklassen für die Kandidatenfunktion aus der Kandidatenfunktion, wobei die Äquivalenzklassen eine Gruppe von äquivalenten Funktionen aufweisen und jedes Element der Gruppe eine Funktion-zu-Quelle-Zuordnung hat.
  • Wobei die Vorzugsfunktion ein prägnantestes Element aufweist, das gemäß einer abstrakten syntaktischen Strukturbestimmung der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion ausgewählt wird.
  • Wobei die abstrakte syntaktische Struktur einen abstrakten Syntaxbaum (AST) aufweist.
  • System, aufweisend:
    • einen Prozessor, der außerdem einen Speicher und eine erste Kommunikationsschnittstelle aufweist;
    • einen Datenspeicher, wobei der Datenspeicher eine zweite zugängliche Kommunikationsschnittstelle aufweist;
    • der Prozessor:
      • über die erste und zweite Kommunikationsschnittstelle einen Kandidaten-Quellcode abruft, der eine Kandidatenfunktion hat und eine erste menschenlesbare Maschinenanweisung enthält;
      • auf eine Vorzugsfunktion zugreift, die eine zweite menschenlesbare Maschinenanweisung aufweist und zuvor als autorisierter Quellcode identifiziert wurde;
      • auf einen Schwellenwert für die Äquivalenzbegrenzung zugreift;
      • die Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion bestimmt, wobei der Prozessor eine Vielzahl von Verarbeitungsoperationen ausführt, die die Bestimmung der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion aufweisen, bis der Schwellenwert für die Äquivalenzbegrenzung erreicht ist,
      • bei festgestellter Äquivalenz, Äquivalenzkennzeichen für die Kandidatenfunktion und die Vorzugsfunktion erstellt und bereitstellt;
      • bei Bereitstellen der Indizien, den Kandidaten-Quellcode umwandelt, wobei auch die Kandidatenfunktion durch die Vorzugsfunktion ersetzt wird; und
      • den transformierten Kandidaten-Quellcodes über die erste Kommunikationsschnittstelle ausgibt.
  • Nicht-flüchtiges computerlesbares Medium mit darauf befindlichen Anweisungen, die, wenn sie von einem Computer ausgeführt werden, den Computer dazu veranlassen:
    • aus einem Datenspeicher einen Kandidaten-Quellcode abzurufen, der eine Kandidatenfunktion hat und eine erste menschenlesbare Maschinenanweisung enthält;
    • aus dem Datenspeicher auf eine Vorzugsfunktion zuzugreifen, die eine zweite menschenlesbare Maschinenanweisung umfasst und zuvor als autorisierter Quellcode identifiziert wurde;
    • auf einen Schwellenwert für die Äquivalenzbegrenzung zuzugreifen;
    • Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion durch Ausführen einer Vielzahl von Verarbeitungsoperationen automatisch zu bestimmen, was die Bestimmung der Äquivalenz zwischen der Kandidatenfunktion und der Vorzugsfunktion aufweist, bis der Schwellenwert für die Äquivalenzbegrenzung erreicht ist;
    • bei Feststellung der Äquivalenz, Äquivalenzindikatoren durch den Prozessor automatisch bereitzustellen, die mit der Kandidatenfunktion und der Vorzugsfunktion verbunden sind;
    • bei Vorliegen der Indizien, den Kandidaten-Quellcodes durch den Prozessor automatisch umzuwandeln, wobei die Kandidatenfunktion durch die Vorzugsfunktion ersetzt wird; und
    • den transformierten Kandidaten-Quellcode auszugeben.
The following aspects are also disclosed:
  • A method that includes:
    • retrieving, by a processor, from a data store, candidate source code having a candidate function and having a first human-readable machine instruction;
    • the processor accessing from the data store a preference function comprising a second human-readable machine instruction previously identified as authorized source code;
    • accessing the processor to an equivalence constraint threshold;
    • the processor automatically determining the equivalence between the candidate function and the preferred function, the processor performing a plurality of processing operations including determining the equivalence between the candidate function and the preferred function until the equivalence constraint threshold is met;
    • upon determination of equivalence, the processor automatically providing equivalence indicators associated with the candidate function and the preferred function;
    • upon the presence of the indicia, the processor automatically converting the candidate source code, replacing the candidate function with the preferred function; and
    • the output of the transformed candidate source code.
  • Where the equivalence constraint threshold comprises at least one of the following: hypothesis strength level, number of processing operations required to reach the hypothesis strength level, clock time, processor cycles, processing resources required by the perform processing operations in addition to the processor, and processing resources that perform the processing operations without the processor.
  • Wherein the preference function comprises human-readable elements that are not associated with the second human-readable machine instruction.
  • Wherein the step of determining equivalence fails if it is determined that a number of input/output parameters differ between the candidate function and the preferred function.
  • Where the step of determining equivalence fails if:
    • determining that at least one input/output parameter differs between the candidate function and the preferred function; and
    • where the difference has a difference of equivalence classes.
  • providing a first machine-readable translation of the candidate function;
  • providing a second machine-readable translation of the preference function;
  • performing both the first machine-readable translation and the second machine-readable translation with inputs from a finite set of inputs; and
  • determining equivalence after the step of performing both the first machine-readable translation and the second machine-readable translation that each output equivalent values of each of the first machine-readable translation and the second machine-readable translation of the candidate function.
  • Wherein the step of determining equivalence further comprises:
    • deriving a logical equation for the candidate function;
    • accessing a logical equation for the preference function; and
    • wherein equivalence is not determined if the logical equation for the candidate function is determined to be different from the logical equation for the preferred function.
  • Wherein determining whether the logical equation of the candidate function is determined to be equivalent to the logical equation of the preference function further comprises:
    • providing the logical equation for the candidate function and the logical equation for the preferred function to an automatic theorem prover; and
    • Receiving evidence from the automatic theorem prover indicating equivalence.
  • Where the preference function comprises a set of instructions which, when converted to machine code, cause a machine to execute the preference function in a predetermined optimal manner.
  • Wherein the previously determined optimal manner comprises a determined manner that conforms to at least one security objective.
  • Wherein the machine has a processor and the predetermined optimal manner has a certain number of processor operations.
  • Wherein the machine has memory and the predetermined optimal way has a certain amount of memory required to store the machine code.
  • Where the preference function comprises a set of instructions previously identified as concise source code.
  • Wherein the step of determining equivalence further comprises:
    • generating a set of equivalence classes for the candidate function from the candidate function, the equivalence classes comprising a set of equivalent functions and each member of the set having a function-to-source mapping.
  • Wherein the preference function has a most succinct element that is selected according to an abstract syntactic structure determination of the equivalence between the candidate function and the preference function.
  • Where the abstract syntactic structure comprises an abstract syntax tree (AST).
  • system comprising:
    • a processor also having a memory and a first communication interface;
    • a data store, the data store having a second accessible communication interface;
    • the processor:
      • retrieves, via the first and second communication interfaces, candidate source code having a candidate function and including a first human-readable machine instruction;
      • accesses a preferred function having a second human-readable machine instruction and previously identified as authorized source code;
      • accesses an equivalence limit threshold;
      • determining the equivalence between the candidate function and the preferred function, wherein the processor performs a plurality of processing operations comprising determining the equivalence between the candidate function and the preferred function until the equivalence constraint threshold is reached,
      • if equivalence is determined, creates and provides equivalence identifiers for the candidate function and the preferred function;
      • upon providing the indicia, converting the candidate source code, also replacing the candidate function with the preferred function; and
      • outputs the transformed candidate source codes via the first communication interface.
  • A non-transitory computer-readable medium bearing instructions that, when executed by a computer, cause the computer to:
    • retrieve from a data store candidate source code having a candidate function and including a first human-readable machine instruction;
    • access from the data store a preferred function comprising a second human-readable machine instruction previously identified as authorized source code;
    • access an equivalence limit threshold;
    • automatically determining equivalence between the candidate function and the preferred function by performing a plurality of processing operations, including determining equivalence between the candidate function and the preferred function, until the equivalence constraint threshold is reached;
    • upon determination of equivalence, the processor automatically providing equivalence indicators associated with the candidate function and the preferred function;
    • upon the presence of the indicia, automatically converting, by the processor, the candidate source code, replacing the candidate function with the preferred function; and
    • output the transformed candidate source code.

Zusätzlich zu den vorstehenden Ausführungen sind auch andere Ausführungsformen in den hier offenbaren Ausführungsformen denkbar. Zum Beispiel kann eine Funktion aufgrund von Kommentaren (z.B. interner Dokumentation) eine bevorzugte Funktion sein. Bei einer anderen Ausführungsform kann eine Funktion bevorzugt werden, wenn sie geprüft und genehmigt und daher eine bekannte Funktion ist, im Gegensatz zu einer nicht geprüften und/oder nicht genehmigten und daher unbekannten Funktion.In addition to the above, other embodiments within the embodiments disclosed herein are also contemplated. For example, a feature may be a preferred feature based on comments (e.g. internal documentation). In another embodiment, a function may be preferred if it is tested and approved and therefore a known function as opposed to an untested and/or unapproved and therefore unknown function.

In der vorangegangenen Beschreibung wurden die Verfahren zum Zwecke der Darstellung in einer bestimmten Reihenfolge beschrieben. Es sei darauf hingewiesen, dass die Verfahren in alternativen Ausführungsformen in einer anderen als der beschriebenen Reihenfolge ausgeführt werden können. Es sei auch darauf hingewiesen, dass die oben beschriebenen Verfahren von Hardwarekomponenten ausgeführt werden können oder in Sequenzen von maschinenausführbaren Anweisungen verkörpert sein können, die dazu verwendet werden können, eine Maschine, wie z. B. eine elektrische Schaltung, die als Universal- oder Spezialprozessor (GPU oder CPU) ausgeführt wird, oder Logikschaltungen, die mit den Anweisungen programmiert sind, zu veranlassen, die Verfahren auszuführen (FPGA). Die Maschine weist auf und/oder greift über eine elektrische und/oder optische Kommunikations-Schnittstelle auf Komponenten zur Speicherung von Daten und/oder Anweisungen zu. Diese maschinenausführbaren Anweisungen können auf einem oder mehreren maschinenlesbaren Datenträgern gespeichert sein, wie CD-ROMs oder anderen Arten von optischen Platten, Disketten, ROMs, RAMs, EPROMs, EEPROMs, magnetischen oder optischen Karten, Flash-Speichern oder anderen Arten von maschinenlesbaren Datenträgern, die zur Speicherung elektronischer Anweisungen geeignet sind. Alternativ können die Verfahren auch durch eine Kombination von Hardware und Software ausgeführt werden.In the foregoing description, the methods have been described in a particular order for purposes of illustration. It should be noted that, in alternative embodiments, the methods may be performed out of the order noted. It should also be noted that the methods described above may be executed by hardware components or embodied in sequences of machine-executable instructions that may be used to execute a machine, such as a computer. B. an electrical circuit executed as a general purpose or special purpose processor (GPU or CPU), or logic circuits programmed with the instructions are to cause the methods to be executed (FPGA). The machine has and/or accesses components for storing data and/or instructions via an electrical and/or optical communication interface. These machine-executable instructions may be stored on one or more machine-readable media, such as CD-ROMs or other types of optical disks, floppy disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memories, or other types of machine-readable media that suitable for storing electronic instructions. Alternatively, the methods can also be performed by a combination of hardware and software.

In der Beschreibung wurden spezifische Details angegeben, um ein gründliches Verständnis der Ausführungsformen zu ermöglichen. Einem Fachmann wird jedoch klar sein, dass die Ausführungsformen auch ohne diese spezifischen Details praktiziert werden können. Beispielsweise können Schaltungen in Blockschaltbildern dargestellt werden, um die Ausführungsformen nicht durch unnötige Details zu verschleiern. In anderen Fällen können bekannte Schaltungen, Prozesse, Algorithmen, Strukturen und Techniken ohne unnötige Details dargestellt werden, um die Ausführungsformen nicht zu verdecken.Specific details are provided in the description to provide a thorough understanding of the embodiments. However, one skilled in the art will appreciate that the embodiments may be practiced without these specific details. For example, circuits may be represented in block diagram form in order not to obscure the embodiments with unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail so as not to obscure the embodiments.

Es wird auch darauf hingewiesen, dass die Ausführungsformen als Prozess beschrieben wurden, der als Flussdiagramm, Flussdiagramm, Datenflussdiagramm, Strukturdiagramm oder Blockschaltbild dargestellt wird. Obwohl ein Flussdiagramm die Vorgänge als einen sequentiellen Prozess beschreiben kann, können viele der Vorgänge parallel oder gleichzeitig ausgeführt werden. Darüber hinaus kann die Reihenfolge der Operationen umgestellt werden. Ein Prozess ist beendet, wenn seine Operationen abgeschlossen sind, kann aber zusätzliche Schritte aufweisen, die in der Figur nicht enthalten sind. Ein Prozess kann einem Verfahren, einer Funktion, einer Prozedur, einem Unterprogramm, einem Unterprogramm usw. entsprechen. Wenn ein Prozess einer Funktion entspricht, entspricht seine Beendigung der Rückkehr der Funktion zur aufrufenden Funktion oder zur Hauptfunktion.It is also noted that the embodiments have been described as a process represented as a flowchart, flowchart, data flow diagram, structural diagram, or block diagram. Although a flowchart can describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations can be rearranged. A process is complete when its operations are complete, but may have additional steps not included in the figure. A process can correspond to a method, function, procedure, sub-program, sub-program, and so on. When a process corresponds to a function, its termination corresponds to the function's return to the calling function or to the main function.

Zusätzlich können die Systeme, Verfahren und Protokolle implementiert werden, um einen oder mehrere Spezialcomputer, einen programmierten Mikroprozessor oder Mikrocontroller und periphere integrierte Schaltungselemente, einen ASIC oder eine andere integrierte Schaltung, einen digitalen Signalprozessor, eine fest verdrahtete elektronische oder logische Schaltung wie eine Schaltung mit diskreten Elementen, eine programmierbare logische Vorrichtung wie PLD, PLA, FPGA, PAL, ein Modem, einen Sender/Empfänger, ein vergleichbares Mittel oder Ähnliches zu verbessern. Im Allgemeinen kann jedes Gerät, das in der Lage ist, einen Zustandsautomaten zu implementieren, der wiederum in der Lage ist, die hier dargestellte Methodik zu implementieren, von den verschiedenen Kommunikationsverfahren, -protokollen und -techniken gemäß der hier dargestellten Offenbarung profitieren.Additionally, the systems, methods, and protocols may be implemented using one or more special purpose computers, a programmed microprocessor or microcontroller and peripheral integrated circuit elements, an ASIC or other integrated circuit, a digital signal processor, a hardwired electronic or logic circuit such as a circuit with discrete elements, a programmable logic device such as PLD, PLA, FPGA, PAL, a modem, a transceiver, a comparable means, or the like. In general, any device capable of implementing a state machine capable of implementing the methodology presented herein may benefit from the various communication methods, protocols, and techniques consistent with the disclosure presented herein.

Beispiele für die hier beschriebenen Prozessoren können mindestens einen der folgenden Prozessoren aufweisen: Qualcomm® Snapdragon® 800 und 801, Qualcomm® Snapdragon® 610 und 615 mit 4G LTE-Integration und 64-Bit-Computing, Apple® A7-Prozessor mit 64-Bit-Architektur, Apple® M7-Bewegungs-Coprozessoren, aber nicht nur, Samsung® Exynos® Serie, die Intel® Core™ Prozessorfamilie, die Intel® Xeon® Prozessorfamilie, die Intel® Atom™ Prozessorfamilie, die Intel Itanium® Prozessorfamilie, Intel® Core® i5-4670K und i7-4770K 22nm Haswell, Intel® Core® i5-3570K 22nm Ivy Bridge, die AMD@ FX™ Prozessorfamilie, AMD® FX-4300, FX-6300 und FX-8350 32nm Vishera, AMD® Kaveri Prozessoren, Texas Instruments® Jacinto C6000™ Automotive Infotainment Prozessoren, Texas Instruments® OMAP™ automotive-grade mobile Prozessoren, ARM® Cortex™-M Prozessoren, ARM® Cortex-A und ARM926EJ-S™ Prozessoren, Broadcom® AirForce BCM4704/BCM4703 Prozessoren für drahtlose Netzwerke, die AR7100 Wireless Network Processing Unit, andere industrieäquivalente Prozessoren, und können Rechenfunktionen unter Verwendung jedes bekannten oder zukünftig entwickelten Standards, Befehlssatzes, Bibliotheken und/oder Architektur ausführen.Examples of the processors described herein may include at least one of the following processors: Qualcomm® Snapdragon® 800 and 801, Qualcomm® Snapdragon® 610 and 615 with 4G LTE integration and 64-bit computing, Apple® A7 processor with 64-bit architecture, Apple® M7 motion coprocessors but not only, Samsung® Exynos® series, the Intel® Core™ processor family, the Intel® Xeon® processor family, the Intel® Atom™ processor family, the Intel Itanium® processor family, Intel® Core® i5-4670K and i7-4770K 22nm Haswell, Intel® Core® i5-3570K 22nm Ivy Bridge, the AMD@ FX™ processor family, AMD® FX-4300, FX-6300 and FX-8350 32nm Vishera, AMD® Kaveri processors , Texas Instruments® Jacinto C6000™ automotive infotainment processors, Texas Instruments® OMAP™ automotive-grade mobile processors, ARM® Cortex™-M processors, ARM® Cortex-A and ARM926EJ-S™ processors, Broadcom® AirForce BCM4704/BCM4703 processors for wireless networks, the AR7100 Wireless Network Processing Unit their industry-equivalent processors, and may perform computational functions using any known or hereafter developed standard, instruction set, library, and/or architecture.

Darüber hinaus können die offenbaren Verfahren leicht in Software implementiert werden, indem Objekte einer objektorientierten Software-Sprache verwendet werden, die einen portablen Quellcode bereitstellen, der auf einer Vielzahl von Computer- oder Workstation-Plattformen verwendet werden kann. Alternativ dazu kann das offenbare System teilweise oder vollständig in Hardware unter Verwendung von Standard-Logikschaltungen oder VLSI-Konstruktionen implementiert werden. Ob Software oder Hardware verwendet wird, um die Systeme gemäß den Ausführungsformen zu implementieren, hängt von den Geschwindigkeits- und/oder Effizienzanforderungen des Systems, der jeweiligen Funktion und den jeweiligen Software- oder Hardwaresystemen oder Mikroprozessor- oder Mikrocomputersystemen ab, die verwendet werden. Die hier dargestellten Kommunikationssysteme, -verfahren und -protokolle können von Fachleuten, die mit der hier gegebenen Funktionsbeschreibung vertraut sind und über ein allgemeines Grundwissen in der Computer- und Telekommunikationstechnik verfügen, ohne weiteres in Hardware und/oder Software unter Verwendung bekannter oder später entwickelter Systeme oder Strukturen, Geräte und/oder Software implementiert werden.Furthermore, the disclosed methods are easily implemented in software using objects of an object-oriented software language that provide portable source code that can be used on a variety of computer or workstation platforms. Alternatively, the disclosed system can be implemented partially or entirely in hardware using standard logic circuits or VLSI designs. Whether software or hardware is used to implement the systems according to embodiments depends on the speed and/or efficiency requirements of the system, the particular function, and the particular software or hardware systems or microprocessor or microcomputer systems being used. The communication systems, methods and protocols presented here can be used by persons skilled in the art who are familiar with the functional description given here and who have a general basic knowledge of computer and telecommunications technology, can be readily implemented in hardware and/or software using known or hereafter developed systems or structures, devices and/or software.

Darüber hinaus können die offengelegten Verfahren ohne weiteres in Software und/oder Firmware implementiert werden, die auf einem Speichermedium gespeichert werden können, um die Leistung eines programmierten Allzweckcomputers in Zusammenarbeit mit einem Controller und einem Speicher, eines Spezialcomputers, eines Mikroprozessors oder dergleichen zu verbessern. In diesen Fällen können die Systeme und Verfahren als auf einem Personalcomputer eingebettetes Programm, wie z. B. ein Applet, JAVA.RTM. oder CGI-Skript, als auf einem Server oder einer Computer-Workstation befindliche Ressource, als in ein dediziertes Kommunikationssystem oder eine Systemkomponente eingebettete Routine o. Ä. implementiert werden. Das System kann auch implementiert werden, indem das System und/oder Verfahren physisch in ein Software- und/oder Hardwaresystem integriert wird, wie z.B. in die Hardware- und Softwaresysteme eines Kommunikationstransceivers.Furthermore, the disclosed methods can be readily implemented in software and/or firmware, which can be stored on a storage medium to improve the performance of a programmed general purpose computer in cooperation with a controller and memory, a special purpose computer, a microprocessor or the like. In these cases, the systems and methods may be implemented as an embedded program on a personal computer, such as an B. an applet, JAVA.RTM. or CGI script, as a resource resident on a server or computer workstation, as a routine embedded in a dedicated communications system or system component, or the like. to be implemented. The system can also be implemented by physically integrating the system and/or method with a software and/or hardware system, such as the hardware and software systems of a communications transceiver.

Verschiedene Ausführungsformen können auch oder alternativ vollständig oder teilweise in Software und/oder Firmware implementiert sein. Diese Software und/oder Firmware kann die Form von Anweisungen annehmen, die in oder auf einem nichtflüchtigen, computerlesbaren Speichermedium enthalten sind. Diese Anweisungen können dann von einem oder mehreren Prozessoren gelesen und ausgeführt werden, um die Durchführung der hier beschriebenen Vorgänge zu ermöglichen. Die Anweisungen können in jeder geeigneten Form vorliegen, wie z. B. Quellcode, kompilierter Code, interpretierter Code, ausführbarer Code, statischer Code, dynamischer Code und dergleichen. Ein solches computerlesbares Medium kann jedes greifbare, nicht-flüchtige Medium zum Speichern von Informationen in einer Form aufweisen, die von einem oder mehreren Computern gelesen werden kann, wie z.B., aber nicht beschränkt auf Festwertspeicher (ROM); Speicher mit wahlfreiem Zugriff (RAM); Magnetplattenspeichermedien; optische Speichermedien; einen Flash-Speicher usw.Various embodiments may also or alternatively be implemented in software and/or firmware in whole or in part. This software and/or firmware may take the form of instructions embodied in or on a non-transitory computer-readable storage medium. These instructions can then be read and executed by one or more processors to enable the operations described herein to be performed. The instructions can be in any suitable form, such as B. source code, compiled code, interpreted code, executable code, static code, dynamic code and the like. Such computer-readable medium may include any tangible, non-transitory medium for storing information in a form readable by one or more computers, such as, but not limited to, read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory, etc.

Hier werden beispielhafte Systeme und Verfahren zur maschinellen Bearbeitung von Anweisungen vorgestellt. Während die Ausführungsformen in Verbindung mit einer Anzahl von Ausführungsformen beschrieben wurden, ist es offensichtlich, dass viele Alternativen, Modifikationen und Variationen für diejenigen, die in den anwendbaren Künsten bewandert sind, offensichtlich sind oder sein würden. Dementsprechend soll diese Offenbarung alle derartigen Alternativen, Modifikationen, Äquivalente und Variationen umfassen, die im Rahmen des Geistes und des Umfangs dieser Offenbarung liegen.Example systems and methods for machining instructions are presented here. While the embodiments have been described in connection with a number of embodiments, it is evident that many alternatives, modifications and variations are or would be apparent to those skilled in the applicable arts. Accordingly, this disclosure is intended to embrace all such alternatives, modifications, equivalents, and variances that fall within the spirit and scope of this disclosure.

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of documents cited by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturPatent Literature Cited

  • US 2016017160 PCT [0005]US2016017160PCT[0005]
  • WO 2016/130551 [0005]WO 2016/130551 [0005]

Claims (15)

Prozessor, ausgebildet zum Ausführen eines Verfahrens, das die folgenden Schritte aufweist: Abrufen eines Kandidaten-Quellcodes mit einer Kandidaten-Funktion aus einem Datenspeicher; Zugreifen auf eine Ersatzfunktion aus dem Datenspeicher; Zugreifen auf ein Niveau der Hypothesenstärke und eine Ressourcenbegrenzung, wobei das Niveau der Hypothesenstärke durch erfolgreiches Abschließen einer Anzahl von Äquivalenzbewertungen bestimmt wird; automatisches Bestimmen der Äquivalenz zwischen der Kandidaten-Funktion und der Ersatzfunktion, wobei der Prozessor die Anzahl von Äquivalenzbewertungen ausführt, indem er Eingaben durch eine Vielzahl von Verarbeitungsoperationen laufen lässt und die entsprechenden Ausgaben vergleicht, bis entweder das Niveau der Hypothesenstärke oder die Ressourcenbegrenzung erreicht ist; wenn die Äquivalenz durch Erreichen des Niveaus der Hypothesenstärke bestimmt wird, automatisches Bereitstellen von Indizien der Äquivalenz, die der Kandidaten-Funktion und der Ersatzfunktion zugeordnet sind; wenn die Indizien bereitgestellt werden, automatisches Transformieren des Kandidaten-Quellcodes, aufweisend das Ersetzen der Kandidaten-Funktion durch die Ersatzfunktion; Ausgeben des veränderten Kandidaten-Quellcodes; und Speichern oder anderweitiges Verfügbarmachen des veränderten Quellcodes für zukünftigen Zugriff und/oder Verarbeitung.Processor configured to execute a method comprising the following steps: retrieving candidate source code having a candidate function from a data store; accessing a surrogate function from the data store; accessing a hypothesis strength level and a resource constraint, the hypothesis strength level being determined by successfully completing a number of equivalency evaluations; automatically determining the equivalence between the candidate function and the replacement function, wherein the processor performs the number of equivalence evaluations by running inputs through a plurality of processing operations and comparing the corresponding outputs until either the hypothesis strength level or the resource limit is reached; if equivalence is determined by reaching the hypothesis strength level, automatically providing indicia of equivalence associated with the candidate function and the surrogate function; if the indicia are provided, automatically transforming the candidate source code, comprising replacing the candidate function with the replacement function; outputting the modified candidate source code; and Store or otherwise make available the modified source code for future access and/or processing. Prozessor nach Anspruch 1, wobei die Ressourcenbeschränkung mindestens eine der folgenden Größen aufweist: Anzahl der Verarbeitungsvorgänge, die erforderlich sind, um das Niveau der Hypothesenstärke zu erreichen, Taktzeit, Prozessorzyklen, Verarbeitungsressourcen, die die Verarbeitungsvorgänge zusätzlich zum Prozessor ausführen, und Verarbeitungsressourcen, die die Verarbeitungsvorgänge ausschließlich des Prozessors ausführen.processor after claim 1 , where the resource constraint is at least one of the following: number of operations required to reach the hypothesis strength level, clock time, processor cycles, processing resources that perform the operations in addition to the processor, and processing resources that perform the operations exclusive to the processor carry out. Prozessor nach einem der vorhergehenden Ansprüche, wobei der Schritt der Bestimmung der Äquivalenz fehlschlägt, wenn bestimmt wird, dass sich eine Anzahl von Eingabe-/Ausgabeparametern zwischen der Kandidaten-Funktion und der Ersatzfunktion unterscheidet.The processor of any preceding claim, wherein the step of determining equivalence fails if it is determined that a number of input/output parameters differ between the candidate function and the replacement function. Prozessor nach einem der vorhergehenden Ansprüche, wobei der Schritt der Bestimmung der Äquivalenz fehlschlägt, wenn: bestimmt wird, dass sich mindestens ein Eingabe-/Ausgabeparameter zwischen der Kandidaten-Funktion und der Ersatzfunktion unterscheidet; und wobei die Differenz eine Differenz von Äquivalenzklassen aufweist.A processor as claimed in any preceding claim, wherein the step of determining equivalence fails if: determining that at least one input/output parameter differs between the candidate function and the replacement function; and where the difference has a difference of equivalence classes. Prozessor nach einem der vorhergehenden Ansprüche, wobei das Verfahren ferner die folgenden Schritte aufweist: Bereitstellen einer ersten maschinenlesbaren Übersetzung der Kandidaten-Funktion; Bereitstellen einer zweiten maschinenlesbaren Übersetzung der Ersatzfunktion; Ausführen sowohl der ersten maschinenlesbaren Übersetzung als auch der zweiten maschinenlesbaren Übersetzung mit Eingaben aus einem endlichen Satz von Eingaben; und Bestimmen der Äquivalenz, wenn sowohl die erste maschinenlesbare Übersetzung als auch die zweite maschinenlesbare Übersetzung ausgeführt werden, wobei jeweils äquivalente Werte von jeder der ersten maschinenlesbaren Übersetzung und der zweiten maschinenlesbaren Übersetzung der Kandidaten-Funktion ausgegeben werden.A processor as claimed in any preceding claim, the method further comprising the steps of: providing a first machine-readable translation of the candidate function; providing a second machine-readable translation of the replacement function; performing both the first machine-readable translation and the second machine-readable translation with inputs from a finite set of inputs; and determining the equivalence when both the first machine-readable translation and the second machine-readable translation are performed, respectively outputting equivalent values of each of the first machine-readable translation and the second machine-readable translation of the candidate function. Prozessor nach einem der vorhergehenden Ansprüche, wobei das Verfahren ferner den Schritt aufweist, eine neue Ressourcenbegrenzung anzufordern, wenn die Ressourcenbegrenzung vor dem Niveau der Hypothesenstärke erreicht worden ist.The processor of any preceding claim, wherein the method further comprises the step of requesting a new resource limit if the resource limit has been reached prior to the hypothesis strength level. Prozessor nach einem der vorhergehenden Ansprüche, wobei die Ersatzfunktion einen Satz von Anweisungen aufweist, die, wenn sie in Maschinencode gewandelt werden, eine Maschine veranlassen, die Ersatzfunktion in einer zuvor bestimmbaren optimalen Weise auszuführen.The processor of any preceding claim, wherein the surrogate function comprises a set of instructions which, when converted to machine code, cause a machine to execute the surrogate function in a predeterminable optimal manner. Prozessor nach Anspruch 7, wobei die zuvor bestimmte optimale Art und Weise eine bestimmte Art und Weise aufweist, die mit mindestens einem Sicherheitsziel übereinstimmt.processor after claim 7 , wherein the previously determined optimal manner comprises a determined manner that conforms to at least one security objective. Prozessor nach Anspruch 7, wobei die zuvor bestimmte optimale Art und Weise eine bestimmte Anzahl von Prozessoroperationen des Prozessors aufweist.processor after claim 7 , where the previously determined optimal way has a certain number of processor operations of the processor. Prozessor nach Anspruch 7, wobei die Maschine einen Speicher aufweist und die zuvor bestimmte optimale Art und Weise eine bestimmte Größe des Speichers aufweist, die zum Speichern des Maschinencodes erforderlich ist.processor after claim 7 , wherein the machine has a memory and the predetermined optimal way has a certain amount of memory required to store the machine code. Prozessor nach einem der vorhergehenden Ansprüche, wobei die Ersatzfunktion einen Satz von Anweisungen aufweist, die zuvor als prägnanter Quellcode bestimmt wurden.A processor as claimed in any preceding claim, wherein the replacement function comprises a set of instructions previously identified as concise source code. Prozessor nach einem der vorhergehenden Ansprüche, wobei der Schritt des Verfahrens, Äquivalenz zu bestimmen, ferner aufweist: Erzeugen eines Satzes von Äquivalenzklassen für die Kandidaten-Funktion aus der Kandidaten-Funktion, wobei die Äquivalenzklassen eine Gruppe von äquivalenten Funktionen aufweisen, wobei jedes Element der Gruppe eine Funktion-zu-Quelle-Abbildung aufweist.The processor of any preceding claim, wherein the step of the method of determining equivalency further comprises: generating from the candidate function a set of equivalence classes for the candidate function, the equivalence classes comprising a set of equivalent functions, each member of the set comprising a function-to-source mapping. System, aufweisend: einen Prozessor nach einem der vorhergehenden Ansprüche, wobei der Prozessor ferner einen Speicher und eine erste Kommunikations-Schnittstelle aufweist; und einen Datenspeicher, wobei der Datenspeicher eine zweite Kommunikations-Schnittstelle aufweist.system comprising: a processor according to any one of the preceding claims, the processor further comprising a memory and a first communication interface; and a data memory, the data memory having a second communication interface. Nicht-flüchtiges computerlesbares Medium mit Anweisungen darauf, die, wenn sie von dem Prozessor ausgeführt werden, den Prozessor veranlassen, die Schritte des in einem der Ansprüche 1 bis 12 genannten Verfahrens auszuführen.A non-transitory computer-readable medium having instructions thereon that, when executed by the processor, cause the processor to perform the steps of any of Claims 1 until 12 carry out the mentioned procedure. Maschine, die einen Prozessor nach einem der Ansprüche 1 bis 12 aufweist.Machine that has a processor according to one of the Claims 1 until 12 having.
DE202017007536.9U 2017-12-05 2017-12-05 Inductive equivalence in instruction machining Active DE202017007536U1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE202017007536.9U DE202017007536U1 (en) 2017-12-05 2017-12-05 Inductive equivalence in instruction machining

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE202017007536.9U DE202017007536U1 (en) 2017-12-05 2017-12-05 Inductive equivalence in instruction machining

Publications (1)

Publication Number Publication Date
DE202017007536U1 true DE202017007536U1 (en) 2022-07-05

Family

ID=82493668

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202017007536.9U Active DE202017007536U1 (en) 2017-12-05 2017-12-05 Inductive equivalence in instruction machining

Country Status (1)

Country Link
DE (1) DE202017007536U1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016130551A1 (en) 2015-02-09 2016-08-18 Phase Change Software Llc Machine-based instruction editing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016130551A1 (en) 2015-02-09 2016-08-18 Phase Change Software Llc Machine-based instruction editing

Similar Documents

Publication Publication Date Title
DE60031370T2 (en) TOKEN-BASED LINKAGE
DE60017457T2 (en) PROCEDURE FOR ISOLATING AN ERROR IN ERROR MESSAGES
DE112018002984T5 (en) Conformity-conscious runtime generation based on application patterns and risk assessment
DE60021066T2 (en) Checking a software package
DE112010003979T5 (en) System and method for the static recognition and categorization of information flow downgraders
DE112012005051T5 (en) Fix delivery system
DE102005042126A1 (en) Method and apparatus for automatically evaluating the quality of a software source code
DE102020115253A1 (en) METHOD AND EQUIPMENT FOR RUNNING AN APPLET
EP2137615B1 (en) Method for the computer-aided determination of the dependencies of a plurality of modules of a technical system, especially of a software system
DE112018004660T5 (en) USE COMMENTS TO PROVIDE OPTIMIZATION
DE112019005729T5 (en) DETECTING SECURITY RISKS ASSOCIATED WITH A SOFTWARE COMPONENT
DE112017004962T5 (en) Control flow integrity
DE602006000728T2 (en) Support of dynamically typed languages in typed assembly languages
DE112011103406T5 (en) Management of unmodified objects
DE102021124264A1 (en) Generation of synthetic system errors
DE112018002954T5 (en) PROVIDING A CONFIGURATION-RELATED WORKFLOW
DE112010004808T5 (en) Simultaneous execution of request processing and analysis of requirements
DE10333088A1 (en) Method for providing access to the internal signals of a dynamic system model from outside regarding the modeling environment
DE202016008006U1 (en) Generation of integration tests on a small scale
EP3134842B1 (en) Computing device and method for detecting attacks on a technical system based on events of an event sequence
DE102012210482A1 (en) Method and system for migrating business process instances
DE202017007536U1 (en) Inductive equivalence in instruction machining
EP1745375A1 (en) Method for determining deadlocks in secondary processes
EP3705993B1 (en) System and method for locating and identifying computing nodes in a network
DE202012013449U1 (en) System for inline insertion of script dependencies

Legal Events

Date Code Title Description
R150 Utility model maintained after payment of first maintenance fee after three years
R207 Utility model specification
R151 Utility model maintained after payment of second maintenance fee after six years