1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: RingHom.charZero_iff
File: Mathlib/Algebra/CharZero/Lemmas.lean

tactic: intro a b h
state_before: R : Type u_1
S : Type u_2
inst✝¹ : NonAssocSemiring R
inst✝ : NonAssocSemiring S
ϕ : R →+* S
hϕ : Injective ⇑ϕ
hR : CharZero R
⊢ Injective Nat.cast
state_after: R : Type u_1
S : Type u_2
inst✝¹ : NonAssocSemiring R
inst✝ : NonAssocSemiring S
ϕ : R →+* S
hϕ : Injective ⇑ϕ
hR : CharZero R
a b : ℕ
h : ↑a = ↑b
⊢ a = b

tactic: rwa [← @Nat.cast_inj R, ← hϕ.eq_iff, map_natCast ϕ, map_natCast ϕ]
state_before: R : Type u_1
S : Type u_2
inst✝¹ : NonAssocSemiring R
inst✝ : NonAssocSemiring S
ϕ : R →+* S
hϕ : Injective ⇑ϕ
hR : CharZero R
a b : ℕ
h : ↑a = ↑b
⊢ a = b
state_after: no goals
Theorem: SimplexCategory.factorThruImage_eq
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

tactic: rw [← cancel_mono i, fac, ← image_ι_eq fac, image.fac]
state_before: Δ Δ'' : SimplexCategory
φ : Δ ⟶ Δ''
e : Δ ⟶ image φ
inst✝¹ : Epi e
i : image φ ⟶ Δ''
inst✝ : Mono i
fac : e ≫ i = φ
⊢ factorThruImage φ = e
state_after: no goals
Theorem: Nat.exists_mul_emod_eq_gcd
File: Mathlib/Data/Int/GCD.lean

tactic: have hk' := Int.ofNat_ne_zero.2 (ne_of_gt (lt_of_le_of_lt (zero_le (gcd n k)) hk))
state_before: k n : ℕ
hk : n.gcd k < k
⊢ ∃ m, n * m % k = n.gcd k
state_after: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
⊢ ∃ m, n * m % k = n.gcd k

tactic: have key := congr_arg (fun (m : ℤ) => (m % k).toNat) (gcd_eq_gcd_ab n k)
state_before: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
⊢ ∃ m, n * m % k = n.gcd k
state_after: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
key : (fun m => (m % ↑k).toNat) ↑(n.gcd k) = (fun m => (m % ↑k).toNat) (↑n * n.gcdA k + ↑k * n.gcdB k)
⊢ ∃ m, n * m % k = n.gcd k

tactic: simp only at key
state_before: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
key : (fun m => (m % ↑k).toNat) ↑(n.gcd k) = (fun m => (m % ↑k).toNat) (↑n * n.gcdA k + ↑k * n.gcdB k)
⊢ ∃ m, n * m % k = n.gcd k
state_after: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
key : (↑(n.gcd k) % ↑k).toNat = ((↑n * n.gcdA k + ↑k * n.gcdB k) % ↑k).toNat
⊢ ∃ m, n * m % k = n.gcd k

tactic: rw [Int.add_mul_emod_self_left, ← Int.natCast_mod, Int.toNat_natCast, mod_eq_of_lt hk] at key
state_before: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
key : (↑(n.gcd k) % ↑k).toNat = ((↑n * n.gcdA k + ↑k * n.gcdB k) % ↑k).toNat
⊢ ∃ m, n * m % k = n.gcd k
state_after: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
key : n.gcd k = (↑n * n.gcdA k % ↑k).toNat
⊢ ∃ m, n * m % k = n.gcd k

tactic: refine ⟨(n.gcdA k % k).toNat, Eq.trans (Int.ofNat.inj ?_) key.symm⟩
state_before: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
key : n.gcd k = (↑n * n.gcdA k % ↑k).toNat
⊢ ∃ m, n * m % k = n.gcd k
state_after: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
key : n.gcd k = (↑n * n.gcdA k % ↑k).toNat
⊢ Int.ofNat (n * (n.gcdA k % ↑k).toNat % k) = Int.ofNat (↑n * n.gcdA k % ↑k).toNat

