tasksource/leandojo huggingface dataset:
Theorem: Finset.left_mem_Ico
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: simp only [mem_Ico, true_and_iff, le_refl]
state_before: ι : Type ?u.4228
α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ a ∈ Ico a b ↔ a < b
Theorem: IsClosed.isGδ
File: Mathlib/Topology/GDelta.lean

tactic: rcases(@uniformity_hasBasis_open α _).exists_antitone_subbasis with ⟨U, hUo, hU, -⟩
state_before: α✝ : Type ?u.10695
β : Type ?u.10698
γ : Type ?u.10701
ι : Type ?u.10704
inst✝² : TopologicalSpace α✝
α : Type u_1
inst✝¹ : UniformSpace α
inst✝ : IsCountablyGenerated (uniformity α)
s : Set α
hs : IsClosed s
⊢ IsGδ s

tactic: rw [← hs.closure_eq, ← hU.biInter_biUnion_ball]
state_before: case intro.intro.mk
α✝ : Type ?u.10695
β : Type ?u.10698
γ : Type ?u.10701
ι : Type ?u.10704
inst✝² : TopologicalSpace α✝
α : Type u_1
inst✝¹ : UniformSpace α
inst✝ : IsCountablyGenerated (uniformity α)
s : Set α
hs : IsClosed s
U : ℕ → Set (α × α)
hUo : ∀ (i : ℕ), U i ∈ uniformity α ∧ IsOpen (U i)
hU : HasBasis (uniformity α) (fun x => True) fun i => id (U i)
⊢ IsGδ s

tactic: refine' isGδ_biInter (to_countable _) fun n _ => IsOpen.isGδ _
state_before: case intro.intro.mk
α✝ : Type ?u.10695
β : Type ?u.10698
γ : Type ?u.10701
ι : Type ?u.10704
inst✝² : TopologicalSpace α✝
α : Type u_1
inst✝¹ : UniformSpace α
inst✝ : IsCountablyGenerated (uniformity α)
s : Set α
hs : IsClosed s
U : ℕ → Set (α × α)
hUo : ∀ (i : ℕ), U i ∈ uniformity α ∧ IsOpen (U i)
hU : HasBasis (uniformity α) (fun x => True) fun i => id (U i)
⊢ IsGδ (⋂ (i : ℕ) (_ : True), ⋃ (x : α) (_ : x ∈ s), UniformSpace.ball x (id (U i)))

tactic: exact isOpen_biUnion fun x _ => UniformSpace.isOpen_ball _ (hUo _).2
state_before: case intro.intro.mk
α✝ : Type ?u.10695
β : Type ?u.10698
γ : Type ?u.10701
ι : Type ?u.10704
inst✝² : TopologicalSpace α✝
α : Type u_1
inst✝¹ : UniformSpace α
inst✝ : IsCountablyGenerated (uniformity α)
s : Set α
hs : IsClosed s
U : ℕ → Set (α × α)
hUo : ∀ (i : ℕ), U i ∈ uniformity α ∧ IsOpen (U i)
hU : HasBasis (uniformity α) (fun x => True) fun i => id (U i)
n : ℕ
x✝ : n ∈ fun i => True
⊢ IsOpen (⋃ (x : α) (_ : x ∈ s), UniformSpace.ball x (id (U n)))
Theorem: LiouvilleNumber.aux_calc
File: Mathlib/NumberTheory/Liouville/LiouvilleNumber.lean

tactic: positivity
state_before: n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 0 ≤ 1 / m ^ (n + 1)!

tactic: apply (div_le_div_iff _ _).mpr
state_before: n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 2 / m ^ (n ! * (n + 1)) ≤ 1 / m ^ (n ! * n)

tactic: conv_rhs => rw [one_mul, mul_add, pow_add, mul_one, pow_mul, mul_comm, ← pow_mul]
state_before: n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 2 * m ^ (n ! * n) ≤ 1 * m ^ (n ! * (n + 1))

n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 0 < m ^ (n ! * (n + 1))

n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 0 < m ^ (n ! * n)

tactic: refine' (mul_le_mul_right _).mpr _
state_before: n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 2 * m ^ (n ! * n) ≤ m ^ n ! * m ^ (n ! * n)

n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 0 < m ^ (n ! * (n + 1))

