1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SetLike.coe_list_dProd
File: Mathlib/Algebra/GradedMonoid.lean

tactic: match l with
| [] =>
  rw [List.dProd_nil, coe_gOne, List.map_nil, List.prod_nil]
| head::tail =>
  rw [List.dProd_cons, coe_gMul, List.map_cons, List.prod_cons,
    SetLike.coe_list_dProd _ _ _ tail]
state_before: ι : Type u_1
R : Type u_2
α : Type u_3
S : Type u_4
inst✝³ : SetLike S R
inst✝² : Monoid R
inst✝¹ : AddMonoid ι
A : ι → S
inst✝ : GradedMonoid A
fι : α → ι
fA : (a : α) → ↥(A (fι a))
l : List α
⊢ ↑(l.dProd fι fA) = (List.map (fun a => ↑(fA a)) l).prod
state_after: no goals

tactic: rw [List.dProd_nil, coe_gOne, List.map_nil, List.prod_nil]
state_before: ι : Type u_1
R : Type u_2
α : Type u_3
S : Type u_4
inst✝³ : SetLike S R
inst✝² : Monoid R
inst✝¹ : AddMonoid ι
A : ι → S
inst✝ : GradedMonoid A
fι : α → ι
fA : (a : α) → ↥(A (fι a))
l : List α
⊢ ↑([].dProd fι fA) = (List.map (fun a => ↑(fA a)) []).prod
state_after: no goals

tactic: rw [List.dProd_cons, coe_gMul, List.map_cons, List.prod_cons,
  SetLike.coe_list_dProd _ _ _ tail]
state_before: ι : Type u_1
R : Type u_2
α : Type u_3
S : Type u_4
inst✝³ : SetLike S R
inst✝² : Monoid R
inst✝¹ : AddMonoid ι
A : ι → S
inst✝ : GradedMonoid A
fι : α → ι
fA : (a : α) → ↥(A (fι a))
l : List α
head : α
tail : List α
⊢ ↑((head :: tail).dProd fι fA) = (List.map (fun a => ↑(fA a)) (head :: tail)).prod
state_after: no goals
Theorem: Cubic.ne_zero
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: contrapose! h0
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
h0 : P.a ≠ 0 ∨ P.b ≠ 0 ∨ P.c ≠ 0 ∨ P.d ≠ 0
⊢ P.toPoly ≠ 0
state_after: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
h0 : P.toPoly = 0
⊢ P.a = 0 ∧ P.b = 0 ∧ P.c = 0 ∧ P.d = 0

tactic: rw [(toPoly_eq_zero_iff P).mp h0]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
h0 : P.toPoly = 0
⊢ P.a = 0 ∧ P.b = 0 ∧ P.c = 0 ∧ P.d = 0
state_after: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
h0 : P.toPoly = 0
⊢ Cubic.a 0 = 0 ∧ Cubic.b 0 = 0 ∧ Cubic.c 0 = 0 ∧ Cubic.d 0 = 0

tactic: exact ⟨rfl, rfl, rfl, rfl⟩
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
h0 : P.toPoly = 0
⊢ Cubic.a 0 = 0 ∧ Cubic.b 0 = 0 ∧ Cubic.c 0 = 0 ∧ Cubic.d 0 = 0
state_after: no goals
Theorem: Cardinal.ord_one
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: simpa using ord_nat 1
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
⊢ ord 1 = 1
state_after: no goals
Theorem: MeasurableSet.tProd
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: induction' l with i l ih
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝ : (x : δ) → MeasurableSpace (π x)
l : List δ
s : (i : δ) → Set (π i)
hs : ∀ (i : δ), MeasurableSet (s i)
⊢ MeasurableSet (Set.tprod l s)
state_after: case nil
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝ : (x : δ) → MeasurableSpace (π x)
s : (i : δ) → Set (π i)
hs : ∀ (i : δ), MeasurableSet (s i)
⊢ MeasurableSet (Set.tprod [] s)

case cons
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝ : (x : δ) → MeasurableSpace (π x)
s : (i : δ) → Set (π i)
hs : ∀ (i : δ), MeasurableSet (s i)
i : δ
l : List δ
ih : MeasurableSet (Set.tprod l s)
⊢ MeasurableSet (Set.tprod (i :: l) s)

