Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2017 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro

! This file was ported from Lean 3 source module data.fintype.prod
! leanprover-community/mathlib commit 509de852e1de55e1efa8eacfa11df0823f26f226
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Data.Fintype.Card
import Mathlib.Data.Finset.Prod

/-!
# fintype instance for the product of two fintypes.

-/


open Function

open Nat

universe u v

variable {
α: Type ?u.4041
α
β: Type ?u.14
β
γ: Type ?u.17
γ
:
Type _: Type (?u.4493+1)
Type _
} open Finset Function namespace Set variable {
s: Set α
s
t: Set α
t
:
Set: Type ?u.23 → Type ?u.23
Set
α: Type ?u.11
α
} theorem
toFinset_prod: ∀ {α : Type u_1} {β : Type u_2} (s : Set α) (t : Set β) [inst : Fintype s] [inst_1 : Fintype t] [inst_2 : Fintype ↑(s ×ˢ t)], toFinset (s ×ˢ t) = toFinset s ×ˢ toFinset t
toFinset_prod
(
s: Set α
s
:
Set: Type ?u.41 → Type ?u.41
Set
α: Type ?u.26
α
) (
t: Set β
t
:
Set: Type ?u.44 → Type ?u.44
Set
β: Type ?u.29
β
) [
Fintype: Type ?u.47 → Type ?u.47
Fintype
s: Set α
s
] [
Fintype: Type ?u.179 → Type ?u.179
Fintype
t: Set β
t
] [
Fintype: Type ?u.311 → Type ?u.311
Fintype
(
s: Set α
s
×ˢ
t: Set β
t
)] : (
s: Set α
s
×ˢ
t: Set β
t
).
toFinset: {α : Type ?u.516} → (s : Set α) → [inst : Fintype s] → Finset α
toFinset
=
s: Set α
s
.
toFinset: {α : Type ?u.538} → (s : Set α) → [inst : Fintype s] → Finset α
toFinset
×ˢ
t: Set β
t
.
toFinset: {α : Type ?u.564} → (s : Set α) → [inst : Fintype s] → Finset α
toFinset
:=

Goals accomplished! 🐙
α: Type u_1

β: Type u_2

γ: Type ?u.32

s✝, t✝, s: Set α

t: Set β

inst✝²: Fintype s

inst✝¹: Fintype t

inst✝: Fintype ↑(s ×ˢ t)


α: Type u_1

β: Type u_2

γ: Type ?u.32

s✝, t✝, s: Set α

t: Set β

inst✝²: Fintype s

inst✝¹: Fintype t

inst✝: Fintype ↑(s ×ˢ t)

a✝: α × β


a
α: Type u_1

β: Type u_2

γ: Type ?u.32

s✝, t✝, s: Set α

t: Set β

inst✝²: Fintype s

inst✝¹: Fintype t

inst✝: Fintype ↑(s ×ˢ t)



Goals accomplished! 🐙
#align set.to_finset_prod
Set.toFinset_prod: ∀ {α : Type u_1} {β : Type u_2} (s : Set α) (t : Set β) [inst : Fintype s] [inst_1 : Fintype t] [inst_2 : Fintype ↑(s ×ˢ t)], toFinset (s ×ˢ t) = toFinset s ×ˢ toFinset t
Set.toFinset_prod
theorem
toFinset_off_diag: ∀ {α : Type u_1} {s : Set α} [inst : DecidableEq α] [inst_1 : Fintype s] [inst_2 : Fintype ↑(offDiag s)], toFinset (offDiag s) = Finset.offDiag (toFinset s)
toFinset_off_diag
{
s: Set α
s
:
Set: Type ?u.1006 → Type ?u.1006
Set
α: Type ?u.991
α
} [
DecidableEq: Sort ?u.1009 → Sort (max1?u.1009)
DecidableEq
α: Type ?u.991
α
] [
Fintype: Type ?u.1018 → Type ?u.1018
Fintype
s: Set α
s
] [
Fintype: Type ?u.1150 → Type ?u.1150
Fintype
s: Set α
s
.
offDiag: {α : Type ?u.1151} → Set αSet (α × α)
offDiag
] :
s: Set α
s
.
offDiag: {α : Type ?u.1281} → Set αSet (α × α)
offDiag
.
toFinset: {α : Type ?u.1284} → (s : Set α) → [inst : Fintype s] → Finset α
toFinset
=
s: Set α
s
.
toFinset: {α : Type ?u.1302} → (s : Set α) → [inst : Fintype s] → Finset α
toFinset
.
offDiag: {α : Type ?u.1322} → [inst : DecidableEq α] → Finset αFinset (α × α)
offDiag
:=
Finset.ext: ∀ {α : Type ?u.1377} {s₁ s₂ : Finset α}, (∀ (a : α), a s₁ a s₂) → s₁ = s₂
Finset.ext
<|

