Skip to content

Verification results of #[proof] and #[proof_for_contract] are different #4021

Open
@zjp-CN

Description

@zjp-CN

I'm writing some basic tests, and find verification results of standard proof and proof_for_contract are different :

#[kani::requires(a > 0)]
fn contract(a: u8) {}

#[kani::proof] // VERIFICATION:- FAILED
fn proof() {
    contract(0);
}

#[kani::proof_for_contract(contract)] // VERIFICATION:- SUCCESSFUL
fn proof() {
    contract(0);
}

using the following command line invocation:

kani file.rs # for #[kani::proof] - VERIFICATION:- FAILED
kani -Zfunction-contracts file.rs # for #[kani::proof_for_contract(contract)] - VERIFICATION:- SUCCESSFUL

with Kani version: c87c7d0

I expected to see this happen: #[kani::proof_for_contract(contract)] proof fails as #[kani::proof] proof does

Instead, this happened: #[kani::proof_for_contract(contract)] proof succeeds


Maybe relate to #3864 and #3905

Metadata

Metadata

Assignees

No one assigned

    Labels

    T-UserTag user issues / requestsZ-ContractsIssue related to code contracts[C] Feature / EnhancementA new feature request or enhancement to an existing feature.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions