1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CompleteLattice.top_continuous
File: Mathlib/Order/OmegaCompletePartialOrder.lean

tactic: intro c
state_before: α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
⊢ Continuous ⊤
state_after: α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
c : Chain α
⊢ ⊤ (ωSup c) = ωSup (c.map ⊤)

tactic: apply eq_of_forall_ge_iff
state_before: α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
c : Chain α
⊢ ⊤ (ωSup c) = ωSup (c.map ⊤)
state_after: case H
α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
c : Chain α
⊢ ∀ (c_1 : β), ⊤ (ωSup c) ≤ c_1 ↔ ωSup (c.map ⊤) ≤ c_1

tactic: intro z
state_before: case H
α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
c : Chain α
⊢ ∀ (c_1 : β), ⊤ (ωSup c) ≤ c_1 ↔ ωSup (c.map ⊤) ≤ c_1
state_after: case H
α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
c : Chain α
z : β
⊢ ⊤ (ωSup c) ≤ z ↔ ωSup (c.map ⊤) ≤ z

tactic: simp only [OrderHom.instTopOrderHom_top, OrderHom.const_coe_coe, Function.const, top_le_iff,
  ωSup_le_iff, Chain.map_coe, Function.comp, forall_const]
state_before: case H
α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
c : Chain α
z : β
⊢ ⊤ (ωSup c) ≤ z ↔ ωSup (c.map ⊤) ≤ z
state_after: no goals
Theorem: Real.ofCauchy_div
File: Mathlib/Data/Real/Basic.lean

tactic: simp_rw [div_eq_mul_inv, ofCauchy_mul, ofCauchy_inv]
state_before: x y : ℝ
f g : Cauchy abs
⊢ { cauchy := f / g } = { cauchy := f } / { cauchy := g }
state_after: no goals
Theorem: Complex.isPrimitiveRoot_exp
File: Mathlib/RingTheory/RootsOfUnity/Complex.lean

tactic: simpa only [Nat.cast_one, one_div] using
  isPrimitiveRoot_exp_of_coprime 1 n h0 n.coprime_one_left
state_before: n : ℕ
h0 : n ≠ 0
⊢ IsPrimitiveRoot (cexp (2 * ↑π * I / ↑n)) n
state_after: no goals
Theorem: Matrix.adjugate_subsingleton
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

tactic: ext i j
state_before: m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Subsingleton n
A : Matrix n n α
⊢ A.adjugate = 1
state_after: case a
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Subsingleton n
A : Matrix n n α
i j : n
⊢ A.adjugate i j = 1 i j

tactic: simp [Subsingleton.elim i j, adjugate_apply, det_eq_elem_of_subsingleton _ i, one_apply]
state_before: case a
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Subsingleton n
A : Matrix n n α
i j : n
⊢ A.adjugate i j = 1 i j
state_after: no goals
Theorem: norm_iteratedFDeriv_prod_le
File: Mathlib/Analysis/Calculus/ContDiff/Bounds.lean

tactic: simpa [iteratedFDerivWithin_univ] using
  norm_iteratedFDerivWithin_prod_le (fun i hi ↦ (hf i hi).contDiffOn) uniqueDiffOn_univ
    (mem_univ x) hn
state_before: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
s s₁ t u✝ : Set E
ι : Type u_2
A : Type u_3
inst✝⁵ : NormedRing A
inst✝⁴ : NormedAlgebra 𝕜 A
A' : Type u_4
inst✝³ : NormedCommRing A'
inst✝² : NormedAlgebra 𝕜 A'
inst✝¹ : DecidableEq ι
inst✝ : NormOneClass A'
u : Finset ι
f : ι → E → A'
N : ℕ∞
hf : ∀ i ∈ u, ContDiff 𝕜 N (f i)
x : E
n : ℕ
hn : ↑n ≤ N
⊢ ‖iteratedFDeriv 𝕜 n (fun x => ∏ j ∈ u, f j x) x‖ ≤
    ∑ p ∈ u.sym n, ↑(↑p).multinomial * ∏ j ∈ u, ‖iteratedFDeriv 𝕜 (Multiset.count j ↑p) (f j) x‖