tactic: exact MeasurableSet.univ
state_before: case nil
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝ : (x : δ) → MeasurableSpace (π x)
s : (i : δ) → Set (π i)
hs : ∀ (i : δ), MeasurableSet (s i)
⊢ MeasurableSet (Set.tprod [] s)
state_after: no goals

tactic: exact (hs i).prod ih
state_before: case cons
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝ : (x : δ) → MeasurableSpace (π x)
s : (i : δ) → Set (π i)
hs : ∀ (i : δ), MeasurableSet (s i)
i : δ
l : List δ
ih : MeasurableSet (Set.tprod l s)
⊢ MeasurableSet (Set.tprod (i :: l) s)
state_after: no goals
Theorem: MeasureTheory.lintegral_singleton
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: simp only [restrict_singleton, lintegral_smul_measure, lintegral_dirac, mul_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
a : α
⊢ ∫⁻ (x : α) in {a}, f x ∂μ = f a * μ {a}
state_after: no goals
Theorem: Nat.shiftLeft'_sub
File: Mathlib/Data/Nat/Bits.lean

tactic: rw [succ_sub_succ_eq_sub, shiftLeft', Nat.add_comm, shiftRight_add]
state_before: m✝ n✝ : ℕ
b : Bool
m n k : ℕ
h : k + 1 ≤ n + 1
⊢ shiftLeft' b m (n + 1 - (k + 1)) = shiftLeft' b m (n + 1) >>> (k + 1)
state_after: m✝ n✝ : ℕ
b : Bool
m n k : ℕ
h : k + 1 ≤ n + 1
⊢ shiftLeft' b m (n - k) = bit b (shiftLeft' b m n) >>> 1 >>> k

tactic: simp only [shiftLeft'_sub, Nat.le_of_succ_le_succ h, shiftRight_succ, shiftRight_zero]
state_before: m✝ n✝ : ℕ
b : Bool
m n k : ℕ
h : k + 1 ≤ n + 1
⊢ shiftLeft' b m (n - k) = bit b (shiftLeft' b m n) >>> 1 >>> k
state_after: m✝ n✝ : ℕ
b : Bool
m n k : ℕ
h : k + 1 ≤ n + 1
⊢ shiftLeft' b m n >>> k = (bit b (shiftLeft' b m n) / 2) >>> k

tactic: simp [← div2_val, div2_bit]
state_before: m✝ n✝ : ℕ
b : Bool
m n k : ℕ
h : k + 1 ≤ n + 1
⊢ shiftLeft' b m n >>> k = (bit b (shiftLeft' b m n) / 2) >>> k
state_after: no goals
Theorem: mul_inv_lt_iff_le_mul'
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← inv_mul_lt_iff_lt_mul, mul_comm]
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : LT α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
⊢ a * b⁻¹ < c ↔ a < b * c
state_after: no goals
Theorem: Part.ofOption_dom
File: Mathlib/Data/Part.lean

tactic: simp [ofOption, none]
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
⊢ (↑Option.none).Dom ↔ Option.none.isSome = true
state_after: no goals

