@[instance]
def
sigma.decidable_eq
{α : Type u_1}
{β : α → Type u_4}
[h₁ : decidable_eq α]
[h₂ : Π (a : α), decidable_eq (β a)] :
decidable_eq (sigma β)
Equations
- sigma.decidable_eq ⟨a₁, b₁⟩ ⟨a₂, b₂⟩ = sigma.decidable_eq._match_1 a₁ b₁ a₂ b₂ (h₁ a₁ a₂)
- sigma.decidable_eq._match_1 a b₁ a b₂ (is_true _) = sigma.decidable_eq._match_2 a b₁ b₂ (h₂ a b₁ b₂)
- sigma.decidable_eq._match_1 a₁ _x a₂ _x_1 (is_false n) = is_false _
- sigma.decidable_eq._match_2 a b b (is_true _) = is_true _
- sigma.decidable_eq._match_2 a b₁ b₂ (is_false n) = is_false _
@[simp]
@[simp]
theorem
function.injective.sigma_map
{α₁ : Type u_2}
{α₂ : Type u_3}
{β₁ : α₁ → Type u_5}
{β₂ : α₂ → Type u_6}
{f₁ : α₁ → α₂}
{f₂ : Π (a : α₁), β₁ a → β₂ (f₁ a)}
(h₁ : function.injective f₁)
(h₂ : ∀ (a : α₁), function.injective (f₂ a)) :
function.injective (sigma.map f₁ f₂)
theorem
function.surjective.sigma_map
{α₁ : Type u_2}
{α₂ : Type u_3}
{β₁ : α₁ → Type u_5}
{β₂ : α₂ → Type u_6}
{f₁ : α₁ → α₂}
{f₂ : Π (a : α₁), β₁ a → β₂ (f₁ a)}
(h₁ : function.surjective f₁)
(h₂ : ∀ (a : α₁), function.surjective (f₂ a)) :
function.surjective (sigma.map f₁ f₂)
def
sigma.curry
{α : Type u_1}
{β : α → Type u_4}
{γ : Π (a : α), β a → Type u_2}
(f : Π (x : sigma β), γ x.fst x.snd)
(x : α)
(y : β x) :
γ x y
Interpret a function on Σ x : α, β x
as a dependent function with two arguments.
Equations
- sigma.curry f x y = f ⟨x, y⟩
def
sigma.uncurry
{α : Type u_1}
{β : α → Type u_4}
{γ : Π (a : α), β a → Type u_2}
(f : Π (x : α) (y : β x), γ x y)
(x : sigma β) :
Interpret a dependent function with two arguments as a function on Σ x : α, β x
Equations
- sigma.uncurry f x = f x.fst x.snd
def
psigma.elim
{α : Sort u_1}
{β : α → Sort u_2}
{γ : Sort u_3}
(f : Π (a : α), β a → γ)
(a : psigma β) :
γ
Nondependent eliminator for psigma
.
Equations
- psigma.elim f a = a.cases_on f
@[simp]
theorem
psigma.elim_val
{α : Sort u_1}
{β : α → Sort u_2}
{γ : Sort u_3}
(f : Π (a : α), β a → γ)
(a : α)
(b : β a) :
psigma.elim f ⟨a, b⟩ = f a b
@[instance]
def
psigma.decidable_eq
{α : Sort u_1}
{β : α → Sort u_2}
[h₁ : decidable_eq α]
[h₂ : Π (a : α), decidable_eq (β a)] :
decidable_eq (psigma β)
Equations
- psigma.decidable_eq ⟨a₁, b₁⟩ ⟨a₂, b₂⟩ = psigma.decidable_eq._match_1 a₁ b₁ a₂ b₂ (h₁ a₁ a₂)
- psigma.decidable_eq._match_1 a b₁ a b₂ (is_true _) = psigma.decidable_eq._match_2 a b₁ b₂ (h₂ a b₁ b₂)
- psigma.decidable_eq._match_1 a₁ _x a₂ _x_1 (is_false n) = is_false _
- psigma.decidable_eq._match_2 a b b (is_true _) = is_true _
- psigma.decidable_eq._match_2 a b₁ b₂ (is_false n) = is_false _
def
psigma.map
{α₁ : Sort u_3}
{α₂ : Sort u_4}
{β₁ : α₁ → Sort u_5}
{β₂ : α₂ → Sort u_6}
(f₁ : α₁ → α₂)
(f₂ : Π (a : α₁), β₁ a → β₂ (f₁ a))
(a : psigma β₁) :
psigma β₂
Map the left and right components of a sigma
Equations
- psigma.map f₁ f₂ ⟨a, b⟩ = ⟨f₁ a, f₂ a b⟩