"Given a stream of [[Comparable]] values, return the smallest value in the stream, or `null` if the stream is empty. For any nonempty stream `it`, `min(it)` evaluates to the first element of `it` such that for every element `e` of `it`, `min(it) <= e`." see (`interface Comparable`, `function max`, `function smallest`) shared Absent|Value min<Value,Absent> (Iterable<Value,Absent> values) given Value satisfies Comparable<Value> given Absent satisfies Null { value it = values.iterator(); if (!is Finished first = it.next()) { variable value min = first; while (!is Finished val = it.next()) { if (val<min) { min = val; } } return min; } else { "iterable must be empty" assert (is Absent null); return null; } }