change lemma-insert-same to work with \== proofs
authorHelmut Grohne <helmut@subdivi.de>
Thu, 26 Jan 2012 10:37:44 +0000 (11:37 +0100)
committerHelmut Grohne <helmut@subdivi.de>
Thu, 26 Jan 2012 10:37:44 +0000 (11:37 +0100)
This way the inserted value is not hidden in the Is-Just proof object.

Bidir.agda

index 51b24b1..84d469d 100644 (file)
@@ -68,22 +68,16 @@ assoc _  _        _        = nothing
 generate : {A : Set} {n : â„•} â†’ (Fin n â†’ A) â†’ List (Fin n) â†’ FinMapMaybe n A
 generate f is = fromAscList (zip is (map f is))
 
-data Is-Just {A : Set} : (Maybe A) â†’ Set where
-  is-just : (x : A) â†’ Is-Just (just x) 
-
-the : {A : Set} {t : Maybe A} â†’ Is-Just t â†’ A
-the (is-just x) = x
-
-lemma-insert-same : {Ï„ : Set} {n : â„•} â†’ (m : FinMapMaybe n Ï„) â†’ (f : Fin n) â†’ (a? : Is-Just (lookup f m)) â†’ m â‰¡ insert f (the a?) m
-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-insert-same : {Ï„ : Set} {n : â„•} â†’ (m : FinMapMaybe n Ï„) â†’ (f : Fin n) â†’ (a : Ï„) â†’ just a â‰¡ lookupM f m â†’ m â‰¡ insert f a m
+lemma-insert-same []               ()      a p
+lemma-insert-same (.(just a) âˆ· xs) zero    a refl = refl
+lemma-insert-same (x âˆ· xs)         (suc i) a p    = cong (_∷_ x) (lemma-insert-same xs i a p)
 
 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 .(f i) | yes refl = cong just (lemma-insert-same (generate f is) i (f 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)