1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Equiv.Set.sumCompl_symm_apply
File: Mathlib/Logic/Equiv/Set.lean

tactic: cases' x with x hx
state_before: α✝ : Sort u
β : Sort v
γ : Sort w
α : Type u_1
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
x : ↑s
⊢ (Set.sumCompl s).symm ↑x = Sum.inl x
state_after: case mk
α✝ : Sort u
β : Sort v
γ : Sort w
α : Type u_1
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
x : α
hx : x ∈ s
⊢ (Set.sumCompl s).symm ↑⟨x, hx⟩ = Sum.inl ⟨x, hx⟩

tactic: exact Set.sumCompl_symm_apply_of_mem hx
state_before: case mk
α✝ : Sort u
β : Sort v
γ : Sort w
α : Type u_1
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
x : α
hx : x ∈ s
⊢ (Set.sumCompl s).symm ↑⟨x, hx⟩ = Sum.inl ⟨x, hx⟩
state_after: no goals
Theorem: Set.Ioo_eq_empty_iff
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: rw [← not_nonempty_iff_eq_empty, not_iff_not, nonempty_Ioo]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
a a₁ a₂ b b₁ b₂ c x : α
inst✝ : DenselyOrdered α
⊢ Ioo a b = ∅ ↔ ¬a < b
state_after: no goals
Theorem: pow_gcd_card_eq_one_iff
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: let ⟨m, hm⟩ := gcd_dvd_left n (Fintype.card G)
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
h : x ^ n.gcd (card G) = 1
⊢ x ^ n = 1
state_after: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
h : x ^ n.gcd (card G) = 1
m : ℕ
hm : n = n.gcd (card G) * m
⊢ x ^ n = 1

tactic: rw [hm, pow_mul, h, one_pow]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
h : x ^ n.gcd (card G) = 1
m : ℕ
hm : n = n.gcd (card G) * m
⊢ x ^ n = 1
state_after: no goals
Theorem: integral_sin_pow_odd_mul_cos_pow
File: Mathlib/Analysis/SpecialFunctions/Integrals.lean

tactic: fun_prop
state_before: a b : ℝ
n✝ m n : ℕ
⊢ Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
state_after: no goals

tactic: rw [integral_symm]
state_before: a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ ∫ (x : ℝ) in a..b, sin x ^ (2 * m + 1) * cos x ^ n = -∫ (x : ℝ) in b..a, sin x ^ (2 * m + 1) * cos x ^ n
state_after: no goals

tactic: simp only [_root_.pow_succ, pow_mul, _root_.pow_zero, one_mul, mul_neg, neg_mul,
  integral_neg, neg_inj]
state_before: a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ -∫ (x : ℝ) in b..a, sin x ^ (2 * m + 1) * cos x ^ n = ∫ (x : ℝ) in b..a, (1 - cos x ^ 2) ^ m * -sin x * cos x ^ n
state_after: a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ ∫ (x : ℝ) in b..a, (sin x * sin x) ^ m * sin x * cos x ^ n =
    ∫ (x : ℝ) in b..a, (1 - cos x * cos x) ^ m * sin x * cos x ^ n

tactic: congr! 5
state_before: a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ ∫ (x : ℝ) in b..a, (sin x * sin x) ^ m * sin x * cos x ^ n =
    ∫ (x : ℝ) in b..a, (1 - cos x * cos x) ^ m * sin x * cos x ^ n
state_after: case h.e'_4.h.h.e'_5.h.e'_5.h.e'_5
a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
x✝ : ℝ
⊢ sin x✝ * sin x✝ = 1 - cos x✝ * cos x✝

tactic: rw [← sq, ← sq, sin_sq]
state_before: case h.e'_4.h.h.e'_5.h.e'_5.h.e'_5
a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
x✝ : ℝ
⊢ sin x✝ * sin x✝ = 1 - cos x✝ * cos x✝
state_after: no goals

