-
Notifications
You must be signed in to change notification settings - Fork 144
Tracking Issue: Automatic Harnesses #3832
Copy link
Copy link
Labels
T-TrackingIssueIssues used to track a large amount of work related to a featureIssues used to track a large amount of work related to a featureZ-AutoharnessIssue related to autoharness subcommandIssue related to autoharness subcommand[C] Feature / EnhancementA new feature request or enhancement to an existing feature.A new feature request or enhancement to an existing feature.
Metadata
Metadata
Assignees
Labels
T-TrackingIssueIssues used to track a large amount of work related to a featureIssues used to track a large amount of work related to a featureZ-AutoharnessIssue related to autoharness subcommandIssue related to autoharness subcommand[C] Feature / EnhancementA new feature request or enhancement to an existing feature.A new feature request or enhancement to an existing feature.
Requested feature: Make proof harnesses optional, when possible
Use case: There are plenty of "boilerplate harnesses" that look something like this:
There's nothing surprising in this harness--the user just creates arbitrary variables for each argument of the function they're verifying, and then calls the function. Ideally, the user shouldn't have to write this harness at all; Kani should detect that each of the arguments implements
Arbitrary, then attempt to verify it automatically.Tasks
(We define "standard harness" as a
#[kani::proof]harness and a "contract harness" as a#[kani::proof_for_contract]harness).I'll break these tasks down into subtasks as I start working, but a road map for now:
Arbitrary(either provided by Kani or implemented by the user)