ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finset.Nat.antidiagonalEquivFin_symm_apply_coe
File: Mathlib/Data/Finset/NatAntidiagonal.lean

Proof steps:
state_before: n : ℕ
x✝ : Fin (n + 1)
i : ℕ
h : i < n + 1
⊢ (i, n - i) ∈ antidiagonal n
state_after: n : ℕ
x✝ : Fin (n + 1)
i : ℕ
h : i < n + 1
⊢ i ≤ n
tactic: rw [mem_antidiagonal, add_comm, tsub_add_cancel_iff_le]
state_before: n : ℕ
x✝ : Fin (n + 1)
i : ℕ
h : i < n + 1
⊢ i ≤ n
state_after: no goals
tactic: exact Nat.le_of_lt_succ h
state_before: n : ℕ
⊢ LeftInverse
    (fun x =>
      match x with
      | ⟨i, h⟩ => ⟨(i, n - i), ⋯⟩)
    fun x =>
    match x with
    | ⟨(i, j), h⟩ => ⟨i, ⋯⟩
state_after: case mk.mk
n i j : ℕ
h : (i, j) ∈ antidiagonal n
⊢ (fun x =>
        match x with
        | ⟨i, h⟩ => ⟨(i, n - i), ⋯⟩)
      ((fun x =>
          match x with
          | ⟨(i, j), h⟩ => ⟨i, ⋯⟩)
        ⟨(i, j), h⟩) =
    ⟨(i, j), h⟩
tactic: rintro ⟨⟨i, j⟩, h⟩
state_before: case mk.mk
n i j : ℕ
h : (i, j) ∈ antidiagonal n
⊢ (fun x =>
        match x with
        | ⟨i, h⟩ => ⟨(i, n - i), ⋯⟩)
      ((fun x =>
          match x with
          | ⟨(i, j), h⟩ => ⟨i, ⋯⟩)
        ⟨(i, j), h⟩) =
    ⟨(i, j), h⟩
state_after: case mk.mk.h
n i j : ℕ
h : (i, j) ∈ antidiagonal n
⊢ (↑((fun x =>
            match x with
            | ⟨i, h⟩ => ⟨(i, n - i), ⋯⟩)
          ((fun x =>
              match x with
              | ⟨(i, j), h⟩ => ⟨i, ⋯⟩)
            ⟨(i, j), h⟩))).1 =
    (↑⟨(i, j), h⟩).1
tactic: ext
state_before: case mk.mk.h
n i j : ℕ
h : (i, j) ∈ antidiagonal n
⊢ (↑((fun x =>
            match x with
            | ⟨i, h⟩ => ⟨(i, n - i), ⋯⟩)
          ((fun x =>
              match x with
              | ⟨(i, j), h⟩ => ⟨i, ⋯⟩)
            ⟨(i, j), h⟩))).1 =
    (↑⟨(i, j), h⟩).1
state_after: no goals
tactic: rfl
Theorem: gramSchmidt_def''
File: Mathlib/Analysis/InnerProductSpace/GramSchmidtOrtho.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
n : ι
⊢ f n = gramSchmidt 𝕜 f n + ∑ i ∈ Iio n, (⟪gramSchmidt 𝕜 f i, f n⟫_𝕜 / ↑‖gramSchmidt 𝕜 f i‖ ^ 2) • gramSchmidt 𝕜 f i
state_after: case h.e'_3.h.e'_6.a
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
n x✝ : ι
a✝ : x✝ ∈ Iio n
⊢ (⟪gramSchmidt 𝕜 f x✝, f n⟫_𝕜 / ↑‖gramSchmidt 𝕜 f x✝‖ ^ 2) • gramSchmidt 𝕜 f x✝ =
    ↑((orthogonalProjection (span 𝕜 {gramSchmidt 𝕜 f x✝})) (f n))
tactic: convert gramSchmidt_def' 𝕜 f n
state_before: case h.e'_3.h.e'_6.a
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
n x✝ : ι
a✝ : x✝ ∈ Iio n
⊢ (⟪gramSchmidt 𝕜 f x✝, f n⟫_𝕜 / ↑‖gramSchmidt 𝕜 f x✝‖ ^ 2) • gramSchmidt 𝕜 f x✝ =
    ↑((orthogonalProjection (span 𝕜 {gramSchmidt 𝕜 f x✝})) (f n))
