1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CochainComplex.HomComplex.δ_zero_cochain_v
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean

tactic: simp only [δ_v 0 1 (zero_add 1) z p q hpq p q (by omega) hpq, zero_add,
  Int.negOnePow_one, Units.neg_smul, one_smul, sub_eq_add_neg]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
z : Cochain F G 0
p q : ℤ
hpq : p + 1 = q
⊢ (δ 0 1 z).v p q hpq = z.v p p ⋯ ≫ G.d p q - F.d p q ≫ z.v q q ⋯
state_after: no goals

tactic: omega
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
z : Cochain F G 0
p q : ℤ
hpq : p + 1 = q
⊢ p = q - 1
state_after: no goals
Theorem: ENNReal.Tendsto.div
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: apply Tendsto.mul hma _ (ENNReal.tendsto_inv_iff.2 hmb) _ <;> simp [ha, hb]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : Filter α
ma mb : α → ℝ≥0∞
a b : ℝ≥0∞
hma : Tendsto ma f (𝓝 a)
ha : a ≠ 0 ∨ b ≠ 0
hmb : Tendsto mb f (𝓝 b)
hb : b ≠ ⊤ ∨ a ≠ ⊤
⊢ Tendsto (fun a => ma a / mb a) f (𝓝 (a / b))
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.mkMetric'.tendsto_pre
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

