1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: LieIdeal.map_le_iff_le_comap
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [map_le]
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
⊢ map f I ≤ J ↔ I ≤ comap f J
state_after: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
⊢ ⇑f '' ↑I ⊆ ↑J ↔ I ≤ comap f J

tactic: exact Set.image_subset_iff
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
⊢ ⇑f '' ↑I ⊆ ↑J ↔ I ≤ comap f J
state_after: no goals
Theorem: List.rel_mem
File: Mathlib/Data/List/Forall2.lean

tactic: simp only [not_mem_nil]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
hr : BiUnique R
a : α
b : β
x✝ : R a b
⊢ (fun x x_1 => x ∈ x_1) a [] ↔ (fun x x_1 => x ∈ x_1) b []
state_after: no goals

tactic: simp only [mem_cons]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
hr : BiUnique R
a : α
b : β
h : R a b
a' : α
as : List α
b' : β
bs : List β
h₁ : R a' b'
h₂ : Forall₂ R as bs
⊢ (fun x x_1 => x ∈ x_1) a (a' :: as) ↔ (fun x x_1 => x ∈ x_1) b (b' :: bs)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
hr : BiUnique R
a : α
b : β
h : R a b
a' : α
as : List α
b' : β
bs : List β
h₁ : R a' b'
h₂ : Forall₂ R as bs
⊢ a = a' ∨ a ∈ as ↔ b = b' ∨ b ∈ bs

tactic: exact rel_or (rel_eq hr h h₁) (rel_mem hr h h₂)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
hr : BiUnique R
a : α
b : β
h : R a b
a' : α
as : List α
b' : β
bs : List β
h₁ : R a' b'
h₂ : Forall₂ R as bs
⊢ a = a' ∨ a ∈ as ↔ b = b' ∨ b ∈ bs
state_after: no goals
Theorem: EuclideanGeometry.inversion_eq_center'
File: Mathlib/Geometry/Euclidean/Inversion/Basic.lean

tactic: by_cases hR : R = 0 <;> simp [inversion_eq_center, hR]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
a b c d x y z : P
r R : ℝ
⊢ inversion c R x = c ↔ x = c ∨ R = 0
state_after: no goals
Theorem: Complex.sin_eq
File: Mathlib/Data/Complex/Exponential.lean

tactic: convert sin_add_mul_I z.re z.im
state_before: x y z : ℂ
⊢ sin z = sin ↑z.re * cosh ↑z.im + cos ↑z.re * sinh ↑z.im * I
state_after: case h.e'_2.h.e'_1
x y z : ℂ
⊢ z = ↑z.re + ↑z.im * I

tactic: exact (re_add_im z).symm
state_before: case h.e'_2.h.e'_1
x y z : ℂ
⊢ z = ↑z.re + ↑z.im * I
state_after: no goals
Theorem: AlgebraicGeometry.quasiSeparated_eq_diagonal_is_quasiCompact
File: Mathlib/AlgebraicGeometry/Morphisms/QuasiSeparated.lean

tactic: ext
state_before: X Y : Scheme
f : X ⟶ Y
⊢ @QuasiSeparated = MorphismProperty.diagonal @QuasiCompact
state_after: case h.h.h.a
X Y : Scheme
f : X ⟶ Y
x✝² x✝¹ : Scheme
x✝ : x✝² ⟶ x✝¹
⊢ QuasiSeparated x✝ ↔ MorphismProperty.diagonal (@QuasiCompact) x✝

tactic: exact quasiSeparated_iff _
state_before: case h.h.h.a
X Y : Scheme
f : X ⟶ Y
x✝² x✝¹ : Scheme
x✝ : x✝² ⟶ x✝¹
⊢ QuasiSeparated x✝ ↔ MorphismProperty.diagonal (@QuasiCompact) x✝
state_after: no goals
Theorem: AlgebraicGeometry.topologically_isClosedMap_respectsIso
File: Mathlib/AlgebraicGeometry/Morphisms/UniversallyClosed.lean

