ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: lt_or_lt_of_add_lt_add
File: Mathlib/Algebra/Order/Monoid/Unbundled/MinMax.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a₁ a₂ b₁ b₂ : α
⊢ a₁ * b₁ < a₂ * b₂ → a₁ < a₂ ∨ b₁ < b₂
state_after: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a₁ a₂ b₁ b₂ : α
⊢ a₂ ≤ a₁ ∧ b₂ ≤ b₁ → a₂ * b₂ ≤ a₁ * b₁
tactic: contrapose!
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a₁ a₂ b₁ b₂ : α
⊢ a₂ ≤ a₁ ∧ b₂ ≤ b₁ → a₂ * b₂ ≤ a₁ * b₁
state_after: no goals
tactic: exact fun h => mul_le_mul' h.1 h.2
Theorem: norm_le_mul_norm_add
File: Mathlib/Analysis/Normed/Group/Basic.lean

Proof steps:
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
u v : E
⊢ ‖u‖ = ‖u * v / v‖
state_after: no goals
tactic: rw [mul_div_cancel_right]
Theorem: MeasureTheory.measureUnivNNReal_pos
File: Mathlib/MeasureTheory/Measure/Typeclasses.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s t : Set α
inst✝ : IsFiniteMeasure μ
hμ : μ ≠ 0
⊢ 0 < measureUnivNNReal μ
state_after: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s t : Set α
inst✝ : IsFiniteMeasure μ
hμ : measureUnivNNReal μ ≤ 0
⊢ μ = 0
tactic: contrapose! hμ
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s t : Set α
inst✝ : IsFiniteMeasure μ
hμ : measureUnivNNReal μ ≤ 0
⊢ μ = 0
state_after: no goals
tactic: simpa [measureUnivNNReal_eq_zero, Nat.le_zero] using hμ
Theorem: finprod_emb_domain'
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
⊢ (∏ᶠ (b : β), if h : b ∈ range f then g (Classical.choose h) else 1) = ∏ᶠ (a : α), g a
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
⊢ ∏ᶠ (b : β) (h : b ∈ range f), g (Classical.choose h) = ∏ᶠ (a : α), g a
tactic: simp_rw [← finprod_eq_dif]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
⊢ ∏ᶠ (b : β) (h : b ∈ range f), g (Classical.choose h) = ∏ᶠ (a : α), g a
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
⊢ ∀ (a : α), (if h' : f a ∈ range f then g (Classical.choose h') else 1) = g a
tactic: rw [finprod_dmem, finprod_mem_range hf, finprod_congr fun a => _]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
⊢ ∀ (a : α), (if h' : f a ∈ range f then g (Classical.choose h') else 1) = g a
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a✝ b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
a : α
⊢ (if h' : f a ∈ range f then g (Classical.choose h') else 1) = g a
tactic: intro a
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a✝ b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
a : α
⊢ (if h' : f a ∈ range f then g (Classical.choose h') else 1) = g a
state_after: no goals
tactic: rw [dif_pos (Set.mem_range_self a), hf (Classical.choose_spec (Set.mem_range_self a))]
Theorem: Real.map_volume_mul_right
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

Proof steps:
state_before: ι : Type u_1
inst✝ : Fintype ι
a : ℝ
h : a ≠ 0
⊢ Measure.map (fun x => x * a) volume = ofReal |a⁻¹| • volume
state_after: no goals
tactic: simpa only [mul_comm] using Real.map_volume_mul_left h
Theorem: AddSubmonoid.closure_induction_left
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

