tasksource/leandojo huggingface dataset:
Theorem: ZMod.le_div_two_iff_lt_neg
File: Mathlib/Data/ZMod/Basic.lean

tactic: haveI npos : NeZero n :=
  ⟨by
    rintro rfl
    simp [fact_iff] at hn⟩
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
⊢ val x ≤ n / 2 ↔ n / 2 < val (-x)

tactic: have _hn2 : (n : ℕ) / 2 < n :=
  Nat.div_lt_of_lt_mul ((lt_mul_iff_one_lt_left <| NeZero.pos n).2 (by decide))
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
npos : NeZero n
⊢ val x ≤ n / 2 ↔ n / 2 < val (-x)

tactic: have hn2' : (n : ℕ) - n / 2 = n / 2 + 1 := by
  conv =>
    lhs
    congr
    rw [← Nat.succ_sub_one n, Nat.succ_sub <| NeZero.pos n]
  rw [← Nat.two_mul_odd_div_two hn.1, two_mul, ← Nat.succ_add, add_tsub_cancel_right]
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
npos : NeZero n
_hn2 : n / 2 < n
⊢ val x ≤ n / 2 ↔ n / 2 < val (-x)

tactic: have hxn : (n : ℕ) - x.val < n := by
  rw [tsub_lt_iff_tsub_lt x.val_le le_rfl, tsub_self]
  rw [← ZMod.nat_cast_zmod_val x] at hx0
  exact Nat.pos_of_ne_zero fun h => by simp [h] at hx0
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
npos : NeZero n
_hn2 : n / 2 < n
hn2' : n - n / 2 = n / 2 + 1
⊢ val x ≤ n / 2 ↔ n / 2 < val (-x)

tactic: rintro rfl
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
⊢ n ≠ 0

tactic: simp [fact_iff] at hn
state_before: hn : Fact (0 % 2 = 1)
x : ZMod 0
hx0 : x ≠ 0
⊢ False

tactic: decide
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
npos : NeZero n
⊢ 1 < 2

tactic: conv =>
  lhs
  congr
  rw [← Nat.succ_sub_one n, Nat.succ_sub <| NeZero.pos n]
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
npos : NeZero n
_hn2 : n / 2 < n
⊢ n - n / 2 = n / 2 + 1

tactic: rw [← Nat.two_mul_odd_div_two hn.1, two_mul, ← Nat.succ_add, add_tsub_cancel_right]
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
npos : NeZero n
_hn2 : n / 2 < n
⊢ Nat.succ (n - Nat.succ 0) - n / 2 = n / 2 + 1

tactic: rw [tsub_lt_iff_tsub_lt x.val_le le_rfl, tsub_self]
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
npos : NeZero n
_hn2 : n / 2 < n
hn2' : n - n / 2 = n / 2 + 1
⊢ n - val x < n

tactic: rw [← ZMod.nat_cast_zmod_val x] at hx0
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
npos : NeZero n
_hn2 : n / 2 < n
hn2' : n - n / 2 = n / 2 + 1
⊢ 0 < val x

tactic: exact Nat.pos_of_ne_zero fun h => by simp [h] at hx0
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : ↑(val x) ≠ 0
npos : NeZero n
_hn2 : n / 2 < n
hn2' : n - n / 2 = n / 2 + 1
⊢ 0 < val x

tactic: simp [h] at hx0
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : ↑(val x) ≠ 0
npos : NeZero n
_hn2 : n / 2 < n
hn2' : n - n / 2 = n / 2 + 1
h : val x = 0
⊢ False

tactic: conv =>
  rhs
  rw [← Nat.succ_le_iff, Nat.succ_eq_add_one, ← hn2', ← zero_add (-x), ← ZMod.nat_cast_self, ←
    sub_eq_add_neg, ← ZMod.nat_cast_zmod_val x, ← Nat.cast_sub x.val_le, ZMod.val_nat_cast,
    Nat.mod_eq_of_lt hxn, tsub_le_tsub_iff_left x.val_le]
