1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.Measure.AbsolutelyContinuous.restrict
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: refine Measure.AbsolutelyContinuous.mk (fun t ht htν ↦ ?_)
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
h : μ ≪ ν
s : Set α
⊢ μ.restrict s ≪ ν.restrict s
state_after: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
h : μ ≪ ν
s t : Set α
ht : MeasurableSet t
htν : (ν.restrict s) t = 0
⊢ (μ.restrict s) t = 0

tactic: rw [restrict_apply ht] at htν ⊢
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
h : μ ≪ ν
s t : Set α
ht : MeasurableSet t
htν : (ν.restrict s) t = 0
⊢ (μ.restrict s) t = 0
state_after: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
h : μ ≪ ν
s t : Set α
ht : MeasurableSet t
htν : ν (t ∩ s) = 0
⊢ μ (t ∩ s) = 0

tactic: exact h htν
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
h : μ ≪ ν
s t : Set α
ht : MeasurableSet t
htν : ν (t ∩ s) = 0
⊢ μ (t ∩ s) = 0
state_after: no goals
Theorem: CategoryTheory.Limits.Cotrident.app_one
File: Mathlib/CategoryTheory/Limits/Shapes/WideEqualizers.lean

tactic: rw [← s.w (line j), parallelFamily_map_left]
state_before: J : Type w
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f : J → (X ⟶ Y)
s : Cotrident f
j : J
⊢ f j ≫ s.ι.app one = s.ι.app zero
state_after: no goals
Theorem: ENNReal.zero_rpow_def
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: rcases lt_trichotomy (0 : ℝ) y with (H | rfl | H)
state_before: y : ℝ
⊢ 0 ^ y = if 0 < y then 0 else if y = 0 then 1 else ⊤
state_after: case inl
y : ℝ
H : 0 < y
⊢ 0 ^ y = if 0 < y then 0 else if y = 0 then 1 else ⊤

case inr.inl

⊢ 0 ^ 0 = if 0 < 0 then 0 else if 0 = 0 then 1 else ⊤

case inr.inr
y : ℝ
H : y < 0
⊢ 0 ^ y = if 0 < y then 0 else if y = 0 then 1 else ⊤

tactic: simp [H, ne_of_gt, zero_rpow_of_pos, lt_irrefl]
state_before: case inl
y : ℝ
H : 0 < y
⊢ 0 ^ y = if 0 < y then 0 else if y = 0 then 1 else ⊤
state_after: no goals

tactic: simp [lt_irrefl]
state_before: case inr.inl

⊢ 0 ^ 0 = if 0 < 0 then 0 else if 0 = 0 then 1 else ⊤
state_after: no goals

tactic: simp [H, asymm H, ne_of_lt, zero_rpow_of_neg]
state_before: case inr.inr
y : ℝ
H : y < 0
⊢ 0 ^ y = if 0 < y then 0 else if y = 0 then 1 else ⊤
state_after: no goals
Theorem: Finset.exists_card_fiber_le_of_card_le_nsmul
File: Mathlib/Combinatorics/Pigeonhole.lean

tactic: simp_rw [cast_card] at hb ⊢
state_before: α : Type u
β : Type v
M : Type w
inst✝¹ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
w : α → M
b : M
n : ℕ
inst✝ : LinearOrderedCommSemiring M
ht : t.Nonempty
hb : ↑s.card ≤ t.card • b
⊢ ∃ y ∈ t, ↑(filter (fun x => f x = y) s).card ≤ b
state_after: α : Type u
β : Type v
M : Type w
inst✝¹ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
w : α → M
b : M
n : ℕ
inst✝ : LinearOrderedCommSemiring M
ht : t.Nonempty
hb : ∑ a ∈ s, 1 ≤ t.card • b
⊢ ∃ y ∈ t, ∑ a ∈ filter (fun x => f x = y) s, 1 ≤ b

tactic: refine
  exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
    (fun _ _ => sum_nonneg fun _ _ => zero_le_one) ht hb
state_before: α : Type u
β : Type v
M : Type w
inst✝¹ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
w : α → M
b : M
n : ℕ
inst✝ : LinearOrderedCommSemiring M
ht : t.Nonempty
hb : ∑ a ∈ s, 1 ≤ t.card • b
⊢ ∃ y ∈ t, ∑ a ∈ filter (fun x => f x = y) s, 1 ≤ b
state_after: no goals
Theorem: Ideal.spanNorm_eq_bot_iff
File: Mathlib/RingTheory/Ideal/Norm.lean

