tasksource/leandojo huggingface dataset:
Theorem: Matrix.bit1_apply
File: Mathlib/Data/Matrix/Basic.lean

tactic: dsimp [bit1]
state_before: l : Type ?u.79474
m : Type ?u.79477
n : Type u_1
o : Type ?u.79483
m' : o → Type ?u.79488
n' : o → Type ?u.79493
R : Type ?u.79496
S : Type ?u.79499
α : Type v
β : Type w
γ : Type ?u.79506
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
⊢ bit1 M i j = if i = j then bit1 (M i j) else bit0 (M i j)

tactic: by_cases h : i = j <;>
simp [h]
state_before: l : Type ?u.79474
m : Type ?u.79477
n : Type u_1
o : Type ?u.79483
m' : o → Type ?u.79488
n' : o → Type ?u.79493
R : Type ?u.79496
S : Type ?u.79499
α : Type v
β : Type w
γ : Type ?u.79506
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
⊢ bit0 (M i j) + OfNat.ofNat 1 i j = if i = j then bit0 (M i j) + 1 else bit0 (M i j)
Theorem: Complex.nnnorm_nat
File: Mathlib/Analysis/Complex/Basic.lean

tactic: simp
state_before: E : Type ?u.221115
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
n : ℕ
⊢ ↑‖↑n‖₊ = ↑↑n
Theorem: Std.RBNode.size_lt_depth
File: Std/Data/RBMap/Lemmas.lean

tactic: decide
state_before: α : Type u_1
⊢ 0 < 1

tactic: rw [size, depth, Nat.add_right_comm, Nat.pow_succ, Nat.mul_two]
state_before: α : Type u_1
c✝ : RBColor
a : RBNode α
v✝ : α
b : RBNode α
⊢ size (node c✝ a v✝ b) < 2 ^ depth (node c✝ a v✝ b)

tactic: refine Nat.add_le_add
  (Nat.lt_of_lt_of_le a.size_lt_depth ?_) (Nat.lt_of_lt_of_le b.size_lt_depth ?_)
state_before: α : Type u_1
c✝ : RBColor
a : RBNode α
v✝ : α
b : RBNode α
⊢ size a + 1 + size b < 2 ^ max (depth a) (depth b) + 2 ^ max (depth a) (depth b)

tactic: exact Nat.pow_le_pow_of_le_right (by decide) (Nat.le_max_left ..)
state_before: case refine_1
α : Type u_1
c✝ : RBColor
a : RBNode α
v✝ : α
b : RBNode α
⊢ 2 ^ depth a ≤ 2 ^ max (depth a) (depth b)

tactic: decide
state_before: α : Type u_1
c✝ : RBColor
a : RBNode α
v✝ : α
b : RBNode α
⊢ 2 > 0

tactic: exact Nat.pow_le_pow_of_le_right (by decide) (Nat.le_max_right ..)
state_before: case refine_2
α : Type u_1
c✝ : RBColor
a : RBNode α
v✝ : α
b : RBNode α
⊢ 2 ^ depth b ≤ 2 ^ max (depth a) (depth b)

tactic: decide
state_before: α : Type u_1
c✝ : RBColor
a : RBNode α
v✝ : α
b : RBNode α
⊢ 2 > 0
Theorem: ball_add_ball
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: rw [ball_add, thickening_ball hε hδ b, Metric.vadd_ball, vadd_eq_add]
state_before: 𝕜 : Type ?u.661902
E : Type u_1
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
δ ε : ℝ
hε : 0 < ε
hδ : 0 < δ
a b : E
⊢ Metric.ball a ε + Metric.ball b δ = Metric.ball (a + b) (ε + δ)
Theorem: Finset.image₂_right_comm
File: Mathlib/Data/Finset/NAry.lean

