@@ -88,18 +88,25 @@ wfInd {rel} step x = accInd step x (wellFounded {rel} x)
88-- Some basic useful relations
88-- Some basic useful relations
90||| LT is a well-founded relation on numbers
90||| LT is a well-founded relation on numbers
91+ltAccessible : (n : Nat) -> Accessible LT n
92+ltAccessible n = Access (\v, prf => ltAccessible' {n'=v} n prf)
91−ltAccessible : (m : Nat) -> LT n m -> Accessible LT n
94+ ltAccessible' : (m : Nat) -> LT n' m -> Accessible LT n'
92−ltAccessible Z x = absurd x
95+ ltAccessible' Z x = absurd x
93−ltAccessible (S k) (LTESucc x)
96+ ltAccessible' (S k) (LTESucc x)
94− = Access (\val, p => ltAccessible k (lteTransitive p x))
97+ = Access (\val, p => ltAccessible' k (lteTransitive p x))
96-- First list is smaller than the second
99-- First list is smaller than the second
97smaller : List a -> List a -> Type
100smaller : List a -> List a -> Type
98smaller xs ys = LT (length xs) (length ys)
101smaller xs ys = LT (length xs) (length ys)
100||| `smaller` is a well-founded relation on lists
103||| `smaller` is a well-founded relation on lists
104+smallerAcc : (xs : List a) -> Accessible WellFounded.smaller xs
105+smallerAcc xs = Access (\v, prf => smallerAcc' {xs'=v} xs prf)
101−smallerAcc : (ys : List a) -> smaller xs ys -> Accessible smaller xs
107+ smallerAcc' : (ys : List a) -> smaller xs' ys -> Accessible smaller xs'
102−smallerAcc [] x = absurd x
108+ smallerAcc' [] x = absurd x
103−smallerAcc (y :: ys) (LTESucc x)
109+ smallerAcc' (y :: ys) (LTESucc x)
104− = Access (\val, p => smallerAcc ys (lteTransitive p x))
110+ = Access (\val, p => smallerAcc' ys (lteTransitive p x))