tactic: simp [ofOption]
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
a : α
⊢ (↑(Option.some a)).Dom ↔ (Option.some a).isSome = true
state_after: no goals
Theorem: ContinuousLinearMap.norm_map_iff_adjoint_comp_self
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: rw [LinearMap.norm_map_iff_inner_map_map u, u.inner_map_map_iff_adjoint_comp_self]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝¹² : RCLike 𝕜
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : InnerProductSpace 𝕜 F
inst✝⁶ : InnerProductSpace 𝕜 G
H : Type u_5
inst✝⁵ : NormedAddCommGroup H
inst✝⁴ : InnerProductSpace 𝕜 H
inst✝³ : CompleteSpace H
K : Type u_6
inst✝² : NormedAddCommGroup K
inst✝¹ : InnerProductSpace 𝕜 K
inst✝ : CompleteSpace K
u : H →L[𝕜] K
⊢ (∀ (x : H), ‖u x‖ = ‖x‖) ↔ (adjoint u).comp u = 1
state_after: no goals
Theorem: Filter.HasBasis.lebesgue_number_lemma
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: refine (hbasis.exists_iff ?_).1 (lebesgue_number_lemma hK hopen hcover)
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι' : Sort u_2
ι : Sort u_3
p : ι' → Prop
V : ι' → Set (α × α)
U : ι → Set α
hbasis : (𝓤 α).HasBasis p V
hK : IsCompact K
hopen : ∀ (j : ι), IsOpen (U j)
hcover : K ⊆ ⋃ j, U j
⊢ ∃ i, p i ∧ ∀ x ∈ K, ∃ j, ball x (V i) ⊆ U j
state_after: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι' : Sort u_2
ι : Sort u_3
p : ι' → Prop
V : ι' → Set (α × α)
U : ι → Set α
hbasis : (𝓤 α).HasBasis p V
hK : IsCompact K
hopen : ∀ (j : ι), IsOpen (U j)
hcover : K ⊆ ⋃ j, U j
⊢ ∀ ⦃s t : Set (α × α)⦄, s ⊆ t → (∀ x ∈ K, ∃ i, ball x t ⊆ U i) → ∀ x ∈ K, ∃ i, ball x s ⊆ U i

tactic: exact fun s t hst ht x hx ↦ (ht x hx).imp fun i hi ↦ Subset.trans (ball_mono hst _) hi
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι' : Sort u_2
ι : Sort u_3
p : ι' → Prop
V : ι' → Set (α × α)
U : ι → Set α
hbasis : (𝓤 α).HasBasis p V
hK : IsCompact K
hopen : ∀ (j : ι), IsOpen (U j)
hcover : K ⊆ ⋃ j, U j
⊢ ∀ ⦃s t : Set (α × α)⦄, s ⊆ t → (∀ x ∈ K, ∃ i, ball x t ⊆ U i) → ∀ x ∈ K, ∃ i, ball x s ⊆ U i
state_after: no goals
Theorem: Real.nnabs_of_nonneg
File: Mathlib/Data/NNReal/Basic.lean

tactic: ext
state_before: x : ℝ
h : 0 ≤ x
⊢ nnabs x = x.toNNReal
state_after: case a
x : ℝ
h : 0 ≤ x
⊢ ↑(nnabs x) = ↑x.toNNReal

tactic: rw [coe_toNNReal x h, coe_nnabs, abs_of_nonneg h]
state_before: case a
x : ℝ
h : 0 ≤ x
⊢ ↑(nnabs x) = ↑x.toNNReal
state_after: no goals
Theorem: CategoryTheory.CommSq.HasLift.iff_op
File: Mathlib/CategoryTheory/CommSq.lean

tactic: rw [iff, iff]
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
A B X Y : C
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ sq.HasLift ↔ ⋯.HasLift
state_after: C : Type u_1
inst✝ : Category.{u_2, u_1} C
A B X Y : C
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ Nonempty sq.LiftStruct ↔ Nonempty ⋯.LiftStruct

tactic: exact Nonempty.congr (LiftStruct.opEquiv sq).toFun (LiftStruct.opEquiv sq).invFun
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
A B X Y : C
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ Nonempty sq.LiftStruct ↔ Nonempty ⋯.LiftStruct
state_after: no goals
Theorem: lineMap_slope_lineMap_slope_lineMap
File: Mathlib/LinearAlgebra/AffineSpace/Slope.lean

tactic: obtain rfl | hab : a = b ∨ a ≠ b := Classical.em _
state_before: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a b r : k
⊢ (lineMap (slope f ((lineMap a b) r) b) (slope f a ((lineMap a b) r))) r = slope f a b
state_after: case inl
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a r : k
⊢ (lineMap (slope f ((lineMap a a) r) a) (slope f a ((lineMap a a) r))) r = slope f a a

case inr
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a b r : k
hab : a ≠ b
⊢ (lineMap (slope f ((lineMap a b) r) b) (slope f a ((lineMap a b) r))) r = slope f a b

