1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: coeIdeal_differentIdeal
File: Mathlib/RingTheory/DedekindDomain/Different.lean

tactic: apply FractionalIdeal.coeToSubmodule_injective
state_before: A : Type u_1
K : Type u_2
L : Type u
B : Type u_3
inst✝²⁰ : CommRing A
inst✝¹⁹ : Field K
inst✝¹⁸ : CommRing B
inst✝¹⁷ : Field L
inst✝¹⁶ : Algebra A K
inst✝¹⁵ : Algebra B L
inst✝¹⁴ : Algebra A B
inst✝¹³ : Algebra K L
inst✝¹² : Algebra A L
inst✝¹¹ : IsScalarTower A K L
inst✝¹⁰ : IsScalarTower A B L
inst✝⁹ : IsDomain A
inst✝⁸ : IsDomain B
inst✝⁷ : IsFractionRing A K
inst✝⁶ : IsIntegralClosure B A L
inst✝⁵ : IsFractionRing B L
inst✝⁴ : FiniteDimensional K L
inst✝³ : IsSeparable K L
inst✝² : IsIntegrallyClosed A
inst✝¹ : IsDedekindDomain B
inst✝ : NoZeroSMulDivisors A B
⊢ ↑(differentIdeal A B) = (FractionalIdeal.dual A K 1)⁻¹
state_after: case a
A : Type u_1
K : Type u_2
L : Type u
B : Type u_3
inst✝²⁰ : CommRing A
inst✝¹⁹ : Field K
inst✝¹⁸ : CommRing B
inst✝¹⁷ : Field L
inst✝¹⁶ : Algebra A K
inst✝¹⁵ : Algebra B L
inst✝¹⁴ : Algebra A B
inst✝¹³ : Algebra K L
inst✝¹² : Algebra A L
inst✝¹¹ : IsScalarTower A K L
inst✝¹⁰ : IsScalarTower A B L
inst✝⁹ : IsDomain A
inst✝⁸ : IsDomain B
inst✝⁷ : IsFractionRing A K
inst✝⁶ : IsIntegralClosure B A L
inst✝⁵ : IsFractionRing B L
inst✝⁴ : FiniteDimensional K L
inst✝³ : IsSeparable K L
inst✝² : IsIntegrallyClosed A
inst✝¹ : IsDedekindDomain B
inst✝ : NoZeroSMulDivisors A B
⊢ (fun I => ↑I) ↑(differentIdeal A B) = (fun I => ↑I) (FractionalIdeal.dual A K 1)⁻¹

tactic: simp only [FractionalIdeal.coe_div
  (FractionalIdeal.dual_ne_zero _ _ (@one_ne_zero (FractionalIdeal B⁰ L) _ _ _)),
  FractionalIdeal.coe_coeIdeal, coeSubmodule_differentIdeal A K, inv_eq_one_div,
  FractionalIdeal.coe_dual_one, FractionalIdeal.coe_one]
state_before: case a
A : Type u_1
K : Type u_2
L : Type u
B : Type u_3
inst✝²⁰ : CommRing A
inst✝¹⁹ : Field K
inst✝¹⁸ : CommRing B
inst✝¹⁷ : Field L
inst✝¹⁶ : Algebra A K
inst✝¹⁵ : Algebra B L
inst✝¹⁴ : Algebra A B
inst✝¹³ : Algebra K L
inst✝¹² : Algebra A L
inst✝¹¹ : IsScalarTower A K L
inst✝¹⁰ : IsScalarTower A B L
inst✝⁹ : IsDomain A
inst✝⁸ : IsDomain B
inst✝⁷ : IsFractionRing A K
inst✝⁶ : IsIntegralClosure B A L
inst✝⁵ : IsFractionRing B L
inst✝⁴ : FiniteDimensional K L
inst✝³ : IsSeparable K L
inst✝² : IsIntegrallyClosed A
inst✝¹ : IsDedekindDomain B
inst✝ : NoZeroSMulDivisors A B
⊢ (fun I => ↑I) ↑(differentIdeal A B) = (fun I => ↑I) (FractionalIdeal.dual A K 1)⁻¹
state_after: no goals
Theorem: MvPolynomial.IsHomogeneous.pow
File: Mathlib/RingTheory/MvPolynomial/Homogeneous.lean