state_after: no goals
tactic: rw [orthogonalProjection_singleton, RCLike.ofReal_pow]
Theorem: IsPrimitiveRoot.integralPowerBasis'_gen
File: Mathlib/NumberTheory/Cyclotomic/Rat.lean

Proof steps:
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ IsCyclotomicExtension {p ^ 1} ℚ K
state_after: case h.e'_1.h.e'_4
p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ p ^ 1 = p
tactic: convert hcycl
state_before: case h.e'_1.h.e'_4
p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ p ^ 1 = p
state_after: no goals
tactic: rw [pow_one]
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
hcycl : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ IsPrimitiveRoot ζ ↑(p ^ 1)
state_after: no goals
tactic: rwa [pow_one]
Theorem: BoundedContinuousFunction.coe_npowRec
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

Proof steps:
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
R : Type u_2
inst✝ : SeminormedRing R
f : α →ᵇ R
⊢ ⇑(npowRec 0 f) = ⇑f ^ 0
state_after: no goals
tactic: rw [npowRec, pow_zero, coe_one]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
R : Type u_2
inst✝ : SeminormedRing R
f : α →ᵇ R
n : ℕ
⊢ ⇑(npowRec (n + 1) f) = ⇑f ^ (n + 1)
state_after: no goals
tactic: rw [npowRec, pow_succ, coe_mul, coe_npowRec f n]
Theorem: forall_liouvilleWith_iff
File: Mathlib/NumberTheory/Liouville/LiouvilleWith.lean

Proof steps:
state_before: x : ℝ
⊢ (∀ (p : ℝ), LiouvilleWith p x) ↔ Liouville x
state_after: x : ℝ
H : ∀ (p : ℝ), LiouvilleWith p x
n : ℕ
⊢ ∃ a b, 1 < b ∧ x ≠ ↑a / ↑b ∧ |x - ↑a / ↑b| < 1 / ↑b ^ n
tactic: refine ⟨fun H n => ?_, Liouville.liouvilleWith⟩
state_before: x : ℝ
H : ∀ (p : ℝ), LiouvilleWith p x
n : ℕ
⊢ ∃ a b, 1 < b ∧ x ≠ ↑a / ↑b ∧ |x - ↑a / ↑b| < 1 / ↑b ^ n
state_after: case intro.intro.intro.intro
x : ℝ
H : ∀ (p : ℝ), LiouvilleWith p x
n b : ℕ
hb : 1 < b
a : ℤ
hne : x ≠ ↑a / ↑b
hlt : |x - ↑a / ↑b| < ↑b ^ (-↑n)
⊢ ∃ a b, 1 < b ∧ x ≠ ↑a / ↑b ∧ |x - ↑a / ↑b| < 1 / ↑b ^ n
tactic: rcases ((eventually_gt_atTop 1).and_frequently
    ((H (n + 1)).frequently_lt_rpow_neg (lt_add_one (n : ℝ)))).exists
    with ⟨b, hb, a, hne, hlt⟩
state_before: case intro.intro.intro.intro
x : ℝ
H : ∀ (p : ℝ), LiouvilleWith p x
n b : ℕ
hb : 1 < b
a : ℤ
hne : x ≠ ↑a / ↑b
hlt : |x - ↑a / ↑b| < ↑b ^ (-↑n)
⊢ ∃ a b, 1 < b ∧ x ≠ ↑a / ↑b ∧ |x - ↑a / ↑b| < 1 / ↑b ^ n
state_after: no goals
tactic: exact ⟨a, b, mod_cast hb, hne, by simpa [rpow_neg] using hlt⟩
Theorem: Behrend.bound
File: Mathlib/Combinatorics/Additive/AP/Three/Behrend.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ ↑N ^ (↑(nValue N))⁻¹ / rexp 1 < ↑(dValue N)
state_after: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 2 / (1 - 2 / rexp 1) ≤ ↑N ^ (↑(nValue N))⁻¹
tactic: apply div_lt_floor _
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 2 / (1 - 2 / rexp 1) ≤ ↑N ^ (↑(nValue N))⁻¹
state_after: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ log (2 / (1 - 2 / rexp 1)) ≤ log ↑N / ↑(nValue N)