tactic: push_cast
state_before: α : Type u_4
α' : Type ?u.74614
β : Type u_5
β' : Type ?u.74620
γ✝ : Type ?u.74623
γ' : Type ?u.74626
δ : Type u_3
δ' : Type u_6
ε : Type u_2
ε' : Type ?u.74638
ζ : Type ?u.74641
ζ' : Type ?u.74644
ν : Type ?u.74647
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ✝
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f✝ f'✝ : α → β → γ✝
g✝ g'✝ : α → β → γ✝ → δ
s s' : Finset α
t t' : Finset β
u✝ u' : Finset γ✝
a a' : α
b b' : β
c : γ✝
γ : Type u_1
u : Finset γ
f : δ → γ → ε
g : α → β → δ
f' : α → γ → δ'
g' : δ' → β → ε
h_right_comm : ∀ (a : α) (b : β) (c : γ), f (g a b) c = g' (f' a c) b
⊢ ↑(image₂ f (image₂ g s t) u) = ↑(image₂ g' (image₂ f' s u) t)

tactic: exact image2_right_comm h_right_comm
state_before: α : Type u_4
α' : Type ?u.74614
β : Type u_5
β' : Type ?u.74620
γ✝ : Type ?u.74623
γ' : Type ?u.74626
δ : Type u_3
δ' : Type u_6
ε : Type u_2
ε' : Type ?u.74638
ζ : Type ?u.74641
ζ' : Type ?u.74644
ν : Type ?u.74647
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ✝
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f✝ f'✝ : α → β → γ✝
g✝ g'✝ : α → β → γ✝ → δ
s s' : Finset α
t t' : Finset β
u✝ u' : Finset γ✝
a a' : α
b b' : β
c : γ✝
γ : Type u_1
u : Finset γ
f : δ → γ → ε
g : α → β → δ
f' : α → γ → δ'
g' : δ' → β → ε
h_right_comm : ∀ (a : α) (b : β) (c : γ), f (g a b) c = g' (f' a c) b
⊢ image2 f (image2 g ↑s ↑t) ↑u = image2 g' (image2 f' ↑s ↑u) ↑t
Theorem: mem_ball_one_iff
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [mem_ball, dist_one_right]
state_before: 𝓕 : Type ?u.93611
𝕜 : Type ?u.93614
α : Type ?u.93617
ι : Type ?u.93620
κ : Type ?u.93623
E : Type u_1
F : Type ?u.93629
G : Type ?u.93632
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
⊢ a ∈ ball 1 r ↔ ‖a‖ < r
Theorem: Subalgebra.prod_top
File: Mathlib/Algebra/Algebra/Subalgebra/Basic.lean

tactic: ext
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
S : Subalgebra R A
S₁ : Subalgebra R B
⊢ prod ⊤ ⊤ = ⊤

tactic: simp
state_before: case h
R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
S : Subalgebra R A
S₁ : Subalgebra R B
x✝ : A × B
⊢ x✝ ∈ prod ⊤ ⊤ ↔ x✝ ∈ ⊤
Theorem: MvPolynomial.degrees_add_of_disjoint
File: Mathlib/Data/MvPolynomial/Variables.lean

tactic: apply le_antisymm
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.51214
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q✝ : MvPolynomial σ R
inst✝ : DecidableEq σ
p q : MvPolynomial σ R
h : Multiset.Disjoint (degrees p) (degrees q)
⊢ degrees (p + q) = degrees p ∪ degrees q

tactic: apply degrees_add
state_before: case a
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.51214
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q✝ : MvPolynomial σ R
inst✝ : DecidableEq σ
p q : MvPolynomial σ R
h : Multiset.Disjoint (degrees p) (degrees q)
⊢ degrees (p + q) ≤ degrees p ∪ degrees q

tactic: apply Multiset.union_le
state_before: case a
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.51214
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q✝ : MvPolynomial σ R
inst✝ : DecidableEq σ
p q : MvPolynomial σ R
h : Multiset.Disjoint (degrees p) (degrees q)
⊢ degrees p ∪ degrees q ≤ degrees (p + q)

tactic: apply le_degrees_add h
state_before: case a.h₁
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.51214
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q✝ : MvPolynomial σ R
inst✝ : DecidableEq σ
p q : MvPolynomial σ R
h : Multiset.Disjoint (degrees p) (degrees q)
⊢ degrees p ≤ degrees (p + q)