tactic: rw [show φ ^ n = ∏ _i ∈ Finset.range n, φ by simp]
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n✝ : ℕ
hφ : φ.IsHomogeneous m
n : ℕ
⊢ (φ ^ n).IsHomogeneous (m * n)
state_after: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n✝ : ℕ
hφ : φ.IsHomogeneous m
n : ℕ
⊢ (∏ _i ∈ Finset.range n, φ).IsHomogeneous (m * n)

tactic: rw [show m * n = ∑ _i ∈ Finset.range n, m by simp [mul_comm]]
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n✝ : ℕ
hφ : φ.IsHomogeneous m
n : ℕ
⊢ (∏ _i ∈ Finset.range n, φ).IsHomogeneous (m * n)
state_after: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n✝ : ℕ
hφ : φ.IsHomogeneous m
n : ℕ
⊢ (∏ _i ∈ Finset.range n, φ).IsHomogeneous (∑ _i ∈ Finset.range n, m)

tactic: apply IsHomogeneous.prod _ _ _ (fun _ _ ↦ hφ)
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n✝ : ℕ
hφ : φ.IsHomogeneous m
n : ℕ
⊢ (∏ _i ∈ Finset.range n, φ).IsHomogeneous (∑ _i ∈ Finset.range n, m)
state_after: no goals

tactic: simp
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n✝ : ℕ
hφ : φ.IsHomogeneous m
n : ℕ
⊢ φ ^ n = ∏ _i ∈ Finset.range n, φ
state_after: no goals

tactic: simp [mul_comm]
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n✝ : ℕ
hφ : φ.IsHomogeneous m
n : ℕ
⊢ m * n = ∑ _i ∈ Finset.range n, m
state_after: no goals
Theorem: Cardinal.lift_lt_ofENat
File: Mathlib/SetTheory/Cardinal/ENat.lean

tactic: rw [← lift_ofENat.{u, v}, lift_lt]
state_before: x : Cardinal.{v}
m : ℕ∞
⊢ lift.{u, v} x < ↑m ↔ x < ↑m
state_after: no goals
Theorem: IsLocallyConstant.comp_continuous
File: Mathlib/Topology/LocallyConstant/Basic.lean

tactic: rw [Set.preimage_comp]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
g : Y → Z
f : X → Y
hg : IsLocallyConstant g
hf : Continuous f
s : Set Z
⊢ IsOpen (g ∘ f ⁻¹' s)
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
g : Y → Z
f : X → Y
hg : IsLocallyConstant g
hf : Continuous f
s : Set Z
⊢ IsOpen (f ⁻¹' (g ⁻¹' s))

tactic: exact hf.isOpen_preimage _ (hg _)
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
g : Y → Z
f : X → Y
hg : IsLocallyConstant g
hf : Continuous f
s : Set Z
⊢ IsOpen (f ⁻¹' (g ⁻¹' s))
state_after: no goals
Theorem: DihedralGroup.nat_card
File: Mathlib/GroupTheory/SpecificGroups/Dihedral.lean

tactic: cases n
state_before: n : ℕ
⊢ Nat.card (DihedralGroup n) = 2 * n
state_after: case zero

⊢ Nat.card (DihedralGroup 0) = 2 * 0

case succ
n✝ : ℕ
⊢ Nat.card (DihedralGroup (n✝ + 1)) = 2 * (n✝ + 1)

tactic: rw [Nat.card_eq_zero_of_infinite]
state_before: case zero

⊢ Nat.card (DihedralGroup 0) = 2 * 0
state_after: no goals

tactic: rw [Nat.card_eq_fintype_card, card]
state_before: case succ
n✝ : ℕ
⊢ Nat.card (DihedralGroup (n✝ + 1)) = 2 * (n✝ + 1)
state_after: no goals
Theorem: FiniteDimensional.finrank_zero_iff
File: Mathlib/LinearAlgebra/Dimension/Finite.lean