tactic: simp only [spanNorm, Ideal.span_eq_bot, Set.mem_image, SetLike.mem_coe, forall_exists_index,
  and_imp, forall_apply_eq_imp_iff₂,
  Algebra.norm_eq_zero_iff_of_basis (Module.Free.chooseBasis R S), @eq_bot_iff _ _ _ I,
  SetLike.le_def]
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Type u_2
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
inst✝³ : IsDomain R
inst✝² : IsDomain S
inst✝¹ : Module.Free R S
inst✝ : Module.Finite R S
I : Ideal S
⊢ spanNorm R I = ⊥ ↔ I = ⊥
state_after: R : Type u_1
inst✝⁶ : CommRing R
S : Type u_2
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
inst✝³ : IsDomain R
inst✝² : IsDomain S
inst✝¹ : Module.Free R S
inst✝ : Module.Finite R S
I : Ideal S
⊢ (∀ a ∈ I, a = 0) ↔ ∀ ⦃x : S⦄, x ∈ I → x ∈ ⊥

tactic: rfl
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Type u_2
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
inst✝³ : IsDomain R
inst✝² : IsDomain S
inst✝¹ : Module.Free R S
inst✝ : Module.Finite R S
I : Ideal S
⊢ (∀ a ∈ I, a = 0) ↔ ∀ ⦃x : S⦄, x ∈ I → x ∈ ⊥
state_after: no goals
Theorem: Finset.coe_pow
File: Mathlib/Data/Finset/Pointwise.lean

tactic: change ↑(npowRec n s) = (s: Set α) ^ n
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n✝ : ℕ
s : Finset α
n : ℕ
⊢ ↑(s ^ n) = ↑s ^ n
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n✝ : ℕ
s : Finset α
n : ℕ
⊢ ↑(npowRec n s) = ↑s ^ n

tactic: induction' n with n ih
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n✝ : ℕ
s : Finset α
n : ℕ
⊢ ↑(npowRec n s) = ↑s ^ n
state_after: case zero
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n : ℕ
s : Finset α
⊢ ↑(npowRec 0 s) = ↑s ^ 0

case succ
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n✝ : ℕ
s : Finset α
n : ℕ
ih : ↑(npowRec n s) = ↑s ^ n
⊢ ↑(npowRec (n + 1) s) = ↑s ^ (n + 1)

tactic: rw [npowRec, pow_zero, coe_one]
state_before: case zero
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n : ℕ
s : Finset α
⊢ ↑(npowRec 0 s) = ↑s ^ 0
state_after: no goals

tactic: rw [npowRec, pow_succ, coe_mul, ih]
state_before: case succ
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n✝ : ℕ
s : Finset α
n : ℕ
ih : ↑(npowRec n s) = ↑s ^ n
⊢ ↑(npowRec (n + 1) s) = ↑s ^ (n + 1)
state_after: no goals
Theorem: Finset.prod_mulIndicator_subset_of_eq_one
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: calc
  _ = ∏ i ∈ s, g i (mulIndicator ↑s f i) := by rw [prod_subset h fun i _ hn ↦ by simp [hn, hg]]
  _ = _ := prod_congr rfl fun i hi ↦ congr_arg _ <| mulIndicator_of_mem (α := ι) hi f
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
κ : Type u_6
inst✝ : One α
f : ι → α
g : ι → α → β
s t : Finset ι
h : s ⊆ t
hg : ∀ (a : ι), g a 1 = 1
⊢ ∏ i ∈ t, g i ((↑s).mulIndicator f i) = ∏ i ∈ s, g i (f i)
state_after: no goals

tactic: rw [prod_subset h fun i _ hn ↦ by simp [hn, hg]]
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
κ : Type u_6
inst✝ : One α
f : ι → α
g : ι → α → β
s t : Finset ι
h : s ⊆ t
hg : ∀ (a : ι), g a 1 = 1
⊢ ∏ i ∈ t, g i ((↑s).mulIndicator f i) = ∏ i ∈ s, g i ((↑s).mulIndicator f i)
state_after: no goals

