Instances and theorems on pi types #
This file provides basic definitions and notation instances for Pi types.
Instances of more sophisticated classes are defined in pi.lean
files elsewhere.
1
, 0
, +
, *
, -
, ⁻¹
, and /
are defined pointwise.
@[protected, instance]
def
pi.has_zero
{I : Type u}
{f : I → Type v₁}
[Π (i : I), has_zero (f i)] :
has_zero (Π (i : I), f i)
@[protected, instance]
Equations
- pi.has_one = {one := λ (_x : I), 1}
@[simp]
@[simp]
@[protected, instance]
Equations
- pi.has_mul = {mul := λ (f_1 g : Π (i : I), f i) (i : I), (f_1 i) * g i}
@[protected, instance]
@[protected, instance]
Equations
- pi.has_inv = {inv := λ (f_1 : Π (i : I), f i) (i : I), (f_1 i)⁻¹}
@[protected, instance]
@[protected, instance]
@[protected, instance]
Equations
- pi.has_div = {div := λ (f_1 g : Π (i : I), f i) (i : I), f_1 i / g i}
def
pi.single
{I : Type u}
{f : I → Type v₁}
[decidable_eq I]
[Π (i : I), has_zero (f i)]
(i : I)
(x : f i)
(i_1 : I) :
f i_1
The function supported at i
, with value x
there.
Equations
- pi.single i x = function.update 0 i x
@[simp]
theorem
pi.single_eq_same
{I : Type u}
{f : I → Type v₁}
[decidable_eq I]
[Π (i : I), has_zero (f i)]
(i : I)
(x : f i) :
@[simp]
theorem
pi.single_eq_of_ne
{I : Type u}
{f : I → Type v₁}
[decidable_eq I]
[Π (i : I), has_zero (f i)]
{i i' : I}
(h : i' ≠ i)
(x : f i) :
@[simp]
theorem
pi.single_zero
{I : Type u}
{f : I → Type v₁}
[decidable_eq I]
[Π (i : I), has_zero (f i)]
(i : I) :
theorem
pi.apply_single
{I : Type u}
{f : I → Type v₁}
{g : I → Type v₂}
[decidable_eq I]
[Π (i : I), has_zero (f i)]
[Π (i : I), has_zero (g i)]
(f' : Π (i : I), f i → g i)
(hf' : ∀ (i : I), f' i 0 = 0)
(i : I)
(x : f i)
(j : I) :
theorem
pi.apply_single₂
{I : Type u}
{f : I → Type v₁}
{g : I → Type v₂}
{h : I → Type v₃}
[decidable_eq I]
[Π (i : I), has_zero (f i)]
[Π (i : I), has_zero (g i)]
[Π (i : I), has_zero (h i)]
(f' : Π (i : I), f i → g i → h i)
(hf' : ∀ (i : I), f' i 0 0 = 0)
(i : I)
(x : f i)
(y : g i)
(j : I) :
theorem
pi.single_op
{I : Type u}
{f : I → Type v₁}
[decidable_eq I]
[Π (i : I), has_zero (f i)]
{g : I → Type u_1}
[Π (i : I), has_zero (g i)]
(op : Π (i : I), f i → g i)
(h : ∀ (i : I), op i 0 = 0)
(i : I)
(x : f i) :
theorem
pi.single_op₂
{I : Type u}
{f : I → Type v₁}
[decidable_eq I]
[Π (i : I), has_zero (f i)]
{g₁ : I → Type u_1}
{g₂ : I → Type u_2}
[Π (i : I), has_zero (g₁ i)]
[Π (i : I), has_zero (g₂ i)]
(op : Π (i : I), g₁ i → g₂ i → f i)
(h : ∀ (i : I), op i 0 0 = 0)
(i : I)
(x₁ : g₁ i)
(x₂ : g₂ i) :
theorem
pi.single_injective
{I : Type u}
(f : I → Type v₁)
[decidable_eq I]
[Π (i : I), has_zero (f i)]
(i : I) :
theorem
subsingleton.pi_single_eq
{I : Type u}
{α : Type u_1}
[decidable_eq I]
[subsingleton I]
[has_zero α]
(i : I)
(x : α) :