tasksource/leandojo huggingface dataset:
Theorem: List.get?_zip_with_eq_some
File: Mathlib/Data/List/Zip.lean

tactic: induction l₁ generalizing l₂ i
state_before: α✝ : Type u
β✝ : Type ?u.112193
γ✝ : Type ?u.112196
δ : Type ?u.112199
ε : Type ?u.112202
α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → γ
l₁ : List α
l₂ : List β
z : γ
i : ℕ
⊢ get? (zipWith f l₁ l₂) i = some z ↔ ∃ x y, get? l₁ i = some x ∧ get? l₂ i = some y ∧ f x y = z

tactic: simp [zipWith]
state_before: case nil
α✝ : Type u
β✝ : Type ?u.112193
γ✝ : Type ?u.112196
δ : Type ?u.112199
ε : Type ?u.112202
α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → γ
z : γ
l₂ : List β
i : ℕ
⊢ get? (zipWith f [] l₂) i = some z ↔ ∃ x y, get? [] i = some x ∧ get? l₂ i = some y ∧ f x y = z

tactic: cases l₂ <;> simp only [zipWith, get?, exists_false, and_false_iff, false_and_iff]
state_before: case cons
α✝ : Type u
β✝ : Type ?u.112193
γ✝ : Type ?u.112196
δ : Type ?u.112199
ε : Type ?u.112202
α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → γ
z : γ
head✝ : α
tail✝ : List α
tail_ih✝ :
  ∀ (l₂ : List β) (i : ℕ),
    get? (zipWith f tail✝ l₂) i = some z ↔ ∃ x y, get? tail✝ i = some x ∧ get? l₂ i = some y ∧ f x y = z
l₂ : List β
i : ℕ
⊢ get? (zipWith f (head✝ :: tail✝) l₂) i = some z ↔
    ∃ x y, get? (head✝ :: tail✝) i = some x ∧ get? l₂ i = some y ∧ f x y = z

tactic: cases i <;> simp [*]
state_before: case cons.cons
α✝ : Type u
β✝ : Type ?u.112193
γ✝ : Type ?u.112196
δ : Type ?u.112199
ε : Type ?u.112202
α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → γ
z : γ
head✝¹ : α
tail✝¹ : List α
tail_ih✝ :
  ∀ (l₂ : List β) (i : ℕ),
    get? (zipWith f tail✝¹ l₂) i = some z ↔ ∃ x y, get? tail✝¹ i = some x ∧ get? l₂ i = some y ∧ f x y = z
i : ℕ
head✝ : β
tail✝ : List β
⊢ get? (f head✝¹ head✝ :: zipWith f tail✝¹ tail✝) i = some z ↔
    ∃ x y, get? (head✝¹ :: tail✝¹) i = some x ∧ get? (head✝ :: tail✝) i = some y ∧ f x y = z
Theorem: Dfinsupp.comapDomain'_smul
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: ext
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
κ : Type u_1
inst✝² : Monoid γ
inst✝¹ : (i : ι) → AddMonoid (β i)
inst✝ : (i : ι) → DistribMulAction γ (β i)
h : κ → ι
h' : ι → κ
hh' : Function.LeftInverse h' h
r : γ
f : Π₀ (i : ι), β i
⊢ comapDomain' h hh' (r • f) = r • comapDomain' h hh' f

tactic: rw [smul_apply, comapDomain'_apply, smul_apply, comapDomain'_apply]
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
κ : Type u_1
inst✝² : Monoid γ
inst✝¹ : (i : ι) → AddMonoid (β i)
inst✝ : (i : ι) → DistribMulAction γ (β i)
h : κ → ι
h' : ι → κ
hh' : Function.LeftInverse h' h
r : γ
f : Π₀ (i : ι), β i
i✝ : κ
⊢ ↑(comapDomain' h hh' (r • f)) i✝ = ↑(r • comapDomain' h hh' f) i✝
Theorem: Filter.lift'_inf
File: Mathlib/Order/Filter/Lift.lean

