def is_dominated
import unified-nsga-iii@0.2.2.0/non_dominated_sort.bend as NonDominatedSortimport Base
166# Sequential OR so a first hit can skip the rest. Candidate-level
167# parallelism lives in split_walk (coarse mid-split). Walks `all`
168# rows directly — no List.get into the population.
169def is_dominated(+all: List<&2, Row>, +i: Nat, +fi: List<&2, F32>, +cvi: F32) -> Bool:
170 match all:
171 case Nil{}:
172 False{}
173 case +r <> rs:
174 match r:
175 case Row{+j, +fj, +cvj}:
176 Bool.or(
177 Bool.and(Bool.not(Nat.is_eq(i, j)), dominates_cd(fj, cvj, fi, cvi)),
178 is_dominated(rs, i, fi, cvi)
179 )