case hx
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 0 < ↑N

case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 0 < 2 / (1 - 2 / rexp 1)

case h₁
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 0 < ↑N ^ (↑(nValue N))⁻¹
tactic: rw [← log_le_log_iff, log_rpow, mul_comm, ← div_eq_mul_inv]
state_before: case h₁
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 0 < ↑N ^ (↑(nValue N))⁻¹
state_after: no goals
tactic: positivity
Theorem: ContinuousAffineEquiv.symm_symm
File: Mathlib/LinearAlgebra/AffineSpace/ContinuousAffineEquiv.lean

Proof steps:
state_before: k : Type u_1
P₁ : Type u_2
P₂ : Type u_3
P₃ : Type u_4
P₄ : Type u_5
V₁ : Type u_6
V₂ : Type u_7
V₃ : Type u_8
V₄ : Type u_9
inst✝²⁰ : Ring k
inst✝¹⁹ : AddCommGroup V₁
inst✝¹⁸ : Module k V₁
inst✝¹⁷ : AddTorsor V₁ P₁
inst✝¹⁶ : AddCommGroup V₂
inst✝¹⁵ : Module k V₂
inst✝¹⁴ : AddTorsor V₂ P₂
inst✝¹³ : AddCommGroup V₃
inst✝¹² : Module k V₃
inst✝¹¹ : AddTorsor V₃ P₃
inst✝¹⁰ : AddCommGroup V₄
inst✝⁹ : Module k V₄
inst✝⁸ : AddTorsor V₄ P₄
inst✝⁷ : TopologicalSpace P₁
inst✝⁶ : AddCommMonoid P₁
inst✝⁵ : Module k P₁
inst✝⁴ : TopologicalSpace P₂
inst✝³ : AddCommMonoid P₂
inst✝² : Module k P₂
inst✝¹ : TopologicalSpace P₃
inst✝ : TopologicalSpace P₄
e : P₁ ≃ᵃL[k] P₂
⊢ e.symm.symm = e
state_after: case h
k : Type u_1
P₁ : Type u_2
P₂ : Type u_3
P₃ : Type u_4
P₄ : Type u_5
V₁ : Type u_6
V₂ : Type u_7
V₃ : Type u_8
V₄ : Type u_9
inst✝²⁰ : Ring k
inst✝¹⁹ : AddCommGroup V₁
inst✝¹⁸ : Module k V₁
inst✝¹⁷ : AddTorsor V₁ P₁
inst✝¹⁶ : AddCommGroup V₂
inst✝¹⁵ : Module k V₂
inst✝¹⁴ : AddTorsor V₂ P₂
inst✝¹³ : AddCommGroup V₃
inst✝¹² : Module k V₃
inst✝¹¹ : AddTorsor V₃ P₃
inst✝¹⁰ : AddCommGroup V₄
inst✝⁹ : Module k V₄
inst✝⁸ : AddTorsor V₄ P₄
inst✝⁷ : TopologicalSpace P₁
inst✝⁶ : AddCommMonoid P₁
inst✝⁵ : Module k P₁
inst✝⁴ : TopologicalSpace P₂
inst✝³ : AddCommMonoid P₂
inst✝² : Module k P₂
inst✝¹ : TopologicalSpace P₃
inst✝ : TopologicalSpace P₄
e : P₁ ≃ᵃL[k] P₂
x : P₁
⊢ e.symm.symm x = e x
tactic: ext x
state_before: case h
k : Type u_1
P₁ : Type u_2
P₂ : Type u_3
P₃ : Type u_4
P₄ : Type u_5
V₁ : Type u_6
V₂ : Type u_7
V₃ : Type u_8
V₄ : Type u_9
inst✝²⁰ : Ring k
inst✝¹⁹ : AddCommGroup V₁
inst✝¹⁸ : Module k V₁
inst✝¹⁷ : AddTorsor V₁ P₁
inst✝¹⁶ : AddCommGroup V₂
inst✝¹⁵ : Module k V₂
inst✝¹⁴ : AddTorsor V₂ P₂
inst✝¹³ : AddCommGroup V₃
inst✝¹² : Module k V₃
inst✝¹¹ : AddTorsor V₃ P₃
inst✝¹⁰ : AddCommGroup V₄
inst✝⁹ : Module k V₄
inst✝⁸ : AddTorsor V₄ P₄
inst✝⁷ : TopologicalSpace P₁
inst✝⁶ : AddCommMonoid P₁
inst✝⁵ : Module k P₁
inst✝⁴ : TopologicalSpace P₂
inst✝³ : AddCommMonoid P₂
inst✝² : Module k P₂
inst✝¹ : TopologicalSpace P₃
inst✝ : TopologicalSpace P₄
e : P₁ ≃ᵃL[k] P₂
x : P₁
⊢ e.symm.symm x = e x
state_after: no goals
tactic: rfl
Theorem: Polynomial.eq_one_of_roots_le
File: Mathlib/Topology/Algebra/Polynomial.lean

