1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: UFModel.Agrees.mk'
File: Mathlib/Data/UnionFind.lean

tactic: cases e
state_before: α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
n : ℕ
g : Fin n → β
e : n = arr.size
H : ∀ (i : ℕ) (h₁ : i < arr.size) (h₂ : i < n), f (arr.get ⟨i, h₁⟩) = g ⟨i, h₂⟩
⊢ Agrees arr f g
state_after: case refl
α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
g : Fin arr.size → β
H : ∀ (i : ℕ) (h₁ h₂ : i < arr.size), f (arr.get ⟨i, h₁⟩) = g ⟨i, h₂⟩
⊢ Agrees arr f g

tactic: have : (fun i ↦ f (arr.get i)) = g := by funext ⟨i, h⟩; apply H
state_before: case refl
α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
g : Fin arr.size → β
H : ∀ (i : ℕ) (h₁ h₂ : i < arr.size), f (arr.get ⟨i, h₁⟩) = g ⟨i, h₂⟩
⊢ Agrees arr f g
state_after: case refl
α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
g : Fin arr.size → β
H : ∀ (i : ℕ) (h₁ h₂ : i < arr.size), f (arr.get ⟨i, h₁⟩) = g ⟨i, h₂⟩
this : (fun i => f (arr.get i)) = g
⊢ Agrees arr f g

tactic: cases this
state_before: case refl
α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
g : Fin arr.size → β
H : ∀ (i : ℕ) (h₁ h₂ : i < arr.size), f (arr.get ⟨i, h₁⟩) = g ⟨i, h₂⟩
this : (fun i => f (arr.get i)) = g
⊢ Agrees arr f g
state_after: case refl.refl
α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
H : ∀ (i : ℕ) (h₁ h₂ : i < arr.size), f (arr.get ⟨i, h₁⟩) = (fun i => f (arr.get i)) ⟨i, h₂⟩
⊢ Agrees arr f fun i => f (arr.get i)

tactic: constructor
state_before: case refl.refl
α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
H : ∀ (i : ℕ) (h₁ h₂ : i < arr.size), f (arr.get ⟨i, h₁⟩) = (fun i => f (arr.get i)) ⟨i, h₂⟩
⊢ Agrees arr f fun i => f (arr.get i)
state_after: no goals

tactic: funext ⟨i, h⟩
state_before: α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
g : Fin arr.size → β
H : ∀ (i : ℕ) (h₁ h₂ : i < arr.size), f (arr.get ⟨i, h₁⟩) = g ⟨i, h₂⟩
⊢ (fun i => f (arr.get i)) = g
state_after: case h
α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
g : Fin arr.size → β
H : ∀ (i : ℕ) (h₁ h₂ : i < arr.size), f (arr.get ⟨i, h₁⟩) = g ⟨i, h₂⟩
i : ℕ
h : i < arr.size
⊢ f (arr.get ⟨i, h⟩) = g ⟨i, h⟩

tactic: apply H
state_before: case h
α : Type u_1
β : Sort u_2
arr : Array α
f : α → β
g : Fin arr.size → β
H : ∀ (i : ℕ) (h₁ h₂ : i < arr.size), f (arr.get ⟨i, h₁⟩) = g ⟨i, h₂⟩
i : ℕ
h : i < arr.size
⊢ f (arr.get ⟨i, h⟩) = g ⟨i, h⟩
state_after: no goals
Theorem: RingHom.charP
File: Mathlib/Algebra/CharP/Algebra.lean

tactic: obtain ⟨q, h⟩ := CharP.exists R
state_before: R : Type u_1
A : Type u_2
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring A
f : R →+* A
H : Function.Injective ⇑f
p : ℕ
inst✝ : CharP A p
⊢ CharP R p
state_after: case intro
R : Type u_1
A : Type u_2
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring A
f : R →+* A
H : Function.Injective ⇑f
p : ℕ
inst✝ : CharP A p
q : ℕ
h : CharP R q
⊢ CharP R p

tactic: exact CharP.eq _ (charP_of_injective_ringHom H q) ‹CharP A p› ▸ h
state_before: case intro
R : Type u_1
A : Type u_2
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring A
f : R →+* A
H : Function.Injective ⇑f
p : ℕ
inst✝ : CharP A p
q : ℕ
h : CharP R q
⊢ CharP R p
state_after: no goals
Theorem: Polynomial.aeval_algebraMap_eq_zero_iff_of_injective
File: Mathlib/RingTheory/Polynomial/Tower.lean

