@@ -18,6 +18,7 @@ import Core.TT
1818
1919import Data.List
2020import Data.SnocList
21+ import Data.SnocList.Operations
2122import Data.Vect
2223
2324import Libraries.Data.SnocList.Extra
@@ -360,31 +361,19 @@ record Used (vars : SnocList Name) where
360361initUsed : {vars : _} -> Used vars
361362initUsed {vars} = MkUsed (replicate (length vars) False )
362363
363- lengthDistributesOverAppend
364- : (xs, ys : SnocList a)
365- -> length (ys ++ xs) = length xs + length ys
366- lengthDistributesOverAppend [< ] ys = Refl
367- lengthDistributesOverAppend (xs : < x) ys =
368- cong S $ lengthDistributesOverAppend xs ys
369-
370364weakenUsed : {outer : _} -> Used vars -> Used (vars ++ outer)
371365weakenUsed {outer} (MkUsed xs) =
372- MkUsed (rewrite lengthDistributesOverAppend outer vars in
373- (replicate (length outer) False ++ xs))
374-
375- -- TODO
376- -- lengthDistributesOverAppendFish
377- -- : (xs : List a)
378- -- -> (ys : SnocList a)
379- -- -> length (ys <>< xs) = length xs + length ys
366+ MkUsed (rewrite lengthHomomorphism vars outer in
367+ rewrite plusCommutative (length vars) (length outer) in
368+ replicate (length outer) False ++ xs)
380369
381370weakenUsedFish : {outer : _} -> Used vars -> Used (vars <>< outer)
382371weakenUsedFish {outer} (MkUsed xs) =
383372 do rewrite fishAsSnocAppend vars outer
384- MkUsed $ do
385- rewrite lengthDistributesOverAppend (cast outer) vars
386- -- See lengthDistributesOverAppendFish
387- (believe_me $ replicate (length outer) False ++ xs)
373+ MkUsed $ do rewrite lengthHomomorphism vars (cast outer)
374+ rewrite Extra . lengthDistributesOverFish [ < ] outer
375+ rewrite plusCommutative ( length vars) ( length outer)
376+ replicate (length outer) False ++ xs
388377
389378contractUsed : (Used (vars :< x)) -> Used vars
390379contractUsed (MkUsed xs) = MkUsed (tail xs)
0 commit comments