1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MonoidHom.compAddChar_injective_left
File: Mathlib/Algebra/Group/AddChar.lean

tactic: rintro f g h
state_before: A : Type u_1
B : Type u_2
M : Type u_3
N : Type u_4
inst✝³ : AddMonoid A
inst✝² : AddMonoid B
inst✝¹ : Monoid M
inst✝ : Monoid N
ψ✝ ψ : AddChar A M
hψ : Surjective ⇑ψ
⊢ Injective fun f => f.compAddChar ψ
state_after: A : Type u_1
B : Type u_2
M : Type u_3
N : Type u_4
inst✝³ : AddMonoid A
inst✝² : AddMonoid B
inst✝¹ : Monoid M
inst✝ : Monoid N
ψ✝ ψ : AddChar A M
hψ : Surjective ⇑ψ
f g : M →* N
h : (fun f => f.compAddChar ψ) f = (fun f => f.compAddChar ψ) g
⊢ f = g

tactic: rw [DFunLike.ext'_iff] at h ⊢
state_before: A : Type u_1
B : Type u_2
M : Type u_3
N : Type u_4
inst✝³ : AddMonoid A
inst✝² : AddMonoid B
inst✝¹ : Monoid M
inst✝ : Monoid N
ψ✝ ψ : AddChar A M
hψ : Surjective ⇑ψ
f g : M →* N
h : (fun f => f.compAddChar ψ) f = (fun f => f.compAddChar ψ) g
⊢ f = g
state_after: A : Type u_1
B : Type u_2
M : Type u_3
N : Type u_4
inst✝³ : AddMonoid A
inst✝² : AddMonoid B
inst✝¹ : Monoid M
inst✝ : Monoid N
ψ✝ ψ : AddChar A M
hψ : Surjective ⇑ψ
f g : M →* N
h : ⇑((fun f => f.compAddChar ψ) f) = ⇑((fun f => f.compAddChar ψ) g)
⊢ ⇑f = ⇑g

tactic: exact hψ.injective_comp_right h
state_before: A : Type u_1
B : Type u_2
M : Type u_3
N : Type u_4
inst✝³ : AddMonoid A
inst✝² : AddMonoid B
inst✝¹ : Monoid M
inst✝ : Monoid N
ψ✝ ψ : AddChar A M
hψ : Surjective ⇑ψ
f g : M →* N
h : ⇑((fun f => f.compAddChar ψ) f) = ⇑((fun f => f.compAddChar ψ) g)
⊢ ⇑f = ⇑g
state_after: no goals
Theorem: SimpleGraph.Walk.chain'_dartAdj_darts
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rfl
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v✝¹ v v✝ : V
h : G.Adj u v✝
p : G.Walk v✝ v
⊢ { toProd := (u, v✝), adj := h }.toProd.2 = v✝
state_after: no goals
Theorem: PowerSeries.mk_one_mul_one_sub_eq_one
File: Mathlib/RingTheory/PowerSeries/WellKnown.lean

tactic: rw [mul_comm, ext_iff]
state_before: S : Type u_1
inst✝ : CommRing S
d : ℕ
⊢ mk 1 * (1 - X) = 1
state_after: S : Type u_1
inst✝ : CommRing S
d : ℕ
⊢ ∀ (n : ℕ), (coeff S n) ((1 - X) * mk 1) = (coeff S n) 1

tactic: intro n
state_before: S : Type u_1
inst✝ : CommRing S
d : ℕ
⊢ ∀ (n : ℕ), (coeff S n) ((1 - X) * mk 1) = (coeff S n) 1
state_after: S : Type u_1
inst✝ : CommRing S
d n : ℕ
⊢ (coeff S n) ((1 - X) * mk 1) = (coeff S n) 1

tactic: cases n with
| zero => simp
| succ n => simp [sub_mul]
state_before: S : Type u_1
inst✝ : CommRing S
d n : ℕ
⊢ (coeff S n) ((1 - X) * mk 1) = (coeff S n) 1
state_after: no goals

tactic: simp
state_before: case zero
S : Type u_1
inst✝ : CommRing S
d : ℕ
⊢ (coeff S 0) ((1 - X) * mk 1) = (coeff S 0) 1
state_after: no goals

tactic: simp [sub_mul]
state_before: case succ
S : Type u_1
inst✝ : CommRing S
d n : ℕ
⊢ (coeff S (n + 1)) ((1 - X) * mk 1) = (coeff S (n + 1)) 1
state_after: no goals
Theorem: Subalgebra.rank_top
File: Mathlib/LinearAlgebra/Dimension/Constructions.lean

tactic: exact _root_.rank_top F E
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝¹⁰ : Ring R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
F : Type u_2
E : Type u_3
inst✝² : CommRing F
inst✝¹ : Ring E
inst✝ : Algebra F E
⊢ Module.rank F ↥⊤ = Module.rank F E
state_after: no goals
Theorem: Set.ite_empty_left
File: Mathlib/Data/Set/Basic.lean

tactic: simp [Set.ite]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u t s : Set α
⊢ t.ite ∅ s = s \ t
state_after: no goals
Theorem: Matrix.zpow_neg_one
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

tactic: convert DivInvMonoid.zpow_neg' 0 A
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
⊢ A ^ (-1) = A⁻¹
state_after: case h.e'_3.h.e'_3
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
⊢ A = DivInvMonoid.zpow (↑(Nat.succ 0)) A

tactic: simp only [zpow_one, Int.ofNat_zero, Int.ofNat_succ, zpow_eq_pow, zero_add]
state_before: case h.e'_3.h.e'_3
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
⊢ A = DivInvMonoid.zpow (↑(Nat.succ 0)) A
state_after: no goals
Theorem: MeasureTheory.measure_union₀'
File: Mathlib/MeasureTheory/Measure/NullMeasurable.lean

tactic: rw [union_comm, measure_union₀ hs (AEDisjoint.symm hd), add_comm]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t : Set α
hs : NullMeasurableSet s μ
hd : AEDisjoint μ s t
⊢ μ (s ∪ t) = μ s + μ t
state_after: no goals
Theorem: List.forall₂_and_left
File: Mathlib/Data/List/Forall2.lean

tactic: simp only [forall₂_nil_left_iff, forall_prop_of_false (not_mem_nil _), imp_true_iff,
  true_and_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
p : α → Prop
u : List β
⊢ Forall₂ (fun a b => p a ∧ R a b) [] u ↔ (∀ (a : α), a ∈ [] → p a) ∧ Forall₂ R [] u
state_after: no goals

tactic: simp only [forall₂_and_left l, forall₂_cons_left_iff, forall_mem_cons, and_assoc,
  @and_comm _ (p a), @and_left_comm _ (p a), exists_and_left]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
p : α → Prop
a : α
l : List α
u : List β
⊢ Forall₂ (fun a b => p a ∧ R a b) (a :: l) u ↔ (∀ (a_1 : α), a_1 ∈ a :: l → p a_1) ∧ Forall₂ R (a :: l) u
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
p : α → Prop
a : α
l : List α
u : List β
⊢ (p a ∧ ∃ x, R a x ∧ (∀ (a : α), a ∈ l → p a) ∧ ∃ x_1, Forall₂ R l x_1 ∧ u = x :: x_1) ↔
    p a ∧ (∀ (a : α), a ∈ l → p a) ∧ ∃ b, R a b ∧ ∃ x, Forall₂ R l x ∧ u = b :: x

tactic: simp only [and_comm, and_assoc, and_left_comm, ← exists_and_right]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
p : α → Prop
a : α
l : List α
u : List β
⊢ (p a ∧ ∃ x, R a x ∧ (∀ (a : α), a ∈ l → p a) ∧ ∃ x_1, Forall₂ R l x_1 ∧ u = x :: x_1) ↔
    p a ∧ (∀ (a : α), a ∈ l → p a) ∧ ∃ b, R a b ∧ ∃ x, Forall₂ R l x ∧ u = b :: x
state_after: no goals
Theorem: CategoryTheory.CosimplicialObject.augment_hom_zero
File: Mathlib/AlgebraicTopology/SimplicialObject.lean

tactic: simp
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ X : CosimplicialObject C
X₀ : C
f : X₀ ⟶ X.obj [0]
w : ∀ (i : SimplexCategory) (g₁ g₂ : [0] ⟶ i), f ≫ X.map g₁ = f ≫ X.map g₂
⊢ (X.augment X₀ f w).hom.app [0] = f
state_after: no goals
Theorem: List.prod_range_succ
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: rw [range_succ, map_append, map_singleton, prod_append, prod_cons, prod_nil, mul_one]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
f : ℕ → M
n : ℕ
⊢ (map f (range n.succ)).prod = (map f (range n)).prod * f n
state_after: no goals
Theorem: PowerSeries.coe_smul
File: Mathlib/RingTheory/LaurentSeries.lean

tactic: ext
state_before: R : Type u_1
R' : Type u_2
inst✝³ : Semiring R
inst✝² : Ring R'
f g : R⟦X⟧
f' g' : R'⟦X⟧
S : Type u_3
inst✝¹ : Semiring S
inst✝ : Module R S
r : R
x : S⟦X⟧
⊢ (ofPowerSeries ℤ S) (r • x) = r • (ofPowerSeries ℤ S) x
state_after: case coeff.h
R : Type u_1
R' : Type u_2
inst✝³ : Semiring R
inst✝² : Ring R'
f g : R⟦X⟧
f' g' : R'⟦X⟧
S : Type u_3
inst✝¹ : Semiring S
inst✝ : Module R S
r : R
x : S⟦X⟧
x✝ : ℤ
⊢ ((ofPowerSeries ℤ S) (r • x)).coeff x✝ = (r • (ofPowerSeries ℤ S) x).coeff x✝

tactic: simp [coeff_coe, coeff_smul, smul_ite]
state_before: case coeff.h
R : Type u_1
R' : Type u_2
inst✝³ : Semiring R
inst✝² : Ring R'
f g : R⟦X⟧
f' g' : R'⟦X⟧
S : Type u_3
inst✝¹ : Semiring S
inst✝ : Module R S
r : R
x : S⟦X⟧
x✝ : ℤ
⊢ ((ofPowerSeries ℤ S) (r • x)).coeff x✝ = (r • (ofPowerSeries ℤ S) x).coeff x✝
state_after: no goals
Theorem: Multiset.pow_card_le_prod
File: Mathlib/Algebra/Order/BigOperators/Group/Multiset.lean

tactic: rw [← Multiset.prod_replicate, ← Multiset.map_const]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCommMonoid α
s t : Multiset α
a : α
h : ∀ x ∈ s, a ≤ x
⊢ a ^ card s ≤ s.prod
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCommMonoid α
s t : Multiset α
a : α
h : ∀ x ∈ s, a ≤ x
⊢ (map (Function.const α a) s).prod ≤ s.prod

tactic: exact prod_map_le_prod _ h
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCommMonoid α
s t : Multiset α
a : α
h : ∀ x ∈ s, a ≤ x
⊢ (map (Function.const α a) s).prod ≤ s.prod
state_after: no goals
Theorem: MulAction.orbitRel.Quotient.subgroup_quotient_eq_iff
File: Mathlib/GroupTheory/GroupAction/Basic.lean

tactic: simp_rw [← @Quotient.mk''_eq_mk, Quotient.eq'']
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
H : Subgroup G
x : Quotient G α
a b : ↑x.orbit
⊢ ⟦a⟧ = ⟦b⟧ ↔ ⟦↑a⟧ = ⟦↑b⟧
state_after: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
H : Subgroup G
x : Quotient G α
a b : ↑x.orbit
⊢ Setoid.r a b ↔ Setoid.r ↑a ↑b

tactic: exact orbitRel.Quotient.mem_subgroup_orbit_iff.symm
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
H : Subgroup G
x : Quotient G α
a b : ↑x.orbit
⊢ Setoid.r a b ↔ Setoid.r ↑a ↑b
state_after: no goals
Theorem: MvQPF.liftR_map_last'
File: Mathlib/Data/QPF/Multivariate/Constructions/Cofix.lean

tactic: have := liftR_map_last R x f id hh
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
inst✝ : LawfulMvFunctor F
α : TypeVec.{u} n
ι : Type u
R : ι → ι → Prop
x : F (α ::: ι)
f : ι → ι
hh : ∀ (x : ι), R (f x) x
⊢ LiftR' (α.RelLast' R) ((TypeVec.id ::: f) <$$> x) x
state_after: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
inst✝ : LawfulMvFunctor F
α : TypeVec.{u} n
ι : Type u
R : ι → ι → Prop
x : F (α ::: ι)
f : ι → ι
hh : ∀ (x : ι), R (f x) x
this : LiftR' (α.RelLast' R) ((TypeVec.id ::: f) <$$> x) ((TypeVec.id ::: _root_.id) <$$> x)
⊢ LiftR' (α.RelLast' R) ((TypeVec.id ::: f) <$$> x) x