tactic: rw [aeval_algebraMap_apply, ← (algebraMap A B).map_zero, h.eq_iff]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring A
inst✝⁴ : Semiring B
inst✝³ : Algebra R A
inst✝² : Algebra A B
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R A B
x : A
p : R[X]
h : Function.Injective ⇑(algebraMap A B)
⊢ (aeval ((algebraMap A B) x)) p = 0 ↔ (aeval x) p = 0
state_after: no goals
Theorem: PowerSeries.coeff_monomial
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: simp only [Finsupp.unique_single_eq_iff]
state_before: R : Type u_1
inst✝ : Semiring R
m n : ℕ
a : R
⊢ (if single () m = single () n then a else 0) = if m = n then a else 0
state_after: no goals
Theorem: Monotone.ne_of_lt_of_lt_int
File: Mathlib/Order/Monotone/Basic.lean

tactic: rintro rfl
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
δ : Type u_2
π : ι → Type u_3
r : α → α → Prop
inst✝ : Preorder α
f : ℤ → α
hf : Monotone f
n : ℤ
x : α
h1 : f n < x
h2 : x < f (n + 1)
a : ℤ
⊢ f a ≠ x
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
δ : Type u_2
π : ι → Type u_3
r : α → α → Prop
inst✝ : Preorder α
f : ℤ → α
hf : Monotone f
n a : ℤ
h1 : f n < f a
h2 : f a < f (n + 1)
⊢ False

tactic: exact (hf.reflect_lt h1).not_le (Int.le_of_lt_add_one <| hf.reflect_lt h2)
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
δ : Type u_2
π : ι → Type u_3
r : α → α → Prop
inst✝ : Preorder α
f : ℤ → α
hf : Monotone f
n a : ℤ
h1 : f n < f a
h2 : f a < f (n + 1)
⊢ False
state_after: no goals
Theorem: FdRep.char_one
File: Mathlib/RepresentationTheory/Character.lean

tactic: simp only [character, map_one, trace_one]
state_before: k : Type u
inst✝¹ : Field k
G : Type u
inst✝ : Monoid G
V : FdRep k G
⊢ V.character 1 = ↑(finrank k (CoeSort.coe V))
state_after: no goals
Theorem: div_sub'
File: Mathlib/Algebra/Field/Basic.lean

tactic: simpa using div_sub_div a b hc one_ne_zero
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝ : Field K
a b c : K
hc : c ≠ 0
⊢ a / c - b = (a - c * b) / c
state_after: no goals
Theorem: compRel_assoc
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: ext ⟨a, b⟩
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
r s t : Set (α × α)
⊢ r ○ s ○ t = r ○ (s ○ t)
state_after: case h.mk
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
r s t : Set (α × α)
a b : α
⊢ (a, b) ∈ r ○ s ○ t ↔ (a, b) ∈ r ○ (s ○ t)

tactic: simp only [mem_compRel]
state_before: case h.mk
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
r s t : Set (α × α)
a b : α
⊢ (a, b) ∈ r ○ s ○ t ↔ (a, b) ∈ r ○ (s ○ t)
state_after: case h.mk
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
r s t : Set (α × α)
a b : α
⊢ (∃ z, (∃ z_1, (a, z_1) ∈ r ∧ (z_1, z) ∈ s) ∧ (z, b) ∈ t) ↔ ∃ z, (a, z) ∈ r ∧ ∃ z_1, (z, z_1) ∈ s ∧ (z_1, b) ∈ t

tactic: tauto
state_before: case h.mk
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
r s t : Set (α × α)
a b : α
⊢ (∃ z, (∃ z_1, (a, z_1) ∈ r ∧ (z_1, z) ∈ s) ∧ (z, b) ∈ t) ↔ ∃ z, (a, z) ∈ r ∧ ∃ z_1, (z, z_1) ∈ s ∧ (z_1, b) ∈ t
state_after: no goals
Theorem: MeasureTheory.SignedMeasure.toMeasureOfZeroLE_toSignedMeasure
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: ext i hi
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s : SignedMeasure α
i j : Set α
hs : VectorMeasure.restrict 0 univ ≤ VectorMeasure.restrict s univ
⊢ (s.toMeasureOfZeroLE univ ⋯ hs).toSignedMeasure = s
state_after: case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
s : SignedMeasure α
i✝ j : Set α
hs : VectorMeasure.restrict 0 univ ≤ VectorMeasure.restrict s univ
i : Set α
hi : MeasurableSet i
⊢ ↑(s.toMeasureOfZeroLE univ ⋯ hs).toSignedMeasure i = ↑s i

