def minimize
bend-kit-property@0.4.0.0 · property.bend:42
import bend-kit-property@0.4.0.0/property.bend as Property
import Base
42
43def minimize(~T: Type, ~copy: T -> T & T, ~shrink: T -> List<&1, T>, ~test: T -> T & Bool,
44 fuel: Nat, state: T & Maybe<&1, T>) -> T:
45 match fuel:
46 case 0n:
47 (original, choice) = state
48 Maybe.default(&1, T, choice, original)
49 case 1n+p:
50 (original, choice) = state
51 match choice:
52 case None{}:
53 original
54 case Some{candidate}:
55 minimize(~T, ~copy, ~shrink, ~test, p, attempt(~T, ~copy, ~shrink, ~test, candidate))