1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: exists₂_comm
File: Mathlib/Logic/Basic.lean

tactic: simp only [@exists_comm (κ₁ _), @exists_comm ι₁]
state_before: α : Sort u_1
β : Sort u_2
p✝ q : α → Prop
ι₁ : Sort u_3
ι₂ : Sort u_4
κ₁ : ι₁ → Sort u_5
κ₂ : ι₂ → Sort u_6
p : (i₁ : ι₁) → κ₁ i₁ → (i₂ : ι₂) → κ₂ i₂ → Prop
⊢ (∃ i₁ j₁ i₂ j₂, p i₁ j₁ i₂ j₂) ↔ ∃ i₂ j₂ i₁ j₁, p i₁ j₁ i₂ j₂
state_after: no goals
Theorem: not_inseparable_iff_exists_open
File: Mathlib/Topology/Inseparable.lean

tactic: simp [inseparable_iff_forall_open, ← xor_iff_not_iff]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ ¬(x ~ᵢ y) ↔ ∃ s, IsOpen s ∧ Xor' (x ∈ s) (y ∈ s)
state_after: no goals
Theorem: Cardinal.pow_four
File: Mathlib/Algebra/Quaternion.lean

tactic: decide
state_before: R : Type u_1
c₁ c₂ : R
inst✝ : Infinite R
⊢ 1 ≤ 4
state_after: no goals
Theorem: Multiset.count_erase_self
File: Mathlib/Data/Multiset/Basic.lean

tactic: convert List.count_erase_self a l <;> rw [← coe_count] <;> simp
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
s : Multiset α
l : List α
⊢ count a (erase ⟦l⟧ a) = count a ⟦l⟧ - 1
state_after: no goals
Theorem: div_le_one
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_le_iff hb, one_mul]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hb : 0 < b
⊢ a / b ≤ 1 ↔ a ≤ b
state_after: no goals
Theorem: CategoryTheory.Abelian.mono_inr_of_isColimit
File: Mathlib/CategoryTheory/Abelian/Basic.lean

tactic: haveI : Mono (NatTrans.app (colimit.cocone (span f g)).ι WalkingCospan.right) :=
  Abelian.mono_pushout_of_mono_f f g
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasPushouts C
W X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
inst✝ : Mono f
s : PushoutCocone f g
hs : IsColimit s
⊢ Mono s.inr
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasPushouts C
W X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
inst✝ : Mono f
s : PushoutCocone f g
hs : IsColimit s
this : Mono ((colimit.cocone (span f g)).ι.app WalkingCospan.right)
⊢ Mono s.inr

tactic: apply
  mono_of_mono_fac (IsColimit.comp_coconePointUniqueUpToIso_hom hs (colimit.isColimit _) _)
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasPushouts C
W X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
inst✝ : Mono f
s : PushoutCocone f g
hs : IsColimit s
this : Mono ((colimit.cocone (span f g)).ι.app WalkingCospan.right)
⊢ Mono s.inr
state_after: no goals
Theorem: harmonic_pos
File: Mathlib/NumberTheory/Harmonic/Defs.lean

tactic: unfold harmonic
state_before: n : ℕ
Hn : n ≠ 0
⊢ 0 < harmonic n
state_after: n : ℕ
Hn : n ≠ 0
⊢ 0 < ∑ i ∈ Finset.range n, (↑(i + 1))⁻¹

tactic: rw [← Finset.nonempty_range_iff] at Hn
state_before: n : ℕ
Hn : n ≠ 0
⊢ 0 < ∑ i ∈ Finset.range n, (↑(i + 1))⁻¹
state_after: n : ℕ
Hn : (Finset.range n).Nonempty
⊢ 0 < ∑ i ∈ Finset.range n, (↑(i + 1))⁻¹

