A system and method for increasing the speed of operation of a theorem prover relating to program verification using adaptive pattern matching technique is disclosed. Source code in a specific programming language is converted to one or more formulae, each representing a specific reformulation of the source code that facilitates program verification. Each formula derived from the source code is converted into an E-graph which is a particular type of a directed acyclic graph having leaf nodes and interior nodes. Some of the nodes of an E-graph may be related to other nodes through equivalence relationships. Equivalence relationships between a group of nodes is stored in a data structure called an equivalence class. A collection of rules defining the grammar of the programming language is stored in an axiom database. Rules and conjectures can dynamically be added to the axiom database. Each rule or conjecture to be tested is converted into a pattern. The task of proving a rule or verifying some or all of the source code is transformed to the task of matching a pattern associated with the rule against the nodes of the E-graph. After each round of matching, the E-graph is modified by the addition of new equivalence relationships.

Un sistema e un metodo per l'aumento della velocità del funzionamento di un prover di teorema concernente la verifica di programma che usando la tecnica adattabile di corrispondenza di modello è rilevato. Il codice sorgente in un linguaggio di programmazione specifico è convertito in una o più formule, ciascuno che rappresenta una nuova formulazione specifica del codice sorgente che facilita la verifica di programma. Ogni formula ha derivato dal codice sorgente è convertita in E-grafico che è un tipo particolare di grafico aciclico diretto che ha i nodi del foglio e nodi interni. Alcuni dei nodi di un E-grafico possono essere collegati con altri nodi con i rapporti equivalenti. I rapporti equivalenti fra un gruppo dei nodi è immagazzinato in una struttura di dati denominata un codice categoria equivalente. Una collezione di regole che definiscono la grammatica del linguaggio di programmazione è immagazzinata in una base di dati di assioma. Le regole e le congetture possono essere aggiunte dinamicamente alla base di dati di assioma. Ogni regola o congettura da esaminare è convertita in modello. L'operazione di dimostrare una regola o di verificazione dell'alcuno o tutto il codice sorgente è trasformata all'operazione di abbinare un modello connesso con la regola contro i nodi del E-grafico. Dopo ogni tondo della corrispondenza, il E-grafico è modificato tramite l'aggiunta di nuovi rapporti equivalenti.

 
Web www.patentalert.com

< (none)

< System and method for rendering content received via the internet and world wide web via delegation of rendering processes

> Method for optimizing array bounds checks in programs

> (none)

~ 00025