1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Orientation.kahler_swap
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

tactic: have : ∀ r : ℝ, Complex.ofReal' r = @RCLike.ofReal ℂ _ r := fun r => rfl
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ (o.kahler x) y = (starRingEnd ℂ) ((o.kahler y) x)
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
this : ∀ (r : ℝ), ↑r = ↑r
⊢ (o.kahler x) y = (starRingEnd ℂ) ((o.kahler y) x)

tactic: simp only [kahler_apply_apply]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
this : ∀ (r : ℝ), ↑r = ↑r
⊢ (o.kahler x) y = (starRingEnd ℂ) ((o.kahler y) x)
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
this : ∀ (r : ℝ), ↑r = ↑r
⊢ ↑⟪x, y⟫_ℝ + (o.areaForm x) y • Complex.I = (starRingEnd ℂ) (↑⟪y, x⟫_ℝ + (o.areaForm y) x • Complex.I)

tactic: rw [real_inner_comm, areaForm_swap]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
this : ∀ (r : ℝ), ↑r = ↑r
⊢ ↑⟪x, y⟫_ℝ + (o.areaForm x) y • Complex.I = (starRingEnd ℂ) (↑⟪y, x⟫_ℝ + (o.areaForm y) x • Complex.I)
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
this : ∀ (r : ℝ), ↑r = ↑r
⊢ ↑⟪y, x⟫_ℝ + -(o.areaForm y) x • Complex.I = (starRingEnd ℂ) (↑⟪y, x⟫_ℝ + (o.areaForm y) x • Complex.I)

tactic: simp [this]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
this : ∀ (r : ℝ), ↑r = ↑r
⊢ ↑⟪y, x⟫_ℝ + -(o.areaForm y) x • Complex.I = (starRingEnd ℂ) (↑⟪y, x⟫_ℝ + (o.areaForm y) x • Complex.I)
state_after: no goals
Theorem: RatFunc.num_div_dvd
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: rw [num_div _ q, C_mul_dvd]
state_before: K : Type u
inst✝ : Field K
p q : K[X]
hq : q ≠ 0
⊢ ((algebraMap K[X] (RatFunc K)) p / (algebraMap K[X] (RatFunc K)) q).num ∣ p
state_after: K : Type u
inst✝ : Field K
p q : K[X]
hq : q ≠ 0
⊢ p / gcd p q ∣ p

K : Type u
inst✝ : Field K
p q : K[X]
hq : q ≠ 0
⊢ (q / gcd p q).leadingCoeff⁻¹ ≠ 0

tactic: exact EuclideanDomain.div_dvd_of_dvd (gcd_dvd_left p q)
state_before: K : Type u
inst✝ : Field K
p q : K[X]
hq : q ≠ 0
⊢ p / gcd p q ∣ p
state_after: no goals

tactic: simpa only [Ne, inv_eq_zero, Polynomial.leadingCoeff_eq_zero] using right_div_gcd_ne_zero hq
state_before: K : Type u
inst✝ : Field K
p q : K[X]
hq : q ≠ 0
⊢ (q / gcd p q).leadingCoeff⁻¹ ≠ 0
state_after: no goals
Theorem: Filter.eventually_cocardinal_ne
File: Mathlib/Order/Filter/Cocardinal.lean

tactic: simp [Set.finite_singleton x]
state_before: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
x : α
⊢ ∀ᶠ (a : α) in cocardinal α hreg, a ≠ x
state_after: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
x : α
⊢ 1 < c

tactic: exact hreg.nat_lt 1
state_before: ι α β : Type u
c : Cardinal.{u}
hreg : c.IsRegular
l : Filter α
x : α
⊢ 1 < c
state_after: no goals
Theorem: MonotoneOn.ae_differentiableWithinAt
File: Mathlib/Analysis/Calculus/Monotone.lean

