atc.assert_4d_deconfliction
Exact 4D separation over declared trajectories in integer-scaled geodetic coordinates: decide whether any two are ever SIMULTANEOUSLY inside the stated separation minima, and return either a separation certificate or the violating pair with the exact interval and magnitude of the incursion. Integer micro-degrees, feet and seconds with rational time parameters; no floating point and no epsilon, so separation exactly equal to the minima is separated and nine cells return the same verdict from the same bytes. The longitude frame is the caller's to state exactly, as an optional rational scale with its reference latitude, so the cos(latitude) approximation is chosen deliberately and on the record rather than done in floating point outside the boundary. Civil FAA/ICAO framing; a traffic-analysis instrument, never a control tool.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| obs_seq | No | decimal string; a sealed AirspaceObservationSeal sequence is ONE INSTANT of sky and carries no time base, so supplying it alone returns NOT_MEASURED_OBSERVATION_SET_HAS_NO_TIME_BASE rather than a fabricated verdict | |
| trajectories | Yes | declared 4D paths: id plus waypoints as decimal strings, strictly advancing in time | |
| lon_scale_den | No | OPTIONAL, denominator of the longitude scale as decimal string. RECOMMENDED: six digits or fewer. Cosine to 1e-6 is far below any error that could change a verdict about aircraft, and a six-digit denominator clears every segment-pair time base up to 8589 seconds; a three-digit one clears any time base at all. The hard ceiling is 1000000000, but the binding limit is per-request: 8589934592 divided by the segment pair time base, which is the least common multiple of the two segment durations. Above it the pair returns NOT_MEASURED_SCALED_TIME_BASE_EXCEEDS_EXACT_RANGE naming the exact denominator ceiling that clears at that time base, so the remedy is read off the refusal rather than found by bisection. Reduce the ratio to lowest terms or round it to fewer digits | |
| lon_scale_num | No | OPTIONAL exact rational longitude scale, numerator as decimal string. Stands for cos(latitude), which is not rational -- so the caller states the approximation it chose and everything after that choice is exact. The test becomes (dlat*den)^2 + (dlon*num)^2 < (minima*den)^2, entirely in integers; latitude is never scaled. Must satisfy 1 <= num <= den | |
| look_ahead_seconds | No | optional horizon clipped forward from the earliest declared time, decimal string | |
| vertical_minima_feet | Yes | REQUIRED decimal string, no default | |
| reference_lat_micro_deg | No | OPTIONAL decimal string, the latitude the scale was computed for. REQUIRED whenever a scale is declared: all three fields travel together and a partial declaration is refused with REFUSED_INCOMPLETE_LONGITUDE_SCALE rather than silently ignored. WHEN ALL THREE ARE ABSENT the predicate decides in the plain declared micro-degree coordinate plane with no correction, reports longitude_scale NOT_DECLARED on the certificate, and says so -- a coordinate statement is never presented as a ground distance | |
| horizontal_minima_micro_deg | Yes | REQUIRED decimal string, no default -- a defaulted separation standard is a verdict about a rule the caller never stated |