summaryrefslogtreecommitdiff
path: root/Bidir.agda
diff options
context:
space:
mode:
authorHelmut Grohne <helmut@subdivi.de>2012-01-23 11:50:28 +0100
committerHelmut Grohne <helmut@subdivi.de>2012-01-23 11:50:28 +0100
commit4fa6ecf53dd170e4079edb582c68a55448047c6a (patch)
tree4636cd20987a3f293b8484230cee59a97e45d38f /Bidir.agda
parent6e3b0445d0c7a412f1dde5d9abf9e97b26e1cfe8 (diff)
downloadbidiragda-4fa6ecf53dd170e4079edb582c68a55448047c6a.tar.gz
rewrite lemma-1 using propositional equality
Diffstat (limited to 'Bidir.agda')
-rw-r--r--Bidir.agda25
1 files changed, 18 insertions, 7 deletions
diff --git a/Bidir.agda b/Bidir.agda
index 32397af..07193c7 100644
--- a/Bidir.agda
+++ b/Bidir.agda
@@ -79,15 +79,26 @@ lemma-insert-same [] () a?
lemma-insert-same (.(just x) ∷ xs) zero (is-just x) = refl
lemma-insert-same (x ∷ xs) (suc f′) a? = cong (_∷_ x) (lemma-insert-same xs f′ a?)
+lemma-checkInsert-generate : {τ : Set} {n : ℕ} → (eq : EqInst τ) → (f : Fin n → τ) → (i : Fin n) → (is : List (Fin n)) → checkInsert eq i (f i) (generate f is) ≡ just (generate f (i ∷ is))
+lemma-checkInsert-generate eq f i is with lookupM i (generate f is)
+lemma-checkInsert-generate eq f i is | nothing = refl
+lemma-checkInsert-generate eq f i is | just x with eq (f i) x
+lemma-checkInsert-generate eq f i is | just .(f i) | yes refl = cong just (lemma-insert-same (generate f is) i {!!})
+lemma-checkInsert-generate eq f i is | just x | no ¬p = {!!}
+
lemma-1 : {τ : Set} {n : ℕ} → (eq : EqInst τ) → (f : Fin n → τ) → (is : List (Fin n)) → assoc eq is (map f is) ≡ just (generate f is)
lemma-1 eq f [] = refl
-lemma-1 eq f (i ∷ is′) with assoc eq is′ (map f is′) | generate f is′ | lemma-1 eq f is′
-lemma-1 eq f (i ∷ is′) | nothing | _ | ()
-lemma-1 eq f (i ∷ is′) | just m | .m | refl with lookup i m
-lemma-1 eq f (i ∷ is′) | just m | .m | refl | nothing = refl
-lemma-1 eq f (i ∷ is′) | just m | .m | refl | just x with eq (f i) x
-lemma-1 eq f (i ∷ is′) | just m | .m | refl | just .(f i) | yes refl = cong just (lemma-insert-same m i {!!})
-lemma-1 eq f (i ∷ is′) | just m | .m | refl | just x | no ¬p = {!!}
+lemma-1 eq f (i ∷ is′) = begin
+ (assoc eq (i ∷ is′) (map f (i ∷ is′)))
+ ≡⟨ refl ⟩
+ (assoc eq is′ (map f is′) >>= checkInsert eq i (f i))
+ ≡⟨ cong (λ m → m >>= checkInsert eq i (f i)) (lemma-1 eq f is′) ⟩
+ (just (generate f is′) >>= (checkInsert eq i (f i)))
+ ≡⟨ refl ⟩
+ (checkInsert eq i (f i) (generate f is′))
+ ≡⟨ lemma-checkInsert-generate eq f i is′ ⟩
+ just (generate f (i ∷ is′)) ∎
+ where open Relation.Binary.PropositionalEquality.≡-Reasoning
lemma-2 : {τ : Set} {n : ℕ} → (eq : EqInst τ) → (is : List (Fin n)) → (v : List τ) → (h : FinMapMaybe n τ) → just h ≡ assoc eq is v → map (flip lookup h) is ≡ map just v
lemma-2 eq is v h p = {!!}