tasksource/leandojo huggingface dataset:
Theorem: LinearMap.iterate_surjective
File: Mathlib/LinearAlgebra/Basic.lean

tactic: rw [iterate_succ]
state_before: R : Type u_2
R₁ : Type ?u.172702
R₂ : Type ?u.172705
R₃ : Type ?u.172708
R₄ : Type ?u.172711
S : Type ?u.172714
K : Type ?u.172717
K₂ : Type ?u.172720
M : Type u_1
M' : Type ?u.172726
M₁ : Type ?u.172729
M₂ : Type ?u.172732
M₃ : Type ?u.172735
M₄ : Type ?u.172738
N : Type ?u.172741
N₂ : Type ?u.172744
ι : Type ?u.172747
V : Type ?u.172750
V₂ : Type ?u.172753
inst✝¹⁷ : Semiring R
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
inst✝¹⁴ : Semiring R₄
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : AddCommMonoid M₄
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
inst✝⁴ : Module R₄ M₄
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₃₄ : R₃ →+* R₄
σ₁₃ : R →+* R₃
σ₂₄ : R₂ →+* R₄
σ₁₄ : R →+* R₄
inst✝³ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝² : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝¹ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝ : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
f : M →ₛₗ[σ₁₂] M₂
g : M₂ →ₛₗ[σ₂₃] M₃
f' : M →ₗ[R] M
h : Surjective ↑f'
n : ℕ
⊢ Surjective ↑(f' ^ (n + 1))

tactic: exact (iterate_surjective h n).comp h
state_before: R : Type u_2
R₁ : Type ?u.172702
R₂ : Type ?u.172705
R₃ : Type ?u.172708
R₄ : Type ?u.172711
S : Type ?u.172714
K : Type ?u.172717
K₂ : Type ?u.172720
M : Type u_1
M' : Type ?u.172726
M₁ : Type ?u.172729
M₂ : Type ?u.172732
M₃ : Type ?u.172735
M₄ : Type ?u.172738
N : Type ?u.172741
N₂ : Type ?u.172744
ι : Type ?u.172747
V : Type ?u.172750
V₂ : Type ?u.172753
inst✝¹⁷ : Semiring R
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
inst✝¹⁴ : Semiring R₄
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : AddCommMonoid M₄
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
inst✝⁴ : Module R₄ M₄
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₃₄ : R₃ →+* R₄
σ₁₃ : R →+* R₃
σ₂₄ : R₂ →+* R₄
σ₁₄ : R →+* R₄
inst✝³ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝² : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝¹ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝ : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
f : M →ₛₗ[σ₁₂] M₂
g : M₂ →ₛₗ[σ₂₃] M₃
f' : M →ₗ[R] M
h : Surjective ↑f'
n : ℕ
⊢ Surjective ↑(comp (f' ^ n) f')
Theorem: List.enum_map_fst
File: Std/Data/List/Lemmas.lean

tactic: simp only [enum, enumFrom_map_fst, range_eq_range']
state_before: α : Type u_1
l : List α
⊢ map Prod.fst (enum l) = range (length l)
Theorem: Int.self_le_zpow_clog
File: Mathlib/Data/Int/Log.lean

tactic: cases' le_or_lt r 0 with hr hr
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
hb : 1 < b
r : R
⊢ r ≤ ↑b ^ clog b r

tactic: rw [← neg_log_inv_eq_clog, zpow_neg, le_inv hr (zpow_pos_of_pos _ _)]
state_before: case inr
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
hb : 1 < b
r : R
hr : 0 < r
⊢ r ≤ ↑b ^ clog b r

tactic: rw [clog_of_right_le_zero _ hr, zpow_zero]
state_before: case inl
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
hb : 1 < b
r : R
hr : r ≤ 0
⊢ r ≤ ↑b ^ clog b r

tactic: exact hr.trans zero_le_one
state_before: case inl
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
hb : 1 < b
r : R
hr : r ≤ 0
⊢ r ≤ 1

tactic: exact zpow_log_le_self hb (inv_pos.mpr hr)
state_before: case inr
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
hb : 1 < b
r : R
hr : 0 < r
⊢ ↑b ^ log b r⁻¹ ≤ r⁻¹

tactic: exact Nat.cast_pos.mpr (zero_le_one.trans_lt hb)
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
hb : 1 < b
r : R
hr : 0 < r
⊢ 0 < ↑b
Theorem: Pretrivialization.symm_trans_symm
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: rw [LocalEquiv.trans_symm_eq_symm_trans_symm, LocalEquiv.symm_symm]
state_before: ι : Type ?u.11622
B : Type u_1
F : Type u_2
E : B → Type ?u.11633
Z : Type u_3
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e e' : Pretrivialization F proj
⊢ LocalEquiv.symm (LocalEquiv.trans (LocalEquiv.symm e.toLocalEquiv) e'.toLocalEquiv) =
    LocalEquiv.trans (LocalEquiv.symm e'.toLocalEquiv) e.toLocalEquiv
Theorem: Stream'.Seq.mem_cons_iff
File: Mathlib/Data/Seq/Seq.lean

tactic: rintro (rfl | m) <;> [apply mem_cons; exact mem_cons_of_mem _ m]
state_before: α : Type u
β : Type v
γ : Type w
a b : α
s : Seq α
⊢ a = b ∨ a ∈ s → a ∈ cons b s
Theorem: Subsemiring.mem_map_equiv
File: Mathlib/RingTheory/Subsemiring/Basic.lean

tactic: convert @Set.mem_image_equiv _ _ (↑K) f.toEquiv x using 1
state_before: R : Type u
S : Type v
T : Type w
inst✝² : NonAssocSemiring R
M : Submonoid R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring T
f : R ≃+* S
K : Subsemiring R
x : S
⊢ x ∈ map (↑f) K ↔ ↑(RingEquiv.symm f) x ∈ K
Theorem: Metric.exists_dist_lt_of_hausdorffDist_lt'
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rw [hausdorffDist_comm] at H
state_before: ι : Sort ?u.79415
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist s t < r
fin : hausdorffEdist s t ≠ ⊤
⊢ ∃ x, x ∈ s ∧ dist x y < r

tactic: rw [hausdorffEdist_comm] at fin
state_before: ι : Sort ?u.79415
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist s t ≠ ⊤
⊢ ∃ x, x ∈ s ∧ dist x y < r

tactic: simpa [dist_comm] using exists_dist_lt_of_hausdorffDist_lt h H fin
state_before: ι : Sort ?u.79415
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist t s ≠ ⊤
⊢ ∃ x, x ∈ s ∧ dist x y < r
Theorem: isLUB_le_iff
File: Mathlib/Order/Bounds/Basic.lean

tactic: rw [h.upperBounds_eq]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
a b : α
h : IsLUB s a
⊢ a ≤ b ↔ b ∈ upperBounds s

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
a b : α
h : IsLUB s a
⊢ a ≤ b ↔ b ∈ Ici a
Theorem: Polynomial.monic_X_sub_C
File: Mathlib/Data/Polynomial/Monic.lean

tactic: simpa only [sub_eq_add_neg, C_neg] using monic_X_add_C (-x)
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Ring R
p : R[X]
x : R
⊢ Monic (X - ↑C x)
Theorem: Matrix.det_eq_of_eq_mul_det_one
File: Mathlib/LinearAlgebra/Matrix/Determinant.lean

tactic: rw [hC, mul_one]
state_before: m : Type ?u.1667151
n : Type u_1
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
A B C : Matrix n n R
hC : det C = 1
hA : A = B ⬝ C
⊢ det B * det C = det B
Theorem: PowerBasis.exists_eq_aeval
File: Mathlib/RingTheory/PowerBasis.lean

tactic: simpa using pb.basis.mem_span y
state_before: R : Type u_2
S : Type u_1
T : Type ?u.39838
inst✝⁸ : CommRing R
inst✝⁷ : Ring S
inst✝⁶ : Algebra R S
A : Type ?u.40141
B : Type ?u.40144
inst✝⁵ : CommRing A
inst✝⁴ : CommRing B
inst✝³ : IsDomain B
inst✝² : Algebra A B
K : Type ?u.40566
inst✝¹ : Field K
inst✝ : Nontrivial S
pb : PowerBasis R S
y : S
⊢ y ∈ Submodule.span R (Set.range fun i => pb.gen ^ ↑i)
Theorem: Nat.fast_fib_eq
File: Mathlib/Data/Nat/Fib.lean

tactic: rw [fastFib, fast_fib_aux_eq]
state_before: n : ℕ
⊢ fastFib n = fib n
Theorem: EuclideanDomain.lcm_eq_zero_iff
File: Mathlib/Algebra/EuclideanDomain/Basic.lean

tactic: constructor
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
⊢ lcm x y = 0 ↔ x = 0 ∨ y = 0

tactic: rintro (hx | hy)
state_before: case mpr
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
⊢ x = 0 ∨ y = 0 → lcm x y = 0

tactic: intro hxy
state_before: case mp
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
⊢ lcm x y = 0 → x = 0 ∨ y = 0

tactic: rw [lcm, mul_div_assoc _ (gcd_dvd_right _ _), mul_eq_zero] at hxy
state_before: case mp
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hxy : lcm x y = 0
⊢ x = 0 ∨ y = 0

tactic: apply Or.imp_right _ hxy
state_before: case mp
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hxy : x = 0 ∨ y / gcd x y = 0
⊢ x = 0 ∨ y = 0

tactic: intro hy
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hxy : x = 0 ∨ y / gcd x y = 0
⊢ y / gcd x y = 0 → y = 0

tactic: by_cases hgxy : gcd x y = 0
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hxy : x = 0 ∨ y / gcd x y = 0
hy : y / gcd x y = 0
⊢ y = 0

tactic: rw [EuclideanDomain.gcd_eq_zero_iff] at hgxy
state_before: case pos
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hxy : x = 0 ∨ y / gcd x y = 0
hy : y / gcd x y = 0
hgxy : gcd x y = 0
⊢ y = 0

tactic: exact hgxy.2
state_before: case pos
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hxy : x = 0 ∨ y / gcd x y = 0
hy : y / gcd x y = 0
hgxy : x = 0 ∧ y = 0
⊢ y = 0

tactic: rcases gcd_dvd x y with ⟨⟨r, hr⟩, ⟨s, hs⟩⟩
state_before: case neg
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hxy : x = 0 ∨ y / gcd x y = 0
hy : y / gcd x y = 0
hgxy : ¬gcd x y = 0
⊢ y = 0

tactic: generalize gcd x y = g at hr hs hy hgxy⊢
state_before: case neg.intro.intro.intro
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hxy : x = 0 ∨ y / gcd x y = 0
hy : y / gcd x y = 0
hgxy : ¬gcd x y = 0
r : R
hr : x = gcd x y * r
s : R
hs : y = gcd x y * s
⊢ y = 0

tactic: subst hs
state_before: case neg.intro.intro.intro
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hxy : x = 0 ∨ y / gcd x y = 0
r s g : R
hr : x = g * r
hs : y = g * s
hy : y / g = 0
hgxy : ¬g = 0
⊢ y = 0

tactic: rw [mul_div_cancel_left _ hgxy] at hy
state_before: case neg.intro.intro.intro
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x r s g : R
hr : x = g * r
hgxy : ¬g = 0
hxy : x = 0 ∨ g * s / gcd x (g * s) = 0
hy : g * s / g = 0
⊢ g * s = 0

tactic: rw [hy, mul_zero]
state_before: case neg.intro.intro.intro
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x r s g : R
hr : x = g * r
hgxy : ¬g = 0
hxy : x = 0 ∨ g * s / gcd x (g * s) = 0
hy : s = 0
⊢ g * s = 0

tactic: rw [hx, lcm_zero_left]
state_before: case mpr.inl
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hx : x = 0
⊢ lcm x y = 0

tactic: rw [hy, lcm_zero_right]
state_before: case mpr.inr
R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x y : R
hy : y = 0
⊢ lcm x y = 0
Theorem: PartENat.eq_natCast_sub_of_add_eq_natCast
File: Mathlib/Data/Nat/PartENat.lean

tactic: lift x to ℕ using dom_of_le_natCast ((le_add_right le_rfl).trans_eq h)
state_before: x y : PartENat
n : ℕ
h : x + y = ↑n
⊢ x = ↑(n - Part.get y (_ : y.Dom))

tactic: lift y to ℕ using dom_of_le_natCast ((le_add_left le_rfl).trans_eq h)
state_before: case intro
y : PartENat
n x : ℕ
h : ↑x + y = ↑n
⊢ ↑x = ↑(n - Part.get y (_ : y.Dom))

tactic: rw [← Nat.cast_add, natCast_inj] at h
state_before: case intro.intro
n x y : ℕ
h : ↑x + ↑y = ↑n
⊢ ↑x = ↑(n - Part.get ↑y (_ : (↑y).Dom))

tactic: rw [get_natCast, natCast_inj, eq_tsub_of_add_eq h]
state_before: case intro.intro
n x y : ℕ
h✝ : ↑x + ↑y = ↑n
h : x + y = n
⊢ ↑x = ↑(n - Part.get ↑y (_ : (↑y).Dom))
Theorem: List.replicate_eq_replicateTR
File: src/lean/Init/Data/List/Basic.lean

tactic: apply funext
state_before: α : Type u
β : Type v
γ : Type w
⊢ @replicate = @replicateTR

tactic: intro α
state_before: case h
α : Type u
β : Type v
γ : Type w
⊢ ∀ (x : Type u_1), replicate = replicateTR

tactic: apply funext
state_before: case h
α✝ : Type u
β : Type v
γ : Type w
α : Type u_1
⊢ replicate = replicateTR

tactic: intro n
state_before: case h.h
α✝ : Type u
β : Type v
γ : Type w
α : Type u_1
⊢ ∀ (x : Nat), replicate x = replicateTR x

tactic: apply funext
state_before: case h.h
α✝ : Type u
β : Type v
γ : Type w
α : Type u_1
n : Nat
⊢ replicate n = replicateTR n

tactic: intro a
state_before: case h.h.h
α✝ : Type u
β : Type v
γ : Type w
α : Type u_1
n : Nat
⊢ ∀ (x : α), replicate n x = replicateTR n x

tactic: exact (replicateTR_loop_replicate_eq _ 0 n).symm
state_before: case h.h.h
α✝ : Type u
β : Type v
γ : Type w
α : Type u_1
n : Nat
a : α
⊢ replicate n a = replicateTR n a
Theorem: IsAlgClosed.exists_eq_mul_self
File: Mathlib/FieldTheory/IsAlgClosed/Basic.lean

tactic: rcases exists_pow_nat_eq x zero_lt_two with ⟨z, rfl⟩
state_before: k : Type u
inst✝¹ : Field k
inst✝ : IsAlgClosed k
x : k
⊢ ∃ z, x = z * z

tactic: exact ⟨z, sq z⟩
state_before: case intro
k : Type u
inst✝¹ : Field k
inst✝ : IsAlgClosed k
z : k
⊢ ∃ z_1, z ^ 2 = z_1 * z_1
Theorem: Filter.HasBasis.eq_biInf
File: Mathlib/Order/Filter/Bases.lean

tactic: simp only [h.mem_iff, mem_principal, exists_prop]
state_before: α : Type u_1
β : Type ?u.61264
γ : Type ?u.61267
ι : Sort u_2
ι' : Sort ?u.61273
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
h : HasBasis l p s
x✝ : Set α
⊢ x✝ ∈ l ↔ ∃ i, p i ∧ x✝ ∈ 𝓟 (s i)
Theorem: FirstOrder.Language.card_withConstants
File: Mathlib/ModelTheory/LanguageMap.lean

tactic: rw [withConstants, card_sum, card_constantsOn]
state_before: L : Language
L' : Language
M : Type w
inst✝ : Structure L M
α : Type w'
⊢ card (L[[α]]) = lift (card L) + lift (#α)
Theorem: Filter.le_limsup_of_frequently_le
File: Mathlib/Order/LiminfLimsup.lean

tactic: revert hu_le
state_before: α✝ : Type ?u.190748
β✝ : Type ?u.190751
γ : Type ?u.190754
ι : Type ?u.190757
α : Type u_1
β : Type u_2
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u : α → β
b : β
hu_le : ∃ᶠ (x : α) in f, b ≤ u x
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
⊢ b ≤ limsup u f

tactic: rw [← not_imp_not, not_frequently]
state_before: α✝ : Type ?u.190748
β✝ : Type ?u.190751
γ : Type ?u.190754
ι : Type ?u.190757
α : Type u_1
β : Type u_2
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u : α → β
b : β
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
⊢ (∃ᶠ (x : α) in f, b ≤ u x) → b ≤ limsup u f

tactic: simp_rw [← lt_iff_not_ge]
state_before: α✝ : Type ?u.190748
β✝ : Type ?u.190751
γ : Type ?u.190754
ι : Type ?u.190757
α : Type u_1
β : Type u_2
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u : α → β
b : β
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
⊢ ¬b ≤ limsup u f → ∀ᶠ (x : α) in f, ¬b ≤ u x

tactic: exact fun h => eventually_lt_of_limsup_lt h hu
state_before: α✝ : Type ?u.190748
β✝ : Type ?u.190751
γ : Type ?u.190754
ι : Type ?u.190757
α : Type u_1
β : Type u_2
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u : α → β
b : β
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
⊢ limsup u f < b → ∀ᶠ (x : α) in f, u x < b
Theorem: wbtw_smul_vadd_smul_vadd_of_nonpos_of_le
File: Mathlib/Analysis/Convex/Between.lean

tactic: convert wbtw_smul_vadd_smul_vadd_of_nonneg_of_le x (-v) (Left.nonneg_neg_iff.2 hr₁)
    (neg_le_neg_iff.2 hr₂) using 1 <;>
  rw [neg_smul_neg]
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.542740
P : Type u_3
P' : Type ?u.542746
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : r₂ ≤ r₁
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x)
Theorem: Ideal.one_eq_top
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: erw [Submodule.one_eq_range, LinearMap.range_id]
state_before: R : Type u
ι : Type ?u.206405
inst✝ : CommSemiring R
I J K L : Ideal R
⊢ 1 = ⊤
Theorem: Pretrivialization.symm_trans_source_eq
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: rw [LocalEquiv.trans_source, e'.source_eq, LocalEquiv.symm_source, e.target_eq, inter_comm,
  e.preimage_symm_proj_inter, inter_comm]
state_before: ι : Type ?u.11860
B : Type u_1
F : Type u_2
E : B → Type ?u.11871
Z : Type u_3
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e e' : Pretrivialization F proj
⊢ (LocalEquiv.trans (LocalEquiv.symm e.toLocalEquiv) e'.toLocalEquiv).source = (e.baseSet ∩ e'.baseSet) ×ˢ univ
Theorem: Cardinal.lift_lt_continuum
File: Mathlib/SetTheory/Cardinal/Continuum.lean

tactic: rw [← lift_continuum.{u,v}, lift_lt]
state_before: c : Cardinal
⊢ lift c < 𝔠 ↔ c < 𝔠
Theorem: Fin.insertNth_comp_succAbove
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: unfold comp
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
i : Fin (n + 1)
x : β
p : Fin n → β
⊢ ∀ (x_1 : Fin n), (insertNth i x p ∘ ↑(succAbove i)) x_1 = p x_1

tactic: exact insertNth_apply_succAbove i _ _
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
i : Fin (n + 1)
x : β
p : Fin n → β
⊢ ∀ (x_1 : Fin n), insertNth i x p (↑(succAbove i) x_1) = p x_1
Theorem: Stream'.zip_eq
File: Mathlib/Data/Stream/Init.lean

tactic: rw [← Stream'.eta (zip f s₁ s₂)]
state_before: α : Type u
β : Type v
δ : Type w
f : α → β → δ
s₁ : Stream' α
s₂ : Stream' β
⊢ zip f s₁ s₂ = f (head s₁) (head s₂) :: zip f (tail s₁) (tail s₂)

tactic: rfl
state_before: α : Type u
β : Type v
δ : Type w
f : α → β → δ
s₁ : Stream' α
s₂ : Stream' β
⊢ head (zip f s₁ s₂) :: tail (zip f s₁ s₂) = f (head s₁) (head s₂) :: zip f (tail s₁) (tail s₂)
Theorem: MeasureTheory.measurePreserving_pi_empty
File: Mathlib/MeasureTheory/Constructions/Pi.lean

tactic: set e := MeasurableEquiv.ofUniqueOfUnique (∀ i, α i) Unit
state_before: ι✝ : Type ?u.6064426
ι' : Type ?u.6064429
α✝ : ι✝ → Type ?u.6064434
inst✝¹ : Fintype ι✝
m✝ : (i : ι✝) → OuterMeasure (α✝ i)
ι : Type u
α : ι → Type v
inst✝ : IsEmpty ι
m : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
⊢ MeasurePreserving ↑(MeasurableEquiv.ofUniqueOfUnique ((i : ι) → α i) Unit)

tactic: refine' ⟨e.measurable, _⟩
state_before: ι✝ : Type ?u.6064426
ι' : Type ?u.6064429
α✝ : ι✝ → Type ?u.6064434
inst✝¹ : Fintype ι✝
m✝ : (i : ι✝) → OuterMeasure (α✝ i)
ι : Type u
α : ι → Type v
inst✝ : IsEmpty ι
m : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
e : ((i : ι) → α i) ≃ᵐ Unit := MeasurableEquiv.ofUniqueOfUnique ((i : ι) → α i) Unit
⊢ MeasurePreserving ↑e

tactic: rw [Measure.pi_of_empty, Measure.map_dirac e.measurable]
state_before: ι✝ : Type ?u.6064426
ι' : Type ?u.6064429
α✝ : ι✝ → Type ?u.6064434
inst✝¹ : Fintype ι✝
m✝ : (i : ι✝) → OuterMeasure (α✝ i)
ι : Type u
α : ι → Type v
inst✝ : IsEmpty ι
m : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
e : ((i : ι) → α i) ≃ᵐ Unit := MeasurableEquiv.ofUniqueOfUnique ((i : ι) → α i) Unit
⊢ Measure.map (↑e) (Measure.pi μ) = Measure.dirac ()
Theorem: ENNReal.one_le_rpow_of_pos_of_le_one_of_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: lift x to ℝ≥0 using ne_of_lt (lt_of_le_of_lt hx2 coe_lt_top)
state_before: x : ℝ≥0∞
z : ℝ
hx1 : 0 < x
hx2 : x ≤ 1
hz : z < 0
⊢ 1 ≤ x ^ z

tactic: simp only [coe_le_one_iff, coe_pos] at hx1 hx2⊢
state_before: case intro
z : ℝ
hz : z < 0
x : ℝ≥0
hx1 : 0 < ↑x
hx2 : ↑x ≤ 1
⊢ 1 ≤ ↑x ^ z

tactic: simp [coe_rpow_of_ne_zero (ne_of_gt hx1),
  NNReal.one_le_rpow_of_pos_of_le_one_of_nonpos hx1 hx2 (le_of_lt hz)]
state_before: case intro
z : ℝ
hz : z < 0
x : ℝ≥0
hx1 : 0 < x
hx2 : x ≤ 1
⊢ 1 ≤ ↑x ^ z
Theorem: Cardinal.sum_lt_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rwa [lift_id]
state_before: α : Type ?u.161632
r : α → α → Prop
ι : Type u
f : ι → Cardinal
c : Cardinal
hc : IsRegular c
hι : (#ι) < c
⊢ lift (#ι) < c
Theorem: PartENat.withTopEquiv_symm_le
File: Mathlib/Data/Nat/PartENat.lean

tactic: rw [← withTopEquiv_le]
state_before: x y : ℕ∞
⊢ ↑withTopEquiv.symm x ≤ ↑withTopEquiv.symm y ↔ x ≤ y

tactic: simp
state_before: x y : ℕ∞
⊢ ↑withTopEquiv (↑withTopEquiv.symm x) ≤ ↑withTopEquiv (↑withTopEquiv.symm y) ↔ x ≤ y
Theorem: ContinuousMap.Homotopy.extend_apply_of_one_le
File: Mathlib/Topology/Homotopy/Basic.lean

tactic: rw [← F.apply_one]
state_before: F✝ : Type ?u.11079
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ : C(X, Y)
F : Homotopy f₀ f₁
t : ℝ
ht : 1 ≤ t
x : X
⊢ ↑(↑(extend F) t) x = ↑f₁ x

tactic: exact ContinuousMap.congr_fun (Set.IccExtend_of_right_le (zero_le_one' ℝ) F.curry ht) x
state_before: F✝ : Type ?u.11079
X : Type u
Y : Type v
Z : Type w
Z' : Type x
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ : C(X, Y)
F : Homotopy f₀ f₁
t : ℝ
ht : 1 ≤ t
x : X
⊢ ↑(↑(extend F) t) x = ↑F (1, x)
Theorem: ZMod.χ₈_int_eq_if_mod_eight
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

tactic: have help :
  ∀ m : ℤ, 0 ≤ m → m < 8 → χ₈ m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 7 then 1 else -1 := by
  decide
state_before: n : ℤ
⊢ ↑χ₈ ↑n = if n % 2 = 0 then 0 else if n % 8 = 1 ∨ n % 8 = 7 then 1 else -1

tactic: rw [← Int.emod_emod_of_dvd n (by norm_num : (2 : ℤ) ∣ 8), ← ZMod.int_cast_mod n 8]
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → ↑χ₈ ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 7 then 1 else -1
⊢ ↑χ₈ ↑n = if n % 2 = 0 then 0 else if n % 8 = 1 ∨ n % 8 = 7 then 1 else -1

tactic: exact help (n % 8) (Int.emod_nonneg n (by norm_num)) (Int.emod_lt n (by norm_num))
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → ↑χ₈ ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 7 then 1 else -1
⊢ ↑χ₈ ↑(n % ↑8) = if n % 8 % 2 = 0 then 0 else if n % 8 = 1 ∨ n % 8 = 7 then 1 else -1

tactic: decide
state_before: n : ℤ
⊢ ∀ (m : ℤ), 0 ≤ m → m < 8 → ↑χ₈ ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 7 then 1 else -1

tactic: norm_num
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → ↑χ₈ ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 7 then 1 else -1
⊢ 2 ∣ 8

tactic: norm_num
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → ↑χ₈ ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 7 then 1 else -1
⊢ 8 ≠ 0

tactic: norm_num
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → ↑χ₈ ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 7 then 1 else -1
⊢ 8 ≠ 0
Theorem: Nat.descFactorial_one
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: rw [descFactorial_succ, descFactorial_zero, mul_one, tsub_zero]
state_before: n : ℕ
⊢ descFactorial n 1 = n
Theorem: Ordinal.isOpen_iff
File: Mathlib/SetTheory/Ordinal/Topology.lean

tactic: refine isOpen_iff_mem_nhds.trans <| forall₂_congr fun o ho => ?_
state_before: s : Set Ordinal
a : Ordinal
⊢ IsOpen s ↔ ∀ (o : Ordinal), o ∈ s → IsLimit o → ∃ a, a < o ∧ Set.Ioo a o ⊆ s

tactic: by_cases ho' : IsLimit o
state_before: s : Set Ordinal
a o : Ordinal
ho : o ∈ s
⊢ s ∈ 𝓝 o ↔ IsLimit o → ∃ a, a < o ∧ Set.Ioo a o ⊆ s

tactic: simp only [(nhdsBasis_Ioc ho'.1).mem_iff, ho', true_implies]
state_before: case pos
s : Set Ordinal
a o : Ordinal
ho : o ∈ s
ho' : IsLimit o
⊢ s ∈ 𝓝 o ↔ IsLimit o → ∃ a, a < o ∧ Set.Ioo a o ⊆ s

tactic: refine exists_congr fun a => and_congr_right fun ha => ?_
state_before: case pos
s : Set Ordinal
a o : Ordinal
ho : o ∈ s
ho' : IsLimit o
⊢ (∃ i, i < o ∧ Set.Ioc i o ⊆ s) ↔ ∃ a, a < o ∧ Set.Ioo a o ⊆ s

tactic: simp only [← Set.Ioo_insert_right ha, Set.insert_subset, ho, true_and]
state_before: case pos
s : Set Ordinal
a✝ o : Ordinal
ho : o ∈ s
ho' : IsLimit o
a : Ordinal
ha : a < o
⊢ Set.Ioc a o ⊆ s ↔ Set.Ioo a o ⊆ s

tactic: simp [nhds_eq_pure.2 ho', ho, ho']
state_before: case neg
s : Set Ordinal
a o : Ordinal
ho : o ∈ s
ho' : ¬IsLimit o
⊢ s ∈ 𝓝 o ↔ IsLimit o → ∃ a, a < o ∧ Set.Ioo a o ⊆ s
Theorem: xor_not_right
File: Mathlib/Logic/Basic.lean

tactic: by_cases a <;> simp [*]
state_before: a b : Prop
⊢ Xor' a ¬b ↔ (a ↔ b)
Theorem: Int.add_left_comm
File: Std/Data/Int/Lemmas.lean

tactic: rw [← Int.add_assoc, Int.add_comm a, Int.add_assoc]
state_before: a b c : Int
⊢ a + (b + c) = b + (a + c)