Proof steps:
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a : M
s : Set M
p : (m : M) → m ∈ closure s → Prop
one : p 1 ⋯
mul_left : ∀ (x : M) (hx : x ∈ s) (y : M) (hy : y ∈ closure s), p y hy → p (x * y) ⋯
x : M
h : x ∈ closure s
⊢ p x h
state_after: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a : M
s : Set M
p : (m : M) → m ∈ closure s → Prop
one : p 1 ⋯
mul_left : ∀ (x : M) (hx : x ∈ s) (y : M) (hy : y ∈ closure s), p y hy → p (x * y) ⋯
x : M
h✝ : x ∈ closure s
h : x ∈ mrange (FreeMonoid.lift Subtype.val)
⊢ p x h✝
tactic: simp_rw [closure_eq_mrange] at h
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a : M
s : Set M
p : (m : M) → m ∈ closure s → Prop
one : p 1 ⋯
mul_left : ∀ (x : M) (hx : x ∈ s) (y : M) (hy : y ∈ closure s), p y hy → p (x * y) ⋯
x : M
h✝ : x ∈ closure s
h : x ∈ mrange (FreeMonoid.lift Subtype.val)
⊢ p x h✝
state_after: case intro
M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a : M
s : Set M
p : (m : M) → m ∈ closure s → Prop
one : p 1 ⋯
mul_left : ∀ (x : M) (hx : x ∈ s) (y : M) (hy : y ∈ closure s), p y hy → p (x * y) ⋯
l : FreeMonoid { x // x ∈ s }
h : (FreeMonoid.lift Subtype.val) l ∈ closure s
⊢ p ((FreeMonoid.lift Subtype.val) l) h
tactic: obtain ⟨l, rfl⟩ := h
state_before: case intro
M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a : M
s : Set M
p : (m : M) → m ∈ closure s → Prop
one : p 1 ⋯
mul_left : ∀ (x : M) (hx : x ∈ s) (y : M) (hy : y ∈ closure s), p y hy → p (x * y) ⋯
l : FreeMonoid { x // x ∈ s }
h : (FreeMonoid.lift Subtype.val) l ∈ closure s
⊢ p ((FreeMonoid.lift Subtype.val) l) h
state_after: case intro.h0
M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a : M
s : Set M
p : (m : M) → m ∈ closure s → Prop
one : p 1 ⋯
mul_left : ∀ (x : M) (hx : x ∈ s) (y : M) (hy : y ∈ closure s), p y hy → p (x * y) ⋯
h : (FreeMonoid.lift Subtype.val) 1 ∈ closure s
⊢ p ((FreeMonoid.lift Subtype.val) 1) h

case intro.ih
M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a : M
s : Set M
p : (m : M) → m ∈ closure s → Prop
one : p 1 ⋯
mul_left : ∀ (x : M) (hx : x ∈ s) (y : M) (hy : y ∈ closure s), p y hy → p (x * y) ⋯
x : { x // x ∈ s }
y : FreeMonoid { x // x ∈ s }
ih : ∀ (h : (FreeMonoid.lift Subtype.val) y ∈ closure s), p ((FreeMonoid.lift Subtype.val) y) h
h : (FreeMonoid.lift Subtype.val) (FreeMonoid.of x * y) ∈ closure s
⊢ p ((FreeMonoid.lift Subtype.val) (FreeMonoid.of x * y)) h
tactic: induction' l with x y ih
Theorem: EuclideanGeometry.cos_oangle_right_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
⊢ (∡ p₂ p₃ p₁).cos = dist p₃ p₂ / dist p₁ p₃
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₂ p₃ p₁).sign = 1
⊢ (∡ p₂ p₃ p₁).cos = dist p₃ p₂ / dist p₁ p₃
tactic: have hs : (∡ p₂ p₃ p₁).sign = 1 := by rw [oangle_rotate_sign, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₂ p₃ p₁).sign = 1
⊢ (∡ p₂ p₃ p₁).cos = dist p₃ p₂ / dist p₁ p₃
state_after: no goals
tactic: rw [oangle_eq_angle_of_sign_eq_one hs, Real.Angle.cos_coe,
    cos_angle_of_angle_eq_pi_div_two (angle_eq_pi_div_two_of_oangle_eq_pi_div_two h)]
Theorem: image_minimals_univ
File: Mathlib/Order/Minimal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b x : α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
⊢ Subtype.val '' minimals (fun x x_1 => x ≤ x_1) univ = minimals (fun x x_1 => x ≤ x_1) s
state_after: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b x : α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
⊢ ∀ ⦃a a' : { x // x ∈ s }⦄, a ∈ univ → a' ∈ univ → (a ≤ a' ↔ ↑a ≤ ↑a')
tactic: rw [image_minimals_of_rel_iff_rel, image_univ, Subtype.range_val]
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b x : α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
⊢ ∀ ⦃a a' : { x // x ∈ s }⦄, a ∈ univ → a' ∈ univ → (a ≤ a' ↔ ↑a ≤ ↑a')
state_after: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b x : α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
a✝² a'✝ : { x // x ∈ s }
a✝¹ : a✝² ∈ univ
a✝ : a'✝ ∈ univ
⊢ a✝² ≤ a'✝ ↔ ↑a✝² ≤ ↑a'✝
tactic: intros
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b x : α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
a✝² a'✝ : { x // x ∈ s }
a✝¹ : a✝² ∈ univ
a✝ : a'✝ ∈ univ
⊢ a✝² ≤ a'✝ ↔ ↑a✝² ≤ ↑a'✝
state_after: no goals
tactic: rfl
Theorem: Set.sInter_eq_biInter
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set (Set α)
⊢ ⋂₀ s = ⋂ i ∈ s, i
state_after: no goals
tactic: rw [← sInter_image, image_id']
Theorem: Polynomial.eq_of_infinite_eval_eq
File: Mathlib/Algebra/Polynomial/Roots.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q✝ p q : R[X]
h : {x | eval x p = eval x q}.Infinite
⊢ p = q
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q✝ p q : R[X]
h : {x | eval x p = eval x q}.Infinite
⊢ p - q = 0
tactic: rw [← sub_eq_zero]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q✝ p q : R[X]
h : {x | eval x p = eval x q}.Infinite
⊢ p - q = 0
state_after: case h
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q✝ p q : R[X]
h : {x | eval x p = eval x q}.Infinite
⊢ {x | (p - q).IsRoot x}.Infinite
tactic: apply eq_zero_of_infinite_isRoot
state_before: case h
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q✝ p q : R[X]
h : {x | eval x p = eval x q}.Infinite
⊢ {x | (p - q).IsRoot x}.Infinite
state_after: no goals
tactic: simpa only [IsRoot, eval_sub, sub_eq_zero]
Theorem: Monoid.PushoutI.NormalWord.transversal_nonempty
File: Mathlib/GroupTheory/PushoutI.lean

Proof steps:
state_before: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Group (G i)
inst✝ : Group H
φ : (i : ι) → H →* G i
hφ : ∀ (i : ι), Injective ⇑(φ i)
⊢ Nonempty (Transversal φ)
state_after: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Group (G i)
inst✝ : Group H
φ : (i : ι) → H →* G i
hφ : ∀ (i : ι), Injective ⇑(φ i)
t : (i : ι) → Set (G i)
ht : ∀ (i : ι), t i ∈ rightTransversals ↑(φ i).range ∧ 1 ∈ t i
⊢ Nonempty (Transversal φ)
tactic: choose t ht using fun i => (φ i).range.exists_right_transversal 1
state_before: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Group (G i)
inst✝ : Group H
φ : (i : ι) → H →* G i
hφ : ∀ (i : ι), Injective ⇑(φ i)
t : (i : ι) → Set (G i)
ht : ∀ (i : ι), t i ∈ rightTransversals ↑(φ i).range ∧ 1 ∈ t i
⊢ Nonempty (Transversal φ)
state_after: case val
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Group (G i)
inst✝ : Group H
φ : (i : ι) → H →* G i
hφ : ∀ (i : ι), Injective ⇑(φ i)
t : (i : ι) → Set (G i)
ht : ∀ (i : ι), t i ∈ rightTransversals ↑(φ i).range ∧ 1 ∈ t i
⊢ Transversal φ
tactic: apply Nonempty.intro
state_before: case val
ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Group (G i)
inst✝ : Group H
φ : (i : ι) → H →* G i
hφ : ∀ (i : ι), Injective ⇑(φ i)
t : (i : ι) → Set (G i)
ht : ∀ (i : ι), t i ∈ rightTransversals ↑(φ i).range ∧ 1 ∈ t i
⊢ Transversal φ
state_after: no goals
tactic: exact
    { injective := hφ
      set := t
      one_mem := fun i => (ht i).2
      compl := fun i => (ht i).1 }
Theorem: Finset.insert_inter_distrib
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ u v : Finset α
a✝ b : α
s t : Finset α
a : α
⊢ insert a (s ∩ t) = insert a s ∩ insert a t
state_after: no goals
tactic: simp_rw [insert_eq, union_inter_distrib_left]
Theorem: SpectrumRestricts.smul_of_nonneg
File: Mathlib/Analysis/CstarAlgebra/ContinuousFunctionalCalculus/Instances.lean

Proof steps:
state_before: A✝ : Type u_1
inst✝⁷ : NormedRing A✝
inst✝⁶ : StarRing A✝
inst✝⁵ : CstarRing A✝
inst✝⁴ : CompleteSpace A✝
inst✝³ : NormedAlgebra ℂ A✝
inst✝² : StarModule ℂ A✝
A : Type u_2
inst✝¹ : Ring A
inst✝ : Algebra ℝ A
a : A
ha : SpectrumRestricts a ⇑ContinuousMap.realToNNReal
r : ℝ
hr : 0 ≤ r
⊢ SpectrumRestricts (r • a) ⇑ContinuousMap.realToNNReal
state_after: A✝ : Type u_1
inst✝⁷ : NormedRing A✝
inst✝⁶ : StarRing A✝
inst✝⁵ : CstarRing A✝
inst✝⁴ : CompleteSpace A✝
inst✝³ : NormedAlgebra ℂ A✝
inst✝² : StarModule ℂ A✝
A : Type u_2
inst✝¹ : Ring A
inst✝ : Algebra ℝ A
a : A
ha : ∀ x ∈ σ ℝ a, 0 ≤ x
r : ℝ
hr : 0 ≤ r
⊢ ∀ x ∈ σ ℝ (r • a), 0 ≤ x
tactic: rw [SpectrumRestricts.nnreal_iff] at ha ⊢
state_before: A✝ : Type u_1
inst✝⁷ : NormedRing A✝
inst✝⁶ : StarRing A✝
inst✝⁵ : CstarRing A✝
inst✝⁴ : CompleteSpace A✝
inst✝³ : NormedAlgebra ℂ A✝
inst✝² : StarModule ℂ A✝
A : Type u_2
inst✝¹ : Ring A
inst✝ : Algebra ℝ A
a : A
ha : ∀ x ∈ σ ℝ a, 0 ≤ x
r : ℝ
hr : 0 ≤ r
⊢ ∀ x ∈ σ ℝ (r • a), 0 ≤ x
state_after: A✝ : Type u_1
inst✝⁷ : NormedRing A✝
inst✝⁶ : StarRing A✝
inst✝⁵ : CstarRing A✝
inst✝⁴ : CompleteSpace A✝
inst✝³ : NormedAlgebra ℂ A✝
inst✝² : StarModule ℂ A✝
A : Type u_2
inst✝¹ : Ring A
inst✝ : Algebra ℝ A
a : A
ha : ∀ x ∈ σ ℝ a, 0 ≤ x
r : ℝ
hr : 0 ≤ r
a✝ : Nontrivial A
⊢ ∀ x ∈ σ ℝ (r • a), 0 ≤ x
tactic: nontriviality A
state_before: A✝ : Type u_1
inst✝⁷ : NormedRing A✝
inst✝⁶ : StarRing A✝
inst✝⁵ : CstarRing A✝
inst✝⁴ : CompleteSpace A✝
inst✝³ : NormedAlgebra ℂ A✝
inst✝² : StarModule ℂ A✝
A : Type u_2
inst✝¹ : Ring A
inst✝ : Algebra ℝ A
a : A
ha : ∀ x ∈ σ ℝ a, 0 ≤ x
r : ℝ
hr : 0 ≤ r
a✝ : Nontrivial A
⊢ ∀ x ∈ σ ℝ (r • a), 0 ≤ x
state_after: A✝ : Type u_1
inst✝⁷ : NormedRing A✝
inst✝⁶ : StarRing A✝
inst✝⁵ : CstarRing A✝
inst✝⁴ : CompleteSpace A✝
inst✝³ : NormedAlgebra ℂ A✝
inst✝² : StarModule ℂ A✝
A : Type u_2
inst✝¹ : Ring A
inst✝ : Algebra ℝ A
a : A
ha : ∀ x ∈ σ ℝ a, 0 ≤ x
r : ℝ
hr : 0 ≤ r
a✝ : Nontrivial A
x : ℝ
hx : x ∈ σ ℝ (r • a)
⊢ 0 ≤ x
tactic: intro x hx
state_before: A✝ : Type u_1
inst✝⁷ : NormedRing A✝
inst✝⁶ : StarRing A✝
inst✝⁵ : CstarRing A✝
inst✝⁴ : CompleteSpace A✝
inst✝³ : NormedAlgebra ℂ A✝
inst✝² : StarModule ℂ A✝
A : Type u_2
inst✝¹ : Ring A
inst✝ : Algebra ℝ A
a : A
ha : ∀ x ∈ σ ℝ a, 0 ≤ x
r : ℝ
hr : 0 ≤ r
a✝ : Nontrivial A
x : ℝ
hx : x ∈ σ ℝ (r • a)
⊢ 0 ≤ x
state_after: case pos
A✝ : Type u_1
inst✝⁷ : NormedRing A✝
inst✝⁶ : StarRing A✝
inst✝⁵ : CstarRing A✝
inst✝⁴ : CompleteSpace A✝
inst✝³ : NormedAlgebra ℂ A✝
inst✝² : StarModule ℂ A✝
A : Type u_2
inst✝¹ : Ring A
inst✝ : Algebra ℝ A
a : A
ha : ∀ x ∈ σ ℝ a, 0 ≤ x
r : ℝ
hr : 0 ≤ r
a✝ : Nontrivial A
x : ℝ
hx : x ∈ σ ℝ (r • a)
hr' : r = 0
⊢ 0 ≤ x

case neg
A✝ : Type u_1
inst✝⁷ : NormedRing A✝
inst✝⁶ : StarRing A✝
inst✝⁵ : CstarRing A✝
inst✝⁴ : CompleteSpace A✝
inst✝³ : NormedAlgebra ℂ A✝
inst✝² : StarModule ℂ A✝
A : Type u_2
inst✝¹ : Ring A
inst✝ : Algebra ℝ A
a : A
ha : ∀ x ∈ σ ℝ a, 0 ≤ x
r : ℝ
hr : 0 ≤ r
a✝ : Nontrivial A
x : ℝ
hx : x ∈ σ ℝ (r • a)
hr' : ¬r = 0
⊢ 0 ≤ x
tactic: by_cases hr' : r = 0
Theorem: FractionalIdeal.mul_induction_on
File: Mathlib/RingTheory/FractionalIdeal/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I J : FractionalIdeal S P
C : P → Prop
r : P
hr : r ∈ I * J
hm : ∀ i ∈ I, ∀ j ∈ J, C (i * j)
ha : ∀ (x y : P), C x → C y → C (x + y)
⊢ C r
state_after: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I J : FractionalIdeal S P
C : P → Prop
r : P
hm : ∀ i ∈ I, ∀ j ∈ J, C (i * j)
ha : ∀ (x y : P), C x → C y → C (x + y)
hr : r ∈ ⟨↑I * ↑J, ⋯⟩
⊢ C r
tactic: simp only [mul_def] at hr
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I J : FractionalIdeal S P
C : P → Prop
r : P
hm : ∀ i ∈ I, ∀ j ∈ J, C (i * j)
ha : ∀ (x y : P), C x → C y → C (x + y)
hr : r ∈ ⟨↑I * ↑J, ⋯⟩
⊢ C r
state_after: no goals
tactic: exact Submodule.mul_induction_on hr hm ha
Theorem: wbtw_midpoint
File: Mathlib/Analysis/Convex/Between.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ Wbtw R x (midpoint R x y) y
state_after: case h.e'_10
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ y = (pointReflection R (midpoint R x y)) x
tactic: convert wbtw_pointReflection R (midpoint R x y) x
state_before: case h.e'_10
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ y = (pointReflection R (midpoint R x y)) x
state_after: no goals
tactic: rw [pointReflection_midpoint_left]
Theorem: CategoryTheory.enrichedFunctorTypeEquivFunctor_apply_map
File: Mathlib/CategoryTheory/Enriched/Basic.lean

Proof steps:
state_before: V : Type v
inst✝² : Category.{w, v} V
inst✝¹ : MonoidalCategory V
C✝ : Type u₁
inst✝ : EnrichedCategory V C✝
C : Type u₁
𝒞 : EnrichedCategory (Type v) C
D : Type u₂
𝒟 : EnrichedCategory (Type v) D
F : C ⥤ D
X : C
⊢ eId (Type v) X ≫ (fun X Y f => F.map f) X X = eId (Type v) ((fun X => F.obj X) X)
state_after: case h.unit
V : Type v
inst✝² : Category.{w, v} V
inst✝¹ : MonoidalCategory V
C✝ : Type u₁
inst✝ : EnrichedCategory V C✝
C : Type u₁
𝒞 : EnrichedCategory (Type v) C
D : Type u₂
𝒟 : EnrichedCategory (Type v) D
F : C ⥤ D
X : C
⊢ (eId (Type v) X ≫ (fun X Y f => F.map f) X X) PUnit.unit = eId (Type v) ((fun X => F.obj X) X) PUnit.unit
tactic: ext ⟨⟩
state_before: case h.unit
V : Type v
inst✝² : Category.{w, v} V
inst✝¹ : MonoidalCategory V
C✝ : Type u₁
inst✝ : EnrichedCategory V C✝
C : Type u₁
𝒞 : EnrichedCategory (Type v) C
D : Type u₂
𝒟 : EnrichedCategory (Type v) D
F : C ⥤ D
X : C
⊢ (eId (Type v) X ≫ (fun X Y f => F.map f) X X) PUnit.unit = eId (Type v) ((fun X => F.obj X) X) PUnit.unit
state_after: no goals
tactic: exact F.map_id X
state_before: V : Type v
inst✝² : Category.{w, v} V
inst✝¹ : MonoidalCategory V
C✝ : Type u₁
inst✝ : EnrichedCategory V C✝
C : Type u₁
𝒞 : EnrichedCategory (Type v) C
D : Type u₂
𝒟 : EnrichedCategory (Type v) D
F : C ⥤ D
X Y Z : C
⊢ eComp (Type v) X Y Z ≫ (fun X Y f => F.map f) X Z =
    ((fun X Y f => F.map f) X Y ⊗ (fun X Y f => F.map f) Y Z) ≫
      eComp (Type v) ((fun X => F.obj X) X) ((fun X => F.obj X) Y) ((fun X => F.obj X) Z)
state_after: case h.mk
V : Type v
inst✝² : Category.{w, v} V
inst✝¹ : MonoidalCategory V
C✝ : Type u₁
inst✝ : EnrichedCategory V C✝
C : Type u₁
𝒞 : EnrichedCategory (Type v) C
D : Type u₂
𝒟 : EnrichedCategory (Type v) D
F : C ⥤ D
X Y Z : C
f : EnrichedCategory.Hom X Y
g : EnrichedCategory.Hom Y Z
⊢ (eComp (Type v) X Y Z ≫ (fun X Y f => F.map f) X Z) (f, g) =
    (((fun X Y f => F.map f) X Y ⊗ (fun X Y f => F.map f) Y Z) ≫
        eComp (Type v) ((fun X => F.obj X) X) ((fun X => F.obj X) Y) ((fun X => F.obj X) Z))
      (f, g)
tactic: ext ⟨f, g⟩
state_before: case h.mk
V : Type v
inst✝² : Category.{w, v} V
inst✝¹ : MonoidalCategory V
C✝ : Type u₁
inst✝ : EnrichedCategory V C✝
C : Type u₁
𝒞 : EnrichedCategory (Type v) C
D : Type u₂
𝒟 : EnrichedCategory (Type v) D
F : C ⥤ D
X Y Z : C
f : EnrichedCategory.Hom X Y
g : EnrichedCategory.Hom Y Z
⊢ (eComp (Type v) X Y Z ≫ (fun X Y f => F.map f) X Z) (f, g) =
    (((fun X Y f => F.map f) X Y ⊗ (fun X Y f => F.map f) Y Z) ≫
        eComp (Type v) ((fun X => F.obj X) X) ((fun X => F.obj X) Y) ((fun X => F.obj X) Z))
      (f, g)
state_after: no goals
tactic: exact F.map_comp f g
Theorem: AffineBasis.toMatrix_inv_vecMul_toMatrix
File: Mathlib/LinearAlgebra/AffineSpace/Matrix.lean

Proof steps:
state_before: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : CommRing k
inst✝² : Module k V
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b b₂ : AffineBasis ι k P
x : P
⊢ b.coords x ᵥ* (b.toMatrix ⇑b₂)⁻¹ = b₂.coords x
state_after: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : CommRing k
inst✝² : Module k V
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b b₂ : AffineBasis ι k P
x : P
hu : IsUnit (b.toMatrix ⇑b₂)
⊢ b.coords x ᵥ* (b.toMatrix ⇑b₂)⁻¹ = b₂.coords x
tactic: have hu := b.isUnit_toMatrix b₂
state_before: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : CommRing k
inst✝² : Module k V
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b b₂ : AffineBasis ι k P
x : P
hu : IsUnit (b.toMatrix ⇑b₂)
⊢ b.coords x ᵥ* (b.toMatrix ⇑b₂)⁻¹ = b₂.coords x
state_after: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : CommRing k
inst✝² : Module k V
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b b₂ : AffineBasis ι k P
x : P
hu : IsUnit (b.toMatrix ⇑b₂).det
⊢ b.coords x ᵥ* (b.toMatrix ⇑b₂)⁻¹ = b₂.coords x
tactic: rw [Matrix.isUnit_iff_isUnit_det] at hu
state_before: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : CommRing k
inst✝² : Module k V
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b b₂ : AffineBasis ι k P
x : P
hu : IsUnit (b.toMatrix ⇑b₂).det
⊢ b.coords x ᵥ* (b.toMatrix ⇑b₂)⁻¹ = b₂.coords x
state_after: no goals
tactic: rw [← b.toMatrix_vecMul_coords b₂, Matrix.vecMul_vecMul, Matrix.mul_nonsing_inv _ hu,
    Matrix.vecMul_one]