α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join (ret (f a), Seq.map (ret ∘ f) s) = (f a, Seq.map f s)
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ bind (a, s) (ret ∘ f) = map f (a, s)
dsimp [bind, map]
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join ((f a, nil), Seq.map ret (Seq.map f s)) = (f a, Seq.map f s)
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join (ret (f a), Seq.map (ret ∘ f) s) = (f a, Seq.map f s)
rw [map_comp, ret]
no goals
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join ((f a, nil), Seq.map ret (Seq.map f s)) = (f a, Seq.map f s)
simp