state_after: no goals
Theorem: Ideal.span_pair_mul_span_pair
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: simp_rw [span_insert, sup_mul, mul_sup, span_singleton_mul_span_singleton, sup_assoc]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
w x y z : R
⊢ span {w, x} * span {y, z} = span {w * y, w * z, x * y, x * z}
state_after: no goals
Theorem: EuclideanGeometry.collinear_iff_of_two_zsmul_oangle_eq
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Affine.lean

tactic: simp_rw [← oangle_eq_zero_or_eq_pi_iff_collinear, ← Real.Angle.two_zsmul_eq_zero_iff, h]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ p₄ p₅ p₆ : P
h : 2 • ∡ p₁ p₂ p₃ = 2 • ∡ p₄ p₅ p₆
⊢ Collinear ℝ {p₁, p₂, p₃} ↔ Collinear ℝ {p₄, p₅, p₆}
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.add_smul_of_equiv
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: have smul : P ≈ Q ↔ u • P ≈ v • Q := by
  erw [← Quotient.eq, ← Quotient.eq, smul_eq P hu, smul_eq Q hv]
  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
u v : R
hu : IsUnit u
hv : IsUnit v
⊢ W'.add (u • P) (v • Q) = u ^ 4 • W'.add P Q
state_after: 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
u v : R
hu : IsUnit u
hv : IsUnit v
smul : P ≈ Q ↔ u • P ≈ v • Q
⊢ W'.add (u • P) (v • Q) = u ^ 4 • W'.add P Q

tactic: rw [add_of_equiv <| smul.mp h, dblXYZ_smul, add_of_equiv h]
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
u v : R
hu : IsUnit u
hv : IsUnit v
smul : P ≈ Q ↔ u • P ≈ v • Q
⊢ W'.add (u • P) (v • Q) = u ^ 4 • W'.add P Q
state_after: no goals

tactic: erw [← Quotient.eq, ← Quotient.eq, smul_eq P hu, smul_eq Q hv]
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
u v : R
hu : IsUnit u
hv : IsUnit v
⊢ P ≈ Q ↔ u • P ≈ v • Q
state_after: 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
u v : R
hu : IsUnit u
hv : IsUnit v
⊢ ⟦P⟧ = ⟦Q⟧ ↔ ⟦P⟧ = ⟦Q⟧

tactic: 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
u v : R
hu : IsUnit u
hv : IsUnit v
⊢ ⟦P⟧ = ⟦Q⟧ ↔ ⟦P⟧ = ⟦Q⟧
state_after: no goals
Theorem: List.getElem?_set_eq'
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp only [set_eq_modifyNth, getElem?_modifyNth_eq]
state_before: α : Type u_1
a : α
n : Nat
l : List α
⊢ (l.set n a)[n]? = (fun x => a) <$> l[n]?
state_after: no goals
Theorem: CategoryTheory.Limits.image.map_comp
File: Mathlib/CategoryTheory/Limits/Shapes/Images.lean

