Extra facts about Prod #
This file proves various simple lemmas about Prod.
It also defines better delaborators for product projections.
theorem
Prod.swap_eq_iff_eq_swap
{α : Type u_1}
{β : Type u_2}
{x : α × β}
{y : β × α}
:
x.swap = y ↔ x = y.swap
def
Prod.mk.injArrow
{α : Type u_1}
{β : Type u_2}
{x₁ : α}
{y₁ : β}
{x₂ : α}
{y₂ : β}
:
(x₁, y₁) = (x₂, y₂) → ⦃P : Sort u_5⦄ → (x₁ = x₂ → y₁ = y₂ → P) → P
Instances For
theorem
Prod.forall'
{α : Type u_1}
{β : Type u_2}
{p : α → β → Prop}
:
(∀ (x : α × β), p x.1 x.2) ↔ ∀ (a : α) (b : β), p a b
theorem
Prod.exists'
{α : Type u_1}
{β : Type u_2}
{p : α → β → Prop}
:
(∃ (x : α × β), p x.1 x.2) ↔ ∃ (a : α) (b : β), p a b
@[simp]
theorem
Prod.mk_inj
{α : Type u_1}
{β : Type u_2}
{a₁ a₂ : α}
{b₁ b₂ : β}
:
(a₁, b₁) = (a₂, b₂) ↔ a₁ = a₂ ∧ b₁ = b₂
theorem
Prod.mk_left_injective
{α : Type u_5}
{β : Type u_6}
(b : β)
:
Function.Injective fun (a : α) => (a, b)
theorem
Prod.mk_right_inj
{α : Type u_1}
{β : Type u_2}
{a : α}
{b₁ b₂ : β}
:
(a, b₁) = (a, b₂) ↔ b₁ = b₂
theorem
Prod.mk_left_inj
{α : Type u_1}
{β : Type u_2}
{a₁ a₂ : α}
{b : β}
:
(a₁, b) = (a₂, b) ↔ a₁ = a₂
@[simp]
@[simp]
theorem
Function.Semiconj.swap_map
{α : Type u_1}
{β : Type u_2}
(f : α → α)
(g : β → β)
:
Semiconj Prod.swap (Prod.map f g) (Prod.map g f)
theorem
Prod.eq_iff_fst_eq_snd_eq
{α : Type u_1}
{β : Type u_2}
{p q : α × β}
:
p = q ↔ p.1 = q.1 ∧ p.2 = q.2
@[implicit_reducible]
instance
Prod.Lex.decidable
{α : Type u_1}
{β : Type u_2}
[DecidableEq α]
(r : α → α → Prop)
(s : β → β → Prop)
[DecidableRel r]
[DecidableRel s]
:
DecidableRel (Prod.Lex r s)
instance
Prod.instAntisymmLexOfIsStrictOrder
{α : Type u_1}
{β : Type u_2}
{r : α → α → Prop}
{s : β → β → Prop}
[IsStrictOrder α r]
[Std.Antisymm s]
:
Std.Antisymm (Prod.Lex r s)
theorem
Function.Involutive.prodMap
{α : Type u_1}
{β : Type u_2}
{f : α → α}
{g : β → β}
:
Involutive f → Involutive g → Involutive (Prod.map f g)
@[simp]
theorem
Prod.map_bijective
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
{δ : Type u_4}
[Nonempty α]
[Nonempty β]
{f : α → γ}
{g : β → δ}
:
Function.Bijective (map f g) ↔ Function.Bijective f ∧ Function.Bijective g
@[simp]
theorem
Prod.map_involutive
{α : Type u_1}
{β : Type u_2}
[Nonempty α]
[Nonempty β]
{f : α → α}
{g : β → β}
:
Function.Involutive (map f g) ↔ Function.Involutive f ∧ Function.Involutive g
Delaborator for Prod.fst x as x.1.
Instances For
Delaborator for Prod.snd x as x.2.