summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelmut Grohne <helmut@subdivi.de>2012-08-30 16:50:21 +0200
committerHelmut Grohne <helmut@subdivi.de>2012-08-30 16:50:21 +0200
commit22d4d452aaee82744c57f063b3416fd67df736c2 (patch)
treea472f3c251049e27c3f6046bdd493861bec80384
parentd7dbd9ed445354479507e2889768dded86f901ac (diff)
downloadbidiragda-22d4d452aaee82744c57f063b3416fd67df736c2.tar.gz
prove LiftGet.get-trafo-2-getlen
-rw-r--r--LiftGet.agda17
1 files changed, 16 insertions, 1 deletions
diff --git a/LiftGet.agda b/LiftGet.agda
index 5e3a614..e2cb653 100644
--- a/LiftGet.agda
+++ b/LiftGet.agda
@@ -81,10 +81,25 @@ get-trafo-1 get l = begin
≡⟨ cong get (toList-fromList l) ⟩
get l ∎
+vec-len : {A : Set} {n : ℕ} → Vec A n → ℕ
+vec-len {_} {n} _ = n
+
+vec-len-via-list : {A : Set} {n : ℕ} → (v : Vec A n) → length (toList v) ≡ vec-len v
+vec-len-via-list []V = refl
+vec-len-via-list (x ∷V xs) = cong suc (vec-len-via-list xs)
+
+length-replicate : {A : Set} {a : A} → (n : ℕ) → length (replicate n a) ≡ n
+length-replicate 0 = refl
+length-replicate (suc n) = cong suc (length-replicate n)
+
get-trafo-2-getlen : (getlen : ℕ → ℕ) → (get : getV-type getlen) → proj₁ (getList-to-getVec (getVec-to-getList get)) ≗ getlen
get-trafo-2-getlen getlen get n = begin
proj₁ (getList-to-getVec (getVec-to-getList get)) n
- ≡⟨ {!!} ⟩
+ ≡⟨ refl ⟩
+ length (toList (get (fromList (replicate n tt))))
+ ≡⟨ vec-len-via-list (get (fromList (replicate n tt))) ⟩
+ vec-len (get (fromList (replicate n tt)))
+ ≡⟨ cong getlen (length-replicate n) ⟩
getlen n ∎
getVec-getlen : {getlen₁ getlen₂ : ℕ → ℕ} → (get : getV-type getlen₁) → getlen₁ ≗ getlen₂ → getV-type getlen₂