tactic: rw [Int.ofNat_eq_coe, Int.natCast_mod, Int.ofNat_mul, Int.toNat_of_nonneg (Int.emod_nonneg _ hk'),
  Int.ofNat_eq_coe, Int.toNat_of_nonneg (Int.emod_nonneg _ hk'), Int.mul_emod, Int.emod_emod,
  ← Int.mul_emod]
state_before: k n : ℕ
hk : n.gcd k < k
hk' : ↑k ≠ 0
key : n.gcd k = (↑n * n.gcdA k % ↑k).toNat
⊢ Int.ofNat (n * (n.gcdA k % ↑k).toNat % k) = Int.ofNat (↑n * n.gcdA k % ↑k).toNat
state_after: no goals
Theorem: Bool.or_inr
File: Mathlib/Data/Bool/Basic.lean

tactic: cases a <;> simp [H]
state_before: a b : Bool
H : b = true
⊢ (a || b) = true
state_after: no goals
Theorem: Urysohns.CU.approx_nonneg
File: Mathlib/Topology/UrysohnsLemma.lean

tactic: induction' n with n ihn generalizing c
state_before: X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
c : CU P
n : ℕ
x : X
⊢ 0 ≤ approx n c x
state_after: case zero
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
c : CU P
⊢ 0 ≤ approx 0 c x

case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), 0 ≤ approx n c x
c : CU P
⊢ 0 ≤ approx (n + 1) c x

tactic: exact indicator_nonneg (fun _ _ => zero_le_one) _
state_before: case zero
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
c : CU P
⊢ 0 ≤ approx 0 c x
state_after: no goals

tactic: simp only [approx, midpoint_eq_smul_add, invOf_eq_inv]
state_before: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), 0 ≤ approx n c x
c : CU P
⊢ 0 ≤ approx (n + 1) c x
state_after: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), 0 ≤ approx n c x
c : CU P
⊢ 0 ≤ 2⁻¹ • (approx n c.left x + approx n c.right x)

tactic: refine mul_nonneg (inv_nonneg.2 zero_le_two) (add_nonneg ?_ ?_) <;> apply ihn
state_before: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), 0 ≤ approx n c x
c : CU P
⊢ 0 ≤ 2⁻¹ • (approx n c.left x + approx n c.right x)
state_after: no goals
Theorem: Cubic.disc_ne_zero_iff_roots_nodup
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [disc_ne_zero_iff_roots_ne ha h3, h3]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ P.disc ≠ 0 ↔ (map φ P).roots.Nodup
state_after: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ x ≠ y ∧ x ≠ z ∧ y ≠ z ↔ {x, y, z}.Nodup

tactic: change _ ↔ (x ::ₘ y ::ₘ {z}).Nodup
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ x ≠ y ∧ x ≠ z ∧ y ≠ z ↔ {x, y, z}.Nodup
state_after: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ x ≠ y ∧ x ≠ z ∧ y ≠ z ↔ (x ::ₘ y ::ₘ {z}).Nodup

tactic: rw [nodup_cons, nodup_cons, mem_cons, mem_singleton, mem_singleton]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ x ≠ y ∧ x ≠ z ∧ y ≠ z ↔ (x ::ₘ y ::ₘ {z}).Nodup
state_after: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ x ≠ y ∧ x ≠ z ∧ y ≠ z ↔ ¬(x = y ∨ x = z) ∧ ¬y = z ∧ {z}.Nodup

tactic: simp only [nodup_singleton]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ x ≠ y ∧ x ≠ z ∧ y ≠ z ↔ ¬(x = y ∨ x = z) ∧ ¬y = z ∧ {z}.Nodup
state_after: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ x ≠ y ∧ x ≠ z ∧ y ≠ z ↔ ¬(x = y ∨ x = z) ∧ ¬y = z ∧ True

tactic: tauto
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : (map φ P).roots = {x, y, z}
⊢ x ≠ y ∧ x ≠ z ∧ y ≠ z ↔ ¬(x = y ∨ x = z) ∧ ¬y = z ∧ True
state_after: no goals
Theorem: Finset.image₂_right
File: Mathlib/Data/Finset/NAry.lean

tactic: push_cast
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁸ : DecidableEq α'
inst✝⁷ : DecidableEq β'
inst✝⁶ : DecidableEq γ
inst✝⁵ : DecidableEq γ'
inst✝⁴ : DecidableEq δ
inst✝³ : DecidableEq δ'
inst✝² : DecidableEq ε
inst✝¹ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝ : DecidableEq β
h : s.Nonempty
⊢ ↑(image₂ (fun x y => y) s t) = ↑t
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁸ : DecidableEq α'
inst✝⁷ : DecidableEq β'
inst✝⁶ : DecidableEq γ
inst✝⁵ : DecidableEq γ'
inst✝⁴ : DecidableEq δ
inst✝³ : DecidableEq δ'
inst✝² : DecidableEq ε
inst✝¹ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝ : DecidableEq β
h : s.Nonempty
⊢ image2 (fun x y => y) ↑s ↑t = ↑t