tactic: congr
state_before: a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ ∫ (x : ℝ) in b..a, (1 - cos x ^ 2) ^ m * -sin x * cos x ^ n =
    ∫ (x : ℝ) in b..a, cos x ^ n * (1 - cos x ^ 2) ^ m * -sin x
state_after: case e_f
a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ (fun x => (1 - cos x ^ 2) ^ m * -sin x * cos x ^ n) = fun x => cos x ^ n * (1 - cos x ^ 2) ^ m * -sin x

tactic: ext
state_before: case e_f
a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ (fun x => (1 - cos x ^ 2) ^ m * -sin x * cos x ^ n) = fun x => cos x ^ n * (1 - cos x ^ 2) ^ m * -sin x
state_after: case e_f.h
a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
x✝ : ℝ
⊢ (1 - cos x✝ ^ 2) ^ m * -sin x✝ * cos x✝ ^ n = cos x✝ ^ n * (1 - cos x✝ ^ 2) ^ m * -sin x✝

tactic: ring
state_before: case e_f.h
a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
x✝ : ℝ
⊢ (1 - cos x✝ ^ 2) ^ m * -sin x✝ * cos x✝ ^ n = cos x✝ ^ n * (1 - cos x✝ ^ 2) ^ m * -sin x✝
state_after: no goals
Theorem: IsCoprime.prod_right_iff
File: Mathlib/RingTheory/Coprime/Lemmas.lean

tactic: simpa only [isCoprime_comm] using IsCoprime.prod_left_iff (R := R)
state_before: R : Type u
I : Type v
inst✝ : CommSemiring R
x y z : R
s : I → R
t : Finset I
⊢ IsCoprime x (∏ i ∈ t, s i) ↔ ∀ i ∈ t, IsCoprime x (s i)
state_after: no goals
Theorem: List.count_pos_iff_mem
File: .lake/packages/batteries/Batteries/Data/List/Count.lean

tactic: simp only [count, countP_pos, beq_iff_eq, exists_eq_right]
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l : List α
⊢ 0 < count a l ↔ a ∈ l
state_after: no goals
Theorem: Ideal.sup_prod_eq_top
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: simp_rw [one_eq_top, sup_top_eq]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J✝ K L : Ideal R
s : Finset ι
J : ι → Ideal R
h : ∀ i ∈ s, I ⊔ J i = ⊤
⊢ (fun J => I ⊔ J = ⊤) 1
state_after: no goals
Theorem: Filter.Tendsto.fin_insertNth
File: Mathlib/Topology/Constructions.lean

tactic: simpa
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
π✝ : ι → Type u_6
κ : Type u_7
inst✝¹ : TopologicalSpace X
T : (i : ι) → TopologicalSpace (π✝ i)
f✝ : X → (i : ι) → π✝ i
n : ℕ
π : Fin (n + 1) → Type u_8
inst✝ : (i : Fin (n + 1)) → TopologicalSpace (π i)
i : Fin (n + 1)
f : Y → π i
l : Filter Y
x : π i
hf : Tendsto f l (𝓝 x)
g : Y → (j : Fin n) → π (i.succAbove j)
y : (j : Fin n) → π (i.succAbove j)
hg : Tendsto g l (𝓝 y)
j : Fin (n + 1)
⊢ Tendsto (fun i_1 => i.insertNth (f i_1) (g i_1) i) l (𝓝 (i.insertNth x y i))
state_after: no goals

tactic: simpa using tendsto_pi_nhds.1 hg
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
π✝ : ι → Type u_6
κ : Type u_7
inst✝¹ : TopologicalSpace X
T : (i : ι) → TopologicalSpace (π✝ i)
f✝ : X → (i : ι) → π✝ i
n : ℕ
π : Fin (n + 1) → Type u_8
inst✝ : (i : Fin (n + 1)) → TopologicalSpace (π i)
i : Fin (n + 1)
f : Y → π i
l : Filter Y
x : π i
hf : Tendsto f l (𝓝 x)
g : Y → (j : Fin n) → π (i.succAbove j)
y : (j : Fin n) → π (i.succAbove j)
hg : Tendsto g l (𝓝 y)
j : Fin (n + 1)
⊢ ∀ (j : Fin n),
    Tendsto (fun i_1 => i.insertNth (f i_1) (g i_1) (i.succAbove j)) l (𝓝 (i.insertNth x y (i.succAbove j)))
