use uor_addr::composition::{
compose_e6_filtration, compose_e7_augmentation, compose_e8_embedding, compose_f4_quotient,
compose_g2_product,
};
fn main() {
println!("uor-addr — κ-label composition (ADR-061)\n");
let a = uor_addr::json::address(br#"{"role":"left"}"#)
.expect("valid json")
.address;
let b = uor_addr::json::address(br#"{"role":"right"}"#)
.expect("valid json")
.address;
println!(" operand a: {a}");
println!(" operand b: {b}\n");
let ab = compose_g2_product(&a, &b).expect("g2(a,b)").address;
let ba = compose_g2_product(&b, &a).expect("g2(b,a)").address;
println!(" g2(a, b): {ab}");
assert_eq!(ab, ba, "CS-G2 is commutative");
println!(" g2(b, a): {ba} (== g2(a,b): commutativity holds)\n");
let f4 = compose_f4_quotient(&a).expect("f4(a)").address;
println!(" f4(a): {f4}");
let e6 = compose_e6_filtration(&a).expect("e6(a)").address;
println!(" e6(a): {e6}");
let e7 = compose_e7_augmentation(&a).expect("e7(a)").address;
println!(" e7(a): {e7}");
let e8 = compose_e8_embedding(&a).expect("e8(a)").address;
println!(" e8(a): {e8}");
assert_ne!(e8.as_str(), a.as_str(), "CS-E8 composed label ≠ operand");
for outcome in [
compose_g2_product(&a, &b).unwrap(),
compose_f4_quotient(&a).unwrap(),
compose_e6_filtration(&a).unwrap(),
compose_e7_augmentation(&a).unwrap(),
compose_e8_embedding(&a).unwrap(),
] {
assert!(outcome.address.starts_with("sha256:") && outcome.address.len() == 71);
assert_eq!(
outcome.witness.verify().expect("witness verifies"),
outcome.address,
"TC-05 replay round-trip"
);
}
println!("\nOK — every operation composed a verifiable κ-label and upheld its law.");
}