1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Set.mulIndicator_one_preimage
File: Mathlib/Algebra/Group/Indicator.lean

tactic: classical
  rw [mulIndicator_one', preimage_one]
  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 : α
s : Set M
⊢ t.mulIndicator 1 ⁻¹' s ∈ {univ, ∅}
state_after: no goals

tactic: rw [mulIndicator_one', preimage_one]
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 : α
s : Set M
⊢ t.mulIndicator 1 ⁻¹' s ∈ {univ, ∅}
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 : α
s : Set M
⊢ (if 1 ∈ s then univ else ∅) ∈ {univ, ∅}

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 : α
s : Set M
⊢ (if 1 ∈ s then univ else ∅) ∈ {univ, ∅}
state_after: no goals
Theorem: Filter.map₂_right
File: Mathlib/Order/Filter/NAry.lean

tactic: rw [map₂_swap, map₂_left]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
m : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
inst✝ : f.NeBot
⊢ map₂ (fun x y => y) f g = g
state_after: no goals
Theorem: LieModule.iInf_lowerCentralSeries_eq_bot_of_isNilpotent
File: Mathlib/Algebra/Lie/Nilpotent.lean

tactic: obtain ⟨k, hk⟩ := exists_lowerCentralSeries_eq_bot_of_isNilpotent R L M
state_before: R : Type u
L : Type v
M : Type w
inst✝¹¹ : CommRing R
inst✝¹⁰ : LieRing L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
k : ℕ
N : LieSubmodule R L M
M₂ : Type w₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L M₂
inst✝¹ : LieModule R L M₂
inst✝ : IsNilpotent R L M
⊢ ⨅ k, lowerCentralSeries R L M k = ⊥
state_after: case intro
R : Type u
L : Type v
M : Type w
inst✝¹¹ : CommRing R
inst✝¹⁰ : LieRing L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
M₂ : Type w₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L M₂
inst✝¹ : LieModule R L M₂
inst✝ : IsNilpotent R L M
k : ℕ
hk : lowerCentralSeries R L M k = ⊥
⊢ ⨅ k, lowerCentralSeries R L M k = ⊥

tactic: rw [eq_bot_iff, ← hk]
state_before: case intro
R : Type u
L : Type v
M : Type w
inst✝¹¹ : CommRing R
inst✝¹⁰ : LieRing L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
M₂ : Type w₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L M₂
inst✝¹ : LieModule R L M₂
inst✝ : IsNilpotent R L M
k : ℕ
hk : lowerCentralSeries R L M k = ⊥
⊢ ⨅ k, lowerCentralSeries R L M k = ⊥
state_after: case intro
R : Type u
L : Type v
M : Type w
inst✝¹¹ : CommRing R
inst✝¹⁰ : LieRing L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
M₂ : Type w₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L M₂
inst✝¹ : LieModule R L M₂
inst✝ : IsNilpotent R L M
k : ℕ
hk : lowerCentralSeries R L M k = ⊥
⊢ ⨅ k, lowerCentralSeries R L M k ≤ lowerCentralSeries R L M k

tactic: exact iInf_le _ _
state_before: case intro
R : Type u
L : Type v
M : Type w
inst✝¹¹ : CommRing R
inst✝¹⁰ : LieRing L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
M₂ : Type w₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L M₂
inst✝¹ : LieModule R L M₂
inst✝ : IsNilpotent R L M
k : ℕ
hk : lowerCentralSeries R L M k = ⊥
⊢ ⨅ k, lowerCentralSeries R L M k ≤ lowerCentralSeries R L M k
state_after: no goals
Theorem: Associated.eq_zero_iff
File: Mathlib/Algebra/Associated.lean

tactic: obtain ⟨u, rfl⟩ := h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MonoidWithZero α
a b : α
h : a ~ᵤ b
⊢ a = 0 ↔ b = 0
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MonoidWithZero α
a : α
u : αˣ
⊢ a = 0 ↔ a * ↑u = 0

tactic: rw [← Units.eq_mul_inv_iff_mul_eq, zero_mul]
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MonoidWithZero α
a : α
u : αˣ
⊢ a = 0 ↔ a * ↑u = 0
state_after: no goals
Theorem: Unitization.inr_star
File: Mathlib/Algebra/Algebra/Unitization.lean

tactic: simp only [fst_star, star_zero, fst_inr]
state_before: R : Type u_1
A : Type u_2
inst✝² : AddMonoid R
inst✝¹ : StarAddMonoid R
inst✝ : Star A
a : A
⊢ (↑(star a)).fst = (star ↑a).fst
state_after: no goals
Theorem: List.takeI_left'
File: Mathlib/Data/List/Basic.lean

tactic: rw [← h]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ : List α
inst✝ : Inhabited α
l₁ l₂ : List α
n : ℕ
h : l₁.length = n
⊢ takeI n (l₁ ++ l₂) = l₁
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ : List α
inst✝ : Inhabited α
l₁ l₂ : List α
n : ℕ
h : l₁.length = n
⊢ takeI l₁.length (l₁ ++ l₂) = l₁

tactic: apply takeI_left
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ : List α
inst✝ : Inhabited α
l₁ l₂ : List α
n : ℕ
h : l₁.length = n
⊢ takeI l₁.length (l₁ ++ l₂) = l₁
state_after: no goals
Theorem: gal_one_isSolvable
File: Mathlib/FieldTheory/AbelRuffini.lean

tactic: infer_instance
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
⊢ IsSolvable (Gal 1)
state_after: no goals
Theorem: Fin.insertNth_binop
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: simp
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
op : (j : Fin (n + 1)) → α j → α j → α j
i : Fin (n + 1)
x y : α i
p q : (j : Fin n) → α (i.succAbove j)
⊢ op i (i.insertNth x p i) (i.insertNth y q i) = op i x y ∧
    (fun j => op (i.succAbove j) (p j) (q j)) = fun j =>
      op (i.succAbove j) (i.insertNth x p (i.succAbove j)) (i.insertNth y q (i.succAbove j))
state_after: no goals
Theorem: bihimp_right_comm
File: Mathlib/Order/SymmDiff.lean

tactic: simp_rw [bihimp_assoc, bihimp_comm]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ⇔ b ⇔ c = a ⇔ c ⇔ b
state_after: no goals
Theorem: CategoryTheory.ShortComplex.quasiIso_opMap
File: Mathlib/Algebra/Homology/ShortComplex/QuasiIso.lean

tactic: rw [quasiIso_opMap_iff]
state_before: C : Type u_2
inst✝⁶ : Category.{u_1, u_2} C
inst✝⁵ : HasZeroMorphisms C
S₁ S₂ S₃ S₄ : ShortComplex C
inst✝⁴ : S₁.HasHomology
inst✝³ : S₂.HasHomology
inst✝² : S₃.HasHomology
inst✝¹ : S₄.HasHomology
φ : S₁ ⟶ S₂
inst✝ : QuasiIso φ
⊢ QuasiIso (opMap φ)
state_after: C : Type u_2
inst✝⁶ : Category.{u_1, u_2} C
inst✝⁵ : HasZeroMorphisms C
S₁ S₂ S₃ S₄ : ShortComplex C
inst✝⁴ : S₁.HasHomology
inst✝³ : S₂.HasHomology
inst✝² : S₃.HasHomology
inst✝¹ : S₄.HasHomology
φ : S₁ ⟶ S₂
inst✝ : QuasiIso φ
⊢ QuasiIso φ

tactic: infer_instance
state_before: C : Type u_2
inst✝⁶ : Category.{u_1, u_2} C
inst✝⁵ : HasZeroMorphisms C
S₁ S₂ S₃ S₄ : ShortComplex C
inst✝⁴ : S₁.HasHomology
inst✝³ : S₂.HasHomology
inst✝² : S₃.HasHomology
inst✝¹ : S₄.HasHomology
φ : S₁ ⟶ S₂
inst✝ : QuasiIso φ
⊢ QuasiIso φ
state_after: no goals
Theorem: Subspace.dualRestrict_leftInverse
File: Mathlib/LinearAlgebra/Dual.lean

tactic: rw [dualRestrict_comp_dualLift]
state_before: K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W✝ W : Subspace K V
x : Module.Dual K ↥W
⊢ (dualRestrict W ∘ₗ W.dualLift) x = x
state_after: K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W✝ W : Subspace K V
x : Module.Dual K ↥W
⊢ 1 x = x

tactic: rfl
state_before: K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W✝ W : Subspace K V
x : Module.Dual K ↥W
⊢ 1 x = x
state_after: no goals
Theorem: Rat.mkRat_eq_iff
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: rw [← normalize_eq_mkRat z₁, ← normalize_eq_mkRat z₂, normalize_eq_iff]
state_before: d₁ d₂ : Nat
n₁ n₂ : Int
z₁ : d₁ ≠ 0
z₂ : d₂ ≠ 0
⊢ mkRat n₁ d₁ = mkRat n₂ d₂ ↔ n₁ * ↑d₂ = n₂ * ↑d₁
state_after: no goals
Theorem: WittVector.constantCoeff_wittNSMul
File: Mathlib/RingTheory/WittVector/Defs.lean

tactic: apply constantCoeff_wittStructureInt p _ _ n
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
m n : ℕ
⊢ constantCoeff (wittNSMul p m n) = 0
state_after: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
m n : ℕ
⊢ constantCoeff (m • X 0) = 0

tactic: simp only [smul_zero, map_nsmul, constantCoeff_X]
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
m n : ℕ
⊢ constantCoeff (m • X 0) = 0
state_after: no goals
Theorem: Matrix.left_inv_eq_left_inv
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: rw [← inv_eq_left_inv h, ← inv_eq_left_inv g]
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B C : Matrix n n α
h : B * A = 1
g : C * A = 1
⊢ B = C
state_after: no goals
Theorem: ContinuousLinearMap.apply_norm_sq_eq_inner_adjoint_left
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: have h : ⟪(A† ∘L A) x, x⟫ = ⟪A x, A x⟫ := by rw [← adjoint_inner_left]; rfl
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
x : E
⊢ ‖A x‖ ^ 2 = re ⟪((adjoint A).comp A) x, x⟫_𝕜
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
x : E
h : ⟪((adjoint A).comp A) x, x⟫_𝕜 = ⟪A x, A x⟫_𝕜
⊢ ‖A x‖ ^ 2 = re ⟪((adjoint A).comp A) x, x⟫_𝕜

tactic: rw [h, ← inner_self_eq_norm_sq (𝕜 := 𝕜) _]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
x : E
h : ⟪((adjoint A).comp A) x, x⟫_𝕜 = ⟪A x, A x⟫_𝕜
⊢ ‖A x‖ ^ 2 = re ⟪((adjoint A).comp A) x, x⟫_𝕜
state_after: no goals

tactic: rw [← adjoint_inner_left]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
x : E
⊢ ⟪((adjoint A).comp A) x, x⟫_𝕜 = ⟪A x, A x⟫_𝕜
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
x : E
⊢ ⟪((adjoint A).comp A) x, x⟫_𝕜 = ⟪(adjoint A) (A x), x⟫_𝕜

tactic: rfl
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
x : E
⊢ ⟪((adjoint A).comp A) x, x⟫_𝕜 = ⟪(adjoint A) (A x), x⟫_𝕜
state_after: no goals
Theorem: Bool.eq_false_of_not_eq_true'
File: Mathlib/Data/Bool/Basic.lean

tactic: cases a <;> decide
state_before: a : Bool
⊢ (!decide (a = true)) = true → a = false
state_after: no goals
Theorem: rank_quotient_add_rank_of_isDomain
File: Mathlib/LinearAlgebra/Dimension/Localization.lean

tactic: apply lift_injective.{max u v}
state_before: R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing S
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Algebra R S
inst✝⁴ : Module S N
inst✝³ : IsScalarTower R S N
p : Submonoid R
inst✝² : IsLocalization p S
f : M →ₗ[R] N
inst✝¹ : IsLocalizedModule p f
hp : p ≤ R⁰
inst✝ : IsDomain R
M' : Submodule R M
⊢ Module.rank R (M ⧸ M') + Module.rank R ↥M' = Module.rank R M
state_after: case a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing S
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Algebra R S
inst✝⁴ : Module S N
inst✝³ : IsScalarTower R S N
p : Submonoid R
inst✝² : IsLocalization p S
f : M →ₗ[R] N
inst✝¹ : IsLocalizedModule p f
hp : p ≤ R⁰
inst✝ : IsDomain R
M' : Submodule R M
⊢ lift.{max u v, v} (Module.rank R (M ⧸ M') + Module.rank R ↥M') = lift.{max u v, v} (Module.rank R M)

tactic: rw [lift_add, ← IsLocalizedModule.lift_rank_eq (FractionRing R) R⁰ (M'.toLocalized R⁰) le_rfl,
  ← IsLocalizedModule.lift_rank_eq (FractionRing R) R⁰ (LocalizedModule.mkLinearMap R⁰ M) le_rfl,
  ← IsLocalizedModule.lift_rank_eq (FractionRing R) R⁰ (M'.toLocalizedQuotient R⁰) le_rfl,
  ← lift_add, rank_quotient_add_rank_of_divisionRing]
state_before: case a
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing S
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Algebra R S
inst✝⁴ : Module S N
inst✝³ : IsScalarTower R S N
p : Submonoid R
inst✝² : IsLocalization p S
f : M →ₗ[R] N
inst✝¹ : IsLocalizedModule p f
hp : p ≤ R⁰
inst✝ : IsDomain R
M' : Submodule R M
⊢ lift.{max u v, v} (Module.rank R (M ⧸ M') + Module.rank R ↥M') = lift.{max u v, v} (Module.rank R M)
state_after: no goals
Theorem: EReal.toReal_sub
File: Mathlib/Data/Real/EReal.lean

tactic: lift x to ℝ using ⟨hx, h'x⟩
state_before: x y : EReal
hx : x ≠ ⊤
h'x : x ≠ ⊥
hy : y ≠ ⊤
h'y : y ≠ ⊥
⊢ (x - y).toReal = x.toReal - y.toReal
state_after: case intro
y : EReal
hy : y ≠ ⊤
h'y : y ≠ ⊥
x : ℝ
hx : ↑x ≠ ⊤
h'x : ↑x ≠ ⊥
⊢ (↑x - y).toReal = (↑x).toReal - y.toReal

tactic: lift y to ℝ using ⟨hy, h'y⟩
state_before: case intro
y : EReal
hy : y ≠ ⊤
h'y : y ≠ ⊥
x : ℝ
hx : ↑x ≠ ⊤
h'x : ↑x ≠ ⊥
⊢ (↑x - y).toReal = (↑x).toReal - y.toReal
state_after: case intro.intro
x : ℝ
hx : ↑x ≠ ⊤
h'x : ↑x ≠ ⊥
y : ℝ
hy : ↑y ≠ ⊤
h'y : ↑y ≠ ⊥
⊢ (↑x - ↑y).toReal = (↑x).toReal - (↑y).toReal

tactic: rfl
state_before: case intro.intro
x : ℝ
hx : ↑x ≠ ⊤
h'x : ↑x ≠ ⊥
y : ℝ
hy : ↑y ≠ ⊤
h'y : ↑y ≠ ⊥
⊢ (↑x - ↑y).toReal = (↑x).toReal - (↑y).toReal
state_after: no goals
Theorem: monotone_iff_forall_wcovBy
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: refine ⟨fun hf _ _ h ↦ hf h.le, fun h a b hab ↦ ?_⟩
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
inst✝ : Preorder β
f : α → β
⊢ Monotone f ↔ ∀ (a b : α), a ⩿ b → f a ≤ f b
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
inst✝ : Preorder β
f : α → β
h : ∀ (a b : α), a ⩿ b → f a ≤ f b
a b : α
hab : a ≤ b
⊢ f a ≤ f b
Theorem: JoinedIn.trans
File: Mathlib/Topology/Connected/PathConnected.lean

tactic: cases' hxy.mem with hx hy
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
hxy : JoinedIn F x y
hyz : JoinedIn F y z
⊢ JoinedIn F x z
state_after: case intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
hxy : JoinedIn F x y
hyz : JoinedIn F y z
hx : x ∈ F
hy : y ∈ F
⊢ JoinedIn F x z

tactic: cases' hyz.mem with hx hy
state_before: case intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
hxy : JoinedIn F x y
hyz : JoinedIn F y z
hx : x ∈ F
hy : y ∈ F
⊢ JoinedIn F x z
state_after: case intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
hxy : JoinedIn F x y
hyz : JoinedIn F y z
hx✝ : x ∈ F
hy✝ hx : y ∈ F
hy : z ∈ F
⊢ JoinedIn F x z

tactic: simp_all [joinedIn_iff_joined]
state_before: case intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
hxy : JoinedIn F x y
hyz : JoinedIn F y z
hx✝ : x ∈ F
hy✝ hx : y ∈ F
hy : z ∈ F
⊢ JoinedIn F x z
state_after: case intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
hx✝¹ : x ∈ F
hy✝¹ : y ∈ F
hy✝ : z ∈ F
hxy : Joined ⟨x, ⋯⟩ ⟨y, ⋯⟩
hyz : Joined ⟨y, ⋯⟩ ⟨z, ⋯⟩
hx✝ : x ∈ F
hx : y ∈ F
hy : z ∈ F
⊢ Joined ⟨x, ⋯⟩ ⟨z, ⋯⟩

tactic: exact hxy.trans hyz
state_before: case intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
hx✝¹ : x ∈ F
hy✝¹ : y ∈ F
hy✝ : z ∈ F
hxy : Joined ⟨x, ⋯⟩ ⟨y, ⋯⟩
hyz : Joined ⟨y, ⋯⟩ ⟨z, ⋯⟩
hx✝ : x ∈ F
hx : y ∈ F
hy : z ∈ F
⊢ Joined ⟨x, ⋯⟩ ⟨z, ⋯⟩
state_after: no goals
Theorem: InitialSeg.acc
File: Mathlib/Order/InitialSeg.lean

tactic: refine fun h => Acc.recOn h fun a _ ha => Acc.intro _ fun b hb => ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : r ≼i s
a : α
⊢ Acc r a → Acc s (f a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : r ≼i s
a✝ : α
h : Acc r a✝
a : α
x✝ : ∀ (y : α), r y a → Acc r y
ha : ∀ (y : α), r y a → Acc s (f y)
b : β
hb : s b (f a)
⊢ Acc s b

tactic: obtain ⟨a', rfl⟩ := f.init hb
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : r ≼i s
a✝ : α
h : Acc r a✝
a : α
x✝ : ∀ (y : α), r y a → Acc r y
ha : ∀ (y : α), r y a → Acc s (f y)
b : β
hb : s b (f a)
⊢ Acc s b
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : r ≼i s
a✝ : α
h : Acc r a✝
a : α
x✝ : ∀ (y : α), r y a → Acc r y
ha : ∀ (y : α), r y a → Acc s (f y)
a' : α
hb : s (f a') (f a)
⊢ Acc s (f a')

tactic: exact ha _ (f.map_rel_iff.mp hb)
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : r ≼i s
a✝ : α
h : Acc r a✝
a : α
x✝ : ∀ (y : α), r y a → Acc r y
ha : ∀ (y : α), r y a → Acc s (f y)
a' : α
hb : s (f a') (f a)
⊢ Acc s (f a')
state_after: no goals
Theorem: QuotientGroup.mk_mul_of_mem
File: Mathlib/GroupTheory/Coset.lean

tactic: rwa [eq', mul_inv_rev, inv_mul_cancel_right, s.inv_mem_iff]
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
a✝ b a : α
hb : b ∈ s
⊢ ↑(a * b) = ↑a
state_after: no goals
Theorem: Real.multiset_prod_map_rpow
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: induction' s using Quotient.inductionOn with l
state_before: w x y z : ℝ
ι : Type u_1
s : Multiset ι
f : ι → ℝ
hs : ∀ i ∈ s, 0 ≤ f i
r : ℝ
⊢ (Multiset.map (fun x => f x ^ r) s).prod = (Multiset.map f s).prod ^ r
state_after: case h
w x y z : ℝ
ι : Type u_1
f : ι → ℝ
r : ℝ
l : List ι
hs : ∀ i ∈ ⟦l⟧, 0 ≤ f i
⊢ (Multiset.map (fun x => f x ^ r) ⟦l⟧).prod = (Multiset.map f ⟦l⟧).prod ^ r

tactic: simpa using Real.list_prod_map_rpow' l f hs r
state_before: case h
w x y z : ℝ
ι : Type u_1
f : ι → ℝ
r : ℝ
l : List ι
hs : ∀ i ∈ ⟦l⟧, 0 ≤ f i
⊢ (Multiset.map (fun x => f x ^ r) ⟦l⟧).prod = (Multiset.map f ⟦l⟧).prod ^ r
state_after: no goals
Theorem: Int.ModEq.add_left_cancel
File: Mathlib/Data/Int/ModEq.lean

tactic: abel
state_before: m n a b c d : ℤ
h₁ : a ≡ b [ZMOD n]
h₂ : a + c ≡ b + d [ZMOD n]
⊢ d - c = b + d - (a + c) - (b - a)
state_after: no goals

tactic: rw [this]
state_before: m n a b c d : ℤ
h₁ : a ≡ b [ZMOD n]
h₂ : a + c ≡ b + d [ZMOD n]
this : d - c = b + d - (a + c) - (b - a)
⊢ n ∣ d - c
state_after: m n a b c d : ℤ
h₁ : a ≡ b [ZMOD n]
h₂ : a + c ≡ b + d [ZMOD n]
this : d - c = b + d - (a + c) - (b - a)
⊢ n ∣ b + d - (a + c) - (b - a)

tactic: exact dvd_sub h₂.dvd h₁.dvd
state_before: m n a b c d : ℤ
h₁ : a ≡ b [ZMOD n]
h₂ : a + c ≡ b + d [ZMOD n]
this : d - c = b + d - (a + c) - (b - a)
⊢ n ∣ b + d - (a + c) - (b - a)
state_after: no goals
Theorem: BoxIntegral.Box.volume_apply
File: Mathlib/Analysis/BoxIntegral/Partition/Measure.lean

tactic: rw [Measure.toBoxAdditive_apply, coe_eq_pi, Real.volume_pi_Ioc_toReal I.lower_le_upper]
state_before: ι : Type u_1
inst✝ : Fintype ι
I : Box ι
⊢ volume.toBoxAdditive I = ∏ i : ι, (I.upper i - I.lower i)
state_after: no goals
Theorem: gcd_eq_zero_iff
File: Mathlib/Algebra/GCDMonoid/Basic.lean

tactic: let ⟨ca, ha⟩ := gcd_dvd_left a b
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
⊢ a = 0 ∧ b = 0
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
ca : α
ha : a = gcd a b * ca
⊢ a = 0 ∧ b = 0

tactic: let ⟨cb, hb⟩ := gcd_dvd_right a b
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
ca : α
ha : a = gcd a b * ca
⊢ a = 0 ∧ b = 0
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
ca : α
ha : a = gcd a b * ca
cb : α
hb : b = gcd a b * cb
⊢ a = 0 ∧ b = 0

tactic: rw [h, zero_mul] at ha hb
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
ca : α
ha : a = gcd a b * ca
cb : α
hb : b = gcd a b * cb
⊢ a = 0 ∧ b = 0
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
ca : α
ha : a = 0
cb : α
hb : b = 0
⊢ a = 0 ∧ b = 0

tactic: exact ⟨ha, hb⟩
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
ca : α
ha : a = 0
cb : α
hb : b = 0
⊢ a = 0 ∧ b = 0
state_after: no goals

tactic: rw [ha, hb, ← zero_dvd_iff]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
x✝ : a = 0 ∧ b = 0
ha : a = 0
hb : b = 0
⊢ gcd a b = 0
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
x✝ : a = 0 ∧ b = 0
ha : a = 0
hb : b = 0
⊢ 0 ∣ gcd 0 0

tactic: apply dvd_gcd <;> rfl
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
x✝ : a = 0 ∧ b = 0
ha : a = 0
hb : b = 0
⊢ 0 ∣ gcd 0 0
state_after: no goals
Theorem: cauchy_pi_iff
File: Mathlib/Topology/UniformSpace/Pi.lean

tactic: simp_rw [Pi.uniformSpace_eq, cauchy_iInf_uniformSpace, cauchy_comap_uniformSpace]
state_before: ι : Type u_1
ι' : Type u_2
β : Type u_3
α : ι → Type u
U : (i : ι) → UniformSpace (α i)
inst✝¹ : UniformSpace β
inst✝ : Nonempty ι
l : Filter ((i : ι) → α i)
⊢ Cauchy l ↔ ∀ (i : ι), Cauchy (map (eval i) l)
state_after: no goals
Theorem: PiNat.res_length
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: induction n <;> simp [*]
state_before: E : ℕ → Type u_1
α : Type u_2
x : ℕ → α
n : ℕ
⊢ (res x n).length = n
state_after: no goals
Theorem: ModuleCat.ihom_ev_app
File: Mathlib/Algebra/Category/ModuleCat/Monoidal/Closed.lean

tactic: apply TensorProduct.ext'
state_before: R : Type u
inst✝ : CommRing R
M N : ModuleCat R
⊢ (ihom.ev M).app N = (TensorProduct.uncurry R (↑M) (↑M →ₗ[R] ↑N) ↑N) LinearMap.id.flip
state_after: case H
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
⊢ ∀ (x : ↑M) (y : ↑((ihom M).obj N)),
    ((ihom.ev M).app N) (x ⊗ₜ[R] y) = ((TensorProduct.uncurry R (↑M) (↑M →ₗ[R] ↑N) ↑N) LinearMap.id.flip) (x ⊗ₜ[R] y)

tactic: apply ModuleCat.monoidalClosed_uncurry
state_before: case H
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
⊢ ∀ (x : ↑M) (y : ↑((ihom M).obj N)),
    ((ihom.ev M).app N) (x ⊗ₜ[R] y) = ((TensorProduct.uncurry R (↑M) (↑M →ₗ[R] ↑N) ↑N) LinearMap.id.flip) (x ⊗ₜ[R] y)
state_after: no goals