pub mod exec;
pub mod proof;
pub mod spec;
use vstd::prelude::*;
verus! {
#[derive(Copy)]
pub struct Terminated<A, B, BVal, const CHECK: bool = false> {
pub a: A,
pub b: B,
pub b_val: BVal,
}
impl<A: Clone, B: Clone, BVal: Clone, const CHECK: bool> Clone for Terminated<A, B, BVal, 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(BVal::clone, (&self.b_val,), cloned.b_val),
{
Terminated { a: self.a.clone(), b: self.b.clone(), b_val: self.b_val.clone() }
}
}
}