tactic: rw [slope_comm _ a, slope_comm _ a, slope_comm _ _ b]
state_before: case inr
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a b r : k
hab : a ≠ b
⊢ (lineMap (slope f ((lineMap a b) r) b) (slope f a ((lineMap a b) r))) r = slope f a b
state_after: case inr
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a b r : k
hab : a ≠ b
⊢ (lineMap (slope f b ((lineMap a b) r)) (slope f ((lineMap a b) r) a)) r = slope f b a

tactic: convert lineMap_slope_slope_sub_div_sub f b (lineMap a b r) a hab.symm using 2
state_before: case inr
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a b r : k
hab : a ≠ b
⊢ (lineMap (slope f b ((lineMap a b) r)) (slope f ((lineMap a b) r) a)) r = slope f b a
state_after: case h.e'_2.h.e'_6
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a b r : k
hab : a ≠ b
⊢ r = (a - (lineMap a b) r) / (a - b)

tactic: rw [lineMap_apply_ring, eq_div_iff (sub_ne_zero.2 hab), sub_mul, one_mul, mul_sub, ← sub_sub,
  sub_sub_cancel]
state_before: case h.e'_2.h.e'_6
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a b r : k
hab : a ≠ b
⊢ r = (a - (lineMap a b) r) / (a - b)
state_after: no goals

tactic: simp
state_before: case inl
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a r : k
⊢ (lineMap (slope f ((lineMap a a) r) a) (slope f a ((lineMap a a) r))) r = slope f a a
state_after: no goals
Theorem: CategoryTheory.ShortComplex.opcyclesMap'_sub
File: Mathlib/Algebra/Homology/ShortComplex/Preadditive.lean

tactic: simp only [sub_eq_add_neg, opcyclesMap'_add, opcyclesMap'_neg]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ opcyclesMap' (φ - φ') h₁ h₂ = opcyclesMap' φ h₁ h₂ - opcyclesMap' φ' h₁ h₂
state_after: no goals
Theorem: WellFounded.self_le_of_strictMono
File: Mathlib/Order/WellFounded.lean

tactic: by_contra! h₁
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f : β → β
hf : StrictMono f
⊢ ∀ (n : β), n ≤ f n
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f : β → β
hf : StrictMono f
h₁ : ∃ n, f n < n
⊢ False

tactic: have h₂ := h.min_mem _ h₁
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f : β → β
hf : StrictMono f
h₁ : ∃ n, f n < n
⊢ False
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f : β → β
hf : StrictMono f
h₁ : ∃ n, f n < n
h₂ : h.min (fun x => Preorder.toLT.1 (f x) x) h₁ ∈ fun x => Preorder.toLT.1 (f x) x
⊢ False

tactic: exact h.not_lt_min _ h₁ (hf h₂) h₂
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r r' : α → α → Prop
inst✝¹ : LinearOrder β
h : WellFounded fun x x_1 => x < x_1
inst✝ : PartialOrder γ
f : β → β
hf : StrictMono f
h₁ : ∃ n, f n < n
h₂ : h.min (fun x => Preorder.toLT.1 (f x) x) h₁ ∈ fun x => Preorder.toLT.1 (f x) x
⊢ False
state_after: no goals
Theorem: Real.borel_eq_generateFrom_Ioi_rat
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Real.lean

tactic: rw [borel_eq_generateFrom_Ioi]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ borel ℝ = generateFrom (⋃ a, {Ioi ↑a})
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ generateFrom (range Ioi) = generateFrom (⋃ a, {Ioi ↑a})

