1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Orientation.norm_div_sin_oangle_sub_right_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: have hs : (o.oangle y (y - x)).sign = 1 := by
  rw [oangle_sign_sub_right_swap, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ ‖x‖ / (o.oangle y (y - x)).sin = ‖y - x‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
hs : (o.oangle y (y - x)).sign = 1
⊢ ‖x‖ / (o.oangle y (y - x)).sin = ‖y - x‖

tactic: rw [o.oangle_eq_angle_of_sign_eq_one hs, Real.Angle.sin_coe,
  InnerProductGeometry.norm_div_sin_angle_sub_of_inner_eq_zero
    (o.inner_rev_eq_zero_of_oangle_eq_pi_div_two h)
    (Or.inr (o.left_ne_zero_of_oangle_eq_pi_div_two h))]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
hs : (o.oangle y (y - x)).sign = 1
⊢ ‖x‖ / (o.oangle y (y - x)).sin = ‖y - x‖
state_after: no goals

tactic: rw [oangle_sign_sub_right_swap, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ (o.oangle y (y - x)).sign = 1
state_after: no goals
Theorem: Complex.inv_one_add_tan_sq
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [tan_eq_sin_div_cos, div_pow]
state_before: x✝ y x : ℂ
hx : cos x ≠ 0
⊢ (1 + tan x ^ 2)⁻¹ = cos x ^ 2
state_after: x✝ y x : ℂ
hx : cos x ≠ 0
⊢ (1 + sin x ^ 2 / cos x ^ 2)⁻¹ = cos x ^ 2

tactic: field_simp
state_before: x✝ y x : ℂ
hx : cos x ≠ 0
⊢ (1 + sin x ^ 2 / cos x ^ 2)⁻¹ = cos x ^ 2
state_after: no goals
Theorem: AddConstMapClass.map_add_nat
File: Mathlib/Algebra/AddConstMap/Basic.lean

tactic: simp
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddMonoidWithOne G
inst✝¹ : AddMonoidWithOne H
inst✝ : AddConstMapClass F G H 1 1
f : F
x : G
n : ℕ
⊢ f (x + ↑n) = f x + ↑n
state_after: no goals
Theorem: IsSelfAdjoint.adjoint_conj
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: rw [isSelfAdjoint_iff'] at hT ⊢
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
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
S : F →L[𝕜] E
⊢ IsSelfAdjoint ((adjoint S).comp (T.comp S))
state_after: 𝕜 : 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
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : adjoint T = T
S : F →L[𝕜] E
⊢ adjoint ((adjoint S).comp (T.comp S)) = (adjoint S).comp (T.comp S)

tactic: simp only [hT, adjoint_comp, adjoint_adjoint]
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
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : adjoint T = T
S : F →L[𝕜] E
⊢ adjoint ((adjoint S).comp (T.comp S)) = (adjoint S).comp (T.comp S)
state_after: 𝕜 : 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
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : adjoint T = T
S : F →L[𝕜] E
⊢ ((adjoint S).comp T).comp S = (adjoint S).comp (T.comp S)

tactic: exact ContinuousLinearMap.comp_assoc _ _ _
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
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : adjoint T = T
S : F →L[𝕜] E
⊢ ((adjoint S).comp T).comp S = (adjoint S).comp (T.comp S)
state_after: no goals
Theorem: Set.Nontrivial.einfsep_ne_top
File: Mathlib/Topology/MetricSpace/Infsep.lean

tactic: contrapose! hs
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.Nontrivial
⊢ s.einfsep ≠ ⊤
state_after: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.einfsep = ⊤
⊢ ¬s.Nontrivial

tactic: rw [not_nontrivial_iff]
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.einfsep = ⊤
⊢ ¬s.Nontrivial
state_after: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.einfsep = ⊤
⊢ s.Subsingleton

tactic: exact subsingleton_of_einfsep_eq_top hs
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.einfsep = ⊤
⊢ s.Subsingleton
state_after: no goals
Theorem: CategoryTheory.isSeparator_coprod_of_isSeparator_left
File: Mathlib/CategoryTheory/Generator.lean

tactic: simp
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : HasZeroMorphisms C
G H : C
inst✝ : HasBinaryCoproduct G H
hG : IsSeparator G
⊢ {G} ⊆ {G, H}
state_after: no goals
Theorem: CategoryTheory.eqToHom_unop
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: cases h
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
β : Sort u_1
X Y : Cᵒᵖ
h : X = Y
⊢ (eqToHom h).unop = eqToHom ⋯
state_after: case refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
β : Sort u_1
X : Cᵒᵖ
⊢ (eqToHom ⋯).unop = eqToHom ⋯

tactic: rfl
state_before: case refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
β : Sort u_1
X : Cᵒᵖ
⊢ (eqToHom ⋯).unop = eqToHom ⋯
state_after: no goals
Theorem: acc_principal_iff_cluster
File: Mathlib/Topology/Basic.lean

tactic: rw [acc_iff_cluster, inf_principal, inter_comm, diff_eq]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x✝ : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
x : X
C : Set X
⊢ AccPt x (𝓟 C) ↔ ClusterPt x (𝓟 (C \ {x}))
state_after: no goals
Theorem: PosNum.le_to_nat
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← not_lt]
state_before: α : Type u_1
m n : PosNum
⊢ ↑m ≤ ↑n ↔ m ≤ n
state_after: α : Type u_1
m n : PosNum
⊢ ¬↑n < ↑m ↔ m ≤ n

tactic: exact not_congr lt_to_nat
state_before: α : Type u_1
m n : PosNum
⊢ ¬↑n < ↑m ↔ m ≤ n
state_after: no goals
Theorem: Filter.frequently_prod_and
File: Mathlib/Order/Filter/Prod.lean

tactic: simp only [frequently_iff_neBot, ← prod_neBot, ← prod_inf_prod, prod_principal_principal]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
p : α → Prop
q : β → Prop
⊢ (∃ᶠ (x : α × β) in f ×ˢ g, p x.1 ∧ q x.2) ↔ (∃ᶠ (a : α) in f, p a) ∧ ∃ᶠ (b : β) in g, q b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
p : α → Prop
q : β → Prop
⊢ (f ×ˢ g ⊓ 𝓟 {x | p x.1 ∧ q x.2}).NeBot ↔ (f ×ˢ g ⊓ 𝓟 ({a | p a} ×ˢ {b | q b})).NeBot

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
p : α → Prop
q : β → Prop
⊢ (f ×ˢ g ⊓ 𝓟 {x | p x.1 ∧ q x.2}).NeBot ↔ (f ×ˢ g ⊓ 𝓟 ({a | p a} ×ˢ {b | q b})).NeBot
state_after: no goals
Theorem: IsCompact.measure_zero_of_nhdsWithin
File: Mathlib/MeasureTheory/Measure/Typeclasses.lean

tactic: simpa only [← compl_mem_ae_iff] using hs.compl_mem_sets_of_nhdsWithin
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsCompact s
⊢ (∀ a ∈ s, ∃ t ∈ 𝓝[s] a, μ t = 0) → μ s = 0
state_after: no goals
Theorem: ProbabilityTheory.kernel.mem_mutuallySingularSetSlice
File: Mathlib/Probability/Kernel/RadonNikodym.lean

tactic: rw [mutuallySingularSetSlice]
state_before: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
a : α
x : γ
⊢ x ∈ mutuallySingularSetSlice κ η a ↔ 1 ≤ rnDerivAux κ (κ + η) a x
state_after: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
a : α
x : γ
⊢ x ∈ {x | 1 ≤ rnDerivAux κ (κ + η) a x} ↔ 1 ≤ rnDerivAux κ (κ + η) a x

tactic: rfl
state_before: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
a : α
x : γ
⊢ x ∈ {x | 1 ≤ rnDerivAux κ (κ + η) a x} ↔ 1 ≤ rnDerivAux κ (κ + η) a x
state_after: no goals
Theorem: Int.even_sub_one
File: Mathlib/Algebra/Group/Int.lean

tactic: simp [even_sub]
state_before: u v m n : ℤ
⊢ Even (n - 1) ↔ ¬Even n
state_after: no goals
Theorem: Finset.disjSups_disjSups_disjSups_comm
File: Mathlib/Data/Finset/Sups.lean

tactic: simp_rw [← disjSups_assoc, disjSups_right_comm]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : DistribLattice α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s t u v : Finset α
⊢ s ○ t ○ (u ○ v) = s ○ u ○ (t ○ v)
state_after: no goals
Theorem: Real.cos_nat_mul_two_pi_add_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simpa only [cos_zero] using (cos_periodic.nat_mul n).add_antiperiod_eq cos_antiperiodic
state_before: n : ℕ
⊢ cos (↑n * (2 * π) + π) = -1
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.cs_down_0_not_rel_left
File: Mathlib/AlgebraicTopology/DoldKan/Homotopies.lean

tactic: intro hj
state_before: C : Type u_1
inst✝¹ : Category.{?u.651, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
j : ℕ
⊢ ¬c.Rel 0 j
state_after: C : Type u_1
inst✝¹ : Category.{?u.651, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
j : ℕ
hj : c.Rel 0 j
⊢ False

tactic: dsimp at hj
state_before: C : Type u_1
inst✝¹ : Category.{?u.651, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
j : ℕ
hj : c.Rel 0 j
⊢ False
state_after: C : Type u_1
inst✝¹ : Category.{?u.651, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
j : ℕ
hj : j + 1 = 0
⊢ False

tactic: apply Nat.not_succ_le_zero j
state_before: C : Type u_1
inst✝¹ : Category.{?u.651, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
j : ℕ
hj : j + 1 = 0
⊢ False
state_after: C : Type u_1
inst✝¹ : Category.{?u.651, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
j : ℕ
hj : j + 1 = 0
⊢ j.succ ≤ 0

tactic: rw [Nat.succ_eq_add_one, hj]
state_before: C : Type u_1
inst✝¹ : Category.{?u.651, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
j : ℕ
hj : j + 1 = 0
⊢ j.succ ≤ 0
state_after: no goals
Theorem: borel_eq_generateFrom_Ioi
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Order.lean

tactic: infer_instance
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝³ : TopologicalSpace α
inst✝² : SecondCountableTopology α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
⊢ SecondCountableTopology α
state_after: no goals
Theorem: SimpleGraph.ConnectedComponent.supp_injective
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: refine ConnectedComponent.ind₂ ?_
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
⊢ Injective supp
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
⊢ ∀ (v w : V),
    (G.connectedComponentMk v).supp = (G.connectedComponentMk w).supp →
      G.connectedComponentMk v = G.connectedComponentMk w

tactic: intro v w
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
⊢ ∀ (v w : V),
    (G.connectedComponentMk v).supp = (G.connectedComponentMk w).supp →
      G.connectedComponentMk v = G.connectedComponentMk w
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
⊢ (G.connectedComponentMk v).supp = (G.connectedComponentMk w).supp →
    G.connectedComponentMk v = G.connectedComponentMk w

tactic: simp only [ConnectedComponent.supp, Set.ext_iff, ConnectedComponent.eq, Set.mem_setOf_eq]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
⊢ (G.connectedComponentMk v).supp = (G.connectedComponentMk w).supp →
    G.connectedComponentMk v = G.connectedComponentMk w
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
⊢ (∀ (x : V), G.Reachable x v ↔ G.Reachable x w) → G.Reachable v w

tactic: intro h
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
⊢ (∀ (x : V), G.Reachable x v ↔ G.Reachable x w) → G.Reachable v w
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : ∀ (x : V), G.Reachable x v ↔ G.Reachable x w
⊢ G.Reachable v w

tactic: rw [reachable_comm, h]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
h : ∀ (x : V), G.Reachable x v ↔ G.Reachable x w
⊢ G.Reachable v w
state_after: no goals
Theorem: List.mapIdx_cons
File: Mathlib/Data/List/Indexes.lean

tactic: simp [mapIdx_eq_enum_map, enum_eq_zip_range, map_uncurry_zip_eq_zipWith,
  range_succ_eq_map, zipWith_map_left]
state_before: α : Type u
β : Type v
l : List α
f : ℕ → α → β
a : α
⊢ mapIdx f (a :: l) = f 0 a :: mapIdx (fun i => f (i + 1)) l
state_after: no goals
Theorem: finprod_eq_dif
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: split_ifs with h
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
p : Prop
inst✝ : Decidable p
f : p → M
⊢ ∏ᶠ (i : p), f i = if h : p then f h else 1
state_after: case pos
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
p : Prop
inst✝ : Decidable p
f : p → M
h : p
⊢ ∏ᶠ (i : p), f i = f h

case neg
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
p : Prop
inst✝ : Decidable p
f : p → M
h : ¬p
⊢ ∏ᶠ (i : p), f i = 1

tactic: haveI : Unique p := ⟨⟨h⟩, fun _ => rfl⟩
state_before: case pos
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
p : Prop
inst✝ : Decidable p
f : p → M
h : p
⊢ ∏ᶠ (i : p), f i = f h
state_after: case pos
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
p : Prop
inst✝ : Decidable p
f : p → M
h : p
this : Unique p
⊢ ∏ᶠ (i : p), f i = f h

tactic: exact finprod_unique f
state_before: case pos
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
p : Prop
inst✝ : Decidable p
f : p → M
h : p
this : Unique p
⊢ ∏ᶠ (i : p), f i = f h
state_after: no goals

tactic: haveI : IsEmpty p := ⟨h⟩
state_before: case neg
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
p : Prop
inst✝ : Decidable p
f : p → M
h : ¬p
⊢ ∏ᶠ (i : p), f i = 1
state_after: case neg
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
p : Prop
inst✝ : Decidable p
f : p → M
h : ¬p
this : IsEmpty p
⊢ ∏ᶠ (i : p), f i = 1

tactic: exact finprod_of_isEmpty f
state_before: case neg
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
p : Prop
inst✝ : Decidable p
f : p → M
h : ¬p
this : IsEmpty p
⊢ ∏ᶠ (i : p), f i = 1
state_after: no goals
Theorem: IsPrimitiveRoot.zeta_sub_one_prime'
File: Mathlib/NumberTheory/Cyclotomic/Rat.lean

tactic: convert zeta_sub_one_prime (k := 0) (by simpa only [zero_add, pow_one])
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
h : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ Prime (hζ.toInteger - 1)
state_after: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
h : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ IsCyclotomicExtension {p ^ (0 + 1)} ℚ K

tactic: simpa only [zero_add, pow_one]
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
h : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ IsCyclotomicExtension {p ^ (0 + 1)} ℚ K
state_after: no goals

tactic: simpa only [zero_add, pow_one]
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝¹ : Field K
inst✝ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
h : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ IsPrimitiveRoot ?m.227442 ↑(?m.227427 ^ (0 + 1))
state_after: no goals
Theorem: Cardinal.alephIdx_le
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [← not_lt, ← not_lt, alephIdx_lt]
state_before: a b : Cardinal.{u_1}
⊢ a.alephIdx ≤ b.alephIdx ↔ a ≤ b
state_after: no goals
Theorem: Stream'.dropLast_take
File: Mathlib/Data/Stream/Init.lean

tactic: cases n with
| zero => simp
| succ n => rw [take_succ', List.dropLast_concat, Nat.add_one_sub_one]
state_before: α : Type u
β : Type v
δ : Type w
n : ℕ
xs : Stream' α
⊢ (take n xs).dropLast = take (n - 1) xs
state_after: no goals

tactic: simp
state_before: case zero
α : Type u
β : Type v
δ : Type w
xs : Stream' α
⊢ (take 0 xs).dropLast = take (0 - 1) xs
state_after: no goals

tactic: rw [take_succ', List.dropLast_concat, Nat.add_one_sub_one]
state_before: case succ
α : Type u
β : Type v
δ : Type w
xs : Stream' α
n : ℕ
⊢ (take (n + 1) xs).dropLast = take (n + 1 - 1) xs
state_after: no goals
Theorem: natCast_floor_eq_intCast_floor
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← Int.ofNat_floor_eq_floor ha, Int.cast_natCast]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
a : α
ha : 0 ≤ a
⊢ ↑⌊a⌋₊ = ↑⌊a⌋
state_after: no goals
Theorem: MeasureTheory.measurePreserving_smul
File: Mathlib/MeasureTheory/Group/Action.lean

tactic: ext1 s hs
state_before: G : Type u
M : Type v
α : Type w
s : Set α
m : MeasurableSpace α
inst✝³ : MeasurableSpace M
inst✝² : SMul M α
inst✝¹ : MeasurableSMul M α
c : M
μ : Measure α
inst✝ : SMulInvariantMeasure M α μ
⊢ map (fun x => c • x) μ = μ
state_after: case h
G : Type u
M : Type v
α : Type w
s✝ : Set α
m : MeasurableSpace α
inst✝³ : MeasurableSpace M
inst✝² : SMul M α
inst✝¹ : MeasurableSMul M α
c : M
μ : Measure α
inst✝ : SMulInvariantMeasure M α μ
s : Set α
hs : MeasurableSet s
⊢ (map (fun x => c • x) μ) s = μ s

tactic: rw [map_apply (measurable_const_smul c) hs]
state_before: case h
G : Type u
M : Type v
α : Type w
s✝ : Set α
m : MeasurableSpace α
inst✝³ : MeasurableSpace M
inst✝² : SMul M α
inst✝¹ : MeasurableSMul M α
c : M
μ : Measure α
inst✝ : SMulInvariantMeasure M α μ
s : Set α
hs : MeasurableSet s
⊢ (map (fun x => c • x) μ) s = μ s
state_after: case h
G : Type u
M : Type v
α : Type w
s✝ : Set α
m : MeasurableSpace α
inst✝³ : MeasurableSpace M
inst✝² : SMul M α
inst✝¹ : MeasurableSMul M α
c : M
μ : Measure α
inst✝ : SMulInvariantMeasure M α μ
s : Set α
hs : MeasurableSet s
⊢ μ ((fun x => c • x) ⁻¹' s) = μ s

tactic: exact SMulInvariantMeasure.measure_preimage_smul c hs
state_before: case h
G : Type u
M : Type v
α : Type w
s✝ : Set α
m : MeasurableSpace α
inst✝³ : MeasurableSpace M
inst✝² : SMul M α
inst✝¹ : MeasurableSMul M α
c : M
μ : Measure α
inst✝ : SMulInvariantMeasure M α μ
s : Set α
hs : MeasurableSet s
⊢ μ ((fun x => c • x) ⁻¹' s) = μ s
state_after: no goals
Theorem: MultilinearMap.snoc_add
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

tactic: simp_rw [← update_snoc_last x m (x + y), f.map_add, update_snoc_last]
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹⁰ : Semiring R
inst✝⁹ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁸ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : (i : Fin n.succ) → Module R (M i)
inst✝³ : (i : ι) → Module R (M₁ i)
inst✝² : Module R M₂
inst✝¹ : Module R M₃
inst✝ : Module R M'
f✝ f' : MultilinearMap R M₁ M₂
f : MultilinearMap R M M₂
m : (i : Fin n) → M i.castSucc
x y : M (last n)
⊢ f (snoc m (x + y)) = f (snoc m x) + f (snoc m y)
state_after: no goals
Theorem: CategoryTheory.ShortComplex.opcyclesMap'_smul
File: Mathlib/Algebra/Homology/ShortComplex/Linear.lean

tactic: have γ : RightHomologyMapData φ h₁ h₂ := default
state_before: R : Type u_1
C : Type u_2
inst✝³ : Semiring R
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : Linear R C
S₁ S₂ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
a : R
⊢ opcyclesMap' (a • φ) h₁ h₂ = a • opcyclesMap' φ h₁ h₂
state_after: R : Type u_1
C : Type u_2
inst✝³ : Semiring R
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : Linear R C
S₁ S₂ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
a : R
γ : RightHomologyMapData φ h₁ h₂
⊢ opcyclesMap' (a • φ) h₁ h₂ = a • opcyclesMap' φ h₁ h₂

tactic: simp only [(γ.smul a).opcyclesMap'_eq, RightHomologyMapData.smul_φQ, γ.opcyclesMap'_eq]
state_before: R : Type u_1
C : Type u_2
inst✝³ : Semiring R
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : Linear R C
S₁ S₂ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
a : R
γ : RightHomologyMapData φ h₁ h₂
⊢ opcyclesMap' (a • φ) h₁ h₂ = a • opcyclesMap' φ h₁ h₂
state_after: no goals