pub mod exec;
pub mod proof;
pub mod spec;
use vstd::prelude::*;
verus! {
#[derive(Copy)]
pub struct Preceded<A, AVal, B, const CHECK: bool = false> {
pub a: A,
pub b: B,
pub a_val: AVal,
}
impl<A: Clone, AVal: Clone, B: Clone, const CHECK: bool> Clone for Preceded<A, AVal, B, CHECK> {
fn clone(&self) -> (cloned: Self)
ensures
call_ensures(A::clone, (&self.a,), cloned.a),
call_ensures(B::clone, (&self.b,), cloned.b),
call_ensures(AVal::clone, (&self.a_val,), cloned.a_val),
{
Preceded { a: self.a.clone(), b: self.b.clone(), a_val: self.a_val.clone() }
}
}
}