tactic: refine le_antisymm
  (generateFrom_le ?_)
  (generateFrom_mono <| iUnion_subset fun q ↦ singleton_subset_iff.mpr <| mem_range_self _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ generateFrom (range Ioi) = generateFrom (⋃ a, {Ioi ↑a})
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ ∀ t ∈ range Ioi, MeasurableSet t

tactic: rintro _ ⟨a, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ ∀ t ∈ range Ioi, MeasurableSet t
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
a : ℝ
⊢ MeasurableSet (Ioi a)

tactic: have : IsGLB (range ((↑) : ℚ → ℝ) ∩ Ioi a) a := by
  simp [isGLB_iff_le_iff, mem_lowerBounds, ← le_iff_forall_lt_rat_imp_le]
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
a : ℝ
⊢ MeasurableSet (Ioi a)
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
a : ℝ
this : IsGLB (range Rat.cast ∩ Ioi a) a
⊢ MeasurableSet (Ioi a)

tactic: rw [← this.biUnion_Ioi_eq, ← image_univ, ← image_inter_preimage, univ_inter, biUnion_image]
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
a : ℝ
this : IsGLB (range Rat.cast ∩ Ioi a) a
⊢ MeasurableSet (Ioi a)
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
a : ℝ
this : IsGLB (range Rat.cast ∩ Ioi a) a
⊢ MeasurableSet (⋃ y ∈ Rat.cast ⁻¹' Ioi a, Ioi ↑y)

tactic: exact MeasurableSet.biUnion (to_countable _)
  fun b _ => GenerateMeasurable.basic (Ioi (b : ℝ)) (by simp)
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
a : ℝ
this : IsGLB (range Rat.cast ∩ Ioi a) a
⊢ MeasurableSet (⋃ y ∈ Rat.cast ⁻¹' Ioi a, Ioi ↑y)
state_after: no goals

tactic: simp [isGLB_iff_le_iff, mem_lowerBounds, ← le_iff_forall_lt_rat_imp_le]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
a : ℝ
⊢ IsGLB (range Rat.cast ∩ Ioi a) a
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
a : ℝ
this : IsGLB (range Rat.cast ∩ Ioi a) a
b : ℚ
x✝ : b ∈ Rat.cast ⁻¹' Ioi a
⊢ Ioi ↑b ∈ ⋃ a, {Ioi ↑a}
state_after: no goals
Theorem: sdiff_le_sdiff_of_sup_le_sup_left
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [← sup_sdiff_left_self, ← @sup_sdiff_left_self _ _ _ b]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
h : c ⊔ a ≤ c ⊔ b
⊢ a \ c ≤ b \ c
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
h : c ⊔ a ≤ c ⊔ b
⊢ (c ⊔ a) \ c ≤ (c ⊔ b) \ c

tactic: exact sdiff_le_sdiff_right h
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
h : c ⊔ a ≤ c ⊔ b
⊢ (c ⊔ a) \ c ≤ (c ⊔ b) \ c
state_after: no goals
Theorem: PartENat.get_le_get
File: Mathlib/Data/Nat/PartENat.lean

tactic: conv =>
  lhs
  rw [← coe_le_coe, natCast_get, natCast_get]
state_before: x y : PartENat
hx : x.Dom
hy : y.Dom
⊢ x.get hx ≤ y.get hy ↔ x ≤ y
state_after: no goals
Theorem: vadd_eq_vadd_iff_neg_add_eq_vsub
File: Mathlib/Algebra/AddTorsor.lean

tactic: rw [eq_vadd_iff_vsub_eq, vadd_vsub_assoc, ← add_right_inj (-v₁), neg_add_cancel_left, eq_comm]
state_before: G : Type u_1
P : Type u_2
inst✝ : AddGroup G
T : AddTorsor G P
v₁ v₂ : G
p₁ p₂ : P
⊢ v₁ +ᵥ p₁ = v₂ +ᵥ p₂ ↔ -v₁ + v₂ = p₁ -ᵥ p₂
state_after: no goals
Theorem: Ordnode.Valid'.rotateL_lemma₄
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: omega
state_before: α : Type u_1
inst✝ : Preorder α
a b : ℕ
H3 : 2 * b ≤ 9 * a + 3
⊢ 3 * b ≤ 16 * a + 9
state_after: no goals
Theorem: measurable_inv_iff
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

tactic: simpa only [inv_inv] using h.inv
state_before: α✝ : Type u_1
G✝ : Type u_2
α : Type u_3
inst✝⁵ : Inv G✝
inst✝⁴ : MeasurableSpace G✝
inst✝³ : MeasurableInv G✝
m : MeasurableSpace α
f✝ : α → G✝
μ : Measure α
G : Type u_4
inst✝² : Group G
inst✝¹ : MeasurableSpace G
inst✝ : MeasurableInv G
f : α → G
h : Measurable fun x => (f x)⁻¹
⊢ Measurable f
state_after: no goals
Theorem: CategoryTheory.PreGaloisCategory.subobj_selfProd_trans
File: Mathlib/CategoryTheory/Galois/Decomposition.lean

tactic: apply connected_component_unique F b a u (selfProdPermIncl h b)
state_before: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
⊢ ∃ f, F.map f.hom b = a
state_after: case h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
⊢ F.map u b = F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a

tactic: exact selfProdTermIncl_fib_eq h b
state_before: case h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
⊢ F.map u b = F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a
state_after: no goals
Theorem: dvd_sub
File: Mathlib/Algebra/Ring/Divisibility/Basic.lean

tactic: simpa only [← sub_eq_add_neg] using h₁.add h₂.neg_right
state_before: α : Type u_1
β : Type u_2
inst✝ : NonUnitalRing α
a b c : α
h₁ : a ∣ b
h₂ : a ∣ c
⊢ a ∣ b - c
state_after: no goals
Theorem: multiplicity_eq_zero_of_coprime
File: Mathlib/RingTheory/Multiplicity.lean

tactic: rw [multiplicity_le_multiplicity_iff] at hle
state_before: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : multiplicity p a ≤ multiplicity p b
hab : a.Coprime b
⊢ multiplicity p a = 0
state_after: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
⊢ multiplicity p a = 0

tactic: rw [← nonpos_iff_eq_zero, ← not_lt, PartENat.pos_iff_one_le, ← Nat.cast_one, ←
  pow_dvd_iff_le_multiplicity]
state_before: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
⊢ multiplicity p a = 0
state_after: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
⊢ ¬p ^ 1 ∣ a

tactic: intro h
state_before: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
⊢ ¬p ^ 1 ∣ a
state_after: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
h : p ^ 1 ∣ a
⊢ False

tactic: have := Nat.dvd_gcd h (hle _ h)
state_before: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
h : p ^ 1 ∣ a
⊢ False
state_after: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
h : p ^ 1 ∣ a
this : p ^ 1 ∣ a.gcd b
⊢ False

tactic: rw [Coprime.gcd_eq_one hab, Nat.dvd_one, pow_one] at this
state_before: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
h : p ^ 1 ∣ a
this : p ^ 1 ∣ a.gcd b
⊢ False
state_after: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
h : p ^ 1 ∣ a
this : p = 1
⊢ False

tactic: exact hp this
state_before: α : Type u_1
β : Type u_2
p a b : ℕ
hp : p ≠ 1
hle : ∀ (n : ℕ), p ^ n ∣ a → p ^ n ∣ b
hab : a.Coprime b
h : p ^ 1 ∣ a
this : p = 1
⊢ False
state_after: no goals
Theorem: toAdd_multiset_sum
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simp [toAdd, ofAdd]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : AddCommMonoid α
s : Multiset (Multiplicative α)
⊢ toAdd s.prod = (Multiset.map (⇑toAdd) s).sum
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : AddCommMonoid α
s : Multiset (Multiplicative α)
⊢ s.prod = s.sum

tactic: rfl
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : AddCommMonoid α
s : Multiset (Multiplicative α)
⊢ s.prod = s.sum
state_after: no goals
Theorem: WeierstrassCurve.Affine.evalEval_polynomialY_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: simp only [evalEval_polynomialY, zero_add, mul_zero]
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
⊢ evalEval 0 0 W.polynomialY = W.a₃
state_after: no goals
Theorem: Set.iUnion_Ico_eq_Iio_self_iff
File: Mathlib/Order/Interval/Set/Disjoint.lean

tactic: simp [← Ici_inter_Iio, ← iUnion_inter, subset_def]
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
a₁ a₂ b₁ b₂ : α
f : ι → α
a : α
⊢ ⋃ i, Ico (f i) a = Iio a ↔ ∀ x < a, ∃ i, f i ≤ x
state_after: no goals