pub struct ChoreographyCertificate {
pub schedule_digest: u64,
pub proof: GraphProof,
pub balances: Vec<BufferBalance>,
pub sem_counts: Vec<(SemId, u64, u64)>,
pub compute: Vec<(StageId, ComputeStageCert)>,
pub numerics: NumericsClaim,
}Fields§
§schedule_digest: u64§proof: GraphProof§balances: Vec<BufferBalance>§sem_counts: Vec<(SemId, u64, u64)>(semaphore, increments or flag sets, wait target).
compute: Vec<(StageId, ComputeStageCert)>§numerics: NumericsClaimImplementations§
Source§impl ChoreographyCertificate
impl ChoreographyCertificate
Sourcepub fn recheck(&self, p: &SpatialProgram) -> bool
pub fn recheck(&self, p: &SpatialProgram) -> bool
Independent re-check: the digest binds the certificate to p; the graph is rebuilt from p’s schedule
and compared; the witness is verified against the token-free arcs; balances and semaphore counts are
recomputed; every SAT certificate is re-run through the PR/RUP checker.
Sourcepub fn with_witness_tampered(&self) -> Self
pub fn with_witness_tampered(&self) -> Self
A tampered copy: the liveness witness permuted so it is no longer a topological order — must fail
recheck. This is the probe that proves the witness is load-bearing rather than decorative, so it
has to bite in BOTH proof forms.
Whole form: swap one real producer/consumer pair, the most surgical break there is. Per-section form: reverse the first section long enough to have an arc — the graph is not carried there, so a pair cannot be picked out, and reversing violates EVERY token-free arc at once instead of one.
Trait Implementations§
Source§impl Clone for ChoreographyCertificate
impl Clone for ChoreographyCertificate
Source§fn clone(&self) -> ChoreographyCertificate
fn clone(&self) -> ChoreographyCertificate
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ChoreographyCertificate
impl Debug for ChoreographyCertificate
Source§impl PartialEq for ChoreographyCertificate
impl PartialEq for ChoreographyCertificate
impl StructuralPartialEq for ChoreographyCertificate
Auto Trait Implementations§
impl Freeze for ChoreographyCertificate
impl RefUnwindSafe for ChoreographyCertificate
impl Send for ChoreographyCertificate
impl Sync for ChoreographyCertificate
impl Unpin for ChoreographyCertificate
impl UnsafeUnpin for ChoreographyCertificate
impl UnwindSafe for ChoreographyCertificate
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.