tactic: congr
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
f g : Arrow C
inst✝⁵ : HasImage f.hom
inst✝⁴ : HasImage g.hom
sq : f ⟶ g
inst✝³ : HasImageMap sq
h : Arrow C
inst✝² : HasImage h.hom
sq' : g ⟶ h
inst✝¹ : HasImageMap sq'
inst✝ : HasImageMap (sq ≫ sq')
⊢ (HasImageMap.imageMap (sq ≫ sq')).map = (imageMapComp sq sq').map
state_after: case e_self
C : Type u
inst✝⁶ : Category.{v, u} C
f g : Arrow C
inst✝⁵ : HasImage f.hom
inst✝⁴ : HasImage g.hom
sq : f ⟶ g
inst✝³ : HasImageMap sq
h : Arrow C
inst✝² : HasImage h.hom
sq' : g ⟶ h
inst✝¹ : HasImageMap sq'
inst✝ : HasImageMap (sq ≫ sq')
⊢ HasImageMap.imageMap (sq ≫ sq') = imageMapComp sq sq'

tactic: simp only [eq_iff_true_of_subsingleton]
state_before: case e_self
C : Type u
inst✝⁶ : Category.{v, u} C
f g : Arrow C
inst✝⁵ : HasImage f.hom
inst✝⁴ : HasImage g.hom
sq : f ⟶ g
inst✝³ : HasImageMap sq
h : Arrow C
inst✝² : HasImage h.hom
sq' : g ⟶ h
inst✝¹ : HasImageMap sq'
inst✝ : HasImageMap (sq ≫ sq')
⊢ HasImageMap.imageMap (sq ≫ sq') = imageMapComp sq sq'
state_after: no goals
Theorem: goldConj_irrational
File: Mathlib/Data/Real/GoldenRatio.lean

tactic: have := Nat.Prime.irrational_sqrt (show Nat.Prime 5 by norm_num)
state_before: ⊢ Irrational ψ
state_after: this : Irrational √↑5
⊢ Irrational ψ

tactic: have := this.rat_sub 1
state_before: this : Irrational √↑5
⊢ Irrational ψ
state_after: this✝ : Irrational √↑5
this : Irrational (↑1 - √↑5)
⊢ Irrational ψ

tactic: have := this.rat_mul (show (0.5 : ℚ) ≠ 0 by norm_num)
state_before: this✝ : Irrational √↑5
this : Irrational (↑1 - √↑5)
⊢ Irrational ψ
state_after: this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 - √↑5)
this : Irrational (↑0.5 * (↑1 - √↑5))
⊢ Irrational ψ

tactic: convert this
state_before: this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 - √↑5)
this : Irrational (↑0.5 * (↑1 - √↑5))
⊢ Irrational ψ
state_after: case h.e'_1
this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 - √↑5)
this : Irrational (↑0.5 * (↑1 - √↑5))
⊢ ψ = ↑0.5 * (↑1 - √↑5)

tactic: norm_num
state_before: case h.e'_1
this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 - √↑5)
this : Irrational (↑0.5 * (↑1 - √↑5))
⊢ ψ = ↑0.5 * (↑1 - √↑5)
state_after: case h.e'_1
this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 - √↑5)
this : Irrational (↑0.5 * (↑1 - √↑5))
⊢ ψ = 1 / 2 * (1 - √5)

tactic: field_simp
state_before: case h.e'_1
this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 - √↑5)
this : Irrational (↑0.5 * (↑1 - √↑5))
⊢ ψ = 1 / 2 * (1 - √5)
state_after: no goals

tactic: norm_num
state_before: ⊢ Nat.Prime 5
state_after: no goals

tactic: norm_num
state_before: this✝ : Irrational √↑5
this : Irrational (↑1 - √↑5)
⊢ 0.5 ≠ 0
state_after: no goals
Theorem: LinearMap.BilinForm.dualBasis_repr_apply
File: Mathlib/LinearAlgebra/BilinearForm/Properties.lean

tactic: rw [dualBasis, Basis.map_repr, LinearEquiv.symm_symm, LinearEquiv.trans_apply,
  Basis.dualBasis_repr, toDual_def]
state_before: R : Type u_1
M : Type u_2
inst✝¹⁷ : CommSemiring R
inst✝¹⁶ : AddCommMonoid M
inst✝¹⁵ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹⁴ : CommRing R₁
inst✝¹³ : AddCommGroup M₁
inst✝¹² : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝¹¹ : Field K
inst✝¹⁰ : AddCommGroup V
inst✝⁹ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁸ : AddCommMonoid M'✝
inst✝⁷ : AddCommMonoid M''
inst✝⁶ : Module R M'✝
inst✝⁵ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝⁴ : AddCommMonoid M'
inst✝³ : Module R M'
inst✝² : FiniteDimensional K V
ι : Type u_10
inst✝¹ : DecidableEq ι
inst✝ : Finite ι
B : BilinForm K V
hB : B.Nondegenerate
b : Basis ι K V
x : V
i : ι
⊢ ((B.dualBasis hB b).repr x) i = (B x) (b i)
state_after: no goals
Theorem: Polynomial.X_pow_sub_one_dvd_prod_cyclotomic
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