tactic: simp [hi, toMeasureOfZeroLE_apply _ _ _ hi]
state_before: case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
s : SignedMeasure α
i✝ j : Set α
hs : VectorMeasure.restrict 0 univ ≤ VectorMeasure.restrict s univ
i : Set α
hi : MeasurableSet i
⊢ ↑(s.toMeasureOfZeroLE univ ⋯ hs).toSignedMeasure i = ↑s i
state_after: no goals
Theorem: MvPowerSeries.mul_add
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

tactic: classical simp only [coeff_mul, mul_add, Finset.sum_add_distrib, LinearMap.map_add]
state_before: σ : Type u_1
R : Type u_2
inst✝ : Semiring R
m n✝ : σ →₀ ℕ
φ ψ φ₁ φ₂ φ₃ : MvPowerSeries σ R
n : σ →₀ ℕ
⊢ (coeff R n) (φ₁ * (φ₂ + φ₃)) = (coeff R n) (φ₁ * φ₂ + φ₁ * φ₃)
state_after: no goals

tactic: simp only [coeff_mul, mul_add, Finset.sum_add_distrib, LinearMap.map_add]
state_before: σ : Type u_1
R : Type u_2
inst✝ : Semiring R
m n✝ : σ →₀ ℕ
φ ψ φ₁ φ₂ φ₃ : MvPowerSeries σ R
n : σ →₀ ℕ
⊢ (coeff R n) (φ₁ * (φ₂ + φ₃)) = (coeff R n) (φ₁ * φ₂ + φ₁ * φ₃)
state_after: no goals
Theorem: Complex.frontier_reProdIm
File: Mathlib/Analysis/Complex/ReImTopology.lean

tactic: simpa only [← preimage_eq_preimage equivRealProdCLM.symm.toHomeomorph.surjective,
  equivRealProdCLM.symm.toHomeomorph.preimage_frontier] using frontier_prod_eq s t
state_before: s t : Set ℝ
⊢ frontier (s ×ℂ t) = closure s ×ℂ frontier t ∪ frontier s ×ℂ closure t
state_after: no goals
Theorem: Function.Periodic.nat_mul_sub_eq
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [sub_eq_neg_add] using h.nat_mul n (-x)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝ : Ring α
h : Periodic f c
n : ℕ
⊢ f (↑n * c - x) = f (-x)
state_after: no goals
Theorem: IsOfFinOrder.eq_neg_one
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: rintro rfl
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LinearOrderedRing G
a x : G
ha₀ : a ≤ 0
ha : IsOfFinOrder a
⊢ ¬a = 1
state_after: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LinearOrderedRing G
x : G
ha₀ : 1 ≤ 0
ha : IsOfFinOrder 1
⊢ False

tactic: exact one_pos.not_le ha₀
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LinearOrderedRing G
x : G
ha₀ : 1 ≤ 0
ha : IsOfFinOrder 1
⊢ False
state_after: no goals
Theorem: Int.not_odd_iff
File: Mathlib/Algebra/Ring/Int.lean

tactic: rw [odd_iff, emod_two_ne_one]
state_before: m n : ℤ
⊢ ¬Odd n ↔ n % 2 = 0
state_after: no goals
Theorem: Finite.card_eq_zero_iff
File: Mathlib/Data/Finite/Card.lean

tactic: haveI := Fintype.ofFinite α
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
⊢ Nat.card α = 0 ↔ IsEmpty α
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
this : Fintype α
⊢ Nat.card α = 0 ↔ IsEmpty α