n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 0 < m ^ (n ! * n)

tactic: any_goals exact pow_pos (zero_lt_two.trans_le hm) _
state_before: case refine'_1
n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 0 < m ^ (n ! * n)

case refine'_2
n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 2 ≤ m ^ n !

n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 0 < m ^ (n ! * (n + 1))

n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 0 < m ^ (n ! * n)

tactic: exact _root_.trans (_root_.trans hm (pow_one _).symm.le)
  (pow_mono (one_le_two.trans hm) n.factorial_pos)
state_before: case refine'_2
n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 2 ≤ m ^ n !

tactic: exact pow_pos (zero_lt_two.trans_le hm) _
state_before: n : ℕ
m : ℝ
hm : 2 ≤ m
⊢ 0 < m ^ (n ! * n)
Theorem: IsClosed.inter
File: Mathlib/Topology/Basic.lean

tactic: rw [← isOpen_compl_iff] at *
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
h₁ : IsClosed s₁
h₂ : IsClosed s₂
⊢ IsClosed (s₁ ∩ s₂)

tactic: rw [compl_inter]
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
h₁ : IsOpen (s₁ᶜ)
h₂ : IsOpen (s₂ᶜ)
⊢ IsOpen ((s₁ ∩ s₂)ᶜ)

tactic: exact IsOpen.union h₁ h₂
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
h₁ : IsOpen (s₁ᶜ)
h₂ : IsOpen (s₂ᶜ)
⊢ IsOpen (s₁ᶜ ∪ s₂ᶜ)
Theorem: ApplicativeTransformation.ext
File: Mathlib/Control/Traversable/Basic.lean