tactic: rw [ae_restrict_iff' hs]
state_before: f : ℝ → ℝ
s : Set ℝ
hf : MonotoneOn f s
hs : MeasurableSet s
⊢ ∀ᵐ (x : ℝ) ∂volume.restrict s, DifferentiableWithinAt ℝ f s x
state_after: f : ℝ → ℝ
s : Set ℝ
hf : MonotoneOn f s
hs : MeasurableSet s
⊢ ∀ᵐ (x : ℝ), x ∈ s → DifferentiableWithinAt ℝ f s x

tactic: exact hf.ae_differentiableWithinAt_of_mem
state_before: f : ℝ → ℝ
s : Set ℝ
hf : MonotoneOn f s
hs : MeasurableSet s
⊢ ∀ᵐ (x : ℝ), x ∈ s → DifferentiableWithinAt ℝ f s x
state_after: no goals
Theorem: Real.cos_nat_mul_two_pi_sub_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simpa only [cos_zero] using (cos_periodic.nat_mul n).sub_antiperiod_eq cos_antiperiodic
state_before: n : ℕ
⊢ cos (↑n * (2 * π) - π) = -1
state_after: no goals
Theorem: eq_separableClosure_iff
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: rintro rfl
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
L : IntermediateField F E
⊢ L = separableClosure F E → IsSeparable F ↥L ∧ IsPurelyInseparable (↥L) E
state_after: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
⊢ IsSeparable F ↥(separableClosure F E) ∧ IsPurelyInseparable (↥(separableClosure F E)) E

tactic: exact ⟨isSeparable F E, isPurelyInseparable F E⟩
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
⊢ IsSeparable F ↥(separableClosure F E) ∧ IsPurelyInseparable (↥(separableClosure F E)) E
state_after: no goals
Theorem: Set.eq_of_Ico_disjoint
File: Mathlib/Order/Interval/Set/Disjoint.lean

tactic: rw [Ico_disjoint_Ico, min_eq_left (le_of_lt h2.2), le_max_iff] at h
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
a₁ a₂ b₁ b₂ x₁ x₂ y₁ y₂ : α
h : Disjoint (Ico x₁ x₂) (Ico y₁ y₂)
hx : x₁ < x₂
h2 : x₂ ∈ Ico y₁ y₂
⊢ y₁ = x₂
state_after: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
a₁ a₂ b₁ b₂ x₁ x₂ y₁ y₂ : α
h : x₂ ≤ x₁ ∨ x₂ ≤ y₁
hx : x₁ < x₂
h2 : x₂ ∈ Ico y₁ y₂
⊢ y₁ = x₂

tactic: apply le_antisymm h2.1
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
a₁ a₂ b₁ b₂ x₁ x₂ y₁ y₂ : α
h : x₂ ≤ x₁ ∨ x₂ ≤ y₁
hx : x₁ < x₂
h2 : x₂ ∈ Ico y₁ y₂
⊢ y₁ = x₂
state_after: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
a₁ a₂ b₁ b₂ x₁ x₂ y₁ y₂ : α
h : x₂ ≤ x₁ ∨ x₂ ≤ y₁
hx : x₁ < x₂
h2 : x₂ ∈ Ico y₁ y₂
⊢ x₂ ≤ y₁

tactic: exact h.elim (fun h => absurd hx (not_lt_of_le h)) id
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
a₁ a₂ b₁ b₂ x₁ x₂ y₁ y₂ : α
h : x₂ ≤ x₁ ∨ x₂ ≤ y₁
hx : x₁ < x₂
h2 : x₂ ∈ Ico y₁ y₂
⊢ x₂ ≤ y₁
state_after: no goals
Theorem: Set.indicator_le_indicator_nonneg
File: Mathlib/Algebra/Order/Group/Indicator.lean

tactic: intro a
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
⊢ s.indicator f ≤ {a | 0 ≤ f a}.indicator f
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
⊢ s.indicator f a ≤ {a | 0 ≤ f a}.indicator f a

tactic: classical
simp_rw [indicator_apply]
split_ifs
exacts [le_rfl, (not_le.1 ‹_›).le, ‹_›, le_rfl]
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
⊢ s.indicator f a ≤ {a | 0 ≤ f a}.indicator f a
state_after: no goals

tactic: simp_rw [indicator_apply]
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
⊢ s.indicator f a ≤ {a | 0 ≤ f a}.indicator f a
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
⊢ (if a ∈ s then f a else 0) ≤ if a ∈ {a | 0 ≤ f a} then f a else 0

tactic: split_ifs
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
⊢ (if a ∈ s then f a else 0) ≤ if a ∈ {a | 0 ≤ f a} then f a else 0
state_after: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
h✝¹ : a ∈ s
h✝ : a ∈ {a | 0 ≤ f a}
⊢ f a ≤ f a

case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
h✝¹ : a ∈ s
h✝ : a ∉ {a | 0 ≤ f a}
⊢ f a ≤ 0

case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
h✝¹ : a ∉ s
h✝ : a ∈ {a | 0 ≤ f a}
⊢ 0 ≤ f a

case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
h✝¹ : a ∉ s
h✝ : a ∉ {a | 0 ≤ f a}
⊢ 0 ≤ 0

tactic: exacts [le_rfl, (not_le.1 ‹_›).le, ‹_›, le_rfl]
state_before: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
h✝¹ : a ∈ s
h✝ : a ∈ {a | 0 ≤ f a}
⊢ f a ≤ f a

case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
h✝¹ : a ∈ s
h✝ : a ∉ {a | 0 ≤ f a}
⊢ f a ≤ 0

case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
h✝¹ : a ∉ s
h✝ : a ∈ {a | 0 ≤ f a}
⊢ 0 ≤ f a

case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : Zero M
inst✝ : LinearOrder M
s : Set α
f : α → M
a : α
h✝¹ : a ∉ s
h✝ : a ∉ {a | 0 ≤ f a}
⊢ 0 ≤ 0
state_after: no goals
Theorem: Multiset.cons_inter_distrib
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ u : Multiset α
a✝ b a : α
s t : Multiset α
⊢ a ::ₘ s ∩ t = (a ::ₘ s) ∩ (a ::ₘ t)
state_after: no goals
Theorem: map_eq_top_iff
File: Mathlib/Order/Hom/Bounded.lean

tactic: letI : TopHomClass F α β := OrderIsoClass.toTopHomClass
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁵ : EquivLike F α β
inst✝⁴ : LE α
inst✝³ : OrderTop α
inst✝² : PartialOrder β
inst✝¹ : OrderTop β
inst✝ : OrderIsoClass F α β
f : F
a : α
⊢ f a = ⊤ ↔ a = ⊤
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁵ : EquivLike F α β
inst✝⁴ : LE α
inst✝³ : OrderTop α
inst✝² : PartialOrder β
inst✝¹ : OrderTop β
inst✝ : OrderIsoClass F α β
f : F
a : α
this : TopHomClass F α β := OrderIsoClass.toTopHomClass
⊢ f a = ⊤ ↔ a = ⊤

tactic: rw [← map_top f, (EquivLike.injective f).eq_iff]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁵ : EquivLike F α β
inst✝⁴ : LE α
inst✝³ : OrderTop α
inst✝² : PartialOrder β
inst✝¹ : OrderTop β
inst✝ : OrderIsoClass F α β
f : F
a : α
this : TopHomClass F α β := OrderIsoClass.toTopHomClass
⊢ f a = ⊤ ↔ a = ⊤
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.whiskerLeft_inv_hom
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: rw [← whiskerLeft_comp, inv_hom_id, whiskerLeft_id]
state_before: C : Type u
𝒞 : Category.{v, u} C
inst✝ : MonoidalCategory C
X Y Z : C
f : Y ≅ Z
⊢ X ◁ f.inv ≫ X ◁ f.hom = 𝟙 (X ⊗ Z)
state_after: no goals
Theorem: Matrix.charmatrix_map
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Basic.lean

tactic: ext i j
state_before: R : Type u_1
S : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
m : Type u_3
n : Type u_4
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Fintype m
inst✝ : Fintype n
M₁₁ : Matrix m m R
M₁₂ : Matrix m n R
M₂₁ : Matrix n m R
M₂₂ M✝ : Matrix n n R
i j : n
M : Matrix n n R
f : R →+* S
⊢ (M.map ⇑f).charmatrix = M.charmatrix.map (Polynomial.map f)
state_after: case a.a
R : Type u_1
S : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
m : Type u_3
n : Type u_4
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Fintype m
inst✝ : Fintype n
M₁₁ : Matrix m m R
M₁₂ : Matrix m n R
M₂₁ : Matrix n m R
M₂₂ M✝ : Matrix n n R
i✝ j✝ : n
M : Matrix n n R
f : R →+* S
i j : n
n✝ : ℕ
⊢ ((M.map ⇑f).charmatrix i j).coeff n✝ = (M.charmatrix.map (Polynomial.map f) i j).coeff n✝

tactic: by_cases h : i = j <;> simp [h, charmatrix, diagonal]
state_before: case a.a
R : Type u_1
S : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
m : Type u_3
n : Type u_4
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Fintype m
inst✝ : Fintype n
M₁₁ : Matrix m m R
M₁₂ : Matrix m n R
M₂₁ : Matrix n m R
M₂₂ M✝ : Matrix n n R
i✝ j✝ : n
M : Matrix n n R
f : R →+* S
i j : n
n✝ : ℕ
⊢ ((M.map ⇑f).charmatrix i j).coeff n✝ = (M.charmatrix.map (Polynomial.map f) i j).coeff n✝
state_after: no goals
Theorem: Equiv.Perm.pow_mod_card_support_cycleOf_self_apply
File: Mathlib/GroupTheory/Perm/Cycle/Factors.lean

tactic: by_cases hx : f x = x
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
x✝ y : α
inst✝³ : DecidableRel f✝.SameCycle
inst✝² : DecidableRel g.SameCycle
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f : Perm α
n : ℕ
x : α
⊢ (f ^ (n % (f.cycleOf x).support.card)) x = (f ^ n) x
state_after: case pos
ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
x✝ y : α
inst✝³ : DecidableRel f✝.SameCycle
inst✝² : DecidableRel g.SameCycle
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f : Perm α
n : ℕ
x : α
hx : f x = x
⊢ (f ^ (n % (f.cycleOf x).support.card)) x = (f ^ n) x

case neg
ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
x✝ y : α
inst✝³ : DecidableRel f✝.SameCycle
inst✝² : DecidableRel g.SameCycle
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f : Perm α
n : ℕ
x : α
hx : ¬f x = x
⊢ (f ^ (n % (f.cycleOf x).support.card)) x = (f ^ n) x

tactic: rw [pow_apply_eq_self_of_apply_eq_self hx, pow_apply_eq_self_of_apply_eq_self hx]
state_before: case pos
ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
x✝ y : α
inst✝³ : DecidableRel f✝.SameCycle
inst✝² : DecidableRel g.SameCycle
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f : Perm α
n : ℕ
x : α
hx : f x = x
⊢ (f ^ (n % (f.cycleOf x).support.card)) x = (f ^ n) x
state_after: no goals

tactic: rw [← cycleOf_pow_apply_self, ← cycleOf_pow_apply_self f, ← (isCycle_cycleOf f hx).orderOf,
  pow_mod_orderOf]
state_before: case neg
ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
x✝ y : α
inst✝³ : DecidableRel f✝.SameCycle
inst✝² : DecidableRel g.SameCycle
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f : Perm α
n : ℕ
x : α
hx : ¬f x = x
⊢ (f ^ (n % (f.cycleOf x).support.card)) x = (f ^ n) x
state_after: no goals
Theorem: continuous_discrete_rng
File: Mathlib/Topology/Order.lean

tactic: rw [← biUnion_of_singleton s, preimage_iUnion₂]
state_before: α : Type u_1
t t₁ t₂ : TopologicalSpace α
s✝ : Set α
inst✝³ : TopologicalSpace α
inst✝² : DiscreteTopology α
β : Type u_2
inst✝¹ : TopologicalSpace β
inst✝ : DiscreteTopology β
f : α → β
h : ∀ (b : β), IsOpen (f ⁻¹' {b})
s : Set β
x✝ : IsOpen s
⊢ IsOpen (f ⁻¹' s)
state_after: α : Type u_1
t t₁ t₂ : TopologicalSpace α
s✝ : Set α
inst✝³ : TopologicalSpace α
inst✝² : DiscreteTopology α
β : Type u_2
inst✝¹ : TopologicalSpace β
inst✝ : DiscreteTopology β
f : α → β
h : ∀ (b : β), IsOpen (f ⁻¹' {b})
s : Set β
x✝ : IsOpen s
⊢ IsOpen (⋃ i ∈ s, f ⁻¹' {i})

tactic: exact isOpen_biUnion fun _ _ => h _
state_before: α : Type u_1
t t₁ t₂ : TopologicalSpace α
s✝ : Set α
inst✝³ : TopologicalSpace α
inst✝² : DiscreteTopology α
β : Type u_2
inst✝¹ : TopologicalSpace β
inst✝ : DiscreteTopology β
f : α → β
h : ∀ (b : β), IsOpen (f ⁻¹' {b})
s : Set β
x✝ : IsOpen s
⊢ IsOpen (⋃ i ∈ s, f ⁻¹' {i})
state_after: no goals
Theorem: norm_div_pos_iff
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [(norm_nonneg' _).lt_iff_ne, ne_comm]
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✝¹ : NormedGroup E
inst✝ : NormedGroup F
a b : E
⊢ 0 < ‖a / b‖ ↔ a ≠ b
state_after: 𝓕 : 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✝¹ : NormedGroup E
inst✝ : NormedGroup F
a b : E
⊢ ‖a / b‖ ≠ 0 ↔ a ≠ b

tactic: exact norm_div_eq_zero_iff.not
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✝¹ : NormedGroup E
inst✝ : NormedGroup F
a b : E
⊢ ‖a / b‖ ≠ 0 ↔ a ≠ b
state_after: no goals
Theorem: Nat.prod_properDivisors_prime_pow
File: Mathlib/NumberTheory/Divisors.lean

tactic: simp [h, properDivisors_prime_pow]
state_before: n : ℕ
α : Type u_1
inst✝ : CommMonoid α
k p : ℕ
f : ℕ → α
h : Prime p
⊢ ∏ x ∈ (p ^ k).properDivisors, f x = ∏ x ∈ range k, f (p ^ x)
state_after: no goals
Theorem: MvPolynomial.rename_expand
File: Mathlib/Algebra/MvPolynomial/Expand.lean

tactic: simp [expand, bind₁_rename, rename_bind₁, Function.comp]
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
p : ℕ
φ : MvPolynomial σ R
⊢ (rename f) ((expand p) φ) = (expand p) ((rename f) φ)
state_after: no goals
Theorem: Module.End.HasEigenvalue.isNilpotent_of_isNilpotent
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

tactic: obtain ⟨m : M, hm⟩ := hf.exists_hasEigenvector
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
hfn : IsNilpotent f
μ : R
hf : f.HasEigenvalue μ
⊢ IsNilpotent μ
state_after: case intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
hfn : IsNilpotent f
μ : R
hf : f.HasEigenvalue μ
m : M
hm : f.HasEigenvector μ m
⊢ IsNilpotent μ

tactic: obtain ⟨n : ℕ, hn : f ^ n = 0⟩ := hfn
state_before: case intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
hfn : IsNilpotent f
μ : R
hf : f.HasEigenvalue μ
m : M
hm : f.HasEigenvector μ m
⊢ IsNilpotent μ
state_after: case intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ : R
hf : f.HasEigenvalue μ
m : M
hm : f.HasEigenvector μ m
n : ℕ
hn : f ^ n = 0
⊢ IsNilpotent μ

tactic: exact ⟨n, by simpa [hn, hm.2, eq_comm (a := (0 : M))] using hm.pow_apply n⟩
state_before: case intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ : R
hf : f.HasEigenvalue μ
m : M
hm : f.HasEigenvector μ m
n : ℕ
hn : f ^ n = 0
⊢ IsNilpotent μ
state_after: no goals

tactic: simpa [hn, hm.2, eq_comm (a := (0 : M))] using hm.pow_apply n
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ : R
hf : f.HasEigenvalue μ
m : M
hm : f.HasEigenvector μ m
n : ℕ
hn : f ^ n = 0
⊢ μ ^ n = 0
state_after: no goals
Theorem: sbtw_const_vsub_iff
File: Mathlib/Analysis/Convex/Between.lean

tactic: rw [Sbtw, Sbtw, wbtw_const_vsub_iff, (vsub_right_injective p).ne_iff,
  (vsub_right_injective p).ne_iff]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z p : P
⊢ Sbtw R (p -ᵥ x) (p -ᵥ y) (p -ᵥ z) ↔ Sbtw R x y z
state_after: no goals
Theorem: CategoryTheory.isSeparator_unop_iff
File: Mathlib/CategoryTheory/Generator.lean

tactic: rw [IsSeparator, IsCoseparator, ← isSeparating_unop_iff, Set.singleton_unop]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
G : Cᵒᵖ
⊢ IsSeparator G.unop ↔ IsCoseparator G
state_after: no goals
Theorem: TopologicalSpace.IsTopologicalBasis.continuous_iff
File: Mathlib/Topology/Bases.lean

tactic: rw [hB.eq_generateFrom, continuous_generateFrom_iff]
state_before: α : Type u
β✝ : Type u_1
t : TopologicalSpace α
B✝ : Set (Set α)
s : Set α
β : Type u_2
inst✝ : TopologicalSpace β
B : Set (Set β)
hB : IsTopologicalBasis B
f : α → β
⊢ Continuous f ↔ ∀ s ∈ B, IsOpen (f ⁻¹' s)
state_after: no goals
Theorem: MonoidHom.mclosure_range
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

tactic: rw [← Set.image_univ, ← map_mclosure, mrange_eq_map, closure_univ]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝⁴ : MulOneClass M
inst✝³ : MulOneClass N
inst✝² : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝¹ : SetLike A M
hA : SubmonoidClass A M
S' : A
F : Type u_5
inst✝ : FunLike F M N
mc : MonoidHomClass F M N
f : F
⊢ closure (Set.range ⇑f) = mrange f
state_after: no goals
Theorem: Int.cast_mono
File: Mathlib/Algebra/Order/Ring/Cast.lean

tactic: intro m n h
state_before: R : Type u_1
inst✝ : OrderedRing R
⊢ Monotone Int.cast
state_after: R : Type u_1
inst✝ : OrderedRing R
m n : ℤ
h : m ≤ n
⊢ ↑m ≤ ↑n

tactic: rw [← sub_nonneg] at h
state_before: R : Type u_1
inst✝ : OrderedRing R
m n : ℤ
h : m ≤ n
⊢ ↑m ≤ ↑n
state_after: R : Type u_1
inst✝ : OrderedRing R
m n : ℤ
h : 0 ≤ n - m
⊢ ↑m ≤ ↑n

tactic: lift n - m to ℕ using h with k hk
state_before: R : Type u_1
inst✝ : OrderedRing R
m n : ℤ
h : 0 ≤ n - m
⊢ ↑m ≤ ↑n
state_after: case intro
R : Type u_1
inst✝ : OrderedRing R
m n : ℤ
k : ℕ
hk : ↑k = n - m
⊢ ↑m ≤ ↑n

tactic: rw [← sub_nonneg, ← cast_sub, ← hk, cast_natCast]
state_before: case intro
R : Type u_1
inst✝ : OrderedRing R
m n : ℤ
k : ℕ
hk : ↑k = n - m
⊢ ↑m ≤ ↑n
state_after: case intro
R : Type u_1
inst✝ : OrderedRing R
m n : ℤ
k : ℕ
hk : ↑k = n - m
⊢ 0 ≤ ↑k

tactic: exact k.cast_nonneg
state_before: case intro
R : Type u_1
inst✝ : OrderedRing R
m n : ℤ
k : ℕ
hk : ↑k = n - m
⊢ 0 ≤ ↑k
state_after: no goals
Theorem: UniformGroup.mk'
File: Mathlib/Topology/Algebra/UniformGroup.lean

tactic: simpa only [div_eq_mul_inv] using
h₁.comp (uniformContinuous_fst.prod_mk (h₂.comp uniformContinuous_snd))
state_before: α✝ : Type u_1
β : Type u_2
α : Type u_3
inst✝¹ : UniformSpace α
inst✝ : Group α
h₁ : UniformContinuous fun p => p.1 * p.2
h₂ : UniformContinuous fun p => p⁻¹
⊢ UniformContinuous fun p => p.1 / p.2
state_after: no goals