Я очень новичок в Агде, и я пытаюсь сделать простое доказательство "композиция карт - это карта композиций".
(упражнение взято из этого курса )
Соответствующее определение:
_=$=_ : {X Y : Set}{f f' : X -> Y}{x x' : X} ->
f == f' -> x == x' -> f x == f' x'
refl f =$= refl x = refl (f x)
и
data Vec (X : Set) : Nat -> Set where
[] : Vec X zero
_,-_ : {n : Nat} -> X -> Vec X n -> Vec X (suc n)
infixr 4 _,-_
Я хочу для доказательства:
vMapCpFact : {X Y Z : Set}{f : Y -> Z}{g : X -> Y}{h : X -> Z} ->
(heq : (x : X) -> f (g x) == h x) ->
{n : Nat} (xs : Vec X n) ->
vMap f (vMap g xs) == vMap h xs
Я уже разобрался с доказательством, используя =$=
vMapCpFact heq [] = refl []
vMapCpFact heq (x ,- xs) = refl _,-_ =$= heq x =$= vMapCpFact heq xs
Но когда я попытался сделать доказательство, используя rewrite
, я застрял на этом шаге:
vMapCpFact heq [] = refl []
vMapCpFact heq (x ,- xs) rewrite heq x | vMapCpFact heq xs = {!!}
Агда говорит, что цель все еще
(hx, - vMap f (vMap g xs)) == (hx, - vMap h xs)
Интересно, почему перезапись vMapCpFact heq xs
не удалась?