state_before: n : ℕ
hn : Fact (n % 2 = 1)
x : ZMod n
hx0 : x ≠ 0
npos : NeZero n
_hn2 : n / 2 < n
hn2' : n - n / 2 = n / 2 + 1
hxn : n - val x < n
⊢ val x ≤ n / 2 ↔ n / 2 < val (-x)
Theorem: Function.Semiconj.comp_left
File: Mathlib/Logic/Function/Conjugate.lean

tactic: simp only [comp_apply, hab.eq, hbc.eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f fab : α → β
fbc : β → γ
ga ga' : α → α
gb gb' : β → β
gc gc' : γ → γ
hab : Semiconj fab ga gb
hbc : Semiconj fbc gb gc
x : α
⊢ (fbc ∘ fab) (ga x) = gc ((fbc ∘ fab) x)
Theorem: map_bihimp
File: Mathlib/Order/Heyting/Hom.lean

tactic: simp_rw [bihimp, map_inf, map_himp]
state_before: F : Type u_3
α : Type u_2
β : Type u_1
γ : Type ?u.33397
δ : Type ?u.33400
inst✝² : HeytingAlgebra α
inst✝¹ : HeytingAlgebra β
inst✝ : HeytingHomClass F α β
f : F
a b : α
⊢ ↑f (a ⇔ b) = ↑f a ⇔ ↑f b
Theorem: EventuallyLE.countable_bInter
File: Mathlib/Order/Filter/CountableInter.lean

tactic: simp only [biInter_eq_iInter]
state_before: ι✝ : Sort ?u.5259
α : Type u_2
β : Type ?u.5265
l : Filter α
inst✝ : CountableInterFilter l
ι : Type u_1
S : Set ι
hS : Set.Countable S
s t : (i : ι) → i ∈ S → Set α
h : ∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi
⊢ (⋂ (i : ι) (h : i ∈ S), s i h) ≤ᶠ[l] ⋂ (i : ι) (h : i ∈ S), t i h

tactic: haveI := hS.toEncodable
state_before: ι✝ : Sort ?u.5259
α : Type u_2
β : Type ?u.5265
l : Filter α
inst✝ : CountableInterFilter l
ι : Type u_1
S : Set ι
hS : Set.Countable S
s t : (i : ι) → i ∈ S → Set α
h : ∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi
⊢ (⋂ (x : ↑S), s ↑x (_ : ↑x ∈ S)) ≤ᶠ[l] ⋂ (x : ↑S), t ↑x (_ : ↑x ∈ S)

tactic: exact EventuallyLE.countable_iInter fun i => h i i.2
state_before: ι✝ : Sort ?u.5259
α : Type u_2
β : Type ?u.5265
l : Filter α
inst✝ : CountableInterFilter l
ι : Type u_1
S : Set ι
hS : Set.Countable S
s t : (i : ι) → i ∈ S → Set α
h : ∀ (i : ι) (hi : i ∈ S), s i hi ≤ᶠ[l] t i hi
this : Encodable ↑S
⊢ (⋂ (x : ↑S), s ↑x (_ : ↑x ∈ S)) ≤ᶠ[l] ⋂ (x : ↑S), t ↑x (_ : ↑x ∈ S)
Theorem: extChartAt_model_space_eq_id
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: simp only [mfld_simps]
state_before: 𝕜 : Type u_2
E : Type u_1
M : Type ?u.234410
H : Type ?u.234413
E' : Type ?u.234416
M' : Type ?u.234419
H' : Type ?u.234422
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
x : E
⊢ extChartAt 𝓘(𝕜, E) x = LocalEquiv.refl E
Theorem: Submodule.prod_comap_inr
File: Mathlib/LinearAlgebra/Prod.lean

tactic: ext
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type ?u.303059
M₆ : Type ?u.303062
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
⊢ comap (inr R M M₂) (prod p q) = q

tactic: simp
state_before: case h
R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type ?u.303059
M₆ : Type ?u.303062
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
x✝ : M₂
⊢ x✝ ∈ comap (inr R M M₂) (prod p q) ↔ x✝ ∈ q
Theorem: List.replicate_add
File: Mathlib/Data/List/Basic.lean

tactic: induction m <;> simp [*, zero_add, succ_add, replicate]
state_before: ι : Type ?u.17053
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
m n : ℕ
a : α
⊢ replicate (m + n) a = replicate m a ++ replicate n a
Theorem: IsCompact.compl_mem_sets
File: Mathlib/Topology/SubsetProperties.lean

tactic: contrapose! hf
state_before: α : Type u
β : Type v
ι : Type ?u.205
π : ι → Type ?u.210
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
f : Filter α
hf : ∀ (a : α), a ∈ s → sᶜ ∈ 𝓝 a ⊓ f
⊢ sᶜ ∈ f

tactic: simp only [not_mem_iff_inf_principal_compl, compl_compl, inf_assoc] at hf ⊢
state_before: α : Type u
β : Type v
ι : Type ?u.205
π : ι → Type ?u.210
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
f : Filter α
hf : ¬sᶜ ∈ f
⊢ ∃ a, a ∈ s ∧ ¬sᶜ ∈ 𝓝 a ⊓ f

tactic: exact @hs _ hf inf_le_right
state_before: α : Type u
β : Type v
ι : Type ?u.205
π : ι → Type ?u.210
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
f : Filter α
hf : NeBot (f ⊓ 𝓟 s)
⊢ ∃ a, a ∈ s ∧ NeBot (𝓝 a ⊓ (f ⊓ 𝓟 s))
Theorem: Matrix.diagonal_transpose
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext i j
state_before: l : Type ?u.49070
m : Type ?u.49073
n : Type u_1
o : Type ?u.49079
m' : o → Type ?u.49084
n' : o → Type ?u.49089
R : Type ?u.49092
S : Type ?u.49095
α : Type v
β : Type w
γ : Type ?u.49102
inst✝¹ : DecidableEq n
inst✝ : Zero α
v : n → α
⊢ (diagonal v)ᵀ = diagonal v

tactic: by_cases h : i = j
state_before: case a.h
l : Type ?u.49070
m : Type ?u.49073
n : Type u_1
o : Type ?u.49079
m' : o → Type ?u.49084
n' : o → Type ?u.49089
R : Type ?u.49092
S : Type ?u.49095
α : Type v
β : Type w
γ : Type ?u.49102
inst✝¹ : DecidableEq n
inst✝ : Zero α
v : n → α
i j : n
⊢ (diagonal v)ᵀ i j = diagonal v i j

tactic: simp [h, transpose]
state_before: case pos
l : Type ?u.49070
m : Type ?u.49073
n : Type u_1
o : Type ?u.49079
m' : o → Type ?u.49084
n' : o → Type ?u.49089
R : Type ?u.49092
S : Type ?u.49095
α : Type v
β : Type w
γ : Type ?u.49102
inst✝¹ : DecidableEq n
inst✝ : Zero α
v : n → α
i j : n
h : i = j
⊢ (diagonal v)ᵀ i j = diagonal v i j

tactic: simp [h, transpose, diagonal_apply_ne' _ h]
state_before: case neg
l : Type ?u.49070
m : Type ?u.49073
n : Type u_1
o : Type ?u.49079
m' : o → Type ?u.49084
n' : o → Type ?u.49089
R : Type ?u.49092
S : Type ?u.49095
α : Type v
β : Type w
γ : Type ?u.49102
inst✝¹ : DecidableEq n
inst✝ : Zero α
v : n → α
i j : n
h : ¬i = j
⊢ (diagonal v)ᵀ i j = diagonal v i j
Theorem: Fin.castSucc_castPred
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [castPred, predAbove, dif_neg]
state_before: n m : ℕ
i : Fin (n + 2)
h : i < last (n + 1)
⊢ ↑castSucc (castPred i) = i

tactic: simp [Fin.eq_iff_veq]
state_before: n m : ℕ
i : Fin (n + 2)
h : i < last (n + 1)
⊢ ↑castSucc (castLT i (_ : ↑i < n + 1)) = i

tactic: exact h.not_le
state_before: case hnc
n m : ℕ
i : Fin (n + 2)
h : i < last (n + 1)
⊢ ¬↑castSucc (last n) < i
Theorem: DirectSum.coe_mul_of_apply
File: Mathlib/Algebra/DirectSum/Internal.lean

tactic: split_ifs with h
state_before: ι : Type u_1
σ : Type u_3
S : Type ?u.414941
R : Type u_2
inst✝⁹ : DecidableEq ι
inst✝⁸ : Semiring R
inst✝⁷ : SetLike σ R
inst✝⁶ : AddSubmonoidClass σ R
A : ι → σ
inst✝⁵ : CanonicallyOrderedAddMonoid ι
inst✝⁴ : SetLike.GradedMonoid A
inst✝³ : Sub ι
inst✝² : OrderedSub ι
inst✝¹ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
r : ⨁ (i : ι), { x // x ∈ A i }
i : ι
r' : { x // x ∈ A i }
n : ι
inst✝ : Decidable (i ≤ n)
⊢ ↑(↑(r * ↑(of (fun i => { x // x ∈ A i }) i) r') n) = if i ≤ n then ↑(↑r (n - i)) * ↑r' else 0

tactic: exacts [coe_mul_of_apply_of_le _ _ _ n h, coe_mul_of_apply_of_not_le _ _ _ n h]
state_before: case inl
ι : Type u_1
σ : Type u_3
S : Type ?u.414941
R : Type u_2
inst✝⁹ : DecidableEq ι
inst✝⁸ : Semiring R
inst✝⁷ : SetLike σ R
inst✝⁶ : AddSubmonoidClass σ R
A : ι → σ
inst✝⁵ : CanonicallyOrderedAddMonoid ι
inst✝⁴ : SetLike.GradedMonoid A
inst✝³ : Sub ι
inst✝² : OrderedSub ι
inst✝¹ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
r : ⨁ (i : ι), { x // x ∈ A i }
i : ι
r' : { x // x ∈ A i }
n : ι
inst✝ : Decidable (i ≤ n)
h : i ≤ n
⊢ ↑(↑(r * ↑(of (fun i => { x // x ∈ A i }) i) r') n) = ↑(↑r (n - i)) * ↑r'

case inr
ι : Type u_1
σ : Type u_3
S : Type ?u.414941
R : Type u_2
inst✝⁹ : DecidableEq ι
inst✝⁸ : Semiring R
inst✝⁷ : SetLike σ R
inst✝⁶ : AddSubmonoidClass σ R
A : ι → σ
inst✝⁵ : CanonicallyOrderedAddMonoid ι
inst✝⁴ : SetLike.GradedMonoid A
inst✝³ : Sub ι
inst✝² : OrderedSub ι
inst✝¹ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
r : ⨁ (i : ι), { x // x ∈ A i }
i : ι
r' : { x // x ∈ A i }
n : ι
inst✝ : Decidable (i ≤ n)
h : ¬i ≤ n
⊢ ↑(↑(r * ↑(of (fun i => { x // x ∈ A i }) i) r') n) = 0
Theorem: UpperSet.coe_iInf
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp [iInf]
state_before: α : Type u_1
β : Type ?u.52313
γ : Type ?u.52316
ι : Sort u_2
κ : ι → Sort ?u.52324
inst✝ : LE α
S : Set (UpperSet α)
s t : UpperSet α
a : α
f : ι → UpperSet α
⊢ ↑(⨅ (i : ι), f i) = ⋃ (i : ι), ↑(f i)
Theorem: Submonoid.FG.map
File: Mathlib/GroupTheory/Finiteness.lean

tactic: classical
  obtain ⟨s, rfl⟩ := h
  exact ⟨s.image e, by rw [Finset.coe_image, MonoidHom.map_mclosure]⟩
state_before: M : Type u_2
N : Type ?u.12734
inst✝² : Monoid M
inst✝¹ : AddMonoid N
M' : Type u_1
inst✝ : Monoid M'
P : Submonoid M
h : FG P
e : M →* M'
⊢ FG (Submonoid.map e P)

tactic: obtain ⟨s, rfl⟩ := h
state_before: M : Type u_2
N : Type ?u.12734
inst✝² : Monoid M
inst✝¹ : AddMonoid N
M' : Type u_1
inst✝ : Monoid M'
P : Submonoid M
h : FG P
e : M →* M'
⊢ FG (Submonoid.map e P)

tactic: exact ⟨s.image e, by rw [Finset.coe_image, MonoidHom.map_mclosure]⟩
state_before: case intro
M : Type u_2
N : Type ?u.12734
inst✝² : Monoid M
inst✝¹ : AddMonoid N
M' : Type u_1
inst✝ : Monoid M'
e : M →* M'
s : Finset M
⊢ FG (Submonoid.map e (closure ↑s))

tactic: rw [Finset.coe_image, MonoidHom.map_mclosure]
state_before: M : Type u_2
N : Type ?u.12734
inst✝² : Monoid M
inst✝¹ : AddMonoid N
M' : Type u_1
inst✝ : Monoid M'
e : M →* M'
s : Finset M
⊢ closure ↑(Finset.image (↑e) s) = Submonoid.map e (closure ↑s)
Theorem: inseparable_pi
File: Mathlib/Topology/Inseparable.lean

tactic: simp only [Inseparable, nhds_pi, funext_iff, pi_inj]
state_before: X : Type ?u.34050
Y : Type ?u.34053
Z : Type ?u.34056
α : Type ?u.34059
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f✝ : X → Y
f g : (i : ι) → π i
⊢ (f ~ᵢ g) ↔ ∀ (i : ι), f i ~ᵢ g i
Theorem: List.zipWith_swap_prod_support
File: Mathlib/GroupTheory/Perm/List.lean

tactic: intro x hx
state_before: α : Type u_1
β : Type ?u.716493
inst✝¹ : DecidableEq α
l✝ : List α
x : α
inst✝ : Fintype α
l l' : List α
⊢ support (prod (zipWith swap l l')) ≤ toFinset l ⊔ toFinset l'

tactic: have hx' : x ∈ { x | (zipWith swap l l').prod x ≠ x } := by simpa using hx
state_before: α : Type u_1
β : Type ?u.716493
inst✝¹ : DecidableEq α
l✝ : List α
x✝ : α
inst✝ : Fintype α
l l' : List α
x : α
hx : x ∈ support (prod (zipWith swap l l'))
⊢ x ∈ toFinset l ⊔ toFinset l'

tactic: simpa using zipWith_swap_prod_support' _ _ hx'
state_before: α : Type u_1
β : Type ?u.716493
inst✝¹ : DecidableEq α
l✝ : List α
x✝ : α
inst✝ : Fintype α
l l' : List α
x : α
hx : x ∈ support (prod (zipWith swap l l'))
hx' : x ∈ {x | ↑(prod (zipWith swap l l')) x ≠ x}
⊢ x ∈ toFinset l ⊔ toFinset l'

tactic: simpa using hx
state_before: α : Type u_1
β : Type ?u.716493
inst✝¹ : DecidableEq α
l✝ : List α
x✝ : α
inst✝ : Fintype α
l l' : List α
x : α
hx : x ∈ support (prod (zipWith swap l l'))
⊢ x ∈ {x | ↑(prod (zipWith swap l l')) x ≠ x}
Theorem: Submodule.map_inf_eq_map_inf_comap
File: Mathlib/LinearAlgebra/Basic.lean

tactic: rintro _ ⟨⟨x, h₁, rfl⟩, h₂⟩
state_before: F : Type u_5
R : Type u_1
R₁ : Type ?u.928463
R₂ : Type u_2
R₃ : Type ?u.928469
R₄ : Type ?u.928472
S : Type ?u.928475
K : Type ?u.928478
K₂ : Type ?u.928481
M : Type u_3
M' : Type ?u.928487
M₁ : Type ?u.928490
M₂ : Type u_4
M₃ : Type ?u.928496
M₄ : Type ?u.928499
N : Type ?u.928502
N₂ : Type ?u.928505
ι : Type ?u.928508
V : Type ?u.928511
V₂ : Type ?u.928514
inst✝¹⁴ : Semiring R
inst✝¹³ : Semiring R₂
inst✝¹² : Semiring R₃
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
inst✝⁵ : Module R₂ M₂
inst✝⁴ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₂₁ : R₂ →+* R
inst✝³ : RingHomInvPair σ₁₂ σ₂₁
inst✝² : RingHomInvPair σ₂₁ σ₁₂
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
p✝ p'✝ : Submodule R M
q q' : Submodule R₂ M₂
q₁ q₁' : Submodule R M'
r : R
x y : M
sc : SemilinearMapClass F σ₁₂ M M₂
inst✝ : RingHomSurjective σ₁₂
f : F
p : Submodule R M
p' : Submodule R₂ M₂
⊢ map f p ⊓ p' ≤ map f (p ⊓ comap f p')

tactic: exact ⟨_, ⟨h₁, h₂⟩, rfl⟩
state_before: case intro.intro.intro
F : Type u_5
R : Type u_1
R₁ : Type ?u.928463
R₂ : Type u_2
R₃ : Type ?u.928469
R₄ : Type ?u.928472
S : Type ?u.928475
K : Type ?u.928478
K₂ : Type ?u.928481
M : Type u_3
M' : Type ?u.928487
M₁ : Type ?u.928490
M₂ : Type u_4
M₃ : Type ?u.928496
M₄ : Type ?u.928499
N : Type ?u.928502
N₂ : Type ?u.928505
ι : Type ?u.928508
V : Type ?u.928511
V₂ : Type ?u.928514
inst✝¹⁴ : Semiring R
inst✝¹³ : Semiring R₂
inst✝¹² : Semiring R₃
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
inst✝⁵ : Module R₂ M₂
inst✝⁴ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₂₁ : R₂ →+* R
inst✝³ : RingHomInvPair σ₁₂ σ₂₁
inst✝² : RingHomInvPair σ₂₁ σ₁₂
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
p✝ p'✝ : Submodule R M
q q' : Submodule R₂ M₂
q₁ q₁' : Submodule R M'
r : R
x✝ y : M
sc : SemilinearMapClass F σ₁₂ M M₂
inst✝ : RingHomSurjective σ₁₂
f : F
p : Submodule R M
p' : Submodule R₂ M₂
x : M
h₁ : x ∈ ↑p
h₂ : ↑f x ∈ ↑p'
⊢ ↑f x ∈ map f (p ⊓ comap f p')
Theorem: PartENat.add_right_cancel_iff
File: Mathlib/Data/Nat/PartENat.lean

tactic: rcases ne_top_iff.1 hc with ⟨c, rfl⟩
state_before: a b c : PartENat
hc : c ≠ ⊤
⊢ a + c = b + c ↔ a = b

tactic: refine PartENat.casesOn a ?_ ?_
<;> refine PartENat.casesOn b ?_ ?_
<;> simp [add_eq_top_iff, natCast_ne_top, @eq_comm _ (⊤ : PartENat)]
state_before: case intro
a b : PartENat
c : ℕ
hc : ↑c ≠ ⊤
⊢ a + ↑c = b + ↑c ↔ a = b

tactic: simp only [←Nat.cast_add, add_left_cancel_iff, PartENat.natCast_inj, add_comm, forall_const]
state_before: case intro.refine_2.refine_2
a b : PartENat
c : ℕ
hc : ↑c ≠ ⊤
⊢ ∀ (n n_1 : ℕ), ↑n_1 + ↑c = ↑n + ↑c ↔ n_1 = n
Theorem: UniformContinuous.prod_mk
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: rw [UniformContinuous, uniformity_prod]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.156682
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f₁ : α → β
f₂ : α → γ
h₁ : UniformContinuous f₁
h₂ : UniformContinuous f₂
⊢ UniformContinuous fun a => (f₁ a, f₂ a)

tactic: exact tendsto_inf.2 ⟨tendsto_comap_iff.2 h₁, tendsto_comap_iff.2 h₂⟩
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.156682
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f₁ : α → β
f₂ : α → γ
h₁ : UniformContinuous f₁
h₂ : UniformContinuous f₂
⊢ Tendsto (fun x => ((f₁ x.fst, f₂ x.fst), f₁ x.snd, f₂ x.snd)) (𝓤 α)
    (comap (fun p => (p.fst.fst, p.snd.fst)) (𝓤 β) ⊓ comap (fun p => (p.fst.snd, p.snd.snd)) (𝓤 γ))
Theorem: LinearIsometryEquiv.norm_iteratedFDeriv_comp_left
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: rw [← iteratedFDerivWithin_univ, ← iteratedFDerivWithin_univ]
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.282885
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
g : F ≃ₗᵢ[𝕜] G
f : E → F
x : E
i : ℕ
⊢ ‖iteratedFDeriv 𝕜 i (↑g ∘ f) x‖ = ‖iteratedFDeriv 𝕜 i f x‖

tactic: apply g.norm_iteratedFDerivWithin_comp_left f uniqueDiffOn_univ (mem_univ x) i
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.282885
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
g : F ≃ₗᵢ[𝕜] G
f : E → F
x : E
i : ℕ
⊢ ‖iteratedFDerivWithin 𝕜 i (↑g ∘ f) univ x‖ = ‖iteratedFDerivWithin 𝕜 i f univ x‖
Theorem: ZNum.add_zero
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases n <;> rfl
state_before: α : Type ?u.723564
n : ZNum
⊢ n + 0 = n
Theorem: measurable_const'
File: Mathlib/MeasureTheory/MeasurableSpace.lean

tactic: nontriviality β
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.9600
δ : Type ?u.9603
δ' : Type ?u.9606
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
⊢ Measurable f

tactic: inhabit β
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.9600
δ : Type ?u.9603
δ' : Type ?u.9606
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
✝ : Nontrivial β
⊢ Measurable f

tactic: convert @measurable_const α β ‹_› ‹_› (f default) using 2
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.9600
δ : Type ?u.9603
δ' : Type ?u.9606
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
✝ : Nontrivial β
inhabited_h : Inhabited β
⊢ Measurable f

tactic: apply hf
state_before: case h.e'_5.h
α : Type u_1
β : Type u_2
γ : Type ?u.9600
δ : Type ?u.9603
δ' : Type ?u.9606
ι : Sort uι
s t u : Set α
f✝ g : α → β
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : β → α
hf : ∀ (x y : β), f x = f y
✝ : Nontrivial β
inhabited_h : Inhabited β
x✝ : β
⊢ f x✝ = f default
Theorem: Set.Ici_diff_Ici
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: rw [diff_eq, compl_Ici, Ici_inter_Iio]
state_before: α : Type u_1
β : Type ?u.60813
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
⊢ Ici a \ Ici b = Ico a b
Theorem: map_exp_of_mem_ball
File: Mathlib/Analysis/NormedSpace/Exponential.lean

tactic: rw [exp_eq_tsum, exp_eq_tsum]
state_before: 𝕂 : Type u_4
𝔸 : Type u_2
𝔹 : Type u_3
inst✝⁶ : NontriviallyNormedField 𝕂
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedRing 𝔹
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedAlgebra 𝕂 𝔹
inst✝¹ : CompleteSpace 𝔸
F : Type u_1
inst✝ : RingHomClass F 𝔸 𝔹
f : F
hf : Continuous ↑f
x : 𝔸
hx : x ∈ EMetric.ball 0 (FormalMultilinearSeries.radius (expSeries 𝕂 𝔸))
⊢ ↑f (exp 𝕂 x) = exp 𝕂 (↑f x)

tactic: refine' ((expSeries_summable_of_mem_ball' _ hx).hasSum.map f hf).tsum_eq.symm.trans _
state_before: 𝕂 : Type u_4
𝔸 : Type u_2
𝔹 : Type u_3
inst✝⁶ : NontriviallyNormedField 𝕂
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedRing 𝔹
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedAlgebra 𝕂 𝔹
inst✝¹ : CompleteSpace 𝔸
F : Type u_1
inst✝ : RingHomClass F 𝔸 𝔹
f : F
hf : Continuous ↑f
x : 𝔸
hx : x ∈ EMetric.ball 0 (FormalMultilinearSeries.radius (expSeries 𝕂 𝔸))
⊢ ↑f ((fun x => ∑' (n : ℕ), (↑n !)⁻¹ • x ^ n) x) = (fun x_1 => ∑' (n : ℕ), (↑n !)⁻¹ • x_1 ^ n) (↑f x)

tactic: dsimp only [Function.comp]
state_before: 𝕂 : Type u_4
𝔸 : Type u_2
𝔹 : Type u_3
inst✝⁶ : NontriviallyNormedField 𝕂
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedRing 𝔹
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedAlgebra 𝕂 𝔹
inst✝¹ : CompleteSpace 𝔸
F : Type u_1
inst✝ : RingHomClass F 𝔸 𝔹
f : F
hf : Continuous ↑f
x : 𝔸
hx : x ∈ EMetric.ball 0 (FormalMultilinearSeries.radius (expSeries 𝕂 𝔸))
⊢ (∑' (b : ℕ), (↑f ∘ fun n => (↑n !)⁻¹ • x ^ n) b) = (fun x_1 => ∑' (n : ℕ), (↑n !)⁻¹ • x_1 ^ n) (↑f x)

tactic: simp_rw [one_div, map_inv_nat_cast_smul f 𝕂 𝕂, map_pow]
state_before: 𝕂 : Type u_4
𝔸 : Type u_2
𝔹 : Type u_3
inst✝⁶ : NontriviallyNormedField 𝕂
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedRing 𝔹
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedAlgebra 𝕂 𝔹
inst✝¹ : CompleteSpace 𝔸
F : Type u_1
inst✝ : RingHomClass F 𝔸 𝔹
f : F
hf : Continuous ↑f
x : 𝔸
hx : x ∈ EMetric.ball 0 (FormalMultilinearSeries.radius (expSeries 𝕂 𝔸))
⊢ (∑' (b : ℕ), ↑f ((↑b !)⁻¹ • x ^ b)) = ∑' (n : ℕ), (↑n !)⁻¹ • ↑f x ^ n
Theorem: AlgebraicGeometry.StructureSheaf.const_congr
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: substs hf hg
state_before: R : Type u
inst✝ : CommRing R
f₁ f₂ g₁ g₂ : R
U : Opens ↑(PrimeSpectrum.Top R)
hu : ∀ (x : ↑(PrimeSpectrum.Top R)), x ∈ U → g₁ ∈ Ideal.primeCompl x.asIdeal
hf : f₁ = f₂
hg : g₁ = g₂
⊢ const R f₁ g₁ U hu = const R f₂ g₂ U (_ : ∀ (x : ↑(PrimeSpectrum.Top R)), x ∈ U → g₂ ∈ Ideal.primeCompl x.asIdeal)

tactic: rfl
state_before: R : Type u
inst✝ : CommRing R
f₁ g₁ : R
U : Opens ↑(PrimeSpectrum.Top R)
hu : ∀ (x : ↑(PrimeSpectrum.Top R)), x ∈ U → g₁ ∈ Ideal.primeCompl x.asIdeal
⊢ const R f₁ g₁ U hu = const R f₁ g₁ U (_ : ∀ (x : ↑(PrimeSpectrum.Top R)), x ∈ U → g₁ ∈ Ideal.primeCompl x.asIdeal)
Theorem: Turing.TM0.univ_supports
File: Mathlib/Computability/TuringMachine.lean

tactic: constructor <;> intros <;> apply Set.mem_univ
state_before: Γ : Type u_1
inst✝¹ : Inhabited Γ
Λ : Type u_2
inst✝ : Inhabited Λ
M : Machine₀
⊢ Supports M Set.univ