UnitRA

Trait UnitRA 

Source
pub trait UnitRA: RA {
    // Required methods
    fn unit() -> Self;
    fn core_is_total(self);

    // Provided methods
    fn incl_refl() { ... }
    fn unit_core() { ... }
    fn core_total(self) -> Self { ... }
}

Required Methods§

Source

fn unit() -> Self

ensures

forall<x: Self> #[trigger(x.op(result))] x.op(result) == Some(x)

Source

fn core_is_total(self)

ensures

self.core() == Some(self.core_total())

Provided Methods§

Source

fn incl_refl()

(law, sealed)

ensures

forall<x: Self> x.incl(x)

Source

fn unit_core()

(law, sealed)

ensures

Self::unit().core_total() == Self::unit()

Source

fn core_total(self) -> Self

(open)

let _ = self.core_is_maximal_idemp(Self::unit());
self.core().unwrap_logic()

ensures

result.op(result) == Some(result)

ensures

result.op(self) == Some(self)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T: RA> UnitRA for Option<T>

Source§

fn unit() -> Self

(open)

None

ensures

forall<x: Self> #[trigger(x.op(result))] x.op(result) == Some(x)

Source§

fn core_total(self) -> Self

(open)

match self {
    None => None,
    Some(x) => x.core(),
}

ensures

result.op(result) == Some(result)

ensures

result.op(self) == Some(self)

Source§

fn core_is_total(self)

ensures

self.core() == Some(self.core_total())

Source§

impl<T: UnitRA, U: UnitRA> UnitRA for (T, U)

Source§

fn unit() -> Self

ensures

forall<x: Self> #[trigger(x.op(result))] x.op(result) == Some(x)

Source§

fn core_total(self) -> Self

(open)

(self.0.core_total(), self.1.core_total())

ensures

result.op(result) == Some(result)

ensures

result.op(self) == Some(self)

Source§

fn core_is_total(self)

ensures

self.core() == Some(self.core_total())

Implementors§

Source§

impl<K, V: RA> UnitRA for FMap<K, V>

Source§

impl<R: ViewRel> UnitRA for View<R>