Proof steps:
state_before: α : Type u_1
R : Type u_2
inst✝³ : NormedRing R
inst✝² : IsAbsoluteValue norm
F : Type u_3
K : Type u_4
inst✝¹ : CommRing F
inst✝ : NormedField K
p : F[X]
f : F →+* K
B : ℝ
hB : B < 0
h1 : p.Monic
h2 : Splits f p
h3 : ∀ z ∈ (map f p).roots, ‖z‖ ≤ B
⊢ p.natDegree = 0
state_after: α : Type u_1
R : Type u_2
inst✝³ : NormedRing R
inst✝² : IsAbsoluteValue norm
F : Type u_3
K : Type u_4
inst✝¹ : CommRing F
inst✝ : NormedField K
p : F[X]
f : F →+* K
B : ℝ
h1 : p.Monic
h2 : Splits f p
h3 : ∀ z ∈ (map f p).roots, ‖z‖ ≤ B
hB : p.natDegree ≠ 0
⊢ 0 ≤ B
tactic: contrapose! hB
state_before: α : Type u_1
R : Type u_2
inst✝³ : NormedRing R
inst✝² : IsAbsoluteValue norm
F : Type u_3
K : Type u_4
inst✝¹ : CommRing F
inst✝ : NormedField K
p : F[X]
f : F →+* K
B : ℝ
h1 : p.Monic
h2 : Splits f p
h3 : ∀ z ∈ (map f p).roots, ‖z‖ ≤ B
hB : p.natDegree ≠ 0
⊢ 0 ≤ B
state_after: α : Type u_1
R : Type u_2
inst✝³ : NormedRing R
inst✝² : IsAbsoluteValue norm
F : Type u_3
K : Type u_4
inst✝¹ : CommRing F
inst✝ : NormedField K
p : F[X]
f : F →+* K
B : ℝ
h1 : p.Monic
h2 : Splits f p
h3 : ∀ z ∈ (map f p).roots, ‖z‖ ≤ B
hB : card (map f p).roots ≠ 0
⊢ 0 ≤ B
tactic: rw [← h1.natDegree_map f, natDegree_eq_card_roots' h2] at hB
state_before: α : Type u_1
R : Type u_2
inst✝³ : NormedRing R
inst✝² : IsAbsoluteValue norm
F : Type u_3
K : Type u_4
inst✝¹ : CommRing F
inst✝ : NormedField K
p : F[X]
f : F →+* K
B : ℝ
h1 : p.Monic
h2 : Splits f p
h3 : ∀ z ∈ (map f p).roots, ‖z‖ ≤ B
hB : card (map f p).roots ≠ 0
⊢ 0 ≤ B
state_after: case intro
α : Type u_1
R : Type u_2
inst✝³ : NormedRing R
inst✝² : IsAbsoluteValue norm
F : Type u_3
K : Type u_4
inst✝¹ : CommRing F
inst✝ : NormedField K
p : F[X]
f : F →+* K
B : ℝ
h1 : p.Monic
h2 : Splits f p
h3 : ∀ z ∈ (map f p).roots, ‖z‖ ≤ B
hB : card (map f p).roots ≠ 0
z : K
hz : z ∈ (map f p).roots
⊢ 0 ≤ B
tactic: obtain ⟨z, hz⟩ := card_pos_iff_exists_mem.mp (zero_lt_iff.mpr hB)
state_before: case intro
α : Type u_1
R : Type u_2
inst✝³ : NormedRing R
inst✝² : IsAbsoluteValue norm
F : Type u_3
K : Type u_4
inst✝¹ : CommRing F
inst✝ : NormedField K
p : F[X]
f : F →+* K
B : ℝ
h1 : p.Monic
h2 : Splits f p
h3 : ∀ z ∈ (map f p).roots, ‖z‖ ≤ B
hB : card (map f p).roots ≠ 0
z : K
hz : z ∈ (map f p).roots
⊢ 0 ≤ B
state_after: no goals
tactic: exact le_trans (norm_nonneg _) (h3 z hz)
Theorem: CategoryTheory.Limits.IsLimit.lift_comp_conePointsIsoOfNatIso_inv
File: Mathlib/CategoryTheory/Limits/IsLimit.lean

Proof steps:
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F✝ : J ⥤ C
t✝ : Cone F✝
F G : J ⥤ C
r s : Cone G
t : Cone F
P : IsLimit t
Q : IsLimit s
w : F ≅ G
⊢ ∀ (j : J), (Q.lift r ≫ (P.conePointsIsoOfNatIso Q w).inv) ≫ t.π.app j = map r P w.inv ≫ t.π.app j
state_after: no goals
tactic: simp
Theorem: Submonoid.closure_singleton_one
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

Proof steps:
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a : M
⊢ closure {1} = ⊥
state_after: no goals
tactic: simp [eq_bot_iff_forall, mem_closure_singleton]
Theorem: ProbabilityTheory.Kernel.not_mem_mutuallySingularSetSlice
File: Mathlib/Probability/Kernel/RadonNikodym.lean

Proof steps:
state_before: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : Kernel α γ
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : Kernel α γ
a : α
x : γ
⊢ x ∉ κ.mutuallySingularSetSlice η a ↔ κ.rnDerivAux (κ + η) a x < 1
state_after: no goals
tactic: simp [mutuallySingularSetSlice]
Theorem: IsAddSubgroup.univ_addSubgroup
File: Mathlib/Deprecated/Subgroup.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝ : Group G
⊢ IsNormalSubgroup univ
state_after: no goals
tactic: refine ⟨⟨⟨?_, ?_⟩, ?_⟩, ?_⟩ <;> simp
Theorem: Finset.prod_subset
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
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 β
h : s₁ ⊆ s₂
hf : ∀ x ∈ s₂, x ∉ s₁ → f x = 1
this : DecidableEq α
⊢ ∀ x ∈ s₂ \ s₁, f x = 1
state_after: no goals
tactic: simpa
Theorem: NNRat.mul_def
File: Mathlib/Data/NNRat/Defs.lean

Proof steps:
state_before: p q✝ : ℚ≥0
n₁ n₂ d₁ d₂ d : ℕ
q r : ℚ≥0
⊢ q * r = divNat (q.num * r.num) (q.den * r.den)
state_after: case a
p q✝ : ℚ≥0
n₁ n₂ d₁ d₂ d : ℕ
q r : ℚ≥0
⊢ ↑(q * r) = ↑(divNat (q.num * r.num) (q.den * r.den))
tactic: ext
state_before: case a
p q✝ : ℚ≥0
n₁ n₂ d₁ d₂ d : ℕ
q r : ℚ≥0
⊢ ↑(q * r) = ↑(divNat (q.num * r.num) (q.den * r.den))
state_after: no goals
tactic: simp [Rat.mul_eq_mkRat, Rat.mkRat_eq_divInt, num_coe, den_coe]
Theorem: eq_add_neg_of_add_eq
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a b c d : G
n : ℤ
h : a * c = b
⊢ a = b * c⁻¹
state_after: no goals
tactic: simp [h.symm]
Theorem: MeasureTheory.Measure.quasiMeasurePreserving_fst
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

Proof steps:
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SFinite ν
⊢ QuasiMeasurePreserving Prod.fst (μ.prod ν) μ
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SFinite ν
s : Set α
hs : MeasurableSet s
h2s : μ s = 0
⊢ (map Prod.fst (μ.prod ν)) s = 0
tactic: refine ⟨measurable_fst, AbsolutelyContinuous.mk fun s hs h2s => ?_⟩
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SFinite ν
s : Set α
hs : MeasurableSet s
h2s : μ s = 0
⊢ (map Prod.fst (μ.prod ν)) s = 0
state_after: no goals
tactic: rw [map_apply measurable_fst hs, ← prod_univ, prod_prod, h2s, zero_mul]
Theorem: Polynomial.eval₂_evalRingHom
File: Mathlib/Algebra/Polynomial/Bivariate.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝ : CommSemiring R
x : R
⊢ eval₂ (evalRingHom x) = evalEval x
state_after: case h
R : Type u_1
S : Type u_2
inst✝ : CommSemiring R
x x✝ : R
⊢ eval₂ (evalRingHom x) x✝ = evalEval x x✝
tactic: ext1
state_before: case h
R : Type u_1
S : Type u_2
inst✝ : CommSemiring R
x x✝ : R
⊢ eval₂ (evalRingHom x) x✝ = evalEval x x✝
state_after: no goals
tactic: rw [← coe_evalEvalRingHom, evalEvalRingHom_eq, coe_eval₂RingHom]
Theorem: NumberField.InfinitePlace.prod_eq_abs_norm
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

Proof steps:
state_before: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
x : K
⊢ ∏ w : InfinitePlace K, w x ^ w.mult = ↑|(Algebra.norm ℚ) x|
state_after: case h.e'_2
k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
x : K
⊢ ∏ w : InfinitePlace K, w x ^ w.mult = Complex.abs (∏ σ : K →ₐ[ℚ] ℂ, σ x)

case h.e'_3
k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
x : K
⊢ ↑|(Algebra.norm ℚ) x| = Complex.abs ((algebraMap ℚ ℂ) ((Algebra.norm ℚ) x))
tactic: convert (congr_arg Complex.abs (@Algebra.norm_eq_prod_embeddings ℚ _ _ _ _ ℂ _ _ _ _ _ x)).symm
Theorem: Metric.mem_closure_iff
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ
s✝ s : Set α
a : α
⊢ (∀ (i : ℝ), 0 < i → ∃ y ∈ s, y ∈ ball a i) ↔ ∀ ε > 0, ∃ b ∈ s, dist a b < ε
state_after: no goals
tactic: simp only [mem_ball, dist_comm]
Theorem: isCycle_finRotate_of_le
File: Mathlib/GroupTheory/Perm/Fin.lean

Proof steps:
state_before: n : ℕ
h : 2 ≤ n
⊢ (finRotate n).IsCycle
state_after: case intro
m : ℕ
h : 2 ≤ 2 + m
⊢ (finRotate (2 + m)).IsCycle
tactic: obtain ⟨m, rfl⟩ := exists_add_of_le h
state_before: case intro
m : ℕ
h : 2 ≤ 2 + m
⊢ (finRotate (2 + m)).IsCycle
state_after: case intro
m : ℕ
h : 2 ≤ 2 + m
⊢ (finRotate (m + 2)).IsCycle
tactic: rw [add_comm]
state_before: case intro
m : ℕ
h : 2 ≤ 2 + m
⊢ (finRotate (m + 2)).IsCycle
state_after: no goals
tactic: exact isCycle_finRotate
Theorem: ContinuousAt.partialSups
File: Mathlib/Topology/Order/PartialSups.lean

Proof steps:
state_before: L : Type u_1
inst✝³ : SemilatticeSup L
inst✝² : TopologicalSpace L
inst✝¹ : ContinuousSup L
X : Type u_2
inst✝ : TopologicalSpace X
f : ℕ → X → L
n : ℕ
s : Set X
x : X
hf : ∀ k ≤ n, ContinuousAt (f k) x
⊢ ContinuousAt ((partialSups f) n) x
state_after: no goals
tactic: simpa only [← partialSups_apply] using ContinuousAt.partialSups_apply hf
Theorem: Commute.pow_dvd_sub_pow_of_pow_eq_zero_right
File: Mathlib/Algebra/Ring/Divisibility/Lemmas.lean

Proof steps:
state_before: R : Type u_1
x y : R
n m p : ℕ
inst✝ : Ring R
hp : n + m ≤ p + 1
h_comm : Commute x y
hy : y ^ n = 0
⊢ (x - (x - y)) ^ n = 0
state_after: no goals
tactic: simpa
Theorem: EReal.preimage_coe_Ioi
File: Mathlib/Data/Real/EReal.lean

Proof steps:
state_before: x : ℝ
⊢ Real.toEReal ⁻¹' Ioi ↑x = Ioi x
state_after: x : ℝ
⊢ WithBot.some ∘ WithTop.some ⁻¹' Ioi ↑↑x = Ioi x
tactic: change (WithBot.some ∘ WithTop.some) ⁻¹' (Ioi (WithBot.some (WithTop.some x))) = _
state_before: x : ℝ
⊢ WithBot.some ∘ WithTop.some ⁻¹' Ioi ↑↑x = Ioi x
state_after: x : ℝ
⊢ WithTop.some ⁻¹' (WithBot.some ⁻¹' Ioi ↑↑x) = Ioi x
tactic: refine preimage_comp.trans ?_
state_before: x : ℝ
⊢ WithTop.some ⁻¹' (WithBot.some ⁻¹' Ioi ↑↑x) = Ioi x
state_after: no goals
tactic: simp only [WithBot.preimage_coe_Ioi, WithTop.preimage_coe_Ioi]
Theorem: PNat.one_le_find
File: Mathlib/Data/PNat/Find.lean