Goals accomplished! 🐙
α: Type u_1

β: Type ?u.994

γ: Type ?u.997

s✝, t, s: Set α

inst✝²: DecidableEq α

inst✝¹: Fintype s

inst✝: Fintype ↑(offDiag s)


∀ (a : α × α), a toFinset (offDiag s) a Finset.offDiag (toFinset s)

Goals accomplished! 🐙
#align set.to_finset_off_diag
Set.toFinset_off_diag: ∀ {α : Type u_1} {s : Set α} [inst : DecidableEq α] [inst_1 : Fintype s] [inst_2 : Fintype ↑(offDiag s)], toFinset (offDiag s) = Finset.offDiag (toFinset s)
Set.toFinset_off_diag
end Set
instance: (α : Type u_1) → (β : Type u_2) → [inst : Fintype α] → [inst : Fintype β] → Fintype (α × β)
instance
(
α: Type ?u.3500
α
β: Type ?u.3503
β
:
Type _: Type (?u.3500+1)
Type _
) [
Fintype: Type ?u.3506 → Type ?u.3506
Fintype
α: Type ?u.3500
α
] [
Fintype: Type ?u.3509 → Type ?u.3509
Fintype
β: Type ?u.3503
β
] :
Fintype: Type ?u.3512 → Type ?u.3512
Fintype
(
α: Type ?u.3500
α
×
β: Type ?u.3503
β
) := ⟨
univ: {α : Type ?u.3530} → [inst : Fintype α] → Finset α
univ
×ˢ
univ: {α : Type ?u.3557} → [inst : Fintype α] → Finset α
univ
, fun
a: α
a
,
b: β
b
⟩ =>

Goals accomplished! 🐙
α✝: Type ?u.3491

β✝: Type ?u.3494

γ: Type ?u.3497

α: Type ?u.3500

β: Type ?u.3503

inst✝¹: Fintype α

inst✝: Fintype β

x✝: α × β

a: α

b: β


(a, b) univ ×ˢ univ

Goals accomplished! 🐙
⟩ @[simp] theorem
Finset.univ_product_univ: ∀ {α : Type u_1} {β : Type u_2} [inst : Fintype α] [inst_1 : Fintype β], univ ×ˢ univ = univ
Finset.univ_product_univ
{
α: Type ?u.4050
α
β: Type u_2
β
:
Type _: Type (?u.4053+1)
Type _
} [
Fintype: Type ?u.4056 → Type ?u.4056
Fintype
α: Type ?u.4050
α
] [
Fintype: Type ?u.4059 → Type ?u.4059
Fintype
β: Type ?u.4053
β
] : (
univ: {α : Type ?u.4068} → [inst : Fintype α] → Finset α
univ
:
Finset: Type ?u.4067 → Type ?u.4067
Finset
α: Type ?u.4050
α
) ×ˢ (
univ: {α : Type ?u.4105} → [inst : Fintype α] → Finset α
univ
:
Finset: Type ?u.4104 → Type ?u.4104
Finset
β: Type ?u.4053
β
) =
univ: {α : Type ?u.4167} → [inst : Fintype α] → Finset α
univ
:=
rfl: ∀ {α : Sort ?u.4279} {a : α}, a = a
rfl
#align finset.univ_product_univ
Finset.univ_product_univ: ∀ {α : Type u_1} {β : Type u_2} [inst : Fintype α] [inst_1 : Fintype β], univ ×ˢ univ = univ
Finset.univ_product_univ
@[simp] theorem
Fintype.card_prod: ∀ (α : Type u_1) (β : Type u_2) [inst : Fintype α] [inst_1 : Fintype β], card (α × β) = card α * card β
Fintype.card_prod
(
α: Type u_1
α
β: Type ?u.4325
β
:
Type _: Type (?u.4325+1)
Type _
) [
Fintype: Type ?u.4328 → Type ?u.4328
Fintype
α: Type ?u.4322
α
] [
Fintype: Type ?u.4331 → Type ?u.4331
Fintype
β: Type ?u.4325
β
] :
Fintype.card: (α : Type ?u.4335) → [inst : Fintype α] →
Fintype.card
(
α: Type ?u.4322
α
×
β: Type ?u.4325
β
) =
Fintype.card: (α : Type ?u.4365) → [inst : Fintype α] →
Fintype.card
α: Type ?u.4322
α
*
Fintype.card: (α : Type ?u.4370) → [inst : Fintype α] →
Fintype.card
β: Type ?u.4325
β
:=
card_product: ∀ {α : Type ?u.4426} {β : Type ?u.4427} (s : Finset α) (t : Finset β), Finset.card (s ×ˢ t) = Finset.card s * Finset.card t
card_product
_: Finset ?m.4428
_
_: Finset ?m.4429
_
#align fintype.card_prod
Fintype.card_prod: ∀ (α : Type u_1) (β : Type u_2) [inst : Fintype α] [inst_1 : Fintype β], Fintype.card (α × β) = Fintype.card α * Fintype.card β
Fintype.card_prod
section open Classical @[simp] theorem
infinite_prod: ∀ {α : Type u_2} {β : Type u_1}, Infinite (α × β) Infinite α Nonempty β Nonempty α Infinite β
infinite_prod
:
Infinite: Sort ?u.4499 → Prop
Infinite
(
α: Type ?u.4490
α
×
β: Type ?u.4493
β
) ↔
Infinite: Sort ?u.4502 → Prop
Infinite
α: Type ?u.4490
α
Nonempty: Sort ?u.4503 → Prop
Nonempty
β: Type ?u.4493
β
Nonempty: Sort ?u.4504 → Prop
Nonempty
α: Type ?u.4490
α
Infinite: Sort ?u.4505 → Prop
Infinite
β: Type ?u.4493
β
:=