tactic: rw [← rank_zero_iff (R := R), ← finrank_eq_rank]
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝¹¹ : Ring R
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : AddCommGroup M'
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
inst✝⁵ : Module R M₁
inst✝⁴ : Nontrivial R
inst✝³ : NoZeroSMulDivisors R M
inst✝² : StrongRankCondition R
inst✝¹ : Module.Finite R M
inst✝ : NoZeroSMulDivisors R M
⊢ finrank R M = 0 ↔ Subsingleton M
state_after: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝¹¹ : Ring R
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : AddCommGroup M'
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
inst✝⁵ : Module R M₁
inst✝⁴ : Nontrivial R
inst✝³ : NoZeroSMulDivisors R M
inst✝² : StrongRankCondition R
inst✝¹ : Module.Finite R M
inst✝ : NoZeroSMulDivisors R M
⊢ finrank R M = 0 ↔ ↑(finrank R M) = 0

tactic: norm_cast
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝¹¹ : Ring R
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : AddCommGroup M'
inst✝⁸ : AddCommGroup M₁
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
inst✝⁵ : Module R M₁
inst✝⁴ : Nontrivial R
inst✝³ : NoZeroSMulDivisors R M
inst✝² : StrongRankCondition R
inst✝¹ : Module.Finite R M
inst✝ : NoZeroSMulDivisors R M
⊢ finrank R M = 0 ↔ ↑(finrank R M) = 0
state_after: no goals
Theorem: Mathlib.Tactic.Abel.subst_into_add
File: Mathlib/Tactic/Abel.lean

tactic: rw [prl, prr, prt]
state_before: α : Type u_1
inst✝ : AddCommMonoid α
l r tl tr t : α
prl : l = tl
prr : r = tr
prt : tl + tr = t
⊢ l + r = t
state_after: no goals
Theorem: PartialEquiv.pi_refl
File: Mathlib/Logic/Equiv/PartialEquiv.lean

tactic: ext <;> simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e' : PartialEquiv β γ
ι : Type u_5
αi : ι → Type u_6
βi : ι → Type u_7
γi : ι → Type u_8
⊢ (PartialEquiv.pi fun i => PartialEquiv.refl (αi i)) = PartialEquiv.refl ((i : ι) → αi i)
state_after: no goals
Theorem: CstarRing.norm_self_mul_star
File: Mathlib/Analysis/NormedSpace/Star/Basic.lean

tactic: nth_rw 1 [← star_star x]
state_before: 𝕜 : Type u_1
E : Type u_2
α : Type u_3
inst✝² : NonUnitalNormedRing E
inst✝¹ : StarRing E
inst✝ : CstarRing E
x : E
⊢ ‖x * x⋆‖ = ‖x‖ * ‖x‖
state_after: 𝕜 : Type u_1
E : Type u_2
α : Type u_3
inst✝² : NonUnitalNormedRing E
inst✝¹ : StarRing E
inst✝ : CstarRing E
x : E
⊢ ‖x⋆⋆ * x⋆‖ = ‖x‖ * ‖x‖

tactic: simp only [norm_star_mul_self, norm_star]
state_before: 𝕜 : Type u_1
E : Type u_2
α : Type u_3
inst✝² : NonUnitalNormedRing E
inst✝¹ : StarRing E
inst✝ : CstarRing E
x : E
⊢ ‖x⋆⋆ * x⋆‖ = ‖x‖ * ‖x‖
state_after: no goals
Theorem: Nat.le_half_of_half_lt_sub
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [Nat.le_div_iff_mul_le Nat.two_pos]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h : a / 2 < a - b
⊢ b ≤ a / 2
state_after: a b c d m n k : ℕ
p q : ℕ → Prop
h : a / 2 < a - b
⊢ b * 2 ≤ a

tactic: rw [Nat.div_lt_iff_lt_mul Nat.two_pos, Nat.sub_mul, Nat.lt_sub_iff_add_lt,
  Nat.mul_two a] at h
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h : a / 2 < a - b
⊢ b * 2 ≤ a
state_after: a b c d m n k : ℕ
p q : ℕ → Prop
h : a + b * 2 < a + a
⊢ b * 2 ≤ a

tactic: exact Nat.le_of_lt (Nat.lt_of_add_lt_add_left h)
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h : a + b * 2 < a + a
⊢ b * 2 ≤ a
state_after: no goals
Theorem: ENNReal.log_top
File: Mathlib/Analysis/SpecialFunctions/Log/ENNReal.lean