Proof steps:
state_before: p q : ℕ+ → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
h : ∃ n, p n
n m : ℕ+
⊢ ¬1 < PNat.find h ↔ ¬¬p 1
state_after: no goals
tactic: simp
Theorem: AddSubgroup.mem_rightTransversals_iff_existsUnique_add_neg_mem
File: Mathlib/GroupTheory/Complement.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ S ∈ rightTransversals T ↔ ∀ (g : G), ∃! s, g * (↑s)⁻¹ ∈ T
state_after: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ (∀ (g : G), ∃! x, ↑x.1 * ↑x.2 = g) ↔ ∀ (g : G), ∃! s, g * (↑s)⁻¹ ∈ T
tactic: rw [rightTransversals, Set.mem_setOf_eq, isComplement_iff_existsUnique]
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ (∀ (g : G), ∃! x, ↑x.1 * ↑x.2 = g) ↔ ∀ (g : G), ∃! s, g * (↑s)⁻¹ ∈ T
state_after: case refine_1
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : ∀ (g : G), ∃! x, ↑x.1 * ↑x.2 = g
g : G
⊢ ∃! s, g * (↑s)⁻¹ ∈ T

case refine_2
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : ∀ (g : G), ∃! s, g * (↑s)⁻¹ ∈ T
g : G
⊢ ∃! x, ↑x.1 * ↑x.2 = g
tactic: refine ⟨fun h g => ?_, fun h g => ?_⟩
Theorem: List.getD_append
File: Mathlib/Data/List/GetD.lean