tactic: rw [add_comm]
state_before: case a.h₂
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.51214
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q✝ : MvPolynomial σ R
inst✝ : DecidableEq σ
p q : MvPolynomial σ R
h : Multiset.Disjoint (degrees p) (degrees q)
⊢ degrees q ≤ degrees (p + q)

tactic: apply le_degrees_add h.symm
state_before: case a.h₂
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.51214
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q✝ : MvPolynomial σ R
inst✝ : DecidableEq σ
p q : MvPolynomial σ R
h : Multiset.Disjoint (degrees p) (degrees q)
⊢ degrees q ≤ degrees (q + p)
Theorem: Option.map_map₂
File: Mathlib/Data/Option/NAry.lean

tactic: cases a <;> cases b <;> rfl
state_before: α : Type u_3
β : Type u_4
γ : Type u_2
f✝ : α → β → γ
a : Option α
b : Option β
c : Option γ
δ : Type u_1
f : α → β → γ
g : γ → δ
⊢ Option.map g (map₂ f a b) = map₂ (fun a b => g (f a b)) a b
Theorem: Option.comp_traverse
File: Mathlib/Control/Traversable/Instances.lean

tactic: cases x <;> simp! [functor_norm] <;> rfl
state_before: F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α : Type u_1
β γ : Type u
f : β → F γ
g : α → G β
x : Option α
⊢ Option.traverse (Comp.mk ∘ (fun x x_1 => x <$> x_1) f ∘ g) x = Comp.mk (Option.traverse f <$> Option.traverse g x)
Theorem: Nat.ArithmeticFunction.vonMangoldt_mul_zeta
File: Mathlib/NumberTheory/VonMangoldt.lean

tactic: ext n
state_before: ⊢ Λ * ↑ζ = log

tactic: rw [coe_mul_zeta_apply, vonMangoldt_sum]
state_before: case h
n : ℕ
⊢ ↑(Λ * ↑ζ) n = ↑log n