tactic: simp [log]
state_before: ⊢ ⊤.log = ⊤
state_after: no goals
Theorem: Subgroup.nat_card_dvd_of_injective
File: Mathlib/GroupTheory/Index.lean

tactic: rw [Nat.card_congr (MonoidHom.ofInjective hf).toEquiv]
state_before: G✝ : Type u_1
inst✝² : Group G✝
H✝ K L : Subgroup G✝
G : Type u_2
H : Type u_3
inst✝¹ : Group G
inst✝ : Group H
f : G →* H
hf : Function.Injective ⇑f
⊢ Nat.card G ∣ Nat.card H
state_after: G✝ : Type u_1
inst✝² : Group G✝
H✝ K L : Subgroup G✝
G : Type u_2
H : Type u_3
inst✝¹ : Group G
inst✝ : Group H
f : G →* H
hf : Function.Injective ⇑f
⊢ Nat.card ↥f.range ∣ Nat.card H

tactic: exact Dvd.intro f.range.index f.range.card_mul_index
state_before: G✝ : Type u_1
inst✝² : Group G✝
H✝ K L : Subgroup G✝
G : Type u_2
H : Type u_3
inst✝¹ : Group G
inst✝ : Group H
f : G →* H
hf : Function.Injective ⇑f
⊢ Nat.card ↥f.range ∣ Nat.card H
state_after: no goals
Theorem: IsPreconnected.Icc_subset
File: Mathlib/Topology/Order/IntermediateValue.lean

tactic: simpa only [image_id] using hs.intermediate_value ha hb continuousOn_id
state_before: X : Type u
α : Type v
inst✝³ : TopologicalSpace X
inst✝² : LinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
s : Set α
hs : IsPreconnected s
a b : α
ha : a ∈ s
hb : b ∈ s
⊢ Icc a b ⊆ s
state_after: no goals
Theorem: Int.exists_greatest_of_bdd
File: Mathlib/Data/Int/LeastGreatest.lean

tactic: classical
let ⟨b, Hb⟩ := Hbdd
let ⟨lb, H⟩ := greatestOfBdd b Hb Hinh
exact ⟨lb, H⟩
state_before: P : ℤ → Prop
Hbdd : ∃ b, ∀ (z : ℤ), P z → z ≤ b
Hinh : ∃ z, P z
⊢ ∃ ub, P ub ∧ ∀ (z : ℤ), P z → z ≤ ub
state_after: no goals

tactic: let ⟨b, Hb⟩ := Hbdd
state_before: P : ℤ → Prop
Hbdd : ∃ b, ∀ (z : ℤ), P z → z ≤ b
Hinh : ∃ z, P z
⊢ ∃ ub, P ub ∧ ∀ (z : ℤ), P z → z ≤ ub
state_after: P : ℤ → Prop
Hbdd : ∃ b, ∀ (z : ℤ), P z → z ≤ b
Hinh : ∃ z, P z
b : ℤ
Hb : ∀ (z : ℤ), P z → z ≤ b
⊢ ∃ ub, P ub ∧ ∀ (z : ℤ), P z → z ≤ ub

tactic: let ⟨lb, H⟩ := greatestOfBdd b Hb Hinh
state_before: P : ℤ → Prop
Hbdd : ∃ b, ∀ (z : ℤ), P z → z ≤ b
Hinh : ∃ z, P z
b : ℤ
Hb : ∀ (z : ℤ), P z → z ≤ b
⊢ ∃ ub, P ub ∧ ∀ (z : ℤ), P z → z ≤ ub
state_after: P : ℤ → Prop
Hbdd : ∃ b, ∀ (z : ℤ), P z → z ≤ b
Hinh : ∃ z, P z
b : ℤ
Hb : ∀ (z : ℤ), P z → z ≤ b
lb : ℤ
H : P lb ∧ ∀ (z : ℤ), P z → z ≤ lb
⊢ ∃ ub, P ub ∧ ∀ (z : ℤ), P z → z ≤ ub