tactic: exact image2_right h
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁸ : DecidableEq α'
inst✝⁷ : DecidableEq β'
inst✝⁶ : DecidableEq γ
inst✝⁵ : DecidableEq γ'
inst✝⁴ : DecidableEq δ
inst✝³ : DecidableEq δ'
inst✝² : DecidableEq ε
inst✝¹ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝ : DecidableEq β
h : s.Nonempty
⊢ image2 (fun x y => y) ↑s ↑t = ↑t
state_after: no goals
Theorem: TopCat.Presheaf.restrict_restrict
File: Mathlib/Topology/Sheaves/Presheaf.lean

tactic: delta restrictOpen restrict
state_before: C✝ : Type u
inst✝² : Category.{v, u} C✝
X : TopCat
C : Type u_1
inst✝¹ : Category.{u_3, u_1} C
inst✝ : ConcreteCategory C
F : Presheaf C X
U V W : Opens ↑X
e₁ : U ≤ V
e₂ : V ≤ W
x : (forget C).obj (F.obj { unop := W })
⊢ ((x |_ V) e₂ |_ U) e₁ = (x |_ U) ⋯
state_after: C✝ : Type u
inst✝² : Category.{v, u} C✝
X : TopCat
C : Type u_1
inst✝¹ : Category.{u_3, u_1} C
inst✝ : ConcreteCategory C
F : Presheaf C X
U V W : Opens ↑X
e₁ : U ≤ V
e₂ : V ≤ W
x : (forget C).obj (F.obj { unop := W })
⊢ (F.map (homOfLE e₁).op) ((F.map (homOfLE e₂).op) x) = (F.map (homOfLE ⋯).op) x

tactic: rw [← comp_apply, ← Functor.map_comp]
state_before: C✝ : Type u
inst✝² : Category.{v, u} C✝
X : TopCat
C : Type u_1
inst✝¹ : Category.{u_3, u_1} C
inst✝ : ConcreteCategory C
F : Presheaf C X
U V W : Opens ↑X
e₁ : U ≤ V
e₂ : V ≤ W
x : (forget C).obj (F.obj { unop := W })
⊢ (F.map (homOfLE e₁).op) ((F.map (homOfLE e₂).op) x) = (F.map (homOfLE ⋯).op) x
state_after: C✝ : Type u
inst✝² : Category.{v, u} C✝
X : TopCat
C : Type u_1
inst✝¹ : Category.{u_3, u_1} C
inst✝ : ConcreteCategory C
F : Presheaf C X
U V W : Opens ↑X
e₁ : U ≤ V
e₂ : V ≤ W
x : (forget C).obj (F.obj { unop := W })
⊢ (F.map ((homOfLE e₂).op ≫ (homOfLE e₁).op)) x = (F.map (homOfLE ⋯).op) x

tactic: rfl
state_before: C✝ : Type u
inst✝² : Category.{v, u} C✝
X : TopCat
C : Type u_1
inst✝¹ : Category.{u_3, u_1} C
inst✝ : ConcreteCategory C
F : Presheaf C X
U V W : Opens ↑X
e₁ : U ≤ V
e₂ : V ≤ W
x : (forget C).obj (F.obj { unop := W })
⊢ (F.map ((homOfLE e₂).op ≫ (homOfLE e₁).op)) x = (F.map (homOfLE ⋯).op) x
state_after: no goals
Theorem: Nat.nth_eq_zero_mono
File: Mathlib/Data/Nat/Nth.lean

tactic: simp only [nth_eq_zero, h₀, false_and_iff, false_or_iff] at ha ⊢
state_before: p : ℕ → Prop
h₀ : ¬p 0
a b : ℕ
hab : a ≤ b
ha : nth p a = 0
⊢ nth p b = 0
state_after: p : ℕ → Prop
h₀ : ¬p 0
a b : ℕ
hab : a ≤ b
ha : ∃ (hf : (setOf p).Finite), hf.toFinset.card ≤ a
⊢ ∃ (hf : (setOf p).Finite), hf.toFinset.card ≤ b

