1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SymOptionSuccEquiv.decode_encode
File: Mathlib/Data/Sym/Basic.lean

tactic: by_cases h : none ∈ s
state_before: α : Type u_1
n : ℕ
inst✝ : DecidableEq α
s : Sym (Option α) n.succ
⊢ decode (encode s) = s
state_after: case pos
α : Type u_1
n : ℕ
inst✝ : DecidableEq α
s : Sym (Option α) n.succ
h : none ∈ s
⊢ decode (encode s) = s

case neg
α : Type u_1
n : ℕ
inst✝ : DecidableEq α
s : Sym (Option α) n.succ
h : none ∉ s
⊢ decode (encode s) = s

tactic: simp [h]
state_before: case pos
α : Type u_1
n : ℕ
inst✝ : DecidableEq α
s : Sym (Option α) n.succ
h : none ∈ s
⊢ decode (encode s) = s
state_after: no goals

tactic: simp only [decode, h, not_false_iff, encode_of_not_none_mem, Embedding.some_apply, map_map,
  comp_apply, Option.some_get]
state_before: case neg
α : Type u_1
n : ℕ
inst✝ : DecidableEq α
s : Sym (Option α) n.succ
h : none ∉ s
⊢ decode (encode s) = s
state_after: case neg
α : Type u_1
n : ℕ
inst✝ : DecidableEq α
s : Sym (Option α) n.succ
h : none ∉ s
⊢ map (fun x => ↑x) s.attach = s

tactic: convert s.attach_map_coe
state_before: case neg
α : Type u_1
n : ℕ
inst✝ : DecidableEq α
s : Sym (Option α) n.succ
h : none ∉ s
⊢ map (fun x => ↑x) s.attach = s
state_after: no goals
Theorem: RootPairing.mapsTo_coreflection_coroot
File: Mathlib/LinearAlgebra/RootSystem/Defs.lean

tactic: rintro - ⟨j, rfl⟩
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
⊢ MapsTo (⇑(P.coreflection i)) (range ⇑P.coroot) (range ⇑P.coroot)
state_after: case intro
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j✝ j : ι
⊢ (P.coreflection i) (P.coroot j) ∈ range ⇑P.coroot