tactic: exact ⟨lb, H⟩
state_before: P : ℤ → Prop
Hbdd : ∃ b, ∀ (z : ℤ), P z → z ≤ b
Hinh : ∃ z, P z
b : ℤ
Hb : ∀ (z : ℤ), P z → z ≤ b
lb : ℤ
H : P lb ∧ ∀ (z : ℤ), P z → z ≤ lb
⊢ ∃ ub, P ub ∧ ∀ (z : ℤ), P z → z ≤ ub
state_after: no goals
Theorem: Valuation.isEquiv_iff_val_le_one
File: Mathlib/RingTheory/Valuation/Basic.lean

tactic: simpa using h x 1
state_before: K : Type u_1
F : Type u_2
R : Type u_3
inst✝³ : DivisionRing K
Γ₀ : Type u_4
Γ'₀ : Type u_5
Γ''₀ : Type u_6
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : v.IsEquiv v'
x : K
⊢ v x ≤ 1 ↔ v' x ≤ 1
state_after: no goals
Theorem: CategoryTheory.Limits.imageSubobject_le
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: rw [assoc, image.lift_fac, imageSubobject_arrow]
state_before: C : Type u
inst✝² : Category.{v, u} C
X✝ Y Z : C
f✝ : X✝ ⟶ Y
inst✝¹ : HasImage f✝
A B : C
X : Subobject B
f : A ⟶ B
inst✝ : HasImage f
h : A ⟶ underlying.obj X
w : h ≫ X.arrow = f
⊢ ((imageSubobjectIso f).hom ≫ image.lift (MonoFactorisation.mk (underlying.obj X) X.arrow h ⋯)) ≫ X.arrow =
    (imageSubobject f).arrow
state_after: no goals
Theorem: Commute.add_pow_add_eq_zero_of_pow_eq_zero
File: Mathlib/RingTheory/Nilpotent/Basic.lean

tactic: rw [← Nat.sub_le_iff_le_add]
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝ : Semiring R
h_comm : Commute x y
m n : ℕ
hx : x ^ m = 0
hy : y ^ n = 0
⊢ m + n ≤ m + n - 1 + 1
state_after: no goals
Theorem: mdifferentiableWithinAt_inter
File: Mathlib/Geometry/Manifold/MFDeriv/Basic.lean

tactic: rw [MDifferentiableWithinAt, MDifferentiableWithinAt,
  (differentiable_within_at_localInvariantProp I I').liftPropWithinAt_inter ht]
state_before: 𝕜 : Type u_1
inst✝¹⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹¹ : TopologicalSpace M
inst✝¹⁰ : ChartedSpace H M
E' : Type u_5
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : ChartedSpace H' M'
E'' : Type u_8
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝¹ : TopologicalSpace M''
inst✝ : ChartedSpace H'' M''
f f₀ f₁ : M → M'
x : M
s t : Set M
g : M' → M''
u : Set M'
Is : SmoothManifoldWithCorners I M
I's : SmoothManifoldWithCorners I' M'
I''s : SmoothManifoldWithCorners I'' M''
f' f₀' f₁' : TangentSpace I x →L[𝕜] TangentSpace I' (f x)
g' : TangentSpace I' (f x) →L[𝕜] TangentSpace I'' (g (f x))
ht : t ∈ 𝓝 x
⊢ MDifferentiableWithinAt I I' f (s ∩ t) x ↔ MDifferentiableWithinAt I I' f s x
state_after: no goals
Theorem: Finset.finite_toSet_toFinset
File: Mathlib/Data/Set/Finite.lean

tactic: rw [toFinite_toFinset, toFinset_coe]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Finset α
⊢ ⋯.toFinset = s
state_after: no goals
Theorem: Matrix.list_prod_inv_reverse
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: rw [List.reverse_nil, List.map_nil, List.prod_nil, inv_one]
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
⊢ [].prod⁻¹ = (List.map Inv.inv [].reverse).prod
state_after: no goals

tactic: rw [List.reverse_cons', List.map_concat, List.prod_concat, List.prod_cons,
  mul_inv_rev, list_prod_inv_reverse Xs]
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A✝ B A : Matrix n n α
Xs : List (Matrix n n α)
⊢ (A :: Xs).prod⁻¹ = (List.map Inv.inv (A :: Xs).reverse).prod
state_after: no goals
Theorem: Filter.Tendsto.max_left
File: Mathlib/Topology/Order/OrderClosed.lean

tactic: simp_rw [max_comm _ a]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝 a)
⊢ Tendsto (fun i => max (f i) a) l (𝓝 a)
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝 a)
⊢ Tendsto (fun i => max a (f i)) l (𝓝 a)