tactic: simp [hn, hg]
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
κ : Type u_6
inst✝ : One α
f : ι → α
g : ι → α → β
s t : Finset ι
h : s ⊆ t
hg : ∀ (a : ι), g a 1 = 1
i : ι
x✝ : i ∈ t
hn : i ∉ s
⊢ g i ((↑s).mulIndicator f i) = 1
state_after: no goals
Theorem: MonoidAlgebra.mapDomain_one
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: simp_rw [one_def, mapDomain_single, map_one]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : One α
inst✝² : One α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : OneHomClass F α α₂
f : F
⊢ mapDomain (⇑f) 1 = 1
state_after: no goals
Theorem: Sym.exists_eq_cons_of_succ
File: Mathlib/Data/Sym/Basic.lean

tactic: obtain ⟨a, ha⟩ := exists_mem s
state_before: α : Type u_1
β : Type u_2
n n' m : ℕ
s✝ : Sym α n
a b : α
s : Sym α n.succ
⊢ ∃ a s', s = a ::ₛ s'
state_after: case intro
α : Type u_1
β : Type u_2
n n' m : ℕ
s✝ : Sym α n
a✝ b : α
s : Sym α n.succ
a : α
ha : a ∈ s
⊢ ∃ a s', s = a ::ₛ s'

tactic: classical exact ⟨a, s.erase a ha, (cons_erase ha).symm⟩
state_before: case intro
α : Type u_1
β : Type u_2
n n' m : ℕ
s✝ : Sym α n
a✝ b : α
s : Sym α n.succ
a : α
ha : a ∈ s
⊢ ∃ a s', s = a ::ₛ s'
state_after: no goals

tactic: exact ⟨a, s.erase a ha, (cons_erase ha).symm⟩
state_before: case intro
α : Type u_1
β : Type u_2
n n' m : ℕ
s✝ : Sym α n
a✝ b : α
s : Sym α n.succ
a : α
ha : a ∈ s
⊢ ∃ a s', s = a ::ₛ s'
state_after: no goals
Theorem: SimpleGraph.Walk.ofBoxProdLeft_boxProdLeft
File: Mathlib/Combinatorics/SimpleGraph/Prod.lean