tactic: rwa [appendFun_id_id, MvFunctor.id_map] at this
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
inst✝ : LawfulMvFunctor F
α : TypeVec.{u} n
ι : Type u
R : ι → ι → Prop
x : F (α ::: ι)
f : ι → ι
hh : ∀ (x : ι), R (f x) x
this : LiftR' (α.RelLast' R) ((TypeVec.id ::: f) <$$> x) ((TypeVec.id ::: _root_.id) <$$> x)
⊢ LiftR' (α.RelLast' R) ((TypeVec.id ::: f) <$$> x) x
state_after: no goals
Theorem: CategoryTheory.PreGaloisCategory.fiberBinaryProductEquiv_symm_fst_apply
File: Mathlib/CategoryTheory/Galois/Basic.lean

tactic: simp only [fiberBinaryProductEquiv, comp_obj, FintypeCat.incl_obj, Iso.toEquiv_comp,
  Equiv.symm_trans_apply, Iso.toEquiv_symm_fun]
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X Y : C
x : ↑(F.obj X)
y : ↑(F.obj Y)
⊢ F.map prod.fst ((fiberBinaryProductEquiv F X Y).symm (x, y)) = x
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X Y : C
x : ↑(F.obj X)
y : ↑(F.obj Y)
⊢ F.map prod.fst
      ((PreservesLimitPair.iso (F ⋙ FintypeCat.incl) X Y).inv
        ((Types.binaryProductIso ↑(F.obj X) ↑(F.obj Y)).inv (x, y))) =
    x

