uor_addr/composition/f4/
pipeline.rs1#![cfg(feature = "alloc")]
4
5use crate::composition::canonicalize::{canonicalize_f4, check_axis, decode_operand};
6use crate::composition::f4::model::{
7 CompositionModelF4Blake3, CompositionModelF4Keccak256, CompositionModelF4Sha256,
8 CompositionModelF4Sha3_256, CompositionModelF4Sha512,
9};
10use crate::composition::f4::value::F4Carrier;
11use crate::composition::CompositionFailure;
12use crate::label::KappaLabel;
13use crate::outcome::AddressOutcome;
14use prism::pipeline::PrismModel;
15
16pub fn compose_f4_quotient(
26 operand: &KappaLabel<71>,
27) -> Result<AddressOutcome<71>, CompositionFailure> {
28 let (axis, _) = decode_operand(operand)?;
29 check_axis(axis, "sha256")?;
30 let canon = canonicalize_f4(operand)?;
31 let grounded = CompositionModelF4Sha256::forward(F4Carrier::new(&canon))
32 .map_err(|_| CompositionFailure::PipelineFailure)?;
33 AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| CompositionFailure::PipelineFailure)
34}
35pub fn compose_f4_quotient_blake3(
45 operand: &KappaLabel<71>,
46) -> Result<AddressOutcome<71>, CompositionFailure> {
47 let (axis, _) = decode_operand(operand)?;
48 check_axis(axis, "blake3")?;
49 let canon = canonicalize_f4(operand)?;
50 let grounded = CompositionModelF4Blake3::forward(F4Carrier::new(&canon))
51 .map_err(|_| CompositionFailure::PipelineFailure)?;
52 AddressOutcome::<71>::from_grounded(&grounded).map_err(|_| CompositionFailure::PipelineFailure)
53}
54pub fn compose_f4_quotient_sha3_256(
64 operand: &KappaLabel<73>,
65) -> Result<AddressOutcome<73>, CompositionFailure> {
66 let (axis, _) = decode_operand(operand)?;
67 check_axis(axis, "sha3-256")?;
68 let canon = canonicalize_f4(operand)?;
69 let grounded = CompositionModelF4Sha3_256::forward(F4Carrier::new(&canon))
70 .map_err(|_| CompositionFailure::PipelineFailure)?;
71 AddressOutcome::<73>::from_grounded(&grounded).map_err(|_| CompositionFailure::PipelineFailure)
72}
73pub fn compose_f4_quotient_keccak256(
83 operand: &KappaLabel<74>,
84) -> Result<AddressOutcome<74>, CompositionFailure> {
85 let (axis, _) = decode_operand(operand)?;
86 check_axis(axis, "keccak256")?;
87 let canon = canonicalize_f4(operand)?;
88 let grounded = CompositionModelF4Keccak256::forward(F4Carrier::new(&canon))
89 .map_err(|_| CompositionFailure::PipelineFailure)?;
90 AddressOutcome::<74>::from_grounded(&grounded).map_err(|_| CompositionFailure::PipelineFailure)
91}
92pub fn compose_f4_quotient_sha512(
102 operand: &KappaLabel<135>,
103) -> Result<AddressOutcome<135, 64>, CompositionFailure> {
104 let (axis, _) = decode_operand(operand)?;
105 check_axis(axis, "sha512")?;
106 let canon = canonicalize_f4(operand)?;
107 let grounded = CompositionModelF4Sha512::forward(F4Carrier::new(&canon))
108 .map_err(|_| CompositionFailure::PipelineFailure)?;
109 AddressOutcome::<135, 64>::from_grounded(&grounded)
110 .map_err(|_| CompositionFailure::PipelineFailure)
111}