state_after: no goals
Theorem: Function.Antiperiodic.const_smul
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [smul_add, smul_inv_smul] using h (a • x)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝³ : AddMonoid α
inst✝² : Neg β
inst✝¹ : Group γ
inst✝ : DistribMulAction γ α
h : Antiperiodic f c
a : γ
x : α
⊢ (fun x => f (a • x)) (x + a⁻¹ • c) = -(fun x => f (a • x)) x
state_after: no goals
Theorem: Pi.nontrivial_at
File: Mathlib/Logic/Nontrivial/Basic.lean

tactic: letI := Classical.decEq (∀ i : I, f i)
state_before: α : Type u_1
β : Type u_2
I : Type u_3
f : I → Type u_4
i' : I
inst : ∀ (i : I), Nonempty (f i)
inst✝ : Nontrivial (f i')
⊢ Nontrivial ((i : I) → f i)
state_after: α : Type u_1
β : Type u_2
I : Type u_3
f : I → Type u_4
i' : I
inst : ∀ (i : I), Nonempty (f i)
inst✝ : Nontrivial (f i')
this : DecidableEq ((i : I) → f i) := Classical.decEq ((i : I) → f i)
⊢ Nontrivial ((i : I) → f i)

tactic: exact (Function.update_injective (fun i ↦ Classical.choice (inst i)) i').nontrivial
state_before: α : Type u_1
β : Type u_2
I : Type u_3
f : I → Type u_4
i' : I
inst : ∀ (i : I), Nonempty (f i)
inst✝ : Nontrivial (f i')
this : DecidableEq ((i : I) → f i) := Classical.decEq ((i : I) → f i)
⊢ Nontrivial ((i : I) → f i)
state_after: no goals
Theorem: DFinsupp.mapRange_single
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: by_cases h : i = i'
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝⁴ : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
i' : ι
⊢ (mapRange f hf (single i b)) i' = (single i (f i b)) i'
state_after: case pos
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝⁴ : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
i' : ι
h : i = i'
⊢ (mapRange f hf (single i b)) i' = (single i (f i b)) i'

case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝⁴ : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
i' : ι
h : ¬i = i'
⊢ (mapRange f hf (single i b)) i' = (single i (f i b)) i'

tactic: subst i'
state_before: case pos
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝⁴ : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
i' : ι
h : i = i'
⊢ (mapRange f hf (single i b)) i' = (single i (f i b)) i'
state_after: case pos
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝⁴ : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
⊢ (mapRange f hf (single i b)) i = (single i (f i b)) i

tactic: simp
state_before: case pos
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝⁴ : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
⊢ (mapRange f hf (single i b)) i = (single i (f i b)) i
state_after: no goals

tactic: simp [h, hf]
state_before: case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝⁴ : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
i' : ι
h : ¬i = i'
⊢ (mapRange f hf (single i b)) i' = (single i (f i b)) i'
state_after: no goals
Theorem: AddEquiv.toIntLinearEquiv_toAddEquiv
File: Mathlib/Algebra/Module/Equiv.lean

tactic: ext
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
k : Type u_5
K : Type u_6
S : Type u_7
M : Type u_8
M₁ : Type u_9
M₂ : Type u_10
M₃ : Type u_11
N₁ : Type u_12
N₂ : Type u_13
N₃ : Type u_14
N₄ : Type u_15
ι : Type u_16
inst✝² : AddCommGroup M
inst✝¹ : AddCommGroup M₂
inst✝ : AddCommGroup M₃
e : M ≃+ M₂
⊢ ↑e.toIntLinearEquiv = e
state_after: case h
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
k : Type u_5
K : Type u_6
S : Type u_7
M : Type u_8
M₁ : Type u_9
M₂ : Type u_10
M₃ : Type u_11
N₁ : Type u_12
N₂ : Type u_13
N₃ : Type u_14
N₄ : Type u_15
ι : Type u_16
inst✝² : AddCommGroup M
inst✝¹ : AddCommGroup M₂
inst✝ : AddCommGroup M₃
e : M ≃+ M₂
x✝ : M
⊢ ↑e.toIntLinearEquiv x✝ = e x✝

tactic: rfl
state_before: case h
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
k : Type u_5
K : Type u_6
S : Type u_7
M : Type u_8
M₁ : Type u_9
M₂ : Type u_10
M₃ : Type u_11
N₁ : Type u_12
N₂ : Type u_13
N₃ : Type u_14
N₄ : Type u_15
ι : Type u_16
inst✝² : AddCommGroup M
inst✝¹ : AddCommGroup M₂
inst✝ : AddCommGroup M₃
e : M ≃+ M₂
x✝ : M
⊢ ↑e.toIntLinearEquiv x✝ = e x✝
state_after: no goals
Theorem: Ordinal.nfp_lt_ord
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: simpa using Cardinal.one_lt_aleph0.trans hc
state_before: α : Type u_1
r : α → α → Prop
f : Ordinal.{u_2} → Ordinal.{u_2}
c : Ordinal.{u_2}
hc : ℵ₀ < c.cof
hf : ∀ i < c, f i < c
a : Ordinal.{u_2}
⊢ Cardinal.lift.{u_2, 0} #Unit < c.cof
state_after: no goals
Theorem: Profinite.NobelingProof.contained_proj
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: intro x ⟨_, _, h⟩ j hj
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
⊢ contained (π C fun x => ord I x < o) o
state_after: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
x w✝ : I → Bool
left✝ : w✝ ∈ C
h : Proj (fun x => ord I x < o) w✝ = x
j : I
hj : x j = true
⊢ ord I j < o

tactic: aesop (add simp Proj)
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
x w✝ : I → Bool
left✝ : w✝ ∈ C
h : Proj (fun x => ord I x < o) w✝ = x
j : I
hj : x j = true
⊢ ord I j < o
state_after: no goals
Theorem: List.get_indexOf
File: Mathlib/Data/List/Nodup.lean

tactic: simp [indexOf_getElem, H]
state_before: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a b : α
inst✝ : DecidableEq α
l : List α
H : l.Nodup
i : Fin l.length
⊢ indexOf (l.get i) l = ↑i
state_after: no goals
Theorem: Ideal.toCotangent_eq
File: Mathlib/RingTheory/Ideal/Cotangent.lean

tactic: rw [← sub_eq_zero]
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x y : ↥I
⊢ I.toCotangent x = I.toCotangent y ↔ ↑x - ↑y ∈ I ^ 2
state_after: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x y : ↥I
⊢ I.toCotangent x - I.toCotangent y = 0 ↔ ↑x - ↑y ∈ I ^ 2

tactic: exact I.mem_toCotangent_ker
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x y : ↥I
⊢ I.toCotangent x - I.toCotangent y = 0 ↔ ↑x - ↑y ∈ I ^ 2
state_after: no goals
Theorem: SemidirectProduct.map_inl
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: simp [map]
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : Group N
inst✝³ : Group G
inst✝² : Group H
φ : G →* MulAut N
N₁ : Type u_4
G₁ : Type u_5
inst✝¹ : Group N₁
inst✝ : Group G₁
φ₁ : G₁ →* MulAut N₁
f₁ : N →* N₁
f₂ : G →* G₁
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (φ₁ (f₂ g))).comp f₁
n : N
⊢ (map f₁ f₂ h) (inl n) = inl (f₁ n)
state_after: no goals
Theorem: CliffordAlgebra.ι_range_map_reverse
File: Mathlib/LinearAlgebra/CliffordAlgebra/Conjugation.lean

tactic: rw [reverse, reverseOp, Submodule.map_comp, ι_range_map_lift, LinearMap.range_comp,
  ← Submodule.map_comp]
state_before: R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
⊢ Submodule.map reverse (LinearMap.range (ι Q)) = LinearMap.range (ι Q)
state_after: R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
⊢ Submodule.map (↑(MulOpposite.opLinearEquiv R).symm ∘ₗ ↑(MulOpposite.opLinearEquiv R)) (LinearMap.range (ι Q)) =
    LinearMap.range (ι Q)

tactic: exact Submodule.map_id _
state_before: R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
⊢ Submodule.map (↑(MulOpposite.opLinearEquiv R).symm ∘ₗ ↑(MulOpposite.opLinearEquiv R)) (LinearMap.range (ι Q)) =
    LinearMap.range (ι Q)
state_after: no goals
Theorem: RelEmbedding.acc
File: Mathlib/Order/RelIso/Basic.lean

tactic: generalize h : f a = b
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
u : δ → δ → Prop
f : r ↪r s
a : α
⊢ Acc s (f a) → Acc r a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
u : δ → δ → Prop
f : r ↪r s
a : α
b : β
h : f a = b
⊢ Acc s b → Acc r a

tactic: intro ac
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
u : δ → δ → Prop
f : r ↪r s
a : α
b : β
h : f a = b
⊢ Acc s b → Acc r a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
u : δ → δ → Prop
f : r ↪r s
a : α
b : β
h : f a = b
ac : Acc s b
⊢ Acc r a

tactic: induction' ac with _ H IH generalizing a
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
u : δ → δ → Prop
f : r ↪r s
a : α
b : β
h : f a = b
ac : Acc s b
⊢ Acc r a
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
u : δ → δ → Prop
f : r ↪r s
b x✝ : β
H : ∀ (y : β), s y x✝ → Acc s y
IH : ∀ (y : β), s y x✝ → ∀ (a : α), f a = y → Acc r a
a : α
h : f a = x✝
⊢ Acc r a

tactic: subst h
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
u : δ → δ → Prop
f : r ↪r s
b x✝ : β
H : ∀ (y : β), s y x✝ → Acc s y
IH : ∀ (y : β), s y x✝ → ∀ (a : α), f a = y → Acc r a
a : α
h : f a = x✝
⊢ Acc r a
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
u : δ → δ → Prop
f : r ↪r s
b : β
a : α
H : ∀ (y : β), s y (f a) → Acc s y
IH : ∀ (y : β), s y (f a) → ∀ (a : α), f a = y → Acc r a
⊢ Acc r a

tactic: exact ⟨_, fun a' h => IH (f a') (f.map_rel_iff.2 h) _ rfl⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
u : δ → δ → Prop
f : r ↪r s
b : β
a : α
H : ∀ (y : β), s y (f a) → Acc s y
IH : ∀ (y : β), s y (f a) → ∀ (a : α), f a = y → Acc r a
⊢ Acc r a
state_after: no goals
Theorem: HomologicalComplex.biprod_inr_snd_f
File: Mathlib/Algebra/Homology/HomologicalComplexBiprod.lean

tactic: rw [← comp_f, biprod.inr_snd, id_f]
state_before: C : Type u_1
ι : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Preadditive C
c : ComplexShape ι
K L : HomologicalComplex C c
inst✝ : ∀ (i : ι), HasBinaryBiproduct (K.X i) (L.X i)
i : ι
⊢ biprod.inr.f i ≫ biprod.snd.f i = 𝟙 (L.X i)
state_after: no goals
Theorem: Polynomial.natDegree_C_mul_X
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simpa only [pow_one] using natDegree_C_mul_X_pow 1 a ha
state_before: R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
a : R
ha : a ≠ 0
⊢ (C a * X).natDegree = 1
state_after: no goals
Theorem: AlgebraicGeometry.StructureSheaf.germ_toOpen
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: rw [← toOpen_germ]
state_before: R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
x : ↥U
f : R
⊢ ((structureSheaf R).presheaf.germ x) ((toOpen R U) f) = (toStalk R ↑x) f
state_after: R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
x : ↥U
f : R
⊢ ((structureSheaf R).presheaf.germ x) ((toOpen R U) f) = (toOpen R U ≫ (structureSheaf R).presheaf.germ x) f

tactic: rfl
state_before: R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
x : ↥U
f : R
⊢ ((structureSheaf R).presheaf.germ x) ((toOpen R U) f) = (toOpen R U ≫ (structureSheaf R).presheaf.germ x) f
state_after: no goals
Theorem: LieAlgebra.radical_eq_top_of_isSolvable
File: Mathlib/Algebra/Lie/Solvable.lean

tactic: rw [eq_top_iff]
state_before: R : Type u
L : Type v
M : Type w
L' : Type w₁
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : LieRing L'
inst✝¹ : LieAlgebra R L'
I J : LieIdeal R L
f : L' →ₗ⁅R⁆ L
inst✝ : IsSolvable R L
⊢ radical R L = ⊤
state_after: R : Type u
L : Type v
M : Type w
L' : Type w₁
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : LieRing L'
inst✝¹ : LieAlgebra R L'
I J : LieIdeal R L
f : L' →ₗ⁅R⁆ L
inst✝ : IsSolvable R L
⊢ ⊤ ≤ radical R L

tactic: exact le_sSup <| inferInstanceAs (IsSolvable R (⊤ : LieIdeal R L))
state_before: R : Type u
L : Type v
M : Type w
L' : Type w₁
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : LieRing L'
inst✝¹ : LieAlgebra R L'
I J : LieIdeal R L
f : L' →ₗ⁅R⁆ L
inst✝ : IsSolvable R L
⊢ ⊤ ≤ radical R L
state_after: no goals
Theorem: nhdsWithin_inter_of_mem
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [nhdsWithin_inter, inf_eq_right]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s t : Set α
h : s ∈ 𝓝[t] a
⊢ 𝓝[s ∩ t] a = 𝓝[t] a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s t : Set α
h : s ∈ 𝓝[t] a
⊢ 𝓝[t] a ≤ 𝓝[s] a

tactic: exact nhdsWithin_le_of_mem h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s t : Set α
h : s ∈ 𝓝[t] a
⊢ 𝓝[t] a ≤ 𝓝[s] a
state_after: no goals
Theorem: Nat.sub_lt_sub_iff_right
File: Mathlib/Data/Nat/Defs.lean

tactic: omega
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h : c ≤ a
⊢ a - c < b - c ↔ a < b
state_after: no goals
Theorem: Inducing.isClosed_iff
File: Mathlib/Topology/Maps.lean

tactic: rw [hf.induced, isClosed_induced_iff]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hf : Inducing f
s : Set X
⊢ IsClosed s ↔ ∃ t, IsClosed t ∧ f ⁻¹' t = s
state_after: no goals
Theorem: DirectSum.of_intCast
File: Mathlib/Algebra/DirectSum/Ring.lean

tactic: rfl
state_before: ι : Type u_1
inst✝³ : DecidableEq ι
A : ι → Type u_2
inst✝² : (i : ι) → AddCommGroup (A i)
inst✝¹ : AddMonoid ι
inst✝ : GRing A
n : ℤ
⊢ (of A 0) ↑n = ↑n
state_after: no goals
Theorem: Matrix.vecMul_one
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : NonAssocSemiring α
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : DecidableEq m
v : m → α
⊢ v ᵥ* 1 = v
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : NonAssocSemiring α
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : DecidableEq m
v : m → α
x✝ : m
⊢ (v ᵥ* 1) x✝ = v x✝

tactic: rw [← diagonal_one, vecMul_diagonal, mul_one]
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : NonAssocSemiring α
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : DecidableEq m
v : m → α
x✝ : m
⊢ (v ᵥ* 1) x✝ = v x✝
state_after: no goals