1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.div_wf_lemma
File: Mathlib/Algebra/Polynomial/Div.lean

tactic: rw [← degree_eq_natDegree h.2, ← degree_eq_natDegree hq0]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p q : R[X]
h : q.degree ≤ p.degree ∧ p ≠ 0
hq : q.Monic
hp : p.leadingCoeff ≠ 0
hq0 : q ≠ 0
⊢ ↑q.natDegree ≤ ↑p.natDegree
state_after: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p q : R[X]
h : q.degree ≤ p.degree ∧ p ≠ 0
hq : q.Monic
hp : p.leadingCoeff ≠ 0
hq0 : q ≠ 0
⊢ q.degree ≤ p.degree

tactic: exact h.1
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p q : R[X]
h : q.degree ≤ p.degree ∧ p ≠ 0
hq : q.Monic
hp : p.leadingCoeff ≠ 0
hq0 : q ≠ 0
⊢ q.degree ≤ p.degree
state_after: no goals

tactic: rw [hq.degree_mul_comm, hq.degree_mul, degree_C_mul_X_pow _ hp, degree_eq_natDegree h.2,
  degree_eq_natDegree hq0, ← Nat.cast_add, tsub_add_cancel_of_le hlt]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p q : R[X]
h : q.degree ≤ p.degree ∧ p ≠ 0
hq : q.Monic
hp : p.leadingCoeff ≠ 0
hq0 : q ≠ 0
hlt : q.natDegree ≤ p.natDegree
⊢ p.degree = (q * (C p.leadingCoeff * X ^ (p.natDegree - q.natDegree))).degree
state_after: no goals

tactic: rw [leadingCoeff_monic_mul hq, leadingCoeff_mul_X_pow, leadingCoeff_C]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p q : R[X]
h : q.degree ≤ p.degree ∧ p ≠ 0
hq : q.Monic
hp : p.leadingCoeff ≠ 0
hq0 : q ≠ 0
hlt : q.natDegree ≤ p.natDegree
⊢ p.leadingCoeff = (q * (C p.leadingCoeff * X ^ (p.natDegree - q.natDegree))).leadingCoeff
state_after: no goals
Theorem: CategoryTheory.ShortComplex.rightHomologyMap'_sub
File: Mathlib/Algebra/Homology/ShortComplex/Preadditive.lean

tactic: simp only [sub_eq_add_neg, rightHomologyMap'_add, rightHomologyMap'_neg]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ rightHomologyMap' (φ - φ') h₁ h₂ = rightHomologyMap' φ h₁ h₂ - rightHomologyMap' φ' h₁ h₂
state_after: no goals
Theorem: Matrix.det_fromBlocks_one₁₁
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

tactic: haveI : Invertible (1 : Matrix m m α) := invertibleOne
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
⊢ (fromBlocks 1 B C D).det = (D - C * B).det
state_after: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
this : Invertible 1
⊢ (fromBlocks 1 B C D).det = (D - C * B).det

tactic: rw [det_fromBlocks₁₁, invOf_one, Matrix.mul_one, det_one, one_mul]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
this : Invertible 1
⊢ (fromBlocks 1 B C D).det = (D - C * B).det
state_after: no goals
Theorem: MeasureTheory.VectorMeasure.exists_pos_measure_of_not_restrict_le_zero
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: have hi₁ : MeasurableSet i := measurable_of_not_restrict_le_zero _ hi
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝¹ : TopologicalSpace M
inst✝ : LinearOrderedAddCommMonoid M
v w : VectorMeasure α M
i j : Set α
hi : ¬v.restrict i ≤ restrict 0 i
⊢ ∃ j, MeasurableSet j ∧ j ⊆ i ∧ 0 < ↑v j
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝¹ : TopologicalSpace M
inst✝ : LinearOrderedAddCommMonoid M
v w : VectorMeasure α M
i j : Set α
hi : ¬v.restrict i ≤ restrict 0 i
hi₁ : MeasurableSet i
⊢ ∃ j, MeasurableSet j ∧ j ⊆ i ∧ 0 < ↑v j

