Diciamo che ho due funzioni pitone f
e g
:È possibile sapere se due funzioni Python sono funzionalmente equivalenti?
def f(x):
y = x**2 + 1
return y
def g(x):
a = x**2
b = a + 1
return b
Queste due funzioni sono chiaramente funzionalmente equivalente (entrambi tornare x**2 + 1
).
mia definizione di funzionalmente equivalente è la seguente:
Se due funzioni f
e g
produce sempre la stessa uscita dato lo stesso input, quindi f
e g
sono funzionalmente equivalenti.
Inoltre, diciamo che nessuna variabile globale è coinvolta in f
e g
.
È possibile determinare automaticamente (senza ispezione umana) se le funzioni python f
e g
sono funzionalmente equivalenti?
Immagino che si possa verificare se sono compilati nello stesso bytecode, ma che potrebbero produrre falsi negativi. – TigerhawkT3
All'interno di un margine di errore, basta provare un gruppo di input casuali. –
@ TigerhawkT3 sapete se 'f' e' g' dell'esempio precedente saranno compilati nello stesso bytecode? – applecider