tactic: apply MorphismProperty.respectsIso_of_isStableUnderComposition
state_before: X Y : Scheme
f : X ⟶ Y
⊢ (topologically @IsClosedMap).RespectsIso
state_after: case hP
X Y : Scheme
f : X ⟶ Y
⊢ isomorphisms Scheme ≤ topologically @IsClosedMap

tactic: intro _ _ f hf
state_before: case hP
X Y : Scheme
f : X ⟶ Y
⊢ isomorphisms Scheme ≤ topologically @IsClosedMap
state_after: case hP
X Y : Scheme
f✝ : X ⟶ Y
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
hf : isomorphisms Scheme f
⊢ topologically (@IsClosedMap) f

tactic: have : IsIso f := hf
state_before: case hP
X Y : Scheme
f✝ : X ⟶ Y
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
hf : isomorphisms Scheme f
⊢ topologically (@IsClosedMap) f
state_after: case hP
X Y : Scheme
f✝ : X ⟶ Y
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
hf : isomorphisms Scheme f
this : IsIso f
⊢ topologically (@IsClosedMap) f

tactic: exact (TopCat.homeoOfIso (Scheme.forgetToTop.mapIso (asIso f))).isClosedMap
state_before: case hP
X Y : Scheme
f✝ : X ⟶ Y
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
hf : isomorphisms Scheme f
this : IsIso f
⊢ topologically (@IsClosedMap) f
state_after: no goals
Theorem: SimpleGraph.edgeFinset_sup
File: Mathlib/Combinatorics/SimpleGraph/Finite.lean

tactic: simp [edgeFinset]
state_before: V : Type u_1
G : SimpleGraph V
e : Sym2 V
G₁ G₂ : SimpleGraph V
inst✝⁴ : Fintype ↑G.edgeSet
inst✝³ : Fintype ↑G₁.edgeSet
inst✝² : Fintype ↑G₂.edgeSet
inst✝¹ : Fintype ↑(G₁ ⊔ G₂).edgeSet
inst✝ : DecidableEq V
⊢ (G₁ ⊔ G₂).edgeFinset = G₁.edgeFinset ∪ G₂.edgeFinset
state_after: no goals
Theorem: CoxeterSystem.isRightInversion_simple_iff_isRightDescent
File: Mathlib/GroupTheory/Coxeter/Inversion.lean

tactic: simp [IsRightInversion, IsRightDescent, cs.isReflection_simple i]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.IsRightInversion w (cs.simple i) ↔ cs.IsRightDescent w i
state_after: no goals
Theorem: Fin.cast_eq_cast
File: Mathlib/Data/Fin/Basic.lean

tactic: subst h
state_before: n m : ℕ
h : n = m
⊢ cast h = _root_.cast ⋯
state_after: n : ℕ
⊢ cast ⋯ = _root_.cast ⋯

tactic: ext
state_before: n : ℕ
⊢ cast ⋯ = _root_.cast ⋯
state_after: case h.h
n : ℕ
x✝ : Fin n
⊢ ↑(cast ⋯ x✝) = ↑(_root_.cast ⋯ x✝)

tactic: rfl
state_before: case h.h
n : ℕ
x✝ : Fin n
⊢ ↑(cast ⋯ x✝) = ↑(_root_.cast ⋯ x✝)
state_after: no goals
Theorem: MultilinearMap.bound_of_shell
File: Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

tactic: rw [map_coord_zero f _ (norm_eq_zero.1 h), norm_zero]
state_before: 𝕜 : Type u
ι : Type v
E : ι → Type wE
G : Type wG
inst✝⁵ : Fintype ι
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : (i : ι) → NormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹ : SeminormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : MultilinearMap 𝕜 E G
ε : ι → ℝ
C : ℝ
hε : ∀ (i : ι), 0 < ε i
c : ι → 𝕜
hc : ∀ (i : ι), 1 < ‖c i‖
hf : ∀ (m : (i : ι) → E i), (∀ (i : ι), ε i / ‖c i‖ ≤ ‖m i‖) → (∀ (i : ι), ‖m i‖ < ε i) → ‖f m‖ ≤ C * ∏ i : ι, ‖m i‖
m m✝ : (i : ι) → E i
i✝ : ι
h : ‖m✝ i✝‖ = 0
⊢ ‖f m✝‖ = 0
state_after: no goals
Theorem: Set.iUnion_singleton_eq_range
File: Mathlib/Data/Set/Lattice.lean

