Abstract Function uncurrying är en viktig optimering för ett effektivt utförande av funktionella programmeringsspråk. Denna optimering ersätter kurviga funktioner med icke kurviga multi-argument funktioner, samtidigt som förmågan att utvärdera partiella applikationer bevaras. First-order uncurrying (där kurviga funktioner är optimerade endast i de statiska omfattningarna av sina definitioner) är väl förstådd och implementeras av många kompilatorer, men dess utvidgning till högre-order funktioner (där avcurrying också kan utföras på parametrar och resultat av högre-order funktioner) är utmanande. Denna artikel utvecklar ett generiskt ramverk som uttrycker högre-order uncurrying optimeringar som typ-direkt införande av tvång, och bevisa dess korrekthet. Beviset använder steg-indexerade logiska relationer och var helt mekaniserad med hjälp av Coq bevis assistent.
REF verifierar högre ordning ocurrying med hjälp av en steg-indexerad logisk relation.
A verified framework for higher-order uncurrying optimizations
{'venue': 'HIGHER-ORDER AND SYMBOLIC COMPUTATION', 'journal': None, 'mag_field_of_study': ['Computer Science']}