package Ġcom . emp ower ops . so jo urn Ċ Ċ import Ġcom . emp ower ops . babel . Babel Expression Ċ import Ġkotlinx . collections . immutable . ImmutableList Ċ import Ġkotlin . system . measure Time Millis Ċ Ċ fun ĠDouble . is Passed Constraint ( tolerance : ĠDouble Ġ= Ġ 0 . 0 ): ĠBoolean Ġ= Ġthis Ġ<= Ġ 0 . 0 Ġ+ Ġtolerance Ċ Ċ fun Ġ< R > Ġmeasure Time ( op : Ġ() Ġ-> ĠR ): ĠPair < Long , ĠR > Ġ{ ĊĠĠĠ Ġvar Ġresult : ĠAny ? Ġ= Ġnull ĊĠĠĠ Ġval Ġtime Ġ= Ġmeasure Time Millis Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġop () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") Ġ// safe Ġby Ġinline - nature Ġof Ġmeasure Time Millis ĊĠĠĠ Ġreturn Ġtime . coerce At Least ( 1 ) Ġto Ġ( result Ġas ĠR ) Ċ } ĊĊĊ Ċ fun ĠList < Input Variable >. can Produce ( vector : ĠInput Vector ): ĠBoolean { ĊĠĠĠĠĊĠĠĠ Ġfor (( name , Ġlower Bound , Ġupper Bound ) Ġin Ġthis ){ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġvector [ name ] !! ĊĠĠĠĠĠĠĠ Ġif ( value Ġ< Ġlower Bound Ġ|| Ġvalue Ġ> Ġupper Bound ) Ġ{ Ġreturn Ġfalse Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ fun ĠIterable < Babel Expression >. pass For ( inputs : ĠInput Vector , Ġtolerance : ĠDouble Ġ= Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġ= Ġall Ġ{ Ġit . evaluate ( inputs ). is Passed Constraint ( tolerance ) Ġ} Ċ Ċ fun ĠBabel Expression . passes For ( inputs : ĠInput Vector , Ġtolerance : ĠDouble Ġ= Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġ= Ġevaluate ( inputs ). is Passed Constraint ( tolerance )