Goals accomplished! 🐙
α: Type u_2

β: Type u_1

γ: Type ?u.4496


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: Infinite (α × β)


α: Type u_2

β: Type u_1

γ: Type ?u.4496


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: Infinite (α × β)


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: Infinite (α × β)


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: Infinite (α × β)


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: Infinite (α × β)


α: Type u_2

β: Type u_1

γ: Type ?u.4496


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: (Nonempty β¬Infinite α) (Nonempty α¬Infinite β)


¬Infinite (α × β)
α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: (Nonempty β¬Infinite α) (Nonempty α¬Infinite β)


¬Infinite (α × β)
α: Type u_2

β: Type u_1

γ: Type ?u.4496


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: (Nonempty β¬Infinite α) (Nonempty α¬Infinite β)

H': Infinite (α × β)


α: Type u_2

β: Type u_1

γ: Type ?u.4496


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: (Nonempty β¬Infinite α) (Nonempty α¬Infinite β)

H': Infinite (α × β)

a: α

b: β


intro.mk
α: Type u_2

β: Type u_1

γ: Type ?u.4496


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: (Nonempty β¬Infinite α) (Nonempty α¬Infinite β)

H': Infinite (α × β)

a: α

b: β

this: Fintype α


intro.mk
α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: (Nonempty β¬Infinite α) (Nonempty α¬Infinite β)

H': Infinite (α × β)

a: α

b: β

this: Fintype α


intro.mk
α: Type u_2

β: Type u_1

γ: Type ?u.4496


α: Type u_2

β: Type u_1

γ: Type ?u.4496

H: (Nonempty β¬Infinite α) (Nonempty α¬Infinite β)

H': Infinite (α × β)

a: α

b: β

this✝: Fintype α

this: Fintype β


intro.mk
α: Type u_2

β: Type u_1

γ: Type ?u.4496



Goals accomplished! 🐙
#align infinite_prod
infinite_prod: ∀ {α : Type u_2} {β : Type u_1}, Infinite (α × β) Infinite α Nonempty β Nonempty α Infinite β
infinite_prod
instance
Pi.infinite_of_left: ∀ {ι : Sort u_1} {π : ιType u_2} [inst : ∀ (i : ι), Nontrivial (π i)] [inst : Infinite ι], Infinite ((i : ι) → π i)
Pi.infinite_of_left
{
ι: Sort ?u.4811
ι
:
Sort _: Type ?u.4811
Sort
Sort _: Type ?u.4811
_
} {
π: ιType ?u.4823
π
:
ι: Sort ?u.4811
ι
Sort _: Type ?u.4816
Sort
Sort _: Type ?u.4816
_
} [∀
i: ?m.4820
i
,
Nontrivial: Type ?u.4823 → Prop
Nontrivial
<|
π: ιSort ?u.4816
π
i: ?m.4820
i
] [
Infinite: Sort ?u.4827 → Prop
Infinite
ι: Sort ?u.4811
ι
] :
Infinite: Sort ?u.4830 → Prop
Infinite
(∀
i: ι
i
:
ι: Sort ?u.4811
ι
,
π: ιSort ?u.4816
π
i: ι
i
) :=

Goals accomplished! 🐙
α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι


Infinite ((i : ι) → π i)
α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι

m, n: (i : ι) → π i

hm: ∀ (i : ι), m i n i


Infinite ((i : ι) → π i)
α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι


Infinite ((i : ι) → π i)
α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι

m, n: (i : ι) → π i

hm: ∀ (i : ι), m i n i

x, y: ι

h: (fun i => update m i (n i)) x = (fun i => update m i (n i)) y

hne: ¬x = y


α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι


Infinite ((i : ι) → π i)
α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι

m, n: (i : ι) → π i

hm: ∀ (i : ι), m i n i

x, y: ι

h: update m x (n x) = update m y (n y)

hne: ¬x = y


α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι

m, n: (i : ι) → π i

hm: ∀ (i : ι), m i n i

x, y: ι

hne: ¬x = y

h: n x = update m y (n y) x ∀ (x_1 : ι), x_1 xm x_1 = update m y (n y) x_1


α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι

m, n: (i : ι) → π i

hm: ∀ (i : ι), m i n i

x, y: ι

h: (fun i => update m i (n i)) x = (fun i => update m i (n i)) y

hne: ¬x = y


α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι

m, n: (i : ι) → π i

hm: ∀ (i : ι), m i n i

x, y: ι

hne: ¬x = y

h: n x = m x ∀ (x_1 : ι), x_1 xm x_1 = update m y (n y) x_1


α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι

m, n: (i : ι) → π i

hm: ∀ (i : ι), m i n i

x, y: ι

hne: ¬x = y

h: n x = m x ∀ (x_1 : ι), x_1 xm x_1 = update m y (n y) x_1


α: Type ?u.4802

β: Type ?u.4805

γ: Type ?u.4808

ι: Sort ?u.4811

π: ιType ?u.4823

inst✝¹: ∀ (i : ι), Nontrivial (π i)

inst✝: Infinite ι


Infinite ((i : ι) → π i)

