1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MulAction.orbitRel.Quotient.orbit_eq_orbit_out
File: Mathlib/GroupTheory/GroupAction/Basic.lean

tactic: conv_lhs => rw [← hφ x]
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
x : Quotient G α
φ : Quotient G α → α
hφ : Function.RightInverse φ Quotient.mk'
⊢ x.orbit = MulAction.orbit G (φ x)
state_after: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
x : Quotient G α
φ : Quotient G α → α
hφ : Function.RightInverse φ Quotient.mk'
⊢ orbit (Quotient.mk' (φ x)) = MulAction.orbit G (φ x)

tactic: rfl
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
x : Quotient G α
φ : Quotient G α → α
hφ : Function.RightInverse φ Quotient.mk'
⊢ orbit (Quotient.mk' (φ x)) = MulAction.orbit G (φ x)
state_after: no goals
Theorem: ProbabilityTheory.exponentialPDF_of_nonneg
File: Mathlib/Probability/Distributions/Exponential.lean

tactic: simp only [exponentialPDF_eq, if_pos hx]
state_before: r x : ℝ
hx : 0 ≤ x
⊢ exponentialPDF r x = ENNReal.ofReal (r * rexp (-(r * x)))
state_after: no goals
Theorem: FiniteDimensional.finrank_eq_zero_of_rank_eq_zero
File: Mathlib/LinearAlgebra/Dimension/Finite.lean

tactic: delta finrank
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁸ : Ring R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : Nontrivial R
inst✝ : NoZeroSMulDivisors R M
h : Module.rank R M = 0
⊢ finrank R M = 0
state_after: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁸ : Ring R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : Nontrivial R
inst✝ : NoZeroSMulDivisors R M
h : Module.rank R M = 0
⊢ toNat (Module.rank R M) = 0

tactic: rw [h, zero_toNat]
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁸ : Ring R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : Nontrivial R
inst✝ : NoZeroSMulDivisors R M
h : Module.rank R M = 0
⊢ toNat (Module.rank R M) = 0
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_inv_snd
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: cases X
state_before: C : Type u
𝒞 : Category.{v, u} C
inst✝⁴ : MonoidalCategory C
C₁ : Type u₁
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : MonoidalCategory C₁
C₂ : Type u₂
inst✝¹ : Category.{v₂, u₂} C₂
inst✝ : MonoidalCategory C₂
X : C₁ × C₂
⊢ (ρ_ X).inv.2 = (ρ_ X.2).inv
state_after: case mk
C : Type u
𝒞 : Category.{v, u} C
inst✝⁴ : MonoidalCategory C
C₁ : Type u₁
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : MonoidalCategory C₁
C₂ : Type u₂
inst✝¹ : Category.{v₂, u₂} C₂
inst✝ : MonoidalCategory C₂
fst✝ : C₁
snd✝ : C₂
⊢ (ρ_ (fst✝, snd✝)).inv.2 = (ρ_ (fst✝, snd✝).2).inv

tactic: rfl
state_before: case mk
C : Type u
𝒞 : Category.{v, u} C
inst✝⁴ : MonoidalCategory C
C₁ : Type u₁
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : MonoidalCategory C₁
C₂ : Type u₂
inst✝¹ : Category.{v₂, u₂} C₂
inst✝ : MonoidalCategory C₂
fst✝ : C₁
snd✝ : C₂
⊢ (ρ_ (fst✝, snd✝)).inv.2 = (ρ_ (fst✝, snd✝).2).inv
state_after: no goals
Theorem: MeasurableSet.inter
File: Mathlib/MeasureTheory/MeasurableSpace/Defs.lean

tactic: rw [inter_eq_compl_compl_union_compl]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s t u : Set α
m : MeasurableSpace α
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
h₂ : MeasurableSet s₂
⊢ MeasurableSet (s₁ ∩ s₂)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s t u : Set α
m : MeasurableSpace α
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
h₂ : MeasurableSet s₂
⊢ MeasurableSet (s₁ᶜ ∪ s₂ᶜ)ᶜ

tactic: exact (h₁.compl.union h₂.compl).compl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s t u : Set α
m : MeasurableSpace α
s₁ s₂ : Set α
h₁ : MeasurableSet s₁
h₂ : MeasurableSet s₂
⊢ MeasurableSet (s₁ᶜ ∪ s₂ᶜ)ᶜ
state_after: no goals
Theorem: Multiset.filter_cons_of_pos
File: Mathlib/Data/Multiset/Basic.lean

tactic: simpa using h
state_before: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
a : α
s : Multiset α
l : List α
h : p a
⊢ decide (p a) = true
state_after: no goals
Theorem: DFinsupp.sum_sub_index
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: have := (liftAddHom (β := β) fun a => AddMonoidHom.ofMapSub (h a) (h_sub a)).map_sub f g
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → AddGroup (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝ : AddCommGroup γ
f g : Π₀ (i : ι), β i
h : (i : ι) → β i → γ
h_sub : ∀ (i : ι) (b₁ b₂ : β i), h i (b₁ - b₂) = h i b₁ - h i b₂
⊢ (f - g).sum h = f.sum h - g.sum h
state_after: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → AddGroup (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝ : AddCommGroup γ
f g : Π₀ (i : ι), β i
h : (i : ι) → β i → γ
h_sub : ∀ (i : ι) (b₁ b₂ : β i), h i (b₁ - b₂) = h i b₁ - h i b₂
this :
  (liftAddHom fun a => AddMonoidHom.ofMapSub (h a) ⋯) (f - g) =
    (liftAddHom fun a => AddMonoidHom.ofMapSub (h a) ⋯) f - (liftAddHom fun a => AddMonoidHom.ofMapSub (h a) ⋯) g
⊢ (f - g).sum h = f.sum h - g.sum h

tactic: rw [liftAddHom_apply, sumAddHom_apply, sumAddHom_apply, sumAddHom_apply] at this
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → AddGroup (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝ : AddCommGroup γ
f g : Π₀ (i : ι), β i
h : (i : ι) → β i → γ
h_sub : ∀ (i : ι) (b₁ b₂ : β i), h i (b₁ - b₂) = h i b₁ - h i b₂
this :
  (liftAddHom fun a => AddMonoidHom.ofMapSub (h a) ⋯) (f - g) =
    (liftAddHom fun a => AddMonoidHom.ofMapSub (h a) ⋯) f - (liftAddHom fun a => AddMonoidHom.ofMapSub (h a) ⋯) g
⊢ (f - g).sum h = f.sum h - g.sum h
state_after: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → AddGroup (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝ : AddCommGroup γ
f g : Π₀ (i : ι), β i
h : (i : ι) → β i → γ
h_sub : ∀ (i : ι) (b₁ b₂ : β i), h i (b₁ - b₂) = h i b₁ - h i b₂
this :
  ((f - g).sum fun x => ⇑(AddMonoidHom.ofMapSub (h x) ⋯)) =
    (f.sum fun x => ⇑(AddMonoidHom.ofMapSub (h x) ⋯)) - g.sum fun x => ⇑(AddMonoidHom.ofMapSub (h x) ⋯)
⊢ (f - g).sum h = f.sum h - g.sum h

tactic: exact this
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → AddGroup (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝ : AddCommGroup γ
f g : Π₀ (i : ι), β i
h : (i : ι) → β i → γ
h_sub : ∀ (i : ι) (b₁ b₂ : β i), h i (b₁ - b₂) = h i b₁ - h i b₂
this :
  ((f - g).sum fun x => ⇑(AddMonoidHom.ofMapSub (h x) ⋯)) =
    (f.sum fun x => ⇑(AddMonoidHom.ofMapSub (h x) ⋯)) - g.sum fun x => ⇑(AddMonoidHom.ofMapSub (h x) ⋯)
⊢ (f - g).sum h = f.sum h - g.sum h
state_after: no goals
Theorem: TrivSqZeroExt.map_inl
File: Mathlib/Algebra/TrivSqZeroExt.lean

tactic: rw [map, liftEquivOfComm_apply, lift_apply_inl, Algebra.ofId_apply, algebraMap_eq_inl]
state_before: S : Type u_1
R R' : Type u
M : Type v
inst✝²⁶ : CommSemiring S
inst✝²⁵ : Semiring R
inst✝²⁴ : CommSemiring R'
inst✝²³ : AddCommMonoid M
inst✝²² : Algebra S R
inst✝²¹ : Algebra S R'
inst✝²⁰ : Module S M
inst✝¹⁹ : Module R M
inst✝¹⁸ : Module Rᵐᵒᵖ M
inst✝¹⁷ : SMulCommClass R Rᵐᵒᵖ M
inst✝¹⁶ : IsScalarTower S R M
inst✝¹⁵ : IsScalarTower S Rᵐᵒᵖ M
inst✝¹⁴ : Module R' M
inst✝¹³ : Module R'ᵐᵒᵖ M
inst✝¹² : IsCentralScalar R' M
inst✝¹¹ : IsScalarTower S R' M
A : Type u_2
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra S A
inst✝⁸ : Algebra R' A
N : Type u_3
P : Type u_4
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R' N
inst✝⁵ : Module R'ᵐᵒᵖ N
inst✝⁴ : IsCentralScalar R' N
inst✝³ : AddCommMonoid P
inst✝² : Module R' P
inst✝¹ : Module R'ᵐᵒᵖ P
inst✝ : IsCentralScalar R' P
f : M →ₗ[R'] N
r : R'
⊢ (map f) (inl r) = inl r
state_after: no goals
Theorem: Order.radical_nongenerating
File: Mathlib/Order/Radical.lean

tactic: obtain (rfl | w) := eq_top_or_exists_le_coatom a
state_before: α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
a : α
h : a ⊔ radical α = ⊤
⊢ a = ⊤
state_after: case inl
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
h : ⊤ ⊔ radical α = ⊤
⊢ ⊤ = ⊤

case inr
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
a : α
h : a ⊔ radical α = ⊤
w : ∃ a_1, IsCoatom a_1 ∧ a ≤ a_1
⊢ a = ⊤

tactic: rfl
state_before: case inl
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
h : ⊤ ⊔ radical α = ⊤
⊢ ⊤ = ⊤
state_after: no goals

tactic: obtain ⟨m, c, le⟩ := w
state_before: case inr
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
a : α
h : a ⊔ radical α = ⊤
w : ∃ a_1, IsCoatom a_1 ∧ a ≤ a_1
⊢ a = ⊤
state_after: case inr.intro.intro
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
a : α
h : a ⊔ radical α = ⊤
m : α
c : IsCoatom m
le : a ≤ m
⊢ a = ⊤

tactic: have q : a ⊔ radical α ≤ m := sup_le le (radical_le_coatom c)
state_before: case inr.intro.intro
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
a : α
h : a ⊔ radical α = ⊤
m : α
c : IsCoatom m
le : a ≤ m
⊢ a = ⊤
state_after: case inr.intro.intro
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
a : α
h : a ⊔ radical α = ⊤
m : α
c : IsCoatom m
le : a ≤ m
q : a ⊔ radical α ≤ m
⊢ a = ⊤

tactic: rw [h, top_le_iff] at q
state_before: case inr.intro.intro
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
a : α
h : a ⊔ radical α = ⊤
m : α
c : IsCoatom m
le : a ≤ m
q : a ⊔ radical α ≤ m
⊢ a = ⊤
state_after: case inr.intro.intro
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
a : α
h : a ⊔ radical α = ⊤
m : α
c : IsCoatom m
le : a ≤ m
q : m = ⊤
⊢ a = ⊤

tactic: simpa using c.1 q
state_before: case inr.intro.intro
α : Type u_1
inst✝² : CompleteLattice α
β : Type u_2
inst✝¹ : CompleteLattice β
inst✝ : IsCoatomic α
a : α
h : a ⊔ radical α = ⊤
m : α
c : IsCoatom m
le : a ≤ m
q : m = ⊤
⊢ a = ⊤
state_after: no goals
Theorem: Fintype.nonempty_field_iff
File: Mathlib/FieldTheory/Cardinality.lean

tactic: refine ⟨fun ⟨h⟩ => Fintype.isPrimePow_card_of_field, ?_⟩
state_before: α : Type u_1
inst✝ : Fintype α
⊢ Nonempty (Field α) ↔ IsPrimePow ‖α‖
state_after: α : Type u_1
inst✝ : Fintype α
⊢ IsPrimePow ‖α‖ → Nonempty (Field α)

tactic: rintro ⟨p, n, hp, hn, hα⟩
state_before: α : Type u_1
inst✝ : Fintype α
⊢ IsPrimePow ‖α‖ → Nonempty (Field α)
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝ : Fintype α
p n : ℕ
hp : Prime p
hn : 0 < n
hα : p ^ n = ‖α‖
⊢ Nonempty (Field α)

tactic: haveI := Fact.mk hp.nat_prime
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝ : Fintype α
p n : ℕ
hp : Prime p
hn : 0 < n
hα : p ^ n = ‖α‖
⊢ Nonempty (Field α)
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝ : Fintype α
p n : ℕ
hp : Prime p
hn : 0 < n
hα : p ^ n = ‖α‖
this : Fact (Nat.Prime p)
⊢ Nonempty (Field α)

tactic: exact ⟨(Fintype.equivOfCardEq ((GaloisField.card p n hn.ne').trans hα)).symm.field⟩
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝ : Fintype α
p n : ℕ
hp : Prime p
hn : 0 < n
hα : p ^ n = ‖α‖
this : Fact (Nat.Prime p)
⊢ Nonempty (Field α)
state_after: no goals
Theorem: ConvexCone.mem_iInf
File: Mathlib/Analysis/Convex/Cone/Basic.lean

tactic: simp
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMul 𝕜 E
S T : ConvexCone 𝕜 E
ι : Sort u_5
x : E
f : ι → ConvexCone 𝕜 E
⊢ (∀ i ∈ Set.range f, x ∈ ↑i) ↔ ∀ (i : ι), x ∈ f i
state_after: no goals
Theorem: IsTorsionFree.not_torsion
File: Mathlib/GroupTheory/Torsion.lean

tactic: obtain ⟨x, hx⟩ := (nontrivial_iff_exists_ne (1 : G)).mp hN
state_before: G : Type u_1
H : Type u_2
inst✝ : Group G
hN : Nontrivial G
tfG : IsTorsionFree G
⊢ ∃ g, ¬IsOfFinOrder g
state_after: case intro
G : Type u_1
H : Type u_2
inst✝ : Group G
hN : Nontrivial G
tfG : IsTorsionFree G
x : G
hx : x ≠ 1
⊢ ∃ g, ¬IsOfFinOrder g

tactic: exact ⟨x, (tfG x) hx⟩
state_before: case intro
G : Type u_1
H : Type u_2
inst✝ : Group G
hN : Nontrivial G
tfG : IsTorsionFree G
x : G
hx : x ≠ 1
⊢ ∃ g, ¬IsOfFinOrder g
state_after: no goals
Theorem: EReal.neg_mul
File: Mathlib/Data/Real/EReal.lean

tactic: induction x, y using induction₂_neg_left with
| top_zero | zero_top | zero_bot => simp only [zero_mul, mul_zero, neg_zero]
| top_top | top_bot => rfl
| neg_left h => rw [h, neg_neg, neg_neg]
| coe_coe => norm_cast; exact neg_mul _ _
| top_pos _ h => rw [top_mul_coe_of_pos h, neg_top, bot_mul_coe_of_pos h]
| pos_top _ h => rw [coe_mul_top_of_pos h, neg_top, ← coe_neg,
  coe_mul_top_of_neg (neg_neg_of_pos h)]
| top_neg _ h => rw [top_mul_coe_of_neg h, neg_top, bot_mul_coe_of_neg h, neg_bot]
| pos_bot _ h => rw [coe_mul_bot_of_pos h, neg_bot, ← coe_neg,
  coe_mul_bot_of_neg (neg_neg_of_pos h)]
state_before: x y : EReal
⊢ -x * y = -(x * y)
state_after: no goals

tactic: simp only [zero_mul, mul_zero, neg_zero]
state_before: case zero_bot

⊢ -0 * ⊥ = -(0 * ⊥)
state_after: no goals

tactic: rfl
state_before: case top_bot

⊢ -⊤ * ⊥ = -(⊤ * ⊥)
state_after: no goals

tactic: rw [h, neg_neg, neg_neg]
state_before: case neg_left
x✝ y✝ : EReal
h : -x✝ * y✝ = -(x✝ * y✝)
⊢ - -x✝ * y✝ = -(-x✝ * y✝)
state_after: no goals

tactic: norm_cast
state_before: case coe_coe
x✝ y✝ : ℝ
⊢ -↑x✝ * ↑y✝ = -(↑x✝ * ↑y✝)
state_after: case coe_coe
x✝ y✝ : ℝ
⊢ -x✝ * y✝ = -(x✝ * y✝)

tactic: exact neg_mul _ _
state_before: case coe_coe
x✝ y✝ : ℝ
⊢ -x✝ * y✝ = -(x✝ * y✝)
state_after: no goals

tactic: rw [top_mul_coe_of_pos h, neg_top, bot_mul_coe_of_pos h]
state_before: case top_pos
x✝ : ℝ
h : 0 < x✝
⊢ -⊤ * ↑x✝ = -(⊤ * ↑x✝)
state_after: no goals

tactic: rw [coe_mul_top_of_pos h, neg_top, ← coe_neg,
coe_mul_top_of_neg (neg_neg_of_pos h)]
state_before: case pos_top
x✝ : ℝ
h : 0 < x✝
⊢ -↑x✝ * ⊤ = -(↑x✝ * ⊤)
state_after: no goals

tactic: rw [top_mul_coe_of_neg h, neg_top, bot_mul_coe_of_neg h, neg_bot]
state_before: case top_neg
x✝ : ℝ
h : x✝ < 0
⊢ -⊤ * ↑x✝ = -(⊤ * ↑x✝)
state_after: no goals

tactic: rw [coe_mul_bot_of_pos h, neg_bot, ← coe_neg,
coe_mul_bot_of_neg (neg_neg_of_pos h)]
state_before: case pos_bot
x✝ : ℝ
h : 0 < x✝
⊢ -↑x✝ * ⊥ = -(↑x✝ * ⊥)
state_after: no goals
Theorem: MvPowerSeries.coeff_add_monomial_mul
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

tactic: rw [coeff_monomial_mul, if_pos, add_tsub_cancel_left]
state_before: σ : Type u_1
R : Type u_2
inst✝ : Semiring R
m n : σ →₀ ℕ
φ ψ : MvPowerSeries σ R
a : R
⊢ (coeff R (m + n)) ((monomial R m) a * φ) = a * (coeff R n) φ
state_after: case hc
σ : Type u_1
R : Type u_2
inst✝ : Semiring R
m n : σ →₀ ℕ
φ ψ : MvPowerSeries σ R
a : R
⊢ m ≤ m + n

tactic: exact le_add_right le_rfl
state_before: case hc
σ : Type u_1
R : Type u_2
inst✝ : Semiring R
m n : σ →₀ ℕ
φ ψ : MvPowerSeries σ R
a : R
⊢ m ≤ m + n
state_after: no goals
Theorem: WeierstrassCurve.Affine.negY_negY
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: simp only [negY]
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ W.negY x (W.negY x y) = y
state_after: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ -(-y - W.a₁ * x - W.a₃) - W.a₁ * x - W.a₃ = y

tactic: ring1
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ -(-y - W.a₁ * x - W.a₃) - W.a₁ * x - W.a₃ = y
state_after: no goals
Theorem: Sym.map_map
File: Mathlib/Data/Sym/Basic.lean

tactic: dsimp only [Sym.map]
state_before: α✝ : Type u_1
β✝ : Type u_2
n✝ n' m : ℕ
s✝ : Sym α✝ n✝
a b : α✝
α : Type u_3
β : Type u_4
γ : Type u_5
n : ℕ
g : β → γ
f : α → β
s : Sym α n
⊢ ↑(map g (map f s)) = ↑(map (g ∘ f) s)
state_after: α✝ : Type u_1
β✝ : Type u_2
n✝ n' m : ℕ
s✝ : Sym α✝ n✝
a b : α✝
α : Type u_3
β : Type u_4
γ : Type u_5
n : ℕ
g : β → γ
f : α → β
s : Sym α n
⊢ Multiset.map g (Multiset.map f ↑s) = Multiset.map (g ∘ f) ↑s

tactic: simp
state_before: α✝ : Type u_1
β✝ : Type u_2
n✝ n' m : ℕ
s✝ : Sym α✝ n✝
a b : α✝
α : Type u_3
β : Type u_4
γ : Type u_5
n : ℕ
g : β → γ
f : α → β
s : Sym α n
⊢ Multiset.map g (Multiset.map f ↑s) = Multiset.map (g ∘ f) ↑s
state_after: no goals
Theorem: UniformSpace.comap_iInf
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: ext : 1
state_before: α✝ : Type ua
β : Type ub
γ✝ : Type uc
δ : Type ud
ι✝ : Sort u_1
ι : Sort u_2
α : Type u_3
γ : Type u_4
u : ι → UniformSpace γ
f : α → γ
⊢ comap f (⨅ i, u i) = ⨅ i, comap f (u i)
state_after: case h
α✝ : Type ua
β : Type ub
γ✝ : Type uc
δ : Type ud
ι✝ : Sort u_1
ι : Sort u_2
α : Type u_3
γ : Type u_4
u : ι → UniformSpace γ
f : α → γ
⊢ 𝓤 α = 𝓤 α

tactic: simp [uniformity_comap, iInf_uniformity]
state_before: case h
α✝ : Type ua
β : Type ub
γ✝ : Type uc
δ : Type ud
ι✝ : Sort u_1
ι : Sort u_2
α : Type u_3
γ : Type u_4
u : ι → UniformSpace γ
f : α → γ
⊢ 𝓤 α = 𝓤 α
state_after: no goals
Theorem: Nat.dvd_iff_dvd_ofDigits
File: Mathlib/Data/Nat/Digits.lean

tactic: rw [← Int.natCast_dvd_natCast]
state_before: n✝ b b' : ℕ
c : ℤ
h : ↑b ∣ ↑b' - c
n : ℕ
⊢ b ∣ n ↔ ↑b ∣ ofDigits c (b'.digits n)
state_after: n✝ b b' : ℕ
c : ℤ
h : ↑b ∣ ↑b' - c
n : ℕ
⊢ ↑b ∣ ↑n ↔ ↑b ∣ ofDigits c (b'.digits n)

tactic: exact
  dvd_iff_dvd_of_dvd_sub (zmodeq_ofDigits_digits b b' c (Int.modEq_iff_dvd.2 h).symm _).symm.dvd
state_before: n✝ b b' : ℕ
c : ℤ
h : ↑b ∣ ↑b' - c
n : ℕ
⊢ ↑b ∣ ↑n ↔ ↑b ∣ ofDigits c (b'.digits n)
state_after: no goals
Theorem: Matrix.one_fin_three
File: Mathlib/Data/Matrix/Notation.lean

tactic: ext i j
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝¹ : Zero α
inst✝ : One α
⊢ 1 = of ![![1, 0, 0], ![0, 1, 0], ![0, 0, 1]]
state_after: case a
α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝¹ : Zero α
inst✝ : One α
i j : Fin 3
⊢ 1 i j = of ![![1, 0, 0], ![0, 1, 0], ![0, 0, 1]] i j

tactic: fin_cases i <;> fin_cases j <;> rfl
state_before: case a
α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝¹ : Zero α
inst✝ : One α
i j : Fin 3
⊢ 1 i j = of ![![1, 0, 0], ![0, 1, 0], ![0, 0, 1]] i j
state_after: no goals
Theorem: PowerBasis.adjoin_gen_eq_top
File: Mathlib/RingTheory/PowerBasis.lean

tactic: rw [← toSubmodule_eq_top, _root_.eq_top_iff, ← B.basis.span_eq, Submodule.span_le]
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B✝ : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type u_6
inst✝ : Field K
B : PowerBasis R S
⊢ adjoin R {B.gen} = ⊤
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B✝ : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type u_6
inst✝ : Field K
B : PowerBasis R S
⊢ Set.range ⇑B.basis ⊆ ↑(Subalgebra.toSubmodule (adjoin R {B.gen}))

tactic: rintro x ⟨i, rfl⟩
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B✝ : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type u_6
inst✝ : Field K
B : PowerBasis R S
⊢ Set.range ⇑B.basis ⊆ ↑(Subalgebra.toSubmodule (adjoin R {B.gen}))
state_after: case intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B✝ : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type u_6
inst✝ : Field K
B : PowerBasis R S
i : Fin B.dim
⊢ B.basis i ∈ ↑(Subalgebra.toSubmodule (adjoin R {B.gen}))

tactic: rw [B.basis_eq_pow i]
state_before: case intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B✝ : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type u_6
inst✝ : Field K
B : PowerBasis R S
i : Fin B.dim
⊢ B.basis i ∈ ↑(Subalgebra.toSubmodule (adjoin R {B.gen}))
state_after: case intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B✝ : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type u_6
inst✝ : Field K
B : PowerBasis R S
i : Fin B.dim
⊢ B.gen ^ ↑i ∈ ↑(Subalgebra.toSubmodule (adjoin R {B.gen}))

tactic: exact Subalgebra.pow_mem _ (subset_adjoin (Set.mem_singleton _)) _
state_before: case intro
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : Ring S
inst✝⁵ : Algebra R S
A : Type u_4
B✝ : Type u_5
inst✝⁴ : CommRing A
inst✝³ : CommRing B✝
inst✝² : IsDomain B✝
inst✝¹ : Algebra A B✝
K : Type u_6
inst✝ : Field K
B : PowerBasis R S
i : Fin B.dim
⊢ B.gen ^ ↑i ∈ ↑(Subalgebra.toSubmodule (adjoin R {B.gen}))
state_after: no goals
Theorem: LinearMap.lift_rank_le_of_surjective
File: Mathlib/LinearAlgebra/Dimension/Basic.lean

tactic: rw [← rank_range_of_surjective f h]
state_before: R : Type u
R' : Type u'
M M₁ : Type v
M' : Type v'
inst✝⁹ : Ring R
inst✝⁸ : Ring R'
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : Module R' M'
inst✝ : Module R' M₁
f : M →ₗ[R] M'
h : Surjective ⇑f
⊢ lift.{v, v'} (Module.rank R M') ≤ lift.{v', v} (Module.rank R M)
state_after: R : Type u
R' : Type u'
M M₁ : Type v
M' : Type v'
inst✝⁹ : Ring R
inst✝⁸ : Ring R'
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : Module R' M'
inst✝ : Module R' M₁
f : M →ₗ[R] M'
h : Surjective ⇑f
⊢ lift.{v, v'} (Module.rank R ↥(range f)) ≤ lift.{v', v} (Module.rank R M)

tactic: apply lift_rank_range_le
state_before: R : Type u
R' : Type u'
M M₁ : Type v
M' : Type v'
inst✝⁹ : Ring R
inst✝⁸ : Ring R'
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : Module R' M'
inst✝ : Module R' M₁
f : M →ₗ[R] M'
h : Surjective ⇑f
⊢ lift.{v, v'} (Module.rank R ↥(range f)) ≤ lift.{v', v} (Module.rank R M)
state_after: no goals
Theorem: Cardinal.power_bit1
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [bit1, ← power_bit0, power_add, power_one]
state_before: α β : Type u
a b : Cardinal.{u_1}
⊢ a ^ bit1 b = a ^ b * a ^ b * a
state_after: no goals