tactic: rw [restrict_le_restrict_iff _ _ hi₁] at hi
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝¹ : TopologicalSpace M
inst✝ : LinearOrderedAddCommMonoid M
v w : VectorMeasure α M
i j : Set α
hi : ¬v.restrict i ≤ restrict 0 i
hi₁ : MeasurableSet i
⊢ ∃ j, MeasurableSet j ∧ j ⊆ i ∧ 0 < ↑v j
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝¹ : TopologicalSpace M
inst✝ : LinearOrderedAddCommMonoid M
v w : VectorMeasure α M
i j : Set α
hi : ¬∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ i → ↑v j ≤ ↑0 j
hi₁ : MeasurableSet i
⊢ ∃ j, MeasurableSet j ∧ j ⊆ i ∧ 0 < ↑v j

tactic: push_neg at hi
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝¹ : TopologicalSpace M
inst✝ : LinearOrderedAddCommMonoid M
v w : VectorMeasure α M
i j : Set α
hi : ¬∀ ⦃j : Set α⦄, MeasurableSet j → j ⊆ i → ↑v j ≤ ↑0 j
hi₁ : MeasurableSet i
⊢ ∃ j, MeasurableSet j ∧ j ⊆ i ∧ 0 < ↑v j
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝¹ : TopologicalSpace M
inst✝ : LinearOrderedAddCommMonoid M
v w : VectorMeasure α M
i j : Set α
hi₁ : MeasurableSet i
hi : ∃ j, MeasurableSet j ∧ j ⊆ i ∧ ↑0 j < ↑v j
⊢ ∃ j, MeasurableSet j ∧ j ⊆ i ∧ 0 < ↑v j

tactic: exact hi
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝¹ : TopologicalSpace M
inst✝ : LinearOrderedAddCommMonoid M
v w : VectorMeasure α M
i j : Set α
hi₁ : MeasurableSet i
hi : ∃ j, MeasurableSet j ∧ j ⊆ i ∧ ↑0 j < ↑v j
⊢ ∃ j, MeasurableSet j ∧ j ⊆ i ∧ 0 < ↑v j
state_after: no goals
Theorem: SetTheory.PGame.zero_le_lf
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [le_iff_forall_lf]
state_before: xl xr : Type u
x : PGame
⊢ 0 ≤ x ↔ ∀ (j : x.RightMoves), 0 ⧏ x.moveRight j
state_after: xl xr : Type u
x : PGame
⊢ ((∀ (i : LeftMoves 0), moveLeft 0 i ⧏ x) ∧ ∀ (j : x.RightMoves), 0 ⧏ x.moveRight j) ↔
    ∀ (j : x.RightMoves), 0 ⧏ x.moveRight j

tactic: simp
state_before: xl xr : Type u
x : PGame
⊢ ((∀ (i : LeftMoves 0), moveLeft 0 i ⧏ x) ∧ ∀ (j : x.RightMoves), 0 ⧏ x.moveRight j) ↔
    ∀ (j : x.RightMoves), 0 ⧏ x.moveRight j
state_after: no goals
Theorem: MeasureTheory.Measure.tsum_indicator_apply_singleton
File: Mathlib/MeasureTheory/Measure/Dirac.lean

tactic: simp only [Measure.sum_apply _ hs, Measure.smul_apply, smul_eq_mul, Measure.dirac_apply,
  Set.indicator_apply, mul_ite, Pi.one_apply, mul_one, mul_zero]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
s✝ : Set α
a : α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
μ : Measure α
s : Set α
hs : MeasurableSet s
⊢ ∑' (x : α), s.indicator (fun x => μ {x}) x = (sum fun a => μ {a} • dirac a) s
state_after: no goals

tactic: rw [μ.sum_smul_dirac]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
s✝ : Set α
a : α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
μ : Measure α
s : Set α
hs : MeasurableSet s
⊢ (sum fun a => μ {a} • dirac a) s = μ s
state_after: no goals
Theorem: pow_eq_pow_iff_of_ne_zero
File: Mathlib/Algebra/Order/Ring/Abs.lean

tactic: simp only [*, and_true, ← abs_eq_abs,
← pow_left_inj (abs_nonneg a) (abs_nonneg b) hn, hne.1.pow_abs]
state_before: α : Type u_1
R : Type u_2
inst✝ : LinearOrderedRing R
a b : R
n : ℕ
hn : n ≠ 0
hne : Even n ∧ ¬Odd n
⊢ a ^ n = b ^ n ↔ a = b ∨ a = -b ∧ Even n
state_after: no goals

