pub fn lower_bound(
    range: Range<usize>,
    prop: &dyn Fn(usize) -> bool
) -> Option<usize>