1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ascPochhammer_natDegree
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

tactic: induction' n with n hn
state_before: S : Type u
inst✝² : Semiring S
n : ℕ
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
⊢ (ascPochhammer S n).natDegree = n
state_after: case zero
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
⊢ (ascPochhammer S 0).natDegree = 0

case succ
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
n : ℕ
hn : (ascPochhammer S n).natDegree = n
⊢ (ascPochhammer S (n + 1)).natDegree = n + 1

tactic: simp
state_before: case zero
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
⊢ (ascPochhammer S 0).natDegree = 0
state_after: no goals

tactic: have : natDegree (X + (n : S[X])) = 1 := natDegree_X_add_C (n : S)
state_before: case succ
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
n : ℕ
hn : (ascPochhammer S n).natDegree = n
⊢ (ascPochhammer S (n + 1)).natDegree = n + 1
state_after: case succ
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
n : ℕ
hn : (ascPochhammer S n).natDegree = n
this : (X + ↑n).natDegree = 1
⊢ (ascPochhammer S (n + 1)).natDegree = n + 1

tactic: rw [ascPochhammer_succ_right,
    natDegree_mul _ (ne_zero_of_natDegree_gt <| this.symm ▸ Nat.zero_lt_one), hn, this]
state_before: case succ
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
n : ℕ
hn : (ascPochhammer S n).natDegree = n
this : (X + ↑n).natDegree = 1
⊢ (ascPochhammer S (n + 1)).natDegree = n + 1
state_after: S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
n : ℕ
hn : (ascPochhammer S n).natDegree = n
this : (X + ↑n).natDegree = 1
⊢ ascPochhammer S n ≠ 0

tactic: cases n
state_before: S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
n : ℕ
hn : (ascPochhammer S n).natDegree = n
this : (X + ↑n).natDegree = 1
⊢ ascPochhammer S n ≠ 0
state_after: case zero
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
hn : (ascPochhammer S 0).natDegree = 0
this : (X + ↑0).natDegree = 1
⊢ ascPochhammer S 0 ≠ 0

case succ
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
n✝ : ℕ
hn : (ascPochhammer S (n✝ + 1)).natDegree = n✝ + 1
this : (X + ↑(n✝ + 1)).natDegree = 1
⊢ ascPochhammer S (n✝ + 1) ≠ 0

tactic: simp
state_before: case zero
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
hn : (ascPochhammer S 0).natDegree = 0
this : (X + ↑0).natDegree = 1
⊢ ascPochhammer S 0 ≠ 0
state_after: no goals

tactic: refine ne_zero_of_natDegree_gt <| hn.symm ▸ Nat.add_one_pos _
state_before: case succ
S : Type u
inst✝² : Semiring S
inst✝¹ : NoZeroDivisors S
inst✝ : Nontrivial S
n✝ : ℕ
hn : (ascPochhammer S (n✝ + 1)).natDegree = n✝ + 1
this : (X + ↑(n✝ + 1)).natDegree = 1
⊢ ascPochhammer S (n✝ + 1) ≠ 0
state_after: no goals
Theorem: Rat.zero_add
File: Mathlib/Data/Rat/Defs.lean

tactic: simp [add_def, normalize_eq_mkRat]
state_before: q a b c : ℚ
⊢ 0 + a = a
state_after: no goals
Theorem: HurwitzZeta.differentiableAt_completedCosZeta
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

tactic: refine (((hurwitzEvenFEPair a).symm.differentiableAt_Λ (Or.inl ?_) ?_).comp s
    (differentiableAt_id.div_const _)).div_const _
state_before: a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
⊢ DifferentiableAt ℂ (completedCosZeta a) s
state_after: case refine_1
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
⊢ s / 2 ≠ 0

case refine_2
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
⊢ s / 2 ≠ ↑(hurwitzEvenFEPair a).symm.k ∨ (hurwitzEvenFEPair a).symm.g₀ = 0

tactic: exact div_ne_zero_iff.mpr ⟨hs, two_ne_zero⟩
state_before: case refine_1
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
⊢ s / 2 ≠ 0
state_after: no goals