tactic: simp [hn, (hn.1.strictMono_pow (R := R)).injective.eq_iff]
state_before: α : Type u_1
R : Type u_2
inst✝ : LinearOrderedRing R
a b : R
n : ℕ
hn✝ : n ≠ 0
hn : Odd n ∧ ¬Even n
⊢ a ^ n = b ^ n ↔ a = b ∨ a = -b ∧ Even n
state_after: no goals
Theorem: Subgroup.normalClosure_eq_iInf
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: infer_instance
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
s : Set G
⊢ (normalClosure s).Normal
state_after: no goals
Theorem: add_bounded_of_bounded_of_bounded
File: Mathlib/Topology/Bornology/BoundedOperation.lean

tactic: obtain ⟨C, hC⟩ := Metric.isBounded_iff.mp <|
  isBounded_add (Metric.isBounded_range_iff.mpr f_bdd) (Metric.isBounded_range_iff.mpr g_bdd)
state_before: R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
⊢ ∃ C, ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C
state_after: case intro
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
⊢ ∃ C, ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C

tactic: use C
state_before: case intro
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
⊢ ∃ C, ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C
state_after: case h
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
⊢ ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C

tactic: intro x y
state_before: case h
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
⊢ ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C
state_after: case h
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
x y : X
⊢ dist ((f + g) x) ((f + g) y) ≤ C

tactic: exact hC (Set.add_mem_add (Set.mem_range_self (f := f) x) (Set.mem_range_self (f := g) x))
         (Set.add_mem_add (Set.mem_range_self (f := f) y) (Set.mem_range_self (f := g) y))
state_before: case h
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
x y : X
⊢ dist ((f + g) x) ((f + g) y) ≤ C
state_after: no goals
Theorem: SymplecticGroup.transpose_mem_iff
File: Mathlib/LinearAlgebra/SymplecticGroup.lean

tactic: simpa using transpose_mem hA
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
hA : Aᵀ ∈ symplecticGroup l R
⊢ A ∈ symplecticGroup l R
state_after: no goals
Theorem: bit1_mul
File: Mathlib/Algebra/Order/Ring/Int.lean

tactic: rw [bit1, add_mul, bit0_mul, one_mul]
state_before: R : Type u_1
inst✝ : NonAssocRing R
n r : R
⊢ bit1 n * r = 2 • (n * r) + r
state_after: no goals
Theorem: ne₂₃_of_not_collinear
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

tactic: rintro rfl
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ p₃ : P
h : ¬Collinear k {p₁, p₂, p₃}
⊢ p₂ ≠ p₃
state_after: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
h : ¬Collinear k {p₁, p₂, p₂}
⊢ False

tactic: simp [collinear_pair] at h
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
h : ¬Collinear k {p₁, p₂, p₂}
⊢ False
state_after: no goals
Theorem: LieSubalgebra.eq_bot_iff
File: Mathlib/Algebra/Lie/Subalgebra.lean

tactic: rw [_root_.eq_bot_iff]
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
⊢ K = ⊥ ↔ ∀ x ∈ K, x = 0
state_after: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
⊢ K ≤ ⊥ ↔ ∀ x ∈ K, x = 0

