1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.ShortComplex.Exact.map
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: have := h.hasHomology
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{u_4, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.Exact
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : F.PreservesLeftHomologyOf S
inst✝ : F.PreservesRightHomologyOf S
⊢ (S.map F).Exact
state_after: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{u_4, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.Exact
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : F.PreservesLeftHomologyOf S
inst✝ : F.PreservesRightHomologyOf S
this : S.HasHomology
⊢ (S.map F).Exact

tactic: exact h.map_of_preservesLeftHomologyOf F
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{u_4, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.Exact
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : F.PreservesLeftHomologyOf S
inst✝ : F.PreservesRightHomologyOf S
this : S.HasHomology
⊢ (S.map F).Exact
state_after: no goals
Theorem: List.mem_or_mem_of_zipWith_swap_prod_ne
File: Mathlib/GroupTheory/Perm/List.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l x✝¹ : List α
x✝ : α
⊢ (zipWith swap [] x✝¹).prod x✝ ≠ x✝ → x✝ ∈ [] ∨ x✝ ∈ x✝¹
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l x✝¹ : List α
x✝ : α
⊢ (zipWith swap x✝¹ []).prod x✝ ≠ x✝ → x✝ ∈ x✝¹ ∨ x✝ ∈ []
state_after: no goals

tactic: simpa [h] using hx
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l : List α
b : α
l' : List α
x : α
hx : (zipWith swap (a :: l) (b :: l')).prod x ≠ x
h : (zipWith swap l l').prod x = x
⊢ (swap (?m.1920 a l b l' x hx h) (?m.1921 a l b l' x hx h)) (?m.1919 a l b l' x hx h) ≠ ?m.1919 a l b l' x hx h
state_after: no goals

tactic: rintro rfl
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l : List α
b : α
l' : List α
x : α
hx : (zipWith swap (a :: l) (b :: l')).prod x ≠ x
h : (zipWith swap l l').prod x = x
⊢ x = a → x ∈ a :: l
state_after: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ l : List α
b : α
l' : List α
x : α
h : (zipWith swap l l').prod x = x
hx : (zipWith swap (x :: l) (b :: l')).prod x ≠ x
⊢ x ∈ x :: l

tactic: exact .head _
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ l : List α
b : α
l' : List α
x : α
h : (zipWith swap l l').prod x = x
hx : (zipWith swap (x :: l) (b :: l')).prod x ≠ x
⊢ x ∈ x :: l
state_after: no goals

tactic: rintro rfl
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l : List α
b : α
l' : List α
x : α
hx : (zipWith swap (a :: l) (b :: l')).prod x ≠ x
h : (zipWith swap l l').prod x = x
⊢ x = b → x ∈ b :: l'
state_after: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l l' : List α
x : α
h : (zipWith swap l l').prod x = x
hx : (zipWith swap (a :: l) (x :: l')).prod x ≠ x
⊢ x ∈ x :: l'

tactic: exact .head _
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l l' : List α
x : α
h : (zipWith swap l l').prod x = x
hx : (zipWith swap (a :: l) (x :: l')).prod x ≠ x
⊢ x ∈ x :: l'
state_after: no goals
Theorem: Array.size_modifyM
File: .lake/packages/batteries/Batteries/Data/Array/Monadic.lean

tactic: unfold modifyM
state_before: m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : Array α
i : Nat
f : α → m α
⊢ SatisfiesM (fun x => x.size = a.size) (a.modifyM i f)
state_after: m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : Array α
i : Nat
f : α → m α
⊢ SatisfiesM (fun x => x.size = a.size)
    (if h : i < a.size then
      let idx := ⟨i, h⟩;
      let v := a.get idx;
      do
      let v ← f v
      pure (a.set idx v)
    else pure a)

tactic: split
state_before: m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : Array α
i : Nat
f : α → m α
⊢ SatisfiesM (fun x => x.size = a.size)
    (if h : i < a.size then
      let idx := ⟨i, h⟩;
      let v := a.get idx;
      do
      let v ← f v
      pure (a.set idx v)
    else pure a)
state_after: case isTrue
m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : Array α
i : Nat
f : α → m α
h✝ : i < a.size
⊢ SatisfiesM (fun x => x.size = a.size)
    (let idx := ⟨i, h✝⟩;
    let v := a.get idx;
    do
    let v ← f v
    pure (a.set idx v))

case isFalse
m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : Array α
i : Nat
f : α → m α
h✝ : ¬i < a.size
⊢ SatisfiesM (fun x => x.size = a.size) (pure a)

tactic: exact .bind_pre <| .of_true fun _ => .pure <| by simp only [size_set]
state_before: case isTrue
m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : Array α
i : Nat
f : α → m α
h✝ : i < a.size
⊢ SatisfiesM (fun x => x.size = a.size)
    (let idx := ⟨i, h✝⟩;
    let v := a.get idx;
    do
    let v ← f v
    pure (a.set idx v))
state_after: no goals

tactic: simp only [size_set]
state_before: m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : Array α
i : Nat
f : α → m α
h✝ : i < a.size
x✝ : α
⊢ (a.set ⟨i, h✝⟩ x✝).size = a.size
state_after: no goals

tactic: exact .pure rfl
state_before: case isFalse
m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : Array α
i : Nat
f : α → m α
h✝ : ¬i < a.size
⊢ SatisfiesM (fun x => x.size = a.size) (pure a)
state_after: no goals
Theorem: WittVector.verschiebungFun_coeff_zero
File: Mathlib/RingTheory/WittVector/Verschiebung.lean

tactic: rw [verschiebungFun_coeff, if_pos rfl]
state_before: p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
x : 𝕎 R
⊢ x.verschiebungFun.coeff 0 = 0
state_after: no goals
Theorem: Nat.multichoose_succ_succ
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: simp [multichoose]
state_before: n k : ℕ
⊢ (n + 1).multichoose (k + 1) = n.multichoose (k + 1) + (n + 1).multichoose k
state_after: no goals
Theorem: Seminorm.ball_smul_ball
File: Mathlib/Analysis/Seminorm.lean

tactic: rcases eq_or_ne r₂ 0 with rfl | hr₂
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
r₁ r₂ : ℝ
⊢ Metric.ball 0 r₁ • p.ball 0 r₂ ⊆ p.ball 0 (r₁ * r₂)
state_after: case inl
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
r₁ : ℝ
⊢ Metric.ball 0 r₁ • p.ball 0 0 ⊆ p.ball 0 (r₁ * 0)

case inr
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
r₁ r₂ : ℝ
hr₂ : r₂ ≠ 0
⊢ Metric.ball 0 r₁ • p.ball 0 r₂ ⊆ p.ball 0 (r₁ * r₂)

tactic: simp
state_before: case inl
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
r₁ : ℝ
⊢ Metric.ball 0 r₁ • p.ball 0 0 ⊆ p.ball 0 (r₁ * 0)
state_after: no goals

tactic: exact (smul_subset_smul_left (ball_subset_closedBall _ _ _)).trans
  (ball_smul_closedBall _ _ hr₂)
state_before: case inr
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
r₁ r₂ : ℝ
hr₂ : r₂ ≠ 0
⊢ Metric.ball 0 r₁ • p.ball 0 r₂ ⊆ p.ball 0 (r₁ * r₂)
state_after: no goals
Theorem: HomotopyCategory.quotient_map_out_comp_out
File: Mathlib/Algebra/Homology/HomotopyCategory.lean

tactic: simp
state_before: R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomotopyCategory V c
f : C ⟶ D
g : D ⟶ E
⊢ (quotient V c).map (Quot.out f ≫ Quot.out g) = f ≫ g
state_after: no goals
Theorem: FirstOrder.Language.LHom.comp_id
File: Mathlib/ModelTheory/LanguageMap.lean

tactic: cases F
state_before: L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
ϕ : L →ᴸ L'
L'' : Language
F : L →ᴸ L'
⊢ F ∘ᴸ LHom.id L = F
state_after: case mk
L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
ϕ : L →ᴸ L'
L'' : Language
onFunction✝ : ⦃n : ℕ⦄ → L.Functions n → L'.Functions n
onRelation✝ : ⦃n : ℕ⦄ → L.Relations n → L'.Relations n
⊢ { onFunction := onFunction✝, onRelation := onRelation✝ } ∘ᴸ LHom.id L =
    { onFunction := onFunction✝, onRelation := onRelation✝ }

tactic: rfl
state_before: case mk
L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
ϕ : L →ᴸ L'
L'' : Language
onFunction✝ : ⦃n : ℕ⦄ → L.Functions n → L'.Functions n
onRelation✝ : ⦃n : ℕ⦄ → L.Relations n → L'.Relations n
⊢ { onFunction := onFunction✝, onRelation := onRelation✝ } ∘ᴸ LHom.id L =
    { onFunction := onFunction✝, onRelation := onRelation✝ }
state_after: no goals
Theorem: GradedTensorProduct.tmul_one_mul_coe_tmul
File: Mathlib/LinearAlgebra/TensorProduct/Graded/Internal.lean

tactic: rw [SetLike.coe_gOne, one_mul]
state_before: case h.e'_3.h.e'_17
R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
i₂ : ι
a₁ : A
a₂ : ↥(𝒜 i₂)
b₂ : B
⊢ b₂ = ↑GradedMonoid.GOne.one * b₂
state_after: no goals
Theorem: Polynomial.eq_zero_of_dvd_of_natDegree_lt
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: by_contra hc
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p✝ q✝ p q : R[X]
h₁ : p ∣ q
h₂ : q.natDegree < p.natDegree
⊢ q = 0
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p✝ q✝ p q : R[X]
h₁ : p ∣ q
h₂ : q.natDegree < p.natDegree
hc : ¬q = 0
⊢ False

tactic: exact (lt_iff_not_ge _ _).mp h₂ (natDegree_le_of_dvd h₁ hc)
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p✝ q✝ p q : R[X]
h₁ : p ∣ q
h₂ : q.natDegree < p.natDegree
hc : ¬q = 0
⊢ False
state_after: no goals
Theorem: ZMod.val_add
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases n
state_before: n : ℕ
inst✝ : NeZero n
a b : ZMod n
⊢ (a + b).val = (a.val + b.val) % n
state_after: case zero
inst✝ : NeZero 0
a b : ZMod 0
⊢ (a + b).val = (a.val + b.val) % 0

case succ
n✝ : ℕ
inst✝ : NeZero (n✝ + 1)
a b : ZMod (n✝ + 1)
⊢ (a + b).val = (a.val + b.val) % (n✝ + 1)

tactic: cases NeZero.ne 0 rfl
state_before: case zero
inst✝ : NeZero 0
a b : ZMod 0
⊢ (a + b).val = (a.val + b.val) % 0
state_after: no goals

tactic: apply Fin.val_add
state_before: case succ
n✝ : ℕ
inst✝ : NeZero (n✝ + 1)
a b : ZMod (n✝ + 1)
⊢ (a + b).val = (a.val + b.val) % (n✝ + 1)
state_after: no goals
Theorem: frontier_Ioo
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: rw [frontier, closure_Ioo h.ne, interior_Ioo, Icc_diff_Ioo_same h.le]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝ b✝ : α
s : Set α
a b : α
h : a < b
⊢ frontier (Ioo a b) = {a, b}
state_after: no goals
Theorem: Finset.two_lt_card
File: Mathlib/Data/Finset/Card.lean

tactic: simp_rw [two_lt_card_iff, exists_and_left]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
⊢ 2 < s.card ↔ ∃ a ∈ s, ∃ b ∈ s, ∃ c ∈ s, a ≠ b ∧ a ≠ c ∧ b ≠ c
state_after: no goals
Theorem: Filter.HasBasis.disjoint_iff
File: Mathlib/Order/Filter/Bases.lean

tactic: simp only [_root_.disjoint_iff, ← Ne.eq_def, ← neBot_iff, inf_eq_inter,
hl.inf_basis_neBot_iff hl', not_exists, not_and, bot_eq_empty, ← nonempty_iff_ne_empty]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : l.HasBasis p s
hl' : l'.HasBasis p' s'
⊢ ¬Disjoint l l' ↔ ¬∃ i, p i ∧ ∃ i', p' i' ∧ Disjoint (s i) (s' i')
state_after: no goals
Theorem: PartENat.coe_add_get
File: Mathlib/Data/Nat/PartENat.lean

tactic: rfl
state_before: x : ℕ
y : PartENat
h : (↑x + y).Dom
⊢ (↑x + y).get h = x + y.get ⋯
state_after: no goals
Theorem: isAtomic_dual_iff_isCoatomic
File: Mathlib/Order/Atoms.lean

tactic: apply h.eq_bot_or_exists_atom_le
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : PartialOrder α
inst✝ : OrderTop α
h : IsAtomic αᵒᵈ
b : α
⊢ b = ⊤ ∨ ∃ a, IsCoatom a ∧ b ≤ a
state_after: no goals

tactic: apply h.eq_top_or_exists_le_coatom
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : PartialOrder α
inst✝ : OrderTop α
h : IsCoatomic α
b : αᵒᵈ
⊢ b = ⊥ ∨ ∃ a, IsAtom a ∧ a ≤ b
state_after: no goals
Theorem: MeasureTheory.stoppedValue_sub_eq_sum
File: Mathlib/Probability/Process/Stopping.lean

tactic: ext ω
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
u : ℕ → Ω → β
τ π : Ω → ℕ
inst✝ : AddCommGroup β
hle : τ ≤ π
⊢ stoppedValue u π - stoppedValue u τ = fun ω => (∑ i ∈ Finset.Ico (τ ω) (π ω), (u (i + 1) - u i)) ω
state_after: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
u : ℕ → Ω → β
τ π : Ω → ℕ
inst✝ : AddCommGroup β
hle : τ ≤ π
ω : Ω
⊢ (stoppedValue u π - stoppedValue u τ) ω = (∑ i ∈ Finset.Ico (τ ω) (π ω), (u (i + 1) - u i)) ω

tactic: rw [Finset.sum_Ico_eq_sub _ (hle ω), Finset.sum_range_sub, Finset.sum_range_sub]
state_before: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
u : ℕ → Ω → β
τ π : Ω → ℕ
inst✝ : AddCommGroup β
hle : τ ≤ π
ω : Ω
⊢ (stoppedValue u π - stoppedValue u τ) ω = (∑ i ∈ Finset.Ico (τ ω) (π ω), (u (i + 1) - u i)) ω
state_after: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
u : ℕ → Ω → β
τ π : Ω → ℕ
inst✝ : AddCommGroup β
hle : τ ≤ π
ω : Ω
⊢ (stoppedValue u π - stoppedValue u τ) ω = (u (π ω) - u 0 - (u (τ ω) - u 0)) ω

tactic: simp [stoppedValue]
state_before: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
u : ℕ → Ω → β
τ π : Ω → ℕ
inst✝ : AddCommGroup β
hle : τ ≤ π
ω : Ω
⊢ (stoppedValue u π - stoppedValue u τ) ω = (u (π ω) - u 0 - (u (τ ω) - u 0)) ω
state_after: no goals
Theorem: HahnSeries.embDomain_smul
File: Mathlib/RingTheory/HahnSeries/Addition.lean

tactic: ext g
state_before: Γ : Type u_1
R : Type u_2
inst✝⁴ : PartialOrder Γ
inst✝³ : Semiring R
V : Type u_3
inst✝² : AddCommMonoid V
inst✝¹ : Module R V
Γ' : Type u_4
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
r : R
x : HahnSeries Γ R
⊢ embDomain f (r • x) = r • embDomain f x
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝⁴ : PartialOrder Γ
inst✝³ : Semiring R
V : Type u_3
inst✝² : AddCommMonoid V
inst✝¹ : Module R V
Γ' : Type u_4
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
r : R
x : HahnSeries Γ R
g : Γ'
⊢ (embDomain f (r • x)).coeff g = (r • embDomain f x).coeff g

tactic: by_cases hg : g ∈ Set.range f
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝⁴ : PartialOrder Γ
inst✝³ : Semiring R
V : Type u_3
inst✝² : AddCommMonoid V
inst✝¹ : Module R V
Γ' : Type u_4
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
r : R
x : HahnSeries Γ R
g : Γ'
⊢ (embDomain f (r • x)).coeff g = (r • embDomain f x).coeff g
state_after: case pos
Γ : Type u_1
R : Type u_2
inst✝⁴ : PartialOrder Γ
inst✝³ : Semiring R
V : Type u_3
inst✝² : AddCommMonoid V
inst✝¹ : Module R V
Γ' : Type u_4
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
r : R
x : HahnSeries Γ R
g : Γ'
hg : g ∈ Set.range ⇑f
⊢ (embDomain f (r • x)).coeff g = (r • embDomain f x).coeff g

case neg
Γ : Type u_1
R : Type u_2
inst✝⁴ : PartialOrder Γ
inst✝³ : Semiring R
V : Type u_3
inst✝² : AddCommMonoid V
inst✝¹ : Module R V
Γ' : Type u_4
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
r : R
x : HahnSeries Γ R
g : Γ'
hg : g ∉ Set.range ⇑f
⊢ (embDomain f (r • x)).coeff g = (r • embDomain f x).coeff g

tactic: obtain ⟨a, rfl⟩ := hg
state_before: case pos
Γ : Type u_1
R : Type u_2
inst✝⁴ : PartialOrder Γ
inst✝³ : Semiring R
V : Type u_3
inst✝² : AddCommMonoid V
inst✝¹ : Module R V
Γ' : Type u_4
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
r : R
x : HahnSeries Γ R
g : Γ'
hg : g ∈ Set.range ⇑f
⊢ (embDomain f (r • x)).coeff g = (r • embDomain f x).coeff g
state_after: case pos.intro
Γ : Type u_1
R : Type u_2
inst✝⁴ : PartialOrder Γ
inst✝³ : Semiring R
V : Type u_3
inst✝² : AddCommMonoid V
inst✝¹ : Module R V
Γ' : Type u_4
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
r : R
x : HahnSeries Γ R
a : Γ
⊢ (embDomain f (r • x)).coeff (f a) = (r • embDomain f x).coeff (f a)

tactic: simp
state_before: case pos.intro
Γ : Type u_1
R : Type u_2
inst✝⁴ : PartialOrder Γ
inst✝³ : Semiring R
V : Type u_3
inst✝² : AddCommMonoid V
inst✝¹ : Module R V
Γ' : Type u_4
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
r : R
x : HahnSeries Γ R
a : Γ
⊢ (embDomain f (r • x)).coeff (f a) = (r • embDomain f x).coeff (f a)
state_after: no goals

tactic: simp [embDomain_notin_range hg]
state_before: case neg
Γ : Type u_1
R : Type u_2
inst✝⁴ : PartialOrder Γ
inst✝³ : Semiring R
V : Type u_3
inst✝² : AddCommMonoid V
inst✝¹ : Module R V
Γ' : Type u_4
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
r : R
x : HahnSeries Γ R
g : Γ'
hg : g ∉ Set.range ⇑f
⊢ (embDomain f (r • x)).coeff g = (r • embDomain f x).coeff g
state_after: no goals
Theorem: Polynomial.cyclotomic.eval_apply
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

tactic: rw [← map_cyclotomic n f, eval_map, eval₂_at_apply]
state_before: R : Type u_1
S : Type u_2
q : R
n : ℕ
inst✝¹ : Ring R
inst✝ : Ring S
f : R →+* S
⊢ eval (f q) (cyclotomic n S) = f (eval q (cyclotomic n R))
state_after: no goals
Theorem: Nat.smoothNumbers_eq_factoredNumbers
File: Mathlib/NumberTheory/SmoothNumbers.lean

tactic: simp only [smoothNumbers, ne_eq, mem_factors', and_imp, factoredNumbers, Finset.mem_range]
state_before: n : ℕ
⊢ n.smoothNumbers = factoredNumbers (Finset.range n)
state_after: no goals
Theorem: erase_eq_iff
File: Mathlib/Combinatorics/SetFamily/FourFunctions.lean

tactic: simp [ne_of_mem_of_not_mem', erase_eq_iff_eq_insert, *]
state_before: case neg
α : Type u_1
β : Type u_2
inst✝² : DecidableEq α
inst✝¹ : LinearOrderedCommSemiring β
inst✝ : ExistsAddOfLE β
𝒜 ℬ : Finset (Finset α)
a : α
f f₁ f₂ f₃ f₄ g μ : Finset α → β
s t u : Finset α
hs : a ∉ s
ht : a ∉ t
⊢ t.erase a = s ↔ t = s ∨ t = insert a s
state_after: case neg
α : Type u_1
β : Type u_2
inst✝² : DecidableEq α
inst✝¹ : LinearOrderedCommSemiring β
inst✝ : ExistsAddOfLE β
𝒜 ℬ : Finset (Finset α)
a : α
f f₁ f₂ f₃ f₄ g μ : Finset α → β
s t u : Finset α
hs : a ∉ s
ht : a ∉ t
⊢ t = insert a s → t = s

tactic: aesop
state_before: case neg
α : Type u_1
β : Type u_2
inst✝² : DecidableEq α
inst✝¹ : LinearOrderedCommSemiring β
inst✝ : ExistsAddOfLE β
𝒜 ℬ : Finset (Finset α)
a : α
f f₁ f₂ f₃ f₄ g μ : Finset α → β
s t u : Finset α
hs : a ∉ s
ht : a ∉ t
⊢ t = insert a s → t = s
state_after: no goals
Theorem: Orientation.two_zsmul_oangle_neg_self_right
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: by_cases hx : x = 0 <;> simp [hx]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x : V
⊢ 2 • o.oangle x (-x) = 0
state_after: no goals
Theorem: CliffordAlgebra.submodule_comap_mul_reverse
File: Mathlib/LinearAlgebra/CliffordAlgebra/Conjugation.lean

tactic: simp_rw [← submodule_map_reverse_eq_comap, submodule_map_mul_reverse]
state_before: R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
p q : Submodule R (CliffordAlgebra Q)
⊢ Submodule.comap reverse (p * q) = Submodule.comap reverse q * Submodule.comap reverse p
state_after: no goals
Theorem: Subgroup.eq_bot_iff_card
File: Mathlib/Algebra/Group/Subgroup/Finite.lean

tactic: rintro rfl
state_before: G : Type u_1
inst✝¹ : Group G
A : Type u_2
inst✝ : AddGroup A
H K : Subgroup G
⊢ H = ⊥ → Nat.card ↥H = 1
state_after: G : Type u_1
inst✝¹ : Group G
A : Type u_2
inst✝ : AddGroup A
K : Subgroup G
⊢ Nat.card ↥⊥ = 1

tactic: exact card_bot
state_before: G : Type u_1
inst✝¹ : Group G
A : Type u_2
inst✝ : AddGroup A
K : Subgroup G
⊢ Nat.card ↥⊥ = 1
state_after: no goals
Theorem: FirstOrder.Language.Theory.model_singleton_iff
File: Mathlib/ModelTheory/Semantics.lean

tactic: simp
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
φ : L.Sentence
⊢ M ⊨ {φ} ↔ M ⊨ φ
state_after: no goals
Theorem: MeasureTheory.ae_eq_restrict_iUnion_iff
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: simp_rw [EventuallyEq, ae_restrict_iUnion_eq, eventually_iSup]
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
inst✝ : Countable ι
s : ι → Set α
f g : α → δ
⊢ f =ᶠ[ae (μ.restrict (⋃ i, s i))] g ↔ ∀ (i : ι), f =ᶠ[ae (μ.restrict (s i))] g
state_after: no goals
Theorem: quadraticCharFun_zero
File: Mathlib/NumberTheory/LegendreSymbol/QuadraticChar/Basic.lean

tactic: simp only [quadraticCharFun, if_true]
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
⊢ quadraticCharFun F 0 = 0
state_after: no goals
Theorem: invOf_mul
File: Mathlib/Algebra/Group/Invertible/Defs.lean

tactic: simp [← mul_assoc]
state_before: α : Type u
inst✝³ : Monoid α
a b : α
inst✝² : Invertible a
inst✝¹ : Invertible b
inst✝ : Invertible (a * b)
⊢ a * b * (⅟b * ⅟a) = 1
state_after: no goals
Theorem: Nat.xgcd_zero_left
File: Mathlib/Data/Int/GCD.lean

tactic: simp [xgcdAux]
state_before: s t : ℤ
r' : ℕ
s' t' : ℤ
⊢ xgcdAux 0 s t r' s' t' = (r', s', t')
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.Z_eq_zero_of_equiv
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rcases h with ⟨_, rfl⟩
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
h : P ≈ Q
⊢ P z = 0 ↔ Q z = 0
state_after: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
w✝ : Rˣ
⊢ (fun m => m • Q) w✝ z = 0 ↔ Q z = 0

tactic: simp only [Units.smul_def, smul_fin3_ext, Units.mul_right_eq_zero]
state_before: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
w✝ : Rˣ
⊢ (fun m => m • Q) w✝ z = 0 ↔ Q z = 0
state_after: no goals