Goals accomplished! 🐙
#align pi.infinite_of_left
Pi.infinite_of_left: ∀ {ι : Sort u_1} {π : ιType u_2} [inst : ∀ (i : ι), Nontrivial (π i)] [inst : Infinite ι], Infinite ((i : ι) → π i)
Pi.infinite_of_left
/-- If at least one `π i` is infinite and the rest nonempty, the pi type of all `π` is infinite. -/ theorem
Pi.infinite_of_exists_right: ∀ {ι : Type u_1} {π : ιType u_2} (i : ι) [inst : Infinite (π i)] [inst : ∀ (i : ι), Nonempty (π i)], Infinite ((i : ι) → π i)
Pi.infinite_of_exists_right
{
ι: Type ?u.6381
ι
:
Type _: Type (?u.6381+1)
Type _
} {
π: ιType u_2
π
:
ι: Type ?u.6381
ι
Type _: Type (?u.6386+1)
Type _
} (
i: ι
i
:
ι: Type ?u.6381
ι
) [
Infinite: Sort ?u.6391 → Prop
Infinite
<|
π: ιType ?u.6386
π
i: ι
i
] [∀
i: ?m.6395
i
,
Nonempty: Sort ?u.6398 → Prop
Nonempty
<|
π: ιType ?u.6386
π
i: ?m.6395
i
] :
Infinite: Sort ?u.6402 → Prop
Infinite
(∀
i: ι
i
:
ι: Type ?u.6381
ι
,
π: ιType ?u.6386
π
i: ι
i
) := let
m: (i : ι) → π i
m
⟩ := @
Pi.Nonempty: ∀ {ι : Sort ?u.6414} {α : ιSort ?u.6413} [inst : ∀ (i : ι), Nonempty (α i)], Nonempty ((i : ι) → α i)
Pi.Nonempty
ι: Type u_1
ι
π: ιType u_2
π
_
Infinite.of_injective: ∀ {α : Sort ?u.6463} {β : Sort ?u.6464} [inst : Infinite β] (f : βα), Injective fInfinite α
Infinite.of_injective
_: ?m.6466?m.6465
_
(
update_injective: ∀ {α : Sort ?u.6493} {β : αSort ?u.6492} [inst : DecidableEq α] (f : (a : α) → β a) (a' : α), Injective (update f a')
update_injective
m: (i : ι) → π i
m
i: ι
i
) #align pi.infinite_of_exists_right
Pi.infinite_of_exists_right: ∀ {ι : Type u_1} {π : ιType u_2} (i : ι) [inst : Infinite (π i)] [inst : ∀ (i : ι), Nonempty (π i)], Infinite ((i : ι) → π i)
Pi.infinite_of_exists_right
/-- See `Pi.infinite_of_exists_right` for the case that only one `π i` is infinite. -/ instance
Pi.infinite_of_right: ∀ {ι : Type u_1} {π : ιType u_2} [inst : ∀ (i : ι), Infinite (π i)] [inst : Nonempty ι], Infinite ((i : ι) → π i)
Pi.infinite_of_right
{
ι: Sort ?u.6738
ι
:
Sort _: Type ?u.6738
Sort
Sort _: Type ?u.6738
_
} {
π: ιSort ?u.6743
π
:
ι: Sort ?u.6738
ι
Sort _: Type ?u.6743
Sort
Sort _: Type ?u.6743
_
} [∀
i: ?m.6747
i
,
Infinite: Sort ?u.6750 → Prop
Infinite
<|
π: ιSort ?u.6743
π
i: ?m.6747
i
] [
Nonempty: Sort ?u.6754 → Prop
Nonempty
ι: Sort ?u.6738
ι
] :
Infinite: Sort ?u.6757 → Prop
Infinite
(∀
i: ι
i
:
ι: Sort ?u.6738
ι
,
π: ιSort ?u.6743
π
i: ι
i
) :=
Pi.infinite_of_exists_right: ∀ {ι : Type ?u.6768} {π : ιType ?u.6769} (i : ι) [inst : Infinite (π i)] [inst : ∀ (i : ι), Nonempty (π i)], Infinite ((i : ι) → π i)
Pi.infinite_of_exists_right
(
Classical.arbitrary: (α : Sort ?u.6776) → [h : Nonempty α] → α
Classical.arbitrary
ι: Sort ?u.6738
ι
) #align pi.infinite_of_right
Pi.infinite_of_right: ∀ {ι : Type u_1} {π : ιType u_2} [inst : ∀ (i : ι), Infinite (π i)] [inst : Nonempty ι], Infinite ((i : ι) → π i)
Pi.infinite_of_right
/-- Non-dependent version of `Pi.infinite_of_left`. -/ instance
Function.infinite_of_left: ∀ {ι : Sort u_1} {π : Type u_2} [inst : Nontrivial π] [inst : Infinite ι], Infinite (ιπ)
Function.infinite_of_left
{
ι: Sort ?u.7622
ι
π: Sort ?u.7625
π
:
Sort _: Type ?u.7625
Sort
Sort _: Type ?u.7625
_
} [
Nontrivial: Type ?u.7628 → Prop
Nontrivial
π: Sort ?u.7625
π
] [
Infinite: Sort ?u.7631 → Prop
Infinite
ι: Sort ?u.7622
ι
] :
Infinite: Sort ?u.7634 → Prop
Infinite
(
ι: Sort ?u.7622
ι
π: Sort ?u.7625
π
) :=
Pi.infinite_of_left: ∀ {ι : Sort ?u.7645} {π : ιType ?u.7644} [inst : ∀ (i : ι), Nontrivial (π i)] [inst : Infinite ι], Infinite ((i : ι) → π i)
Pi.infinite_of_left
#align function.infinite_of_left
Function.infinite_of_left: ∀ {ι : Sort u_1} {π : Type u_2} [inst : Nontrivial π] [inst : Infinite ι], Infinite (ιπ)
Function.infinite_of_left
/-- Non-dependent version of `Pi.infinite_of_exists_right` and `Pi.infinite_of_right`. -/ instance
Function.infinite_of_right: ∀ {ι : Type u_1} {π : Type u_2} [inst : Infinite π] [inst : Nonempty ι], Infinite (ιπ)
Function.infinite_of_right
{
ι: Sort ?u.7780
ι
π: Sort ?u.7783
π
:
Sort _: Type ?u.7783
Sort
Sort _: Type ?u.7783
_
} [
Infinite: Sort ?u.7786 → Prop
Infinite
π: Sort ?u.7783
π
] [
Nonempty: Sort ?u.7789 → Prop
Nonempty
ι: Sort ?u.7780
ι
] :
Infinite: Sort ?u.7792 → Prop
Infinite
(
ι: Sort ?u.7780
ι
π: Sort ?u.7783
π
) :=
Pi.infinite_of_right: ∀ {ι : Type ?u.7803} {π : ιType ?u.7802} [inst : ∀ (i : ι), Infinite (π i)] [inst : Nonempty ι], Infinite ((i : ι) → π i)
Pi.infinite_of_right
#align function.infinite_of_right
Function.infinite_of_right: ∀ {ι : Type u_1} {π : Type u_2} [inst : Infinite π] [inst : Nonempty ι], Infinite (ιπ)
Function.infinite_of_right
end