tactic: replace hm := Nat.mem_properDivisors.2
  ⟨hm, lt_of_le_of_ne (Nat.divisor_le (Nat.mem_divisors.2 ⟨hm, hpos.ne'⟩)) hdiff⟩
state_before: R : Type u_1
inst✝ : CommRing R
n m : ℕ
hpos : 0 < n
hm : m ∣ n
hdiff : m ≠ n
⊢ X ^ m - 1 ∣ ∏ i ∈ n.properDivisors, cyclotomic i R
state_after: R : Type u_1
inst✝ : CommRing R
n m : ℕ
hpos : 0 < n
hdiff : m ≠ n
hm : m ∈ n.properDivisors
⊢ X ^ m - 1 ∣ ∏ i ∈ n.properDivisors, cyclotomic i R

tactic: rw [← Finset.sdiff_union_of_subset (Nat.divisors_subset_properDivisors (ne_of_lt hpos).symm
  (Nat.mem_properDivisors.1 hm).1 (ne_of_lt (Nat.mem_properDivisors.1 hm).2)),
  Finset.prod_union Finset.sdiff_disjoint,
  prod_cyclotomic_eq_X_pow_sub_one (Nat.pos_of_mem_properDivisors hm)]
state_before: R : Type u_1
inst✝ : CommRing R
n m : ℕ
hpos : 0 < n
hdiff : m ≠ n
hm : m ∈ n.properDivisors
⊢ X ^ m - 1 ∣ ∏ i ∈ n.properDivisors, cyclotomic i R
state_after: R : Type u_1
inst✝ : CommRing R
n m : ℕ
hpos : 0 < n
hdiff : m ≠ n
hm : m ∈ n.properDivisors
⊢ X ^ m - 1 ∣ (∏ x ∈ n.properDivisors \ m.divisors, cyclotomic x R) * (X ^ m - 1)

tactic: exact ⟨∏ x ∈ n.properDivisors \ m.divisors, cyclotomic x R, by rw [mul_comm]⟩
state_before: R : Type u_1
inst✝ : CommRing R
n m : ℕ
hpos : 0 < n
hdiff : m ≠ n
hm : m ∈ n.properDivisors
⊢ X ^ m - 1 ∣ (∏ x ∈ n.properDivisors \ m.divisors, cyclotomic x R) * (X ^ m - 1)
state_after: no goals

tactic: rw [mul_comm]
state_before: R : Type u_1
inst✝ : CommRing R
n m : ℕ
hpos : 0 < n
hdiff : m ≠ n
hm : m ∈ n.properDivisors
⊢ (∏ x ∈ n.properDivisors \ m.divisors, cyclotomic x R) * (X ^ m - 1) =
    (X ^ m - 1) * ∏ x ∈ n.properDivisors \ m.divisors, cyclotomic x R
state_after: no goals
Theorem: commutator_eq_normalClosure
File: Mathlib/GroupTheory/Abelianization.lean

tactic: simp [commutator, Subgroup.commutator_def', commutatorSet]
state_before: G : Type u
inst✝ : Group G
⊢ commutator G = Subgroup.normalClosure (commutatorSet G)
state_after: no goals
Theorem: Nat.Primrec'.of_prim
File: Mathlib/Computability/Primrec.lean

tactic: simp [encodek]
state_before: n : ℕ
f : Vector ℕ n → ℕ
this : ∀ (f : ℕ → ℕ), Nat.Primrec f → Primrec' fun v => f v.head
hf : Primrec f
i : Vector ℕ n
⊢ ((fun m => encode (Option.map f (decode m))) (encode i)).pred = f i
state_after: no goals

tactic: induction hf with
| zero => exact const 0
| succ => exact succ
| left => exact unpair₁ head
| right => exact unpair₂ head
| pair _ _ hf hg => exact natPair.comp₂ _ hf hg
| comp _ _ hf hg => exact hf.comp₁ _ hg
| prec _ _ hf hg =>
  simpa using
    prec' (unpair₂ head) (hf.comp₁ _ (unpair₁ head))
      (hg.comp₁ _ <|
        natPair.comp₂ _ (unpair₁ <| tail <| tail head) (natPair.comp₂ _ head (tail head)))
state_before: n : ℕ
f✝ : Vector ℕ n → ℕ
f : ℕ → ℕ
hf : Nat.Primrec f
⊢ Primrec' fun v => f v.head
state_after: no goals

tactic: exact const 0
state_before: case zero
n : ℕ
f✝ : Vector ℕ n → ℕ
f : ℕ → ℕ
⊢ Primrec' fun v => (fun x => 0) v.head
state_after: no goals

tactic: exact succ
state_before: case succ
n : ℕ
f✝ : Vector ℕ n → ℕ
f : ℕ → ℕ
⊢ Primrec' fun v => v.head.succ
state_after: no goals

tactic: exact unpair₁ head
state_before: case left
n : ℕ
f✝ : Vector ℕ n → ℕ
f : ℕ → ℕ
⊢ Primrec' fun v => (fun n => (unpair n).1) v.head
state_after: no goals

tactic: exact unpair₂ head
state_before: case right
n : ℕ
f✝ : Vector ℕ n → ℕ
f : ℕ → ℕ
⊢ Primrec' fun v => (fun n => (unpair n).2) v.head
state_after: no goals

tactic: exact natPair.comp₂ _ hf hg
state_before: case pair
n : ℕ
f✝¹ : Vector ℕ n → ℕ
f f✝ g✝ : ℕ → ℕ
a✝¹ : Nat.Primrec f✝
a✝ : Nat.Primrec g✝
hf : Primrec' fun v => f✝ v.head
hg : Primrec' fun v => g✝ v.head
⊢ Primrec' fun v => (fun n => pair (f✝ n) (g✝ n)) v.head
state_after: no goals

tactic: exact hf.comp₁ _ hg
state_before: case comp
n : ℕ
f✝¹ : Vector ℕ n → ℕ
f f✝ g✝ : ℕ → ℕ
a✝¹ : Nat.Primrec f✝
a✝ : Nat.Primrec g✝
hf : Primrec' fun v => f✝ v.head
hg : Primrec' fun v => g✝ v.head
⊢ Primrec' fun v => (fun n => f✝ (g✝ n)) v.head
state_after: no goals

tactic: simpa using
  prec' (unpair₂ head) (hf.comp₁ _ (unpair₁ head))
    (hg.comp₁ _ <|
      natPair.comp₂ _ (unpair₁ <| tail <| tail head) (natPair.comp₂ _ head (tail head)))
state_before: case prec
n : ℕ
f✝¹ : Vector ℕ n → ℕ
f f✝ g✝ : ℕ → ℕ
a✝¹ : Nat.Primrec f✝
a✝ : Nat.Primrec g✝
hf : Primrec' fun v => f✝ v.head
hg : Primrec' fun v => g✝ v.head
⊢ Primrec' fun v => unpaired (fun z n => Nat.rec (f✝ z) (fun y IH => g✝ (pair z (pair y IH))) n) v.head
state_after: no goals
Theorem: Real.ofCauchy_inf
File: Mathlib/Data/Real/Basic.lean

tactic: rw [inf_def]
state_before: x y : ℝ
a b : CauSeq ℚ abs
⊢ { cauchy := ⟦a ⊓ b⟧ } = Real.inf { cauchy := ⟦a⟧ } { cauchy := ⟦b⟧ }
state_after: x y : ℝ
a b : CauSeq ℚ abs
⊢ { cauchy := ⟦a ⊓ b⟧ } =
    match { cauchy := ⟦a⟧ }, { cauchy := ⟦b⟧ } with
    | { cauchy := x }, { cauchy := y } => { cauchy := Quotient.map₂ (fun x x_1 => x ⊓ x_1) ⋯ x y }

tactic: rfl
state_before: x y : ℝ
a b : CauSeq ℚ abs
⊢ { cauchy := ⟦a ⊓ b⟧ } =
    match { cauchy := ⟦a⟧ }, { cauchy := ⟦b⟧ } with
    | { cauchy := x }, { cauchy := y } => { cauchy := Quotient.map₂ (fun x x_1 => x ⊓ x_1) ⋯ x y }
state_after: no goals
Theorem: NNRat.coprime_num_den
File: Mathlib/Data/NNRat/Defs.lean

tactic: simpa [num, den] using Rat.reduced _
state_before: p q✝ q : ℚ≥0
⊢ q.num.Coprime q.den
state_after: no goals
Theorem: Nat.prod_factors
File: Mathlib/Data/Nat/Factors.lean

tactic: simp
state_before: ⊢ 0 ≠ 0 → (factors 0).prod = 0
state_after: no goals

tactic: simp
state_before: ⊢ 1 ≠ 0 → (factors 1).prod = 1
state_after: no goals

tactic: have h₁ : (k + 2) / m ≠ 0 := fun h => by
  have : (k + 2) = 0 * m := (Nat.div_eq_iff_eq_mul_left (minFac_pos _) (minFac_dvd _)).1 h
  rw [zero_mul] at this; exact (show k + 2 ≠ 0 by simp) this
state_before: k : ℕ
x✝ : k + 2 ≠ 0
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
⊢ (k + 2).factors.prod = k + 2
state_after: k : ℕ
x✝ : k + 2 ≠ 0
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
h₁ : (k + 2) / m ≠ 0
⊢ (k + 2).factors.prod = k + 2

tactic: rw [factors, List.prod_cons, prod_factors h₁, Nat.mul_div_cancel' (minFac_dvd _)]
state_before: k : ℕ
x✝ : k + 2 ≠ 0
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
h₁ : (k + 2) / m ≠ 0
⊢ (k + 2).factors.prod = k + 2
state_after: no goals

tactic: have : (k + 2) = 0 * m := (Nat.div_eq_iff_eq_mul_left (minFac_pos _) (minFac_dvd _)).1 h
state_before: k : ℕ
x✝ : k + 2 ≠ 0
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
h : (k + 2) / m = 0
⊢ False
state_after: k : ℕ
x✝ : k + 2 ≠ 0
m : ℕ := (k + 2).minFac
this✝ : (k + 2) / m < k + 2
h : (k + 2) / m = 0
this : k + 2 = 0 * m
⊢ False

tactic: rw [zero_mul] at this
state_before: k : ℕ
x✝ : k + 2 ≠ 0
m : ℕ := (k + 2).minFac
this✝ : (k + 2) / m < k + 2
h : (k + 2) / m = 0
this : k + 2 = 0 * m
⊢ False
state_after: k : ℕ
x✝ : k + 2 ≠ 0
m : ℕ := (k + 2).minFac
this✝ : (k + 2) / m < k + 2
h : (k + 2) / m = 0
this : k + 2 = 0
⊢ False

tactic: exact (show k + 2 ≠ 0 by simp) this
state_before: k : ℕ
x✝ : k + 2 ≠ 0
m : ℕ := (k + 2).minFac
this✝ : (k + 2) / m < k + 2
h : (k + 2) / m = 0
this : k + 2 = 0
⊢ False
state_after: no goals

tactic: simp
state_before: k : ℕ
x✝ : k + 2 ≠ 0
m : ℕ := (k + 2).minFac
this✝ : (k + 2) / m < k + 2
h : (k + 2) / m = 0
this : k + 2 = 0
⊢ k + 2 ≠ 0
state_after: no goals
Theorem: fderiv_sub_const
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simp only [sub_eq_add_neg, fderiv_add_const]
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
c : F
⊢ fderiv 𝕜 (fun y => f y - c) x = fderiv 𝕜 f x
state_after: no goals
Theorem: EllipticCurve.variableChange_comp
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

tactic: simp only [variableChange, WeierstrassCurve.variableChange_comp]
state_before: R : Type u
inst✝ : CommRing R
E✝ : EllipticCurve R
C✝ C C' : WeierstrassCurve.VariableChange R
E : EllipticCurve R
⊢ E.variableChange (C.comp C') = (E.variableChange C').variableChange C
state_after: R : Type u
inst✝ : CommRing R
E✝ : EllipticCurve R
C✝ C C' : WeierstrassCurve.VariableChange R
E : EllipticCurve R
⊢ { toWeierstrassCurve := (E.variableChange C').variableChange C, Δ' := (C.comp C').u⁻¹ ^ 12 * E.Δ', coe_Δ' := ⋯ } =
    { toWeierstrassCurve := (E.variableChange C').variableChange C, Δ' := C.u⁻¹ ^ 12 * (C'.u⁻¹ ^ 12 * E.Δ'),
      coe_Δ' := ⋯ }

tactic: simp only [WeierstrassCurve.VariableChange.comp, mul_inv, mul_pow, ← mul_assoc]
state_before: R : Type u
inst✝ : CommRing R
E✝ : EllipticCurve R
C✝ C C' : WeierstrassCurve.VariableChange R
E : EllipticCurve R
⊢ { toWeierstrassCurve := (E.variableChange C').variableChange C, Δ' := (C.comp C').u⁻¹ ^ 12 * E.Δ', coe_Δ' := ⋯ } =
    { toWeierstrassCurve := (E.variableChange C').variableChange C, Δ' := C.u⁻¹ ^ 12 * (C'.u⁻¹ ^ 12 * E.Δ'),
      coe_Δ' := ⋯ }
state_after: no goals
Theorem: contDiffOn_top_iff_deriv_of_isOpen
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: rw [contDiffOn_top_iff_derivWithin hs.uniqueDiffOn]
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type u_2
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : IsOpen s₂
⊢ ContDiffOn 𝕜 ⊤ f₂ s₂ ↔ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (deriv f₂) s₂
state_after: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type u_2
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : IsOpen s₂
⊢ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂ ↔
    DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (deriv f₂) s₂

tactic: exact Iff.rfl.and <| contDiffOn_congr fun _ => derivWithin_of_isOpen hs
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type u_2
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f₂ : 𝕜 → F
s₂ : Set 𝕜
hs : IsOpen s₂
⊢ DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (derivWithin f₂ s₂) s₂ ↔
    DifferentiableOn 𝕜 f₂ s₂ ∧ ContDiffOn 𝕜 ⊤ (deriv f₂) s₂
state_after: no goals
Theorem: LocalizedModule.subsingleton
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: refine ⟨fun a b ↦ ?_⟩
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
h : 0 ∈ S
⊢ Subsingleton (LocalizedModule S M)
state_after: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
h : 0 ∈ S
a b : LocalizedModule S M
⊢ a = b

tactic: induction a,b using LocalizedModule.induction_on₂
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
h : 0 ∈ S
a b : LocalizedModule S M
⊢ a = b
state_after: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
h : 0 ∈ S
m✝ m'✝ : M
s✝ s'✝ : ↥S
⊢ mk m✝ s✝ = mk m'✝ s'✝

tactic: exact mk_eq.mpr ⟨⟨0, h⟩, by simp only [Submonoid.mk_smul, zero_smul]⟩
state_before: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
h : 0 ∈ S
m✝ m'✝ : M
s✝ s'✝ : ↥S
⊢ mk m✝ s✝ = mk m'✝ s'✝
state_after: no goals

tactic: simp only [Submonoid.mk_smul, zero_smul]
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
h : 0 ∈ S
m✝ m'✝ : M
s✝ s'✝ : ↥S
⊢ ⟨0, h⟩ • s'✝ • m✝ = ⟨0, h⟩ • s✝ • m'✝
state_after: no goals
Theorem: ProbabilityTheory.gaussianPDFReal_zero_var
File: Mathlib/Probability/Distributions/Gaussian.lean

tactic: ext1 x
state_before: m : ℝ
⊢ gaussianPDFReal m 0 = 0
state_after: case h
m x : ℝ
⊢ gaussianPDFReal m 0 x = 0 x

tactic: simp [gaussianPDFReal]
state_before: case h
m x : ℝ
⊢ gaussianPDFReal m 0 x = 0 x
state_after: no goals
Theorem: CharTwo.sub_eq_add
File: Mathlib/Algebra/CharP/Two.lean

tactic: rw [sub_eq_add_neg, neg_eq]
state_before: R : Type u_1
ι : Type u_2
inst✝¹ : Ring R
inst✝ : CharP R 2
x y : R
⊢ x - y = x + y
state_after: no goals