tactic: apply coe_inj
state_before: F : Type u → Type v
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
G : Type u → Type w
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
η η' : ApplicativeTransformation F G
h : ∀ (α : Type u) (x : F α), (fun {α} => app η α) x = (fun {α} => app η' α) x
⊢ η = η'

tactic: ext1 α
state_before: case h
F : Type u → Type v
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
G : Type u → Type w
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
η η' : ApplicativeTransformation F G
h : ∀ (α : Type u) (x : F α), (fun {α} => app η α) x = (fun {α} => app η' α) x
⊢ (fun {α} => app η α) = fun {α} => app η' α

tactic: exact funext (h α)
state_before: case h.h
F : Type u → Type v
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
G : Type u → Type w
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
η η' : ApplicativeTransformation F G
h : ∀ (α : Type u) (x : F α), (fun {α} => app η α) x = (fun {α} => app η' α) x
α : Type u
⊢ app η α = app η' α
Theorem: ENNReal.tendsto_pow_atTop_nhds_0_of_lt_1
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: rcases ENNReal.lt_iff_exists_coe.1 hr with ⟨r, rfl, hr'⟩
state_before: α : Type ?u.42152
β : Type ?u.42155
ι : Type ?u.42158
r : ℝ≥0∞
hr : r < 1
⊢ Tendsto (fun n => r ^ n) atTop (𝓝 0)

tactic: rw [← ENNReal.coe_zero]
state_before: case intro.intro
α : Type ?u.42152
β : Type ?u.42155
ι : Type ?u.42158
r : ℝ≥0
hr' : ↑r < 1
hr : ↑r < 1
⊢ Tendsto (fun n => ↑r ^ n) atTop (𝓝 0)

tactic: norm_cast at *
state_before: case intro.intro
α : Type ?u.42152
β : Type ?u.42155
ι : Type ?u.42158
r : ℝ≥0
hr' : ↑r < 1
hr : ↑r < 1
⊢ Tendsto (fun n => ↑r ^ n) atTop (𝓝 ↑0)

tactic: apply NNReal.tendsto_pow_atTop_nhds_0_of_lt_1 hr
state_before: case intro.intro
α : Type ?u.42152
β : Type ?u.42155
ι : Type ?u.42158
r : ℝ≥0
hr' hr : r < 1
⊢ Tendsto (fun a => r ^ a) atTop (𝓝 0)
Theorem: NormedRing.summable_geometric_of_norm_lt_1
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: have h1 : Summable fun n : ℕ ↦ ‖x‖ ^ n := summable_geometric_of_lt_1 (norm_nonneg _) h
state_before: α : Type ?u.1232352
β : Type ?u.1232355
ι : Type ?u.1232358
R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
x : R
h : ‖x‖ < 1
⊢ Summable fun n => x ^ n

tactic: refine' summable_of_norm_bounded_eventually _ h1 _
state_before: α : Type ?u.1232352
β : Type ?u.1232355
ι : Type ?u.1232358
R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
x : R
h : ‖x‖ < 1
h1 : Summable fun n => ‖x‖ ^ n
⊢ Summable fun n => x ^ n

tactic: rw [Nat.cofinite_eq_atTop]
state_before: α : Type ?u.1232352
β : Type ?u.1232355
ι : Type ?u.1232358
R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
x : R
h : ‖x‖ < 1
h1 : Summable fun n => ‖x‖ ^ n
⊢ ∀ᶠ (i : ℕ) in cofinite, ‖x ^ i‖ ≤ ‖x‖ ^ i

tactic: exact eventually_norm_pow_le x
state_before: α : Type ?u.1232352
β : Type ?u.1232355
ι : Type ?u.1232358
R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
x : R
h : ‖x‖ < 1
h1 : Summable fun n => ‖x‖ ^ n
⊢ ∀ᶠ (i : ℕ) in atTop, ‖x ^ i‖ ≤ ‖x‖ ^ i
Theorem: sInf_le_sInf_of_forall_exists_le
File: Mathlib/Order/CompleteLattice.lean

tactic: simp only [le_sInf_iff]
state_before: α : Type u_1
β : Type ?u.39374
β₂ : Type ?u.39377
γ : Type ?u.39380
ι : Sort ?u.39383
ι' : Sort ?u.39386
κ : ι → Sort ?u.39391
κ' : ι' → Sort ?u.39396
inst✝ : CompleteSemilatticeInf α
s t : Set α
a b : α
h : ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ y ≤ x
⊢ ∀ (c : α), c ≤ sInf t → c ≤ sInf s

tactic: introv h₀ h₁
state_before: α : Type u_1
β : Type ?u.39374
β₂ : Type ?u.39377
γ : Type ?u.39380
ι : Sort ?u.39383
ι' : Sort ?u.39386
κ : ι → Sort ?u.39391
κ' : ι' → Sort ?u.39396
inst✝ : CompleteSemilatticeInf α
s t : Set α
a b : α
h : ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ y ≤ x
⊢ ∀ (c : α), (∀ (b : α), b ∈ t → c ≤ b) → ∀ (b : α), b ∈ s → c ≤ b

tactic: rcases h _ h₁ with ⟨y, hy, hy'⟩
state_before: α : Type u_1
β : Type ?u.39374
β₂ : Type ?u.39377
γ : Type ?u.39380
ι : Sort ?u.39383
ι' : Sort ?u.39386
κ : ι → Sort ?u.39391
κ' : ι' → Sort ?u.39396
inst✝ : CompleteSemilatticeInf α
s t : Set α
a b✝ : α
h : ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ y ≤ x
c : α
h₀ : ∀ (b : α), b ∈ t → c ≤ b
b : α
h₁ : b ∈ s
⊢ c ≤ b

tactic: solve_by_elim [le_trans _ hy']
state_before: case intro.intro
α : Type u_1
β : Type ?u.39374
β₂ : Type ?u.39377
γ : Type ?u.39380
ι : Sort ?u.39383
ι' : Sort ?u.39386
κ : ι → Sort ?u.39391
κ' : ι' → Sort ?u.39396
inst✝ : CompleteSemilatticeInf α
s t : Set α
a b✝ : α
h : ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ y ≤ x
c : α
h₀ : ∀ (b : α), b ∈ t → c ≤ b
b : α
h₁ : b ∈ s
y : α
hy : y ∈ t
hy' : y ≤ b
⊢ c ≤ b
Theorem: AddMonoidAlgebra.lift_apply
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: simp only [lift_apply', Algebra.smul_def]
state_before: k : Type u₁
G : Type u₂
R : Type ?u.2579273
inst✝⁵ : CommSemiring k
inst✝⁴ : AddMonoid G
A : Type u₃
inst✝³ : Semiring A
inst✝² : Algebra k A
B : Type ?u.2579310
inst✝¹ : Semiring B
inst✝ : Algebra k B
F : Multiplicative G →* A
f : MonoidAlgebra k G
⊢ ↑(↑(lift k G A) F) f = sum f fun a b => b • ↑F (↑Multiplicative.ofAdd a)
Theorem: LinearMap.isUnit_det
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: obtain ⟨g, hg⟩ : ∃ g, f.comp g = 1 := hf.exists_right_inv
state_before: R : Type ?u.1057928
inst✝¹¹ : CommRing R
M : Type u_2
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
M' : Type ?u.1058519
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M'
ι : Type ?u.1059061
inst✝⁶ : DecidableEq ι
inst✝⁵ : Fintype ι
e : Basis ι R M
A✝ : Type ?u.1059539
inst✝⁴ : CommRing A✝
inst✝³ : Module A✝ M
κ : Type ?u.1060037
inst✝² : Fintype κ
A : Type u_1
inst✝¹ : CommRing A
inst✝ : Module A M
f : M →ₗ[A] M
hf : IsUnit f
⊢ IsUnit (↑LinearMap.det f)

tactic: have : LinearMap.det f * LinearMap.det g = 1 := by
  simp only [← LinearMap.det_comp, hg, MonoidHom.map_one]
state_before: case intro
R : Type ?u.1057928
inst✝¹¹ : CommRing R
M : Type u_2
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
M' : Type ?u.1058519
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M'
ι : Type ?u.1059061
inst✝⁶ : DecidableEq ι
inst✝⁵ : Fintype ι
e : Basis ι R M
A✝ : Type ?u.1059539
inst✝⁴ : CommRing A✝
inst✝³ : Module A✝ M
κ : Type ?u.1060037
inst✝² : Fintype κ
A : Type u_1
inst✝¹ : CommRing A
inst✝ : Module A M
f : M →ₗ[A] M
hf : IsUnit f
g : M →ₗ[A] M
hg : comp f g = 1
⊢ IsUnit (↑LinearMap.det f)

tactic: exact isUnit_of_mul_eq_one _ _ this
state_before: case intro
R : Type ?u.1057928
inst✝¹¹ : CommRing R
M : Type u_2
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
M' : Type ?u.1058519
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M'
ι : Type ?u.1059061
inst✝⁶ : DecidableEq ι
inst✝⁵ : Fintype ι
e : Basis ι R M
A✝ : Type ?u.1059539
inst✝⁴ : CommRing A✝
inst✝³ : Module A✝ M
κ : Type ?u.1060037
inst✝² : Fintype κ
A : Type u_1
inst✝¹ : CommRing A
inst✝ : Module A M
f : M →ₗ[A] M
hf : IsUnit f
g : M →ₗ[A] M
hg : comp f g = 1
this : ↑LinearMap.det f * ↑LinearMap.det g = 1
⊢ IsUnit (↑LinearMap.det f)

tactic: simp only [← LinearMap.det_comp, hg, MonoidHom.map_one]
state_before: R : Type ?u.1057928
inst✝¹¹ : CommRing R
M : Type u_2
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
M' : Type ?u.1058519
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M'
ι : Type ?u.1059061
inst✝⁶ : DecidableEq ι
inst✝⁵ : Fintype ι
e : Basis ι R M
A✝ : Type ?u.1059539
inst✝⁴ : CommRing A✝
inst✝³ : Module A✝ M
κ : Type ?u.1060037
inst✝² : Fintype κ
A : Type u_1
inst✝¹ : CommRing A
inst✝ : Module A M
f : M →ₗ[A] M
hf : IsUnit f
g : M →ₗ[A] M
hg : comp f g = 1
⊢ ↑LinearMap.det f * ↑LinearMap.det g = 1
Theorem: ContinuousLinearMap.op_norm_flip
File: Mathlib/Analysis/NormedSpace/OperatorNorm.lean

tactic: simpa only [flip_flip] using le_norm_flip f.flip
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_6
𝕜₃ : Type u_2
E : Type u_3
Eₗ : Type ?u.1114653
F : Type u_5
Fₗ : Type ?u.1114659
G : Type u_4
Gₗ : Type ?u.1114665
𝓕 : Type ?u.1114668
inst✝¹⁷ : SeminormedAddCommGroup E
inst✝¹⁶ : SeminormedAddCommGroup Eₗ
inst✝¹⁵ : SeminormedAddCommGroup F
inst✝¹⁴ : SeminormedAddCommGroup Fₗ
inst✝¹³ : SeminormedAddCommGroup G
inst✝¹² : SeminormedAddCommGroup Gₗ
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : NontriviallyNormedField 𝕜₂
inst✝⁹ : NontriviallyNormedField 𝕜₃
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : NormedSpace 𝕜 Eₗ
inst✝⁶ : NormedSpace 𝕜₂ F
inst✝⁵ : NormedSpace 𝕜 Fₗ
inst✝⁴ : NormedSpace 𝕜₃ G
inst✝³ : NormedSpace 𝕜 Gₗ
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
σ₁₃ : 𝕜 →+* 𝕜₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : RingHomIsometric σ₂₃
inst✝ : RingHomIsometric σ₁₃
f : E →SL[σ₁₃] F →SL[σ₂₃] G
⊢ ‖flip f‖ ≤ ‖f‖
Theorem: FiniteDimensional.proper
File: Mathlib/Analysis/NormedSpace/FiniteDimension.lean

tactic: set e := ContinuousLinearEquiv.ofFinrankEq (@finrank_fin_fun 𝕜 _ _ (finrank 𝕜 E)).symm
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : ProperSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
⊢ ProperSpace E

tactic: exact e.symm.antilipschitz.properSpace e.symm.continuous e.symm.surjective
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : ProperSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 :=
  ContinuousLinearEquiv.ofFinrankEq (_ : finrank 𝕜 E = finrank 𝕜 (Fin (finrank 𝕜 E) → 𝕜))
⊢ ProperSpace E
Theorem: Fin.castPred_castSucc
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [castPred, predAbove, not_lt.mpr (le_last i)]
state_before: n m : ℕ
i : Fin (n + 1)
⊢ castPred (↑castSucc i) = i
Theorem: Real.lt_sqrt
File: Mathlib/Data/Real/Sqrt.lean

tactic: rw [← sqrt_lt_sqrt_iff (sq_nonneg _), sqrt_sq hx]
state_before: x y : ℝ
hx : 0 ≤ x
⊢ x < sqrt y ↔ x ^ 2 < y
Theorem: gcd_mul_right'
File: Mathlib/Algebra/GCDMonoid/Basic.lean

tactic: simp only [mul_comm, gcd_mul_left']
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b c : α
⊢ Associated (gcd (b * a) (c * a)) (gcd b c * a)
Theorem: IntermediateField.exists_finset_of_mem_supr''
File: Mathlib/FieldTheory/Adjoin.lean

tactic: refine' exists_finset_of_mem_iSup (SetLike.le_def.mp (iSup_le (fun i => _)) hx)
state_before: F : Type u_2
inst✝² : Field F
E : Type u_3
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
ι : Type u_1
f : ι → IntermediateField F E
h : ∀ (i : ι), Algebra.IsAlgebraic F { x // x ∈ f i }
x : E
hx : x ∈ ⨆ (i : ι), f i
⊢ ∃ s, x ∈ ⨆ (i : (i : ι) × { x // x ∈ f i }) (_ : i ∈ s), adjoin F (rootSet (minpoly F i.snd) E)

tactic: intro x1 hx1
state_before: F : Type u_2
inst✝² : Field F
E : Type u_3
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
ι : Type u_1
f : ι → IntermediateField F E
h : ∀ (i : ι), Algebra.IsAlgebraic F { x // x ∈ f i }
x : E
hx : x ∈ ⨆ (i : ι), f i
i : ι
⊢ f i ≤ ⨆ (i : (i : ι) × { x // x ∈ f i }), adjoin F (rootSet (minpoly F i.snd) E)

tactic: refine' SetLike.le_def.mp (le_iSup_of_le ⟨i, x1, hx1⟩ _)
  (subset_adjoin F (rootSet (minpoly F x1) E) _)
state_before: F : Type u_2
inst✝² : Field F
E : Type u_3
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
ι : Type u_1
f : ι → IntermediateField F E
h : ∀ (i : ι), Algebra.IsAlgebraic F { x // x ∈ f i }
x : E
hx : x ∈ ⨆ (i : ι), f i
i : ι
x1 : E
hx1 : x1 ∈ f i
⊢ x1 ∈ ⨆ (i : (i : ι) × { x // x ∈ f i }), adjoin F (rootSet (minpoly F i.snd) E)

tactic: rw [IntermediateField.minpoly_eq, Subtype.coe_mk]
state_before: case refine'_1
F : Type u_2
inst✝² : Field F
E : Type u_3
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
ι : Type u_1
f : ι → IntermediateField F E
h : ∀ (i : ι), Algebra.IsAlgebraic F { x // x ∈ f i }
x : E
hx : x ∈ ⨆ (i : ι), f i
i : ι
x1 : E
hx1 : x1 ∈ f i
⊢ adjoin F (rootSet (minpoly F x1) E) ≤
    adjoin F (rootSet (minpoly F { fst := i, snd := { val := x1, property := hx1 } }.snd) E)

tactic: rw [mem_rootSet_of_ne, minpoly.aeval]
state_before: case refine'_2
F : Type u_2
inst✝² : Field F
E : Type u_3
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
ι : Type u_1
f : ι → IntermediateField F E
h : ∀ (i : ι), Algebra.IsAlgebraic F { x // x ∈ f i }
x : E
hx : x ∈ ⨆ (i : ι), f i
i : ι
x1 : E
hx1 : x1 ∈ f i
⊢ x1 ∈ rootSet (minpoly F x1) E

tactic: exact minpoly.ne_zero (isIntegral_iff.mp (isAlgebraic_iff_isIntegral.mp (h i ⟨x1, hx1⟩)))
state_before: case refine'_2.hp
F : Type u_2
inst✝² : Field F
E : Type u_3
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
ι : Type u_1
f : ι → IntermediateField F E
h : ∀ (i : ι), Algebra.IsAlgebraic F { x // x ∈ f i }
x : E
hx : x ∈ ⨆ (i : ι), f i
i : ι
x1 : E
hx1 : x1 ∈ f i
⊢ minpoly F x1 ≠ 0
Theorem: CategoryTheory.Sieve.functor_galoisConnection
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: intro R S
state_before: C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X✝ Y Z : C
f : Y ⟶ X✝
S R : Sieve X✝
E : Type u₃
inst✝ : Category E
G : D ⥤ E
X : C
⊢ GaloisConnection (functorPushforward F) (functorPullback F)

tactic: constructor
state_before: C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X✝ Y Z : C
f : Y ⟶ X✝
S✝ R✝ : Sieve X✝
E : Type u₃
inst✝ : Category E
G : D ⥤ E
X : C
R : Sieve X
S : Sieve (F.obj X)
⊢ functorPushforward F R ≤ S ↔ R ≤ functorPullback F S

tactic: intro hle X f hf
state_before: case mp
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X✝ Y Z : C
f : Y ⟶ X✝
S✝ R✝ : Sieve X✝
E : Type u₃
inst✝ : Category E
G : D ⥤ E
X : C
R : Sieve X
S : Sieve (F.obj X)
⊢ functorPushforward F R ≤ S → R ≤ functorPullback F S

tactic: apply hle
state_before: case mp
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X✝¹ Y Z : C
f✝ : Y ⟶ X✝¹
S✝ R✝ : Sieve X✝¹
E : Type u₃
inst✝ : Category E
G : D ⥤ E
X✝ : C
R : Sieve X✝
S : Sieve (F.obj X✝)
hle : functorPushforward F R ≤ S
X : C
f : X ⟶ X✝
hf : R.arrows f
⊢ (functorPullback F S).arrows f

tactic: refine' ⟨X, f, 𝟙 _, hf, _⟩
state_before: case mp.a
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X✝¹ Y Z : C
f✝ : Y ⟶ X✝¹
S✝ R✝ : Sieve X✝¹
E : Type u₃
inst✝ : Category E
G : D ⥤ E
X✝ : C
R : Sieve X✝
S : Sieve (F.obj X✝)
hle : functorPushforward F R ≤ S
X : C
f : X ⟶ X✝
hf : R.arrows f
⊢ (functorPushforward F R).arrows (F.map f)

tactic: rw [id_comp]
state_before: case mp.a
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X✝¹ Y Z : C
f✝ : Y ⟶ X✝¹
S✝ R✝ : Sieve X✝¹
E : Type u₃
inst✝ : Category E
G : D ⥤ E
X✝ : C
R : Sieve X✝
S : Sieve (F.obj X✝)
hle : functorPushforward F R ≤ S
X : C
f : X ⟶ X✝
hf : R.arrows f
⊢ F.map f = 𝟙 (F.obj X) ≫ F.map f

tactic: rintro hle Y f ⟨X, g, h, hg, rfl⟩
state_before: case mpr
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X✝ Y Z : C
f : Y ⟶ X✝
S✝ R✝ : Sieve X✝
E : Type u₃
inst✝ : Category E
G : D ⥤ E
X : C
R : Sieve X
S : Sieve (F.obj X)
⊢ R ≤ functorPullback F S → functorPushforward F R ≤ S

tactic: apply Sieve.downward_closed S
state_before: case mpr.intro.intro.intro.intro
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X✝¹ Y✝ Z : C
f : Y✝ ⟶ X✝¹
S✝ R✝ : Sieve X✝¹
E : Type u₃
inst✝ : Category E
G : D ⥤ E
X✝ : C
R : Sieve X✝
S : Sieve (F.obj X✝)
hle : R ≤ functorPullback F S
Y : D
X : C
g : X ⟶ X✝
h : Y ⟶ F.obj X
hg : R.arrows g
⊢ S.arrows (h ≫ F.map g)

tactic: exact hle g hg
state_before: case mpr.intro.intro.intro.intro.x
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
F : C ⥤ D
X✝¹ Y✝ Z : C
f : Y✝ ⟶ X✝¹
S✝ R✝ : Sieve X✝¹
E : Type u₃
inst✝ : Category E
G : D ⥤ E
X✝ : C
R : Sieve X✝
S : Sieve (F.obj X✝)
hle : R ≤ functorPullback F S
Y : D
X : C
g : X ⟶ X✝
h : Y ⟶ F.obj X
hg : R.arrows g
⊢ S.arrows (F.map g)
Theorem: Order.pred_le_pred_iff
File: Mathlib/Order/SuccPred/Basic.lean

tactic: simp
state_before: α : Type u_1
inst✝² : Preorder α
inst✝¹ : PredOrder α
a b : α
inst✝ : NoMinOrder α
⊢ pred a ≤ pred b ↔ a ≤ b
Theorem: CategoryTheory.GrothendieckTopology.Subpresheaf.le_sheafify
File: Mathlib/CategoryTheory/Sites/Subsheaf.lean

tactic: intro U s hs
state_before: C : Type u
inst✝ : Category C
J : GrothendieckTopology C
F F' F'' : Cᵒᵖ ⥤ Type w
G G' : Subpresheaf F
⊢ G ≤ sheafify J G

tactic: change _ ∈ J _
state_before: C : Type u
inst✝ : Category C
J : GrothendieckTopology C
F F' F'' : Cᵒᵖ ⥤ Type w
G G' : Subpresheaf F
U : Cᵒᵖ
s : F.obj U
hs : s ∈ obj G U
⊢ s ∈ obj (sheafify J G) U

tactic: convert J.top_mem U.unop
state_before: C : Type u
inst✝ : Category C
J : GrothendieckTopology C
F F' F'' : Cᵒᵖ ⥤ Type w
G G' : Subpresheaf F
U : Cᵒᵖ
s : F.obj U
hs : s ∈ obj G U
⊢ sieveOfSection G s ∈ sieves J U.unop

tactic: rw [eq_top_iff]
state_before: case h.e'_4
C : Type u
inst✝ : Category C
J : GrothendieckTopology C
F F' F'' : Cᵒᵖ ⥤ Type w
G G' : Subpresheaf F
U : Cᵒᵖ
s : F.obj U
hs : s ∈ obj G U
⊢ sieveOfSection G s = ⊤

tactic: rintro V i -
state_before: case h.e'_4
C : Type u
inst✝ : Category C
J : GrothendieckTopology C
F F' F'' : Cᵒᵖ ⥤ Type w
G G' : Subpresheaf F
U : Cᵒᵖ
s : F.obj U
hs : s ∈ obj G U
⊢ ⊤ ≤ sieveOfSection G s

tactic: exact G.map i.op hs
state_before: case h.e'_4
C : Type u
inst✝ : Category C
J : GrothendieckTopology C
F F' F'' : Cᵒᵖ ⥤ Type w
G G' : Subpresheaf F
U : Cᵒᵖ
s : F.obj U
hs : s ∈ obj G U
V : C
i : V ⟶ U.unop
⊢ (sieveOfSection G s).arrows i
Theorem: Filter.mem_pi
File: Mathlib/Order/Filter/Pi.lean

tactic: constructor
state_before: ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s✝ : (i : ι) → Set (α i)
s : Set ((i : ι) → α i)
⊢ s ∈ pi f ↔ ∃ I, Set.Finite I ∧ ∃ t, (∀ (i : ι), t i ∈ f i) ∧ Set.pi I t ⊆ s

tactic: simp only [pi, mem_iInf', mem_comap, pi_def]
state_before: case mp
ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s✝ : (i : ι) → Set (α i)
s : Set ((i : ι) → α i)
⊢ s ∈ pi f → ∃ I, Set.Finite I ∧ ∃ t, (∀ (i : ι), t i ∈ f i) ∧ Set.pi I t ⊆ s

tactic: rintro ⟨I, If, V, hVf, -, rfl, -⟩
state_before: case mp
ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s✝ : (i : ι) → Set (α i)
s : Set ((i : ι) → α i)
⊢ (∃ I,
      Set.Finite I ∧
        ∃ V,
          (∀ (i : ι), ∃ t, t ∈ f i ∧ eval i ⁻¹' t ⊆ V i) ∧
            (∀ (i : ι), ¬i ∈ I → V i = univ) ∧ (s = ⋂ (i : ι) (_ : i ∈ I), V i) ∧ s = ⋂ (i : ι), V i) →
    ∃ I, Set.Finite I ∧ ∃ t, (∀ (i : ι), t i ∈ f i) ∧ (⋂ (a : ι) (_ : a ∈ I), eval a ⁻¹' t a) ⊆ s

tactic: choose t htf htV using hVf
state_before: case mp.intro.intro.intro.intro.intro.intro
ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s : (i : ι) → Set (α i)
I : Set ι
If : Set.Finite I
V : ι → Set ((i : ι) → α i)
hVf : ∀ (i : ι), ∃ t, t ∈ f i ∧ eval i ⁻¹' t ⊆ V i
⊢ ∃ I_1,
    Set.Finite I_1 ∧
      ∃ t, (∀ (i : ι), t i ∈ f i) ∧ (⋂ (a : ι) (_ : a ∈ I_1), eval a ⁻¹' t a) ⊆ ⋂ (i : ι) (_ : i ∈ I), V i

tactic: exact ⟨I, If, t, htf, iInter₂_mono fun i _ => htV i⟩
state_before: case mp.intro.intro.intro.intro.intro.intro
ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s : (i : ι) → Set (α i)
I : Set ι
If : Set.Finite I
V : ι → Set ((i : ι) → α i)
t : (i : ι) → Set (α i)
htf : ∀ (i : ι), t i ∈ f i
htV : ∀ (i : ι), eval i ⁻¹' t i ⊆ V i
⊢ ∃ I_1,
    Set.Finite I_1 ∧
      ∃ t, (∀ (i : ι), t i ∈ f i) ∧ (⋂ (a : ι) (_ : a ∈ I_1), eval a ⁻¹' t a) ⊆ ⋂ (i : ι) (_ : i ∈ I), V i

tactic: rintro ⟨I, If, t, htf, hts⟩
state_before: case mpr
ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s✝ : (i : ι) → Set (α i)
s : Set ((i : ι) → α i)
⊢ (∃ I, Set.Finite I ∧ ∃ t, (∀ (i : ι), t i ∈ f i) ∧ Set.pi I t ⊆ s) → s ∈ pi f

tactic: exact mem_of_superset (pi_mem_pi If fun i _ => htf i) hts
state_before: case mpr.intro.intro.intro.intro
ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s✝ : (i : ι) → Set (α i)
s : Set ((i : ι) → α i)
I : Set ι
If : Set.Finite I
t : (i : ι) → Set (α i)
htf : ∀ (i : ι), t i ∈ f i
hts : Set.pi I t ⊆ s
⊢ s ∈ pi f