tactic: rw [Walk.boxProdLeft, map_cons, ofBoxProdLeft, Or.by_cases, dif_pos, ← Walk.boxProdLeft]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
b : β
inst✝¹ : DecidableEq β
inst✝ : DecidableRel G.Adj
a₁ a₂ x z y : α
h : G.Adj x y
w : G.Walk y z
⊢ (Walk.boxProdLeft H b (cons' x y z h w)).ofBoxProdLeft = cons' x y z h w
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
b : β
inst✝¹ : DecidableEq β
inst✝ : DecidableRel G.Adj
a₁ a₂ x z y : α
h : G.Adj x y
w : G.Walk y z
⊢ cons ⋯ (Walk.boxProdLeft H b w).ofBoxProdLeft = cons' x y z h w

case hc
α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
b : β
inst✝¹ : DecidableEq β
inst✝ : DecidableRel G.Adj
a₁ a₂ x z y : α
h : G.Adj x y
w : G.Walk y z
⊢ G.Adj (x, b).1 ((G.boxProdLeft H b).toHom y).1 ∧ (x, b).2 = ((G.boxProdLeft H b).toHom y).2

tactic: simp [ofBoxProdLeft_boxProdLeft]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
b : β
inst✝¹ : DecidableEq β
inst✝ : DecidableRel G.Adj
a₁ a₂ x z y : α
h : G.Adj x y
w : G.Walk y z
⊢ cons ⋯ (Walk.boxProdLeft H b w).ofBoxProdLeft = cons' x y z h w
state_after: no goals

tactic: exact ⟨h, rfl⟩
state_before: case hc
α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
b : β
inst✝¹ : DecidableEq β
inst✝ : DecidableRel G.Adj
a₁ a₂ x z y : α
h : G.Adj x y
w : G.Walk y z
⊢ G.Adj (x, b).1 ((G.boxProdLeft H b).toHom y).1 ∧ (x, b).2 = ((G.boxProdLeft H b).toHom y).2
state_after: no goals
Theorem: Real.le_log_iff_exp_le
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [← exp_le_exp, exp_log hy]
state_before: x y : ℝ
hy : 0 < y
⊢ x ≤ log y ↔ rexp x ≤ y
state_after: no goals
Theorem: Real.Angle.cos_zero
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [← coe_zero, cos_coe, Real.cos_zero]
state_before: ⊢ cos 0 = 1
state_after: no goals
Theorem: InnerProductGeometry.angle_self_neg_of_nonzero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

tactic: rw [angle_neg_right, angle_self hx, sub_zero]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y x : V
hx : x ≠ 0
⊢ angle x (-x) = π
state_after: no goals
Theorem: SimpleGraph.Walk.cons_map_snd_darts
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p <;> simp! [*]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
⊢ u :: List.map (fun x => x.toProd.2) p.darts = p.support
state_after: no goals
Theorem: Real.range_arcsin
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: rw [arcsin, range_comp Subtype.val]
state_before: x y : ℝ
⊢ range arcsin = Icc (-(π / 2)) (π / 2)
state_after: x y : ℝ
⊢ Subtype.val '' range (IccExtend arcsin.proof_2 ⇑sinOrderIso.symm) = Icc (-(π / 2)) (π / 2)

tactic: simp [Icc]
state_before: x y : ℝ
⊢ Subtype.val '' range (IccExtend arcsin.proof_2 ⇑sinOrderIso.symm) = Icc (-(π / 2)) (π / 2)
state_after: no goals
Theorem: le_of_forall_one_lt_lt_mul
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: simpa using h _ (lt_inv_mul_iff_lt.mpr h₁)
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
h : ∀ (ε : α), 1 < ε → a < b * ε
h₁ : b < a
⊢ a < a
state_after: no goals
Theorem: Field.sepDegree_eq_of_isPurelyInseparable
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: convert sepDegree_eq_of_isPurelyInseparable_of_isSeparable F E (separableClosure E K)
state_before: F : Type u
E : Type v
inst✝⁷ : Field F
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
K : Type w
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : IsPurelyInseparable F E
⊢ sepDegree F K = sepDegree E K
state_after: case h.e'_2
F : Type u
E : Type v
inst✝⁷ : Field F
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
K : Type w
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : IsPurelyInseparable F E
⊢ sepDegree F K = sepDegree F ↥(separableClosure E K)

tactic: haveI : IsScalarTower F (separableClosure E K) K := IsScalarTower.of_algebraMap_eq (congrFun rfl)
state_before: case h.e'_2
F : Type u
E : Type v
inst✝⁷ : Field F
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
K : Type w
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : IsPurelyInseparable F E
⊢ sepDegree F K = sepDegree F ↥(separableClosure E K)
state_after: case h.e'_2
F : Type u
E : Type v
inst✝⁷ : Field F
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
K : Type w
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : IsPurelyInseparable F E
this : IsScalarTower F (↥(separableClosure E K)) K
⊢ sepDegree F K = sepDegree F ↥(separableClosure E K)

tactic: rw [sepDegree, ← separableClosure.map_eq_of_separableClosure_eq_bot F
  (separableClosure.separableClosure_eq_bot E K)]
state_before: case h.e'_2
F : Type u
E : Type v
inst✝⁷ : Field F
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
K : Type w
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : IsPurelyInseparable F E
this : IsScalarTower F (↥(separableClosure E K)) K
⊢ sepDegree F K = sepDegree F ↥(separableClosure E K)
state_after: case h.e'_2
F : Type u
E : Type v
inst✝⁷ : Field F
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
K : Type w
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : IsPurelyInseparable F E
this : IsScalarTower F (↥(separableClosure E K)) K
⊢ Module.rank F
      ↥(IntermediateField.map (IsScalarTower.toAlgHom F (↥(separableClosure E K)) K)
          (separableClosure F ↥(separableClosure E K))) =
    sepDegree F ↥(separableClosure E K)

tactic: exact (separableClosure F (separableClosure E K)).equivMap
  (IsScalarTower.toAlgHom F (separableClosure E K) K) |>.symm.toLinearEquiv.rank_eq
state_before: case h.e'_2
F : Type u
E : Type v
inst✝⁷ : Field F
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
K : Type w
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : IsPurelyInseparable F E
this : IsScalarTower F (↥(separableClosure E K)) K
⊢ Module.rank F
      ↥(IntermediateField.map (IsScalarTower.toAlgHom F (↥(separableClosure E K)) K)
          (separableClosure F ↥(separableClosure E K))) =
    sepDegree F ↥(separableClosure E K)
state_after: no goals
Theorem: IntermediateField.adjoin.range_algebraMap_subset
File: Mathlib/FieldTheory/Adjoin.lean

tactic: intro x hx
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
⊢ Set.range ⇑(algebraMap F E) ⊆ ↑(adjoin F S)
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
hx : x ∈ Set.range ⇑(algebraMap F E)
⊢ x ∈ ↑(adjoin F S)

tactic: cases' hx with f hf
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
hx : x ∈ Set.range ⇑(algebraMap F E)
⊢ x ∈ ↑(adjoin F S)
state_after: case intro
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
f : F
hf : (algebraMap F E) f = x
⊢ x ∈ ↑(adjoin F S)

tactic: rw [← hf]
state_before: case intro
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
f : F
hf : (algebraMap F E) f = x
⊢ x ∈ ↑(adjoin F S)
state_after: case intro
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
f : F
hf : (algebraMap F E) f = x
⊢ (algebraMap F E) f ∈ ↑(adjoin F S)

tactic: exact adjoin.algebraMap_mem F S f
state_before: case intro
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
f : F
hf : (algebraMap F E) f = x
⊢ (algebraMap F E) f ∈ ↑(adjoin F S)
state_after: no goals
Theorem: Convex.add
File: Mathlib/Analysis/Convex/Basic.lean

tactic: rw [← add_image_prod]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
x : E
t : Set E
hs : Convex 𝕜 s
ht : Convex 𝕜 t
⊢ Convex 𝕜 (s + t)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
x : E
t : Set E
hs : Convex 𝕜 s
ht : Convex 𝕜 t
⊢ Convex 𝕜 ((fun x => x.1 + x.2) '' s ×ˢ t)

tactic: exact (hs.prod ht).is_linear_image IsLinearMap.isLinearMap_add
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
x : E
t : Set E
hs : Convex 𝕜 s
ht : Convex 𝕜 t
⊢ Convex 𝕜 ((fun x => x.1 + x.2) '' s ×ˢ t)
state_after: no goals
Theorem: Real.expNear_succ
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [expNear, range_succ, mul_add, add_left_comm, add_assoc, pow_succ, div_eq_mul_inv,
    mul_inv, Nat.factorial]
state_before: n : ℕ
x r : ℝ
⊢ expNear (n + 1) x r = expNear n x (1 + x / (↑n + 1) * r)
state_after: n : ℕ
x r : ℝ
⊢ x ^ n * x * ((↑n.factorial)⁻¹ * (↑n + 1)⁻¹) * r = x ^ n * (↑n.factorial)⁻¹ * (x * (↑n + 1)⁻¹ * r)

tactic: ac_rfl
state_before: n : ℕ
x r : ℝ
⊢ x ^ n * x * ((↑n.factorial)⁻¹ * (↑n + 1)⁻¹) * r = x ^ n * (↑n.factorial)⁻¹ * (x * (↑n + 1)⁻¹ * r)
state_after: no goals
Theorem: minpoly.algEquiv_apply
File: Mathlib/FieldTheory/Adjoin.lean

tactic: have hy : IsAlgebraic K y := ⟨minpoly K x, ne_zero hx.isIntegral, (h_mp ▸ aeval _ _)⟩
state_before: K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
x y : L
hx : IsAlgebraic K x
h_mp : minpoly K x = minpoly K y
⊢ (algEquiv hx h_mp) (AdjoinSimple.gen K x) = AdjoinSimple.gen K y
state_after: K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
x y : L
hx : IsAlgebraic K x
h_mp : minpoly K x = minpoly K y
hy : IsAlgebraic K y
⊢ (algEquiv hx h_mp) (AdjoinSimple.gen K x) = AdjoinSimple.gen K y

tactic: rw [algEquiv, trans_apply, ← adjoinRootEquivAdjoin_apply_root K hx.isIntegral,
  symm_apply_apply, trans_apply, AdjoinRoot.algEquivOfEq_apply_root,
  adjoinRootEquivAdjoin_apply_root K hy.isIntegral]
state_before: K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
x y : L
hx : IsAlgebraic K x
h_mp : minpoly K x = minpoly K y
hy : IsAlgebraic K y
⊢ (algEquiv hx h_mp) (AdjoinSimple.gen K x) = AdjoinSimple.gen K y
state_after: no goals
Theorem: Set.inter_prod
File: Mathlib/Data/Set/Prod.lean

tactic: ext ⟨x, y⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
⊢ (s₁ ∩ s₂) ×ˢ t = s₁ ×ˢ t ∩ s₂ ×ˢ t
state_after: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
x : α
y : β
⊢ (x, y) ∈ (s₁ ∩ s₂) ×ˢ t ↔ (x, y) ∈ s₁ ×ˢ t ∩ s₂ ×ˢ t

tactic: simp only [← and_and_right, mem_inter_iff, mem_prod]
state_before: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
x : α
y : β
⊢ (x, y) ∈ (s₁ ∩ s₂) ×ˢ t ↔ (x, y) ∈ s₁ ×ˢ t ∩ s₂ ×ˢ t
state_after: no goals
Theorem: List.erase_eq_eraseP
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: if h : a = b then simp [h] else simp [h, Ne.symm h, erase_eq_eraseP a l]
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a b : α
l : List α
⊢ (b :: l).erase a = eraseP (fun x => a == x) (b :: l)
state_after: no goals

tactic: simp [h]
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a b : α
l : List α
h : a = b
⊢ (b :: l).erase a = eraseP (fun x => a == x) (b :: l)
state_after: no goals

tactic: simp [h, Ne.symm h, erase_eq_eraseP a l]
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a b : α
l : List α
h : ¬a = b
⊢ (b :: l).erase a = eraseP (fun x => a == x) (b :: l)
state_after: no goals
Theorem: SetTheory.PGame.grundyValue_add
File: Mathlib/SetTheory/Game/Nim.lean

tactic: rw [← nim_grundyValue (n ^^^ m), grundyValue_eq_iff_equiv]
state_before: G H : PGame
inst✝¹ : G.Impartial
inst✝ : H.Impartial
n m : ℕ
hG : G.grundyValue = ↑n
hH : H.grundyValue = ↑m
⊢ (G + H).grundyValue = ↑(n ^^^ m)
state_after: G H : PGame
inst✝¹ : G.Impartial
inst✝ : H.Impartial
n m : ℕ
hG : G.grundyValue = ↑n
hH : H.grundyValue = ↑m
⊢ G + H ≈ nim ↑(n ^^^ m)

tactic: refine Equiv.trans ?_ nim_add_nim_equiv
state_before: G H : PGame
inst✝¹ : G.Impartial
inst✝ : H.Impartial
n m : ℕ
hG : G.grundyValue = ↑n
hH : H.grundyValue = ↑m
⊢ G + H ≈ nim ↑(n ^^^ m)
state_after: G H : PGame
inst✝¹ : G.Impartial
inst✝ : H.Impartial
n m : ℕ
hG : G.grundyValue = ↑n
hH : H.grundyValue = ↑m
⊢ G + H ≈ nim ↑n + nim ↑m

tactic: convert add_congr (equiv_nim_grundyValue G) (equiv_nim_grundyValue H) <;> simp only [hG, hH]
state_before: G H : PGame
inst✝¹ : G.Impartial
inst✝ : H.Impartial
n m : ℕ
hG : G.grundyValue = ↑n
hH : H.grundyValue = ↑m
⊢ G + H ≈ nim ↑n + nim ↑m
state_after: no goals
Theorem: WeierstrassCurve.map_ΨSq
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: simp only [ΨSq, map_preΨ, map_Ψ₂Sq, ← coe_mapRingHom]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
n : ℤ
⊢ (W.map f).ΨSq n = Polynomial.map f (W.ΨSq n)
state_after: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
n : ℤ
⊢ ((mapRingHom f) (W.preΨ n) ^ 2 * if Even n then (mapRingHom f) W.Ψ₂Sq else 1) =
    (mapRingHom f) (W.preΨ n ^ 2 * if Even n then W.Ψ₂Sq else 1)

tactic: map_simp
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
n : ℤ
⊢ ((mapRingHom f) (W.preΨ n) ^ 2 * if Even n then (mapRingHom f) W.Ψ₂Sq else 1) =
    (mapRingHom f) (W.preΨ n ^ 2 * if Even n then W.Ψ₂Sq else 1)
state_after: no goals