tactic: simp only [Nat.card_eq_fintype_card, Fintype.card_eq_zero_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
this : Fintype α
⊢ Nat.card α = 0 ↔ IsEmpty α
state_after: no goals
Theorem: CategoryTheory.ShortComplex.RightHomologyData.map_rightHomologyMap'
File: Mathlib/Algebra/Homology/ShortComplex/PreservesHomology.lean

tactic: have γ : ShortComplex.RightHomologyMapData φ hr₁ hr₂ := default
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_4, u_1} C
inst✝⁶ : Category.{u_3, u_2} D
inst✝⁵ : HasZeroMorphisms C
inst✝⁴ : HasZeroMorphisms D
S : ShortComplex C
h₁✝ : S.LeftHomologyData
h₂✝ : S.RightHomologyData
F✝ : C ⥤ D
inst✝³ : F✝.PreservesZeroMorphisms
hl : S.LeftHomologyData
hr : S.RightHomologyData
S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
hl₁ : S₁.LeftHomologyData
hr₁ : S₁.RightHomologyData
hl₂ : S₂.LeftHomologyData
hr₂ : S₂.RightHomologyData
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : hr₁.IsPreservedBy F
inst✝ : hr₂.IsPreservedBy F
⊢ F.map (rightHomologyMap' φ hr₁ hr₂) = rightHomologyMap' (F.mapShortComplex.map φ) (hr₁.map F) (hr₂.map F)
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_4, u_1} C
inst✝⁶ : Category.{u_3, u_2} D
inst✝⁵ : HasZeroMorphisms C
inst✝⁴ : HasZeroMorphisms D
S : ShortComplex C
h₁✝ : S.LeftHomologyData
h₂✝ : S.RightHomologyData
F✝ : C ⥤ D
inst✝³ : F✝.PreservesZeroMorphisms
hl : S.LeftHomologyData
hr : S.RightHomologyData
S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
hl₁ : S₁.LeftHomologyData
hr₁ : S₁.RightHomologyData
hl₂ : S₂.LeftHomologyData
hr₂ : S₂.RightHomologyData
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : hr₁.IsPreservedBy F
inst✝ : hr₂.IsPreservedBy F
γ : RightHomologyMapData φ hr₁ hr₂
⊢ F.map (rightHomologyMap' φ hr₁ hr₂) = rightHomologyMap' (F.mapShortComplex.map φ) (hr₁.map F) (hr₂.map F)

tactic: rw [γ.rightHomologyMap'_eq, (γ.map F).rightHomologyMap'_eq,
  ShortComplex.RightHomologyMapData.map_φH]
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_4, u_1} C
inst✝⁶ : Category.{u_3, u_2} D
inst✝⁵ : HasZeroMorphisms C
inst✝⁴ : HasZeroMorphisms D
S : ShortComplex C
h₁✝ : S.LeftHomologyData
h₂✝ : S.RightHomologyData
F✝ : C ⥤ D
inst✝³ : F✝.PreservesZeroMorphisms
hl : S.LeftHomologyData
hr : S.RightHomologyData
S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
hl₁ : S₁.LeftHomologyData
hr₁ : S₁.RightHomologyData
hl₂ : S₂.LeftHomologyData
hr₂ : S₂.RightHomologyData
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : hr₁.IsPreservedBy F
inst✝ : hr₂.IsPreservedBy F
γ : RightHomologyMapData φ hr₁ hr₂
⊢ F.map (rightHomologyMap' φ hr₁ hr₂) = rightHomologyMap' (F.mapShortComplex.map φ) (hr₁.map F) (hr₂.map F)
state_after: no goals
Theorem: isClosed_setOf_lipschitzWith
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp only [← lipschitzOn_univ, isClosed_setOf_lipschitzOnWith]
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
⊢ IsClosed {f | LipschitzWith K f}
state_after: no goals
Theorem: MeasureTheory.indicatorConstLp_inj
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: rw [h]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s✝ : Set α
hs✝ : MeasurableSet s✝
hμs : μ s✝ ≠ ⊤
c✝ : E
s t : Set α
hs : MeasurableSet s
hsμ : μ s ≠ ⊤
ht : MeasurableSet t
htμ : μ t ≠ ⊤
c : E
hc : c ≠ 0
h : indicatorConstLp p hs hsμ c = indicatorConstLp p ht htμ c
⊢ ↑↑(indicatorConstLp p hs hsμ c) = ↑↑(indicatorConstLp p ht htμ c)
state_after: no goals
Theorem: Rack.ad_conj
File: Mathlib/Algebra/Quandle.lean

tactic: rw [eq_mul_inv_iff_mul_eq]
state_before: R✝ : Type u_1
inst✝¹ : Rack R✝
R : Type u_2
inst✝ : Rack R
x y : R
⊢ act' (x ◃ y) = act' x * act' y * (act' x)⁻¹
state_after: R✝ : Type u_1
inst✝¹ : Rack R✝
R : Type u_2
inst✝ : Rack R
x y : R
⊢ act' (x ◃ y) * act' x = act' x * act' y

