Very basic algebraic operations on pi types #
This file provides very basic algebraic operations on functions.
def
Pi.mulSingle
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → One (M i)]
[DecidableEq ι]
(i : ι)
(x : M i)
(j : ι)
:
M j
The function supported at i
, with value x
there, and 1
elsewhere.
Equations
- Pi.mulSingle i x = Function.update 1 i x
Instances For
def
Pi.single
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → Zero (M i)]
[DecidableEq ι]
(i : ι)
(x : M i)
(j : ι)
:
M j
The function supported at i
, with value x
there, and 0
elsewhere.
Equations
- Pi.single i x = Function.update 0 i x
Instances For
@[simp]
theorem
Pi.mulSingle_eq_same
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → One (M i)]
[DecidableEq ι]
(i : ι)
(x : M i)
:
@[simp]
theorem
Pi.single_eq_same
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → Zero (M i)]
[DecidableEq ι]
(i : ι)
(x : M i)
:
@[simp]
theorem
Pi.mulSingle_eq_of_ne
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → One (M i)]
[DecidableEq ι]
{i i' : ι}
(h : i' ≠ i)
(x : M i)
:
@[simp]
theorem
Pi.single_eq_of_ne
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → Zero (M i)]
[DecidableEq ι]
{i i' : ι}
(h : i' ≠ i)
(x : M i)
:
@[simp]
theorem
Pi.mulSingle_eq_of_ne'
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → One (M i)]
[DecidableEq ι]
{i i' : ι}
(h : i ≠ i')
(x : M i)
:
Abbreviation for mulSingle_eq_of_ne h.symm
, for ease of use by simp
.
@[simp]
theorem
Pi.single_eq_of_ne'
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → Zero (M i)]
[DecidableEq ι]
{i i' : ι}
(h : i ≠ i')
(x : M i)
:
Abbreviation for single_eq_of_ne h.symm
, for ease of use by simp
.
@[simp]
theorem
Pi.mulSingle_one
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → One (M i)]
[DecidableEq ι]
(i : ι)
:
@[simp]
theorem
Pi.single_zero
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → Zero (M i)]
[DecidableEq ι]
(i : ι)
:
@[simp]
theorem
Pi.mulSingle_eq_one_iff
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → One (M i)]
[DecidableEq ι]
{i : ι}
{x : M i}
:
@[simp]
theorem
Pi.single_eq_zero_iff
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → Zero (M i)]
[DecidableEq ι]
{i : ι}
{x : M i}
:
theorem
Pi.mulSingle_ne_one_iff
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → One (M i)]
[DecidableEq ι]
{i : ι}
{x : M i}
:
theorem
Pi.single_ne_zero_iff
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → Zero (M i)]
[DecidableEq ι]
{i : ι}
{x : M i}
:
theorem
Pi.apply_mulSingle₂
{ι : Type u_1}
{M : ι → Type u_5}
{N : ι → Type u_6}
{O : ι → Type u_7}
[(i : ι) → One (M i)]
[(i : ι) → One (N i)]
[(i : ι) → One (O i)]
[DecidableEq ι]
(f' : (i : ι) → M i → N i → O i)
(hf' : ∀ (i : ι), f' i 1 1 = 1)
(i : ι)
(x : M i)
(y : N i)
(j : ι)
:
theorem
Pi.apply_single₂
{ι : Type u_1}
{M : ι → Type u_5}
{N : ι → Type u_6}
{O : ι → Type u_7}
[(i : ι) → Zero (M i)]
[(i : ι) → Zero (N i)]
[(i : ι) → Zero (O i)]
[DecidableEq ι]
(f' : (i : ι) → M i → N i → O i)
(hf' : ∀ (i : ι), f' i 0 0 = 0)
(i : ι)
(x : M i)
(y : N i)
(j : ι)
:
theorem
Pi.mulSingle_op₂
{ι : Type u_1}
{M : ι → Type u_5}
{N : ι → Type u_6}
{O : ι → Type u_7}
[(i : ι) → One (M i)]
[(i : ι) → One (N i)]
[(i : ι) → One (O i)]
[DecidableEq ι]
(op : (i : ι) → M i → N i → O i)
(h : ∀ (i : ι), op i 1 1 = 1)
(i : ι)
(x : M i)
(y : N i)
:
theorem
Pi.single_op₂
{ι : Type u_1}
{M : ι → Type u_5}
{N : ι → Type u_6}
{O : ι → Type u_7}
[(i : ι) → Zero (M i)]
[(i : ι) → Zero (N i)]
[(i : ι) → Zero (O i)]
[DecidableEq ι]
(op : (i : ι) → M i → N i → O i)
(h : ∀ (i : ι), op i 0 0 = 0)
(i : ι)
(x : M i)
(y : N i)
:
theorem
Pi.mulSingle_injective
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → One (M i)]
[DecidableEq ι]
(i : ι)
:
theorem
Pi.single_injective
{ι : Type u_1}
{M : ι → Type u_5}
[(i : ι) → Zero (M i)]
[DecidableEq ι]
(i : ι)
:
theorem
Pi.mulSingle_apply
{ι : Type u_1}
[DecidableEq ι]
{M : Type u_8}
[One M]
(i : ι)
(x : M)
(i' : ι)
:
On non-dependent functions, Pi.mulSingle
can be expressed as an ite
theorem
Pi.mulSingle_comm
{ι : Type u_1}
[DecidableEq ι]
{M : Type u_8}
[One M]
(i : ι)
(x : M)
(j : ι)
:
On non-dependent functions, Pi.mulSingle
is symmetric in the two indices.
theorem
Pi.single_comm
{ι : Type u_1}
[DecidableEq ι]
{M : Type u_8}
[Zero M]
(i : ι)
(x : M)
(j : ι)
:
On non-dependent functions, Pi.single
is symmetric in the two indices.