glue :
{Γ : Set}
{Φ : Γ → Cof}
{A : res Γ Φ → Set}
{B : Γ → Set}
(f : (x : Γ)(u : [ Φ x ]) → A (x , u) → B x)
→ ---------------
(xu : res Γ Φ) → A xu → Glue Φ A B f (fst xu)
glue {Γ} {Φ} {A} {B} f (x , u) a = ((λ v → moveA v a) , (f x u a , (λ v → cong (λ{(u , a) → f x u a}) (symm (moveMove v))))) where
moveA : (v : [ Φ x ]) → A (x , u) → A (x , v)
moveA v = subst (λ v → A (x , v)) (eq (fst (Φ x)))
moveMove : (v : [ Φ x ]) → (u , a) ≡ (v , moveA v a)
moveMove v = Σext (eq (fst (Φ x))) refl