tactic: change ((Types.binaryProductIso _ _).inv ≫ _ ≫ (F ⋙ FintypeCat.incl).map prod.fst) _ = _
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X Y : C
x : ↑(F.obj X)
y : ↑(F.obj Y)
⊢ F.map prod.fst
      ((PreservesLimitPair.iso (F ⋙ FintypeCat.incl) X Y).inv
        ((Types.binaryProductIso ↑(F.obj X) ↑(F.obj Y)).inv (x, y))) =
    x
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X Y : C
x : ↑(F.obj X)
y : ↑(F.obj Y)
⊢ ((Types.binaryProductIso ↑(F.obj X) ↑(F.obj Y)).inv ≫
        (PreservesLimitPair.iso (F ⋙ FintypeCat.incl) X Y).inv ≫ (F ⋙ FintypeCat.incl).map prod.fst)
      (x, y) =
    x

tactic: erw [PreservesLimitPair.iso_inv_fst, Types.binaryProductIso_inv_comp_fst]
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X Y : C
x : ↑(F.obj X)
y : ↑(F.obj Y)
⊢ ((Types.binaryProductIso ↑(F.obj X) ↑(F.obj Y)).inv ≫
        (PreservesLimitPair.iso (F ⋙ FintypeCat.incl) X Y).inv ≫ (F ⋙ FintypeCat.incl).map prod.fst)
      (x, y) =
    x
