tasksource/leandojo huggingface dataset:
Theorem: List.ext
File: Std/Data/List/Lemmas.lean

tactic: have h0 : some a = some a' := h 0
state_before: α : Type u_1
a : α
l₁ : List α
a' : α
l₂ : List α
h : ∀ (n : Nat), get? (a :: l₁) n = get? (a' :: l₂) n
⊢ a :: l₁ = a' :: l₂

tactic: injection h0 with aa
state_before: α : Type u_1
a : α
l₁ : List α
a' : α
l₂ : List α
h : ∀ (n : Nat), get? (a :: l₁) n = get? (a' :: l₂) n
h0 : some a = some a'
⊢ a :: l₁ = a' :: l₂

tactic: simp only [aa, ext fun n => h (n+1)]
state_before: α : Type u_1
a : α
l₁ : List α
a' : α
l₂ : List α
h : ∀ (n : Nat), get? (a :: l₁) n = get? (a' :: l₂) n
aa : a = a'
⊢ a :: l₁ = a' :: l₂
Theorem: Polynomial.degree_C_mul_X_pow
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: rw [C_mul_X_pow_eq_monomial, degree_monomial n ha]
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
n : ℕ
ha : a ≠ 0
⊢ degree (↑C a * X ^ n) = ↑n
Theorem: differentiableWithinAt_sub_const_iff
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simp only [sub_eq_add_neg, differentiableWithinAt_add_const_iff]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.497137
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.497232
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
c : F
⊢ DifferentiableWithinAt 𝕜 (fun y => f y - c) s x ↔ DifferentiableWithinAt 𝕜 f s x
Theorem: Subgroup.SubgroupNormal.mem_comm
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: have := (normal_subgroupOf_iff hK).mp hN (a * b) b h hb
state_before: G : Type u_1
G' : Type ?u.714616
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.714625
inst✝¹ : AddGroup A
N : Type ?u.714631
inst✝ : Group N
H K : Subgroup G
hK : H ≤ K
hN : Normal (subgroupOf H K)
a b : G
hb : b ∈ K
h : a * b ∈ H
⊢ b * a ∈ H

tactic: rwa [mul_assoc, mul_assoc, mul_right_inv, mul_one] at this
state_before: G : Type u_1
G' : Type ?u.714616
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.714625
inst✝¹ : AddGroup A
N : Type ?u.714631
inst✝ : Group N
H K : Subgroup G
hK : H ≤ K
hN : Normal (subgroupOf H K)
a b : G
hb : b ∈ K
h : a * b ∈ H
this : b * (a * b) * b⁻¹ ∈ H
⊢ b * a ∈ H
Theorem: CategoryTheory.leftDistributor_inv
File: Mathlib/CategoryTheory/Monoidal/Preadditive.lean

tactic: ext
state_before: C : Type u_2
inst✝⁵ : Category C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
⊢ (leftDistributor X f).inv = ∑ j : J, biproduct.π (fun j => X ⊗ f j) j ≫ (𝟙 X ⊗ biproduct.ι f j)

tactic: dsimp [leftDistributor, Functor.mapBiproduct, Functor.mapBicone]
state_before: case w
C : Type u_2
inst✝⁵ : Category C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ biproduct.ι (fun j => X ⊗ f j) j✝ ≫ (leftDistributor X f).inv =
    biproduct.ι (fun j => X ⊗ f j) j✝ ≫ ∑ j : J, biproduct.π (fun j => X ⊗ f j) j ≫ (𝟙 X ⊗ biproduct.ι f j)

tactic: simp only [Preadditive.comp_sum, biproduct.ι_π_assoc, dite_comp, zero_comp,
  Finset.sum_dite_eq, Finset.mem_univ, ite_true, eqToHom_refl, Category.id_comp,
  biproduct.ι_desc]
state_before: case w
C : Type u_2
inst✝⁵ : Category C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ (biproduct.ι (fun j => X ⊗ f j) j✝ ≫ biproduct.desc fun j => 𝟙 X ⊗ biproduct.ι f j) =
    biproduct.ι (fun j => X ⊗ f j) j✝ ≫ ∑ j : J, biproduct.π (fun j => X ⊗ f j) j ≫ (𝟙 X ⊗ biproduct.ι f j)
Theorem: IsLocalization.ringEquivOfRingEquiv_mk'
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: simp [map_mk']
state_before: R : Type u_1
inst✝⁷ : CommSemiring R
M : Submonoid R
S : Type u_4
inst✝⁶ : CommSemiring S
inst✝⁵ : Algebra R S
P : Type u_2
inst✝⁴ : CommSemiring P
inst✝³ : IsLocalization M S
g : R →+* P
hg : ∀ (y : { x // x ∈ M }), IsUnit (↑g ↑y)
T : Submonoid P
Q : Type u_3
inst✝² : CommSemiring Q
hy : M ≤ Submonoid.comap g T
inst✝¹ : Algebra P Q
inst✝ : IsLocalization T Q
j : R ≃+* P
H : Submonoid.map (RingEquiv.toMonoidHom j) M = T
x : R
y : { x // x ∈ M }
⊢ ↑(ringEquivOfRingEquiv S Q j H) (mk' S x y) = mk' Q (↑j x) { val := ↑j ↑y, property := (_ : ↑j ↑y ∈ T) }
Theorem: inv_pow_le_inv_pow_of_le
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: convert one_div_pow_le_one_div_pow_of_le a1 mn using 1 <;> simp
state_before: ι : Type ?u.126922
α : Type u_1
β : Type ?u.126928
inst✝ : LinearOrderedSemifield α
a b c d e : α
m✝ n✝ : ℤ
a1 : 1 ≤ a
m n : ℕ
mn : m ≤ n
⊢ (a ^ n)⁻¹ ≤ (a ^ m)⁻¹
Theorem: IsPGroup.card_center_eq_prime_pow
File: Mathlib/GroupTheory/PGroup.lean

tactic: have hcG := to_subgroup (of_card hGpn) (center G)
state_before: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype { x // x ∈ center G }
⊢ ∃ k, k > 0 ∧ card { x // x ∈ center G } = p ^ k

tactic: rcases iff_card.1 hcG with _
state_before: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype { x // x ∈ center G }
hcG : IsPGroup p { x // x ∈ center G }
⊢ ∃ k, k > 0 ∧ card { x // x ∈ center G } = p ^ k

tactic: haveI : Nontrivial G := (nontrivial_iff_card <| of_card hGpn).2 ⟨n, hn, hGpn⟩
state_before: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype { x // x ∈ center G }
hcG : IsPGroup p { x // x ∈ center G }
x✝ : ∃ n, card { x // x ∈ center G } = p ^ n
⊢ ∃ k, k > 0 ∧ card { x // x ∈ center G } = p ^ k

tactic: exact (nontrivial_iff_card hcG).mp (center_nontrivial (of_card hGpn))
state_before: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype { x // x ∈ center G }
hcG : IsPGroup p { x // x ∈ center G }
x✝ : ∃ n, card { x // x ∈ center G } = p ^ n
this : Nontrivial G
⊢ ∃ k, k > 0 ∧ card { x // x ∈ center G } = p ^ k
Theorem: Zsqrtd.eq_of_smul_eq_smul_left
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: rw [ext] at h⊢
state_before: d a : ℤ
b c : ℤ√d
ha : a ≠ 0
h : ↑a * b = ↑a * c
⊢ b = c

tactic: apply And.imp _ _ h <;> simpa only [smul_re, smul_im] using mul_left_cancel₀ ha
state_before: d a : ℤ
b c : ℤ√d
ha : a ≠ 0
h : (↑a * b).re = (↑a * c).re ∧ (↑a * b).im = (↑a * c).im
⊢ b.re = c.re ∧ b.im = c.im
Theorem: List.takeD_left'
File: Mathlib/Data/List/Basic.lean

tactic: rw [← h]
state_before: ι : Type ?u.228301
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁✝ l₂✝ l₁ l₂ : List α
n : ℕ
a : α
h : length l₁ = n
⊢ takeD n (l₁ ++ l₂) a = l₁

tactic: apply takeD_left
state_before: ι : Type ?u.228301
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁✝ l₂✝ l₁ l₂ : List α
n : ℕ
a : α
h : length l₁ = n
⊢ takeD (length l₁) (l₁ ++ l₂) a = l₁
Theorem: Subgroup.map_eq_map_iff
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: simp only [le_antisymm_iff, map_le_map_iff']
state_before: G : Type u_1
G' : Type ?u.590543
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.590552
inst✝¹ : AddGroup A
N : Type u_2
inst✝ : Group N
f✝ f : G →* N
H K : Subgroup G
⊢ map f H = map f K ↔ H ⊔ ker f = K ⊔ ker f
Theorem: HahnSeries.sub_coeff'
File: Mathlib/RingTheory/HahnSeries.lean

tactic: ext
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddGroup R
x y : HahnSeries Γ R
⊢ (x - y).coeff = x.coeff - y.coeff

tactic: simp [sub_eq_add_neg]
state_before: case h
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddGroup R
x y : HahnSeries Γ R
x✝ : Γ
⊢ coeff (x - y) x✝ = (x.coeff - y.coeff) x✝
Theorem: Submodule.comap_map_mkQ
File: Mathlib/LinearAlgebra/Quotient.lean

tactic: simp [comap_map_eq, sup_comm]
state_before: R : Type u_2
M : Type u_1
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type ?u.237240
M₂ : Type ?u.237243
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
⊢ comap (mkQ p) (map (mkQ p) p') = p ⊔ p'
Theorem: Set.star_singleton
File: Mathlib/Algebra/Star/Pointwise.lean

tactic: ext1 y
state_before: α : Type ?u.11501
s t : Set α
a : α
β : Type u_1
inst✝ : InvolutiveStar β
x : β
⊢ {x}⋆ = {x⋆}

tactic: rw [mem_star, mem_singleton_iff, mem_singleton_iff, star_eq_iff_star_eq, eq_comm]
state_before: case h
α : Type ?u.11501
s t : Set α
a : α
β : Type u_1
inst✝ : InvolutiveStar β
x y : β
⊢ y ∈ {x}⋆ ↔ y ∈ {x⋆}
Theorem: tendsto_ceil_atBot
File: Mathlib/Topology/Algebra/Order/Floor.lean

tactic: rw [ceil_intCast]
state_before: α : Type u_1
β : Type ?u.2623
γ : Type ?u.2626
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
b : ℤ
⊢ ⌈↑(b - 1)⌉ ≤ b

tactic: exact (sub_one_lt _).le
state_before: α : Type u_1
β : Type ?u.2623
γ : Type ?u.2626
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
b : ℤ
⊢ b - 1 ≤ b
Theorem: sign_eq_neg_one_iff
File: Mathlib/Data/Sign.lean

tactic: refine' ⟨fun h => _, fun h => sign_neg h⟩
state_before: α : Type u_1
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : DecidableRel fun x x_1 => x < x_1
a : α
⊢ ↑sign a = -1 ↔ a < 0

tactic: rw [sign_apply] at h
state_before: α : Type u_1
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : DecidableRel fun x x_1 => x < x_1
a : α
h : ↑sign a = -1
⊢ a < 0

tactic: split_ifs at h
state_before: α : Type u_1
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : DecidableRel fun x x_1 => x < x_1
a : α
h : (if 0 < a then 1 else if a < 0 then -1 else 0) = -1
⊢ a < 0

tactic: assumption
state_before: case inr.inl
α : Type u_1
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : DecidableRel fun x x_1 => x < x_1
a : α
h✝¹ : ¬0 < a
h✝ : a < 0
h : -1 = -1
⊢ a < 0
Theorem: Filter.exists_le_of_tendsto_atTop
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: have : Nonempty α := ⟨a⟩
state_before: ι : Type ?u.65107
ι' : Type ?u.65110
α : Type u_1
β : Type u_2
γ : Type ?u.65119
inst✝¹ : SemilatticeSup α
inst✝ : Preorder β
u : α → β
h : Tendsto u atTop atTop
a : α
b : β
⊢ ∃ a', a' ≥ a ∧ b ≤ u a'

tactic: have : ∀ᶠ x in atTop, a ≤ x ∧ b ≤ u x :=
  (eventually_ge_atTop a).and (h.eventually <| eventually_ge_atTop b)
state_before: ι : Type ?u.65107
ι' : Type ?u.65110
α : Type u_1
β : Type u_2
γ : Type ?u.65119
inst✝¹ : SemilatticeSup α
inst✝ : Preorder β
u : α → β
h : Tendsto u atTop atTop
a : α
b : β
this : Nonempty α
⊢ ∃ a', a' ≥ a ∧ b ≤ u a'

tactic: exact this.exists
state_before: ι : Type ?u.65107
ι' : Type ?u.65110
α : Type u_1
β : Type u_2
γ : Type ?u.65119
inst✝¹ : SemilatticeSup α
inst✝ : Preorder β
u : α → β
h : Tendsto u atTop atTop
a : α
b : β
this✝ : Nonempty α
this : ∀ᶠ (x : α) in atTop, a ≤ x ∧ b ≤ u x
⊢ ∃ a', a' ≥ a ∧ b ≤ u a'
Theorem: Hyperreal.isSt_iff_abs_sub_lt_delta
File: Mathlib/Data/Real/Hyperreal.lean

tactic: simp only [abs_sub_lt_iff, sub_lt_iff_lt_add, IsSt, and_comm, add_comm]
state_before: x : ℝ*
r : ℝ
⊢ IsSt x r ↔ ∀ (δ : ℝ), 0 < δ → abs (x - ↑r) < ↑δ
Theorem: Homotopy.dNext_zero_chainComplex
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: dsimp [dNext]
state_before: ι : Type ?u.313500
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ ↑(dNext 0) f = 0

tactic: rw [P.shape, zero_comp]
state_before: ι : Type ?u.313500
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ d P 0 (ComplexShape.next (ComplexShape.down ℕ) 0) ≫ f (ComplexShape.next (ComplexShape.down ℕ) 0) 0 = 0

tactic: rw [ChainComplex.next_nat_zero]
state_before: case a
ι : Type ?u.313500
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ ¬ComplexShape.Rel (ComplexShape.down ℕ) 0 (ComplexShape.next (ComplexShape.down ℕ) 0)

tactic: dsimp
state_before: case a
ι : Type ?u.313500
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ ¬ComplexShape.Rel (ComplexShape.down ℕ) 0 0

tactic: decide
state_before: case a
ι : Type ?u.313500
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ ¬0 + 1 = 0
Theorem: lowerSemicontinuousWithinAt_univ_iff
File: Mathlib/Topology/Semicontinuous.lean

tactic: simp [LowerSemicontinuousWithinAt, LowerSemicontinuousAt, nhdsWithin_univ]
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
β : Type u_2
inst✝ : Preorder β
f g : α → β
x : α
s t : Set α
y z : β
⊢ LowerSemicontinuousWithinAt f univ x ↔ LowerSemicontinuousAt f x
Theorem: Filter.HasBasis.inf'
File: Mathlib/Order/Filter/Bases.lean

tactic: intro t
state_before: α : Type u_1
β : Type ?u.29550
γ : Type ?u.29553
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
⊢ ∀ (t : Set α), t ∈ l ⊓ l' ↔ ∃ i, (p i.fst ∧ p' i.snd) ∧ s i.fst ∩ s' i.snd ⊆ t

tactic: constructor
state_before: α : Type u_1
β : Type ?u.29550
γ : Type ?u.29553
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
t : Set α
⊢ t ∈ l ⊓ l' ↔ ∃ i, (p i.fst ∧ p' i.snd) ∧ s i.fst ∩ s' i.snd ⊆ t

tactic: simp only [mem_inf_iff, hl.mem_iff, hl'.mem_iff]
state_before: case mp
α : Type u_1
β : Type ?u.29550
γ : Type ?u.29553
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
t : Set α
⊢ t ∈ l ⊓ l' → ∃ i, (p i.fst ∧ p' i.snd) ∧ s i.fst ∩ s' i.snd ⊆ t

tactic: rintro ⟨t, ⟨i, hi, ht⟩, t', ⟨i', hi', ht'⟩, rfl⟩
state_before: case mp
α : Type u_1
β : Type ?u.29550
γ : Type ?u.29553
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
t : Set α
⊢ (∃ t₁, (∃ i, p i ∧ s i ⊆ t₁) ∧ ∃ t₂, (∃ i, p' i ∧ s' i ⊆ t₂) ∧ t = t₁ ∩ t₂) →
    ∃ i, (p i.fst ∧ p' i.snd) ∧ s i.fst ∩ s' i.snd ⊆ t

tactic: exact ⟨⟨i, i'⟩, ⟨hi, hi'⟩, inter_subset_inter ht ht'⟩
state_before: case mp.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type ?u.29550
γ : Type ?u.29553
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i✝ : ι
p' : ι' → Prop
s' : ι' → Set α
i'✝ : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
t : Set α
i : ι
hi : p i
ht : s i ⊆ t
t' : Set α
i' : ι'
hi' : p' i'
ht' : s' i' ⊆ t'
⊢ ∃ i, (p i.fst ∧ p' i.snd) ∧ s i.fst ∩ s' i.snd ⊆ t ∩ t'

tactic: rintro ⟨⟨i, i'⟩, ⟨hi, hi'⟩, H⟩
state_before: case mpr
α : Type u_1
β : Type ?u.29550
γ : Type ?u.29553
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
t : Set α
⊢ (∃ i, (p i.fst ∧ p' i.snd) ∧ s i.fst ∩ s' i.snd ⊆ t) → t ∈ l ⊓ l'

tactic: exact mem_inf_of_inter (hl.mem_of_mem hi) (hl'.mem_of_mem hi') H
state_before: case mpr.intro.mk.intro.intro
α : Type u_1
β : Type ?u.29550
γ : Type ?u.29553
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i✝ : ι
p' : ι' → Prop
s' : ι' → Set α
i'✝ : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
t : Set α
i : ι
i' : ι'
H : s { fst := i, snd := i' }.fst ∩ s' { fst := i, snd := i' }.snd ⊆ t
hi : p { fst := i, snd := i' }.fst
hi' : p' { fst := i, snd := i' }.snd
⊢ t ∈ l ⊓ l'
Theorem: AffineSubspace.map_direction
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rw [direction_eq_vectorSpan, direction_eq_vectorSpan, coe_map,
AffineMap.vectorSpan_image_eq_submodule_map]
state_before: k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
V₃ : Type ?u.566022
P₃ : Type ?u.566025
inst✝⁹ : Ring k
inst✝⁸ : AddCommGroup V₁
inst✝⁷ : Module k V₁
inst✝⁶ : AffineSpace V₁ P₁
inst✝⁵ : AddCommGroup V₂
inst✝⁴ : Module k V₂
inst✝³ : AffineSpace V₂ P₂
inst✝² : AddCommGroup V₃
inst✝¹ : Module k V₃
inst✝ : AffineSpace V₃ P₃
f : P₁ →ᵃ[k] P₂
s : AffineSubspace k P₁
⊢ direction (map f s) = Submodule.map f.linear (direction s)
Theorem: List.reverse_foldl
File: Mathlib/Data/List/Basic.lean

tactic: rw [← foldr_reverse]
state_before: ι : Type ?u.233879
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
⊢ reverse (foldl (fun t h => h :: t) [] l) = l

tactic: simp only [foldr_self_append, append_nil, reverse_reverse]
state_before: ι : Type ?u.233879
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
⊢ reverse (foldr (fun h t => h :: t) [] (reverse l)) = l
Theorem: one_lt_ack_succ_left
File: Mathlib/Computability/Ackermann.lean

tactic: simp
state_before: n : ℕ
⊢ 1 < ack (0 + 1) n

tactic: rw [ack_succ_zero]
state_before: m : ℕ
⊢ 1 < ack (m + 1 + 1) 0

tactic: apply one_lt_ack_succ_left
state_before: m : ℕ
⊢ 1 < ack (m + 1) 1

tactic: rw [ack_succ_succ]
state_before: m n : ℕ
⊢ 1 < ack (m + 1 + 1) (n + 1)

tactic: apply one_lt_ack_succ_left
state_before: m n : ℕ
⊢ 1 < ack (m + 1) (ack (m + 1 + 1) n)
Theorem: Set.image_univ
File: Mathlib/Data/Set/Image.lean

tactic: ext
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.67325
ι : Sort ?u.67328
ι' : Sort ?u.67331
f✝ : ι → α
s t : Set α
f : α → β
⊢ f '' univ = range f

tactic: simp [image, range]
state_before: case h
α : Type u_2
β : Type u_1
γ : Type ?u.67325
ι : Sort ?u.67328
ι' : Sort ?u.67331
f✝ : ι → α
s t : Set α
f : α → β
x✝ : β
⊢ x✝ ∈ f '' univ ↔ x✝ ∈ range f
Theorem: regionBetween_subset
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: simpa only [prod_univ, regionBetween, Set.preimage, setOf_subset_setOf] using fun a => And.left
state_before: α : Type u_1
f g : α → ℝ
s : Set α
⊢ regionBetween f g s ⊆ s ×ˢ univ
Theorem: sub_pow_char_of_commute
File: Mathlib/Algebra/CharP/Basic.lean

tactic: rw [eq_sub_iff_add_eq, ← add_pow_char_of_commute _ _ _ (Commute.sub_left h rfl)]
state_before: R : Type u_1
inst✝² : Ring R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
x y : R
h : Commute x y
⊢ (x - y) ^ p = x ^ p - y ^ p

tactic: simp
state_before: R : Type u_1
inst✝² : Ring R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
x y : R
h : Commute x y
⊢ (x - y + y) ^ p = x ^ p
Theorem: Matrix.mem_unitaryGroup_iff'
File: Mathlib/LinearAlgebra/UnitaryGroup.lean

tactic: refine' ⟨And.left, fun hA => ⟨hA, _⟩⟩
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A : Matrix n n α
⊢ A ∈ unitaryGroup n α ↔ star A * A = 1

tactic: rwa [mul_eq_mul, mul_eq_one_comm] at hA
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A : Matrix n n α
hA : star A * A = 1
⊢ A * star A = 1
Theorem: AlgHom.restrictNormal_comp
File: Mathlib/FieldTheory/Normal.lean

tactic: simp only [AlgHom.comp_apply, AlgHom.restrictNormal_commutes]
state_before: F : Type u_1
K : Type ?u.298025
inst✝¹⁸ : Field F
inst✝¹⁷ : Field K
inst✝¹⁶ : Algebra F K
K₁ : Type u_5
K₂ : Type u_3
K₃ : Type u_4
inst✝¹⁵ : Field F
inst✝¹⁴ : Field K₁
inst✝¹³ : Field K₂
inst✝¹² : Field K₃
inst✝¹¹ : Algebra F K₁
inst✝¹⁰ : Algebra F K₂
inst✝⁹ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
E : Type u_2
inst✝⁸ : Field E
inst✝⁷ : Algebra F E
inst✝⁶ : Algebra E K₁
inst✝⁵ : Algebra E K₂
inst✝⁴ : Algebra E K₃
inst✝³ : IsScalarTower F E K₁
inst✝² : IsScalarTower F E K₂
inst✝¹ : IsScalarTower F E K₃
inst✝ : Normal F E
x✝ : E
⊢ ↑(algebraMap E K₃) (↑(comp (restrictNormal ψ E) (restrictNormal ϕ E)) x✝) =
    ↑(algebraMap E K₃) (↑(restrictNormal (comp ψ ϕ) E) x✝)
Theorem: Fin.zero_eq_one_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: constructor
state_before: n m : ℕ
inst✝ : NeZero n
⊢ 0 = 1 ↔ n = 1

tactic: intro h
state_before: case mp
n m : ℕ
inst✝ : NeZero n
⊢ 0 = 1 → n = 1

tactic: have := congr_arg ((↑) : Fin n → ℕ) h
state_before: case mp
n m : ℕ
inst✝ : NeZero n
h : 0 = 1
⊢ n = 1

tactic: simp only [val_zero, val_one', @eq_comm _ 0, ← Nat.dvd_iff_mod_eq_zero] at this
state_before: case mp
n m : ℕ
inst✝ : NeZero n
h : 0 = 1
this : ↑0 = ↑1
⊢ n = 1

tactic: exact eq_one_of_dvd_one this
state_before: case mp
n m : ℕ
inst✝ : NeZero n
h : 0 = 1
this : n ∣ 1
⊢ n = 1

tactic: rintro rfl
state_before: case mpr
n m : ℕ
inst✝ : NeZero n
⊢ n = 1 → 0 = 1

tactic: rfl
state_before: case mpr
m : ℕ
inst✝ : NeZero 1
⊢ 0 = 1
Theorem: guard_false
File: Mathlib/Control/Basic.lean

tactic: simp [guard, if_neg not_false]
state_before: α β γ : Type u
F : Type → Type v
inst✝ : Alternative F
h : Decidable False
⊢ guard False = failure
Theorem: BoxIntegral.Integrable.sum_integral_congr
File: Mathlib/Analysis/BoxIntegral/Basic.lean

tactic: refine' tendsto_nhds_unique (h.tendsto_integralSum_sum_integral π₁) _
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁✝ π₂✝ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
π₁ π₂ : Prepartition I
hU : Prepartition.iUnion π₁ = Prepartition.iUnion π₂
⊢ ∑ J in π₁.boxes, integral J l f vol = ∑ J in π₂.boxes, integral J l f vol

tactic: rw [l.toFilteriUnion_congr _ hU]
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁✝ π₂✝ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
π₁ π₂ : Prepartition I
hU : Prepartition.iUnion π₁ = Prepartition.iUnion π₂
⊢ Tendsto (integralSum f vol) (toFilteriUnion l I π₁) (𝓝 (∑ J in π₂.boxes, integral J l f vol))

tactic: exact h.tendsto_integralSum_sum_integral π₂
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁✝ π₂✝ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
π₁ π₂ : Prepartition I
hU : Prepartition.iUnion π₁ = Prepartition.iUnion π₂
⊢ Tendsto (integralSum f vol) (toFilteriUnion l I π₂) (𝓝 (∑ J in π₂.boxes, integral J l f vol))