tactic: ext x
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
α : Type u_11
β : Type u_12
f : α → β
⊢ ⋃ x, {f x} = range f
state_after: case h
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
α : Type u_11
β : Type u_12
f : α → β
x : β
⊢ x ∈ ⋃ x, {f x} ↔ x ∈ range f

tactic: simp [@eq_comm _ x]
state_before: case h
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
α : Type u_11
β : Type u_12
f : α → β
x : β
⊢ x ∈ ⋃ x, {f x} ↔ x ∈ range f
state_after: no goals
Theorem: Function.Commute.iterate_pos_le_iff_map_le
File: Mathlib/Order/Iterate.lean

tactic: simpa only [not_lt] using not_congr (h.symm.iterate_pos_lt_iff_map_lt' hg hf hn)
state_before: α : Type u_1
inst✝ : LinearOrder α
f g : α → α
h : Commute f g
hf : Monotone f
hg : StrictMono g
x : α
n : ℕ
hn : 0 < n
⊢ f^[n] x ≤ g^[n] x ↔ f x ≤ g x
state_after: no goals
Theorem: Sym2.other_spec'
File: Mathlib/Data/Sym/Sym2.lean

tactic: induction z
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
inst✝ : DecidableEq α
a : α
z : Sym2 α
h : a ∈ z
⊢ s(a, Mem.other' h) = z
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
inst✝ : DecidableEq α
a x✝ y✝ : α
h : a ∈ s(x✝, y✝)
⊢ s(a, Mem.other' h) = s(x✝, y✝)

tactic: have h' := mem_iff.mp h
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
inst✝ : DecidableEq α
a x✝ y✝ : α
h : a ∈ s(x✝, y✝)
⊢ s(a, Mem.other' h) = s(x✝, y✝)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
inst✝ : DecidableEq α
a x✝ y✝ : α
h : a ∈ s(x✝, y✝)
h' : a = x✝ ∨ a = y✝
⊢ s(a, Mem.other' h) = s(x✝, y✝)

tactic: aesop (add norm unfold [Sym2.rec, Quot.rec]) (rule_sets := [Sym2])
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
inst✝ : DecidableEq α
a x✝ y✝ : α
h : a ∈ s(x✝, y✝)
h' : a = x✝ ∨ a = y✝
⊢ s(a, Mem.other' h) = s(x✝, y✝)
state_after: no goals
Theorem: Nat.pow_pred_clog_lt_self
File: Mathlib/Data/Nat/Log.lean

tactic: rw [← not_le, le_pow_iff_clog_le hb, not_le]
state_before: b : ℕ
hb : 1 < b
x : ℕ
hx : 1 < x
⊢ b ^ (clog b x).pred < x
state_after: b : ℕ
hb : 1 < b
x : ℕ
hx : 1 < x
⊢ (clog b x).pred < clog b x

tactic: exact pred_lt (clog_pos hb hx).ne'
state_before: b : ℕ
hb : 1 < b
x : ℕ
hx : 1 < x
⊢ (clog b x).pred < clog b x
state_after: no goals
Theorem: ZMod.eisenstein_lemma_aux
File: Mathlib/NumberTheory/LegendreSymbol/GaussEisensteinLemmas.lean

tactic: simpa [add_left_comm, sub_eq_add_neg, ← mul_sum, mul_comm, ha2, Nat.cast_sum,
  add_neg_eq_iff_eq_add.symm, neg_eq_self_mod_two, add_assoc] using
  Eq.symm (eisenstein_lemma_aux₁ p hap)
state_before: p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Fact (p % 2 = 1)
a : ℕ
ha2✝ : a % 2 = 1
hap : ↑a ≠ 0
ha2 : ↑a = ↑1
⊢ ↑(filter (fun x => p / 2 < (↑a * ↑x).val) (Ico 1 (p / 2).succ)).card - ↑(∑ x ∈ Ico 1 (p / 2).succ, x * a / p) = 0
state_after: no goals
Theorem: FreeMagma.toFreeSemigroup_comp_map
File: Mathlib/Algebra/Free.lean

tactic: ext1
state_before: α : Type u
β : Type v
f : α → β
⊢ toFreeSemigroup.comp (map f) = (FreeSemigroup.map f).comp toFreeSemigroup
state_after: case h
α : Type u
β : Type v
f : α → β
⊢ ⇑(toFreeSemigroup.comp (map f)) ∘ of = ⇑((FreeSemigroup.map f).comp toFreeSemigroup) ∘ of

tactic: rfl
state_before: case h
α : Type u
β : Type v
f : α → β
⊢ ⇑(toFreeSemigroup.comp (map f)) ∘ of = ⇑((FreeSemigroup.map f).comp toFreeSemigroup) ∘ of
state_after: no goals
Theorem: EMetric.edist_le_infEdist_add_ediam
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp_rw [infEdist, ENNReal.iInf_add]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t : Set α
Φ : α → β
hy : y ∈ s
⊢ edist x y ≤ infEdist x s + diam s
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t : Set α
Φ : α → β
hy : y ∈ s
⊢ edist x y ≤ ⨅ i ∈ s, edist x i + diam s

tactic: refine le_iInf₂ fun i hi => ?_
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t : Set α
Φ : α → β
hy : y ∈ s
⊢ edist x y ≤ ⨅ i ∈ s, edist x i + diam s
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t : Set α
Φ : α → β
hy : y ∈ s
i : α
hi : i ∈ s
⊢ edist x y ≤ edist x i + diam s

tactic: calc
  edist x y ≤ edist x i + edist i y := edist_triangle _ _ _
  _ ≤ edist x i + diam s := add_le_add le_rfl (edist_le_diam_of_mem hi hy)
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t : Set α
Φ : α → β
hy : y ∈ s
i : α
hi : i ∈ s
⊢ edist x y ≤ edist x i + diam s
state_after: no goals
Theorem: MeasureTheory.lintegral_of_isEmpty
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: have : Subsingleton (Measure α) := inferInstance
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α✝
μ✝ ν : Measure α✝
α : Type u_5
inst✝¹ : MeasurableSpace α
inst✝ : IsEmpty α
μ : Measure α
f : α → ℝ≥0∞
⊢ ∫⁻ (x : α), f x ∂μ = 0
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α✝
μ✝ ν : Measure α✝
α : Type u_5
inst✝¹ : MeasurableSpace α
inst✝ : IsEmpty α
μ : Measure α
f : α → ℝ≥0∞
this : Subsingleton (Measure α)
⊢ ∫⁻ (x : α), f x ∂μ = 0

tactic: convert lintegral_zero_measure f
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α✝
μ✝ ν : Measure α✝
α : Type u_5
inst✝¹ : MeasurableSpace α
inst✝ : IsEmpty α
μ : Measure α
f : α → ℝ≥0∞
this : Subsingleton (Measure α)
⊢ ∫⁻ (x : α), f x ∂μ = 0
state_after: no goals
Theorem: KaehlerDifferential.mapBaseChange_surjective
File: Mathlib/RingTheory/Kaehler/Basic.lean

tactic: have := subsingleton_of_surjective A B h
state_before: R : Type u
S : Type v
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
M : Type u_1
inst✝¹² : AddCommGroup M
inst✝¹¹ : Module R M
inst✝¹⁰ : Module S M
inst✝⁹ : IsScalarTower R S M
A : Type u_2
B : Type u_3
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra R B
inst✝⁴ : Algebra A B
inst✝³ : Algebra S B
inst✝² : IsScalarTower R A B
inst✝¹ : IsScalarTower R S B
inst✝ : SMulCommClass S A B
h : Function.Surjective ⇑(algebraMap A B)
⊢ Function.Surjective ⇑(mapBaseChange R A B)
state_after: R : Type u
S : Type v
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
M : Type u_1
inst✝¹² : AddCommGroup M
inst✝¹¹ : Module R M
inst✝¹⁰ : Module S M
inst✝⁹ : IsScalarTower R S M
A : Type u_2
B : Type u_3
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra R B
inst✝⁴ : Algebra A B
inst✝³ : Algebra S B
inst✝² : IsScalarTower R A B
inst✝¹ : IsScalarTower R S B
inst✝ : SMulCommClass S A B
h : Function.Surjective ⇑(algebraMap A B)
this : Subsingleton (Ω[B⁄A])
⊢ Function.Surjective ⇑(mapBaseChange R A B)

tactic: rw [← LinearMap.range_eq_top, KaehlerDifferential.range_mapBaseChange, ← top_le_iff]
state_before: R : Type u
S : Type v
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
M : Type u_1
inst✝¹² : AddCommGroup M
inst✝¹¹ : Module R M
inst✝¹⁰ : Module S M
inst✝⁹ : IsScalarTower R S M
A : Type u_2
B : Type u_3
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra R B
inst✝⁴ : Algebra A B
inst✝³ : Algebra S B
inst✝² : IsScalarTower R A B
inst✝¹ : IsScalarTower R S B
inst✝ : SMulCommClass S A B
h : Function.Surjective ⇑(algebraMap A B)
this : Subsingleton (Ω[B⁄A])
⊢ Function.Surjective ⇑(mapBaseChange R A B)
state_after: R : Type u
S : Type v
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
M : Type u_1
inst✝¹² : AddCommGroup M
inst✝¹¹ : Module R M
inst✝¹⁰ : Module S M
inst✝⁹ : IsScalarTower R S M
A : Type u_2
B : Type u_3
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra R B
inst✝⁴ : Algebra A B
inst✝³ : Algebra S B
inst✝² : IsScalarTower R A B
inst✝¹ : IsScalarTower R S B
inst✝ : SMulCommClass S A B
h : Function.Surjective ⇑(algebraMap A B)
this : Subsingleton (Ω[B⁄A])
⊢ ⊤ ≤ LinearMap.ker (map R A B B)

tactic: exact fun x _ ↦ Subsingleton.elim _ _
state_before: R : Type u
S : Type v
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
M : Type u_1
inst✝¹² : AddCommGroup M
inst✝¹¹ : Module R M
inst✝¹⁰ : Module S M
inst✝⁹ : IsScalarTower R S M
A : Type u_2
B : Type u_3
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra R B
inst✝⁴ : Algebra A B
inst✝³ : Algebra S B
inst✝² : IsScalarTower R A B
inst✝¹ : IsScalarTower R S B
inst✝ : SMulCommClass S A B
h : Function.Surjective ⇑(algebraMap A B)
this : Subsingleton (Ω[B⁄A])
⊢ ⊤ ≤ LinearMap.ker (map R A B B)
state_after: no goals
Theorem: Matrix.det_one_add_mul_comm
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

tactic: rw [det_fromBlocks_one₂₂, Matrix.neg_mul, sub_neg_eq_add]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m n α
B : Matrix n m α
⊢ (1 + A * B).det = (fromBlocks 1 (-A) B 1).det
state_after: no goals

tactic: rw [det_fromBlocks_one₁₁, Matrix.mul_neg, sub_neg_eq_add]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m n α
B : Matrix n m α
⊢ (fromBlocks 1 (-A) B 1).det = (1 + B * A).det
state_after: no goals
Theorem: Finset.filter_comm
File: Mathlib/Data/Finset/Basic.lean

tactic: simp_rw [filter_filter, and_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
s✝ s : Finset α
⊢ filter q (filter p s) = filter p (filter q s)
state_after: no goals
Theorem: List.length_eraseP_of_mem
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: let ⟨_, l₁, l₂, _, _, e₁, e₂⟩ := exists_of_eraseP al pa
state_before: α✝ : Type u_1
a : α✝
l : List α✝
p : α✝ → Bool
al : a ∈ l
pa : p a = true
⊢ (eraseP p l).length = l.length.pred
state_after: α✝ : Type u_1
a : α✝
l : List α✝
p : α✝ → Bool
al : a ∈ l
pa : p a = true
w✝ : α✝
l₁ l₂ : List α✝
left✝¹ : ∀ (b : α✝), b ∈ l₁ → ¬p b = true
left✝ : p w✝ = true
e₁ : l = l₁ ++ w✝ :: l₂
e₂ : eraseP p l = l₁ ++ l₂
⊢ (eraseP p l).length = l.length.pred

tactic: rw [e₂]
state_before: α✝ : Type u_1
a : α✝
l : List α✝
p : α✝ → Bool
al : a ∈ l
pa : p a = true
w✝ : α✝
l₁ l₂ : List α✝
left✝¹ : ∀ (b : α✝), b ∈ l₁ → ¬p b = true
left✝ : p w✝ = true
e₁ : l = l₁ ++ w✝ :: l₂
e₂ : eraseP p l = l₁ ++ l₂
⊢ (eraseP p l).length = l.length.pred
state_after: α✝ : Type u_1
a : α✝
l : List α✝
p : α✝ → Bool
al : a ∈ l
pa : p a = true
w✝ : α✝
l₁ l₂ : List α✝
left✝¹ : ∀ (b : α✝), b ∈ l₁ → ¬p b = true
left✝ : p w✝ = true
e₁ : l = l₁ ++ w✝ :: l₂
e₂ : eraseP p l = l₁ ++ l₂
⊢ (l₁ ++ l₂).length = l.length.pred

tactic: simp [length_append, e₁]
state_before: α✝ : Type u_1
a : α✝
l : List α✝
p : α✝ → Bool
al : a ∈ l
pa : p a = true
w✝ : α✝
l₁ l₂ : List α✝
left✝¹ : ∀ (b : α✝), b ∈ l₁ → ¬p b = true
left✝ : p w✝ = true
e₁ : l = l₁ ++ w✝ :: l₂
e₂ : eraseP p l = l₁ ++ l₂
⊢ (l₁ ++ l₂).length = l.length.pred
state_after: α✝ : Type u_1
a : α✝
l : List α✝
p : α✝ → Bool
al : a ∈ l
pa : p a = true
w✝ : α✝
l₁ l₂ : List α✝
left✝¹ : ∀ (b : α✝), b ∈ l₁ → ¬p b = true
left✝ : p w✝ = true
e₁ : l = l₁ ++ w✝ :: l₂
e₂ : eraseP p l = l₁ ++ l₂
⊢ l₁.length + l₂.length = l₁.length + (l₂.length + 1) - 1

tactic: rfl
state_before: α✝ : Type u_1
a : α✝
l : List α✝
p : α✝ → Bool
al : a ∈ l
pa : p a = true
w✝ : α✝
l₁ l₂ : List α✝
left✝¹ : ∀ (b : α✝), b ∈ l₁ → ¬p b = true
left✝ : p w✝ = true
e₁ : l = l₁ ++ w✝ :: l₂
e₂ : eraseP p l = l₁ ++ l₂
⊢ l₁.length + l₂.length = l₁.length + (l₂.length + 1) - 1
state_after: no goals
Theorem: Set.preimage_iUnion
File: Mathlib/Data/Set/Lattice.lean

tactic: simp [preimage]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : ι → Set β
⊢ ∀ (x : α), x ∈ f ⁻¹' ⋃ i, s i ↔ x ∈ ⋃ i, f ⁻¹' s i
state_after: no goals
Theorem: dimH_range_le_of_locally_holder_on
File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

tactic: rw [← image_univ]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
C K r✝ : ℝ≥0
f✝ : X → Y
s t : Set X
inst✝ : SecondCountableTopology X
r : ℝ≥0
f : X → Y
hr : 0 < r
hf : ∀ (x : X), ∃ C, ∃ s ∈ 𝓝 x, HolderOnWith C r f s
⊢ dimH (range f) ≤ dimH univ / ↑r
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
C K r✝ : ℝ≥0
f✝ : X → Y
s t : Set X
inst✝ : SecondCountableTopology X
r : ℝ≥0
f : X → Y
hr : 0 < r
hf : ∀ (x : X), ∃ C, ∃ s ∈ 𝓝 x, HolderOnWith C r f s
⊢ dimH (f '' univ) ≤ dimH univ / ↑r

tactic: refine dimH_image_le_of_locally_holder_on hr fun x _ => ?_
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
C K r✝ : ℝ≥0
f✝ : X → Y
s t : Set X
inst✝ : SecondCountableTopology X
r : ℝ≥0
f : X → Y
hr : 0 < r
hf : ∀ (x : X), ∃ C, ∃ s ∈ 𝓝 x, HolderOnWith C r f s
⊢ dimH (f '' univ) ≤ dimH univ / ↑r
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
C K r✝ : ℝ≥0
f✝ : X → Y
s t : Set X
inst✝ : SecondCountableTopology X
r : ℝ≥0
f : X → Y
hr : 0 < r
hf : ∀ (x : X), ∃ C, ∃ s ∈ 𝓝 x, HolderOnWith C r f s
x : X
x✝ : x ∈ univ
⊢ ∃ C, ∃ t ∈ 𝓝[univ] x, HolderOnWith C r f t

tactic: simpa only [exists_prop, nhdsWithin_univ] using hf x
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
C K r✝ : ℝ≥0
f✝ : X → Y
s t : Set X
inst✝ : SecondCountableTopology X
r : ℝ≥0
f : X → Y
hr : 0 < r
hf : ∀ (x : X), ∃ C, ∃ s ∈ 𝓝 x, HolderOnWith C r f s
x : X
x✝ : x ∈ univ
⊢ ∃ C, ∃ t ∈ 𝓝[univ] x, HolderOnWith C r f t
state_after: no goals
Theorem: quasiIsoAt_iff'
File: Mathlib/Algebra/Homology/QuasiIso.lean

tactic: rw [quasiIsoAt_iff]
state_before: ι✝ : Type u_1
ι : Type u_2
C : Type u
inst✝⁵ : Category.{v, u} C
inst✝⁴ : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i j k : ι
hi : c.prev j = i
hk : c.next j = k
inst✝³ : K.HasHomology j
inst✝² : L.HasHomology j
inst✝¹ : (K.sc' i j k).HasHomology
inst✝ : (L.sc' i j k).HasHomology
⊢ QuasiIsoAt f j ↔ ShortComplex.QuasiIso ((shortComplexFunctor' C c i j k).map f)
state_after: ι✝ : Type u_1
ι : Type u_2
C : Type u
inst✝⁵ : Category.{v, u} C
inst✝⁴ : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i j k : ι
hi : c.prev j = i
hk : c.next j = k
inst✝³ : K.HasHomology j
inst✝² : L.HasHomology j
inst✝¹ : (K.sc' i j k).HasHomology
inst✝ : (L.sc' i j k).HasHomology
⊢ ShortComplex.QuasiIso ((shortComplexFunctor C c j).map f) ↔
    ShortComplex.QuasiIso ((shortComplexFunctor' C c i j k).map f)

tactic: exact ShortComplex.quasiIso_iff_of_arrow_mk_iso _ _
  (Arrow.isoOfNatIso (natIsoSc' C c i j k hi hk) (Arrow.mk f))
state_before: ι✝ : Type u_1
ι : Type u_2
C : Type u
inst✝⁵ : Category.{v, u} C
inst✝⁴ : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i j k : ι
hi : c.prev j = i
hk : c.next j = k
inst✝³ : K.HasHomology j
inst✝² : L.HasHomology j
inst✝¹ : (K.sc' i j k).HasHomology
inst✝ : (L.sc' i j k).HasHomology
⊢ ShortComplex.QuasiIso ((shortComplexFunctor C c j).map f) ↔
    ShortComplex.QuasiIso ((shortComplexFunctor' C c i j k).map f)
state_after: no goals