state_after: no goals
Theorem: Module.End.isSemisimple_id
File: Mathlib/LinearAlgebra/Semisimple.lean

tactic: simpa [isSemisimple_iff] using exists_isCompl
state_before: R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
f g : End R M
inst✝ : IsSemisimpleModule R M
⊢ IsSemisimple LinearMap.id
state_after: no goals
Theorem: List.nodup_append
File: Mathlib/Data/List/Nodup.lean

tactic: simp only [Nodup, pairwise_append, disjoint_iff_ne]
state_before: α : Type u
β : Type v
l l₁✝ l₂✝ : List α
r : α → α → Prop
a b : α
l₁ l₂ : List α
⊢ (l₁ ++ l₂).Nodup ↔ l₁.Nodup ∧ l₂.Nodup ∧ l₁.Disjoint l₂
state_after: no goals
Theorem: SeminormFamily.basisSets_iff
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: simp only [basisSets, mem_iUnion, exists_prop, mem_singleton_iff]
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
⊢ U ∈ p.basisSets ↔ ∃ i r, 0 < r ∧ U = (i.sup p).ball 0 r
state_after: no goals
Theorem: Algebra.TensorProduct.natCast_def'
File: Mathlib/RingTheory/TensorProduct/Basic.lean

tactic: rw [natCast_def, ← nsmul_one, smul_tmul, nsmul_one]
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoidWithOne A
inst✝² : Module R A
inst✝¹ : AddCommMonoidWithOne B
inst✝ : Module R B
n : ℕ
⊢ ↑n = 1 ⊗ₜ[R] ↑n
state_after: no goals
Theorem: SimpleGraph.Hom.injective_of_top_hom
File: Mathlib/Combinatorics/SimpleGraph/Maps.lean