tactic: exact P.coroot_reflection_perm i j ▸ mem_range_self (P.reflection_perm i j)
state_before: case intro
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j✝ j : ι
⊢ (P.coreflection i) (P.coroot j) ∈ range ⇑P.coroot
state_after: no goals
Theorem: PMF.mem_support_ofFinset_iff
File: Mathlib/Probability/ProbabilityMassFunction/Constructions.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → ℝ≥0∞
s : Finset α
h : ∑ a ∈ s, f a = 1
h' : ∀ a ∉ s, f a = 0
a : α
⊢ a ∈ (ofFinset f s h h').support ↔ a ∈ s ∧ f a ≠ 0
state_after: no goals
Theorem: CauSeq.lim_mul
File: Mathlib/Algebra/Order/CauSeq/Completion.lean

tactic: rw [← lim_mul_lim, lim_const]
state_before: α : Type u_1
inst✝³ : LinearOrderedField α
β : Type u_2
inst✝² : Ring β
abv : β → α
inst✝¹ : IsAbsoluteValue abv
inst✝ : IsComplete β abv
f : CauSeq β abv
x : β
⊢ f.lim * x = (f * const abv x).lim
state_after: no goals
Theorem: IsLeftRegular.star
File: Mathlib/Algebra/Star/Basic.lean

tactic: simpa using congr_arg Star.star h
state_before: R : Type u
inst✝¹ : Mul R
inst✝ : StarMul R
x : R
hx : IsLeftRegular x
a b : R
h : (fun x_1 => x_1 * star x) a = (fun x_1 => x_1 * star x) b
⊢ (fun x_1 => x * x_1) (star a) = (fun x_1 => x * x_1) (star b)
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.map_dblXYZ
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: simp_rw [dblXYZ, comp_fin3, map_dblX, map_dblY, map_dblZ]
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
S : Type u_1
inst✝ : CommRing S
f : R →+* S
P Q : Fin 3 → R
⊢ dblXYZ (map W' f) (⇑f ∘ P) = ⇑f ∘ W'.dblXYZ P
state_after: no goals
Theorem: lipschitzWith_negPart
File: Mathlib/Analysis/Normed/Order/Lattice.lean

tactic: simpa [Function.comp] using lipschitzWith_posPart.comp LipschitzWith.id.neg
state_before: α : Type u_1
inst✝ : NormedLatticeAddCommGroup α
⊢ LipschitzWith 1 negPart
state_after: no goals
Theorem: jacobiSym.list_prod_right
File: Mathlib/NumberTheory/LegendreSymbol/JacobiSymbol.lean

tactic: induction' l with n l' ih
state_before: a : ℤ
l : List ℕ
hl : ∀ n ∈ l, n ≠ 0
⊢ J(a | l.prod) = (List.map (fun n => J(a | n)) l).prod
state_after: case nil
a : ℤ
hl : ∀ n ∈ [], n ≠ 0
⊢ J(a | [].prod) = (List.map (fun n => J(a | n)) []).prod

case cons
a : ℤ
n : ℕ
l' : List ℕ
ih : (∀ n ∈ l', n ≠ 0) → J(a | l'.prod) = (List.map (fun n => J(a | n)) l').prod
hl : ∀ n_1 ∈ n :: l', n_1 ≠ 0
⊢ J(a | (n :: l').prod) = (List.map (fun n => J(a | n)) (n :: l')).prod

tactic: simp only [List.prod_nil, one_right, List.map_nil]
state_before: case nil
a : ℤ
hl : ∀ n ∈ [], n ≠ 0
⊢ J(a | [].prod) = (List.map (fun n => J(a | n)) []).prod
state_after: no goals

tactic: have hn := hl n (List.mem_cons_self n l')
state_before: case cons
a : ℤ
n : ℕ
l' : List ℕ
ih : (∀ n ∈ l', n ≠ 0) → J(a | l'.prod) = (List.map (fun n => J(a | n)) l').prod
hl : ∀ n_1 ∈ n :: l', n_1 ≠ 0
⊢ J(a | (n :: l').prod) = (List.map (fun n => J(a | n)) (n :: l')).prod
state_after: case cons
a : ℤ
n : ℕ
l' : List ℕ
ih : (∀ n ∈ l', n ≠ 0) → J(a | l'.prod) = (List.map (fun n => J(a | n)) l').prod
hl : ∀ n_1 ∈ n :: l', n_1 ≠ 0
hn : n ≠ 0
⊢ J(a | (n :: l').prod) = (List.map (fun n => J(a | n)) (n :: l')).prod

tactic: have hl' := List.prod_ne_zero fun hf => hl 0 (List.mem_cons_of_mem _ hf) rfl
state_before: case cons
a : ℤ
n : ℕ
l' : List ℕ
ih : (∀ n ∈ l', n ≠ 0) → J(a | l'.prod) = (List.map (fun n => J(a | n)) l').prod
hl : ∀ n_1 ∈ n :: l', n_1 ≠ 0
hn : n ≠ 0
⊢ J(a | (n :: l').prod) = (List.map (fun n => J(a | n)) (n :: l')).prod
state_after: case cons
a : ℤ
n : ℕ
l' : List ℕ
ih : (∀ n ∈ l', n ≠ 0) → J(a | l'.prod) = (List.map (fun n => J(a | n)) l').prod
hl : ∀ n_1 ∈ n :: l', n_1 ≠ 0
hn : n ≠ 0
hl' : l'.prod ≠ 0
⊢ J(a | (n :: l').prod) = (List.map (fun n => J(a | n)) (n :: l')).prod

tactic: have h := fun m hm => hl m (List.mem_cons_of_mem _ hm)
state_before: case cons
a : ℤ
n : ℕ
l' : List ℕ
ih : (∀ n ∈ l', n ≠ 0) → J(a | l'.prod) = (List.map (fun n => J(a | n)) l').prod
hl : ∀ n_1 ∈ n :: l', n_1 ≠ 0
hn : n ≠ 0
hl' : l'.prod ≠ 0
⊢ J(a | (n :: l').prod) = (List.map (fun n => J(a | n)) (n :: l')).prod
state_after: case cons
a : ℤ
n : ℕ
l' : List ℕ
ih : (∀ n ∈ l', n ≠ 0) → J(a | l'.prod) = (List.map (fun n => J(a | n)) l').prod
hl : ∀ n_1 ∈ n :: l', n_1 ≠ 0
hn : n ≠ 0
hl' : l'.prod ≠ 0
h : ∀ m ∈ l', m ≠ 0
⊢ J(a | (n :: l').prod) = (List.map (fun n => J(a | n)) (n :: l')).prod

tactic: rw [List.map, List.prod_cons, List.prod_cons, mul_right' a hn hl', ih h]
state_before: case cons
a : ℤ
n : ℕ
l' : List ℕ
ih : (∀ n ∈ l', n ≠ 0) → J(a | l'.prod) = (List.map (fun n => J(a | n)) l').prod
hl : ∀ n_1 ∈ n :: l', n_1 ≠ 0
hn : n ≠ 0
hl' : l'.prod ≠ 0
h : ∀ m ∈ l', m ≠ 0
⊢ J(a | (n :: l').prod) = (List.map (fun n => J(a | n)) (n :: l')).prod
state_after: no goals
Theorem: iSup_inf_iSup
File: Mathlib/Order/CompleteBooleanAlgebra.lean

tactic: simp_rw [iSup_inf_eq, inf_iSup_eq, iSup_prod]
state_before: α : Type u
β : Type v
ι✝ : Sort w
κ : ι✝ → Sort w'
inst✝ : Frame α
s t : Set α
a b : α
ι : Type u_1
ι' : Type u_2
f : ι → α
g : ι' → α
⊢ (⨆ i, f i) ⊓ ⨆ j, g j = ⨆ i, f i.1 ⊓ g i.2
state_after: no goals
Theorem: WittVector.bind₁_zero_wittPolynomial
File: Mathlib/RingTheory/WittVector/IsPoly.lean

tactic: rw [← aeval_eq_bind₁, aeval_zero, constantCoeff_wittPolynomial, RingHom.map_zero]
state_before: p : ℕ
R S : Type u
σ : Type u_1
idx : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Fact (Nat.Prime p)
n : ℕ
⊢ (bind₁ 0) (wittPolynomial p R n) = 0
state_after: no goals
Theorem: MeasureTheory.Measure.toSignedMeasure_smul
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: ext i hi
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
r : ℝ≥0
⊢ (r • μ).toSignedMeasure = r • μ.toSignedMeasure
state_after: case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
r : ℝ≥0
i : Set α
hi : MeasurableSet i
⊢ ↑(r • μ).toSignedMeasure i = ↑(r • μ.toSignedMeasure) i

tactic: rw [toSignedMeasure_apply_measurable hi, VectorMeasure.smul_apply,
  toSignedMeasure_apply_measurable hi, coe_smul, Pi.smul_apply, ENNReal.toReal_smul]
state_before: case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
r : ℝ≥0
i : Set α
hi : MeasurableSet i
⊢ ↑(r • μ).toSignedMeasure i = ↑(r • μ.toSignedMeasure) i
state_after: no goals
Theorem: Path.truncate_const_continuous_family
File: Mathlib/Topology/Connected/PathConnected.lean

tactic: have key : Continuous (fun x => (t, x) : ℝ × I → ℝ × ℝ × I) := by fun_prop
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
t : ℝ
⊢ Continuous ↿(γ.truncate t)
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
t : ℝ
key : Continuous fun x => (t, x)
⊢ Continuous ↿(γ.truncate t)

tactic: exact γ.truncate_continuous_family.comp key
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
t : ℝ
key : Continuous fun x => (t, x)
⊢ Continuous ↿(γ.truncate t)
state_after: no goals

tactic: fun_prop
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
t : ℝ
⊢ Continuous fun x => (t, x)
state_after: no goals
Theorem: Equiv.coe_ofInjective_symm
File: Mathlib/Logic/Equiv/Set.lean

tactic: ext ⟨y, x, rfl⟩
state_before: α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
hf : Injective f
⊢ ⇑(ofInjective f hf).symm = rangeSplitting f
state_after: case h.mk.intro
α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
hf : Injective f
x : α
⊢ (ofInjective f hf).symm ⟨f x, ⋯⟩ = rangeSplitting f ⟨f x, ⋯⟩

tactic: apply hf
state_before: case h.mk.intro
α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
hf : Injective f
x : α
⊢ (ofInjective f hf).symm ⟨f x, ⋯⟩ = rangeSplitting f ⟨f x, ⋯⟩
state_after: case h.mk.intro.a
α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
hf : Injective f
x : α
⊢ f ((ofInjective f hf).symm ⟨f x, ⋯⟩) = f (rangeSplitting f ⟨f x, ⋯⟩)

tactic: simp [apply_rangeSplitting f]
state_before: case h.mk.intro.a
α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
f : α → β
hf : Injective f
x : α
⊢ f ((ofInjective f hf).symm ⟨f x, ⋯⟩) = f (rangeSplitting f ⟨f x, ⋯⟩)
state_after: no goals
Theorem: ChartedSpaceCore.open_target
File: Mathlib/Geometry/Manifold/ChartedSpace.lean

tactic: have E : e.target ∩ e.symm ⁻¹' e.source = e.target :=
  Subset.antisymm inter_subset_left fun x hx ↦
    ⟨hx, PartialEquiv.target_subset_preimage_source _ hx⟩
state_before: H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝ : TopologicalSpace H
c : ChartedSpaceCore H M
e : PartialEquiv M H
he : e ∈ c.atlas
⊢ IsOpen e.target
state_after: H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝ : TopologicalSpace H
c : ChartedSpaceCore H M
e : PartialEquiv M H
he : e ∈ c.atlas
E : e.target ∩ ↑e.symm ⁻¹' e.source = e.target
⊢ IsOpen e.target

tactic: simpa [PartialEquiv.trans_source, E] using c.open_source e e he he
state_before: H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝ : TopologicalSpace H
c : ChartedSpaceCore H M
e : PartialEquiv M H
he : e ∈ c.atlas
E : e.target ∩ ↑e.symm ⁻¹' e.source = e.target
⊢ IsOpen e.target
state_after: no goals
Theorem: isometry_iff_nndist_eq
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: simp only [Isometry, edist_nndist, ENNReal.coe_inj]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
f : α → β
⊢ Isometry f ↔ ∀ (x y : α), nndist (f x) (f y) = nndist x y
state_after: no goals
Theorem: aemeasurable_zero_measure
File: Mathlib/MeasureTheory/Measure/AEMeasurable.lean

tactic: nontriviality α
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
⊢ AEMeasurable f 0
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
a✝ : Nontrivial α
⊢ AEMeasurable f 0

tactic: inhabit α
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
a✝ : Nontrivial α
⊢ AEMeasurable f 0
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ AEMeasurable f 0

tactic: exact ⟨fun _ => f default, measurable_const, rfl⟩
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g : α → β
μ ν : Measure α
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ AEMeasurable f 0
state_after: no goals
Theorem: Bornology.IsBounded.mul
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

tactic: obtain ⟨Rs, hRs⟩ : ∃ R, ∀ x ∈ s, ‖x‖ ≤ R := hs.exists_norm_le'
state_before: E : Type u_1
inst✝ : SeminormedGroup E
ε δ : ℝ
s t : Set E
x y : E
hs : IsBounded s
ht : IsBounded t
⊢ IsBounded (s * t)
state_after: case intro
E : Type u_1
inst✝ : SeminormedGroup E
ε δ : ℝ
s t : Set E
x y : E
hs : IsBounded s
ht : IsBounded t
Rs : ℝ
hRs : ∀ x ∈ s, ‖x‖ ≤ Rs
⊢ IsBounded (s * t)

tactic: obtain ⟨Rt, hRt⟩ : ∃ R, ∀ x ∈ t, ‖x‖ ≤ R := ht.exists_norm_le'
state_before: case intro
E : Type u_1
inst✝ : SeminormedGroup E
ε δ : ℝ
s t : Set E
x y : E
hs : IsBounded s
ht : IsBounded t
Rs : ℝ
hRs : ∀ x ∈ s, ‖x‖ ≤ Rs
⊢ IsBounded (s * t)
state_after: case intro.intro
E : Type u_1
inst✝ : SeminormedGroup E
ε δ : ℝ
s t : Set E
x y : E
hs : IsBounded s
ht : IsBounded t
Rs : ℝ
hRs : ∀ x ∈ s, ‖x‖ ≤ Rs
Rt : ℝ
hRt : ∀ x ∈ t, ‖x‖ ≤ Rt
⊢ IsBounded (s * t)

tactic: refine isBounded_iff_forall_norm_le'.2 ⟨Rs + Rt, ?_⟩
state_before: case intro.intro
E : Type u_1
inst✝ : SeminormedGroup E
ε δ : ℝ
s t : Set E
x y : E
hs : IsBounded s
ht : IsBounded t
Rs : ℝ
hRs : ∀ x ∈ s, ‖x‖ ≤ Rs
Rt : ℝ
hRt : ∀ x ∈ t, ‖x‖ ≤ Rt
⊢ IsBounded (s * t)
state_after: case intro.intro
E : Type u_1
inst✝ : SeminormedGroup E
ε δ : ℝ
s t : Set E
x y : E
hs : IsBounded s
ht : IsBounded t
Rs : ℝ
hRs : ∀ x ∈ s, ‖x‖ ≤ Rs
Rt : ℝ
hRt : ∀ x ∈ t, ‖x‖ ≤ Rt
⊢ ∀ x ∈ s * t, ‖x‖ ≤ Rs + Rt

tactic: rintro z ⟨x, hx, y, hy, rfl⟩
state_before: case intro.intro
E : Type u_1
inst✝ : SeminormedGroup E
ε δ : ℝ
s t : Set E
x y : E
hs : IsBounded s
ht : IsBounded t
Rs : ℝ
hRs : ∀ x ∈ s, ‖x‖ ≤ Rs
Rt : ℝ
hRt : ∀ x ∈ t, ‖x‖ ≤ Rt
⊢ ∀ x ∈ s * t, ‖x‖ ≤ Rs + Rt
state_after: case intro.intro.intro.intro.intro.intro
E : Type u_1
inst✝ : SeminormedGroup E
ε δ : ℝ
s t : Set E
x✝ y✝ : E
hs : IsBounded s
ht : IsBounded t
Rs : ℝ
hRs : ∀ x ∈ s, ‖x‖ ≤ Rs
Rt : ℝ
hRt : ∀ x ∈ t, ‖x‖ ≤ Rt
x : E
hx : x ∈ s
y : E
hy : y ∈ t
⊢ ‖(fun x x_1 => x * x_1) x y‖ ≤ Rs + Rt

tactic: exact norm_mul_le_of_le (hRs x hx) (hRt y hy)
state_before: case intro.intro.intro.intro.intro.intro
E : Type u_1
inst✝ : SeminormedGroup E
ε δ : ℝ
s t : Set E
x✝ y✝ : E
hs : IsBounded s
ht : IsBounded t
Rs : ℝ
hRs : ∀ x ∈ s, ‖x‖ ≤ Rs
Rt : ℝ
hRt : ∀ x ∈ t, ‖x‖ ≤ Rt
x : E
hx : x ∈ s
y : E
hy : y ∈ t
⊢ ‖(fun x x_1 => x * x_1) x y‖ ≤ Rs + Rt
state_after: no goals
Theorem: geom_sum_two
File: Mathlib/Algebra/GeomSum.lean

tactic: simp [geom_sum_succ']
state_before: α : Type u
inst✝ : Semiring α
x : α
⊢ ∑ i ∈ range 2, x ^ i = x + 1
state_after: no goals
Theorem: Fin.prod_univ_eq_prod_range
File: Mathlib/Data/Fintype/BigOperators.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommMonoid α
f : ℕ → α
n : ℕ
⊢ ∀ (x : ℕ), x < n ↔ x ∈ range n
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommMonoid α
f : ℕ → α
n : ℕ
⊢ ∀ (x : Fin n), f ↑x = f ↑((equivSubtype.trans (Equiv.subtypeEquivRight ⋯)) x)
state_after: no goals

tactic: rw [← attach_eq_univ, prod_attach]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommMonoid α
f : ℕ → α
n : ℕ
⊢ ∏ i : { x // x ∈ range n }, f ↑i = ∏ i ∈ range n, f i
state_after: no goals
Theorem: Function.Periodic.eq
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [zero_add] using h 0
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝ : AddZeroClass α
h : Periodic f c
⊢ f c = f 0
state_after: no goals
Theorem: MvPolynomial.vars_rename
File: Mathlib/Algebra/MvPolynomial/Variables.lean

tactic: classical
intro i hi
simp only [vars_def, exists_prop, Multiset.mem_toFinset, Finset.mem_image] at hi ⊢
simpa only [Multiset.mem_map] using degrees_rename _ _ hi
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : CommSemiring S
inst✝ : DecidableEq τ
f : σ → τ
φ : MvPolynomial σ R
⊢ ((rename f) φ).vars ⊆ Finset.image f φ.vars
state_after: no goals

tactic: intro i hi
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : CommSemiring S
inst✝ : DecidableEq τ
f : σ → τ
φ : MvPolynomial σ R
⊢ ((rename f) φ).vars ⊆ Finset.image f φ.vars
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : CommSemiring S
inst✝ : DecidableEq τ
f : σ → τ
φ : MvPolynomial σ R
i : τ
hi : i ∈ ((rename f) φ).vars
⊢ i ∈ Finset.image f φ.vars

tactic: simp only [vars_def, exists_prop, Multiset.mem_toFinset, Finset.mem_image] at hi ⊢
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : CommSemiring S
inst✝ : DecidableEq τ
f : σ → τ
φ : MvPolynomial σ R
i : τ
hi : i ∈ ((rename f) φ).vars
⊢ i ∈ Finset.image f φ.vars
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : CommSemiring S
inst✝ : DecidableEq τ
f : σ → τ
φ : MvPolynomial σ R
i : τ
hi : i ∈ ((rename f) φ).degrees
⊢ ∃ a ∈ φ.degrees, f a = i

tactic: simpa only [Multiset.mem_map] using degrees_rename _ _ hi
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : CommSemiring S
inst✝ : DecidableEq τ
f : σ → τ
φ : MvPolynomial σ R
i : τ
hi : i ∈ ((rename f) φ).degrees
⊢ ∃ a ∈ φ.degrees, f a = i
state_after: no goals
Theorem: Equiv.optionSubtypeNe_symm_of_ne
File: Mathlib/Logic/Equiv/Option.lean

tactic: simp [hba]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
a b : α
hba : b ≠ a
⊢ (optionSubtypeNe a).symm b = some ⟨b, hba⟩
state_after: no goals
Theorem: Equiv.Perm.Disjoint.mul_right
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: rw [disjoint_comm]
state_before: α : Type u_1
f g h : Perm α
H1 : f.Disjoint g
H2 : f.Disjoint h
⊢ f.Disjoint (g * h)
state_after: α : Type u_1
f g h : Perm α
H1 : f.Disjoint g
H2 : f.Disjoint h
⊢ (g * h).Disjoint f

tactic: exact H1.symm.mul_left H2.symm
state_before: α : Type u_1
f g h : Perm α
H1 : f.Disjoint g
H2 : f.Disjoint h
⊢ (g * h).Disjoint f
state_after: no goals
Theorem: WeierstrassCurve.Projective.polynomial_relation
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

tactic: rw [eval_polynomial, eval_polynomialX, eval_polynomialY, eval_polynomialZ]
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ 3 * (eval P) W.polynomial = P 0 * (eval P) W.polynomialX + P 1 * (eval P) W.polynomialY + P 2 * (eval P) W.polynomialZ
state_after: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ 3 *
      (P 1 ^ 2 * P 2 + W.a₁ * P 0 * P 1 * P 2 + W.a₃ * P 1 * P 2 ^ 2 -
        (P 0 ^ 3 + W.a₂ * P 0 ^ 2 * P 2 + W.a₄ * P 0 * P 2 ^ 2 + W.a₆ * P 2 ^ 3)) =
    P 0 * (W.a₁ * P 1 * P 2 - (3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2)) +
        P 1 * (2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2) +
      P 2 *
        (P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 -
          (W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2))

tactic: ring1
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ 3 *
      (P 1 ^ 2 * P 2 + W.a₁ * P 0 * P 1 * P 2 + W.a₃ * P 1 * P 2 ^ 2 -
        (P 0 ^ 3 + W.a₂ * P 0 ^ 2 * P 2 + W.a₄ * P 0 * P 2 ^ 2 + W.a₆ * P 2 ^ 3)) =
    P 0 * (W.a₁ * P 1 * P 2 - (3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2)) +
        P 1 * (2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2) +
      P 2 *
        (P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 -
          (W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2))
state_after: no goals
Theorem: CategoryTheory.Subgroupoid.discrete_isNormal
File: Mathlib/CategoryTheory/Groupoid/Subgroupoid.lean

tactic: constructor
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c : C
⊢ 𝟙 c ∈ discrete.arrows c c
state_after: no goals

tactic: cases hγ
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c✝ d✝ : C
f : c✝ ⟶ d✝
γ : c✝ ⟶ c✝
hγ : γ ∈ discrete.arrows c✝ c✝
⊢ Groupoid.inv f ≫ γ ≫ f ∈ discrete.arrows d✝ d✝
state_after: case id
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c✝ d✝ : C
f : c✝ ⟶ d✝
⊢ Groupoid.inv f ≫ 𝟙 c✝ ≫ f ∈ discrete.arrows d✝ d✝

tactic: simp only [inv_eq_inv, Category.id_comp, IsIso.inv_hom_id]
state_before: case id
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c✝ d✝ : C
f : c✝ ⟶ d✝
⊢ Groupoid.inv f ≫ 𝟙 c✝ ≫ f ∈ discrete.arrows d✝ d✝
state_after: case id
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c✝ d✝ : C
f : c✝ ⟶ d✝
⊢ 𝟙 d✝ ∈ discrete.arrows d✝ d✝

tactic: constructor
state_before: case id
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c✝ d✝ : C
f : c✝ ⟶ d✝
⊢ 𝟙 d✝ ∈ discrete.arrows d✝ d✝
state_after: no goals
Theorem: Finset.prod_induction_nonempty
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simp [nonempty_iff_ne_empty.mp nonempty]
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✝¹ : CommMonoid β
M : Type u_6
inst✝ : CommMonoid M
f : α → M
p : M → Prop
hom : ∀ (a b : M), p a → p b → p (a * b)
nonempty : s.Nonempty
base : ∀ x ∈ s, p (f x)
⊢ Multiset.map (fun x => f x) s.val ≠ ∅
state_after: no goals
Theorem: Asymptotics.isBigOWith_zero_right_iff
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simp only [IsBigOWith_def, exists_prop, true_and_iff, norm_zero, mul_zero,
  norm_le_zero_iff, EventuallyEq, Pi.zero_apply]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
⊢ (IsBigOWith c l f'' fun _x => 0) ↔ f'' =ᶠ[l] 0
state_after: no goals
Theorem: Rat.cast_mk
File: Mathlib/Data/Rat/Cast/CharZero.lean

tactic: simp only [divInt_eq_div, cast_div, cast_intCast]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : DivisionRing α
inst✝ : CharZero α
a b : ℤ
⊢ ↑(a /. b) = ↑a / ↑b
state_after: no goals