1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.isNilpotent_iterate_newtonMap_sub_of_isNilpotent
File: Mathlib/Dynamics/Newton.lean

tactic: induction n with
| zero => simp
| succ n ih =>
  rw [iterate_succ', comp_apply, newtonMap_apply, sub_right_comm]
  refine (Commute.all _ _).isNilpotent_sub ih <| (Commute.all _ _).isNilpotent_mul_right ?_
  simpa using Commute.isNilpotent_add (Commute.all _ _)
    (isNilpotent_aeval_sub_of_isNilpotent_sub P ih) h
state_before: R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
x : S
h : IsNilpotent ((aeval x) P)
n : ℕ
⊢ IsNilpotent (P.newtonMap^[n] x - x)
state_after: no goals

tactic: simp
state_before: case zero
R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
x : S
h : IsNilpotent ((aeval x) P)
⊢ IsNilpotent (P.newtonMap^[0] x - x)
state_after: no goals

tactic: rw [iterate_succ', comp_apply, newtonMap_apply, sub_right_comm]
state_before: case succ
R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
x : S
h : IsNilpotent ((aeval x) P)
n : ℕ
ih : IsNilpotent (P.newtonMap^[n] x - x)
⊢ IsNilpotent (P.newtonMap^[n + 1] x - x)
state_after: case succ
R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
x : S
h : IsNilpotent ((aeval x) P)
n : ℕ
ih : IsNilpotent (P.newtonMap^[n] x - x)
⊢ IsNilpotent
    (P.newtonMap^[n] x - x - Ring.inverse ((aeval (P.newtonMap^[n] x)) (derivative P)) * (aeval (P.newtonMap^[n] x)) P)

tactic: refine (Commute.all _ _).isNilpotent_sub ih <| (Commute.all _ _).isNilpotent_mul_right ?_
state_before: case succ
R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
x : S
h : IsNilpotent ((aeval x) P)
n : ℕ
ih : IsNilpotent (P.newtonMap^[n] x - x)
⊢ IsNilpotent
    (P.newtonMap^[n] x - x - Ring.inverse ((aeval (P.newtonMap^[n] x)) (derivative P)) * (aeval (P.newtonMap^[n] x)) P)
state_after: case succ
R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
x : S
h : IsNilpotent ((aeval x) P)
n : ℕ
ih : IsNilpotent (P.newtonMap^[n] x - x)
⊢ IsNilpotent ((aeval (P.newtonMap^[n] x)) P)

tactic: simpa using Commute.isNilpotent_add (Commute.all _ _)
  (isNilpotent_aeval_sub_of_isNilpotent_sub P ih) h
state_before: case succ
R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
x : S
h : IsNilpotent ((aeval x) P)
n : ℕ
ih : IsNilpotent (P.newtonMap^[n] x - x)
⊢ IsNilpotent ((aeval (P.newtonMap^[n] x)) P)
state_after: no goals
Theorem: ContDiffOn.differentiableOn_iteratedDerivWithin
File: Mathlib/Analysis/Calculus/IteratedDeriv/Defs.lean

tactic: rwa [insert_eq_of_mem hx]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n✝ : ℕ
f : 𝕜 → F
s : Set 𝕜
x✝ : 𝕜
n : ℕ∞
m : ℕ
h : ContDiffOn 𝕜 n f s
hmn : ↑m < n
hs : UniqueDiffOn 𝕜 s
x : 𝕜
hx : x ∈ s
⊢ UniqueDiffOn 𝕜 (insert x s)
state_after: no goals
Theorem: Ideal.absNorm_eq_one_iff
File: Mathlib/RingTheory/Ideal/Norm.lean

tactic: rw [absNorm_apply, cardQuot_eq_one_iff]
state_before: S : Type u_1
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain S
inst✝³ : Nontrivial S
inst✝² : IsDedekindDomain S
inst✝¹ : Module.Free ℤ S
inst✝ : Module.Finite ℤ S
I : Ideal S
⊢ absNorm I = 1 ↔ I = ⊤
state_after: no goals
Theorem: Ideal.basisSpanSingleton_apply
File: Mathlib/RingTheory/Ideal/Basis.lean

tactic: simp only [basisSpanSingleton, Basis.map_apply, LinearEquiv.trans_apply,
  Submodule.restrictScalarsEquiv_apply, LinearEquiv.ofInjective_apply, LinearEquiv.coe_ofEq_apply,
  LinearEquiv.restrictScalars_apply, Algebra.coe_lmul_eq_mul, LinearMap.mul_apply']
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
inst✝³ : CommSemiring R
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra R S
b : Basis ι R S
x : S
hx : x ≠ 0
i : ι
⊢ ↑((basisSpanSingleton b hx) i) = x * b i
state_after: no goals
Theorem: IsAntichain.minimals_upperClosure
File: Mathlib/Order/Minimal.lean

tactic: rwa [eq_of_mem_minimals ‹a ∈ _› (subset_upperClosure hb) hba]
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b✝ : α
inst✝ : PartialOrder α
hs : IsAntichain (fun x x_1 => x ≤ x_1) s
a : α
x✝ : a ∈ minimals (fun x x_1 => x ≤ x_1) ↑(upperClosure s)
b : α
hb : b ∈ s
hba : b ≤ a
right✝ : ∀ ⦃b : α⦄, b ∈ ↑(upperClosure s) → (fun x x_1 => x ≤ x_1) b a → (fun x x_1 => x ≤ x_1) a b
⊢ a ∈ s
state_after: no goals

tactic: rwa [hs.eq' ha hc (hcb.trans hba)]
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b✝ : α
inst✝ : PartialOrder α
hs : IsAntichain (fun x x_1 => x ≤ x_1) s
a : α
ha : a ∈ s
b : α
x✝ : b ∈ ↑(upperClosure s)
hba : (fun x x_1 => x ≤ x_1) b a
c : α
hc : c ∈ s
hcb : c ≤ b
⊢ (fun x x_1 => x ≤ x_1) a b
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.equation_of_equiv
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rcases h with ⟨u, rfl⟩
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
h : P ≈ Q
⊢ W'.Equation P ↔ W'.Equation Q
state_after: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
u : Rˣ
⊢ W'.Equation ((fun m => m • Q) u) ↔ W'.Equation Q

tactic: exact equation_smul Q u.isUnit
state_before: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
u : Rˣ
⊢ W'.Equation ((fun m => m • Q) u) ↔ W'.Equation Q
state_after: no goals
Theorem: Lists'.subset_def
File: Mathlib/SetTheory/Lists.lean

tactic: rw [← of_toList l₁]
state_before: α : Type u_1
l₁ l₂ : Lists' α true
H : ∀ a ∈ l₁.toList, a ∈ l₂
⊢ l₁ ⊆ l₂
state_after: α : Type u_1
l₁ l₂ : Lists' α true
H : ∀ a ∈ l₁.toList, a ∈ l₂
⊢ ofList l₁.toList ⊆ l₂

tactic: revert H
state_before: α : Type u_1
l₁ l₂ : Lists' α true
H : ∀ a ∈ l₁.toList, a ∈ l₂
⊢ ofList l₁.toList ⊆ l₂
state_after: α : Type u_1
l₁ l₂ : Lists' α true
⊢ (∀ a ∈ l₁.toList, a ∈ l₂) → ofList l₁.toList ⊆ l₂

tactic: induction' toList l₁ with h t t_ih <;> intro H
state_before: α : Type u_1
l₁ l₂ : Lists' α true
⊢ (∀ a ∈ l₁.toList, a ∈ l₂) → ofList l₁.toList ⊆ l₂
state_after: case nil
α : Type u_1
l₁ l₂ : Lists' α true
H : ∀ a ∈ [], a ∈ l₂
⊢ ofList [] ⊆ l₂

case cons
α : Type u_1
l₁ l₂ : Lists' α true
h : Lists α
t : List (Lists α)
t_ih : (∀ a ∈ t, a ∈ l₂) → ofList t ⊆ l₂
H : ∀ a ∈ h :: t, a ∈ l₂
⊢ ofList (h :: t) ⊆ l₂

tactic: exact Subset.nil
state_before: case nil
α : Type u_1
l₁ l₂ : Lists' α true
H : ∀ a ∈ [], a ∈ l₂
⊢ ofList [] ⊆ l₂
state_after: no goals

tactic: simp only [ofList, List.find?, List.mem_cons, forall_eq_or_imp] at *
state_before: case cons
α : Type u_1
l₁ l₂ : Lists' α true
h : Lists α
t : List (Lists α)
t_ih : (∀ a ∈ t, a ∈ l₂) → ofList t ⊆ l₂
H : ∀ a ∈ h :: t, a ∈ l₂
⊢ ofList (h :: t) ⊆ l₂
state_after: case cons
α : Type u_1
l₁ l₂ : Lists' α true
h : Lists α
t : List (Lists α)
t_ih : (∀ a ∈ t, a ∈ l₂) → ofList t ⊆ l₂
H : h ∈ l₂ ∧ ∀ a ∈ t, a ∈ l₂
⊢ cons h (ofList t) ⊆ l₂

tactic: exact cons_subset.2 ⟨H.1, t_ih H.2⟩
state_before: case cons
α : Type u_1
l₁ l₂ : Lists' α true
h : Lists α
t : List (Lists α)
t_ih : (∀ a ∈ t, a ∈ l₂) → ofList t ⊆ l₂
H : h ∈ l₂ ∧ ∀ a ∈ t, a ∈ l₂
⊢ cons h (ofList t) ⊆ l₂
state_after: no goals
Theorem: LieModuleHom.map_top
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: ext
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
f : M →ₗ⁅R,L⁆ N
⊢ LieSubmodule.map f ⊤ = f.range
state_after: case h
R : Type u
L : Type v
M : Type w
N : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
f : M →ₗ⁅R,L⁆ N
m✝ : N
⊢ m✝ ∈ LieSubmodule.map f ⊤ ↔ m✝ ∈ f.range

tactic: simp [LieSubmodule.mem_map]
state_before: case h
R : Type u
L : Type v
M : Type w
N : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
f : M →ₗ⁅R,L⁆ N
m✝ : N
⊢ m✝ ∈ LieSubmodule.map f ⊤ ↔ m✝ ∈ f.range
state_after: no goals
Theorem: Dioph.reindex_diophFn
File: Mathlib/NumberTheory/Dioph.lean

tactic: convert reindex_dioph (Option β) (Option.map g) d
state_before: α β γ : Type u
S S' : Set (α → ℕ)
f : (α → ℕ) → ℕ
g : α → β
d : DiophFn f
⊢ DiophFn fun v => f (v ∘ g)
state_after: no goals
Theorem: Finset.affineCombination_affineCombinationLineMapWeights
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: rw [affineCombinationLineMapWeights, ← weightedVSub_vadd_affineCombination,
  weightedVSub_const_smul, s.affineCombination_affineCombinationSingleWeights k p hi,
  s.weightedVSub_weightedVSubVSubWeights k p hj hi, AffineMap.lineMap_apply]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝ : DecidableEq ι
p : ι → P
i j : ι
hi : i ∈ s
hj : j ∈ s
c : k
⊢ (affineCombination k s p) (affineCombinationLineMapWeights i j c) = (AffineMap.lineMap (p i) (p j)) c
state_after: no goals
Theorem: MeasureTheory.Measure.count_apply_eq_top'
File: Mathlib/MeasureTheory/Measure/Count.lean

tactic: by_cases hs : s.Finite
state_before: α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
s_mble : MeasurableSet s
⊢ count s = ⊤ ↔ s.Infinite
state_after: case pos
α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
s_mble : MeasurableSet s
hs : s.Finite
⊢ count s = ⊤ ↔ s.Infinite

case neg
α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
s_mble : MeasurableSet s
hs : ¬s.Finite
⊢ count s = ⊤ ↔ s.Infinite

tactic: simp [Set.Infinite, hs, count_apply_finite' hs s_mble]
state_before: case pos
α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
s_mble : MeasurableSet s
hs : s.Finite
⊢ count s = ⊤ ↔ s.Infinite
state_after: no goals

tactic: change s.Infinite at hs
state_before: case neg
α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
s_mble : MeasurableSet s
hs : ¬s.Finite
⊢ count s = ⊤ ↔ s.Infinite
state_after: case neg
α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
s_mble : MeasurableSet s
hs : s.Infinite
⊢ count s = ⊤ ↔ s.Infinite

tactic: simp [hs, count_apply_infinite]
state_before: case neg
α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
s_mble : MeasurableSet s
hs : s.Infinite
⊢ count s = ⊤ ↔ s.Infinite
state_after: no goals
Theorem: cycleType_finRotate_of_le
File: Mathlib/GroupTheory/Perm/Fin.lean

tactic: obtain ⟨m, rfl⟩ := exists_add_of_le h
state_before: n : ℕ
h : 2 ≤ n
⊢ (finRotate n).cycleType = {n}
state_after: case intro
m : ℕ
h : 2 ≤ 2 + m
⊢ (finRotate (2 + m)).cycleType = {2 + m}

tactic: rw [add_comm, cycleType_finRotate]
state_before: case intro
m : ℕ
h : 2 ≤ 2 + m
⊢ (finRotate (2 + m)).cycleType = {2 + m}
state_after: no goals
Theorem: PartialHomeomorph.extend_preimage_mem_nhds
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: apply (continuousAt_extend_symm f I h).preimage_mem_nhds
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
x : M
h : x ∈ f.source
ht : t ∈ 𝓝 x
⊢ ↑(f.extend I).symm ⁻¹' t ∈ 𝓝 (↑(f.extend I) x)
state_after: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
x : M
h : x ∈ f.source
ht : t ∈ 𝓝 x
⊢ t ∈ 𝓝 (↑(f.extend I).symm (↑(f.extend I) x))

tactic: rwa [(f.extend I).left_inv]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
x : M
h : x ∈ f.source
ht : t ∈ 𝓝 x
⊢ t ∈ 𝓝 (↑(f.extend I).symm (↑(f.extend I) x))
state_after: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
x : M
h : x ∈ f.source
ht : t ∈ 𝓝 x
⊢ x ∈ (f.extend I).source

tactic: rwa [f.extend_source]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
x : M
h : x ∈ f.source
ht : t ∈ 𝓝 x
⊢ x ∈ (f.extend I).source
state_after: no goals
Theorem: LinearMap.zero_mem_polar
File: Mathlib/Analysis/LocallyConvex/Polar.lean

tactic: simp only [map_zero, norm_zero, zero_le_one]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : NormedCommRing 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
s : Set E
x✝¹ : E
x✝ : x✝¹ ∈ s
⊢ ‖(B x✝¹) 0‖ ≤ 1
state_after: no goals
Theorem: Nat.bit_eq_zero_iff
File: Mathlib/Data/Nat/Bits.lean

tactic: constructor
state_before: m n✝ n : ℕ
b : Bool
⊢ bit b n = 0 ↔ n = 0 ∧ b = false
state_after: case mp
m n✝ n : ℕ
b : Bool
⊢ bit b n = 0 → n = 0 ∧ b = false

case mpr
m n✝ n : ℕ
b : Bool
⊢ n = 0 ∧ b = false → bit b n = 0

tactic: cases b <;> simp [Nat.bit, Nat.bit0_eq_zero, Nat.bit1_ne_zero]
state_before: case mp
m n✝ n : ℕ
b : Bool
⊢ bit b n = 0 → n = 0 ∧ b = false
state_after: no goals

tactic: rintro ⟨rfl, rfl⟩
state_before: case mpr
m n✝ n : ℕ
b : Bool
⊢ n = 0 ∧ b = false → bit b n = 0
state_after: case mpr.intro
m n : ℕ
⊢ bit false 0 = 0

tactic: rfl
state_before: case mpr.intro
m n : ℕ
⊢ bit false 0 = 0
state_after: no goals
Theorem: GaussianInt.toComplex_div_im
File: Mathlib/NumberTheory/Zsqrtd/GaussianInt.lean

tactic: rw [div_def, ← @Rat.round_cast ℝ _ _, ← @Rat.round_cast ℝ _ _]
state_before: x y : ℤ[i]
⊢ (toComplex (x / y)).im = ↑(round (toComplex x / toComplex y).im)
state_after: x y : ℤ[i]
⊢ (toComplex { re := round ↑(↑(x * star y).re / ↑(norm y)), im := round ↑(↑(x * star y).im / ↑(norm y)) }).im =
    ↑(round (toComplex x / toComplex y).im)

tactic: simp [-Rat.round_cast, mul_assoc, div_eq_mul_inv, mul_add, add_mul]
state_before: x y : ℤ[i]
⊢ (toComplex { re := round ↑(↑(x * star y).re / ↑(norm y)), im := round ↑(↑(x * star y).im / ↑(norm y)) }).im =
    ↑(round (toComplex x / toComplex y).im)
state_after: no goals
Theorem: EuclideanGeometry.dist_div_sin_angle_of_angle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [angle, ← inner_eq_zero_iff_angle_eq_pi_div_two, real_inner_comm, ← neg_eq_zero, ←
  inner_neg_left, neg_vsub_eq_vsub_rev] at h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : ∠ p₁ p₂ p₃ = π / 2
h0 : p₁ ≠ p₂ ∨ p₃ = p₂
⊢ dist p₁ p₂ / Real.sin (∠ p₂ p₃ p₁) = dist p₁ p₃
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : ⟪p₂ -ᵥ p₃, p₁ -ᵥ p₂⟫_ℝ = 0
h0 : p₁ ≠ p₂ ∨ p₃ = p₂
⊢ dist p₁ p₂ / Real.sin (∠ p₂ p₃ p₁) = dist p₁ p₃

tactic: rw [eq_comm, ← @vsub_ne_zero V, ← @vsub_eq_zero_iff_eq V, or_comm] at h0
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : ⟪p₂ -ᵥ p₃, p₁ -ᵥ p₂⟫_ℝ = 0
h0 : p₁ ≠ p₂ ∨ p₃ = p₂
⊢ dist p₁ p₂ / Real.sin (∠ p₂ p₃ p₁) = dist p₁ p₃
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : ⟪p₂ -ᵥ p₃, p₁ -ᵥ p₂⟫_ℝ = 0
h0 : p₂ -ᵥ p₃ = 0 ∨ p₁ -ᵥ p₂ ≠ 0
⊢ dist p₁ p₂ / Real.sin (∠ p₂ p₃ p₁) = dist p₁ p₃

tactic: rw [angle, dist_eq_norm_vsub V p₁ p₂, dist_eq_norm_vsub V p₁ p₃, ← vsub_add_vsub_cancel p₁ p₂ p₃,
  add_comm, norm_div_sin_angle_add_of_inner_eq_zero h h0]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : ⟪p₂ -ᵥ p₃, p₁ -ᵥ p₂⟫_ℝ = 0
h0 : p₂ -ᵥ p₃ = 0 ∨ p₁ -ᵥ p₂ ≠ 0
⊢ dist p₁ p₂ / Real.sin (∠ p₂ p₃ p₁) = dist p₁ p₃
state_after: no goals
Theorem: IsOpen.measure_zero_iff_eq_empty
File: Mathlib/MeasureTheory/Measure/OpenPos.lean

tactic: simp [h]
state_before: X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
m : MeasurableSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : T2Space Y
μ ν : Measure X
inst✝ : μ.IsOpenPosMeasure
s U F : Set X
x : X
hU : IsOpen U
h : U = ∅
⊢ μ U = 0
state_after: no goals
Theorem: dot_self_cross
File: Mathlib/LinearAlgebra/CrossProduct.lean

tactic: rw [cross_apply, vec3_dotProduct]
state_before: R : Type u_1
inst✝ : CommRing R
v w : Fin 3 → R
⊢ v ⬝ᵥ (crossProduct v) w = 0
state_after: R : Type u_1
inst✝ : CommRing R
v w : Fin 3 → R
⊢ v 0 * ![v 1 * w 2 - v 2 * w 1, v 2 * w 0 - v 0 * w 2, v 0 * w 1 - v 1 * w 0] 0 +
        v 1 * ![v 1 * w 2 - v 2 * w 1, v 2 * w 0 - v 0 * w 2, v 0 * w 1 - v 1 * w 0] 1 +
      v 2 * ![v 1 * w 2 - v 2 * w 1, v 2 * w 0 - v 0 * w 2, v 0 * w 1 - v 1 * w 0] 2 =
    0

tactic: norm_num
state_before: R : Type u_1
inst✝ : CommRing R
v w : Fin 3 → R
⊢ v 0 * ![v 1 * w 2 - v 2 * w 1, v 2 * w 0 - v 0 * w 2, v 0 * w 1 - v 1 * w 0] 0 +
        v 1 * ![v 1 * w 2 - v 2 * w 1, v 2 * w 0 - v 0 * w 2, v 0 * w 1 - v 1 * w 0] 1 +
      v 2 * ![v 1 * w 2 - v 2 * w 1, v 2 * w 0 - v 0 * w 2, v 0 * w 1 - v 1 * w 0] 2 =
    0
state_after: R : Type u_1
inst✝ : CommRing R
v w : Fin 3 → R
⊢ v 0 * (v 1 * w 2 - v 2 * w 1) + v 1 * (v 2 * w 0 - v 0 * w 2) + v 2 * (v 0 * w 1 - v 1 * w 0) = 0

tactic: ring
state_before: R : Type u_1
inst✝ : CommRing R
v w : Fin 3 → R
⊢ v 0 * (v 1 * w 2 - v 2 * w 1) + v 1 * (v 2 * w 0 - v 0 * w 2) + v 2 * (v 0 * w 1 - v 1 * w 0) = 0
state_after: no goals
Theorem: CategoryTheory.Limits.prod.comp_lift
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: ext <;> simp
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ V W X Y : C
inst✝ : HasBinaryProduct X Y
f : V ⟶ W
g : W ⟶ X
h : W ⟶ Y
⊢ f ≫ lift g h = lift (f ≫ g) (f ≫ h)
state_after: no goals
Theorem: MeasureTheory.Measure.dirac_unit_compProd_const
File: Mathlib/Probability/Kernel/MeasureCompProd.lean

tactic: rw [dirac_unit_compProd, kernel.const_apply]
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ✝ : Measure α
κ η : ↥(kernel α β)
μ : Measure β
inst✝ : IsFiniteMeasure μ
⊢ dirac () ⊗ₘ kernel.const Unit μ = map (Prod.mk ()) μ
state_after: no goals
Theorem: Finset.filterMap_mono
File: Mathlib/Data/Finset/Image.lean

tactic: rw [← val_le_iff] at h ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → Option β
s' s t : Finset α
f_inj : ∀ (a a' : α), ∀ b ∈ f a, b ∈ f a' → a = a'
h : s ⊆ t
⊢ filterMap f s f_inj ⊆ filterMap f t f_inj
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → Option β
s' s t : Finset α
f_inj : ∀ (a a' : α), ∀ b ∈ f a, b ∈ f a' → a = a'
h : s.val ≤ t.val
⊢ (filterMap f s f_inj).val ≤ (filterMap f t f_inj).val

tactic: exact Multiset.filterMap_le_filterMap f h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → Option β
s' s t : Finset α
f_inj : ∀ (a a' : α), ∀ b ∈ f a, b ∈ f a' → a = a'
h : s.val ≤ t.val
⊢ (filterMap f s f_inj).val ≤ (filterMap f t f_inj).val
state_after: no goals
Theorem: fderivWithin_continuousLinearEquiv_comp
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: change fderivWithin 𝕜 (((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L) ∘ f) s x = _
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_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
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
iso : E ≃L[𝕜] F
L : G ≃L[𝕜] G'
f : E → F →L[𝕜] G
hs : UniqueDiffWithinAt 𝕜 s x
⊢ fderivWithin 𝕜 (fun x => (↑L).comp (f x)) s x =
    (↑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L)).comp (fderivWithin 𝕜 f s x)
state_after: 𝕜 : 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_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
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
iso : E ≃L[𝕜] F
L : G ≃L[𝕜] G'
f : E → F →L[𝕜] G
hs : UniqueDiffWithinAt 𝕜 s x
⊢ fderivWithin 𝕜 (⇑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L) ∘ f) s x =
    (↑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L)).comp (fderivWithin 𝕜 f s x)

tactic: rw [ContinuousLinearEquiv.comp_fderivWithin _ hs]
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_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
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
iso : E ≃L[𝕜] F
L : G ≃L[𝕜] G'
f : E → F →L[𝕜] G
hs : UniqueDiffWithinAt 𝕜 s x
⊢ fderivWithin 𝕜 (⇑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L) ∘ f) s x =
    (↑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L)).comp (fderivWithin 𝕜 f s x)
state_after: no goals
Theorem: Real.Angle.sign_zero
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [sign, sin_zero, _root_.sign_zero]
state_before: ⊢ sign 0 = 0
state_after: no goals
Theorem: Complex.I_sq
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [sq, I_mul_I]
state_before: ⊢ I ^ 2 = -1
state_after: no goals