#![cfg_attr(not(verus_verify_core), no_std)]
#![allow(internal_features)]
#![cfg_attr(
verus_keep_ghost,
feature(rustc_attrs),
feature(negative_impls),
feature(unboxed_closures),
feature(fn_traits),
feature(tuple_trait)
)]
#![cfg_attr(
// register_tool is only allowed at crate root. Disable this trait during `test_is_core`:
all(verus_keep_ghost, not(verus_verify_core)),
feature(register_tool),
register_tool(verus),
register_tool(verifier)
)]
#[cfg(verus_keep_ghost)]
use core::future::Future;
use core::marker::PhantomData;
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::admit"]
#[verifier::proof]
pub fn admit() {
unimplemented!();
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::no_method_body"]
#[verifier::proof]
pub fn no_method_body() -> ! {
unimplemented!()
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::requires"]
#[verifier::proof]
pub fn requires(_a: A) {
unimplemented!();
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::ensures"]
#[verifier::proof]
pub fn ensures(_a: A) {
unimplemented!();
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::atomic_spec"]
#[verifier::proof]
pub fn atomic_spec(_a: A) {
unimplemented!();
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::returns"]
#[verifier::proof]
pub fn returns(_a: A) {
unimplemented!();
}
// Can only appear at beginning of spec function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::recommends"]
#[verifier::proof]
pub fn recommends(_a: A) {
unimplemented!();
}
// Can only appear at beginning of loop body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::invariant_except_break"]
#[verifier::proof]
pub fn invariant_except_break(_a: A) {
unimplemented!();
}
// Can only appear at beginning of loop body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::invariant"]
#[verifier::proof]
pub fn invariant(_a: A) {
unimplemented!();
}
// Can only appear at beginning of loop body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::atomic_call_loop"]
#[verifier::proof]
pub fn atomic_call_loop() {
unimplemented!();
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::decreases"]
#[verifier::proof]
pub fn decreases(_a: A) {
unimplemented!();
}
// Can only appear at beginning of function body
// decrease_when is automatically added to list of recommends
#[cfg(verus_keep_ghost)]
#[verifier::proof]
#[rustc_diagnostic_item = "verus::verus_builtin::decreases_when"]
pub fn decreases_when(_b: bool) {
unimplemented!();
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::decreases_by"]
#[verifier::proof]
pub fn decreases_by(_f: F) {
unimplemented!();
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::recommends_by"]
#[verifier::proof]
pub fn recommends_by(_f: F) {
unimplemented!();
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::extra_dependency"]
#[verifier::proof]
pub fn extra_dependency(_f: F) {
unimplemented!();
}
// Can only appear at beginning of function body
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::opens_invariant_mask"]
#[verifier::proof]
pub fn opens_invariant_mask(_inv_mask: ()) {
unimplemented!();
}
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::no_unwind"]
#[verifier::proof]
pub fn no_unwind() {
unimplemented!();
}
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::no_unwind_when"]
#[verifier::proof]
pub fn no_unwind_when(_b: bool) {
unimplemented!();
}
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::reveal_hide"]
#[verifier::proof]
pub const fn reveal_hide_(_f: fn(), _n: u32) {}
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::reveal_hide_internal_path"]
pub fn reveal_hide_internal_path_(_x: A) {
unimplemented!();
}
/// Mark an ensures clause in a trait as applying just to the default implementation,
/// not the trait declaration in general
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::default_ensures"]
#[verifier::spec]
pub fn default_ensures(_b: bool) -> bool {
unimplemented!();
}
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::imply"]
#[verifier::spec]
pub fn imply(_b1: bool, _b2: bool) -> bool {
unimplemented!();
}
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::forall"]
#[verifier::spec]
pub fn forall(_a: A) -> bool {
unimplemented!();
}
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::exists"]
#[verifier::spec]
pub fn exists(_a: A) -> bool {
unimplemented!();
}
// choose(|x: t| P(x))
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::choose"]
#[verifier::spec]
pub fn choose bool>(_f: F) -> A {
unimplemented!()
}
// let (x1, ..., xn): (t1, ..., tn) = choose_tuple(|x1: t1, ..., xn: tn| P(x1, ..., xn));
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::choose_tuple"]
#[verifier::spec]
pub fn choose_tuple(_f: F) -> A {
unimplemented!()
}
// used by with_triggers! macro
// example: forall with three triggers [f(x), g(y)], [h(x, y)], [m(y, x)]:
// forall( |x: int, y: int| with_triggers( ( (f(x), g(y)), (h(x, y),), (m(y, x),) ) , body ) )
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::with_triggers"]
#[verifier::spec]
pub fn with_triggers(_triggers_tuples: A, body: B) -> B {
body
}
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::constrain_type"]
#[verifier::spec]
pub fn constrain_type(_x: T, _y: T) -> bool {
true
}
#[cfg(verus_keep_ghost)]
#[rustc_diagnostic_item = "verus::verus_builtin::get_future_output_type"]
#[verifier::spec]
pub fn get_future_output_type(_x: impl Future