Ricerca
Funzionalmente equivalenti o no? Esecuzione surrogata differenziale basata su grafi per l’equivalenza del codice
Determinare se due programmi sono funzionalmente equivalenti è fondamentale per la modernizzazione del codice, la convalida delle patch, il refactoring e la valutazione della generazione di codice. Tu

- arXiv
- 2610.04371
- Pubblicato
- 2026-10-03
- Autori
- Amit Kachroo, Like Hui, Haitao Mao, Yuhao Zhang, Nguyen Vo
Abstract degli autori
Determinare se due programmi sono funzionalmente equivalenti è fondamentale per la modernizzazione del codice, la convalida delle patch, il refactoring e la valutazione della generazione di codice. Tuttavia, i segnali abituali sono incompleti: i test coprono solo un numero finito di input, la similarità testuale confonde l’implementazione con il comportamento e i giudizi non vincolati degli LLM sono difficili da verificare. L’esecuzione diretta è spesso impossibile quando un programma dipende da un ambiente obsoleto, soggetto a licenza, non disponibile o non sicuro. Presentiamo FEAgent, un agente selettivo per la valutazione dell’equivalenza che combina evidenze ricavate da grafi di programma tipizzati con l’esecuzione surrogata differenziale. FEAgent allinea innanzitutto le interfacce pubbliche e gli elementi del grafo rilevanti per il comportamento, quindi formula query circoscritte sulle relazioni di flusso delle chiamate, flusso di controllo, flusso dei dati, tipo, importazione ed effetto. In seguito, un agente generatore consapevole dei rami propone input discriminanti e due surrogati LLM in cieco prevedono in modo indipendente gli osservabili di sorgente e destinazione. Ogni affermazione e divergenza prevista viene registrata in un registro delle evidenze. Un riconciliatore deterministico restituisce quindi EQUIVALENT, INEQUIVALENT o UNCLEAR, anziché imporre un verdetto quando alcuni percorsi non sono coperti o le evidenze sono in conflitto. Valutiamo FEAgent sull’equivalenza a livello di funzione e sulle patch per bug a livello di repository, dove l’oracolo esistente è un’etichetta del benchmark o una suite di test superata. Ogni disaccordo con tale oracolo viene esaminato tramite esecuzione diretta, rivelando errori nelle etichette del benchmark e divergenze comportamentali sfuggite alle valutazioni basate soltanto su test unitari. Su EquiBench, l’esecuzione conferma i disaccordi di FEAgent con le etichette pubblicate in 216 dei 1.200 casi valutati (18,0%); su SWE-bench Verified, 94 delle 331 patch degli agenti che superano i test (28,4%) divergono dalla patch di riferimento. FEAgent funge così da livello di audit tra i test e la verifica formale, mantenendo le sue evidenze verificabili e l’incertezza esplicita, senza pretendere di dimostrare l’equivalenza.
Il riassunto di questo paper è disponibile solo in inglese: leggilo nella pagina inglese.
Leggi il paper originale su arXiv