uor_addr/composition/f4/
verbs.rs1#![cfg(feature = "alloc")]
4
5use crate::composition::f4::value::F4Carrier;
6use crate::label::{
7 CompositionLabelF4Blake3, CompositionLabelF4Keccak256, CompositionLabelF4Sha256,
8 CompositionLabelF4Sha3_256, CompositionLabelF4Sha512,
9};
10
11addr_verbs! {
12 input: F4Carrier<'_>,
13 { shape: CompositionLabelF4Sha256, verb: compose_f4_inference },
14 { shape: CompositionLabelF4Blake3, verb: compose_f4_inference_blake3 },
15 { shape: CompositionLabelF4Sha3_256, verb: compose_f4_inference_sha3_256 },
16 { shape: CompositionLabelF4Keccak256, verb: compose_f4_inference_keccak256 },
17 { shape: CompositionLabelF4Sha512, verb: compose_f4_inference_sha512 },
18}
19
20#[cfg(test)]
21mod tests {
22 use super::*;
23 use prism::operation::Term;
24
25 #[test]
26 fn verb_term_arena_is_emitted_and_nonempty() {
27 let arena = compose_f4_inference_term_arena::<{ crate::ADDR_INLINE_BYTES }>();
28 assert!(!arena.is_empty());
29 }
30
31 #[test]
32 fn verb_arena_contains_no_sigma_residuals() {
33 let arena = compose_f4_inference_term_arena::<{ crate::ADDR_INLINE_BYTES }>();
34 assert!(!arena.iter().any(|t| matches!(t, Term::FirstAdmit { .. })));
35 assert!(!arena
36 .iter()
37 .any(|t| matches!(t, Term::AxisInvocation { .. })));
38 assert!(arena.iter().any(|t| matches!(t, Term::Nerve { .. })));
39 assert!(arena.iter().any(|t| matches!(t, Term::KInvariants { .. })));
40 }
41}