gojo 1; let $space = carrier(); let $x = carrier(); let $y = carrier(unit_of($x)); let $u = carrier(); let $normalized = span($u,0,1); let $basis = group_on($space, span($x,0,1), span($y,0,1)); let $zero = group_on($space, at($x,0), at($y,0)); let $p0 = $zero; let $p1 = group_on($space, at($x,1), at($y,0)); let $p2 = group_on($space, at($x,2), at($y,0)); let $joint = group_on($space, at($x,3), at($y,0)); let $q1 = group_on($space, at($x,4), at($y,0)); let $q2 = group_on($space, at($x,5), at($y,1)); let $q3 = group_on($space, at($x,6), at($y,1)); let $incoming = ports($p0,$p1,$p2,$joint); let $outgoing = ports($joint,$q1,$q2,$q3); // Adjacent difference and an explicit threefold calibration construct the // endpoint derivatives of cubics with respect to the SAME normalized parameter. let $triple = ports(span($x,0,1) -> span($x,0,3), span($y,0,1) -> span($y,0,3)); let $sixfold = ports(span($x,0,1) -> span($x,0,6), span($y,0,1) -> span($y,0,6)); let $entry_leg = group($p2,$joint,$basis); let $exit_leg = group($joint,$q1,$basis); let $entry_tangent = group(?entry_leg,$triple,$basis); let $exit_tangent = group(?exit_leg,$triple,$basis); let $endpoint_check = group($joint,$joint,$basis); let $tangent_check = group(?entry_tangent,?exit_tangent,$basis); // Desired zero is attached to each request. The observed displacement is a // conditional witness; mismatch does not identify which participant must change. root group($incoming,$outgoing,$normalized,$basis, $endpoint_check -> $zero, $tangent_check -> $zero, frame($entry_leg -> ?entry_leg, $exit_leg -> ?exit_leg, $entry_tangent -> ?entry_tangent, $exit_tangent -> ?exit_tangent), $triple,$sixfold,?curvature_relationship,?join_history); // Same forward tangent direction with a different speed is weaker than C1. let $faster_control = group_on($space, at($x,5), at($y,0)); // A zero first derivative is not evidence of a well-defined tangent direction. root group(group($joint,$faster_control,$basis), group($joint,$joint,$basis), $triple, ports(span($x,0,2) -> span($x,0,1), span($y,0,2) -> span($y,0,1)), $basis); // Coordinate agreement alone does not give a second point the joint's identity. let $lookalike = group_on($space, at($x,3), at($y,0)); root group(group($joint,$lookalike,$basis), $joint, $lookalike); // Second derivatives use the difference of adjacent legs and degree*(degree-1). // C2 compares these parameter derivatives. Curvature still needs a metric and // regularity; it is deliberately a separate open relationship in root 0. root group(frame( group($p1,$p2,$basis) -> ?entry_preleg, group($q1,$q2,$basis) -> ?exit_nextleg, group(?entry_preleg,?entry_leg,$basis) -> ?entry_second, group(?exit_leg,?exit_nextleg,$basis) -> ?exit_second, group(?entry_second,$sixfold,$basis) -> ?entry_acceleration, group(?exit_second,$sixfold,$basis) -> ?exit_acceleration), group(?entry_acceleration,?exit_acceleration,$basis) -> $zero, $normalized);