tactic: rw [← map_coe_Ioi_atBot, tendsto_map'_iff]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝¹ : EMetricSpace X
inst✝ : EMetricSpace Y
m✝ : Set X → ℝ≥0∞
r : ℝ≥0∞
μ : OuterMeasure X
s✝ : Set X
m : Set X → ℝ≥0∞
s : Set X
⊢ Tendsto (fun r => (pre m r) s) (𝓝[>] 0) (𝓝 ((mkMetric' m) s))
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝¹ : EMetricSpace X
inst✝ : EMetricSpace Y
m✝ : Set X → ℝ≥0∞
r : ℝ≥0∞
μ : OuterMeasure X
s✝ : Set X
m : Set X → ℝ≥0∞
s : Set X
⊢ Tendsto ((fun r => (pre m r) s) ∘ Subtype.val) atBot (𝓝 ((mkMetric' m) s))

tactic: simp only [mkMetric', OuterMeasure.iSup_apply, iSup_subtype']
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝¹ : EMetricSpace X
inst✝ : EMetricSpace Y
m✝ : Set X → ℝ≥0∞
r : ℝ≥0∞
μ : OuterMeasure X
s✝ : Set X
m : Set X → ℝ≥0∞
s : Set X
⊢ Tendsto ((fun r => (pre m r) s) ∘ Subtype.val) atBot (𝓝 ((mkMetric' m) s))
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝¹ : EMetricSpace X
inst✝ : EMetricSpace Y
m✝ : Set X → ℝ≥0∞
r : ℝ≥0∞
μ : OuterMeasure X
s✝ : Set X
m : Set X → ℝ≥0∞
s : Set X
⊢ Tendsto ((fun r => (pre m r) s) ∘ Subtype.val) atBot (𝓝 (⨆ i, (pre m ↑i) s))

tactic: exact tendsto_atBot_iSup fun r r' hr => mono_pre _ hr _
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝¹ : EMetricSpace X
inst✝ : EMetricSpace Y
m✝ : Set X → ℝ≥0∞
r : ℝ≥0∞
μ : OuterMeasure X
s✝ : Set X
m : Set X → ℝ≥0∞
s : Set X
⊢ Tendsto ((fun r => (pre m r) s) ∘ Subtype.val) atBot (𝓝 (⨆ i, (pre m ↑i) s))
state_after: no goals
Theorem: Polynomial.taylor_injective
File: Mathlib/Algebra/Polynomial/Taylor.lean

tactic: intro f g h
state_before: R✝ : Type u_1
inst✝¹ : Semiring R✝
r✝ : R✝
f : R✝[X]
R : Type u_2
inst✝ : CommRing R
r : R
⊢ Function.Injective ⇑(taylor r)
state_after: R✝ : Type u_1
inst✝¹ : Semiring R✝
r✝ : R✝
f✝ : R✝[X]
R : Type u_2
inst✝ : CommRing R
r : R
f g : R[X]
h : (taylor r) f = (taylor r) g
⊢ f = g

tactic: apply_fun taylor (-r) at h
state_before: R✝ : Type u_1
inst✝¹ : Semiring R✝
r✝ : R✝
f✝ : R✝[X]
R : Type u_2
inst✝ : CommRing R
r : R
f g : R[X]
h : (taylor r) f = (taylor r) g
⊢ f = g
state_after: R✝ : Type u_1
inst✝¹ : Semiring R✝
r✝ : R✝
f✝ : R✝[X]
R : Type u_2
inst✝ : CommRing R
r : R
f g : R[X]
h : (taylor (-r)) ((taylor r) f) = (taylor (-r)) ((taylor r) g)
⊢ f = g

tactic: simpa only [taylor_apply, comp_assoc, add_comp, X_comp, C_comp, C_neg, neg_add_cancel_right,
  comp_X] using h
state_before: R✝ : Type u_1
inst✝¹ : Semiring R✝
r✝ : R✝
f✝ : R✝[X]
R : Type u_2
inst✝ : CommRing R
r : R
f g : R[X]
h : (taylor (-r)) ((taylor r) f) = (taylor (-r)) ((taylor r) g)
⊢ f = g
state_after: no goals
Theorem: CategoryTheory.Limits.spanExt_hom_app_left
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: dsimp [spanExt]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y Z X' Y' Z' : C
iX : X ≅ X'
iY : Y ≅ Y'
iZ : Z ≅ Z'
f : X ⟶ Y
g : X ⟶ Z
f' : X' ⟶ Y'
g' : X' ⟶ Z'
wf : iX.hom ≫ f' = f ≫ iY.hom
wg : iX.hom ≫ g' = g ≫ iZ.hom
⊢ (spanExt iX iY iZ wf wg).hom.app WalkingSpan.left = iY.hom
state_after: no goals
Theorem: AddMonoidAlgebra.mapDomainAlgHom_comp
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: ext
state_before: k✝ : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
k : Type u_3
A : Type u_4
G₁ : Type u_5
G₂ : Type u_6
G₃ : Type u_7
inst✝⁵ : CommSemiring k
inst✝⁴ : Semiring A
inst✝³ : Algebra k A
inst✝² : AddMonoid G₁
inst✝¹ : AddMonoid G₂
inst✝ : AddMonoid G₃
f : G₁ →+ G₂
g : G₂ →+ G₃
⊢ mapDomainAlgHom k A (g.comp f) = (mapDomainAlgHom k A g).comp (mapDomainAlgHom k A f)
state_after: case H
k✝ : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
k : Type u_3
A : Type u_4
G₁ : Type u_5
G₂ : Type u_6
G₃ : Type u_7
inst✝⁵ : CommSemiring k
inst✝⁴ : Semiring A
inst✝³ : Algebra k A
inst✝² : AddMonoid G₁
inst✝¹ : AddMonoid G₂
inst✝ : AddMonoid G₃
f : G₁ →+ G₂
g : G₂ →+ G₃
x✝ : A[G₁]
⊢ (mapDomainAlgHom k A (g.comp f)) x✝ = ((mapDomainAlgHom k A g).comp (mapDomainAlgHom k A f)) x✝

tactic: simp [mapDomain_comp]
state_before: case H
k✝ : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
k : Type u_3
A : Type u_4
G₁ : Type u_5
G₂ : Type u_6
G₃ : Type u_7
inst✝⁵ : CommSemiring k
inst✝⁴ : Semiring A
inst✝³ : Algebra k A
inst✝² : AddMonoid G₁
inst✝¹ : AddMonoid G₂
inst✝ : AddMonoid G₃
f : G₁ →+ G₂
g : G₂ →+ G₃
x✝ : A[G₁]
⊢ (mapDomainAlgHom k A (g.comp f)) x✝ = ((mapDomainAlgHom k A g).comp (mapDomainAlgHom k A f)) x✝
state_after: no goals
Theorem: Polynomial.eval₂_eq_eval_map
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: induction p using Polynomial.induction_on' with
| h_add p q hp hq =>
  simp [hp, hq]
| h_monomial n r =>
  simp
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
⊢ eval₂ f x p = eval x (map f p)
state_after: no goals

tactic: simp [hp, hq]
state_before: case h_add
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q✝ r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
p q : R[X]
hp : eval₂ f x p = eval x (map f p)
hq : eval₂ f x q = eval x (map f q)
⊢ eval₂ f x (p + q) = eval x (map f (p + q))
state_after: no goals

tactic: simp
state_before: case h_monomial
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q r✝ : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
n : ℕ
r : R
⊢ eval₂ f x ((monomial n) r) = eval x (map f ((monomial n) r))
state_after: no goals
Theorem: Ideal.pi_quotient_surjective
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

tactic: obtain ⟨y, rfl⟩ := Ideal.quotientInfToPiQuotient_surj hf x
state_before: R✝ : Type u
S : Type v
F : Type w
inst✝³ : CommRing R✝
inst✝² : Semiring S
ι✝ : Type u_1
R : Type u_2
inst✝¹ : CommRing R
ι : Type u_3
inst✝ : Finite ι
I : ι → Ideal R
hf : Pairwise fun i j => IsCoprime (I i) (I j)
x : (i : ι) → R ⧸ I i
⊢ ∃ r, ∀ (i : ι), (Quotient.mk (I i)) r = x i
state_after: case intro
R✝ : Type u
S : Type v
F : Type w
inst✝³ : CommRing R✝
inst✝² : Semiring S
ι✝ : Type u_1
R : Type u_2
inst✝¹ : CommRing R
ι : Type u_3
inst✝ : Finite ι
I : ι → Ideal R
hf : Pairwise fun i j => IsCoprime (I i) (I j)
y : R ⧸ ⨅ i, I i
⊢ ∃ r, ∀ (i : ι), (Quotient.mk (I i)) r = (quotientInfToPiQuotient I) y i

tactic: obtain ⟨r, rfl⟩ := Ideal.Quotient.mk_surjective y
state_before: case intro
R✝ : Type u
S : Type v
F : Type w
inst✝³ : CommRing R✝
inst✝² : Semiring S
ι✝ : Type u_1
R : Type u_2
inst✝¹ : CommRing R
ι : Type u_3
inst✝ : Finite ι
I : ι → Ideal R
hf : Pairwise fun i j => IsCoprime (I i) (I j)
y : R ⧸ ⨅ i, I i
⊢ ∃ r, ∀ (i : ι), (Quotient.mk (I i)) r = (quotientInfToPiQuotient I) y i
state_after: case intro.intro
R✝ : Type u
S : Type v
F : Type w
inst✝³ : CommRing R✝
inst✝² : Semiring S
ι✝ : Type u_1
R : Type u_2
inst✝¹ : CommRing R
ι : Type u_3
inst✝ : Finite ι
I : ι → Ideal R
hf : Pairwise fun i j => IsCoprime (I i) (I j)
r : R
⊢ ∃ r_1, ∀ (i : ι), (Quotient.mk (I i)) r_1 = (quotientInfToPiQuotient I) ((Quotient.mk (⨅ i, I i)) r) i

tactic: exact ⟨r, fun i ↦ rfl⟩
state_before: case intro.intro
R✝ : Type u
S : Type v
F : Type w
inst✝³ : CommRing R✝
inst✝² : Semiring S
ι✝ : Type u_1
R : Type u_2
inst✝¹ : CommRing R
ι : Type u_3
inst✝ : Finite ι
I : ι → Ideal R
hf : Pairwise fun i j => IsCoprime (I i) (I j)
r : R
⊢ ∃ r_1, ∀ (i : ι), (Quotient.mk (I i)) r_1 = (quotientInfToPiQuotient I) ((Quotient.mk (⨅ i, I i)) r) i
state_after: no goals
Theorem: Set.sigma_singleton
File: Mathlib/Data/Set/Sigma.lean

tactic: ext ⟨x, y⟩
state_before: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x : (i : ι) × α i
i j : ι
a✝ : α i
a : (i : ι) → α i
⊢ (s.sigma fun i => {a i}) = (fun i => ⟨i, a i⟩) '' s
state_after: case h.mk
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a✝ : α i
a : (i : ι) → α i
x : ι
y : α x
⊢ (⟨x, y⟩ ∈ s.sigma fun i => {a i}) ↔ ⟨x, y⟩ ∈ (fun i => ⟨i, a i⟩) '' s

tactic: simp [and_left_comm, eq_comm]
state_before: case h.mk
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
β : ι → Type u_4
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
u : Set ((i : ι) × α i)
x✝ : (i : ι) × α i
i j : ι
a✝ : α i
a : (i : ι) → α i
x : ι
y : α x
⊢ (⟨x, y⟩ ∈ s.sigma fun i => {a i}) ↔ ⟨x, y⟩ ∈ (fun i => ⟨i, a i⟩) '' s
state_after: no goals
Theorem: ContinuousLinearMap.map_smulₛₗ₂
File: Mathlib/Analysis/NormedSpace/BoundedLinearMaps.lean

tactic: rw [f.map_smulₛₗ, smul_apply]
state_before: 𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁵ : NormedAddCommGroup E
inst✝¹⁴ : NormedSpace 𝕜 E
F : Type u_3
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_4
inst✝¹¹ : NormedAddCommGroup G
inst✝¹⁰ : NormedSpace 𝕜 G
R : Type u_5
𝕜₂ : Type u_6
𝕜' : Type u_7
inst✝⁹ : NontriviallyNormedField 𝕜'
inst✝⁸ : NontriviallyNormedField 𝕜₂
M : Type u_8
inst✝⁷ : TopologicalSpace M
σ₁₂ : 𝕜 →+* 𝕜₂
G' : Type u_9
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜₂ G'
inst✝⁴ : NormedSpace 𝕜' G'
inst✝³ : SMulCommClass 𝕜₂ 𝕜' G'
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
ρ₁₂ : R →+* 𝕜'
f : M →SL[ρ₁₂] F →SL[σ₁₂] G'
c : R
x : M
y : F
⊢ (f (c • x)) y = ρ₁₂ c • (f x) y
state_after: no goals
Theorem: YoungDiagram.transpose_eq_iff_eq_transpose
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: rintro rfl
state_before: case mpr
μ ν : YoungDiagram
⊢ μ = ν.transpose → μ.transpose = ν
state_after: case mpr
ν : YoungDiagram
⊢ ν.transpose.transpose = ν

tactic: simp
state_before: case mpr
ν : YoungDiagram
⊢ ν.transpose.transpose = ν
state_after: no goals
Theorem: SubMulAction.coe_pow
File: Mathlib/GroupTheory/GroupAction/SubMulAction/Pointwise.lean

tactic: rw [pow_one, pow_one]
state_before: R : Type u_1
M : Type u_2
inst✝⁴ : Monoid R
inst✝³ : MulAction R M
inst✝² : Monoid M
inst✝¹ : IsScalarTower R M M
inst✝ : SMulCommClass R M M
p : SubMulAction R M
x✝ : 1 ≠ 0
⊢ ↑(p ^ 1) = ↑p ^ 1
state_after: no goals

tactic: rw [pow_succ _ (n + 1), pow_succ _ (n + 1), coe_mul, coe_pow _ n.succ_ne_zero]
state_before: R : Type u_1
M : Type u_2
inst✝⁴ : Monoid R
inst✝³ : MulAction R M
inst✝² : Monoid M
inst✝¹ : IsScalarTower R M M
inst✝ : SMulCommClass R M M
p : SubMulAction R M
n : ℕ
x✝ : n + 2 ≠ 0
⊢ ↑(p ^ (n + 2)) = ↑p ^ (n + 2)
state_after: no goals
Theorem: List.mem_mem_ranges_iff_lt_sum
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: simp [mem_mem_ranges_iff_lt_natSum]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
l : List ℕ
n : ℕ
⊢ (∃ s ∈ l.ranges, n ∈ s) ↔ n < l.sum
state_after: no goals
Theorem: LieSubalgebra.mem_lieSpan
File: Mathlib/Algebra/Lie/Subalgebra.lean

tactic: change x ∈ (lieSpan R L s : Set L) ↔ _
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
s : Set L
x : L
⊢ x ∈ lieSpan R L s ↔ ∀ (K : LieSubalgebra R L), s ⊆ ↑K → x ∈ K
state_after: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
s : Set L
x : L
⊢ x ∈ ↑(lieSpan R L s) ↔ ∀ (K : LieSubalgebra R L), s ⊆ ↑K → x ∈ K

tactic: erw [sInf_coe]
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
s : Set L
x : L
⊢ x ∈ ↑(lieSpan R L s) ↔ ∀ (K : LieSubalgebra R L), s ⊆ ↑K → x ∈ K
state_after: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
s : Set L
x : L
⊢ x ∈ ⋂ s_1 ∈ {N | s ⊆ ↑N}, ↑s_1 ↔ ∀ (K : LieSubalgebra R L), s ⊆ ↑K → x ∈ K

tactic: exact Set.mem_iInter₂
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
s : Set L
x : L
⊢ x ∈ ⋂ s_1 ∈ {N | s ⊆ ↑N}, ↑s_1 ↔ ∀ (K : LieSubalgebra R L), s ⊆ ↑K → x ∈ K
state_after: no goals
Theorem: LinearMap.ker_prod
File: Mathlib/LinearAlgebra/Prod.lean

tactic: rw [ker, ← prod_bot, comap_prod_prod]
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_1
M₆ : Type u_2
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₄
f : M →ₗ[R] M₂
g : M →ₗ[R] M₃
⊢ ker (f.prod g) = ker f ⊓ ker g
state_after: 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_1
M₆ : Type u_2
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₄
f : M →ₗ[R] M₂
g : M →ₗ[R] M₃
⊢ comap f ⊥ ⊓ comap g ⊥ = ker f ⊓ ker g

tactic: rfl
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_1
M₆ : Type u_2
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₄
f : M →ₗ[R] M₂
g : M →ₗ[R] M₃
⊢ comap f ⊥ ⊓ comap g ⊥ = ker f ⊓ ker g
state_after: no goals
Theorem: EuclideanGeometry.angle_add_angle_add_angle_eq_pi
File: Mathlib/Geometry/Euclidean/Triangle.lean

tactic: rw [add_assoc, add_comm, add_comm (∠ p2 p3 p1), angle_comm p2 p3 p1]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h2 : p2 ≠ p1
h3 : p3 ≠ p1
⊢ ∠ p1 p2 p3 + ∠ p2 p3 p1 + ∠ p3 p1 p2 = π
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h2 : p2 ≠ p1
h3 : p3 ≠ p1
⊢ ∠ p3 p1 p2 + ∠ p1 p3 p2 + ∠ p1 p2 p3 = π

tactic: unfold angle
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h2 : p2 ≠ p1
h3 : p3 ≠ p1
⊢ ∠ p3 p1 p2 + ∠ p1 p3 p2 + ∠ p1 p2 p3 = π
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h2 : p2 ≠ p1
h3 : p3 ≠ p1
⊢ InnerProductGeometry.angle (p3 -ᵥ p1) (p2 -ᵥ p1) + InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3) +
      InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) =
    π

tactic: rw [← angle_neg_neg (p1 -ᵥ p3), ← angle_neg_neg (p1 -ᵥ p2), neg_vsub_eq_vsub_rev,
  neg_vsub_eq_vsub_rev, neg_vsub_eq_vsub_rev, neg_vsub_eq_vsub_rev, ←
  vsub_sub_vsub_cancel_right p3 p2 p1, ← vsub_sub_vsub_cancel_right p2 p3 p1]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h2 : p2 ≠ p1
h3 : p3 ≠ p1
⊢ InnerProductGeometry.angle (p3 -ᵥ p1) (p2 -ᵥ p1) + InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3) +
      InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) =
    π
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h2 : p2 ≠ p1
h3 : p3 ≠ p1
⊢ InnerProductGeometry.angle (p3 -ᵥ p1) (p2 -ᵥ p1) + InnerProductGeometry.angle (p3 -ᵥ p1) (p3 -ᵥ p1 - (p2 -ᵥ p1)) +
      InnerProductGeometry.angle (p2 -ᵥ p1) (p2 -ᵥ p1 - (p3 -ᵥ p1)) =
    π

tactic: exact angle_add_angle_sub_add_angle_sub_eq_pi (fun he => h3 (vsub_eq_zero_iff_eq.1 he)) fun he =>
  h2 (vsub_eq_zero_iff_eq.1 he)
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h2 : p2 ≠ p1
h3 : p3 ≠ p1
⊢ InnerProductGeometry.angle (p3 -ᵥ p1) (p2 -ᵥ p1) + InnerProductGeometry.angle (p3 -ᵥ p1) (p3 -ᵥ p1 - (p2 -ᵥ p1)) +
      InnerProductGeometry.angle (p2 -ᵥ p1) (p2 -ᵥ p1 - (p3 -ᵥ p1)) =
    π
state_after: no goals
Theorem: SequentialSpace.iSup
File: Mathlib/Topology/Sequences.lean

tactic: letI : TopologicalSpace X := ⨆ i, t i
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
ι : Sort u_3
t : ι → TopologicalSpace X
h : ∀ (i : ι), SequentialSpace X
⊢ SequentialSpace X
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
ι : Sort u_3
t : ι → TopologicalSpace X
h : ∀ (i : ι), SequentialSpace X
this : TopologicalSpace X := ⨆ i, t i
⊢ SequentialSpace X

tactic: refine ⟨fun s hs ↦ isClosed_iSup_iff.2 fun i ↦ ?_⟩
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
ι : Sort u_3
t : ι → TopologicalSpace X
h : ∀ (i : ι), SequentialSpace X
this : TopologicalSpace X := ⨆ i, t i
⊢ SequentialSpace X
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
ι : Sort u_3
t : ι → TopologicalSpace X
h : ∀ (i : ι), SequentialSpace X
this : TopologicalSpace X := ⨆ i, t i
s : Set X
hs : IsSeqClosed s
i : ι
⊢ IsClosed s

tactic: letI := t i
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
ι : Sort u_3
t : ι → TopologicalSpace X
h : ∀ (i : ι), SequentialSpace X
this : TopologicalSpace X := ⨆ i, t i
s : Set X
hs : IsSeqClosed s
i : ι
⊢ IsClosed s
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
ι : Sort u_3
t : ι → TopologicalSpace X
h : ∀ (i : ι), SequentialSpace X
this✝ : TopologicalSpace X := ⨆ i, t i
s : Set X
hs : IsSeqClosed s
i : ι
this : TopologicalSpace X := t i
⊢ IsClosed s

tactic: exact IsSeqClosed.isClosed fun u x hus hux ↦ hs hus <| hux.mono_right <| nhds_mono <| le_iSup _ _
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
ι : Sort u_3
t : ι → TopologicalSpace X
h : ∀ (i : ι), SequentialSpace X
this✝ : TopologicalSpace X := ⨆ i, t i
s : Set X
hs : IsSeqClosed s
i : ι
this : TopologicalSpace X := t i
⊢ IsClosed s
state_after: no goals
Theorem: ContDiffAt.contDiffOn
File: Mathlib/Analysis/Calculus/ContDiff/Defs.lean

tactic: simpa [nhdsWithin_univ] using h.contDiffOn hm
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
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 uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
m : ℕ
h : ContDiffAt 𝕜 n f x
hm : ↑m ≤ n
⊢ ∃ u ∈ 𝓝 x, ContDiffOn 𝕜 (↑m) f u
state_after: no goals
Theorem: discrim_le_zero_of_nonpos
File: Mathlib/Algebra/QuadraticDiscriminant.lean

tactic: simpa only [neg_mul, ← neg_add, neg_nonneg]
state_before: K : Type u_1
inst✝ : LinearOrderedField K
a b c : K
h : ∀ (x : K), a * x * x + b * x + c ≤ 0
⊢ ∀ (x : K), 0 ≤ -a * x * x + -b * x + -c
state_after: no goals
Theorem: MeasureTheory.IsStoppingTime.measurableSet_lt'
File: Mathlib/Probability/Process/Stopping.lean

tactic: have : {ω | τ ω < i} = {ω | τ ω ≤ i} \ {ω | τ ω = i} := by
  ext1 ω
  simp only [lt_iff_le_and_ne, Set.mem_setOf_eq, Set.mem_diff]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
⊢ MeasurableSet {ω | τ ω < i}
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
this : {ω | τ ω < i} = {ω | τ ω ≤ i} \ {ω | τ ω = i}
⊢ MeasurableSet {ω | τ ω < i}

tactic: rw [this]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
this : {ω | τ ω < i} = {ω | τ ω ≤ i} \ {ω | τ ω = i}
⊢ MeasurableSet {ω | τ ω < i}
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
this : {ω | τ ω < i} = {ω | τ ω ≤ i} \ {ω | τ ω = i}
⊢ MeasurableSet ({ω | τ ω ≤ i} \ {ω | τ ω = i})

tactic: exact (hτ.measurableSet_le' i).diff (hτ.measurableSet_eq' i)
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
this : {ω | τ ω < i} = {ω | τ ω ≤ i} \ {ω | τ ω = i}
⊢ MeasurableSet ({ω | τ ω ≤ i} \ {ω | τ ω = i})
state_after: no goals

tactic: ext1 ω
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
⊢ {ω | τ ω < i} = {ω | τ ω ≤ i} \ {ω | τ ω = i}
state_after: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
ω : Ω
⊢ ω ∈ {ω | τ ω < i} ↔ ω ∈ {ω | τ ω ≤ i} \ {ω | τ ω = i}

tactic: simp only [lt_iff_le_and_ne, Set.mem_setOf_eq, Set.mem_diff]
state_before: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
ω : Ω
⊢ ω ∈ {ω | τ ω < i} ↔ ω ∈ {ω | τ ω ≤ i} \ {ω | τ ω = i}
state_after: no goals