tactic: rfl
state_before: case h
n : ℕ
⊢ Real.log ↑n = ↑log n
Theorem: MeasureTheory.set_lintegral_withDensity_eq_set_lintegral_mul_non_measurable₀
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [restrict_withDensity hs, lintegral_withDensity_eq_lintegral_mul_non_measurable₀ _ hf h'f]
state_before: α : Type u_1
β : Type ?u.1813525
γ : Type ?u.1813528
δ : Type ?u.1813531
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
hf : AEMeasurable f
g : α → ℝ≥0∞
hs : MeasurableSet s
h'f : ∀ᵐ (x : α) ∂Measure.restrict μ s, f x < ⊤
⊢ (∫⁻ (a : α) in s, g a ∂Measure.withDensity μ f) = ∫⁻ (a : α) in s, (f * g) a ∂μ
Theorem: NNReal.eq_rpow_one_div_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: rw [← rpow_eq_rpow_iff hz, rpow_self_rpow_inv hz]
state_before: x y : ℝ≥0
z : ℝ
hz : z ≠ 0
⊢ x = y ^ (1 / z) ↔ x ^ z = y
Theorem: CategoryTheory.Limits.zero_of_from_zero
File: Mathlib/CategoryTheory/Limits/Shapes/ZeroMorphisms.lean

tactic: ext
state_before: C : Type u
inst✝³ : Category C
D : Type u'
inst✝² : Category D
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X : C
f : 0 ⟶ X
⊢ f = 0
Theorem: Filter.not_isBoundedUnder_of_tendsto_atTop
File: Mathlib/Order/LiminfLimsup.lean

tactic: rintro ⟨b, hb⟩
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.10574
ι : Type ?u.10577
r : α → α → Prop
f✝ g : Filter α
inst✝² : Preorder β
inst✝¹ : NoMaxOrder β
f : α → β
l : Filter α
inst✝ : NeBot l
hf : Tendsto f l atTop
⊢ ¬IsBoundedUnder (fun x x_1 => x ≤ x_1) l f

tactic: rw [eventually_map] at hb
state_before: case intro
α : Type u_2
β : Type u_1
γ : Type ?u.10574
ι : Type ?u.10577
r : α → α → Prop
f✝ g : Filter α
inst✝² : Preorder β
inst✝¹ : NoMaxOrder β
f : α → β
l : Filter α
inst✝ : NeBot l
hf : Tendsto f l atTop
b : β
hb : ∀ᶠ (x : β) in map f l, (fun x x_1 => x ≤ x_1) x b
⊢ False

tactic: obtain ⟨b', h⟩ := exists_gt b
state_before: case intro
α : Type u_2
β : Type u_1
γ : Type ?u.10574
ι : Type ?u.10577
r : α → α → Prop
f✝ g : Filter α
inst✝² : Preorder β
inst✝¹ : NoMaxOrder β
f : α → β
l : Filter α
inst✝ : NeBot l
hf : Tendsto f l atTop
b : β
hb : ∀ᶠ (a : α) in l, (fun x x_1 => x ≤ x_1) (f a) b
⊢ False

tactic: have hb' := (tendsto_atTop.mp hf) b'
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.10574
ι : Type ?u.10577
r : α → α → Prop
f✝ g : Filter α
inst✝² : Preorder β
inst✝¹ : NoMaxOrder β
f : α → β
l : Filter α
inst✝ : NeBot l
hf : Tendsto f l atTop
b : β
hb : ∀ᶠ (a : α) in l, (fun x x_1 => x ≤ x_1) (f a) b
b' : β
h : b < b'
⊢ False

tactic: have : { x : α | f x ≤ b } ∩ { x : α | b' ≤ f x } = ∅ :=
  eq_empty_of_subset_empty fun x hx => (not_le_of_lt h) (le_trans hx.2 hx.1)
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.10574
ι : Type ?u.10577
r : α → α → Prop
f✝ g : Filter α
inst✝² : Preorder β
inst✝¹ : NoMaxOrder β
f : α → β
l : Filter α
inst✝ : NeBot l
hf : Tendsto f l atTop
b : β
hb : ∀ᶠ (a : α) in l, (fun x x_1 => x ≤ x_1) (f a) b
b' : β
h : b < b'
hb' : ∀ᶠ (a : α) in l, b' ≤ f a
⊢ False

tactic: exact (nonempty_of_mem (hb.and hb')).ne_empty this
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.10574
ι : Type ?u.10577
r : α → α → Prop
f✝ g : Filter α
inst✝² : Preorder β
inst✝¹ : NoMaxOrder β
f : α → β
l : Filter α
inst✝ : NeBot l
hf : Tendsto f l atTop
b : β
hb : ∀ᶠ (a : α) in l, (fun x x_1 => x ≤ x_1) (f a) b
b' : β
h : b < b'
hb' : ∀ᶠ (a : α) in l, b' ≤ f a
this : {x | f x ≤ b} ∩ {x | b' ≤ f x} = ∅
⊢ False
Theorem: Computable.nat_rec
File: Mathlib/Computability/Partrec.lean

tactic: simp
state_before: α : Type u_2
β : Type ?u.175913
γ : Type ?u.175916
σ : Type u_1
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → ℕ
g : α → σ
h : α → ℕ × σ → σ
hf : Computable f
hg : Computable g
hh : Computable₂ h
a : α
⊢ Nat.rec (↑g a) (fun y IH => Part.bind IH fun i => ↑(h a) (y, i)) (f a) =
    (↑fun a => Nat.rec (g a) (fun y IH => h a (y, IH)) (f a)) a

tactic: induction f a <;> simp [*]
state_before: α : Type u_2
β : Type ?u.175913
γ : Type ?u.175916
σ : Type u_1
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → ℕ
g : α → σ
h : α → ℕ × σ → σ
hf : Computable f
hg : Computable g
hh : Computable₂ h
a : α
⊢ Nat.rec (Part.some (g a)) (fun y IH => Part.bind IH fun i => Part.some (h a (y, i))) (f a) =
    Part.some (Nat.rec (g a) (fun y IH => h a (y, IH)) (f a))
Theorem: LinearMap.mulLeft_injective
File: Mathlib/Algebra/Algebra/Bilinear.lean

tactic: letI : Nontrivial A := ⟨⟨x, 0, hx⟩⟩
state_before: R : Type u_2
A : Type u_1
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : NoZeroDivisors A
x : A
hx : x ≠ 0
⊢ Function.Injective ↑(mulLeft R x)

tactic: letI := NoZeroDivisors.to_isDomain A
state_before: R : Type u_2
A : Type u_1
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : NoZeroDivisors A
x : A
hx : x ≠ 0
this : Nontrivial A := { exists_pair_ne := Exists.intro x (Exists.intro 0 hx) }
⊢ Function.Injective ↑(mulLeft R x)

tactic: exact mul_right_injective₀ hx
state_before: R : Type u_2
A : Type u_1
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : NoZeroDivisors A
x : A
hx : x ≠ 0
this✝ : Nontrivial A := { exists_pair_ne := Exists.intro x (Exists.intro 0 hx) }
this : IsDomain A := NoZeroDivisors.to_isDomain A
⊢ Function.Injective ↑(mulLeft R x)
Theorem: Commute.mul_zpow
File: Mathlib/Algebra/GroupPower/Basic.lean

tactic: simp [zpow_ofNat, h.mul_pow n]
state_before: α : Type u_1
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : DivisionMonoid α
a b : α
h : Commute a b
n : ℕ
⊢ (a * b) ^ ↑n = a ^ ↑n * b ^ ↑n

tactic: simp [h.mul_pow, (h.pow_pow _ _).eq, mul_inv_rev]
state_before: α : Type u_1
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : DivisionMonoid α
a b : α
h : Commute a b
n : ℕ
⊢ (a * b) ^ Int.negSucc n = a ^ Int.negSucc n * b ^ Int.negSucc n
Theorem: Path.Homotopy.hcomp_apply
File: Mathlib/Topology/Homotopy/Path.lean

tactic: split_ifs <;> exact Path.extend_extends _ _
state_before: X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ x₂ x₃ : X
p₀ q₀ : Path x₀ x₁
p₁ q₁ : Path x₁ x₂
F : Homotopy p₀ q₀
G : Homotopy p₁ q₁
x : ↑I × ↑I
⊢ (if ↑x.snd ≤ 1 / 2 then extend (eval F x.fst) (2 * ↑x.snd) else extend (eval G x.fst) (2 * ↑x.snd - 1)) =
    if h : ↑x.snd ≤ 1 / 2 then ↑(eval F x.fst) { val := 2 * ↑x.snd, property := (_ : 2 * ↑x.snd ∈ I) }
    else ↑(eval G x.fst) { val := 2 * ↑x.snd - 1, property := (_ : 2 * ↑x.snd - 1 ∈ I) }
Theorem: CategoryTheory.Sieve.arrows_ext
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: rintro ⟨_, _⟩ ⟨_, _⟩ rfl
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R : Sieve X
⊢ ∀ {R S : Sieve X}, R.arrows = S.arrows → R = S

tactic: rfl
state_before: case mk.mk
C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R : Sieve X
arrows✝ : Presieve X
downward_closed✝¹ : ∀ {Y Z : C} {f : Y ⟶ X}, arrows✝ f → ∀ (g : Z ⟶ Y), arrows✝ (g ≫ f)
downward_closed✝ :
  ∀ {Y Z : C} {f : Y ⟶ X},
    { arrows := arrows✝, downward_closed := downward_closed✝¹ }.arrows f →
      ∀ (g : Z ⟶ Y), { arrows := arrows✝, downward_closed := downward_closed✝¹ }.arrows (g ≫ f)
⊢ { arrows := arrows✝, downward_closed := downward_closed✝¹ } =
    { arrows := { arrows := arrows✝, downward_closed := downward_closed✝¹ }.arrows,
      downward_closed := downward_closed✝ }
Theorem: Real.cos_ne_zero_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Complex.lean

tactic: rw [← not_exists, not_iff_not, cos_eq_zero_iff]
state_before: θ : ℝ
⊢ cos θ ≠ 0 ↔ ∀ (k : ℤ), θ ≠ (2 * ↑k + 1) * π / 2
Theorem: List.countp_true
File: Mathlib/Data/List/Count.lean

tactic: simp
state_before: α : Type u_1
l : List α
p q : α → Bool
⊢ countp (fun x => true) l = length l
Theorem: FormalMultilinearSeries.nnnorm_mul_pow_le_of_lt_radius
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: exact_mod_cast hp
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.171901
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p✝ : FormalMultilinearSeries 𝕜 E F
r✝ : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : ↑r < radius p
C : ℝ
hC : C > 0
hp : ∀ (n : ℕ), ‖p n‖ * ↑r ^ n ≤ C
⊢ ∀ (n : ℕ), ‖p n‖₊ * r ^ n ≤ { val := C, property := (_ : 0 ≤ C) }
Theorem: Nat.dvd_mod_iff
File: Std/Data/Nat/Lemmas.lean

tactic: rwa [mod_add_div] at this
state_before: k m n : Nat
h : k ∣ n
this : k ∣ ?m.40585 h ↔ k ∣ ?m.40585 h + n * (m / n)
⊢ k ∣ m % n ↔ k ∣ m
Theorem: Real.sinh_le_self_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

tactic: simp
state_before: x y z : ℝ
⊢ sinh x ≤ x ↔ sinh x - x ≤ sinh 0 - 0
Theorem: Directed.finset_le
File: Mathlib/Data/Finset/Order.lean

tactic: simp
state_before: α : Type u
r : α → α → Prop
inst✝ : IsTrans α r
ι : Type u_1
hι : Nonempty ι
f : ι → α
D : Directed r f
s : Finset ι
z x✝ : ι
⊢ x✝ ∈ 0 → r (f x✝) (f z)
Theorem: CategoryTheory.Iso.cancel_iso_inv_left
File: Mathlib/CategoryTheory/Iso.lean

tactic: simp only [cancel_epi]
state_before: C : Type u
inst✝ : Category C
X✝ Y✝ Z✝ X Y Z : C
f : Y ≅ X
g g' : Y ⟶ Z
⊢ f.inv ≫ g = f.inv ≫ g' ↔ g = g'
Theorem: Matrix.rank_of_isUnit
File: Mathlib/Data/Matrix/Rank.lean

tactic: obtain ⟨A, rfl⟩ := h
state_before: l : Type ?u.158331
m : Type ?u.158334
n : Type u_2
o : Type ?u.158340
R : Type u_1
m_fin : Fintype m
inst✝⁴ : Fintype n
inst✝³ : Fintype o
inst✝² : CommRing R
inst✝¹ : StrongRankCondition R
inst✝ : DecidableEq n
A : Matrix n n R
h : IsUnit A
⊢ rank A = Fintype.card n

tactic: exact rank_unit A
state_before: case intro
l : Type ?u.158331
m : Type ?u.158334
n : Type u_2
o : Type ?u.158340
R : Type u_1
m_fin : Fintype m
inst✝⁴ : Fintype n
inst✝³ : Fintype o
inst✝² : CommRing R
inst✝¹ : StrongRankCondition R
inst✝ : DecidableEq n
A : (Matrix n n R)ˣ
⊢ rank ↑A = Fintype.card n
Theorem: CategoryTheory.Projective.projective_iff_preservesEpimorphisms_preadditiveCoyoneda_obj
File: Mathlib/CategoryTheory/Preadditive/Yoneda/Projective.lean

tactic: rw [projective_iff_preservesEpimorphisms_coyoneda_obj]
state_before: C : Type u
inst✝¹ : Category C
inst✝ : Preadditive C
P : C
⊢ Projective P ↔ Functor.PreservesEpimorphisms (preadditiveCoyoneda.obj P.op)

tactic: refine' ⟨fun h : (preadditiveCoyoneda.obj (op P) ⋙
    forget AddCommGroupCat).PreservesEpimorphisms => _, _⟩
state_before: C : Type u
inst✝¹ : Category C
inst✝ : Preadditive C
P : C
⊢ Functor.PreservesEpimorphisms (coyoneda.obj P.op) ↔ Functor.PreservesEpimorphisms (preadditiveCoyoneda.obj P.op)

tactic: exact Functor.preservesEpimorphisms_of_preserves_of_reflects (preadditiveCoyoneda.obj (op P))
    (forget _)
state_before: case refine'_1
C : Type u
inst✝¹ : Category C
inst✝ : Preadditive C
P : C
h : Functor.PreservesEpimorphisms (preadditiveCoyoneda.obj P.op ⋙ forget AddCommGroupCat)
⊢ Functor.PreservesEpimorphisms (preadditiveCoyoneda.obj P.op)

tactic: intro
state_before: case refine'_2
C : Type u
inst✝¹ : Category C
inst✝ : Preadditive C
P : C
⊢ Functor.PreservesEpimorphisms (preadditiveCoyoneda.obj P.op) → Functor.PreservesEpimorphisms (coyoneda.obj P.op)

tactic: exact (inferInstance : (preadditiveCoyoneda.obj (op P) ⋙ forget _).PreservesEpimorphisms)
state_before: case refine'_2
C : Type u
inst✝¹ : Category C
inst✝ : Preadditive C
P : C
a✝ : Functor.PreservesEpimorphisms (preadditiveCoyoneda.obj P.op)
⊢ Functor.PreservesEpimorphisms (coyoneda.obj P.op)
Theorem: ContinuousMap.polynomial_comp_attachBound_mem
File: Mathlib/Topology/ContinuousFunction/StoneWeierstrass.lean

tactic: rw [polynomial_comp_attachBound]
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
f : { x // x ∈ A }
g : ℝ[X]
⊢ comp (Polynomial.toContinuousMapOn g (Set.Icc (-‖f‖) ‖f‖)) (attachBound ↑f) ∈ A

tactic: apply SetLike.coe_mem
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
f : { x // x ∈ A }
g : ℝ[X]
⊢ ↑(↑(Polynomial.aeval f) g) ∈ A
Theorem: ENNReal.le_div_iff_mul_le
File: Mathlib/Data/Real/ENNReal.lean

tactic: induction' b using recTopCoe with b
state_before: α : Type ?u.280595
β : Type ?u.280598
a b c d : ℝ≥0∞
r p q : ℝ≥0
h0 : b ≠ 0 ∨ c ≠ 0
ht : b ≠ ⊤ ∨ c ≠ ⊤
⊢ a ≤ c / b ↔ a * b ≤ c

tactic: rcases eq_or_ne b 0 with (rfl | hb)
state_before: case coe
α : Type ?u.280595
β : Type ?u.280598
a b✝ c d : ℝ≥0∞
r p q : ℝ≥0
h0✝ : b✝ ≠ 0 ∨ c ≠ 0
ht✝ : b✝ ≠ ⊤ ∨ c ≠ ⊤
b : ℝ≥0
h0 : ↑b ≠ 0 ∨ c ≠ 0
ht : ↑b ≠ ⊤ ∨ c ≠ ⊤
⊢ a ≤ c / ↑b ↔ a * ↑b ≤ c

tactic: lift c to ℝ≥0 using ht.neg_resolve_left rfl
state_before: case top
α : Type ?u.280595
β : Type ?u.280598
a b c d : ℝ≥0∞
r p q : ℝ≥0
h0✝ : b ≠ 0 ∨ c ≠ 0
ht✝ : b ≠ ⊤ ∨ c ≠ ⊤
h0 : ⊤ ≠ 0 ∨ c ≠ 0
ht : ⊤ ≠ ⊤ ∨ c ≠ ⊤
⊢ a ≤ c / ⊤ ↔ a * ⊤ ≤ c

tactic: rw [div_top, nonpos_iff_eq_zero]
state_before: case top.intro
α : Type ?u.280595
β : Type ?u.280598
a b d : ℝ≥0∞
r p q c : ℝ≥0
h0✝ : b ≠ 0 ∨ ↑c ≠ 0
ht✝ : b ≠ ⊤ ∨ ↑c ≠ ⊤
h0 : ⊤ ≠ 0 ∨ ↑c ≠ 0
ht : ⊤ ≠ ⊤ ∨ ↑c ≠ ⊤
⊢ a ≤ ↑c / ⊤ ↔ a * ⊤ ≤ ↑c

tactic: rcases eq_or_ne a 0 with (rfl | ha) <;> simp [*]
state_before: case top.intro
α : Type ?u.280595
β : Type ?u.280598
a b d : ℝ≥0∞
r p q c : ℝ≥0
h0✝ : b ≠ 0 ∨ ↑c ≠ 0
ht✝ : b ≠ ⊤ ∨ ↑c ≠ ⊤
h0 : ⊤ ≠ 0 ∨ ↑c ≠ 0
ht : ⊤ ≠ ⊤ ∨ ↑c ≠ ⊤
⊢ a = 0 ↔ a * ⊤ ≤ ↑c

tactic: have hc : c ≠ 0 := h0.neg_resolve_left rfl
state_before: case coe.inl
α : Type ?u.280595
β : Type ?u.280598
a b c d : ℝ≥0∞
r p q : ℝ≥0
h0✝ : b ≠ 0 ∨ c ≠ 0
ht✝ : b ≠ ⊤ ∨ c ≠ ⊤
h0 : ↑0 ≠ 0 ∨ c ≠ 0
ht : ↑0 ≠ ⊤ ∨ c ≠ ⊤
⊢ a ≤ c / ↑0 ↔ a * ↑0 ≤ c

tactic: simp [div_zero hc]
state_before: case coe.inl
α : Type ?u.280595
β : Type ?u.280598
a b c d : ℝ≥0∞
r p q : ℝ≥0
h0✝ : b ≠ 0 ∨ c ≠ 0
ht✝ : b ≠ ⊤ ∨ c ≠ ⊤
h0 : ↑0 ≠ 0 ∨ c ≠ 0
ht : ↑0 ≠ ⊤ ∨ c ≠ ⊤
hc : c ≠ 0
⊢ a ≤ c / ↑0 ↔ a * ↑0 ≤ c

tactic: rw [← coe_ne_zero] at hb
state_before: case coe.inr
α : Type ?u.280595
β : Type ?u.280598
a b✝ c d : ℝ≥0∞
r p q : ℝ≥0
h0✝ : b✝ ≠ 0 ∨ c ≠ 0
ht✝ : b✝ ≠ ⊤ ∨ c ≠ ⊤
b : ℝ≥0
h0 : ↑b ≠ 0 ∨ c ≠ 0
ht : ↑b ≠ ⊤ ∨ c ≠ ⊤
hb : b ≠ 0
⊢ a ≤ c / ↑b ↔ a * ↑b ≤ c

tactic: rw [← ENNReal.mul_le_mul_right hb coe_ne_top, ENNReal.div_mul_cancel hb coe_ne_top]
state_before: case coe.inr
α : Type ?u.280595
β : Type ?u.280598
a b✝ c d : ℝ≥0∞
r p q : ℝ≥0
h0✝ : b✝ ≠ 0 ∨ c ≠ 0
ht✝ : b✝ ≠ ⊤ ∨ c ≠ ⊤
b : ℝ≥0
h0 : ↑b ≠ 0 ∨ c ≠ 0
ht : ↑b ≠ ⊤ ∨ c ≠ ⊤
hb : ↑b ≠ 0
⊢ a ≤ c / ↑b ↔ a * ↑b ≤ c
Theorem: Basis.toMatrix_mul_toMatrix_flip
File: Mathlib/LinearAlgebra/Matrix/Basis.lean

tactic: rw [Basis.toMatrix_mul_toMatrix, Basis.toMatrix_self]
state_before: ι : Type u_1
ι' : Type u_2
κ : Type ?u.628277
κ' : Type ?u.628280
R : Type u_3
M : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
R₂ : Type ?u.628473
M₂ : Type ?u.628476
inst✝⁶ : CommRing R₂
inst✝⁵ : AddCommGroup M₂
inst✝⁴ : Module R₂ M₂
e : Basis ι R M
v : ι' → M
i : ι
j : ι'
N : Type ?u.629221
inst✝³ : AddCommMonoid N
inst✝² : Module R N
b : Basis ι R M
b' : Basis ι' R M
c : Basis κ R N
c' : Basis κ' R N
f : M →ₗ[R] N
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι'
⊢ toMatrix b ↑b' ⬝ toMatrix b' ↑b = 1