Egendomsbaserad slumpmässig testning (PBRT) används i stor utsträckning i de funktionella programmerings- och verifieringsgrupperna. För att testa enkla egenskaper kan PBRT-verktyg som QuickCheck automatiskt generera slumpmässiga ingångar av en viss typ. Men för mer komplexa egenskaper, kräver effektiv testning ofta generatorer för slumpmässiga ingångar som tillhör en viss typ och uppfyller vissa logiska villkor. QuickCheck ger ett bibliotek av kombinatorer för att bygga sådana generatorer för hand, men detta kan vara tråkiga för enkla villkor och fel benägna för mer komplexa. Lyckligtvis kan processen ofta automatiseras. Den mest framträdande metoden, förträngning, fungerar genom att traversera strukturen av tillståndet, lazily ögonblickliga delar av datastrukturen som begränsningar som involverar dem uppfylls. Vi visar hur man använder idéer från förträngning för att sammanställa en stor underklass av Coqs induktiva relationer till effektiva generatorer, undvika tolkning av tidigare implementationer. Ännu viktigare är att samma kompileringsteknik gör det möjligt för oss att producera bevisbegrepp som intygar att varje härledd generator är bra — d.v.s. ljud och komplett med avseende på det induktiva förhållande den härleddes från. Vi implementerar vår algoritm som en förlängning av QuickChick, ett befintligt verktyg för fastighetsbaserade tester i Coq. Vi utvärderar vår metod genom att automatiskt härleda bra generatorer för majoriteten av specifikationerna i Software Foundations, en formaliserad lärobok om programmering språk stiftelser.
Nyligen, Lampropoulos et al. föreslå ett ramverk för att automatiskt härleda slumpmässiga generatorer för en stor underklass av Coqs induktivt definierade relationer REF.
Generating good generators for inductive relations
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}