1 | module Data.Fin.Lists
3 | import public Data.Fin
8 | rangeFrom0To : Fin n -> List (Fin n)
9 | rangeFrom0To FZ = [FZ]
10 | rangeFrom0To (FS x) = FZ :: (FS <$> rangeFrom0To x)
13 | rangeFromTo : Fin n -> Fin n -> List (Fin n)
14 | rangeFromTo FZ FZ = [FZ]
15 | rangeFromTo FZ r = rangeFrom0To r
16 | rangeFromTo l FZ = reverse $
rangeFrom0To l
17 | rangeFromTo (FS l) (FS r) = FS <$> rangeFromTo l r
20 | allGreaterThan : {n : _} -> Fin n -> List (Fin n)
21 | allGreaterThan curr = case strengthen $
FS curr of
23 | Just next => next :: allGreaterThan (assert_smaller curr next)