tactic: exact ha.imp fun hf hle => hle.trans hab
state_before: p : ℕ → Prop
h₀ : ¬p 0
a b : ℕ
hab : a ≤ b
ha : ∃ (hf : (setOf p).Finite), hf.toFinset.card ≤ a
⊢ ∃ (hf : (setOf p).Finite), hf.toFinset.card ≤ b
state_after: no goals
Theorem: MeasureTheory.Measure.compProd_apply
File: Mathlib/Probability/Kernel/MeasureCompProd.lean

tactic: simp_rw [compProd, kernel.compProd_apply _ _ _ hs, kernel.const_apply, kernel.prodMkLeft_apply']
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ η : ↥(kernel α β)
inst✝¹ : SFinite μ
inst✝ : IsSFiniteKernel κ
s : Set (α × β)
hs : MeasurableSet s
⊢ (μ ⊗ₘ κ) s = ∫⁻ (a : α), (κ a) (Prod.mk a ⁻¹' s) ∂μ
state_after: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ η : ↥(kernel α β)
inst✝¹ : SFinite μ
inst✝ : IsSFiniteKernel κ
s : Set (α × β)
hs : MeasurableSet s
⊢ ∫⁻ (b : α), (κ b) {c | (b, c) ∈ s} ∂μ = ∫⁻ (a : α), (κ a) (Prod.mk a ⁻¹' s) ∂μ

tactic: rfl
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ η : ↥(kernel α β)
inst✝¹ : SFinite μ
inst✝ : IsSFiniteKernel κ
s : Set (α × β)
hs : MeasurableSet s
⊢ ∫⁻ (b : α), (κ b) {c | (b, c) ∈ s} ∂μ = ∫⁻ (a : α), (κ a) (Prod.mk a ⁻¹' s) ∂μ
state_after: no goals
Theorem: HasLineDerivWithinAt.hasLineDerivAt
File: Mathlib/Analysis/Calculus/LineDeriv/Basic.lean

tactic: rw [← hasLineDerivWithinAt_univ]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
h : HasLineDerivWithinAt 𝕜 f f' s x v
hs : s ∈ 𝓝 x
⊢ HasLineDerivAt 𝕜 f f' x v
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
h : HasLineDerivWithinAt 𝕜 f f' s x v
hs : s ∈ 𝓝 x
⊢ HasLineDerivWithinAt 𝕜 f f' univ x v

tactic: rw [← nhdsWithin_univ] at hs
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
h : HasLineDerivWithinAt 𝕜 f f' s x v
hs : s ∈ 𝓝 x
⊢ HasLineDerivWithinAt 𝕜 f f' univ x v
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
h : HasLineDerivWithinAt 𝕜 f f' s x v
hs : s ∈ 𝓝[univ] x
⊢ HasLineDerivWithinAt 𝕜 f f' univ x v

tactic: exact h.mono_of_mem hs
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v : E
L : E →L[𝕜] F
h : HasLineDerivWithinAt 𝕜 f f' s x v
hs : s ∈ 𝓝[univ] x
⊢ HasLineDerivWithinAt 𝕜 f f' univ x v
state_after: no goals
Theorem: odd_add_one_self
File: Mathlib/Algebra/Ring/Parity.lean

tactic: simp [add_comm _ a]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝¹ : Semiring α
inst✝ : Semiring β
a b : α
m n : ℕ
⊢ Odd (a + 1 + a)
state_after: no goals
Theorem: Submodule.nontrivial_iff_ne_bot
File: Mathlib/Algebra/Module/Submodule/Lattice.lean

tactic: rw [iff_not_comm, not_nontrivial_iff_subsingleton, subsingleton_iff_eq_bot]
state_before: R : Type u_1
S : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S M
inst✝¹ : SMul S R
inst✝ : IsScalarTower S R M
p q : Submodule R M
⊢ Nontrivial ↥p ↔ p ≠ ⊥
state_after: no goals
Theorem: MeasurableEmbedding.aemeasurable_comp_iff
File: Mathlib/MeasureTheory/Measure/AEMeasurable.lean

tactic: refine ⟨fun H => ?_, hg.measurable.comp_aemeasurable⟩
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 α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
⊢ AEMeasurable (g ∘ f) μ ↔ AEMeasurable f μ
state_after: ι : 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 α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
H : AEMeasurable (g ∘ f) μ
⊢ AEMeasurable f μ

tactic: suffices AEMeasurable ((rangeSplitting g ∘ rangeFactorization g) ∘ f) μ by
  rwa [(rightInverse_rangeSplitting hg.injective).comp_eq_id] at this
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 α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
H : AEMeasurable (g ∘ f) μ
⊢ AEMeasurable f μ
state_after: ι : 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 α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
H : AEMeasurable (g ∘ f) μ
⊢ AEMeasurable ((rangeSplitting g ∘ rangeFactorization g) ∘ f) μ

tactic: exact hg.measurable_rangeSplitting.comp_aemeasurable H.subtype_mk
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 α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
H : AEMeasurable (g ∘ f) μ
⊢ AEMeasurable ((rangeSplitting g ∘ rangeFactorization g) ∘ f) μ
state_after: no goals

tactic: rwa [(rightInverse_rangeSplitting hg.injective).comp_eq_id] at this
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 α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
H : AEMeasurable (g ∘ f) μ
this : AEMeasurable ((rangeSplitting g ∘ rangeFactorization g) ∘ f) μ
⊢ AEMeasurable f μ
state_after: no goals
Theorem: Submodule.set_smul_span
File: Mathlib/Algebra/Module/Submodule/Pointwise.lean

tactic: simp_rw [set_smul_eq_iSup, smul_span, iSup_span, Set.iUnion_smul_set]
state_before: α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
S : Type u_4
inst✝⁴ : Monoid S
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : DistribMulAction S M
sR : Set R
s✝ : Set S
N : Submodule R M
inst✝ : SMulCommClass S R M
s : Set S
t : Set M
⊢ s • span R t = span R (s • t)
state_after: no goals
Theorem: Finset.finsuppAntidiag_empty
File: Mathlib/Algebra/Order/Antidiag/Finsupp.lean

tactic: split_ifs with hn
state_before: ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁷ : DecidableEq ι
inst✝⁶ : AddCommMonoid μ
inst✝⁵ : HasAntidiagonal μ
inst✝⁴ : DecidableEq μ
inst✝³ : AddCommMonoid μ'
inst✝² : HasAntidiagonal μ'
inst✝¹ : DecidableEq μ'
inst✝ : DecidableEq μ
n : μ
⊢ ∅.finsuppAntidiag n = if n = 0 then {0} else ∅
state_after: case pos
ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁷ : DecidableEq ι
inst✝⁶ : AddCommMonoid μ
inst✝⁵ : HasAntidiagonal μ
inst✝⁴ : DecidableEq μ
inst✝³ : AddCommMonoid μ'
inst✝² : HasAntidiagonal μ'
inst✝¹ : DecidableEq μ'
inst✝ : DecidableEq μ
n : μ
hn : n = 0
⊢ ∅.finsuppAntidiag n = {0}

case neg
ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁷ : DecidableEq ι
inst✝⁶ : AddCommMonoid μ
inst✝⁵ : HasAntidiagonal μ
inst✝⁴ : DecidableEq μ
inst✝³ : AddCommMonoid μ'
inst✝² : HasAntidiagonal μ'
inst✝¹ : DecidableEq μ'
inst✝ : DecidableEq μ
n : μ
hn : ¬n = 0
⊢ ∅.finsuppAntidiag n = ∅

tactic: rw [hn]
state_before: case pos
ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁷ : DecidableEq ι
inst✝⁶ : AddCommMonoid μ
inst✝⁵ : HasAntidiagonal μ
inst✝⁴ : DecidableEq μ
inst✝³ : AddCommMonoid μ'
inst✝² : HasAntidiagonal μ'
inst✝¹ : DecidableEq μ'
inst✝ : DecidableEq μ
n : μ
hn : n = 0
⊢ ∅.finsuppAntidiag n = {0}
state_after: case pos
ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁷ : DecidableEq ι
inst✝⁶ : AddCommMonoid μ
inst✝⁵ : HasAntidiagonal μ
inst✝⁴ : DecidableEq μ
inst✝³ : AddCommMonoid μ'
inst✝² : HasAntidiagonal μ'
inst✝¹ : DecidableEq μ'
inst✝ : DecidableEq μ
n : μ
hn : n = 0
⊢ ∅.finsuppAntidiag 0 = {0}

tactic: apply finsuppAntidiag_empty_zero
state_before: case pos
ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁷ : DecidableEq ι
inst✝⁶ : AddCommMonoid μ
inst✝⁵ : HasAntidiagonal μ
inst✝⁴ : DecidableEq μ
inst✝³ : AddCommMonoid μ'
inst✝² : HasAntidiagonal μ'
inst✝¹ : DecidableEq μ'
inst✝ : DecidableEq μ
n : μ
hn : n = 0
⊢ ∅.finsuppAntidiag 0 = {0}
state_after: no goals

tactic: apply finsuppAntidiag_empty_of_ne_zero hn
state_before: case neg
ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁷ : DecidableEq ι
inst✝⁶ : AddCommMonoid μ
inst✝⁵ : HasAntidiagonal μ
inst✝⁴ : DecidableEq μ
inst✝³ : AddCommMonoid μ'
inst✝² : HasAntidiagonal μ'
inst✝¹ : DecidableEq μ'
inst✝ : DecidableEq μ
n : μ
hn : ¬n = 0
⊢ ∅.finsuppAntidiag n = ∅
state_after: no goals
Theorem: MeasureTheory.integrable_finset_sum_measure
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: induction s using Finset.induction_on <;> simp [*]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
ι : Type u_5
m : MeasurableSpace α
f : α → β
μ : ι → Measure α
s : Finset ι
⊢ Integrable f (∑ i ∈ s, μ i) ↔ ∀ i ∈ s, Integrable f (μ i)
state_after: no goals
Theorem: Set.IsWF.min_mul
File: Mathlib/Data/Finset/MulAntidiagonal.lean

tactic: refine le_antisymm (IsWF.min_le _ _ (mem_mul.2 ⟨_, hs.min_mem _, _, ht.min_mem _, rfl⟩)) ?_
state_before: α : Type u_1
s t : Set α
inst✝ : LinearOrderedCancelCommMonoid α
hs : s.IsWF
ht : t.IsWF
hsn : s.Nonempty
htn : t.Nonempty
⊢ ⋯.min ⋯ = hs.min hsn * ht.min htn
state_after: α : Type u_1
s t : Set α
inst✝ : LinearOrderedCancelCommMonoid α
hs : s.IsWF
ht : t.IsWF
hsn : s.Nonempty
htn : t.Nonempty
⊢ hs.min hsn * ht.min htn ≤ ⋯.min ⋯

tactic: rw [IsWF.le_min_iff]
state_before: α : Type u_1
s t : Set α
inst✝ : LinearOrderedCancelCommMonoid α
hs : s.IsWF
ht : t.IsWF
hsn : s.Nonempty
htn : t.Nonempty
⊢ hs.min hsn * ht.min htn ≤ ⋯.min ⋯
state_after: α : Type u_1
s t : Set α
inst✝ : LinearOrderedCancelCommMonoid α
hs : s.IsWF
ht : t.IsWF
hsn : s.Nonempty
htn : t.Nonempty
⊢ ∀ b ∈ s * t, hs.min hsn * ht.min htn ≤ b

tactic: rintro _ ⟨x, hx, y, hy, rfl⟩
state_before: α : Type u_1
s t : Set α
inst✝ : LinearOrderedCancelCommMonoid α
hs : s.IsWF
ht : t.IsWF
hsn : s.Nonempty
htn : t.Nonempty
⊢ ∀ b ∈ s * t, hs.min hsn * ht.min htn ≤ b
state_after: case intro.intro.intro.intro
α : Type u_1
s t : Set α
inst✝ : LinearOrderedCancelCommMonoid α
hs : s.IsWF
ht : t.IsWF
hsn : s.Nonempty
htn : t.Nonempty
x : α
hx : x ∈ s
y : α
hy : y ∈ t
⊢ hs.min hsn * ht.min htn ≤ (fun x x_1 => x * x_1) x y

tactic: exact mul_le_mul' (hs.min_le _ hx) (ht.min_le _ hy)
state_before: case intro.intro.intro.intro
α : Type u_1
s t : Set α
inst✝ : LinearOrderedCancelCommMonoid α
hs : s.IsWF
ht : t.IsWF
hsn : s.Nonempty
htn : t.Nonempty
x : α
hx : x ∈ s
y : α
hy : y ∈ t
⊢ hs.min hsn * ht.min htn ≤ (fun x x_1 => x * x_1) x y
state_after: no goals
Theorem: extChartAt_target_subset_range
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: simp only [mfld_simps]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
x : M
⊢ (extChartAt I x).target ⊆ range ↑I
state_after: no goals
Theorem: IntervalIntegrable.comp_mul_left_iff
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simpa [hc] using h.comp_mul_left c⁻¹
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
c : ℝ
hc : c ≠ 0
h : IntervalIntegrable (fun x => f (c * x)) volume (a / c) (b / c)
⊢ IntervalIntegrable f volume a b
state_after: no goals