File: Mathlib/Control/Bitraversable/Lemmas.lean

full_name: Bitraversable.tfst
code: /-- traverse on the first functor argument -/
abbrev tfst {α α'} (f : α → F α') : t α β → F (t α' β) 
goal: t α β → F (t α' β)

full_name: Bitraversable.tsnd
code: /-- traverse on the second functor argument -/
abbrev tsnd {α α'} (f : α → F α') : t β α → F (t β α') 
goal: t β α → F (t β α')

full_name: Bitraversable.id_tfst
code: @[higher_order tfst_id]
theorem id_tfst : ∀ {α β} (x : t α β), tfst (F := Id) pure x = pure x 
goal: Bitraversable.tfst pure x = pure x

full_name: Bitraversable.tfst_id
code: @[higher_order tfst_id]
theorem id_tfst : ∀ {α β} (x : t α β), tfst (F := Id) pure x = pure x 
goal: Bitraversable.tfst pure = pure

full_name: Bitraversable.tsnd_id
code: @[higher_order tsnd_id]
theorem id_tsnd : ∀ {α β} (x : t α β), tsnd (F := Id) pure x = pure x 
goal: Bitraversable.tsnd pure = pure

full_name: Bitraversable.id_tsnd
code: @[higher_order tsnd_id]
theorem id_tsnd : ∀ {α β} (x : t α β), tsnd (F := Id) pure x = pure x 
goal: Bitraversable.tsnd pure x = pure x

full_name: Bitraversable.tfst_comp_tfst
code: @[higher_order tfst_comp_tfst]
theorem comp_tfst {α₀ α₁ α₂ β} (f : α₀ → F α₁) (f' : α₁ → G α₂) (x : t α₀ β) :
    Comp.mk (tfst f' <$> tfst f x) = tfst (Comp.mk ∘ map f' ∘ f) x 
goal: Functor.Comp.mk ∘ Functor.map (Bitraversable.tfst f') ∘ Bitraversable.tfst f =
  Bitraversable.tfst (Functor.Comp.mk ∘ Functor.map f' ∘ f)

full_name: Bitraversable.comp_tfst
code: @[higher_order tfst_comp_tfst]
theorem comp_tfst {α₀ α₁ α₂ β} (f : α₀ → F α₁) (f' : α₁ → G α₂) (x : t α₀ β) :
    Comp.mk (tfst f' <$> tfst f x) = tfst (Comp.mk ∘ map f' ∘ f) x 
goal: Functor.Comp.mk (Bitraversable.tfst f' <$> Bitraversable.tfst f x) =
  Bitraversable.tfst (Functor.Comp.mk ∘ Functor.map f' ∘ f) x

full_name: Bitraversable.tfst_tsnd
code: @[higher_order tfst_comp_tsnd]
theorem tfst_tsnd {α₀ α₁ β₀ β₁} (f : α₀ → F α₁) (f' : β₀ → G β₁) (x : t α₀ β₀) :
    Comp.mk (tfst f <$> tsnd f' x)
      = bitraverse (Comp.mk ∘ pure ∘ f) (Comp.mk ∘ map pure ∘ f') x 
goal: Functor.Comp.mk (Bitraversable.tfst f <$> Bitraversable.tsnd f' x) =
  bitraverse (Functor.Comp.mk ∘ pure ∘ f) (Functor.Comp.mk ∘ Functor.map pure ∘ f') x

full_name: Bitraversable.tfst_comp_tsnd
code: @[higher_order tfst_comp_tsnd]
theorem tfst_tsnd {α₀ α₁ β₀ β₁} (f : α₀ → F α₁) (f' : β₀ → G β₁) (x : t α₀ β₀) :
    Comp.mk (tfst f <$> tsnd f' x)
      = bitraverse (Comp.mk ∘ pure ∘ f) (Comp.mk ∘ map pure ∘ f') x 
goal: Functor.Comp.mk ∘ Functor.map (Bitraversable.tfst f) ∘ Bitraversable.tsnd f' =
  bitraverse (Functor.Comp.mk ∘ pure ∘ f) (Functor.Comp.mk ∘ Functor.map pure ∘ f')

full_name: Bitraversable.tsnd_tfst
code: @[higher_order tsnd_comp_tfst]
theorem tsnd_tfst {α₀ α₁ β₀ β₁} (f : α₀ → F α₁) (f' : β₀ → G β₁) (x : t α₀ β₀) :
    Comp.mk (tsnd f' <$> tfst f x)
      = bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ pure ∘ f') x 
goal: Functor.Comp.mk (Bitraversable.tsnd f' <$> Bitraversable.tfst f x) =
  bitraverse (Functor.Comp.mk ∘ Functor.map pure ∘ f) (Functor.Comp.mk ∘ pure ∘ f') x

full_name: Bitraversable.tsnd_comp_tfst
code: @[higher_order tsnd_comp_tfst]
theorem tsnd_tfst {α₀ α₁ β₀ β₁} (f : α₀ → F α₁) (f' : β₀ → G β₁) (x : t α₀ β₀) :
    Comp.mk (tsnd f' <$> tfst f x)
      = bitraverse (Comp.mk ∘ map pure ∘ f) (Comp.mk ∘ pure ∘ f') x 
goal: Functor.Comp.mk ∘ Functor.map (Bitraversable.tsnd f') ∘ Bitraversable.tfst f =
  bitraverse (Functor.Comp.mk ∘ Functor.map pure ∘ f) (Functor.Comp.mk ∘ pure ∘ f')

full_name: Bitraversable.tsnd_comp_tsnd
code: @[higher_order tsnd_comp_tsnd]
theorem comp_tsnd {α β₀ β₁ β₂} (g : β₀ → F β₁) (g' : β₁ → G β₂) (x : t α β₀) :
    Comp.mk (tsnd g' <$> tsnd g x) = tsnd (Comp.mk ∘ map g' ∘ g) x 
goal: Functor.Comp.mk ∘ Functor.map (Bitraversable.tsnd g') ∘ Bitraversable.tsnd g =
  Bitraversable.tsnd (Functor.Comp.mk ∘ Functor.map g' ∘ g)

full_name: Bitraversable.comp_tsnd
code: @[higher_order tsnd_comp_tsnd]
theorem comp_tsnd {α β₀ β₁ β₂} (g : β₀ → F β₁) (g' : β₁ → G β₂) (x : t α β₀) :
    Comp.mk (tsnd g' <$> tsnd g x) = tsnd (Comp.mk ∘ map g' ∘ g) x 
goal: Functor.Comp.mk (Bitraversable.tsnd g' <$> Bitraversable.tsnd g x) =
  Bitraversable.tsnd (Functor.Comp.mk ∘ Functor.map g' ∘ g) x

full_name: Bitraversable.tfst_eq_fst_id
code: @[higher_order]
theorem tfst_eq_fst_id {α α' β} (f : α → α') (x : t α β) :
    tfst (F := Id) (pure ∘ f) x = pure (fst f x) 
goal: Bitraversable.tfst (pure ∘ f) x = pure (Bifunctor.fst f x)

full_name: Bitraversable.tfst_eq_fst_id'
code: @[higher_order]
theorem tfst_eq_fst_id {α α' β} (f : α → α') (x : t α β) :
    tfst (F := Id) (pure ∘ f) x = pure (fst f x) 
goal: Bitraversable.tfst (pure ∘ f) = pure ∘ Bifunctor.fst f

full_name: Bitraversable.tsnd_eq_snd_id
code: @[higher_order]
theorem tsnd_eq_snd_id {α β β'} (f : β → β') (x : t α β) :
    tsnd (F := Id) (pure ∘ f) x = pure (snd f x) 
goal: Bitraversable.tsnd (pure ∘ f) x = pure (Bifunctor.snd f x)

full_name: Bitraversable.tsnd_eq_snd_id'
code: @[higher_order]
theorem tsnd_eq_snd_id {α β β'} (f : β → β') (x : t α β) :
    tsnd (F := Id) (pure ∘ f) x = pure (snd f x) 
goal: Bitraversable.tsnd (pure ∘ f) = pure ∘ Bifunctor.snd f