tactic: exact Iff.rfl
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
⊢ K ≤ ⊥ ↔ ∀ x ∈ K, x = 0
state_after: no goals
Theorem: CochainComplex.mappingCone.d_snd_v'
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{?u.98765, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
n : ℤ
⊢ n - 1 + 1 = n
state_after: no goals

tactic: apply d_snd_v
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
n : ℤ
⊢ (mappingCone φ).d (n - 1) n ≫ (snd φ).v n n ⋯ =
    (↑(fst φ)).v (n - 1) n ⋯ ≫ φ.f n + (snd φ).v (n - 1) (n - 1) ⋯ ≫ G.d (n - 1) n
state_after: no goals
Theorem: bernsteinApproximation.lt_of_mem_S
File: Mathlib/Analysis/SpecialFunctions/Bernstein.lean

tactic: apply f.dist_lt_of_dist_lt_modulus (ε / 2) (half_pos h)
state_before: f : C(↑I, ℝ)
ε : ℝ
h : 0 < ε
n : ℕ
x : ↑I
k : Fin (n + 1)
m : k ∈ S f ε h n x
⊢ |f k/ₙ - f x| < ε / 2
state_after: f : C(↑I, ℝ)
ε : ℝ
h : 0 < ε
n : ℕ
x : ↑I
k : Fin (n + 1)
m : k ∈ S f ε h n x
⊢ dist k/ₙ x < f.modulus (ε / 2) ⋯

tactic: simpa [S, (Set.mem_toFinset)] using m
state_before: f : C(↑I, ℝ)
ε : ℝ
h : 0 < ε
n : ℕ
x : ↑I
k : Fin (n + 1)
m : k ∈ S f ε h n x
⊢ dist k/ₙ x < f.modulus (ε / 2) ⋯
state_after: no goals
Theorem: IntermediateField.adjoin_map
File: Mathlib/FieldTheory/Adjoin.lean

tactic: ext x
state_before: F : Type u_1
inst✝⁴ : Field F
E : Type u_2
inst✝³ : Field E
inst✝² : Algebra F E
S : Set E
E' : Type u_3
inst✝¹ : Field E'
inst✝ : Algebra F E'
f : E →ₐ[F] E'
⊢ map f (adjoin F S) = adjoin F (⇑f '' S)
state_after: case h
F : Type u_1
inst✝⁴ : Field F
E : Type u_2
inst✝³ : Field E
inst✝² : Algebra F E
S : Set E
E' : Type u_3
inst✝¹ : Field E'
inst✝ : Algebra F E'
f : E →ₐ[F] E'
x : E'
⊢ x ∈ map f (adjoin F S) ↔ x ∈ adjoin F (⇑f '' S)

tactic: show
  x ∈ (Subfield.closure (Set.range (algebraMap F E) ∪ S)).map (f : E →+* E') ↔
    x ∈ Subfield.closure (Set.range (algebraMap F E') ∪ f '' S)
state_before: case h
F : Type u_1
inst✝⁴ : Field F
E : Type u_2
inst✝³ : Field E
inst✝² : Algebra F E
S : Set E
E' : Type u_3
inst✝¹ : Field E'
inst✝ : Algebra F E'
f : E →ₐ[F] E'
x : E'
⊢ x ∈ map f (adjoin F S) ↔ x ∈ adjoin F (⇑f '' S)
state_after: case h
F : Type u_1
inst✝⁴ : Field F
E : Type u_2
inst✝³ : Field E
inst✝² : Algebra F E
S : Set E
E' : Type u_3
inst✝¹ : Field E'
inst✝ : Algebra F E'
f : E →ₐ[F] E'
x : E'
⊢ x ∈ Subfield.map (↑f) (Subfield.closure (Set.range ⇑(algebraMap F E) ∪ S)) ↔
    x ∈ Subfield.closure (Set.range ⇑(algebraMap F E') ∪ ⇑f '' S)

tactic: rw [RingHom.map_field_closure, Set.image_union, ← Set.range_comp, ← RingHom.coe_comp,
  f.comp_algebraMap]
state_before: case h
F : Type u_1
inst✝⁴ : Field F
E : Type u_2
inst✝³ : Field E
inst✝² : Algebra F E
S : Set E
E' : Type u_3
inst✝¹ : Field E'
inst✝ : Algebra F E'
f : E →ₐ[F] E'
x : E'
⊢ x ∈ Subfield.map (↑f) (Subfield.closure (Set.range ⇑(algebraMap F E) ∪ S)) ↔
    x ∈ Subfield.closure (Set.range ⇑(algebraMap F E') ∪ ⇑f '' S)
state_after: case h
F : Type u_1
inst✝⁴ : Field F
E : Type u_2
inst✝³ : Field E
inst✝² : Algebra F E
S : Set E
E' : Type u_3
inst✝¹ : Field E'
inst✝ : Algebra F E'
f : E →ₐ[F] E'
x : E'
⊢ x ∈ Subfield.closure (Set.range ⇑(algebraMap F E') ∪ ⇑↑f '' S) ↔
    x ∈ Subfield.closure (Set.range ⇑(algebraMap F E') ∪ ⇑f '' S)

tactic: rfl
state_before: case h
F : Type u_1
inst✝⁴ : Field F
E : Type u_2
inst✝³ : Field E
inst✝² : Algebra F E
S : Set E
E' : Type u_3
inst✝¹ : Field E'
inst✝ : Algebra F E'
f : E →ₐ[F] E'
x : E'
⊢ x ∈ Subfield.closure (Set.range ⇑(algebraMap F E') ∪ ⇑↑f '' S) ↔
    x ∈ Subfield.closure (Set.range ⇑(algebraMap F E') ∪ ⇑f '' S)
state_after: no goals
Theorem: MonoidHom.transfer_def
File: Mathlib/GroupTheory/Transfer.lean

tactic: rw [transfer, ← diff_mul_diff, ← smul_diff_smul, mul_comm, diff_mul_diff] <;> rfl
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
A : Type u_2
inst✝¹ : CommGroup A
ϕ : ↥H →* A
T : ↑(leftTransversals ↑H)
inst✝ : H.FiniteIndex
g : G
⊢ ϕ.transfer g = diff ϕ T (g • T)
state_after: no goals
Theorem: mem_interior
File: Mathlib/Topology/Basic.lean

tactic: simp only [interior, mem_sUnion, mem_setOf_eq, and_assoc, and_left_comm]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ x ∈ interior s ↔ ∃ t ⊆ s, IsOpen t ∧ x ∈ t
state_after: no goals
Theorem: Real.iter_deriv_exp
File: Mathlib/Analysis/SpecialFunctions/ExpDeriv.lean

tactic: rw [iterate_succ_apply, deriv_exp, iter_deriv_exp n]
state_before: x y z : ℝ
n : ℕ
⊢ deriv^[n + 1] rexp = rexp
state_after: no goals
Theorem: MeasurableSpace.compl_mem_generateMeasurableRec
File: Mathlib/MeasureTheory/MeasurableSpace/Card.lean

tactic: unfold generateMeasurableRec
state_before: α : Type u
s : Set (Set α)
i j : (Quotient.out (aleph 1).ord).α
h : j < i
t : Set α
ht : t ∈ generateMeasurableRec s j
⊢ tᶜ ∈ generateMeasurableRec s i
state_after: α : Type u
s : Set (Set α)
i j : (Quotient.out (aleph 1).ord).α
h : j < i
t : Set α
ht : t ∈ generateMeasurableRec s j
⊢ tᶜ ∈
    let i := i;
    let S := ⋃ j, generateMeasurableRec s ↑j;
    s ∪ {∅} ∪ compl '' S ∪ range fun f => ⋃ n, ↑(f n)

tactic: exact mem_union_left _ (mem_union_right _ ⟨t, mem_iUnion.2 ⟨⟨j, h⟩, ht⟩, rfl⟩)
state_before: α : Type u
s : Set (Set α)
i j : (Quotient.out (aleph 1).ord).α
h : j < i
t : Set α
ht : t ∈ generateMeasurableRec s j
⊢ tᶜ ∈
    let i := i;
    let S := ⋃ j, generateMeasurableRec s ↑j;
    s ∪ {∅} ∪ compl '' S ∪ range fun f => ⋃ n, ↑(f n)
state_after: no goals
Theorem: CoxeterSystem.isLeftDescent_iff_not_isLeftDescent_mul
File: Mathlib/GroupTheory/Coxeter/Length.lean

tactic: rw [isLeftDescent_iff, not_isLeftDescent_iff, simple_mul_simple_cancel_left]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.IsLeftDescent w i ↔ ¬cs.IsLeftDescent (cs.simple i * w) i
state_after: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length (cs.simple i * w) + 1 = cs.length w ↔ cs.length w = cs.length (cs.simple i * w) + 1

tactic: tauto
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length (cs.simple i * w) + 1 = cs.length w ↔ cs.length w = cs.length (cs.simple i * w) + 1
state_after: no goals
Theorem: stereographic'_symm_apply
File: Mathlib/Geometry/Manifold/Instances/Sphere.lean

tactic: simp [real_inner_comm, stereographic, stereographic', ← Submodule.coe_norm]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
v : ↑(sphere 0 1)
x : EuclideanSpace ℝ (Fin n)
⊢ ↑(↑(stereographic' n v).symm x) =
    let U := (OrthonormalBasis.fromOrthogonalSpanSingleton n ⋯).repr;
    (‖↑(U.symm x)‖ ^ 2 + 4)⁻¹ • 4 • ↑(U.symm x) + (‖↑(U.symm x)‖ ^ 2 + 4)⁻¹ • (‖↑(U.symm x)‖ ^ 2 - 4) • ↑v
state_after: no goals
Theorem: interior_closedBall'
File: Mathlib/Analysis/NormedSpace/Real.lean

tactic: rcases eq_or_ne r 0 with (rfl | hr)
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
r : ℝ
⊢ interior (closedBall x r) = ball x r
state_after: case inl
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
⊢ interior (closedBall x 0) = ball x 0

case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
r : ℝ
hr : r ≠ 0
⊢ interior (closedBall x r) = ball x r

tactic: rw [closedBall_zero, ball_zero, interior_singleton]
state_before: case inl
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
⊢ interior (closedBall x 0) = ball x 0
state_after: no goals

tactic: exact interior_closedBall x hr
state_before: case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
r : ℝ
hr : r ≠ 0
⊢ interior (closedBall x r) = ball x r
state_after: no goals
Theorem: DirichletCharacter.norm_le_one
File: Mathlib/NumberTheory/DirichletCharacter/Bounds.lean

tactic: by_cases h : IsUnit a
state_before: F : Type u_1
inst✝ : NormedField F
n : ℕ
χ : DirichletCharacter F n
a : ZMod n
⊢ ‖χ a‖ ≤ 1
state_after: case pos
F : Type u_1
inst✝ : NormedField F
n : ℕ
χ : DirichletCharacter F n
a : ZMod n
h : IsUnit a
⊢ ‖χ a‖ ≤ 1

case neg
F : Type u_1
inst✝ : NormedField F
n : ℕ
χ : DirichletCharacter F n
a : ZMod n
h : ¬IsUnit a
⊢ ‖χ a‖ ≤ 1

tactic: exact (χ.unit_norm_eq_one h.unit).le
state_before: case pos
F : Type u_1
inst✝ : NormedField F
n : ℕ
χ : DirichletCharacter F n
a : ZMod n
h : IsUnit a
⊢ ‖χ a‖ ≤ 1
state_after: no goals

tactic: rw [χ.map_nonunit h, norm_zero]
state_before: case neg
F : Type u_1
inst✝ : NormedField F
n : ℕ
χ : DirichletCharacter F n
a : ZMod n
h : ¬IsUnit a
⊢ ‖χ a‖ ≤ 1
state_after: case neg
F : Type u_1
inst✝ : NormedField F
n : ℕ
χ : DirichletCharacter F n
a : ZMod n
h : ¬IsUnit a
⊢ 0 ≤ 1

tactic: exact zero_le_one
state_before: case neg
F : Type u_1
inst✝ : NormedField F
n : ℕ
χ : DirichletCharacter F n
a : ZMod n
h : ¬IsUnit a
⊢ 0 ≤ 1
state_after: no goals
Theorem: Polynomial.coeff_opRingEquiv
File: Mathlib/RingTheory/Polynomial/Opposites.lean

tactic: induction' p with p
state_before: R : Type u_1
inst✝ : Semiring R
p : R[X]ᵐᵒᵖ
n : ℕ
⊢ ((opRingEquiv R) p).coeff n = op ((unop p).coeff n)
state_after: case h
R : Type u_1
inst✝ : Semiring R
n : ℕ
p : R[X]
⊢ ((opRingEquiv R) (op p)).coeff n = op ((unop (op p)).coeff n)

tactic: cases p
state_before: case h
R : Type u_1
inst✝ : Semiring R
n : ℕ
p : R[X]
⊢ ((opRingEquiv R) (op p)).coeff n = op ((unop (op p)).coeff n)
state_after: case h.ofFinsupp
R : Type u_1
inst✝ : Semiring R
n : ℕ
toFinsupp✝ : AddMonoidAlgebra R ℕ
⊢ ((opRingEquiv R) (op { toFinsupp := toFinsupp✝ })).coeff n = op ((unop (op { toFinsupp := toFinsupp✝ })).coeff n)

tactic: rfl
state_before: case h.ofFinsupp
R : Type u_1
inst✝ : Semiring R
n : ℕ
toFinsupp✝ : AddMonoidAlgebra R ℕ
⊢ ((opRingEquiv R) (op { toFinsupp := toFinsupp✝ })).coeff n = op ((unop (op { toFinsupp := toFinsupp✝ })).coeff n)
state_after: no goals