tactic: intro v w h
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f✝ : G →g G'
f : ⊤ →g G'
⊢ Injective ⇑f
state_after: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v✝ : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f✝ : G →g G'
f : ⊤ →g G'
v w : V
h : f v = f w
⊢ v = w

tactic: contrapose! h
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v✝ : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f✝ : G →g G'
f : ⊤ →g G'
v w : V
h : f v = f w
⊢ v = w
state_after: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v✝ : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f✝ : G →g G'
f : ⊤ →g G'
v w : V
h : v ≠ w
⊢ f v ≠ f w

tactic: exact G'.ne_of_adj (map_adj _ ((top_adj _ _).mpr h))
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v✝ : V
G₁ G₂ : SimpleGraph V
H : SimpleGraph W
f✝ : G →g G'
f : ⊤ →g G'
v w : V
h : v ≠ w
⊢ f v ≠ f w
state_after: no goals
Theorem: MeasureTheory.Measure.pi_empty_univ
File: Mathlib/MeasureTheory/Constructions/Pi.lean

tactic: rw [pi_of_empty, measure_univ]
state_before: ι : Type u_1
ι' : Type u_2
α✝ : ι → Type u_3
inst✝⁴ : Fintype ι
m✝ : (i : ι) → OuterMeasure (α✝ i)
inst✝³ : (i : ι) → MeasurableSpace (α✝ i)
μ✝ : (i : ι) → Measure (α✝ i)
inst✝² : ∀ (i : ι), SigmaFinite (μ✝ i)
α : Type u_4
inst✝¹ : Fintype α
inst✝ : IsEmpty α
β : α → Type u_5
m : (α : α) → MeasurableSpace (β α)
μ : (a : α) → Measure (β a)
⊢ (Measure.pi μ) univ = 1
state_after: no goals
Theorem: isUnit_iff_ne_zero
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: simp
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b c d : G₀
m n : ℕ
⊢ (∃ x, x ≠ 0 ∧ x = a) ↔ a ≠ 0
state_after: no goals
Theorem: Multiset.prod_lt_prod'
File: Mathlib/Algebra/Order/BigOperators/Group/Multiset.lean

