#![allow(
missing_docs,
clippy::doc_markdown,
clippy::struct_excessive_bools,
clippy::derive_partial_eq_without_eq
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Verification {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub basis: Option<crate::generated::dev::idiolect::defs::Basis>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub counterexample: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dependencies: Option<Vec<idiolect_records::AtUri>>,
pub kind: VerificationKind,
pub lens: crate::generated::dev::idiolect::defs::LensRef,
pub occurred_at: idiolect_records::Datetime,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub proof_artifact: Option<String>,
pub property: VerificationProperty,
pub result: VerificationResult,
pub tool: crate::generated::dev::idiolect::defs::Tool,
pub verifier: idiolect_records::Did,
}
impl crate::Record for Verification {
const NSID: &'static str = "dev.idiolect.verification";
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "$type")]
pub enum VerificationProperty {
#[serde(rename = "dev.idiolect.defs#lpRoundtrip")]
LpRoundtrip(crate::generated::dev::idiolect::defs::LpRoundtrip),
#[serde(rename = "dev.idiolect.defs#lpGenerator")]
LpGenerator(crate::generated::dev::idiolect::defs::LpGenerator),
#[serde(rename = "dev.idiolect.defs#lpTheorem")]
LpTheorem(crate::generated::dev::idiolect::defs::LpTheorem),
#[serde(rename = "dev.idiolect.defs#lpConformance")]
LpConformance(crate::generated::dev::idiolect::defs::LpConformance),
#[serde(rename = "dev.idiolect.defs#lpChecker")]
LpChecker(crate::generated::dev::idiolect::defs::LpChecker),
#[serde(rename = "dev.idiolect.defs#lpConvergence")]
LpConvergence(crate::generated::dev::idiolect::defs::LpConvergence),
#[serde(rename = "dev.idiolect.defs#lpCoercionLaw")]
LpCoercionLaw(crate::generated::dev::idiolect::defs::LpCoercionLaw),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum VerificationKind {
RoundtripTest,
PropertyTest,
FormalProof,
ConformanceTest,
StaticCheck,
ConvergencePreserving,
CoercionLaw,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum VerificationResult {
Holds,
Falsified,
Inconclusive,
}