@@ -20,6 +20,7 @@ import Data.Nat.Properties as ℕₚ
20
20
open import Data.Unit using (tt)
21
21
open import Data.Product using (∃; ∃₂; ∄; _×_; _,_; map; proj₁; uncurry; <_,_>)
22
22
open import Data.Sum.Base using (_⊎_; inj₁; inj₂; [_,_])
23
+ open import Data.Sum.Properties using ([,]-map-commute; [,]-∘-distr)
23
24
open import Function.Base using (_∘_; id; _$_)
24
25
open import Function.Equivalence using (_⇔_; equivalence)
25
26
open import Function.Injection using (_↣_)
@@ -422,9 +423,19 @@ splitAt-inject+ (suc m) n zero = refl
422
423
splitAt-inject+ (suc m) n (suc i) rewrite splitAt-inject+ m n i = refl
423
424
424
425
splitAt-raise : ∀ m n i → splitAt m (raise {n} m i) ≡ inj₂ i
425
- splitAt-raise zero n i = refl
426
+ splitAt-raise zero n i = refl
426
427
splitAt-raise (suc m) n i rewrite splitAt-raise m n i = refl
427
428
429
+ inject+-raise-splitAt : ∀ m n i → [ inject+ n , raise {n} m ] (splitAt m i) ≡ i
430
+ inject+-raise-splitAt zero n i = refl
431
+ inject+-raise-splitAt (suc m) n zero = refl
432
+ inject+-raise-splitAt (suc m) n (suc i) = begin
433
+ [ inject+ n , raise {n} (suc m) ] (splitAt (suc m) (suc i)) ≡⟨ [,]-map-commute (splitAt m i) ⟩
434
+ [ suc ∘ (inject+ n) , suc ∘ (raise {n} m) ] (splitAt m i) ≡˘⟨ [,]-∘-distr {f = suc} (splitAt m i) ⟩
435
+ suc ([ inject+ n , raise {n} m ] (splitAt m i)) ≡⟨ cong suc (inject+-raise-splitAt m n i) ⟩
436
+ suc i ∎
437
+ where open ≡-Reasoning
438
+
428
439
429
440
------------------------------------------------------------------------
430
441
-- lift
0 commit comments