tactic: obtain ⟨l⟩ := s
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
hle : ∀ i ∈ s, f i ≤ g i
hlt : ∃ i ∈ s, f i < g i
⊢ (map f s).prod < (map g s).prod
state_after: case mk
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
l : List ι
hle : ∀ i ∈ Quot.mk Setoid.r l, f i ≤ g i
hlt : ∃ i ∈ Quot.mk Setoid.r l, f i < g i
⊢ (map f (Quot.mk Setoid.r l)).prod < (map g (Quot.mk Setoid.r l)).prod

tactic: simp only [Multiset.quot_mk_to_coe'', Multiset.map_coe, Multiset.prod_coe]
state_before: case mk
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
l : List ι
hle : ∀ i ∈ Quot.mk Setoid.r l, f i ≤ g i
hlt : ∃ i ∈ Quot.mk Setoid.r l, f i < g i
⊢ (map f (Quot.mk Setoid.r l)).prod < (map g (Quot.mk Setoid.r l)).prod
state_after: case mk
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
l : List ι
hle : ∀ i ∈ Quot.mk Setoid.r l, f i ≤ g i
hlt : ∃ i ∈ Quot.mk Setoid.r l, f i < g i
⊢ (List.map f l).prod < (List.map g l).prod

tactic: exact List.prod_lt_prod' f g hle hlt
state_before: case mk
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
l : List ι
hle : ∀ i ∈ Quot.mk Setoid.r l, f i ≤ g i
hlt : ∃ i ∈ Quot.mk Setoid.r l, f i < g i
⊢ (List.map f l).prod < (List.map g l).prod
state_after: no goals
Theorem: CategoryTheory.eqToHom_map
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: cases p
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
p : X = Y
⊢ F.map (eqToHom p) = eqToHom ⋯
state_after: case refl
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X : C
⊢ F.map (eqToHom ⋯) = eqToHom ⋯

tactic: simp
state_before: case refl
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X : C
⊢ F.map (eqToHom ⋯) = eqToHom ⋯
state_after: no goals
Theorem: mul_ball_one
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

tactic: rw [thickening_eq_biUnion_ball]
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ s * ball 1 δ = thickening δ s
state_after: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ s * ball 1 δ = ⋃ x ∈ s, ball x δ

tactic: convert iUnion₂_mul (fun x (_ : x ∈ s) => {x}) (ball (1 : E) δ)
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ s * ball 1 δ = ⋃ x ∈ s, ball x δ
state_after: case h.e'_2.h.e'_5
E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ s = ⋃ i ∈ s, {i}

case h.e'_3.h.e'_3.h.f
E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y x✝¹ : E
x✝ : x✝¹ ∈ s
⊢ ball x✝¹ δ = {x✝¹} * ball 1 δ

tactic: ext x
state_before: case h.e'_3.h.e'_3.h.f
E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y x✝¹ : E
x✝ : x✝¹ ∈ s
⊢ ball x✝¹ δ = {x✝¹} * ball 1 δ
state_after: case h.e'_3.h.e'_3.h.f.h
E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x✝² y x✝¹ : E
x✝ : x✝¹ ∈ s
x : E
⊢ x ∈ ball x✝¹ δ ↔ x ∈ {x✝¹} * ball 1 δ

tactic: simp_rw [singleton_mul_ball, mul_one]
state_before: case h.e'_3.h.e'_3.h.f.h
E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x✝² y x✝¹ : E
x✝ : x✝¹ ∈ s
x : E
⊢ x ∈ ball x✝¹ δ ↔ x ∈ {x✝¹} * ball 1 δ
state_after: no goals