tactic: change s / 2 ≠ ↑(1 / 2 : ℝ) ∨ (if a = 0 then 1 else 0) = 0
state_before: case refine_2
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
⊢ s / 2 ≠ ↑(hurwitzEvenFEPair a).symm.k ∨ (hurwitzEvenFEPair a).symm.g₀ = 0
state_after: case refine_2
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
⊢ s / 2 ≠ ↑(1 / 2) ∨ (if a = 0 then 1 else 0) = 0

tactic: refine Or.imp (fun h ↦ ?_) (fun ha ↦ ?_) hs'
state_before: case refine_2
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
⊢ s / 2 ≠ ↑(1 / 2) ∨ (if a = 0 then 1 else 0) = 0
state_after: case refine_2.refine_1
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
h : s ≠ 1
⊢ s / 2 ≠ ↑(1 / 2)

case refine_2.refine_2
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
ha : a ≠ 0
⊢ (if a = 0 then 1 else 0) = 0

tactic: simpa only [push_cast] using h ∘ (div_left_inj' two_ne_zero).mp
state_before: case refine_2.refine_1
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
h : s ≠ 1
⊢ s / 2 ≠ ↑(1 / 2)
state_after: no goals

tactic: simp_rw [eq_false_intro ha, if_false]
state_before: case refine_2.refine_2
a : UnitAddCircle
s : ℂ
hs : s ≠ 0
hs' : s ≠ 1 ∨ a ≠ 0
ha : a ≠ 0
⊢ (if a = 0 then 1 else 0) = 0
state_after: no goals
Theorem: Nat.factorizationLCMRight_pos
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: apply Nat.pos_of_ne_zero
state_before: a b m n p : ℕ
⊢ 0 < a.factorizationLCMRight b
state_after: case a
a b m n p : ℕ
⊢ a.factorizationLCMRight b ≠ 0

tactic: rw [factorizationLCMRight, Finsupp.prod_ne_zero_iff]
state_before: case a
a b m n p : ℕ
⊢ a.factorizationLCMRight b ≠ 0
state_after: case a
a b m n p : ℕ
⊢ ∀ i ∈ (a.lcm b).factorization.support,
    (if b.factorization i ≤ a.factorization i then 1 else i ^ (a.lcm b).factorization i) ≠ 0

tactic: intro p _ H
state_before: case a
a b m n p : ℕ
⊢ ∀ i ∈ (a.lcm b).factorization.support,
    (if b.factorization i ≤ a.factorization i then 1 else i ^ (a.lcm b).factorization i) ≠ 0
state_after: case a
a b m n p✝ p : ℕ
a✝ : p ∈ (a.lcm b).factorization.support
H : (if b.factorization p ≤ a.factorization p then 1 else p ^ (a.lcm b).factorization p) = 0
⊢ False

tactic: by_cases h : b.factorization p ≤ a.factorization p
state_before: case a
a b m n p✝ p : ℕ
a✝ : p ∈ (a.lcm b).factorization.support
H : (if b.factorization p ≤ a.factorization p then 1 else p ^ (a.lcm b).factorization p) = 0
⊢ False
state_after: case pos
a b m n p✝ p : ℕ
a✝ : p ∈ (a.lcm b).factorization.support
H : (if b.factorization p ≤ a.factorization p then 1 else p ^ (a.lcm b).factorization p) = 0
h : b.factorization p ≤ a.factorization p
⊢ False

case neg
a b m n p✝ p : ℕ
a✝ : p ∈ (a.lcm b).factorization.support
H : (if b.factorization p ≤ a.factorization p then 1 else p ^ (a.lcm b).factorization p) = 0
h : ¬b.factorization p ≤ a.factorization p
⊢ False

tactic: simp only [h, reduceIte, pow_eq_zero_iff', ne_eq] at H
state_before: case pos
a b m n p✝ p : ℕ
a✝ : p ∈ (a.lcm b).factorization.support
H : (if b.factorization p ≤ a.factorization p then 1 else p ^ (a.lcm b).factorization p) = 0
h : b.factorization p ≤ a.factorization p
⊢ False
state_after: no goals

tactic: simp only [h, ↓reduceIte, pow_eq_zero_iff', ne_eq] at H
state_before: case neg
a b m n p✝ p : ℕ
a✝ : p ∈ (a.lcm b).factorization.support
H : (if b.factorization p ≤ a.factorization p then 1 else p ^ (a.lcm b).factorization p) = 0
h : ¬b.factorization p ≤ a.factorization p
⊢ False
state_after: case neg
a b m n p✝ p : ℕ
a✝ : p ∈ (a.lcm b).factorization.support
h : ¬b.factorization p ≤ a.factorization p
H : p = 0 ∧ ¬(a.lcm b).factorization p = 0
⊢ False

tactic: simpa [H.1] using H.2
state_before: case neg
a b m n p✝ p : ℕ
a✝ : p ∈ (a.lcm b).factorization.support
h : ¬b.factorization p ≤ a.factorization p
H : p = 0 ∧ ¬(a.lcm b).factorization p = 0
⊢ False
state_after: no goals
Theorem: Finset.weightedVSubVSubWeights_apply_right
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp [weightedVSubVSubWeights, h.symm]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝ : DecidableEq ι
i j : ι
h : i ≠ j
⊢ weightedVSubVSubWeights k i j j = -1
state_after: no goals
Theorem: TendstoUniformlyOnFilter.comp
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

tactic: rw [tendstoUniformlyOnFilter_iff_tendsto] at h ⊢
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g✝ : ι → α
h : TendstoUniformlyOnFilter F f p p'
g : γ → α
⊢ TendstoUniformlyOnFilter (fun n => F n ∘ g) (f ∘ g) p (comap g p')
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g✝ : ι → α
h : Tendsto (fun q => (f q.2, F q.1 q.2)) (p ×ˢ p') (𝓤 β)
g : γ → α
⊢ Tendsto (fun q => ((f ∘ g) q.2, (F q.1 ∘ g) q.2)) (p ×ˢ comap g p') (𝓤 β)

tactic: exact h.comp (tendsto_id.prod_map tendsto_comap)
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g✝ : ι → α
h : Tendsto (fun q => (f q.2, F q.1 q.2)) (p ×ˢ p') (𝓤 β)
g : γ → α
⊢ Tendsto (fun q => ((f ∘ g) q.2, (F q.1 ∘ g) q.2)) (p ×ˢ comap g p') (𝓤 β)
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isInt_zpow_neg
File: Mathlib/Tactic/NormNum/Pow.lean

tactic: rwa [pb.out, Int.cast_negOfNat, zpow_neg, zpow_natCast]
state_before: α : Type u_1
inst✝ : DivisionRing α
a : α
b : ℤ
nb ne : ℕ
pb : IsInt b (Int.negOfNat nb)
pe' : IsInt (a ^ nb)⁻¹ (Int.negOfNat ne)
⊢ IsInt (a ^ b) (Int.negOfNat ne)
state_after: no goals
Theorem: ONote.fastGrowingε₀_zero
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: simp [fastGrowingε₀]
state_before: ⊢ fastGrowingε₀ 0 = 1
state_after: no goals
Theorem: CategoryTheory.Presheaf.isLocallySurjective_iff_whisker_forget
File: Mathlib/CategoryTheory/Sites/LocallySurjective.lean

tactic: simp only [isLocallySurjective_iff_imagePresheaf_sheafify_eq_top]
state_before: C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝¹ : Category.{v', u'} A
inst✝ : ConcreteCategory A
F G : Cᵒᵖ ⥤ A
f : F ⟶ G
⊢ IsLocallySurjective J f ↔ IsLocallySurjective J (whiskerRight f (forget A))
state_after: C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝¹ : Category.{v', u'} A
inst✝ : ConcreteCategory A
F G : Cᵒᵖ ⥤ A
f : F ⟶ G
⊢ Subpresheaf.sheafify J (imagePresheaf (whiskerRight f (forget A))) = ⊤ ↔
    Subpresheaf.sheafify J (imagePresheaf (whiskerRight (whiskerRight f (forget A)) (forget (Type w')))) = ⊤

tactic: rfl
state_before: C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝¹ : Category.{v', u'} A
inst✝ : ConcreteCategory A
F G : Cᵒᵖ ⥤ A
f : F ⟶ G
⊢ Subpresheaf.sheafify J (imagePresheaf (whiskerRight f (forget A))) = ⊤ ↔
    Subpresheaf.sheafify J (imagePresheaf (whiskerRight (whiskerRight f (forget A)) (forget (Type w')))) = ⊤
state_after: no goals
Theorem: Polynomial.content_zero
File: Mathlib/RingTheory/Polynomial/Content.lean

tactic: rw [← C_0, content_C, normalize_zero]
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
⊢ content 0 = 0
state_after: no goals
Theorem: UniversalEnvelopingAlgebra.lift_unique
File: Mathlib/Algebra/Lie/UniversalEnveloping.lean

tactic: refine Iff.trans ?_ (lift R).symm_apply_eq
state_before: R : Type u₁
L : Type u₂
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
A : Type u₃
inst✝¹ : Ring A
inst✝ : Algebra R A
f : L →ₗ⁅R⁆ A
g : UniversalEnvelopingAlgebra R L →ₐ[R] A
⊢ ⇑g ∘ ⇑(ι R) = ⇑f ↔ g = (lift R) f
state_after: R : Type u₁
L : Type u₂
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
A : Type u₃
inst✝¹ : Ring A
inst✝ : Algebra R A
f : L →ₗ⁅R⁆ A
g : UniversalEnvelopingAlgebra R L →ₐ[R] A
⊢ ⇑g ∘ ⇑(ι R) = ⇑f ↔ (lift R).symm g = f

tactic: intro h
state_before: case mpr
R : Type u₁
L : Type u₂
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
A : Type u₃
inst✝¹ : Ring A
inst✝ : Algebra R A
f : L →ₗ⁅R⁆ A
g : UniversalEnvelopingAlgebra R L →ₐ[R] A
⊢ (lift R).symm g = f → ⇑g ∘ ⇑(ι R) = ⇑f
state_after: case mpr
R : Type u₁
L : Type u₂
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
A : Type u₃
inst✝¹ : Ring A
inst✝ : Algebra R A
f : L →ₗ⁅R⁆ A
g : UniversalEnvelopingAlgebra R L →ₐ[R] A
h : (lift R).symm g = f
⊢ ⇑g ∘ ⇑(ι R) = ⇑f

tactic: ext
state_before: case mpr
R : Type u₁
L : Type u₂
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
A : Type u₃
inst✝¹ : Ring A
inst✝ : Algebra R A
f : L →ₗ⁅R⁆ A
g : UniversalEnvelopingAlgebra R L →ₐ[R] A
h : (lift R).symm g = f
⊢ ⇑g ∘ ⇑(ι R) = ⇑f
state_after: case mpr.h
R : Type u₁
L : Type u₂
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
A : Type u₃
inst✝¹ : Ring A
inst✝ : Algebra R A
f : L →ₗ⁅R⁆ A
g : UniversalEnvelopingAlgebra R L →ₐ[R] A
h : (lift R).symm g = f
x✝ : L
⊢ (⇑g ∘ ⇑(ι R)) x✝ = f x✝

tactic: simp [← h]
state_before: case mpr.h
R : Type u₁
L : Type u₂
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
A : Type u₃
inst✝¹ : Ring A
inst✝ : Algebra R A
f : L →ₗ⁅R⁆ A
g : UniversalEnvelopingAlgebra R L →ₐ[R] A
h : (lift R).symm g = f
x✝ : L
⊢ (⇑g ∘ ⇑(ι R)) x✝ = f x✝
state_after: no goals
Theorem: Mathlib.Tactic.Ring.sub_pf
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R✝ : Type ?u.123276
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a b c d : R
x✝¹ : -b = c
x✝ : a + c = d
⊢ a - b = d
state_after: u : Lean.Level
R✝ : Type ?u.123276
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a b : R
⊢ a - b = a + -b

tactic: simp [sub_eq_add_neg]
state_before: u : Lean.Level
R✝ : Type ?u.123276
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a b : R
⊢ a - b = a + -b
state_after: no goals
Theorem: invOf_mul_eq_iff_eq_mul_left
File: Mathlib/Algebra/Group/Invertible/Defs.lean

tactic: rw [← mul_left_inj_of_invertible (c := c), mul_invOf_self_assoc]
state_before: α : Type u
inst✝¹ : Monoid α
a b c : α
inst✝ : Invertible c
⊢ ⅟c * a = b ↔ a = c * b
state_after: no goals
Theorem: ExteriorAlgebra.liftAlternating_algebraMap
File: Mathlib/LinearAlgebra/ExteriorAlgebra/OfAlternating.lean

tactic: rw [Algebra.algebraMap_eq_smul_one, map_smul, liftAlternating_one]
state_before: R : Type u_1
M : Type u_2
N : Type u_3
N' : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup N
inst✝³ : AddCommGroup N'
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R N'
f : (i : ℕ) → M [⋀^Fin i]→ₗ[R] N
r : R
⊢ (liftAlternating f) ((algebraMap R (ExteriorAlgebra R M)) r) = r • (f 0) 0
state_after: no goals
Theorem: OrderEmbedding.preimage_Ioo
File: Mathlib/Order/Interval/Set/OrderEmbedding.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ↪o β
x y : α
⊢ ⇑e ⁻¹' Ioo (e x) (e y) = Ioo x y
state_after: case h
α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ↪o β
x y x✝ : α
⊢ x✝ ∈ ⇑e ⁻¹' Ioo (e x) (e y) ↔ x✝ ∈ Ioo x y

tactic: simp
state_before: case h
α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ↪o β
x y x✝ : α
⊢ x✝ ∈ ⇑e ⁻¹' Ioo (e x) (e y) ↔ x✝ ∈ Ioo x y
state_after: no goals
Theorem: WithBot.map_le_iff
File: Mathlib/Order/WithBot.lean

tactic: simp only [map_bot, bot_le]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a b : α
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
mono_iff : ∀ {a b : α}, f a ≤ f b ↔ a ≤ b
x✝ : WithBot α
⊢ map f ⊥ ≤ map f x✝ ↔ ⊥ ≤ x✝
state_after: no goals

tactic: simp only [map_coe, map_bot, coe_ne_bot, not_coe_le_bot _]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a✝ b : α
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
mono_iff : ∀ {a b : α}, f a ≤ f b ↔ a ≤ b
a : α
⊢ map f ↑a ≤ map f ⊥ ↔ ↑a ≤ ⊥
state_after: no goals

tactic: simpa only [map_coe, coe_le_coe] using mono_iff
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a✝ b✝ : α
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
mono_iff : ∀ {a b : α}, f a ≤ f b ↔ a ≤ b
a b : α
⊢ map f ↑a ≤ map f ↑b ↔ ↑a ≤ ↑b
state_after: no goals
Theorem: Composition.index_embedding
File: Mathlib/Combinatorics/Enumerative/Composition.lean

tactic: symm
state_before: n : ℕ
c : Composition n
i : Fin c.length
j : Fin (c.blocksFun i)
⊢ c.index ((c.embedding i) j) = i
state_after: n : ℕ
c : Composition n
i : Fin c.length
j : Fin (c.blocksFun i)
⊢ i = c.index ((c.embedding i) j)

tactic: rw [← mem_range_embedding_iff']
state_before: n : ℕ
c : Composition n
i : Fin c.length
j : Fin (c.blocksFun i)
⊢ i = c.index ((c.embedding i) j)
state_after: n : ℕ
c : Composition n
i : Fin c.length
j : Fin (c.blocksFun i)
⊢ (c.embedding i) j ∈ Set.range ⇑(c.embedding i)

tactic: apply Set.mem_range_self
state_before: n : ℕ
c : Composition n
i : Fin c.length
j : Fin (c.blocksFun i)
⊢ (c.embedding i) j ∈ Set.range ⇑(c.embedding i)
state_after: no goals
Theorem: Multiset.Nat.card_antidiagonal
File: Mathlib/Data/Multiset/NatAntidiagonal.lean

tactic: rw [antidiagonal, coe_card, List.Nat.length_antidiagonal]
state_before: n : ℕ
⊢ card (antidiagonal n) = n + 1
state_after: no goals
Theorem: Submonoid.LocalizationMap.lift_comp
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: ext
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
⊢ (f.lift hg).comp f.toMap = g
state_after: case h
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x✝ : M
⊢ ((f.lift hg).comp f.toMap) x✝ = g x✝

tactic: exact f.lift_eq hg _
state_before: case h
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x✝ : M
⊢ ((f.lift hg).comp f.toMap) x✝ = g x✝
state_after: no goals
Theorem: map_coe_atBot_of_Ioo_subset
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: refine (map_coe_atTop_of_Ioo_subset (show ofDual ⁻¹' s ⊆ Iio (toDual a) from ha)
  fun b' hb' => ?_ : _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
ha : s ⊆ Ioi a
hs : ∀ b' > a, ∃ b > a, Ioo a b ⊆ s
⊢ map Subtype.val atBot = 𝓝[>] a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
ha : s ⊆ Ioi a
hs : ∀ b' > a, ∃ b > a, Ioo a b ⊆ s
b' : αᵒᵈ
hb' : b' < toDual a
⊢ ∃ a_1 < toDual a, Ioo a_1 (toDual a) ⊆ ⇑ofDual ⁻¹' s

tactic: simpa only [OrderDual.exists, dual_Ioo] using hs b' hb'
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
ha : s ⊆ Ioi a
hs : ∀ b' > a, ∃ b > a, Ioo a b ⊆ s
b' : αᵒᵈ
hb' : b' < toDual a
⊢ ∃ a_1 < toDual a, Ioo a_1 (toDual a) ⊆ ⇑ofDual ⁻¹' s
state_after: no goals
Theorem: Lagrange.nodal_insert_eq_nodal
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: simp_rw [nodal, prod_insert hi]
state_before: R : Type u_1
inst✝¹ : CommRing R
ι : Type u_2
s : Finset ι
v : ι → R
inst✝ : DecidableEq ι
i : ι
hi : i ∉ s
⊢ nodal (insert i s) v = (X - C (v i)) * nodal s v
state_after: no goals
Theorem: IntermediateField.fixingSubgroup_bot
File: Mathlib/FieldTheory/KrullTopology.lean

tactic: ext
state_before: K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
⊢ ⊥.fixingSubgroup = ⊤
state_after: case h
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
x✝ : L ≃ₐ[K] L
⊢ x✝ ∈ ⊥.fixingSubgroup ↔ x✝ ∈ ⊤

tactic: simp [mem_fixingSubgroup_iff, mem_bot]
state_before: case h
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
x✝ : L ≃ₐ[K] L
⊢ x✝ ∈ ⊥.fixingSubgroup ↔ x✝ ∈ ⊤
state_after: no goals
Theorem: Matrix.zero_zpow_eq
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

tactic: split_ifs with h
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
n : ℤ
⊢ 0 ^ n = if n = 0 then 1 else 0
state_after: case pos
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
n : ℤ
h : n = 0
⊢ 0 ^ n = 1

case neg
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
n : ℤ
h : ¬n = 0
⊢ 0 ^ n = 0

tactic: rw [h, zpow_zero]
state_before: case pos
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
n : ℤ
h : n = 0
⊢ 0 ^ n = 1
state_after: no goals

tactic: rw [zero_zpow _ h]
state_before: case neg
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
n : ℤ
h : ¬n = 0
⊢ 0 ^ n = 0
state_after: no goals
Theorem: ENNReal.eq_inv_of_mul_eq_one_left
File: Mathlib/Data/ENNReal/Inv.lean

tactic: rw [← mul_one a, ← ENNReal.mul_inv_cancel (right_ne_zero_of_mul_eq_one h), ← mul_assoc, h,
  one_mul]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a * b = 1
⊢ a = b⁻¹
state_after: a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a * b = 1
⊢ b ≠ ⊤

tactic: rintro rfl
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a * b = 1
⊢ b ≠ ⊤
state_after: a c d : ℝ≥0∞
r p q : ℝ≥0
h : a * ⊤ = 1
⊢ False

tactic: simp [left_ne_zero_of_mul_eq_one h] at h
state_before: a c d : ℝ≥0∞
r p q : ℝ≥0
h : a * ⊤ = 1
⊢ False
state_after: no goals