tactic: rw [inf_eq_iInf, inf_eq_iInf, lift'_iInf hs]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.44318
ι : Sort ?u.44321
f✝ f₁ f₂ : Filter α
h h₁ h₂ : Set α → Set β
f g : Filter α
s : Set α → Set β
hs : ∀ (t₁ t₂ : Set α), s (t₁ ∩ t₂) = s t₁ ∩ s t₂
⊢ Filter.lift' (f ⊓ g) s = Filter.lift' f s ⊓ Filter.lift' g s

tactic: refine iInf_congr ?_
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.44318
ι : Sort ?u.44321
f✝ f₁ f₂ : Filter α
h h₁ h₂ : Set α → Set β
f g : Filter α
s : Set α → Set β
hs : ∀ (t₁ t₂ : Set α), s (t₁ ∩ t₂) = s t₁ ∩ s t₂
⊢ (⨅ (i : Bool), Filter.lift' (bif i then f else g) s) = ⨅ (b : Bool), bif b then Filter.lift' f s else Filter.lift' g s

tactic: rintro (_|_) <;> rfl
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.44318
ι : Sort ?u.44321
f✝ f₁ f₂ : Filter α
h h₁ h₂ : Set α → Set β
f g : Filter α
s : Set α → Set β
hs : ∀ (t₁ t₂ : Set α), s (t₁ ∩ t₂) = s t₁ ∩ s t₂
⊢ ∀ (i : Bool), Filter.lift' (bif i then f else g) s = bif i then Filter.lift' f s else Filter.lift' g s
Theorem: CategoryTheory.braiding_leftUnitor
File: Mathlib/CategoryTheory/Monoidal/Braided.lean

tactic: rw [← tensor_right_iff, comp_tensor_id, braiding_leftUnitor_aux₂]
state_before: C : Type u₁
inst✝² : Category C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ (β_ X (𝟙_ C)).hom ≫ (λ_ X).hom = (ρ_ X).hom
Theorem: Nat.pow_minFac
File: Mathlib/Data/Nat/Prime.lean

tactic: rcases eq_or_ne n 1 with (rfl | hn)
state_before: n k : ℕ
hk : k ≠ 0
⊢ minFac (n ^ k) = minFac n

tactic: have hnk : n ^ k ≠ 1 := fun hk' => hn ((pow_eq_one_iff hk).1 hk')
state_before: case inr
n k : ℕ
hk : k ≠ 0
hn : n ≠ 1
⊢ minFac (n ^ k) = minFac n

tactic: apply (minFac_le_of_dvd (minFac_prime hn).two_le ((minFac_dvd n).pow hk)).antisymm
state_before: case inr
n k : ℕ
hk : k ≠ 0
hn : n ≠ 1
hnk : n ^ k ≠ 1
⊢ minFac (n ^ k) = minFac n

tactic: apply
  minFac_le_of_dvd (minFac_prime hnk).two_le
    ((minFac_prime hnk).dvd_of_dvd_pow (minFac_dvd _))
state_before: case inr
n k : ℕ
hk : k ≠ 0
hn : n ≠ 1
hnk : n ^ k ≠ 1
⊢ minFac n ≤ minFac (n ^ k)

tactic: simp
state_before: case inl
k : ℕ
hk : k ≠ 0
⊢ minFac (1 ^ k) = minFac 1
Theorem: Summable.ofStar
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: simpa only [star_star] using hf.star
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.814079
δ : Type ?u.814082
inst✝³ : AddCommMonoid α
inst✝² : TopologicalSpace α
inst✝¹ : StarAddMonoid α
inst✝ : ContinuousStar α
f : β → α
a : α
hf : Summable fun b => Star.star (f b)
⊢ Summable f
Theorem: Equiv.ofLeftInverse_eq_ofInjective
File: Mathlib/Logic/Equiv/Set.lean

tactic: ext
state_before: α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
f_inv : Nonempty α → β → α
hf : ∀ (h : Nonempty α), LeftInverse (f_inv h) f
⊢ ofLeftInverse f f_inv hf = ofInjective f (_ : Injective f)

tactic: simp
state_before: case H.a
α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
f_inv : Nonempty α → β → α
hf : ∀ (h : Nonempty α), LeftInverse (f_inv h) f
x✝ : α
⊢ ↑(↑(ofLeftInverse f f_inv hf) x✝) = ↑(↑(ofInjective f (_ : Injective f)) x✝)
Theorem: MvPolynomial.coeff_rename_ne_zero
File: Mathlib/Data/MvPolynomial/Rename.lean

tactic: contrapose! h
state_before: σ : Type u_1
τ : Type u_3
α : Type ?u.963398
R : Type u_2
S : Type ?u.963404
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
φ : MvPolynomial σ R
d : τ →₀ ℕ
h : coeff d (↑(rename f) φ) ≠ 0
⊢ ∃ u, Finsupp.mapDomain f u = d ∧ coeff u φ ≠ 0

tactic: apply coeff_rename_eq_zero _ _ _ h
state_before: σ : Type u_1
τ : Type u_3
α : Type ?u.963398
R : Type u_2
S : Type ?u.963404
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
φ : MvPolynomial σ R
d : τ →₀ ℕ
h : ∀ (u : σ →₀ ℕ), Finsupp.mapDomain f u = d → coeff u φ = 0
⊢ coeff d (↑(rename f) φ) = 0
Theorem: Continuous.integrableAt_nhds
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: rw [← nhdsWithin_univ]
state_before: α : Type u_1
β : Type ?u.2377407
E : Type u_2
F : Type ?u.2377413
inst✝⁵ : MeasurableSpace α
inst✝⁴ : NormedAddCommGroup E
inst✝³ : TopologicalSpace α
inst✝² : SecondCountableTopologyEither α E
inst✝¹ : OpensMeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsLocallyFiniteMeasure μ
f : α → E
hf : Continuous f
a : α
⊢ IntegrableAtFilter f (𝓝 a)

tactic: exact hf.continuousOn.integrableAt_nhdsWithin MeasurableSet.univ (mem_univ a)
state_before: α : Type u_1
β : Type ?u.2377407
E : Type u_2
F : Type ?u.2377413
inst✝⁵ : MeasurableSpace α
inst✝⁴ : NormedAddCommGroup E
inst✝³ : TopologicalSpace α
inst✝² : SecondCountableTopologyEither α E
inst✝¹ : OpensMeasurableSpace α
μ : MeasureTheory.Measure α
inst✝ : IsLocallyFiniteMeasure μ
f : α → E
hf : Continuous f
a : α
⊢ IntegrableAtFilter f (𝓝[univ] a)
Theorem: LowerSet.iSup_Iic
File: Mathlib/Order/UpperLower/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type ?u.148351
γ : Type ?u.148354
ι : Sort ?u.148357
κ : ι → Sort ?u.148362
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
x : α
s : Set α
⊢ (⨆ (a : α) (_ : a ∈ s), Iic a) = lowerClosure s

tactic: simp
state_before: case a.h
α : Type u_1
β : Type ?u.148351
γ : Type ?u.148354
ι : Sort ?u.148357
κ : ι → Sort ?u.148362
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
x : α
s : Set α
x✝ : α
⊢ x✝ ∈ ↑(⨆ (a : α) (_ : a ∈ s), Iic a) ↔ x✝ ∈ ↑(lowerClosure s)
Theorem: CompleteLattice.isCompactlyGenerated_of_wellFounded
File: Mathlib/Order/CompactlyGenerated.lean

tactic: rw [wellFounded_iff_isSupFiniteCompact, isSupFiniteCompact_iff_all_elements_compact] at h
state_before: ι : Sort ?u.109474
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
⊢ IsCompactlyGenerated α

tactic: exact ⟨fun x => ⟨{x}, ⟨fun x _ => h x, sSup_singleton⟩⟩⟩
state_before: ι : Sort ?u.109474
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
⊢ IsCompactlyGenerated α
Theorem: NNReal.le_rpow_one_div_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: rw [← rpow_le_rpow_iff hz, rpow_self_rpow_inv hz.ne']
state_before: x y : ℝ≥0
z : ℝ
hz : 0 < z
⊢ x ≤ y ^ (1 / z) ↔ x ^ z ≤ y
Theorem: Subfield.isGLB_sInf
File: Mathlib/FieldTheory/Subfield.lean

tactic: have : ∀ {s t : Subfield K}, (s : Set K) ≤ t ↔ s ≤ t := by simp [SetLike.coe_subset_coe]
state_before: K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
S : Set (Subfield K)
⊢ IsGLB S (sInf S)

tactic: refine' IsGLB.of_image this _
state_before: K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
S : Set (Subfield K)
this : ∀ {s t : Subfield K}, ↑s ≤ ↑t ↔ s ≤ t
⊢ IsGLB S (sInf S)

tactic: convert isGLB_biInf (s := S) (f := SetLike.coe)
state_before: K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
S : Set (Subfield K)
this : ∀ {s t : Subfield K}, ↑s ≤ ↑t ↔ s ≤ t
⊢ IsGLB ((fun {x} => ↑x) '' S) ↑(sInf S)

tactic: exact coe_sInf _
state_before: case h.e'_4
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
S : Set (Subfield K)
this : ∀ {s t : Subfield K}, ↑s ≤ ↑t ↔ s ≤ t
⊢ ↑(sInf S) = ⨅ (x : Subfield K) (_ : x ∈ S), ↑x

tactic: simp [SetLike.coe_subset_coe]
state_before: K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
S : Set (Subfield K)
⊢ ∀ {s t : Subfield K}, ↑s ≤ ↑t ↔ s ≤ t
Theorem: LatticeOrderedCommGroup.neg_one
File: Mathlib/Algebra/Order/LatticeGroup.lean

tactic: rw [m_neg_part_def, inv_one, sup_idem]
state_before: α : Type u
inst✝¹ : Lattice α
inst✝ : CommGroup α
⊢ 1⁻ = 1
Theorem: AddMonoidAlgebra.mul_of'_divOf
File: Mathlib/Algebra/MonoidAlgebra/Division.lean

tactic: refine Finsupp.ext fun _ => ?_
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : AddMonoidAlgebra k G
a : G
⊢ x * of' k G a /ᵒᶠ a = x

tactic: rw [AddMonoidAlgebra.divOf_apply, of'_apply, mul_single_apply_aux, mul_one]
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : AddMonoidAlgebra k G
a x✝ : G
⊢ ↑(x * of' k G a /ᵒᶠ a) x✝ = ↑x x✝

tactic: intro c
state_before: case H
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : AddMonoidAlgebra k G
a x✝ : G
⊢ ∀ (a_1 : G), a_1 + a = a + x✝ ↔ a_1 = x✝

tactic: rw [add_comm]
state_before: case H
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : AddMonoidAlgebra k G
a x✝ c : G
⊢ c + a = a + x✝ ↔ c = x✝

tactic: exact add_right_inj _
state_before: case H
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : AddMonoidAlgebra k G
a x✝ c : G
⊢ a + c = a + x✝ ↔ c = x✝
Theorem: toIcoMod_sub_zsmul'
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simp_rw [sub_eq_add_neg, ← neg_smul, toIcoMod_add_zsmul']
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
m : ℤ
⊢ toIcoMod hp (a - m • p) b = toIcoMod hp a b - m • p
Theorem: EReal.coe_ennreal_pos
File: Mathlib/Data/Real/EReal.lean

tactic: rw [← coe_ennreal_zero, coe_ennreal_lt_coe_ennreal_iff]
state_before: x : ℝ≥0∞
⊢ 0 < ↑x ↔ 0 < x
Theorem: NNReal.div_lt_one_of_lt
File: Mathlib/Data/Real/NNReal.lean

tactic: rwa [div_lt_iff, one_mul]
state_before: a b : ℝ≥0
h : a < b
⊢ a / b < 1

tactic: exact ne_of_gt (lt_of_le_of_lt (zero_le _) h)
state_before: a b : ℝ≥0
h : a < b
⊢ b ≠ 0
Theorem: Set.pairwise_disjoint_Ico_add_int_cast
File: Mathlib/Data/Set/Intervals/Group.lean

tactic: simpa only [zsmul_one, Int.cast_add, Int.cast_one, ← add_assoc] using
  pairwise_disjoint_Ico_add_zsmul a (1 : α)
state_before: α : Type u_1
inst✝ : OrderedRing α
a : α
⊢ Pairwise (Disjoint on fun n => Ico (a + ↑n) (a + ↑n + 1))
Theorem: Matrix.det_smul_adjugate_adjugate
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

tactic: have : A ⬝ (A.adjugate ⬝ A.adjugate.adjugate) =
    A ⬝ (A.det ^ (Fintype.card n - 1) • (1 : Matrix n n α)) := by
  rw [← adjugate_mul_distrib, adjugate_mul, adjugate_smul, adjugate_one]
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
⊢ det A • adjugate (adjugate A) = det A ^ (Fintype.card n - 1) • A

tactic: rwa [← Matrix.mul_assoc, mul_adjugate, Matrix.mul_smul, Matrix.mul_one, Matrix.smul_mul,
  Matrix.one_mul] at this
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
this : A ⬝ (adjugate A ⬝ adjugate (adjugate A)) = A ⬝ (det A ^ (Fintype.card n - 1) • 1)
⊢ det A • adjugate (adjugate A) = det A ^ (Fintype.card n - 1) • A

tactic: rw [← adjugate_mul_distrib, adjugate_mul, adjugate_smul, adjugate_one]
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
⊢ A ⬝ (adjugate A ⬝ adjugate (adjugate A)) = A ⬝ (det A ^ (Fintype.card n - 1) • 1)
Theorem: padicValRat.zero
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: simp [padicValRat]
state_before: p : ℕ
⊢ padicValRat p 0 = 0
Theorem: LieSubmodule.lieSpan_mono
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [lieSpan_le]
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
N N' : LieSubmodule R L M
I J : LieIdeal R L
s t : Set M
h : s ⊆ t
⊢ lieSpan R L s ≤ lieSpan R L t

tactic: exact Subset.trans h subset_lieSpan
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
N N' : LieSubmodule R L M
I J : LieIdeal R L
s t : Set M
h : s ⊆ t
⊢ s ⊆ ↑(lieSpan R L t)
Theorem: IsLocalization.isLocalization_isLocalization_atPrime_isLocalization
File: Mathlib/RingTheory/Localization/LocalizationLocalization.lean

tactic: apply localization_localization_isLocalization_of_has_all_units M p.primeCompl T
state_before: R : Type u_3
inst✝⁹ : CommRing R
M : Submonoid R
S : Type u_1
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R S
P : Type ?u.244218
inst✝⁶ : CommRing P
N : Submonoid S
T : Type u_2
inst✝⁵ : CommRing T
inst✝⁴ : Algebra R T
inst✝³ : Algebra S T
inst✝² : IsScalarTower R S T
inst✝¹ : IsLocalization M S
p : Ideal S
Hp : Ideal.IsPrime p
inst✝ : IsLocalization.AtPrime T p
⊢ IsLocalization.AtPrime T (Ideal.comap (algebraMap R S) p)

tactic: intro x hx hx'
state_before: R : Type u_3
inst✝⁹ : CommRing R
M : Submonoid R
S : Type u_1
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R S
P : Type ?u.244218
inst✝⁶ : CommRing P
N : Submonoid S
T : Type u_2
inst✝⁵ : CommRing T
inst✝⁴ : Algebra R T
inst✝³ : Algebra S T
inst✝² : IsScalarTower R S T
inst✝¹ : IsLocalization M S
p : Ideal S
Hp : Ideal.IsPrime p
inst✝ : IsLocalization.AtPrime T p
⊢ ∀ (x : S), IsUnit x → x ∈ Ideal.primeCompl p

tactic: exact (Hp.1 : ¬_) (p.eq_top_of_isUnit_mem hx' hx)
state_before: R : Type u_3
inst✝⁹ : CommRing R
M : Submonoid R
S : Type u_1
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R S
P : Type ?u.244218
inst✝⁶ : CommRing P
N : Submonoid S
T : Type u_2
inst✝⁵ : CommRing T
inst✝⁴ : Algebra R T
inst✝³ : Algebra S T
inst✝² : IsScalarTower R S T
inst✝¹ : IsLocalization M S
p : Ideal S
Hp : Ideal.IsPrime p
inst✝ : IsLocalization.AtPrime T p
x : S
hx : IsUnit x
hx' : x ∈ ↑p
⊢ False
Theorem: Polynomial.map_natDegree_eq_sub
File: Mathlib/Data/Polynomial/EraseLead.lean

tactic: simp
state_before: R : Type u_3
inst✝² : Semiring R
f : R[X]
S : Type u_1
F : Type u_2
inst✝¹ : Semiring S
inst✝ : AddMonoidHomClass F R[X] S[X]
φ : F
p : R[X]
k : ℕ
φ_k : ∀ (f : R[X]), natDegree f < k → ↑φ f = 0
φ_mon : ∀ (n : ℕ) (c : R), c ≠ 0 → natDegree (↑φ (↑(monomial n) c)) = n - k
⊢ ∀ {n : ℕ}, n ≤ k → (fun j => j - k) n = 0
Theorem: Bool.coe_sort_true
File: Mathlib/Init/Data/Bool/Lemmas.lean

tactic: simp
state_before: ⊢ (true = true) = True
Theorem: Path.Homotopy.transReflReparamAux_mem_I
File: Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean

tactic: unfold transReflReparamAux
state_before: X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ : X
t : ↑I
⊢ transReflReparamAux t ∈ I

tactic: split_ifs <;> constructor <;> linarith [unitInterval.le_one t, unitInterval.nonneg t]
state_before: X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ : X
t : ↑I
⊢ (if ↑t ≤ 1 / 2 then 2 * ↑t else 1) ∈ I
Theorem: Finset.map_inter
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [coe_map, coe_inter, Set.image_inter f.injective]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.38244
f✝ : α ↪ β
s : Finset α
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α ↪ β
s₁ s₂ : Finset α
⊢ ↑(map f (s₁ ∩ s₂)) = ↑(map f s₁ ∩ map f s₂)
Theorem: Ordnode.size_dual
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: cases t <;> rfl
state_before: α : Type u_1
t : Ordnode α
⊢ size (dual t) = size t
Theorem: Complex.abs_mul_cos_add_sin_mul_I
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [← exp_mul_I, abs_mul_exp_arg_mul_I]
state_before: x : ℂ
⊢ ↑(↑abs x) * (cos ↑(arg x) + sin ↑(arg x) * I) = x
Theorem: CategoryTheory.rightDistributor_hom
File: Mathlib/CategoryTheory/Monoidal/Preadditive.lean

tactic: ext
state_before: C : Type u_2
inst✝⁵ : Category C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
⊢ (rightDistributor X f).hom = ∑ j : J, (biproduct.π f j ⊗ 𝟙 X) ≫ biproduct.ι (fun j => f j ⊗ X) j

tactic: dsimp [rightDistributor, Functor.mapBiproduct, Functor.mapBicone]
state_before: case w
C : Type u_2
inst✝⁵ : Category C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ (rightDistributor X f).hom ≫ biproduct.π (fun j => f j ⊗ X) j✝ =
    (∑ j : J, (biproduct.π f j ⊗ 𝟙 X) ≫ biproduct.ι (fun j => f j ⊗ X) j) ≫ biproduct.π (fun j => f j ⊗ X) j✝

tactic: erw [biproduct.lift_π]
state_before: case w
C : Type u_2
inst✝⁵ : Category C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ (biproduct.lift fun j => biproduct.π f j ⊗ 𝟙 X) ≫ biproduct.π (fun j => f j ⊗ X) j✝ =
    (∑ j : J, (biproduct.π f j ⊗ 𝟙 X) ≫ biproduct.ι (fun j => f j ⊗ X) j) ≫ biproduct.π (fun j => f j ⊗ X) j✝

tactic: simp only [Preadditive.sum_comp, Category.assoc, biproduct.ι_π, comp_dite, comp_zero,
  Finset.sum_dite_eq', Finset.mem_univ, eqToHom_refl, Category.comp_id, ite_true]
state_before: case w
C : Type u_2
inst✝⁵ : Category C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ biproduct.π f j✝ ⊗ 𝟙 X =
    (∑ j : J, (biproduct.π f j ⊗ 𝟙 X) ≫ biproduct.ι (fun j => f j ⊗ X) j) ≫ biproduct.π (fun j => f j ⊗ X) j✝
Theorem: Equiv.Perm.sumCongr_swap_refl
File: Mathlib/Logic/Equiv/Basic.lean

tactic: ext x
state_before: α✝ : Sort ?u.117460
inst✝² : DecidableEq α✝
α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
i j : α
⊢ sumCongr (swap i j) (Equiv.refl β) = swap (Sum.inl i) (Sum.inl j)

tactic: cases x
state_before: case H
α✝ : Sort ?u.117460
inst✝² : DecidableEq α✝
α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
i j : α
x : α ⊕ β
⊢ ↑(sumCongr (swap i j) (Equiv.refl β)) x = ↑(swap (Sum.inl i) (Sum.inl j)) x

tactic: simp only [Equiv.sumCongr_apply, Sum.map, coe_refl, comp.right_id, Sum.elim_inl, comp_apply,
  swap_apply_def, Sum.inl.injEq]
state_before: case H.inl
α✝ : Sort ?u.117460
inst✝² : DecidableEq α✝
α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
i j val✝ : α
⊢ ↑(sumCongr (swap i j) (Equiv.refl β)) (Sum.inl val✝) = ↑(swap (Sum.inl i) (Sum.inl j)) (Sum.inl val✝)

tactic: split_ifs <;> rfl
state_before: case H.inl
α✝ : Sort ?u.117460
inst✝² : DecidableEq α✝
α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
i j val✝ : α
⊢ Sum.inl (if val✝ = i then j else if val✝ = j then i else val✝) =
    if val✝ = i then Sum.inl j else if val✝ = j then Sum.inl i else Sum.inl val✝

tactic: simp [Sum.map, swap_apply_of_ne_of_ne]
state_before: case H.inr
α✝ : Sort ?u.117460
inst✝² : DecidableEq α✝
α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
i j : α
val✝ : β
⊢ ↑(sumCongr (swap i j) (Equiv.refl β)) (Sum.inr val✝) = ↑(swap (Sum.inl i) (Sum.inl j)) (Sum.inr val✝)
Theorem: Cardinal.one_lt_aleph0
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simpa using nat_lt_aleph0 1
state_before: α β : Type u
⊢ 1 < ℵ₀
Theorem: List.nodup_append
File: Mathlib/Data/List/Nodup.lean

tactic: simp only [Nodup, pairwise_append, disjoint_iff_ne]
state_before: α : Type u
β : Type v
l l₁✝ l₂✝ : List α
r : α → α → Prop
a b : α
l₁ l₂ : List α
⊢ Nodup (l₁ ++ l₂) ↔ Nodup l₁ ∧ Nodup l₂ ∧ Disjoint l₁ l₂
Theorem: Int.zero_emod
File: Std/Data/Int/DivMod.lean

tactic: simp [mod_def', emod]
state_before: b : Int
⊢ 0 % b = 0
Theorem: Ordinal.exists_lt_add_of_not_principal_add
File: Mathlib/SetTheory/Ordinal/Principal.lean

tactic: unfold Principal at ha
state_before: a : Ordinal
ha : ¬Principal (fun x x_1 => x + x_1) a
⊢ ∃ b c x x, b + c = a

tactic: push_neg  at ha
state_before: a : Ordinal
ha : ¬∀ ⦃a_1 b : Ordinal⦄, a_1 < a → b < a → (fun x x_1 => x + x_1) a_1 b < a
⊢ ∃ b c x x, b + c = a

tactic: rcases ha with ⟨b, c, hb, hc, H⟩
state_before: a : Ordinal
ha : Exists fun ⦃a_1⦄ => Exists fun ⦃b⦄ => a_1 < a ∧ b < a ∧ a ≤ a_1 + b
⊢ ∃ b c x x, b + c = a

tactic: refine'
  ⟨b, _, hb, lt_of_le_of_ne (sub_le_self a b) fun hab => _, Ordinal.add_sub_cancel_of_le hb.le⟩
state_before: case intro.intro.intro.intro
a b c : Ordinal
hb : b < a
hc : c < a
H : a ≤ b + c
⊢ ∃ b c x x, b + c = a

tactic: rw [← sub_le, hab] at H
state_before: case intro.intro.intro.intro
a b c : Ordinal
hb : b < a
hc : c < a
H : a ≤ b + c
hab : a - b = a
⊢ False

tactic: exact H.not_lt hc
state_before: case intro.intro.intro.intro
a b c : Ordinal
hb : b < a
hc : c < a
H : a ≤ c
hab : a - b = a
⊢ False
Theorem: Matrix.invOf_diagonal_eq
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: letI := diagonalInvertible v
state_before: l : Type ?u.310307
m : Type u
n : Type u'
α✝ : Type v
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq n
inst✝³ : CommRing α✝
A B : Matrix n n α✝
α : Type u_1
inst✝² : Semiring α
v : n → α
inst✝¹ : Invertible v
inst✝ : Invertible (diagonal v)
⊢ ⅟(diagonal v) = diagonal ⅟v

tactic: convert(rfl : ⅟ (diagonal v) = _)
state_before: l : Type ?u.310307
m : Type u
n : Type u'
α✝ : Type v
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq n
inst✝³ : CommRing α✝
A B : Matrix n n α✝
α : Type u_1
inst✝² : Semiring α
v : n → α
inst✝¹ : Invertible v
inst✝ : Invertible (diagonal v)
this : Invertible (diagonal v) := diagonalInvertible v
⊢ ⅟(diagonal v) = diagonal ⅟v
Theorem: AbsoluteValue.map_units_int_smul
File: Mathlib/Data/Int/AbsoluteValue.lean

tactic: rcases Int.units_eq_one_or x with (rfl | rfl) <;> simp
state_before: R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : LinearOrderedCommRing S
abv : AbsoluteValue R S
x : ℤˣ
y : R
⊢ ↑abv (x • y) = ↑abv y