tactic: positivity
state_before: n : ℕ
Hn : (Finset.range n).Nonempty
⊢ 0 < ∑ i ∈ Finset.range n, (↑(i + 1))⁻¹
state_after: no goals
Theorem: PowerSeries.coeff_C_mul_X_pow
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: simp [X_pow_eq, coeff_monomial]
state_before: R : Type u_1
inst✝ : Semiring R
x : R
k n : ℕ
⊢ (coeff R n) ((C R) x * X ^ k) = if n = k then x else 0
state_after: no goals
Theorem: Set.univ_pi_eq_iInter
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [pi_def, iInter_true, mem_univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
π : α → Type u_11
t : (i : α) → Set (π i)
⊢ univ.pi t = ⋂ i, eval i ⁻¹' t i
state_after: no goals
Theorem: Orientation.oangle_add_right_eq_arctan_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: have hs : (o.oangle x (x + y)).sign = 1 := by
  rw [oangle_sign_add_right, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ o.oangle x (x + y) = ↑(Real.arctan (‖y‖ / ‖x‖))
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
hs : (o.oangle x (x + y)).sign = 1
⊢ o.oangle x (x + y) = ↑(Real.arctan (‖y‖ / ‖x‖))

tactic: rw [o.oangle_eq_angle_of_sign_eq_one hs,
  InnerProductGeometry.angle_add_eq_arctan_of_inner_eq_zero
    (o.inner_eq_zero_of_oangle_eq_pi_div_two h) (o.left_ne_zero_of_oangle_eq_pi_div_two h)]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
hs : (o.oangle x (x + y)).sign = 1
⊢ o.oangle x (x + y) = ↑(Real.arctan (‖y‖ / ‖x‖))
state_after: no goals

tactic: rw [oangle_sign_add_right, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ (o.oangle x (x + y)).sign = 1
state_after: no goals
Theorem: Equiv.Perm.sameCycle_zpow_left
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: simp [SameCycle, zpow_add]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x y z : α
n : ℤ
⊢ (∃ b, (f ^ (Equiv.symm (Equiv.addRight n)) b) ((f ^ n) x) = y) ↔ f.SameCycle x y
state_after: no goals
Theorem: NormedAddGroupHom.norm_id_of_nontrivial_seminorm
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: let ⟨x, hx⟩ := h
state_before: V : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
h : ∃ x, ‖x‖ ≠ 0
⊢ 1 ≤ ‖id V‖
state_after: V : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
h : ∃ x, ‖x‖ ≠ 0
x : V
hx : ‖x‖ ≠ 0
⊢ 1 ≤ ‖id V‖

tactic: have := (id V).ratio_le_opNorm x
state_before: V : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
h : ∃ x, ‖x‖ ≠ 0
x : V
hx : ‖x‖ ≠ 0
⊢ 1 ≤ ‖id V‖
state_after: V : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
h : ∃ x, ‖x‖ ≠ 0
x : V
hx : ‖x‖ ≠ 0
this : ‖(id V) x‖ / ‖x‖ ≤ ‖id V‖
⊢ 1 ≤ ‖id V‖

tactic: rwa [id_apply, div_self hx] at this
state_before: V : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
h : ∃ x, ‖x‖ ≠ 0
x : V
hx : ‖x‖ ≠ 0
this : ‖(id V) x‖ / ‖x‖ ≤ ‖id V‖
⊢ 1 ≤ ‖id V‖
state_after: no goals
Theorem: Polynomial.ascPochhammer_smeval_eq_eval
File: Mathlib/RingTheory/Binomial.lean

tactic: rw [eval_eq_smeval, ascPochhammer_smeval_cast R]
state_before: R : Type u_1
S : Type u_2
inst✝ : Semiring R
r : R
n : ℕ
⊢ (ascPochhammer ℕ n).smeval r = eval r (ascPochhammer R n)
state_after: no goals
Theorem: DomMulAct.dist_smul_Lp
File: Mathlib/MeasureTheory/Function/LpSpace/DomAct/Basic.lean

tactic: simp only [dist, ← smul_Lp_sub, norm_smul_Lp]
state_before: M : Type u_1
N : Type u_2
α : Type u_3
E : Type u_4
inst✝⁶ : MeasurableSpace M
inst✝⁵ : MeasurableSpace N
inst✝⁴ : MeasurableSpace α
inst✝³ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝² : SMul M α
inst✝¹ : SMulInvariantMeasure M α μ
inst✝ : MeasurableSMul M α
c : Mᵈᵐᵃ
f g : ↥(Lp E p μ)
⊢ dist (c • f) (c • g) = dist f g
state_after: no goals
Theorem: mem_closure_one_iff_norm
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [← closedBall_zero', mem_closedBall_one_iff, (norm_nonneg' x).le_iff_eq]
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
inst✝¹ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝ : FunLike 𝓕 E F
x : E
⊢ x ∈ closure {1} ↔ ‖x‖ = 0
state_after: no goals
Theorem: HilbertBasis.hasSum_inner_mul_inner
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

tactic: convert (b.hasSum_repr y).mapL (innerSL 𝕜 x) using 1
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x y : E
⊢ HasSum
    (fun i => ⟪x, (fun i => b.repr.symm (lp.single 2 i 1)) i⟫_𝕜 * ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, y⟫_𝕜)
    ⟪x, y⟫_𝕜
state_after: case h.e'_5
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x y : E
⊢ (fun i => ⟪x, (fun i => b.repr.symm (lp.single 2 i 1)) i⟫_𝕜 * ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, y⟫_𝕜) =
    fun b_1 => ((innerSL 𝕜) x) (↑(b.repr y) b_1 • (fun i => b.repr.symm (lp.single 2 i 1)) b_1)

tactic: ext i
state_before: case h.e'_5
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x y : E
⊢ (fun i => ⟪x, (fun i => b.repr.symm (lp.single 2 i 1)) i⟫_𝕜 * ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, y⟫_𝕜) =
    fun b_1 => ((innerSL 𝕜) x) (↑(b.repr y) b_1 • (fun i => b.repr.symm (lp.single 2 i 1)) b_1)
state_after: case h.e'_5.h
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x y : E
i : ι
⊢ ⟪x, (fun i => b.repr.symm (lp.single 2 i 1)) i⟫_𝕜 * ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, y⟫_𝕜 =
    ((innerSL 𝕜) x) (↑(b.repr y) i • (fun i => b.repr.symm (lp.single 2 i 1)) i)

tactic: rw [innerSL_apply, b.repr_apply_apply, inner_smul_right, mul_comm]
state_before: case h.e'_5.h
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x y : E
i : ι
⊢ ⟪x, (fun i => b.repr.symm (lp.single 2 i 1)) i⟫_𝕜 * ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, y⟫_𝕜 =
    ((innerSL 𝕜) x) (↑(b.repr y) i • (fun i => b.repr.symm (lp.single 2 i 1)) i)
state_after: no goals
Theorem: Nat.dvd_mul_gcd_iff_dvd_mul
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [mul_comm, dvd_gcd_mul_iff_dvd_mul, mul_comm]
state_before: x n m : ℕ
⊢ x ∣ n * x.gcd m ↔ x ∣ n * m
state_after: no goals
Theorem: Finsupp.single_apply_ne_zero
File: Mathlib/Data/Finsupp/Defs.lean

tactic: simp [single_apply_eq_zero]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
a✝ a' : α
b✝ : M
a x : α
b : M
⊢ (single a b) x ≠ 0 ↔ x = a ∧ b ≠ 0
state_after: no goals
Theorem: ConvexOn.comp_linearMap
File: Mathlib/Analysis/Convex/Function.lean

tactic: rw [g.map_add, g.map_smul, g.map_smul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : OrderedAddCommMonoid α
inst✝³ : OrderedAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 F
inst✝ : SMul 𝕜 β
f : F → β
s : Set F
hf : ConvexOn 𝕜 s f
g : E →ₗ[𝕜] F
x : E
hx : x ∈ ⇑g ⁻¹' s
y : E
hy : y ∈ ⇑g ⁻¹' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ f (g (a • x + b • y)) = f (a • g x + b • g y)
state_after: no goals
Theorem: RingHom.charZero
File: Mathlib/Algebra/CharZero/Lemmas.lean

tactic: rw [← map_natCast ϕ, ← map_natCast ϕ, h]
state_before: R : Type u_1
S : Type u_2
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring S
ϕ : R →+* S
inst✝ : CharZero S
a b : ℕ
h : ↑a = ↑b
⊢ ↑a = ↑b
state_after: no goals
Theorem: nhdsWithin_eq_nhdsWithin
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [nhdsWithin_restrict t h₀ h₁, nhdsWithin_restrict u h₀ h₁, h₂]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s t u : Set α
h₀ : a ∈ s
h₁ : IsOpen s
h₂ : t ∩ s = u ∩ s
⊢ 𝓝[t] a = 𝓝[u] a
state_after: no goals
Theorem: measurable_eq_mp
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: cases h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
i i' : δ
h : i = i'
⊢ Measurable ⋯.mp
state_after: case refl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
i : δ
⊢ Measurable ⋯.mp

tactic: exact measurable_id
state_before: case refl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
i : δ
⊢ Measurable ⋯.mp
state_after: no goals
Theorem: MvPolynomial.totalDegree_zero
File: Mathlib/Algebra/MvPolynomial/Degrees.lean

tactic: rw [← C_0]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ totalDegree 0 = 0
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ (C 0).totalDegree = 0

tactic: exact totalDegree_C (0 : R)
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ (C 0).totalDegree = 0
state_after: no goals
Theorem: Int.toNat_lt'
File: Mathlib/Data/Int/Defs.lean

tactic: rw [← toNat_lt_toNat, toNat_natCast]
state_before: a b c d m n✝ : ℤ
n : ℕ
hn : n ≠ 0
⊢ m.toNat < n ↔ m < ↑n
state_after: a b c d m n✝ : ℤ
n : ℕ
hn : n ≠ 0
⊢ 0 < ↑n

tactic: omega
state_before: a b c d m n✝ : ℤ
n : ℕ
hn : n ≠ 0
⊢ 0 < ↑n
state_after: no goals
Theorem: Finsupp.mem_support_single
File: Mathlib/Data/Finsupp/Defs.lean

tactic: simp [single_apply_eq_zero, not_or]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
a✝ a'✝ : α
b✝ : M
a a' : α
b : M
⊢ a ∈ (single a' b).support ↔ a = a' ∧ b ≠ 0
state_after: no goals
Theorem: Real.Angle.sign_pi_sub
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: simp [sign_antiperiodic.sub_eq']
state_before: θ : Angle
⊢ (↑π - θ).sign = θ.sign
state_after: no goals
Theorem: Filter.rcomap'_rcomap'
File: Mathlib/Order/Filter/Partial.lean

tactic: simp only [mem_rcomap', Rel.preimage_comp]
state_before: α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t : Set α
⊢ t ∈ rcomap' r (rcomap' s l) ↔ t ∈ rcomap' (r.comp s) l
state_after: α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t : Set α
⊢ (∃ t_1, (∃ t ∈ l, s.preimage t ⊆ t_1) ∧ r.preimage t_1 ⊆ t) ↔ ∃ t_1 ∈ l, r.preimage (s.preimage t_1) ⊆ t

tactic: constructor
state_before: α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t : Set α
⊢ (∃ t_1, (∃ t ∈ l, s.preimage t ⊆ t_1) ∧ r.preimage t_1 ⊆ t) ↔ ∃ t_1 ∈ l, r.preimage (s.preimage t_1) ⊆ t
state_after: case mp
α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t : Set α
⊢ (∃ t_1, (∃ t ∈ l, s.preimage t ⊆ t_1) ∧ r.preimage t_1 ⊆ t) → ∃ t_1 ∈ l, r.preimage (s.preimage t_1) ⊆ t

case mpr
α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t : Set α
⊢ (∃ t_1 ∈ l, r.preimage (s.preimage t_1) ⊆ t) → ∃ t_1, (∃ t ∈ l, s.preimage t ⊆ t_1) ∧ r.preimage t_1 ⊆ t

tactic: rintro ⟨t, tsets, ht⟩
state_before: case mpr
α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t : Set α
⊢ (∃ t_1 ∈ l, r.preimage (s.preimage t_1) ⊆ t) → ∃ t_1, (∃ t ∈ l, s.preimage t ⊆ t_1) ∧ r.preimage t_1 ⊆ t
state_after: case mpr.intro.intro
α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t✝ : Set α
t : Set γ
tsets : t ∈ l
ht : r.preimage (s.preimage t) ⊆ t✝
⊢ ∃ t, (∃ t_1 ∈ l, s.preimage t_1 ⊆ t) ∧ r.preimage t ⊆ t✝

tactic: exact ⟨s.preimage t, ⟨t, tsets, Set.Subset.rfl⟩, ht⟩
state_before: case mpr.intro.intro
α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t✝ : Set α
t : Set γ
tsets : t ∈ l
ht : r.preimage (s.preimage t) ⊆ t✝
⊢ ∃ t, (∃ t_1 ∈ l, s.preimage t_1 ⊆ t) ∧ r.preimage t ⊆ t✝
state_after: no goals

tactic: rintro ⟨u, ⟨v, vsets, hv⟩, h⟩
state_before: case mp
α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t : Set α
⊢ (∃ t_1, (∃ t ∈ l, s.preimage t ⊆ t_1) ∧ r.preimage t_1 ⊆ t) → ∃ t_1 ∈ l, r.preimage (s.preimage t_1) ⊆ t
state_after: case mp.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t : Set α
u : Set β
h : r.preimage u ⊆ t
v : Set γ
vsets : v ∈ l
hv : s.preimage v ⊆ u
⊢ ∃ t_1 ∈ l, r.preimage (s.preimage t_1) ⊆ t

tactic: exact ⟨v, vsets, (Rel.preimage_mono _ hv).trans h⟩
state_before: case mp.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
r : Rel α β
s : Rel β γ
l : Filter γ
t : Set α
u : Set β
h : r.preimage u ⊆ t
v : Set γ
vsets : v ∈ l
hv : s.preimage v ⊆ u
⊢ ∃ t_1 ∈ l, r.preimage (s.preimage t_1) ⊆ t
state_after: no goals
Theorem: reflTransGen_wcovBy_eq_reflTransGen_covBy
File: Mathlib/Order/Cover.lean

tactic: rw [wcovBy_eq_reflGen_covBy, reflTransGen_reflGen]
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
⊢ (ReflTransGen fun x x_1 => x ⩿ x_1) = ReflTransGen fun x x_1 => x ⋖ x_1
state_after: no goals
Theorem: Padic.addValuation.apply
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: simp only [Padic.addValuation, AddValuation.of_apply, addValuationDef, if_neg hx]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
hx : x ≠ 0
⊢ addValuation x = ↑x.valuation
state_after: no goals
Theorem: IsCoprime.mul_right
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [isCoprime_comm] at H1 H2 ⊢
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime x y
H2 : IsCoprime x z
⊢ IsCoprime x (y * z)
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime y x
H2 : IsCoprime z x
⊢ IsCoprime (y * z) x

tactic: exact H1.mul_left H2
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H1 : IsCoprime y x
H2 : IsCoprime z x
⊢ IsCoprime (y * z) x
state_after: no goals
Theorem: NNRat.cast_nonpos
File: Mathlib/Data/Rat/Cast/Order.lean

tactic: norm_cast
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
K : Type u_5
inst✝ : LinearOrderedSemifield K
p q : ℚ≥0
⊢ ↑q ≤ 0 ↔ q ≤ 0
state_after: no goals
Theorem: Part.mul_mem_mul
File: Mathlib/Data/Part.lean

tactic: simp only [← ha.2, ← hb.2]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Mul α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ (a * b).get ⋯ = ma * mb
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Mul α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ (a * b).get ⋯ = a.get ⋯ * b.get ⋯

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Mul α
a b : Part α
ma mb : α
ha : ma ∈ a
hb : mb ∈ b
⊢ (a * b).get ⋯ = a.get ⋯ * b.get ⋯
state_after: no goals
Theorem: Cardinal.nat_add_aleph0
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [add_comm, aleph0_add_nat]
state_before: α β : Type u
n : ℕ
⊢ ↑n + ℵ₀ = ℵ₀
state_after: no goals
Theorem: IsSMulRegular.mul_and_mul_iff
File: Mathlib/Algebra/Regular/SMul.lean

tactic: refine ⟨?_, ?_⟩
state_before: R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝⁵ : SMul R M
inst✝⁴ : SMul R S
inst✝³ : SMul S M
inst✝² : IsScalarTower R S M
inst✝¹ : Mul R
inst✝ : IsScalarTower R R M
⊢ IsSMulRegular M (a * b) ∧ IsSMulRegular M (b * a) ↔ IsSMulRegular M a ∧ IsSMulRegular M b
state_after: case refine_1
R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝⁵ : SMul R M
inst✝⁴ : SMul R S
inst✝³ : SMul S M
inst✝² : IsScalarTower R S M
inst✝¹ : Mul R
inst✝ : IsScalarTower R R M
⊢ IsSMulRegular M (a * b) ∧ IsSMulRegular M (b * a) → IsSMulRegular M a ∧ IsSMulRegular M b

case refine_2
R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝⁵ : SMul R M
inst✝⁴ : SMul R S
inst✝³ : SMul S M
inst✝² : IsScalarTower R S M
inst✝¹ : Mul R
inst✝ : IsScalarTower R R M
⊢ IsSMulRegular M a ∧ IsSMulRegular M b → IsSMulRegular M (a * b) ∧ IsSMulRegular M (b * a)

tactic: rintro ⟨ab, ba⟩
state_before: case refine_1
R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝⁵ : SMul R M
inst✝⁴ : SMul R S
inst✝³ : SMul S M
inst✝² : IsScalarTower R S M
inst✝¹ : Mul R
inst✝ : IsScalarTower R R M
⊢ IsSMulRegular M (a * b) ∧ IsSMulRegular M (b * a) → IsSMulRegular M a ∧ IsSMulRegular M b
state_after: case refine_1.intro
R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝⁵ : SMul R M
inst✝⁴ : SMul R S
inst✝³ : SMul S M
inst✝² : IsScalarTower R S M
inst✝¹ : Mul R
inst✝ : IsScalarTower R R M
ab : IsSMulRegular M (a * b)
ba : IsSMulRegular M (b * a)
⊢ IsSMulRegular M a ∧ IsSMulRegular M b

tactic: exact ⟨ba.of_mul, ab.of_mul⟩
state_before: case refine_1.intro
R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝⁵ : SMul R M
inst✝⁴ : SMul R S
inst✝³ : SMul S M
inst✝² : IsScalarTower R S M
inst✝¹ : Mul R
inst✝ : IsScalarTower R R M
ab : IsSMulRegular M (a * b)
ba : IsSMulRegular M (b * a)
⊢ IsSMulRegular M a ∧ IsSMulRegular M b
state_after: no goals

tactic: rintro ⟨ha, hb⟩
state_before: case refine_2
R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝⁵ : SMul R M
inst✝⁴ : SMul R S
inst✝³ : SMul S M
inst✝² : IsScalarTower R S M
inst✝¹ : Mul R
inst✝ : IsScalarTower R R M
⊢ IsSMulRegular M a ∧ IsSMulRegular M b → IsSMulRegular M (a * b) ∧ IsSMulRegular M (b * a)
state_after: case refine_2.intro
R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝⁵ : SMul R M
inst✝⁴ : SMul R S
inst✝³ : SMul S M
inst✝² : IsScalarTower R S M
inst✝¹ : Mul R
inst✝ : IsScalarTower R R M
ha : IsSMulRegular M a
hb : IsSMulRegular M b
⊢ IsSMulRegular M (a * b) ∧ IsSMulRegular M (b * a)

tactic: exact ⟨ha.mul hb, hb.mul ha⟩
state_before: case refine_2.intro
R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝⁵ : SMul R M
inst✝⁴ : SMul R S
inst✝³ : SMul S M
inst✝² : IsScalarTower R S M
inst✝¹ : Mul R
inst✝ : IsScalarTower R R M
ha : IsSMulRegular M a
hb : IsSMulRegular M b
⊢ IsSMulRegular M (a * b) ∧ IsSMulRegular M (b * a)
state_after: no goals