tactic: exact s.biUnion_of_singleton.symm
state_before: case h.e'_2.h.e'_5
E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ s = ⋃ i ∈ s, {i}
state_after: no goals
Theorem: OrthonormalBasis.abs_det_adjustToOrientation
File: Mathlib/Analysis/InnerProductSpace/Orientation.lean

tactic: simp [toBasis_adjustToOrientation]
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
v : ι → E
⊢ |(e.adjustToOrientation x).toBasis.det v| = |e.toBasis.det v|
state_after: no goals
Theorem: IsLocalization.isDomain_of_le_nonZeroDivisors
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: apply @NoZeroDivisors.to_isDomain _ _ (id _) (id _)
state_before: R : Type u_1
inst✝¹⁰ : CommRing R
M✝ : Submonoid R
S : Type u_2
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Type u_3
inst✝⁷ : CommRing P
K : Type u_4
inst✝⁶ : IsLocalization M✝ S
Q : Type u_5
inst✝⁵ : CommRing Q
g : R →+* P
inst✝⁴ : Algebra P Q
A : Type u_6
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra A S
M : Submonoid A
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors A
⊢ IsDomain S
state_after: R : Type u_1
inst✝¹⁰ : CommRing R
M✝ : Submonoid R
S : Type u_2
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Type u_3
inst✝⁷ : CommRing P
K : Type u_4
inst✝⁶ : IsLocalization M✝ S
Q : Type u_5
inst✝⁵ : CommRing Q
g : R →+* P
inst✝⁴ : Algebra P Q
A : Type u_6
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra A S
M : Submonoid A
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors A
⊢ Nontrivial S

R : Type u_1
inst✝¹⁰ : CommRing R
M✝ : Submonoid R
S : Type u_2
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Type u_3
inst✝⁷ : CommRing P
K : Type u_4
inst✝⁶ : IsLocalization M✝ S
Q : Type u_5
inst✝⁵ : CommRing Q
g : R →+* P
inst✝⁴ : Algebra P Q
A : Type u_6
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra A S
M : Submonoid A
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors A
⊢ NoZeroDivisors S

tactic: exact
  ⟨⟨(algebraMap A S) 0, (algebraMap A S) 1, fun h =>
      zero_ne_one (IsLocalization.injective S hM h)⟩⟩
state_before: R : Type u_1
inst✝¹⁰ : CommRing R
M✝ : Submonoid R
S : Type u_2
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Type u_3
inst✝⁷ : CommRing P
K : Type u_4
inst✝⁶ : IsLocalization M✝ S
Q : Type u_5
inst✝⁵ : CommRing Q
g : R →+* P
inst✝⁴ : Algebra P Q
A : Type u_6
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra A S
M : Submonoid A
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors A
⊢ Nontrivial S
state_after: no goals

tactic: exact noZeroDivisors_of_le_nonZeroDivisors _ hM
state_before: R : Type u_1
inst✝¹⁰ : CommRing R
M✝ : Submonoid R
S : Type u_2
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Type u_3
inst✝⁷ : CommRing P
K : Type u_4
inst✝⁶ : IsLocalization M✝ S
Q : Type u_5
inst✝⁵ : CommRing Q
g : R →+* P
inst✝⁴ : Algebra P Q
A : Type u_6
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra A S
M : Submonoid A
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors A
⊢ NoZeroDivisors S
state_after: no goals
Theorem: LinearOrderedField.inducedMap_inv_self
File: Mathlib/Algebra/Order/CompleteField.lean

tactic: rw [inducedMap_inducedMap, inducedMap_self]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : LinearOrderedField α
inst✝² : ConditionallyCompleteLinearOrderedField β
inst✝¹ : ConditionallyCompleteLinearOrderedField γ
inst✝ : Archimedean α
a : α
b✝ : β
q : ℚ
b : β
⊢ inducedMap γ β (inducedMap β γ b) = b
state_after: no goals