1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Matrix.dotProduct_eq
File: Mathlib/LinearAlgebra/Matrix/DotProduct.lean

tactic: funext x
state_before: m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝¹ : Semiring R
inst✝ : Fintype n
v w : n → R
h : ∀ (u : n → R), v ⬝ᵥ u = w ⬝ᵥ u
⊢ v = w
state_after: case h
m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝¹ : Semiring R
inst✝ : Fintype n
v w : n → R
h : ∀ (u : n → R), v ⬝ᵥ u = w ⬝ᵥ u
x : n
⊢ v x = w x

tactic: classical rw [← dotProduct_stdBasis_one v x, ← dotProduct_stdBasis_one w x, h]
state_before: case h
m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝¹ : Semiring R
inst✝ : Fintype n
v w : n → R
h : ∀ (u : n → R), v ⬝ᵥ u = w ⬝ᵥ u
x : n
⊢ v x = w x
state_after: no goals

tactic: rw [← dotProduct_stdBasis_one v x, ← dotProduct_stdBasis_one w x, h]
state_before: case h
m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝¹ : Semiring R
inst✝ : Fintype n
v w : n → R
h : ∀ (u : n → R), v ⬝ᵥ u = w ⬝ᵥ u
x : n
⊢ v x = w x
state_after: no goals
Theorem: Set.biInter_and'
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [iInter_and, @iInter_comm _ ι]
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
p : ι' → Prop
q : ι → ι' → Prop
s : (x : ι) → (y : ι') → p y ∧ q x y → Set α
⊢ ⋂ x, ⋂ y, ⋂ (h : p y ∧ q x y), s x y h = ⋂ y, ⋂ (hy : p y), ⋂ x, ⋂ (hx : q x y), s x y ⋯
state_after: no goals
Theorem: lt_inv_smul_iff_of_pos
File: Mathlib/Algebra/Order/Module/Defs.lean

tactic: rw [← smul_lt_smul_iff_of_pos_left ha, smul_inv_smul₀ ha.ne']
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝⁵ : GroupWithZero α
inst✝⁴ : Preorder α
inst✝³ : Preorder β
inst✝² : MulAction α β
inst✝¹ : PosSMulStrictMono α β
inst✝ : PosSMulReflectLT α β
ha : 0 < a
⊢ b₁ < a⁻¹ • b₂ ↔ a • b₁ < b₂
state_after: no goals
Theorem: RingHom.RespectsIso.cancel_right_isIso
File: Mathlib/RingTheory/RingHomProperties.lean

tactic: convert hP.1 (f ≫ g) (asIso g).symm.commRingCatIsoToRingEquiv H
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : S ⟶ T
inst✝ : IsIso g
H : P (f ≫ g)
⊢ P f
state_after: case h.e'_5
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : S ⟶ T
inst✝ : IsIso g
H : P (f ≫ g)
⊢ f = (asIso g).symm.commRingCatIsoToRingEquiv.toRingHom.comp (f ≫ g)

tactic: change f = f ≫ g ≫ inv g
state_before: case h.e'_5
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : S ⟶ T
inst✝ : IsIso g
H : P (f ≫ g)
⊢ f = (asIso g).symm.commRingCatIsoToRingEquiv.toRingHom.comp (f ≫ g)
state_after: case h.e'_5
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : S ⟶ T
inst✝ : IsIso g
H : P (f ≫ g)
⊢ f = f ≫ g ≫ inv g

tactic: simp
state_before: case h.e'_5
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : S ⟶ T
inst✝ : IsIso g
H : P (f ≫ g)
⊢ f = f ≫ g ≫ inv g
state_after: no goals
Theorem: AffineBasis.ext_elem
File: Mathlib/LinearAlgebra/AffineSpace/Basis.lean

tactic: cases nonempty_fintype ι
state_before: ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Finite ι
q₁ q₂ : P
h : ∀ (i : ι), (b.coord i) q₁ = (b.coord i) q₂
⊢ q₁ = q₂
state_after: case intro
ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Finite ι
q₁ q₂ : P
h : ∀ (i : ι), (b.coord i) q₁ = (b.coord i) q₂
val✝ : Fintype ι
⊢ q₁ = q₂

tactic: rw [← b.affineCombination_coord_eq_self q₁, ← b.affineCombination_coord_eq_self q₂]
state_before: case intro
ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Finite ι
q₁ q₂ : P
h : ∀ (i : ι), (b.coord i) q₁ = (b.coord i) q₂
val✝ : Fintype ι
⊢ q₁ = q₂
state_after: case intro
ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Finite ι
q₁ q₂ : P
h : ∀ (i : ι), (b.coord i) q₁ = (b.coord i) q₂
val✝ : Fintype ι
⊢ ((Finset.affineCombination k Finset.univ ⇑b) fun i => (b.coord i) q₁) =
    (Finset.affineCombination k Finset.univ ⇑b) fun i => (b.coord i) q₂

tactic: simp only [h]
state_before: case intro
ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : Ring k
inst✝¹ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
inst✝ : Finite ι
q₁ q₂ : P
h : ∀ (i : ι), (b.coord i) q₁ = (b.coord i) q₂
val✝ : Fintype ι
⊢ ((Finset.affineCombination k Finset.univ ⇑b) fun i => (b.coord i) q₁) =
    (Finset.affineCombination k Finset.univ ⇑b) fun i => (b.coord i) q₂
state_after: no goals
Theorem: trace_eq_trace_adjoin
File: Mathlib/RingTheory/Trace.lean

tactic: conv =>
  lhs
  rw [← IntermediateField.AdjoinSimple.algebraMap_gen K x]
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : CommRing T
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁷ : Field K
inst✝⁶ : Field L
inst✝⁵ : Algebra K L
ι κ : Type w
inst✝⁴ : Fintype ι
F : Type u_6
inst✝³ : Field F
inst✝² : Algebra K S
inst✝¹ : Algebra K F
inst✝ : FiniteDimensional K L
x : L
⊢ (Algebra.trace K L) x = finrank (↥K⟮x⟯) L • (Algebra.trace K ↥K⟮x⟯) (AdjoinSimple.gen K x)
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : CommRing T
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁷ : Field K
inst✝⁶ : Field L
inst✝⁵ : Algebra K L
ι κ : Type w
inst✝⁴ : Fintype ι
F : Type u_6
inst✝³ : Field F
inst✝² : Algebra K S
inst✝¹ : Algebra K F
inst✝ : FiniteDimensional K L
x : L
⊢ (Algebra.trace K L) ((algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)) =
    finrank (↥K⟮x⟯) L • (Algebra.trace K ↥K⟮x⟯) (AdjoinSimple.gen K x)

tactic: rw [← trace_trace (L := K⟮x⟯), trace_algebraMap, LinearMap.map_smul_of_tower]
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : CommRing T
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁷ : Field K
inst✝⁶ : Field L
inst✝⁵ : Algebra K L
ι κ : Type w
inst✝⁴ : Fintype ι
F : Type u_6
inst✝³ : Field F
inst✝² : Algebra K S
inst✝¹ : Algebra K F
inst✝ : FiniteDimensional K L
x : L
⊢ (Algebra.trace K L) ((algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)) =
    finrank (↥K⟮x⟯) L • (Algebra.trace K ↥K⟮x⟯) (AdjoinSimple.gen K x)
state_after: no goals
Theorem: Filter.inf_principal_eq_bot_iff_comap
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [principal_eq_map_coe_top s, ← Filter.push_pull', inf_top_eq, map_eq_bot_iff]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l F : Filter α
s : Set α
⊢ F ⊓ 𝓟 s = ⊥ ↔ comap Subtype.val F = ⊥
state_after: no goals
Theorem: Complex.im_eq_sub_conj
File: Mathlib/Data/Complex/Basic.lean

tactic: simp only [sub_conj, ofReal_mul, ofReal_ofNat, mul_right_comm,
  mul_div_cancel_left₀ _ (mul_ne_zero two_ne_zero I_ne_zero : 2 * I ≠ 0)]
state_before: z : ℂ
⊢ ↑z.im = (z - (starRingEnd ℂ) z) / (2 * I)
state_after: no goals
Theorem: continuousAt_sign_of_neg
File: Mathlib/Topology/Instances/Sign.lean

tactic: refine (continuousAt_const : ContinuousAt (fun x => (-1 : SignType)) a).congr ?_
state_before: α : Type u_1
inst✝⁴ : Zero α
inst✝³ : TopologicalSpace α
inst✝² : PartialOrder α
inst✝¹ : DecidableRel fun x x_1 => x < x_1
inst✝ : OrderTopology α
a : α
h : a < 0
⊢ ContinuousAt (⇑SignType.sign) a
state_after: α : Type u_1
inst✝⁴ : Zero α
inst✝³ : TopologicalSpace α
inst✝² : PartialOrder α
inst✝¹ : DecidableRel fun x x_1 => x < x_1
inst✝ : OrderTopology α
a : α
h : a < 0
⊢ (fun x => -1) =ᶠ[nhds a] ⇑SignType.sign

tactic: rw [Filter.EventuallyEq, eventually_nhds_iff]
state_before: α : Type u_1
inst✝⁴ : Zero α
inst✝³ : TopologicalSpace α
inst✝² : PartialOrder α
inst✝¹ : DecidableRel fun x x_1 => x < x_1
inst✝ : OrderTopology α
a : α
h : a < 0
⊢ (fun x => -1) =ᶠ[nhds a] ⇑SignType.sign
state_after: α : Type u_1
inst✝⁴ : Zero α
inst✝³ : TopologicalSpace α
inst✝² : PartialOrder α
inst✝¹ : DecidableRel fun x x_1 => x < x_1
inst✝ : OrderTopology α
a : α
h : a < 0
⊢ ∃ t, (∀ x ∈ t, -1 = SignType.sign x) ∧ IsOpen t ∧ a ∈ t

tactic: exact ⟨{ x | x < 0 }, fun x hx => (sign_neg hx).symm, isOpen_gt' 0, h⟩
state_before: α : Type u_1
inst✝⁴ : Zero α
inst✝³ : TopologicalSpace α
inst✝² : PartialOrder α
inst✝¹ : DecidableRel fun x x_1 => x < x_1
inst✝ : OrderTopology α
a : α
h : a < 0
⊢ ∃ t, (∀ x ∈ t, -1 = SignType.sign x) ∧ IsOpen t ∧ a ∈ t
state_after: no goals
Theorem: Set.mulIndicator_const_preimage
File: Mathlib/Algebra/Group/Indicator.lean

tactic: classical
  rw [mulIndicator_const_preimage_eq_union]
  split_ifs <;> simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : One M
inst✝ : One N
s✝ t : Set α
f g : α → M
a✝ : α
U : Set α
s : Set M
a : M
⊢ (U.mulIndicator fun x => a) ⁻¹' s ∈ {univ, U, Uᶜ, ∅}
state_after: no goals

tactic: rw [mulIndicator_const_preimage_eq_union]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : One M
inst✝ : One N
s✝ t : Set α
f g : α → M
a✝ : α
U : Set α
s : Set M
a : M
⊢ (U.mulIndicator fun x => a) ⁻¹' s ∈ {univ, U, Uᶜ, ∅}
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : One M
inst✝ : One N
s✝ t : Set α
f g : α → M
a✝ : α
U : Set α
s : Set M
a : M
⊢ ((if a ∈ s then U else ∅) ∪ if 1 ∈ s then Uᶜ else ∅) ∈ {univ, U, Uᶜ, ∅}

tactic: split_ifs <;> simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : One M
inst✝ : One N
s✝ t : Set α
f g : α → M
a✝ : α
U : Set α
s : Set M
a : M
⊢ ((if a ∈ s then U else ∅) ∪ if 1 ∈ s then Uᶜ else ∅) ∈ {univ, U, Uᶜ, ∅}
state_after: no goals
Theorem: zero_lt_three
File: Mathlib/Algebra/Order/Monoid/NatCast.lean

tactic: rw [← two_add_one_eq_three]
state_before: α : Type u_1
inst✝⁴ : AddMonoidWithOne α
inst✝³ : PartialOrder α
inst✝² : ZeroLEOneClass α
inst✝¹ : NeZero 1
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ 0 < 3
state_after: α : Type u_1
inst✝⁴ : AddMonoidWithOne α
inst✝³ : PartialOrder α
inst✝² : ZeroLEOneClass α
inst✝¹ : NeZero 1
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ 0 < 2 + 1

tactic: exact lt_add_of_lt_of_nonneg zero_lt_two zero_le_one
state_before: α : Type u_1
inst✝⁴ : AddMonoidWithOne α
inst✝³ : PartialOrder α
inst✝² : ZeroLEOneClass α
inst✝¹ : NeZero 1
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ 0 < 2 + 1
state_after: no goals
Theorem: Equiv.Perm.fst_prodExtendRight
File: Mathlib/Logic/Equiv/Basic.lean

tactic: rw [prodExtendRight]
state_before: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ ((prodExtendRight a e) ab).1 = ab.1
state_after: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ ({ toFun := fun ab => if ab.1 = a then (a, e ab.2) else ab,
          invFun := fun ab => if ab.1 = a then (a, (Equiv.symm e) ab.2) else ab, left_inv := ⋯, right_inv := ⋯ }
        ab).1 =
    ab.1

tactic: dsimp
state_before: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ ({ toFun := fun ab => if ab.1 = a then (a, e ab.2) else ab,
          invFun := fun ab => if ab.1 = a then (a, (Equiv.symm e) ab.2) else ab, left_inv := ⋯, right_inv := ⋯ }
        ab).1 =
    ab.1
state_after: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ (if ab.1 = a then (a, e ab.2) else ab).1 = ab.1

tactic: split_ifs with h
state_before: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ (if ab.1 = a then (a, e ab.2) else ab).1 = ab.1
state_after: case pos
α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
h : ab.1 = a
⊢ (a, e ab.2).1 = ab.1

case neg
α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
h : ¬ab.1 = a
⊢ ab.1 = ab.1

tactic: rw [h]
state_before: case pos
α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
h : ab.1 = a
⊢ (a, e ab.2).1 = ab.1
state_after: no goals

tactic: rfl
state_before: case neg
α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
h : ¬ab.1 = a
⊢ ab.1 = ab.1
state_after: no goals
Theorem: ContinuousLinearMap.toLinear_compLeftContinuousCompact
File: Mathlib/Topology/ContinuousFunction/Compact.lean

tactic: ext f
state_before: X : Type u_1
𝕜 : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁶ : TopologicalSpace X
inst✝⁵ : CompactSpace X
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedAddCommGroup β
inst✝² : NormedSpace 𝕜 β
inst✝¹ : NormedAddCommGroup γ
inst✝ : NormedSpace 𝕜 γ
g : β →L[𝕜] γ
⊢ ↑(ContinuousLinearMap.compLeftContinuousCompact X g) = ContinuousLinearMap.compLeftContinuous 𝕜 X g
state_after: case h.h
X : Type u_1
𝕜 : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁶ : TopologicalSpace X
inst✝⁵ : CompactSpace X
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedAddCommGroup β
inst✝² : NormedSpace 𝕜 β
inst✝¹ : NormedAddCommGroup γ
inst✝ : NormedSpace 𝕜 γ
g : β →L[𝕜] γ
f : C(X, β)
a✝ : X
⊢ (↑(ContinuousLinearMap.compLeftContinuousCompact X g) f) a✝ = ((ContinuousLinearMap.compLeftContinuous 𝕜 X g) f) a✝

tactic: rfl
state_before: case h.h
X : Type u_1
𝕜 : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁶ : TopologicalSpace X
inst✝⁵ : CompactSpace X
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedAddCommGroup β
inst✝² : NormedSpace 𝕜 β
inst✝¹ : NormedAddCommGroup γ
inst✝ : NormedSpace 𝕜 γ
g : β →L[𝕜] γ
f : C(X, β)
a✝ : X
⊢ (↑(ContinuousLinearMap.compLeftContinuousCompact X g) f) a✝ = ((ContinuousLinearMap.compLeftContinuous 𝕜 X g) f) a✝
state_after: no goals
Theorem: isUnit_iff_exists_inv'
File: Mathlib/Algebra/Group/Units.lean

tactic: simp [isUnit_iff_exists_inv, mul_comm]
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : CommMonoid M
a : M
⊢ IsUnit a ↔ ∃ b, b * a = 1
state_after: no goals
Theorem: Commute.orderOf_mul_dvd_lcm
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: rw [orderOf, ← comp_mul_left]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n m : ℕ
h : Commute x y
⊢ orderOf (x * y) ∣ (orderOf x).lcm (orderOf y)
state_after: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n m : ℕ
h : Commute x y
⊢ minimalPeriod ((fun x_1 => x * x_1) ∘ fun x => y * x) 1 ∣ (orderOf x).lcm (orderOf y)

tactic: exact Function.Commute.minimalPeriod_of_comp_dvd_lcm h.function_commute_mul_left
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n m : ℕ
h : Commute x y
⊢ minimalPeriod ((fun x_1 => x * x_1) ∘ fun x => y * x) 1 ∣ (orderOf x).lcm (orderOf y)
state_after: no goals
Theorem: inv_eq_one_div
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [div_eq_mul_inv, one_mul]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivInvMonoid G
a b c x : G
⊢ x⁻¹ = 1 / x
state_after: no goals
Theorem: Module.piEquiv_apply_apply
File: Mathlib/LinearAlgebra/StdBasis.lean

tactic: simp only [piEquiv, Basis.constr_apply_fintype, Basis.equivFun_apply]
state_before: ι✝ : Type u_1
R✝ : Type u_2
M✝ : Type u_3
N : Type u_4
inst✝⁹ : Finite ι✝
inst✝⁸ : CommSemiring R✝
inst✝⁷ : AddCommMonoid M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ M✝
inst✝⁴ : Module R✝ N
ι : Type u_5
R : Type u_6
M : Type u_7
inst✝³ : Fintype ι
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
v : ι → M
w : ι → R
⊢ ((piEquiv ι R M) v) w = ∑ i : ι, w i • v i
state_after: ι✝ : Type u_1
R✝ : Type u_2
M✝ : Type u_3
N : Type u_4
inst✝⁹ : Finite ι✝
inst✝⁸ : CommSemiring R✝
inst✝⁷ : AddCommMonoid M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ M✝
inst✝⁴ : Module R✝ N
ι : Type u_5
R : Type u_6
M : Type u_7
inst✝³ : Fintype ι
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
v : ι → M
w : ι → R
⊢ ∑ x : ι, ((Pi.basisFun R ι).repr w) x • v x = ∑ i : ι, w i • v i

tactic: congr
state_before: ι✝ : Type u_1
R✝ : Type u_2
M✝ : Type u_3
N : Type u_4
inst✝⁹ : Finite ι✝
inst✝⁸ : CommSemiring R✝
inst✝⁷ : AddCommMonoid M✝
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R✝ M✝
inst✝⁴ : Module R✝ N
ι : Type u_5
R : Type u_6
M : Type u_7
inst✝³ : Fintype ι
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
v : ι → M
w : ι → R
⊢ ∑ x : ι, ((Pi.basisFun R ι).repr w) x • v x = ∑ i : ι, w i • v i
state_after: no goals
Theorem: SimpleGraph.triangleRemovalBound_mul_cube_lt
File: Mathlib/Combinatorics/SimpleGraph/Triangle/Removal.lean

tactic: calc
  _ ≤ (2 * ⌈4 / ε⌉₊ ^ 3 : ℝ)⁻¹ * ↑⌈4 / ε⌉₊ ^ 3 := by gcongr; exact min_le_left _ _
  _ = 2⁻¹ := by rw [mul_inv, inv_mul_cancel_right₀]; positivity
  _ < 1 := by norm_num
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : 0 < ε
⊢ triangleRemovalBound ε * ↑⌈4 / ε⌉₊ ^ 3 < 1
state_after: no goals

tactic: gcongr
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : 0 < ε
⊢ triangleRemovalBound ε * ↑⌈4 / ε⌉₊ ^ 3 ≤ (2 * ↑⌈4 / ε⌉₊ ^ 3)⁻¹ * ↑⌈4 / ε⌉₊ ^ 3
state_after: case h
α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : 0 < ε
⊢ triangleRemovalBound ε ≤ (2 * ↑⌈4 / ε⌉₊ ^ 3)⁻¹

tactic: exact min_le_left _ _
state_before: case h
α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : 0 < ε
⊢ triangleRemovalBound ε ≤ (2 * ↑⌈4 / ε⌉₊ ^ 3)⁻¹
state_after: no goals

tactic: rw [mul_inv, inv_mul_cancel_right₀]
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : 0 < ε
⊢ (2 * ↑⌈4 / ε⌉₊ ^ 3)⁻¹ * ↑⌈4 / ε⌉₊ ^ 3 = 2⁻¹
state_after: case h
α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : 0 < ε
⊢ ↑⌈4 / ε⌉₊ ^ 3 ≠ 0

tactic: positivity
state_before: case h
α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : 0 < ε
⊢ ↑⌈4 / ε⌉₊ ^ 3 ≠ 0
state_after: no goals

tactic: norm_num
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : 0 < ε
⊢ 2⁻¹ < 1
state_after: no goals
Theorem: Equiv.Perm.cycleType_inv
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: simp only [hσ.cycleType, hσ.inv.cycleType, support_inv]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ✝ σ : Perm α
hσ : σ.IsCycle
⊢ (fun τ => τ⁻¹.cycleType = τ.cycleType) σ
state_after: no goals

tactic: simp only [mul_inv_rev, hστ.cycleType, hστ.symm.inv_left.inv_right.cycleType, hσ, hτ,
  add_comm]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ✝ σ τ : Perm α
hστ : σ.Disjoint τ
x✝ : σ.IsCycle
hσ : (fun τ => τ⁻¹.cycleType = τ.cycleType) σ
hτ : (fun τ => τ⁻¹.cycleType = τ.cycleType) τ
⊢ (fun τ => τ⁻¹.cycleType = τ.cycleType) (σ * τ)
state_after: no goals
Theorem: Cardinal.ord_nat
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: induction' n with n IH
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
n : ℕ
⊢ ↑n ≤ (↑n).ord
state_after: case zero
α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
⊢ ↑0 ≤ (↑0).ord

case succ
α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
n : ℕ
IH : ↑n ≤ (↑n).ord
⊢ ↑(n + 1) ≤ (↑(n + 1)).ord

tactic: apply Ordinal.zero_le
state_before: case zero
α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
⊢ ↑0 ≤ (↑0).ord
state_after: no goals

tactic: exact succ_le_of_lt (IH.trans_lt <| ord_lt_ord.2 <| natCast_lt.2 (Nat.lt_succ_self n))
state_before: case succ
α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
n : ℕ
IH : ↑n ≤ (↑n).ord
⊢ ↑(n + 1) ≤ (↑(n + 1)).ord
state_after: no goals
Theorem: Submodule.IsPrincipal.mem_iff_eq_smul_generator
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

tactic: simp_rw [@eq_comm _ x, ← mem_span_singleton, span_singleton_generator]
state_before: R : Type u
M : Type v
inst✝³ : AddCommGroup M
inst✝² : Ring R
inst✝¹ : Module R M
S : Submodule R M
inst✝ : S.IsPrincipal
x : M
⊢ x ∈ S ↔ ∃ s, x = s • generator S
state_after: no goals
Theorem: Filter.HasBasis.prod_self
File: Mathlib/Order/Filter/Bases.lean

tactic: simpa only [exists_prop, subset_inter_iff] using
  hl.mem_iff.1 (inter_mem (hl.mem_of_mem hi) (hl.mem_of_mem hj))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
la : Filter α
pa : ι → Prop
sa : ι → Set α
lb : Filter β
pb : ι' → Prop
sb : ι' → Set β
f : α → β
hl : la.HasBasis pa sa
i j : ι
hi : pa i
hj : pa j
⊢ ∃ k, pa k ∧ sa k ⊆ sa i ∧ sa k ⊆ sa j
state_after: no goals
Theorem: CauSeq.const_inv
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

tactic: rwa [const_limZero]
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : DivisionRing β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx : x ≠ 0
⊢ ¬(const abv x).LimZero
state_after: no goals
Theorem: MulAction.pretransitive_iff_unique_quotient_of_nonempty
File: Mathlib/GroupTheory/GroupAction/Basic.lean

tactic: rw [unique_iff_subsingleton_and_nonempty, pretransitive_iff_subsingleton_quotient, iff_self_and]
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : Group G
inst✝² : MulAction G α
inst✝¹ : MulAction G β
inst✝ : Nonempty α
⊢ IsPretransitive G α ↔ Nonempty (Unique (orbitRel.Quotient G α))
state_after: G : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : Group G
inst✝² : MulAction G α
inst✝¹ : MulAction G β
inst✝ : Nonempty α
⊢ Subsingleton (orbitRel.Quotient G α) → Nonempty (orbitRel.Quotient G α)

tactic: exact fun _ ↦ (nonempty_quotient_iff _).mpr inferInstance
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : Group G
inst✝² : MulAction G α
inst✝¹ : MulAction G β
inst✝ : Nonempty α
⊢ Subsingleton (orbitRel.Quotient G α) → Nonempty (orbitRel.Quotient G α)
state_after: no goals
Theorem: Polynomial.rootSet_X_pow
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: rw [← one_mul (X ^ n : R[X]), ← C_1, rootSet_C_mul_X_pow hn]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝³ : Field R
p q : R[X]
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra R S
n : ℕ
hn : n ≠ 0
⊢ (X ^ n).rootSet S = {0}
state_after: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝³ : Field R
p q : R[X]
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra R S
n : ℕ
hn : n ≠ 0
⊢ 1 ≠ 0

tactic: exact one_ne_zero
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝³ : Field R
p q : R[X]
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra R S
n : ℕ
hn : n ≠ 0
⊢ 1 ≠ 0
state_after: no goals