1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Multiset.extract_gcd'
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: conv_lhs => rw [← normalize_gcd, ← gcd_map_mul, ← ht]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s t : Multiset α
hs : ∃ x ∈ s, x ≠ 0
ht : s = map (fun x => s.gcd * x) t
⊢ s.gcd * t.gcd = s.gcd
state_after: no goals

tactic: contrapose! hs
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s t : Multiset α
hs : ∃ x ∈ s, x ≠ 0
ht : s = map (fun x => s.gcd * x) t
⊢ ¬s.gcd = 0
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s t : Multiset α
ht : s = map (fun x => s.gcd * x) t
hs : s.gcd = 0
⊢ ∀ x ∈ s, x = 0

tactic: exact s.gcd_eq_zero_iff.1 hs
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s t : Multiset α
ht : s = map (fun x => s.gcd * x) t
hs : s.gcd = 0
⊢ ∀ x ∈ s, x = 0
state_after: no goals
Theorem: LinearIndependent.union_of_quotient
File: Mathlib/LinearAlgebra/Dimension/Constructions.lean

tactic: refine (LinearIndependent.sum_elim_of_quotient (f := Set.embeddingOfSubset s M' hs)
  (of_comp M'.subtype (by simpa using hs')) Subtype.val ht).to_subtype_range' ?_
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₁
M' : Submodule R M
s : Set M
hs : s ⊆ ↑M'
hs' : LinearIndependent (ι := ↑s) R Subtype.val
t : Set M
ht : LinearIndependent (ι := ↑t) R (Submodule.Quotient.mk ∘ Subtype.val)
⊢ LinearIndependent (ι := ↑(s ∪ t)) R Subtype.val
state_after: 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₁
M' : Submodule R M
s : Set M
hs : s ⊆ ↑M'
hs' : LinearIndependent (ι := ↑s) R Subtype.val
t : Set M
ht : LinearIndependent (ι := ↑t) R (Submodule.Quotient.mk ∘ Subtype.val)
⊢ range (Sum.elim (fun x => ↑((s.embeddingOfSubset (↑M') hs) x)) Subtype.val) = s ∪ t

tactic: simp only [embeddingOfSubset_apply_coe, Sum.elim_range, Subtype.range_val]
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₁
M' : Submodule R M
s : Set M
hs : s ⊆ ↑M'
hs' : LinearIndependent (ι := ↑s) R Subtype.val
t : Set M
ht : LinearIndependent (ι := ↑t) R (Submodule.Quotient.mk ∘ Subtype.val)
⊢ range (Sum.elim (fun x => ↑((s.embeddingOfSubset (↑M') hs) x)) Subtype.val) = s ∪ t
state_after: no goals

tactic: simpa using hs'
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₁
M' : Submodule R M
s : Set M
hs : s ⊆ ↑M'
hs' : LinearIndependent (ι := ↑s) R Subtype.val
t : Set M
ht : LinearIndependent (ι := ↑t) R (Submodule.Quotient.mk ∘ Subtype.val)
⊢ LinearIndependent (ι := ↑s) R (⇑M'.subtype ∘ ⇑(s.embeddingOfSubset (↑M') hs))
state_after: no goals
Theorem: Matrix.conjTranspose_nsmul
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : AddMonoid α
inst✝ : StarAddMonoid α
c : ℕ
M : Matrix m n α
⊢ ∀ (i : n) (j : m), (c • M)ᴴ i j = (c • Mᴴ) i j
state_after: no goals
Theorem: map_preNormEDS
File: Mathlib/NumberTheory/EllipticDivisibilitySequence.lean

tactic: rw [preNormEDS, map_mul, map_intCast, map_preNormEDS', preNormEDS]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
b c d : R
n : ℤ
⊢ f (preNormEDS b c d n) = preNormEDS (f b) (f c) (f d) n
state_after: no goals
Theorem: Part.get_eq_get_of_eq
File: Mathlib/Data/Part.lean

tactic: congr
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a : Part α
ha : a.Dom
b : Part α
h : a = b
⊢ a.get ha = b.get ⋯
state_after: no goals
Theorem: Additive.isNormalAddSubgroup_iff
File: Mathlib/Deprecated/Subgroup.lean

tactic: rintro ⟨h₁, h₂⟩
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝ : Group G
s : Set G
⊢ IsNormalAddSubgroup s → IsNormalSubgroup s
state_after: case mk
G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝ : Group G
s : Set G
h₁ : IsAddSubgroup s
h₂ : ∀ n ∈ s, ∀ (g : Additive G), g + n + -g ∈ s
⊢ IsNormalSubgroup s

tactic: exact @IsNormalSubgroup.mk G _ _ (Additive.isAddSubgroup_iff.1 h₁) @h₂
state_before: case mk
G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝ : Group G
s : Set G
h₁ : IsAddSubgroup s
h₂ : ∀ n ∈ s, ∀ (g : Additive G), g + n + -g ∈ s
⊢ IsNormalSubgroup s
state_after: no goals
Theorem: IsAntichain.maximals_eq
File: Mathlib/Order/Minimal.lean

tactic: obtain rfl := h.eq ha hb hab
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b✝ : α
h : IsAntichain r s
a : α
ha : a ∈ s
b : α
hb : b ∈ s
hab : r a b
⊢ r b a
state_after: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b : α
h : IsAntichain r s
a : α
ha hb : a ∈ s
hab : r a a
⊢ r a a

tactic: exact hab
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b : α
h : IsAntichain r s
a : α
ha hb : a ∈ s
hab : r a a
⊢ r a a
state_after: no goals
Theorem: Cardinal.add_eq_self
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: convert mul_le_mul_right' ((nat_lt_aleph0 2).le.trans h) c using 1
<;> simp [two_mul, mul_eq_self h]
state_before: c : Cardinal.{u_1}
h : ℵ₀ ≤ c
⊢ c + c ≤ c
state_after: no goals
Theorem: Module.End.isSemisimple_neg
File: Mathlib/LinearAlgebra/Semisimple.lean

tactic: simp [isSemisimple_iff]
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
⊢ (-f).IsSemisimple ↔ f.IsSemisimple
state_after: no goals
Theorem: Multiset.card_eq_card_of_rel
File: Mathlib/Data/Multiset/Basic.lean

tactic: induction h <;> simp [*]
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r✝ : α → β → Prop
p : γ → δ → Prop
r : α → β → Prop
s : Multiset α
t : Multiset β
h : Rel r s t
⊢ card s = card t
state_after: no goals
Theorem: existsUnique_zsmul_near_of_pos'
File: Mathlib/Algebra/Order/Archimedean.lean

tactic: simpa only [sub_nonneg, add_zsmul, one_zsmul, sub_lt_iff_lt_add'] using
  existsUnique_zsmul_near_of_pos ha g
state_before: α : Type u_1
M : Type u_2
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : Archimedean α
a : α
ha : 0 < a
g : α
⊢ ∃! k, 0 ≤ g - k • a ∧ g - k • a < a
state_after: no goals
Theorem: IsCoprime.mul_dvd
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: obtain ⟨a, b, h⟩ := H
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H : IsCoprime x y
H1 : x ∣ z
H2 : y ∣ z
⊢ x * y ∣ z
state_after: case intro.intro
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z

tactic: rw [← mul_one z, ← h, mul_add]
state_before: case intro.intro
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z
state_after: case intro.intro
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z * (a * x) + z * (b * y)

tactic: apply dvd_add
state_before: case intro.intro
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z * (a * x) + z * (b * y)
state_after: case intro.intro.h₁
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z * (a * x)

case intro.intro.h₂
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z * (b * y)

tactic: rw [mul_comm z, mul_assoc]
state_before: case intro.intro.h₁
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z * (a * x)
state_after: case intro.intro.h₁
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ a * (x * z)

tactic: exact (mul_dvd_mul_left _ H2).mul_left _
state_before: case intro.intro.h₁
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ a * (x * z)
state_after: no goals

tactic: rw [mul_comm b, ← mul_assoc]
state_before: case intro.intro.h₂
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z * (b * y)
state_after: case intro.intro.h₂
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z * y * b

tactic: exact (mul_dvd_mul_right H1 _).mul_right _
state_before: case intro.intro.h₂
R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : x ∣ z
H2 : y ∣ z
a b : R
h : a * x + b * y = 1
⊢ x * y ∣ z * y * b
state_after: no goals
Theorem: Set.exists_eq_singleton_iff_nonempty_subsingleton
File: Mathlib/Data/Set/Subsingleton.lean

tactic: refine ⟨?_, fun h => ?_⟩
state_before: α : Type u
a : α
s t : Set α
⊢ (∃ a, s = {a}) ↔ s.Nonempty ∧ s.Subsingleton
state_after: case refine_1
α : Type u
a : α
s t : Set α
⊢ (∃ a, s = {a}) → s.Nonempty ∧ s.Subsingleton

case refine_2
α : Type u
a : α
s t : Set α
h : s.Nonempty ∧ s.Subsingleton
⊢ ∃ a, s = {a}

tactic: rintro ⟨a, rfl⟩
state_before: case refine_1
α : Type u
a : α
s t : Set α
⊢ (∃ a, s = {a}) → s.Nonempty ∧ s.Subsingleton
state_after: case refine_1.intro
α : Type u
a✝ : α
t : Set α
a : α
⊢ {a}.Nonempty ∧ {a}.Subsingleton

tactic: exact ⟨singleton_nonempty a, subsingleton_singleton⟩
state_before: case refine_1.intro
α : Type u
a✝ : α
t : Set α
a : α
⊢ {a}.Nonempty ∧ {a}.Subsingleton
state_after: no goals

tactic: exact h.2.eq_empty_or_singleton.resolve_left h.1.ne_empty
state_before: case refine_2
α : Type u
a : α
s t : Set α
h : s.Nonempty ∧ s.Subsingleton
⊢ ∃ a, s = {a}
state_after: no goals
Theorem: PartENat.toWithTop_natCast'
File: Mathlib/Data/Nat/PartENat.lean

tactic: rw [toWithTop_natCast n]
state_before: n : ℕ
x✝ : Decidable (↑n).Dom
⊢ (↑n).toWithTop = ↑n
state_after: no goals
Theorem: CategoryTheory.GrothendieckTopology.imagePresheaf_id
File: Mathlib/CategoryTheory/Sites/Subsheaf.lean

tactic: ext
state_before: C : Type u
inst✝ : Category.{v, u} C
J : GrothendieckTopology C
F F' F'' : Cᵒᵖ ⥤ Type w
G G' : Subpresheaf F
⊢ imagePresheaf (𝟙 F) = ⊤
state_after: case obj.h.h
C : Type u
inst✝ : Category.{v, u} C
J : GrothendieckTopology C
F F' F'' : Cᵒᵖ ⥤ Type w
G G' : Subpresheaf F
x✝¹ : Cᵒᵖ
x✝ : F.obj x✝¹
⊢ x✝ ∈ (imagePresheaf (𝟙 F)).obj x✝¹ ↔ x✝ ∈ ⊤.obj x✝¹

tactic: simp
state_before: case obj.h.h
C : Type u
inst✝ : Category.{v, u} C
J : GrothendieckTopology C
F F' F'' : Cᵒᵖ ⥤ Type w
G G' : Subpresheaf F
x✝¹ : Cᵒᵖ
x✝ : F.obj x✝¹
⊢ x✝ ∈ (imagePresheaf (𝟙 F)).obj x✝¹ ↔ x✝ ∈ ⊤.obj x✝¹
state_after: no goals
Theorem: MeasurableSet.everywherePosSubset
File: Mathlib/MeasureTheory/Measure/EverywherePos.lean

tactic: rcases exists_isOpen_everywherePosSubset_eq_diff μ s with ⟨u, u_open, hu⟩
state_before: α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : MeasurableSpace α
μ ν : Measure α
s k : Set α
inst✝ : OpensMeasurableSpace α
hs : MeasurableSet s
⊢ MeasurableSet (μ.everywherePosSubset s)
state_after: case intro.intro
α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : MeasurableSpace α
μ ν : Measure α
s k : Set α
inst✝ : OpensMeasurableSpace α
hs : MeasurableSet s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ MeasurableSet (μ.everywherePosSubset s)

tactic: rw [hu]
state_before: case intro.intro
α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : MeasurableSpace α
μ ν : Measure α
s k : Set α
inst✝ : OpensMeasurableSpace α
hs : MeasurableSet s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ MeasurableSet (μ.everywherePosSubset s)
state_after: case intro.intro
α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : MeasurableSpace α
μ ν : Measure α
s k : Set α
inst✝ : OpensMeasurableSpace α
hs : MeasurableSet s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ MeasurableSet (s \ u)

tactic: exact hs.diff u_open.measurableSet
state_before: case intro.intro
α : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : MeasurableSpace α
μ ν : Measure α
s k : Set α
inst✝ : OpensMeasurableSpace α
hs : MeasurableSet s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ MeasurableSet (s \ u)
state_after: no goals
Theorem: aemeasurable_const'
File: Mathlib/MeasureTheory/Measure/AEMeasurable.lean

tactic: rcases eq_or_ne μ 0 with (rfl | hμ)
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
h : ∀ᵐ (x : α) (y : α) ∂μ, f x = f y
⊢ AEMeasurable f μ
state_after: case inl
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
ν : Measure α
h : ∀ᵐ (x : α) (y : α) ∂0, f x = f y
⊢ AEMeasurable f 0

case inr
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
h : ∀ᵐ (x : α) (y : α) ∂μ, f x = f y
hμ : μ ≠ 0
⊢ AEMeasurable f μ

tactic: exact aemeasurable_zero_measure
state_before: case inl
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
ν : Measure α
h : ∀ᵐ (x : α) (y : α) ∂0, f x = f y
⊢ AEMeasurable f 0
state_after: no goals

tactic: haveI := ae_neBot.2 hμ
state_before: case inr
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
h : ∀ᵐ (x : α) (y : α) ∂μ, f x = f y
hμ : μ ≠ 0
⊢ AEMeasurable f μ
state_after: case inr
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
h : ∀ᵐ (x : α) (y : α) ∂μ, f x = f y
hμ : μ ≠ 0
this : (ae μ).NeBot
⊢ AEMeasurable f μ

tactic: rcases h.exists with ⟨x, hx⟩
state_before: case inr
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
h : ∀ᵐ (x : α) (y : α) ∂μ, f x = f y
hμ : μ ≠ 0
this : (ae μ).NeBot
⊢ AEMeasurable f μ
state_after: case inr.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
h : ∀ᵐ (x : α) (y : α) ∂μ, f x = f y
hμ : μ ≠ 0
this : (ae μ).NeBot
x : α
hx : ∀ᵐ (y : α) ∂μ, f x = f y
⊢ AEMeasurable f μ

tactic: exact ⟨const α (f x), measurable_const, EventuallyEq.symm hx⟩
state_before: case inr.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
h : ∀ᵐ (x : α) (y : α) ∂μ, f x = f y
hμ : μ ≠ 0
this : (ae μ).NeBot
x : α
hx : ∀ᵐ (y : α) ∂μ, f x = f y
⊢ AEMeasurable f μ
state_after: no goals
Theorem: QuotientGroup.sound
File: Mathlib/GroupTheory/QuotientGroup.lean

tactic: ext x
state_before: G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
U : Set (G ⧸ N)
g : ↥N.op
⊢ g • ⇑(mk' N) ⁻¹' U = ⇑(mk' N) ⁻¹' U
state_after: case h
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
U : Set (G ⧸ N)
g : ↥N.op
x : G
⊢ x ∈ g • ⇑(mk' N) ⁻¹' U ↔ x ∈ ⇑(mk' N) ⁻¹' U

tactic: simp only [Set.mem_preimage, Set.mem_smul_set_iff_inv_smul_mem]
state_before: case h
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
U : Set (G ⧸ N)
g : ↥N.op
x : G
⊢ x ∈ g • ⇑(mk' N) ⁻¹' U ↔ x ∈ ⇑(mk' N) ⁻¹' U
state_after: case h
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
U : Set (G ⧸ N)
g : ↥N.op
x : G
⊢ (mk' N) (g⁻¹ • x) ∈ U ↔ (mk' N) x ∈ U

tactic: congr! 1
state_before: case h
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
U : Set (G ⧸ N)
g : ↥N.op
x : G
⊢ (mk' N) (g⁻¹ • x) ∈ U ↔ (mk' N) x ∈ U
state_after: case h.a.h.e'_4
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
U : Set (G ⧸ N)
g : ↥N.op
x : G
⊢ (mk' N) (g⁻¹ • x) = (mk' N) x

tactic: exact Quotient.sound ⟨g⁻¹, rfl⟩
state_before: case h.a.h.e'_4
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
U : Set (G ⧸ N)
g : ↥N.op
x : G
⊢ (mk' N) (g⁻¹ • x) = (mk' N) x
state_after: no goals
Theorem: isCoprime_one_right
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [one_mul, zero_mul, zero_add]
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
⊢ 0 * x + 1 * 1 = 1
state_after: no goals
Theorem: Nat.sInf_upward_closed_eq_succ_iff
File: Mathlib/Data/Nat/Lattice.lean

tactic: constructor
state_before: s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
⊢ sInf s = k + 1 ↔ k + 1 ∈ s ∧ k ∉ s
state_after: case mp
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
⊢ sInf s = k + 1 → k + 1 ∈ s ∧ k ∉ s

case mpr
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
⊢ k + 1 ∈ s ∧ k ∉ s → sInf s = k + 1

tactic: intro H
state_before: case mp
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
⊢ sInf s = k + 1 → k + 1 ∈ s ∧ k ∉ s
state_after: case mp
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : sInf s = k + 1
⊢ k + 1 ∈ s ∧ k ∉ s

tactic: rw [eq_Ici_of_nonempty_of_upward_closed (nonempty_of_sInf_eq_succ _) hs, H, mem_Ici, mem_Ici]
state_before: case mp
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : sInf s = k + 1
⊢ k + 1 ∈ s ∧ k ∉ s
state_after: case mp
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : sInf s = k + 1
⊢ k + 1 ≤ k + 1 ∧ ¬k + 1 ≤ k

s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : sInf s = k + 1
⊢ ℕ

s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : sInf s = k + 1
⊢ sInf s = ?m.6353 + 1

tactic: exact ⟨le_rfl, k.not_succ_le_self⟩
state_before: case mp
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : sInf s = k + 1
⊢ k + 1 ≤ k + 1 ∧ ¬k + 1 ≤ k
state_after: no goals

tactic: exact k
state_before: s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : sInf s = k + 1
⊢ ℕ
state_after: no goals

tactic: assumption
state_before: s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : sInf s = k + 1
⊢ sInf s = k + 1
state_after: no goals

tactic: rintro ⟨H, H'⟩
state_before: case mpr
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
⊢ k + 1 ∈ s ∧ k ∉ s → sInf s = k + 1
state_after: case mpr.intro
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : k + 1 ∈ s
H' : k ∉ s
⊢ sInf s = k + 1

tactic: rw [sInf_def (⟨_, H⟩ : s.Nonempty), find_eq_iff]
state_before: case mpr.intro
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : k + 1 ∈ s
H' : k ∉ s
⊢ sInf s = k + 1
state_after: case mpr.intro
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : k + 1 ∈ s
H' : k ∉ s
⊢ k + 1 ∈ s ∧ ∀ n < k + 1, n ∉ s

tactic: exact ⟨H, fun n hnk hns ↦ H' <| hs n k (Nat.lt_succ_iff.mp hnk) hns⟩
state_before: case mpr.intro
s : Set ℕ
hs : ∀ (k₁ k₂ : ℕ), k₁ ≤ k₂ → k₁ ∈ s → k₂ ∈ s
k : ℕ
H : k + 1 ∈ s
H' : k ∉ s
⊢ k + 1 ∈ s ∧ ∀ n < k + 1, n ∉ s
state_after: no goals
Theorem: SymplecticGroup.inv_left_mul_aux
File: Mathlib/LinearAlgebra/SymplecticGroup.lean

tactic: simp only [Matrix.mul_assoc, Matrix.neg_mul]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
hA : A ∈ symplecticGroup l R
⊢ -(J l R * Aᵀ * J l R * A) = -J l R * (Aᵀ * J l R * A)
state_after: no goals

tactic: rw [mem_iff'] at hA
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
hA : A ∈ symplecticGroup l R
⊢ -J l R * (Aᵀ * J l R * A) = -J l R * J l R
state_after: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
hA : Aᵀ * J l R * A = J l R
⊢ -J l R * (Aᵀ * J l R * A) = -J l R * J l R

tactic: rw [hA]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
hA : Aᵀ * J l R * A = J l R
⊢ -J l R * (Aᵀ * J l R * A) = -J l R * J l R
state_after: no goals

tactic: simp only [Matrix.neg_mul, neg_smul, one_smul]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
hA : A ∈ symplecticGroup l R
⊢ -J l R * J l R = -1 • (J l R * J l R)
state_after: no goals

tactic: rw [J_squared]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
hA : A ∈ symplecticGroup l R
⊢ -1 • (J l R * J l R) = -1 • -1
state_after: no goals

tactic: simp only [neg_smul_neg, one_smul]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
hA : A ∈ symplecticGroup l R
⊢ -1 • -1 = 1
state_after: no goals
Theorem: BoxIntegral.Integrable.dist_integralSum_integral_le_of_memBaseSet
File: Mathlib/Analysis/BoxIntegral/Basic.lean

tactic: rw [convergenceR, dif_pos h₀] at hπ
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
h : Integrable I l f vol
h₀ : 0 < ε
hπ : l.MemBaseSet I c (h.convergenceR ε c) π
hπp : π.IsPartition
⊢ dist (integralSum f vol π) (integral I l f vol) ≤ ε
state_after: ι : Type u
E : Type v
F : Type w
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
h : Integrable I l f vol
h₀ : 0 < ε
hπ : l.MemBaseSet I c (⋯.choose c) π
hπp : π.IsPartition
⊢ dist (integralSum f vol π) (integral I l f vol) ≤ ε

tactic: exact (hasIntegral_iff.1 h.hasIntegral ε h₀).choose_spec.2 c _ hπ hπp
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
h : Integrable I l f vol
h₀ : 0 < ε
hπ : l.MemBaseSet I c (⋯.choose c) π
hπp : π.IsPartition
⊢ dist (integralSum f vol π) (integral I l f vol) ≤ ε
state_after: no goals
Theorem: CategoryTheory.FunctorToTypes.eqToHom_map_comp_apply
File: Mathlib/CategoryTheory/Types.lean

tactic: aesop_cat
state_before: C : Type u
inst✝ : Category.{v, u} C
F G H : C ⥤ Type w
X Y Z : C
σ : F ⟶ G
τ : G ⟶ H
p : X = Y
q : Y = Z
x : F.obj X
⊢ F.map (eqToHom q) (F.map (eqToHom p) x) = F.map (eqToHom ⋯) x
state_after: no goals