Proof steps:
state_before: α : Type u
β : Type v
l✝ : List α
x : α
xs : List α
n✝ : ℕ
d✝ : α
l l' : List α
d : α
n : ℕ
h : n < l.length
⊢ (l ++ l').getD n d = l.getD n d
state_after: no goals
tactic: rw [getD_eq_get _ _ (Nat.lt_of_lt_of_le h (length_append _ _ ▸ Nat.le_add_right _ _)),
    get_append _ h, getD_eq_get]
Theorem: IsIntegralClosure.mk'_one
File: Mathlib/RingTheory/IntegralClosure/IsIntegralClosure/Basic.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra A B
inst✝ : IsIntegralClosure A R B
h : optParam (IsIntegral R 1) ⋯
⊢ (algebraMap A B) (mk' A 1 h) = (algebraMap A B) 1
state_after: no goals
tactic: rw [algebraMap_mk', RingHom.map_one]
Theorem: Orientation.kahler_map
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

Proof steps:
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace ℝ E
inst✝² : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
hF : Fact (finrank ℝ F = 2)
φ : E ≃ₗᵢ[ℝ] F
x y : F
⊢ (((map (Fin 2) φ.toLinearEquiv) o).kahler x) y = (o.kahler (φ.symm x)) (φ.symm y)
state_after: no goals
tactic: simp [kahler_apply_apply, areaForm_map]