survival.bend checks
raw source on the hub · import 0xcd07e24a626a62e74603d48f436cd679/survival.bend as Survival
Survival / niching — C# ReferencePointManager + NondominatedSortingSurvival.
Independent maps (associate / histograms / gather) use mid-split
a b = f(lo) f(hi). Nearest-ref stays sequential (associate_raw already
splits per individual). Last-front fill builds NRow{i, ref, dist} once
so the sequential niche loop never List.gets an Assignment (or a fat
Individual) per remaining candidate. Same pick rules / same RNG order.
Associate normalized individuals to Das–Dennis rays; select target_size
from a combined pool (fill complete fronts, niche-preserve the last).
Deterministic when C# rng is null (select): lowest ref among min-count
niches, then min perpendicular distance if that niche is empty, else
lowest index. select_st (Run) threads rng: random among equal
min-count niches (C# Select(..., rng)). Empty niches take the closest
unused member; extras draw among members within 2×best+0.01 of the
ray — not uniform inNiche[rng.Next], which collapsed oracle ZDT2.
6 imports
import Base import ./individual.bend as Ind import ./non_dominated_sort.bend as NDS import ./normalization.bend as Norm import ./rng.bend as Rng import ./util.bend as Util
Types
type Assignment source · line 23 · raw
Data
MkAssignment@reference_index:Nat -> @perpendicular_distance:F32 -> @niche_count:Nat -> Assignment
type NRow source · line 54 · raw
Data
Last-front row: population index plus the two fields the fill loop
reads. Built once from asgs so each pick walks this thin list
instead of List.get into the combined-pool assignment spine.
NRow@i:Nat -> @r:Nat -> @d:F32 -> NRow
type CntNeed source · line 392 · raw
Data
CN@counts:List<&2, Nat> -> @need:Nat -> CntNeed
type RefPick source · line 424 · raw
Data
RP@asgs:List<&2, Assignment> -> @r:Nat -> RefPick
type NearPick source · line 526 · raw
Data
NP@asgs:List<&2, Assignment> -> @lim:F32 -> NearPick
Definitions
def asg_ref source · line 30 · raw
@a:Assignment -> Nat
def asg_dist source · line 35 · raw
@a:Assignment -> F32
def asg_count source · line 40 · raw
@a:Assignment -> Nat
def get_asg source · line 45 · raw
@asgs:List<&2, Assignment> -> @i:Nat -> Assignment
def get_ind source · line 48 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @i:Nat -> 0xcd07e24a626a62e74603d48f436cd679/individual.Individual
def nrow_i source · line 61 · raw
@row:NRow -> Nat
def nrow_r source · line 66 · raw
@row:NRow -> Nat
def nrow_d source · line 71 · raw
@row:NRow -> F32
def nrows_of.go source · line 76 · raw
@+asgs:List<&2, Assignment> -> @cand:List<&2, Nat> -> @acc:List<&2, NRow> -> List<&2, NRow>
def nrows_of source · line 84 · raw
@+asgs:List<&2, Assignment> -> @+cand:List<&2, Nat> -> List<&2, NRow>
def first_row_i source · line 87 · raw
@rows:List<&2, NRow> -> Nat
def first_row_r source · line 94 · raw
@rows:List<&2, NRow> -> Nat
def get_nrow source · line 101 · raw
@rows:List<&2, NRow> -> @i:Nat -> NRow
def drop_nrow.put source · line 104 · raw
@+row:NRow -> @rest:List<&2, NRow> -> @drop:Bool -> List<&2, NRow>
def drop_nrow source · line 111 · raw
@rows:List<&2, NRow> -> @+pick:Nat -> List<&2, NRow>
def keep_nat source · line 118 · raw
@h:Nat -> @rest:List<&2, Nat> -> @keep:Bool -> List<&2, Nat>
def uniq_refs.go source · line 125 · raw
@rows:List<&2, NRow> -> @+acc:List<&2, Nat> -> List<&2, Nat>
def uniq_refs source · line 133 · raw
@rows:List<&2, NRow> -> List<&2, Nat>
def min_count_rows.go source · line 136 · raw
@+counts:List<&2, Nat> -> @rows:List<&2, NRow> -> @+acc:Nat -> Nat
def min_count_rows source · line 143 · raw
@+counts:List<&2, Nat> -> @rows:List<&2, NRow> -> Nat
def refs_at_seq source · line 146 · raw
@+counts:List<&2, Nat> -> @+need:Nat -> @refs:List<&2, Nat> -> List<&2, Nat>
def in_ref_rows source · line 153 · raw
@+r:Nat -> @rows:List<&2, NRow> -> List<&2, NRow>
def argmin_dist_rows.go source · line 160 · raw
@rows:List<&2, NRow> -> @+best_i:Nat -> @+best_d:F32 -> Nat
def argmin_dist_rows source · line 169 · raw
@rows:List<&2, NRow> -> Nat
def min_dist_rows.go source · line 176 · raw
@rows:List<&2, NRow> -> @+acc:F32 -> F32
def min_dist_rows source · line 184 · raw
@rows:List<&2, NRow> -> F32
def min_idx_rows.go source · line 191 · raw
@rows:List<&2, NRow> -> @+acc:Nat -> Nat
def min_idx_rows source · line 198 · raw
@rows:List<&2, NRow> -> Nat
def near_rows source · line 205 · raw
@+lim:F32 -> @rows:List<&2, NRow> -> List<&2, NRow>
def perp.big source · line 212 · raw
@+f:List<&2, F32> -> @+w:List<&2, F32> -> @+ww:F32 -> F32
def perp.zero source · line 216 · raw
@+f:List<&2, F32> -> @tiny:Bool -> F32
def perp.pick source · line 223 · raw
@+f:List<&2, F32> -> @+w:List<&2, F32> -> @+ww:F32 -> @tiny:Bool -> F32
def perp source · line 230 · raw
@+f:List<&2, F32> -> @+w:List<&2, F32> -> F32
def nearest_go source · line 236 · raw
@+f:List<&2, F32> -> @dirs:List<&2, List<&2, F32>> -> @+i:Nat -> @+best_i:Nat -> @+best_d:F32 -> Assignment
First-min on strict < (ties keep the lower index). Sequential over
dirs; associate_raw already mid-splits per individual.
def nearest_one source · line 250 · raw
@f:List<&2, F32> -> @dirs:List<&2, List<&2, F32>> -> Assignment
def associate_head source · line 253 · raw
@+dirs:List<&2, List<&2, F32>> -> @+ind:0xcd07e24a626a62e74603d48f436cd679/individual.Individual -> @F:List<&2, List<&2, F32>> -> Assignment
def associate_raw.go source · line 261 · raw
@+dirs:List<&2, List<&2, F32>> -> @+fuel:Nat -> @pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+F:List<&2, List<&2, F32>> -> List<&2, Assignment>
Nearest-ref per individual is independent given dirs. Mid-split pop and F.
def associate_raw source · line 286 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+F:List<&2, List<&2, F32>> -> @+dirs:List<&2, List<&2, F32>> -> List<&2, Assignment>
def count_raw.go source · line 290 · raw
@+n:Nat -> @+fuel:Nat -> @asgs:List<&2, Assignment> -> List<&2, Nat>
Histogram increments commute. Mid-split asgs, then add count vectors.
def count_asg source · line 306 · raw
@+asgs:List<&2, Assignment> -> @+acc:List<&2, Nat> -> List<&2, Nat>
def with_counts.one source · line 309 · raw
@+counts:List<&2, Nat> -> @+a:Assignment -> Assignment
def with_counts source · line 314 · raw
@+counts:List<&2, Nat> -> @+asgs:List<&2, Assignment> -> List<&2, Assignment>
def associate source · line 317 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+F:List<&2, List<&2, F32>> -> @+dirs:List<&2, List<&2, F32>> -> List<&2, Assignment>
def front0 source · line 321 · raw
@fronts:List<&2, List<&2, Nat>> -> List<&2, Nat>
def n_fronts source · line 328 · raw
@fronts:List<&2, List<&2, Nat>> -> Nat
def head_len source · line 331 · raw
@fronts:List<&2, List<&2, Nat>> -> Nat
def gather.one source · line 338 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+i:Nat -> 0xcd07e24a626a62e74603d48f436cd679/individual.Individual
def gather source · line 341 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+idxs:List<&2, Nat> -> List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual>
def cand_ref.one source · line 344 · raw
@+asgs:List<&2, Assignment> -> @+i:Nat -> Nat
def cand_refs source · line 347 · raw
@+asgs:List<&2, Assignment> -> @cand:List<&2, Nat> -> List<&2, Nat>
def min_count.go source · line 350 · raw
@+counts:List<&2, Nat> -> @+fuel:Nat -> @refs:List<&2, Nat> -> Nat
def min_count source · line 366 · raw
@+counts:List<&2, Nat> -> @refs:List<&2, Nat> -> @acc:Nat -> Nat
def cons_if source · line 374 · raw
@h:Nat -> @rest:List<&2, Nat> -> @keep:Bool -> List<&2, Nat>
def uniq_nats.go source · line 382 · raw
@xs:List<&2, Nat> -> @+acc:List<&2, Nat> -> List<&2, Nat>
First-occurrence unique (C# HashSet of refs-with-candidates).
def uniq_nats source · line 389 · raw
@xs:List<&2, Nat> -> List<&2, Nat>
def refs_at.ok source · line 398 · raw
@+ctx:CntNeed -> @+r:Nat -> Bool
def refs_at source · line 403 · raw
@+counts:List<&2, Nat> -> @+need:Nat -> @refs:List<&2, Nat> -> List<&2, Nat>
def min_idx source · line 406 · raw
@xs:List<&2, Nat> -> @acc:Nat -> Nat
def min_idx_ne source · line 413 · raw
@xs:List<&2, Nat> -> Nat
def pick_ref source · line 420 · raw
@+asgs:List<&2, Assignment> -> @+counts:List<&2, Nat> -> @+cand:List<&2, Nat> -> Nat
def in_ref.ok source · line 430 · raw
@+ctx:RefPick -> @+i:Nat -> Bool
def in_ref source · line 435 · raw
@+asgs:List<&2, Assignment> -> @+r:Nat -> @cand:List<&2, Nat> -> List<&2, Nat>
def argmin_join source · line 438 · raw
@+asgs:List<&2, Assignment> -> @+ia:Nat -> @+ib:Nat -> Nat
def argmin_dist.go source · line 441 · raw
@+asgs:List<&2, Assignment> -> @+fuel:Nat -> @cand:List<&2, Nat> -> Nat
def argmin_dist source · line 459 · raw
@+asgs:List<&2, Assignment> -> @cand:List<&2, Nat> -> Nat
def pick_member.by source · line 467 · raw
@+asgs:List<&2, Assignment> -> @group:List<&2, Nat> -> @empty_niche:Bool -> Nat
def first_cand source · line 476 · raw
@cand:List<&2, Nat> -> Nat
First remaining last-front index. Used when inNiche is empty (C# would throw; never pick a phantom combined-pool index 0).
def pick_member.by.safe source · line 483 · raw
@+asgs:List<&2, Assignment> -> @group:List<&2, Nat> -> @empty_niche:Bool -> @+fallback:Nat -> Nat
def pick_member source · line 490 · raw
@+asgs:List<&2, Assignment> -> @+counts:List<&2, Nat> -> @+cand:List<&2, Nat> -> @+r:Nat -> Nat
def pick_ref.rng.go source · line 495 · raw
@+mins:List<&2, Nat> -> @n:Nat -> @+fallback:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
Affine API: advanced State; chosen index is Rng.last_nat (no pair match).
C# Select(..., rng): draw only when more than one min-count ref.
def pick_ref.rng.after source · line 505 · raw
@+mins:List<&2, Nat> -> @+fallback:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_ref.rng source · line 508 · raw
@+asgs:List<&2, Assignment> -> @+counts:List<&2, Nat> -> @+cand:List<&2, Nat> -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def near_lim source · line 520 · raw
@+best:F32 -> F32
Uniform inNiche[rng.Next] (C# non-empty + rng) lets far-from-ray last-front junk into a niche. With this LCG that pile-up dominates ZDT2's concave front (x0 → 0). Draw extras only among members within 2×best+0.01 of the ray (first assignment to a niche stays closest).
def near_ok source · line 523 · raw
@+asgs:List<&2, Assignment> -> @+i:Nat -> @+lim:F32 -> Bool
def near_members.ok source · line 532 · raw
@+ctx:NearPick -> @+i:Nat -> Bool
def near_members source · line 537 · raw
@+asgs:List<&2, Assignment> -> @group:List<&2, Nat> -> @+lim:F32 -> List<&2, Nat>
def pick_among.rng source · line 540 · raw
@+group:List<&2, Nat> -> @n:Nat -> @+fallback:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_near.rng source · line 550 · raw
@+asgs:List<&2, Assignment> -> @+group:List<&2, Nat> -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_member.rng.empty source · line 554 · raw
@+asgs:List<&2, Assignment> -> @+group:List<&2, Nat> -> @empty_niche:Bool -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_member.rng.by source · line 561 · raw
@+asgs:List<&2, Assignment> -> @group:List<&2, Nat> -> @empty_niche:Bool -> @+fallback:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_member.rng source · line 568 · raw
@+asgs:List<&2, Assignment> -> @+counts:List<&2, Nat> -> @+cand:List<&2, Nat> -> @+r:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def seed_raw.go source · line 577 · raw
@+asgs:List<&2, Assignment> -> @+n:Nat -> @+fuel:Nat -> @selected:List<&2, Nat> -> List<&2, Nat>
def seed_counts source · line 593 · raw
@+asgs:List<&2, Assignment> -> @+selected:List<&2, Nat> -> @+acc:List<&2, Nat> -> List<&2, Nat>
def pick_ref.rows source · line 597 · raw
@+counts:List<&2, Nat> -> @+rows:List<&2, NRow> -> Nat
fuel, k, cand first so the match follows binder order and fuel shrinks.
def pick_member.by.ne.rows source · line 601 · raw
@+group:List<&2, NRow> -> @empty_niche:Bool -> Nat
def pick_member.by.rows source · line 608 · raw
@group:List<&2, NRow> -> @empty_niche:Bool -> @+fallback:Nat -> Nat
def pick_member.rows source · line 615 · raw
@+counts:List<&2, Nat> -> @+rows:List<&2, NRow> -> @+r:Nat -> Nat
def pick_ref.rng.rows source · line 618 · raw
@+counts:List<&2, Nat> -> @+rows:List<&2, NRow> -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_among.nrows source · line 626 · raw
@+rows:List<&2, NRow> -> @n:Nat -> @+fallback:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_near.rng.rows source · line 636 · raw
@+group:List<&2, NRow> -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_member.rng.empty.rows source · line 640 · raw
@+group:List<&2, NRow> -> @empty_niche:Bool -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_member.rng.by.rows source · line 647 · raw
@group:List<&2, NRow> -> @empty_niche:Bool -> @+fallback:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def pick_member.rng.rows source · line 654 · raw
@+counts:List<&2, Nat> -> @+rows:List<&2, NRow> -> @+r:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> 0xcd07e24a626a62e74603d48f436cd679/rng.State
def niche_loop source · line 662 · raw
@fuel:Nat -> @k:Nat -> @rows:List<&2, NRow> -> @+counts:List<&2, Nat> -> @selected:List<&2, Nat> -> List<&2, Nat>
def fill source · line 682 · raw
@fuel:Nat -> @fronts:List<&2, List<&2, Nat>> -> @fits:Bool -> @+acc:List<&2, Nat> -> @+target:Nat -> @+asgs:List<&2, Assignment> -> @+n_dirs:Nat -> List<&2, Nat>
def fill.wrap source · line 710 · raw
@+fronts:List<&2, List<&2, Nat>> -> @+target:Nat -> @+asgs:List<&2, Assignment> -> @+n_dirs:Nat -> List<&2, Nat>
def niche_loop.rng source · line 721 · raw
@fuel:Nat -> @k:Nat -> @rows:List<&2, NRow> -> @+counts:List<&2, Nat> -> @selected:List<&2, Nat> -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> Pair(List<&2, Nat>, 0xcd07e24a626a62e74603d48f436cd679/rng.State)
def fill.rng source · line 744 · raw
@fuel:Nat -> @fronts:List<&2, List<&2, Nat>> -> @fits:Bool -> @+acc:List<&2, Nat> -> @+target:Nat -> @+asgs:List<&2, Assignment> -> @+n_dirs:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> Pair(List<&2, Nat>, 0xcd07e24a626a62e74603d48f436cd679/rng.State)
def fill.wrap.rng source · line 774 · raw
@+fronts:List<&2, List<&2, Nat>> -> @+target:Nat -> @+asgs:List<&2, Assignment> -> @+n_dirs:Nat -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> Pair(List<&2, Nat>, 0xcd07e24a626a62e74603d48f436cd679/rng.State)
def select_idx.with source · line 786 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target:Nat -> @+dirs:List<&2, List<&2, F32>> -> @+fronts:List<&2, List<&2, Nat>> -> @pair:Pair(0xcd07e24a626a62e74603d48f436cd679/normalization.State, List<&2, List<&2, F32>>) -> List<&2, Nat>
def select_idx.big source · line 790 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target:Nat -> @+dirs:List<&2, List<&2, F32>> -> List<&2, Nat>
def select_idx.dirs source · line 794 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target:Nat -> @+dirs:List<&2, List<&2, F32>> -> @empty_dirs:Bool -> List<&2, Nat>
def select_idx.by source · line 801 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target:Nat -> @+dirs:List<&2, List<&2, F32>> -> @small:Bool -> List<&2, Nat>
def unused_idxs source · line 808 · raw
@+used:List<&2, Nat> -> @+n:Nat -> List<&2, Nat>
def pad_idxs source · line 814 · raw
@+xs:List<&2, Nat> -> @+want:Nat -> @+n:Nat -> List<&2, Nat>
Length lock: |take(pad(core, want, n), want)| = want when want ≤ n. Identity when core is already a unique subset of 0..n-1 of length want (the fill / range / take paths used in A/B).
def clip_idxs source · line 817 · raw
@+xs:List<&2, Nat> -> @+want:Nat -> List<&2, Nat>
def size_lock source · line 820 · raw
@+xs:List<&2, Nat> -> @+want:Nat -> @+n:Nat -> List<&2, Nat>
def select_idx source · line 823 · raw
@+combined:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target_size:Nat -> @+dirs:List<&2, List<&2, F32>> -> List<&2, Nat>
def select source · line 828 · raw
@+combined:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target_size:Nat -> @+dirs:List<&2, List<&2, F32>> -> List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual>
def size_lock.rng source · line 835 · raw
@+want:Nat -> @+n:Nat -> @pair:Pair(List<&2, Nat>, 0xcd07e24a626a62e74603d48f436cd679/rng.State) -> Pair(List<&2, Nat>, 0xcd07e24a626a62e74603d48f436cd679/rng.State)
Persistent-normalization Select for Unsga3Algorithm.Run. Threads rng
so last-front niching matches C# Select(..., rng) on min-count niche
ties. Empty niches take closest; extras are random among near-best
on that ray. v0 select stays the rng == null path (empty laws).
def select_st.after source · line 839 · raw
@+st:0xcd07e24a626a62e74603d48f436cd679/normalization.State -> @+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @pair:Pair(List<&2, Nat>, 0xcd07e24a626a62e74603d48f436cd679/rng.State) -> Pair(0xcd07e24a626a62e74603d48f436cd679/normalization.State, Pair(List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual>, 0xcd07e24a626a62e74603d48f436cd679/rng.State))
def select_st.with source · line 843 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target:Nat -> @+dirs:List<&2, List<&2, F32>> -> @+fronts:List<&2, List<&2, Nat>> -> @pair:Pair(0xcd07e24a626a62e74603d48f436cd679/normalization.State, List<&2, List<&2, F32>>) -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> Pair(0xcd07e24a626a62e74603d48f436cd679/normalization.State, Pair(List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual>, 0xcd07e24a626a62e74603d48f436cd679/rng.State))
def select_st.big source · line 849 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target:Nat -> @+dirs:List<&2, List<&2, F32>> -> @state:0xcd07e24a626a62e74603d48f436cd679/normalization.State -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> Pair(0xcd07e24a626a62e74603d48f436cd679/normalization.State, Pair(List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual>, 0xcd07e24a626a62e74603d48f436cd679/rng.State))
def select_st.take source · line 853 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target:Nat -> @state:0xcd07e24a626a62e74603d48f436cd679/normalization.State -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> Pair(0xcd07e24a626a62e74603d48f436cd679/normalization.State, Pair(List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual>, 0xcd07e24a626a62e74603d48f436cd679/rng.State))
def select_st.dirs source · line 857 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target:Nat -> @+dirs:List<&2, List<&2, F32>> -> @state:0xcd07e24a626a62e74603d48f436cd679/normalization.State -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> @empty_dirs:Bool -> Pair(0xcd07e24a626a62e74603d48f436cd679/normalization.State, Pair(List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual>, 0xcd07e24a626a62e74603d48f436cd679/rng.State))
def select_st.by source · line 864 · raw
@+pop:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target:Nat -> @+dirs:List<&2, List<&2, F32>> -> @state:0xcd07e24a626a62e74603d48f436cd679/normalization.State -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> @small:Bool -> Pair(0xcd07e24a626a62e74603d48f436cd679/normalization.State, Pair(List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual>, 0xcd07e24a626a62e74603d48f436cd679/rng.State))
def select_st source · line 871 · raw
@+combined:List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual> -> @+target_size:Nat -> @+dirs:List<&2, List<&2, F32>> -> @state:0xcd07e24a626a62e74603d48f436cd679/normalization.State -> @rng:0xcd07e24a626a62e74603d48f436cd679/rng.State -> Pair(0xcd07e24a626a62e74603d48f436cd679/normalization.State, Pair(List<&2, 0xcd07e24a626a62e74603d48f436cd679/individual.Individual>, 0xcd07e24a626a62e74603d48f436cd679/rng.State))