tactic: exact h.max_right
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝 a)
⊢ Tendsto (fun i => max a (f i)) l (𝓝 a)
state_after: no goals
Theorem: AffineSubspace.midpoint_mem_perpBisector
File: Mathlib/Geometry/Euclidean/PerpBisector.lean

tactic: simp [mem_perpBisector_iff_inner_eq_zero]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c c₁ c₂ p₁✝ p₂✝ p₁ p₂ : P
⊢ midpoint ℝ p₁ p₂ ∈ perpBisector p₁ p₂
state_after: no goals
Theorem: Set.union_pi
File: Mathlib/Data/Set/Prod.lean

tactic: simp [pi, or_imp, forall_and, setOf_and]
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
⊢ (s₁ ∪ s₂).pi t = s₁.pi t ∩ s₂.pi t
state_after: no goals
Theorem: List.map_add_range'
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [range', map_add_range' _ (s + step) n step, Nat.add_assoc]
state_before: a s n step : Nat
⊢ map (fun x => a + x) (range' s (n + 1) step) = range' (a + s) (n + 1) step
state_after: no goals
Theorem: ContinuousLinearEquiv.uniqueDiffOn_preimage_iff
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: rw [← e.image_symm_eq_preimage, e.symm.uniqueDiffOn_image_iff]
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
f : E → F
s : Set E
f' : E →L[𝕜] F
e : F ≃L[𝕜] E
⊢ UniqueDiffOn 𝕜 (⇑e ⁻¹' s) ↔ UniqueDiffOn 𝕜 s
state_after: no goals
Theorem: CategoryTheory.ComposableArrows.homMk₄_app_three
File: Mathlib/CategoryTheory/ComposableArrows.lean

tactic: valid
state_before: C : Type u_1
inst✝ : Category.{?u.319650, u_1} C
n m : ℕ
F G : ComposableArrows C n
f g : ComposableArrows C 4
app₀ : f.obj' 0 ⋯ ⟶ g.obj' 0 ⋯
app₁ : f.obj' 1 ⋯ ⟶ g.obj' 1 ⋯
app₂ : f.obj' 2 ⋯ ⟶ g.obj' 2 ⋯
app₃ : f.obj' 3 ⋯ ⟶ g.obj' 3 ⋯
app₄ : f.obj' 4 ⋯ ⟶ g.obj' 4 ⋯
w₀ : f.map' 0 1 ⋯ ⋯ ≫ app₁ = app₀ ≫ g.map' 0 1 ⋯ ⋯
w₁ : f.map' 1 2 ⋯ ⋯ ≫ app₂ = app₁ ≫ g.map' 1 2 ⋯ ⋯
w₂ : f.map' 2 3 ⋯ ⋯ ≫ app₃ = app₂ ≫ g.map' 2 3 ⋯ ⋯
w₃ : f.map' 3 4 ⋯ ⋯ ≫ app₄ = app₃ ≫ g.map' 3 4 ⋯ ⋯
⊢ 3 < 4 + 1
state_after: no goals
Theorem: Finset.Colex.singleton_le_singleton
File: Mathlib/Combinatorics/Colex.lean

tactic: simp [toColex_le_singleton, eq_comm]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
⊢ { ofColex := {a} } ≤ { ofColex := {b} } ↔ a ≤ b
state_after: no goals
Theorem: ONote.zero_lt_one
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: simp only [lt_def, repr, opow_zero, Nat.succPNat_coe, Nat.cast_one, mul_one, add_zero,
  zero_lt_one]
state_before: ⊢ 0 < 1
state_after: no goals
Theorem: Rel.preimage_empty
File: Mathlib/Data/Rel.lean

tactic: rw [preimage, image_empty]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
⊢ r.preimage ∅ = ∅
state_after: no goals
Theorem: sq_eq_sq
File: Mathlib/Algebra/Order/Ring/Basic.lean

tactic: decide
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : LinearOrderedSemiring R
a✝ b✝ : R
m n : ℕ
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
⊢ 2 ≠ 0
state_after: no goals
Theorem: Vector.map₂_map_left
File: Mathlib/Data/Vector/MapLemmas.lean

tactic: induction xs, ys using Vector.revInductionOn₂ <;> simp_all
state_before: α : Type u_4
n : ℕ
β : Type u_3
xs : Vector α n
ys : Vector β n
γ : Type u_1
ζ : Type u_2
f₁ : γ → β → ζ
f₂ : α → γ
⊢ map₂ f₁ (map f₂ xs) ys = map₂ (fun x y => f₁ (f₂ x) y) xs ys
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.ofHoms_v_comp_d
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean

tactic: rw [add_zero] at hpq
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
ψ : (p : ℤ) → F.X p ⟶ G.X p
p q q' : ℤ
hpq : p + 0 = q
⊢ (ofHoms ψ).v p q hpq ≫ G.d q q' = ψ p ≫ G.d p q'
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
ψ : (p : ℤ) → F.X p ⟶ G.X p
p q q' : ℤ
hpq✝ : p + 0 = q
hpq : p = q
⊢ (ofHoms ψ).v p q hpq✝ ≫ G.d q q' = ψ p ≫ G.d p q'

tactic: subst hpq
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
ψ : (p : ℤ) → F.X p ⟶ G.X p
p q q' : ℤ
hpq✝ : p + 0 = q
hpq : p = q
⊢ (ofHoms ψ).v p q hpq✝ ≫ G.d q q' = ψ p ≫ G.d p q'
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
ψ : (p : ℤ) → F.X p ⟶ G.X p
p q' : ℤ
hpq : p + 0 = p
⊢ (ofHoms ψ).v p p hpq ≫ G.d p q' = ψ p ≫ G.d p q'

tactic: rw [ofHoms_v]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
ψ : (p : ℤ) → F.X p ⟶ G.X p
p q' : ℤ
hpq : p + 0 = p
⊢ (ofHoms ψ).v p p hpq ≫ G.d p q' = ψ p ≫ G.d p q'
state_after: no goals
Theorem: Batteries.PairingHeapImp.Heap.WF.deleteMin
File: .lake/packages/batteries/Batteries/Data/PairingHeap.lean

tactic: cases h with cases eq | node h => exact Heap.WF.combine h
state_before: α : Type u_1
le : α → α → Bool
a : α
s' s : Heap α
h : WF le s
eq : Heap.deleteMin le s = some (a, s')
⊢ WF le s'
state_after: no goals

tactic: exact Heap.WF.combine h
state_before: case node.refl
α : Type u_1
le : α → α → Bool
a : α
c✝ : Heap α
h : NodeWF le a c✝
⊢ WF le (Heap.combine le c✝)
state_after: no goals
Theorem: Mathlib.Meta.NormNum.IsRat.nonneg_to_eq
File: Mathlib/Tactic/NormNum/Result.lean

tactic: simp [div_eq_mul_inv]
state_before: α : Type u_1
inst✝ : DivisionRing α
n d : ℕ
inv✝ : Invertible ↑d
⊢ ↑(Int.ofNat n) * ⅟↑d = ↑n / ↑d
state_after: no goals
Theorem: HasDerivAtFilter.comp_of_eq
File: Mathlib/Analysis/Calculus/Deriv/Comp.lean

tactic: rw [hy] at hh₂
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
hh₂ : HasDerivAtFilter h₂ h₂' y L'
hh : HasDerivAtFilter h h' x L
hL : Tendsto h L L'
hy : y = h x
⊢ HasDerivAtFilter (h₂ ∘ h) (h₂' * h') x L
state_after: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
hh₂ : HasDerivAtFilter h₂ h₂' (h x) L'
hh : HasDerivAtFilter h h' x L
hL : Tendsto h L L'
hy : y = h x
⊢ HasDerivAtFilter (h₂ ∘ h) (h₂' * h') x L

tactic: exact hh₂.comp x hh hL
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
hh₂ : HasDerivAtFilter h₂ h₂' (h x) L'
hh : HasDerivAtFilter h h' x L
hL : Tendsto h L L'
hy : y = h x
⊢ HasDerivAtFilter (h₂ ∘ h) (h₂' * h') x L
state_after: no goals