tactic: ext z
state_before: R✝ : Type u_1
inst✝¹ : Rack R✝
R : Type u_2
inst✝ : Rack R
x y : R
⊢ act' (x ◃ y) * act' x = act' x * act' y
state_after: case H
R✝ : Type u_1
inst✝¹ : Rack R✝
R : Type u_2
inst✝ : Rack R
x y z : R
⊢ (act' (x ◃ y) * act' x) z = (act' x * act' y) z

tactic: apply self_distrib.symm
state_before: case H
R✝ : Type u_1
inst✝¹ : Rack R✝
R : Type u_2
inst✝ : Rack R
x y z : R
⊢ (act' (x ◃ y) * act' x) z = (act' x * act' y) z
state_after: no goals
Theorem: DihedralGroup.orderOf_r_one
File: Mathlib/GroupTheory/SpecificGroups/Dihedral.lean

tactic: rcases eq_zero_or_neZero n with (rfl | hn)
state_before: n : ℕ
⊢ orderOf (r 1) = n
state_after: case inl

⊢ orderOf (r 1) = 0

case inr
n : ℕ
hn : NeZero n
⊢ orderOf (r 1) = n

tactic: rw [orderOf_eq_zero_iff']
state_before: case inl

⊢ orderOf (r 1) = 0
state_after: case inl

⊢ ∀ (n : ℕ), 0 < n → r 1 ^ n ≠ 1

tactic: intro n hn
state_before: case inl

⊢ ∀ (n : ℕ), 0 < n → r 1 ^ n ≠ 1
state_after: case inl
n : ℕ
hn : 0 < n
⊢ r 1 ^ n ≠ 1

tactic: rw [r_one_pow, one_def]
state_before: case inl
n : ℕ
hn : 0 < n
⊢ r 1 ^ n ≠ 1
state_after: case inl
n : ℕ
hn : 0 < n
⊢ r ↑n ≠ r 0

tactic: apply mt r.inj
state_before: case inl
n : ℕ
hn : 0 < n
⊢ r ↑n ≠ r 0
state_after: case inl
n : ℕ
hn : 0 < n
⊢ ¬↑n = 0

tactic: simpa using hn.ne'
state_before: case inl
n : ℕ
hn : 0 < n
⊢ ¬↑n = 0
state_after: no goals

tactic: apply (Nat.le_of_dvd (NeZero.pos n) <|
  orderOf_dvd_of_pow_eq_one <| @r_one_pow_n n).lt_or_eq.resolve_left
state_before: case inr
n : ℕ
hn : NeZero n
⊢ orderOf (r 1) = n
state_after: case inr
n : ℕ
hn : NeZero n
⊢ ¬orderOf (r 1) < n

tactic: intro h
state_before: case inr
n : ℕ
hn : NeZero n
⊢ ¬orderOf (r 1) < n
state_after: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
⊢ False

tactic: have h1 : (r 1 : DihedralGroup n) ^ orderOf (r 1) = 1 := pow_orderOf_eq_one _
state_before: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
⊢ False
state_after: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
h1 : r 1 ^ orderOf (r 1) = 1
⊢ False

tactic: rw [r_one_pow] at h1
state_before: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
h1 : r 1 ^ orderOf (r 1) = 1
⊢ False
state_after: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
h1 : r ↑(orderOf (r 1)) = 1
⊢ False

tactic: injection h1 with h2
state_before: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
h1 : r ↑(orderOf (r 1)) = 1
⊢ False
state_after: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
h2 : ↑(orderOf (r 1)) = 0
⊢ False

tactic: rw [← ZMod.val_eq_zero, ZMod.val_natCast, Nat.mod_eq_of_lt h] at h2
state_before: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
h2 : ↑(orderOf (r 1)) = 0
⊢ False
state_after: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
h2 : orderOf (r 1) = 0
⊢ False

tactic: exact absurd h2.symm (orderOf_pos _).ne
state_before: case inr
n : ℕ
hn : NeZero n
h : orderOf (r 1) < n
h2 : orderOf (r 1) = 0
⊢ False
state_after: no goals
Theorem: Submodule.fg_restrictScalars
File: Mathlib/RingTheory/Finiteness.lean

tactic: obtain ⟨X, rfl⟩ := hfin
state_before: R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P : Type u_3
inst✝⁸ : AddCommMonoid P
inst✝⁷ : Module R✝ P
f : M✝ →ₗ[R✝] P
R : Type u_4
S : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring S
inst✝⁴ : Algebra R S
inst✝³ : AddCommGroup M
inst✝² : Module S M
inst✝¹ : Module R M
inst✝ : IsScalarTower R S M
N : Submodule S M
hfin : N.FG
h : Surjective ⇑(algebraMap R S)
⊢ (restrictScalars R N).FG
state_after: case intro
R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P : Type u_3
inst✝⁸ : AddCommMonoid P
inst✝⁷ : Module R✝ P
f : M✝ →ₗ[R✝] P
R : Type u_4
S : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring S
inst✝⁴ : Algebra R S
inst✝³ : AddCommGroup M
inst✝² : Module S M
inst✝¹ : Module R M
inst✝ : IsScalarTower R S M
h : Surjective ⇑(algebraMap R S)
X : Finset M
⊢ (restrictScalars R (span S ↑X)).FG

tactic: use X
state_before: case intro
R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P : Type u_3
inst✝⁸ : AddCommMonoid P
inst✝⁷ : Module R✝ P
f : M✝ →ₗ[R✝] P
R : Type u_4
S : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring S
inst✝⁴ : Algebra R S
inst✝³ : AddCommGroup M
inst✝² : Module S M
inst✝¹ : Module R M
inst✝ : IsScalarTower R S M
h : Surjective ⇑(algebraMap R S)
X : Finset M
⊢ (restrictScalars R (span S ↑X)).FG
state_after: case h
R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P : Type u_3
inst✝⁸ : AddCommMonoid P
inst✝⁷ : Module R✝ P
f : M✝ →ₗ[R✝] P
R : Type u_4
S : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring S
inst✝⁴ : Algebra R S
inst✝³ : AddCommGroup M
inst✝² : Module S M
inst✝¹ : Module R M
inst✝ : IsScalarTower R S M
h : Surjective ⇑(algebraMap R S)
X : Finset M
⊢ span R ↑X = restrictScalars R (span S ↑X)

tactic: exact (Submodule.restrictScalars_span R S h (X : Set M)).symm
state_before: case h
R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P : Type u_3
inst✝⁸ : AddCommMonoid P
inst✝⁷ : Module R✝ P
f : M✝ →ₗ[R✝] P
R : Type u_4
S : Type u_5
M : Type u_6
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring S
inst✝⁴ : Algebra R S
inst✝³ : AddCommGroup M
inst✝² : Module S M
inst✝¹ : Module R M
inst✝ : IsScalarTower R S M
h : Surjective ⇑(algebraMap R S)
X : Finset M
⊢ span R ↑X = restrictScalars R (span S ↑X)
state_after: no goals
Theorem: one_div_lt_neg_one
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rwa [one_div_neg_one_eq_neg_one] at this
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
h1 : a < 0
h2 : -1 < a
this : 1 / a < 1 / -1
⊢ 1 / a < -1
state_after: no goals
Theorem: CategoryTheory.Subobject.factors_of_le
File: Mathlib/CategoryTheory/Subobject/FactorThru.lean

tactic: simp only [factors_iff]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
Y Z : C
P Q : Subobject Y
f : Z ⟶ Y
h : P ≤ Q
⊢ P.Factors f → Q.Factors f
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
Y Z : C
P Q : Subobject Y
f : Z ⟶ Y
h : P ≤ Q
⊢ (representative.obj P).Factors f → (representative.obj Q).Factors f

tactic: exact fun ⟨u, hu⟩ => ⟨u ≫ ofLE _ _ h, by simp [← hu]⟩
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
Y Z : C
P Q : Subobject Y
f : Z ⟶ Y
h : P ≤ Q
⊢ (representative.obj P).Factors f → (representative.obj Q).Factors f
state_after: no goals

tactic: simp [← hu]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
Y Z : C
P Q : Subobject Y
f : Z ⟶ Y
h : P ≤ Q
x✝ : (representative.obj P).Factors f
u : Z ⟶ (representative.obj P).obj.left
hu : u ≫ (representative.obj P).arrow = f
⊢ (u ≫ P.ofLE Q h) ≫ (representative.obj Q).arrow = f
state_after: no goals
Theorem: Complex.eqOn_of_isPreconnected_of_isMaxOn_norm
File: Mathlib/Analysis/Complex/AbsMax.lean

tactic: simp only [H₂, SameRay.rfl.norm_add, H₁, Function.const]
state_before: E : Type u
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
F : Type v
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℂ F
inst✝ : StrictConvexSpace ℝ F
f : E → F
U : Set E
c : E
hc : IsPreconnected U
ho : IsOpen U
hd : DifferentiableOn ℂ f U
hcU : c ∈ U
hm : IsMaxOn (norm ∘ f) U c
x : E
hx : x ∈ U
H₁ : ‖f x‖ = ‖f c‖
H₂ : ‖f x + f c‖ = ‖f c + f c‖
⊢ ‖f x + Function.const E (f c) x‖ = ‖f x‖ + ‖Function.const E (f c) x‖
state_after: no goals
Theorem: Submodule.range_liftQ
File: Mathlib/LinearAlgebra/Quotient.lean

tactic: simpa only [range_eq_map] using map_liftQ _ _ _ _
state_before: R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝³ : Ring R₂
inst✝² : AddCommGroup M₂
inst✝¹ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
inst✝ : RingHomSurjective τ₁₂
f : M →ₛₗ[τ₁₂] M₂
h : p ≤ ker f
⊢ range (p.liftQ f h) = range f
state_after: no goals
Theorem: AlgebraicGeometry.quasiCompact_eq_affineProperty
File: Mathlib/AlgebraicGeometry/Morphisms/QuasiCompact.lean

tactic: ext
state_before: X Y : Scheme
f : X ⟶ Y
⊢ @QuasiCompact = targetAffineLocally QuasiCompact.affineProperty
state_after: case h.h.h.a
X Y : Scheme
f : X ⟶ Y
x✝² x✝¹ : Scheme
x✝ : x✝² ⟶ x✝¹
⊢ QuasiCompact x✝ ↔ targetAffineLocally QuasiCompact.affineProperty x✝

tactic: exact quasiCompact_iff_affineProperty _
state_before: case h.h.h.a
X Y : Scheme
f : X ⟶ Y
x✝² x✝¹ : Scheme
x✝ : x✝² ⟶ x✝¹
⊢ QuasiCompact x✝ ↔ targetAffineLocally QuasiCompact.affineProperty x✝
state_after: no goals
Theorem: Real.rpow_lt_rpow_left_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [lt_iff_not_le, rpow_le_rpow_left_iff hx, lt_iff_not_le]
state_before: x y z : ℝ
n : ℕ
hx : 1 < x
⊢ x ^ y < x ^ z ↔ y < z
state_after: no goals
Theorem: List.unzip_enumFrom_eq_prod
File: Mathlib/Data/List/Range.lean

tactic: simp only [enumFrom_eq_zip_range', unzip_zip, length_range']
state_before: α : Type u
l : List α
n : ℕ
⊢ (enumFrom n l).unzip = (range' n l.length, l)
state_after: no goals
Theorem: Complex.abs_exp_sub_one_le
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sum_range_succ]
state_before: x : ℂ
hx : abs x ≤ 1
⊢ abs (cexp x - 1) = abs (cexp x - ∑ m ∈ range 1, x ^ m / ↑m.factorial)
state_after: no goals

tactic: decide
state_before: x : ℂ
hx : abs x ≤ 1
⊢ 0 < 1
state_after: no goals

tactic: simp [two_mul, mul_two, mul_add, mul_comm, add_mul, Nat.factorial]
state_before: x : ℂ
hx : abs x ≤ 1
⊢ abs x ^ 1 * (↑(Nat.succ 1) * (↑(Nat.factorial 1) * ↑1)⁻¹) = 2 * abs x
state_after: no goals