pub struct Obligation {
pub name: String,
pub property: &'static str,
pub declarations: Vec<Declaration>,
pub assumptions: Vec<Term>,
pub conclusion: Term,
pub origin: Origin,
pub tier: VerificationTier,
}Expand description
A backend-agnostic proof obligation.
Fields§
§name: String§property: &'static str§declarations: Vec<Declaration>§assumptions: Vec<Term>§conclusion: Term§origin: Origin§tier: VerificationTierImplementations§
Source§impl Obligation
impl Obligation
Sourcepub fn for_property<P>(
name: impl Into<String>,
origin: Origin,
tier: VerificationTier,
conclusion: Term,
) -> Obligationwhere
P: Property,
pub fn for_property<P>(
name: impl Into<String>,
origin: Origin,
tier: VerificationTier,
conclusion: Term,
) -> Obligationwhere
P: Property,
Create a new obligation for property P.
pub fn with_decl(self, name: impl Into<String>, sort: Sort) -> Obligation
pub fn with_assumption(self, term: Term) -> Obligation
Sourcepub fn associativity(
name: impl Into<String>,
origin: Origin,
carrier: Sort,
op: impl Into<String>,
) -> Obligation
pub fn associativity( name: impl Into<String>, origin: Origin, carrier: Sort, op: impl Into<String>, ) -> Obligation
Build an associativity obligation for a binary operator symbol.
pub fn associativity_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, role: &str, ) -> Obligation
Sourcepub fn commutativity(
name: impl Into<String>,
origin: Origin,
carrier: Sort,
op: impl Into<String>,
) -> Obligation
pub fn commutativity( name: impl Into<String>, origin: Origin, carrier: Sort, op: impl Into<String>, ) -> Obligation
Build a commutativity obligation for a binary operator symbol.
pub fn commutativity_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, role: &str, ) -> Obligation
pub fn additive_commutativity( name: impl Into<String>, origin: Origin, carrier: Sort, add: impl Into<String>, ) -> Obligation
pub fn additive_commutativity_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, ) -> Obligation
Sourcepub fn monoid_identity(
name: impl Into<String>,
origin: Origin,
carrier: Sort,
op: impl Into<String>,
identity: impl Into<String>,
) -> Obligation
pub fn monoid_identity( name: impl Into<String>, origin: Origin, carrier: Sort, op: impl Into<String>, identity: impl Into<String>, ) -> Obligation
Build a two-sided identity obligation for a binary operator symbol.
pub fn monoid_identity_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, ) -> Obligation
pub fn left_identity( name: impl Into<String>, origin: Origin, carrier: Sort, op: impl Into<String>, identity: impl Into<String>, ) -> Obligation
pub fn left_identity_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, op_role: &str, identity_role: &str, ) -> Obligation
pub fn right_identity( name: impl Into<String>, origin: Origin, carrier: Sort, op: impl Into<String>, identity: impl Into<String>, ) -> Obligation
pub fn right_identity_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, op_role: &str, identity_role: &str, ) -> Obligation
pub fn left_inverse( name: impl Into<String>, origin: Origin, carrier: Sort, op: impl Into<String>, inverse: impl Into<String>, identity: impl Into<String>, ) -> Obligation
pub fn left_inverse_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, ) -> Obligation
pub fn right_inverse( name: impl Into<String>, origin: Origin, carrier: Sort, op: impl Into<String>, inverse: impl Into<String>, identity: impl Into<String>, ) -> Obligation
pub fn right_inverse_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, ) -> Obligation
pub fn left_distributivity( name: impl Into<String>, origin: Origin, carrier: Sort, add: impl Into<String>, mul: impl Into<String>, ) -> Obligation
pub fn left_distributivity_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, ) -> Obligation
pub fn right_distributivity( name: impl Into<String>, origin: Origin, carrier: Sort, add: impl Into<String>, mul: impl Into<String>, ) -> Obligation
pub fn right_distributivity_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, ) -> Obligation
pub fn idempotency( name: impl Into<String>, origin: Origin, carrier: Sort, op: impl Into<String>, ) -> Obligation
pub fn idempotency_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, role: &str, ) -> Obligation
pub fn absorption( name: impl Into<String>, origin: Origin, carrier: Sort, meet: impl Into<String>, join: impl Into<String>, ) -> Obligation
pub fn absorption_in( name: impl Into<String>, origin: Origin, signature: &AlgebraicSignature, ) -> Obligation
Trait Implementations§
Source§impl Clone for Obligation
impl Clone for Obligation
Source§fn clone(&self) -> Obligation
fn clone(&self) -> Obligation
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for Obligation
impl Debug for Obligation
impl Eq for Obligation
Source§impl From<&Obligation> for LeanTheorem
impl From<&Obligation> for LeanTheorem
Source§fn from(obligation: &Obligation) -> LeanTheorem
fn from(obligation: &Obligation) -> LeanTheorem
Converts to this type from the input type.
Source§impl PartialEq for Obligation
impl PartialEq for Obligation
Source§fn eq(&self, other: &Obligation) -> bool
fn eq(&self, other: &Obligation) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for Obligation
Auto Trait Implementations§
impl Freeze for Obligation
impl RefUnwindSafe for Obligation
impl Send for Obligation
impl Sync for Obligation
impl Unpin for Obligation
impl UnsafeUnpin for Obligation
impl UnwindSafe for Obligation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more