tasksource/leandojo huggingface dataset:
Theorem: Algebra.TensorProduct.basisAux_tmul
File: Mathlib/RingTheory/TensorProduct.lean

tactic: ext
state_before: k : Type u_3
inst✝⁴ : CommRing k
R : Type u_1
inst✝³ : Ring R
inst✝² : Algebra k R
M : Type u_4
inst✝¹ : AddCommMonoid M
inst✝ : Module k M
ι : Type u_2
b : Basis ι k M
r : R
m : M
⊢ ↑(basisAux R b) (r ⊗ₜ[k] m) = r • Finsupp.mapRange ↑(algebraMap k R) (_ : ↑(algebraMap k R) 0 = 0) (↑b.repr m)

tactic: simp [basisAux, ← Algebra.commutes, Algebra.smul_def]
state_before: case h
k : Type u_3
inst✝⁴ : CommRing k
R : Type u_1
inst✝³ : Ring R
inst✝² : Algebra k R
M : Type u_4
inst✝¹ : AddCommMonoid M
inst✝ : Module k M
ι : Type u_2
b : Basis ι k M
r : R
m : M
a✝ : ι
⊢ ↑(↑(basisAux R b) (r ⊗ₜ[k] m)) a✝ =
    ↑(r • Finsupp.mapRange ↑(algebraMap k R) (_ : ↑(algebraMap k R) 0 = 0) (↑b.repr m)) a✝
Theorem: eq_of_forall_symmetric
File: Mathlib/Topology/UniformSpace/Separation.lean

tactic: simpa [and_imp]
state_before: α✝ : Type u
β : Type v
γ : Type w
inst✝⁴ : UniformSpace α✝
inst✝³ : UniformSpace β
inst✝² : UniformSpace γ
α : Type u_1
inst✝¹ : UniformSpace α
inst✝ : SeparatedSpace α
x y : α
h : ∀ {V : Set (α × α)}, V ∈ 𝓤 α → SymmetricRel V → (x, y) ∈ V
⊢ ∀ {i : Set (α × α)}, i ∈ 𝓤 α ∧ SymmetricRel i → (x, y) ∈ id i
Theorem: Set.Icc.coe_eq_zero
File: Mathlib/Data/Set/Intervals/Instances.lean

tactic: symm
state_before: α : Type u_1
inst✝ : OrderedSemiring α
x : ↑(Icc 0 1)
⊢ ↑x = 0 ↔ x = 0

tactic: exact Subtype.ext_iff
state_before: α : Type u_1
inst✝ : OrderedSemiring α
x : ↑(Icc 0 1)
⊢ x = 0 ↔ ↑x = 0
Theorem: hasFDerivAtFilter_id
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: simp
state_before: 𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type ?u.658148
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.658243
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.658338
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s t : Set E
L✝ L₁ L₂ : Filter E
x : E
L : Filter E
⊢ ∀ (x_1 : E), 0 = _root_.id x_1 - _root_.id x - ↑(ContinuousLinearMap.id 𝕜 E) (x_1 - x)
Theorem: Submodule.span_eq_iSup_of_singleton_spans
File: Mathlib/LinearAlgebra/Span.lean

tactic: simp only [← span_iUnion, Set.biUnion_of_singleton s]
state_before: R : Type u_2
R₂ : Type ?u.64934
K : Type ?u.64937
M : Type u_1
M₂ : Type ?u.64943
V : Type ?u.64946
S : Type ?u.64949
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s✝ t s : Set M
⊢ span R s = ⨆ (x : M) (_ : x ∈ s), span R {x}
Theorem: Set.chainHeight_eq_top_iff
File: Mathlib/Order/Height.lean

tactic: refine' ⟨fun h n ↦ le_chainHeight_iff.1 (le_top.trans_eq h.symm), fun h ↦ _⟩
state_before: α : Type u_1
β : Type ?u.7005
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
⊢ chainHeight s = ⊤ ↔ ∀ (n : ℕ), ∃ l, l ∈ subchain s ∧ length l = n

tactic: contrapose! h
state_before: α : Type u_1
β : Type ?u.7005
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
h : ∀ (n : ℕ), ∃ l, l ∈ subchain s ∧ length l = n
⊢ chainHeight s = ⊤

tactic: obtain ⟨n, hn⟩ := WithTop.ne_top_iff_exists.1 h
state_before: α : Type u_1
β : Type ?u.7005
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
h : chainHeight s ≠ ⊤
⊢ ∃ n, ∀ (l : List α), l ∈ subchain s → length l ≠ n

tactic: exact ⟨n + 1, fun l hs ↦ (Nat.lt_succ_iff.2 <| Nat.cast_le.1 <|
  (length_le_chainHeight_of_mem_subchain hs).trans_eq hn.symm).ne⟩
state_before: case intro
α : Type u_1
β : Type ?u.7005
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
h : chainHeight s ≠ ⊤
n : ℕ
hn : ↑n = chainHeight s
⊢ ∃ n, ∀ (l : List α), l ∈ subchain s → length l ≠ n
Theorem: Subgroup.commutator_commutator_eq_bot_of_rotate
File: Mathlib/GroupTheory/Commutator.lean

tactic: simp_rw [commutator_eq_bot_iff_le_centralizer, commutator_le,
  mem_centralizer_iff_commutator_eq_one, ← commutatorElement_def] at h1 h2⊢
state_before: G : Type u_1
G' : Type ?u.56694
F : Type ?u.56697
inst✝² : Group G
inst✝¹ : Group G'
inst✝ : MonoidHomClass F G G'
f : F
g₁ g₂ g₃ g : G
H₁ H₂ H₃ K₁ K₂ : Subgroup G
h1 : ⁅⁅H₂, H₃⁆, H₁⁆ = ⊥
h2 : ⁅⁅H₃, H₁⁆, H₂⁆ = ⊥
⊢ ⁅⁅H₁, H₂⁆, H₃⁆ = ⊥

tactic: intro x hx y hy z hz
state_before: G : Type u_1
G' : Type ?u.56694
F : Type ?u.56697
inst✝² : Group G
inst✝¹ : Group G'
inst✝ : MonoidHomClass F G G'
f : F
g₁ g₂ g₃ g : G
H₁ H₂ H₃ K₁ K₂ : Subgroup G
h1 : ∀ (g₁ : G), g₁ ∈ H₂ → ∀ (g₂ : G), g₂ ∈ H₃ → ∀ (h : G), h ∈ H₁ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
h2 : ∀ (g₁ : G), g₁ ∈ H₃ → ∀ (g₂ : G), g₂ ∈ H₁ → ∀ (h : G), h ∈ H₂ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
⊢ ∀ (g₁ : G), g₁ ∈ H₁ → ∀ (g₂ : G), g₂ ∈ H₂ → ∀ (h : G), h ∈ H₃ → ⁅h, ⁅g₁, g₂⁆⁆ = 1

tactic: trans x * z * ⁅y, ⁅z⁻¹, x⁻¹⁆⁆⁻¹ * z⁻¹ * y * ⁅x⁻¹, ⁅y⁻¹, z⁆⁆⁻¹ * y⁻¹ * x⁻¹
state_before: G : Type u_1
G' : Type ?u.56694
F : Type ?u.56697
inst✝² : Group G
inst✝¹ : Group G'
inst✝ : MonoidHomClass F G G'
f : F
g₁ g₂ g₃ g : G
H₁ H₂ H₃ K₁ K₂ : Subgroup G
h1 : ∀ (g₁ : G), g₁ ∈ H₂ → ∀ (g₂ : G), g₂ ∈ H₃ → ∀ (h : G), h ∈ H₁ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
h2 : ∀ (g₁ : G), g₁ ∈ H₃ → ∀ (g₂ : G), g₂ ∈ H₁ → ∀ (h : G), h ∈ H₂ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
x : G
hx : x ∈ H₁
y : G
hy : y ∈ H₂
z : G
hz : z ∈ H₃
⊢ ⁅z, ⁅x, y⁆⁆ = 1

tactic: group
state_before: G : Type u_1
G' : Type ?u.56694
F : Type ?u.56697
inst✝² : Group G
inst✝¹ : Group G'
inst✝ : MonoidHomClass F G G'
f : F
g₁ g₂ g₃ g : G
H₁ H₂ H₃ K₁ K₂ : Subgroup G
h1 : ∀ (g₁ : G), g₁ ∈ H₂ → ∀ (g₂ : G), g₂ ∈ H₃ → ∀ (h : G), h ∈ H₁ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
h2 : ∀ (g₁ : G), g₁ ∈ H₃ → ∀ (g₂ : G), g₂ ∈ H₁ → ∀ (h : G), h ∈ H₂ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
x : G
hx : x ∈ H₁
y : G
hy : y ∈ H₂
z : G
hz : z ∈ H₃
⊢ ⁅z, ⁅x, y⁆⁆ = x * z * ⁅y, ⁅z⁻¹, x⁻¹⁆⁆⁻¹ * z⁻¹ * y * ⁅x⁻¹, ⁅y⁻¹, z⁆⁆⁻¹ * y⁻¹ * x⁻¹

tactic: rw [h1 _ (H₂.inv_mem hy) _ hz _ (H₁.inv_mem hx), h2 _ (H₃.inv_mem hz) _ (H₁.inv_mem hx) _ hy]
state_before: G : Type u_1
G' : Type ?u.56694
F : Type ?u.56697
inst✝² : Group G
inst✝¹ : Group G'
inst✝ : MonoidHomClass F G G'
f : F
g₁ g₂ g₃ g : G
H₁ H₂ H₃ K₁ K₂ : Subgroup G
h1 : ∀ (g₁ : G), g₁ ∈ H₂ → ∀ (g₂ : G), g₂ ∈ H₃ → ∀ (h : G), h ∈ H₁ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
h2 : ∀ (g₁ : G), g₁ ∈ H₃ → ∀ (g₂ : G), g₂ ∈ H₁ → ∀ (h : G), h ∈ H₂ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
x : G
hx : x ∈ H₁
y : G
hy : y ∈ H₂
z : G
hz : z ∈ H₃
⊢ x * z * ⁅y, ⁅z⁻¹, x⁻¹⁆⁆⁻¹ * z⁻¹ * y * ⁅x⁻¹, ⁅y⁻¹, z⁆⁆⁻¹ * y⁻¹ * x⁻¹ = 1

tactic: group
state_before: G : Type u_1
G' : Type ?u.56694
F : Type ?u.56697
inst✝² : Group G
inst✝¹ : Group G'
inst✝ : MonoidHomClass F G G'
f : F
g₁ g₂ g₃ g : G
H₁ H₂ H₃ K₁ K₂ : Subgroup G
h1 : ∀ (g₁ : G), g₁ ∈ H₂ → ∀ (g₂ : G), g₂ ∈ H₃ → ∀ (h : G), h ∈ H₁ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
h2 : ∀ (g₁ : G), g₁ ∈ H₃ → ∀ (g₂ : G), g₂ ∈ H₁ → ∀ (h : G), h ∈ H₂ → ⁅h, ⁅g₁, g₂⁆⁆ = 1
x : G
hx : x ∈ H₁
y : G
hy : y ∈ H₂
z : G
hz : z ∈ H₃
⊢ x * z * 1⁻¹ * z⁻¹ * y * 1⁻¹ * y⁻¹ * x⁻¹ = 1
Theorem: Sym2.IsDiag.mem_range_diag
File: Mathlib/Data/Sym/Sym2.lean

tactic: induction' z using Sym2.ind with x y
state_before: α : Type u_1
β : Type ?u.40966
γ : Type ?u.40969
z : Sym2 α
⊢ IsDiag z → z ∈ Set.range diag

tactic: rintro (rfl : x = y)
state_before: case h
α : Type u_1
β : Type ?u.40966
γ : Type ?u.40969
x y : α
⊢ IsDiag (Quotient.mk (Rel.setoid α) (x, y)) → Quotient.mk (Rel.setoid α) (x, y) ∈ Set.range diag

tactic: exact ⟨_, rfl⟩
state_before: case h
α : Type u_1
β : Type ?u.40966
γ : Type ?u.40969
x : α
⊢ Quotient.mk (Rel.setoid α) (x, x) ∈ Set.range diag
Theorem: midpoint_vsub_right
File: Mathlib/LinearAlgebra/AffineSpace/Midpoint.lean

tactic: rw [midpoint_comm, midpoint_vsub_left]
state_before: R : Type u_3
V : Type u_1
V' : Type ?u.44515
P : Type u_2
P' : Type ?u.44521
inst✝⁷ : Ring R
inst✝⁶ : Invertible 2
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z p₁ p₂ : P
⊢ midpoint R p₁ p₂ -ᵥ p₂ = ⅟2 • (p₁ -ᵥ p₂)
Theorem: Rel.core_comp
File: Mathlib/Data/Rel.lean

tactic: ext x
state_before: α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set γ
⊢ core (r • s) t = core r (core s t)

tactic: simp [core, comp]
state_before: case h
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ x ∈ core (r • s) t ↔ x ∈ core r (core s t)

tactic: constructor
state_before: case h
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t) ↔ ∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t

tactic: exact fun h y rxy z => h z y rxy
state_before: case h.mp
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t) → ∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t

tactic: exact fun h z y rzy => h y rzy z
state_before: case h.mpr
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t) → ∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t
Theorem: LieSubmodule.sInf_glb
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: have h : ∀ {N N' : LieSubmodule R L M}, (N : Set M) ≤ N' ↔ N ≤ N' := fun {_ _} ↦ Iff.rfl
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
S : Set (LieSubmodule R L M)
⊢ IsGLB S (sInf S)

tactic: apply IsGLB.of_image h
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
S : Set (LieSubmodule R L M)
h : ∀ {N N' : LieSubmodule R L M}, ↑N ≤ ↑N' ↔ N ≤ N'
⊢ IsGLB S (sInf S)

tactic: simp only [sInf_coe]
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
S : Set (LieSubmodule R L M)
h : ∀ {N N' : LieSubmodule R L M}, ↑N ≤ ↑N' ↔ N ≤ N'
⊢ IsGLB ((fun {x} => ↑x) '' S) ↑(sInf S)

tactic: exact isGLB_biInf
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
S : Set (LieSubmodule R L M)
h : ∀ {N N' : LieSubmodule R L M}, ↑N ≤ ↑N' ↔ N ≤ N'
⊢ IsGLB ((fun {x} => ↑x) '' S) (⋂ (s : LieSubmodule R L M) (_ : s ∈ S), ↑s)
Theorem: Finset.Icc_subset_Icc
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: simpa [← coe_subset] using Set.Icc_subset_Icc ha hb
state_before: ι : Type ?u.5978
α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
ha : a₂ ≤ a₁
hb : b₁ ≤ b₂
⊢ Icc a₁ b₁ ⊆ Icc a₂ b₂
Theorem: ULift.closedEmbedding_down
File: Mathlib/Topology/Constructions.lean

tactic: simp only [ULift.down_surjective.range_eq, isClosed_univ]
state_before: α : Type u
β : Type v
γ : Type ?u.564674
δ : Type ?u.564677
ε : Type ?u.564680
ζ : Type ?u.564683
inst✝ : TopologicalSpace α
⊢ IsClosed (range down)
Theorem: associated_iff_eq
File: Mathlib/Algebra/Associated.lean

tactic: constructor
state_before: α : Type u_1
β : Type ?u.248864
γ : Type ?u.248867
δ : Type ?u.248870
inst✝¹ : Monoid α
inst✝ : Unique αˣ
x y : α
⊢ x ~ᵤ y ↔ x = y

tactic: rintro ⟨c, rfl⟩
state_before: case mp
α : Type u_1
β : Type ?u.248864
γ : Type ?u.248867
δ : Type ?u.248870
inst✝¹ : Monoid α
inst✝ : Unique αˣ
x y : α
⊢ x ~ᵤ y → x = y

tactic: rw [units_eq_one c, Units.val_one, mul_one]
state_before: case mp.intro
α : Type u_1
β : Type ?u.248864
γ : Type ?u.248867
δ : Type ?u.248870
inst✝¹ : Monoid α
inst✝ : Unique αˣ
x : α
c : αˣ
⊢ x = x * ↑c

tactic: rintro rfl
state_before: case mpr
α : Type u_1
β : Type ?u.248864
γ : Type ?u.248867
δ : Type ?u.248870
inst✝¹ : Monoid α
inst✝ : Unique αˣ
x y : α
⊢ x = y → x ~ᵤ y

tactic: rfl
state_before: case mpr
α : Type u_1
β : Type ?u.248864
γ : Type ?u.248867
δ : Type ?u.248870
inst✝¹ : Monoid α
inst✝ : Unique αˣ
x : α
⊢ x ~ᵤ x
Theorem: Seminorm.ball_finset_sup
File: Mathlib/Analysis/Seminorm.lean

tactic: rw [Finset.inf_eq_iInf]
state_before: R : Type ?u.1093501
R' : Type ?u.1093504
𝕜 : Type u_1
𝕜₂ : Type ?u.1093510
𝕜₃ : Type ?u.1093513
𝕝 : Type ?u.1093516
E : Type u_2
E₂ : Type ?u.1093522
E₃ : Type ?u.1093525
F : Type ?u.1093528
G : Type ?u.1093531
ι : Type u_3
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ : Seminorm 𝕜 E
p : ι → Seminorm 𝕜 E
s : Finset ι
x : E
r : ℝ
hr : 0 < r
⊢ ball (Finset.sup s p) x r = Finset.inf s fun i => ball (p i) x r

tactic: exact ball_finset_sup_eq_iInter _ _ _ hr
state_before: R : Type ?u.1093501
R' : Type ?u.1093504
𝕜 : Type u_1
𝕜₂ : Type ?u.1093510
𝕜₃ : Type ?u.1093513
𝕝 : Type ?u.1093516
E : Type u_2
E₂ : Type ?u.1093522
E₃ : Type ?u.1093525
F : Type ?u.1093528
G : Type ?u.1093531
ι : Type u_3
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ : Seminorm 𝕜 E
p : ι → Seminorm 𝕜 E
s : Finset ι
x : E
r : ℝ
hr : 0 < r
⊢ ball (Finset.sup s p) x r = ⨅ (a : ι) (_ : a ∈ s), ball (p a) x r
Theorem: Matrix.rank_conjTranspose_mul_self
File: Mathlib/Data/Matrix/Rank.lean

tactic: dsimp only [rank]
state_before: l : Type ?u.244698
m : Type u_1
n : Type u_2
o : Type ?u.244707
R : Type u_3
m_fin : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : Fintype o
inst✝³ : Fintype m
inst✝² : Field R
inst✝¹ : PartialOrder R
inst✝ : StarOrderedRing R
A : Matrix m n R
⊢ rank (Aᴴ ⬝ A) = rank A

tactic: refine' add_left_injective (finrank R (LinearMap.ker (mulVecLin A))) _
state_before: l : Type ?u.244698
m : Type u_1
n : Type u_2
o : Type ?u.244707
R : Type u_3
m_fin : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : Fintype o
inst✝³ : Fintype m
inst✝² : Field R
inst✝¹ : PartialOrder R
inst✝ : StarOrderedRing R
A : Matrix m n R
⊢ finrank R { x // x ∈ LinearMap.range (mulVecLin (Aᴴ ⬝ A)) } = finrank R { x // x ∈ LinearMap.range (mulVecLin A) }

tactic: dsimp only
state_before: l : Type ?u.244698
m : Type u_1
n : Type u_2
o : Type ?u.244707
R : Type u_3
m_fin : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : Fintype o
inst✝³ : Fintype m
inst✝² : Field R
inst✝¹ : PartialOrder R
inst✝ : StarOrderedRing R
A : Matrix m n R
⊢ (fun x => x + finrank R { x // x ∈ LinearMap.ker (mulVecLin A) })
      (finrank R { x // x ∈ LinearMap.range (mulVecLin (Aᴴ ⬝ A)) }) =
    (fun x => x + finrank R { x // x ∈ LinearMap.ker (mulVecLin A) })
      (finrank R { x // x ∈ LinearMap.range (mulVecLin A) })

tactic: trans finrank R { x // x ∈ LinearMap.range (mulVecLin (Aᴴ ⬝ A)) } +
  finrank R { x // x ∈ LinearMap.ker (mulVecLin (Aᴴ ⬝ A)) }
state_before: l : Type ?u.244698
m : Type u_1
n : Type u_2
o : Type ?u.244707
R : Type u_3
m_fin : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : Fintype o
inst✝³ : Fintype m
inst✝² : Field R
inst✝¹ : PartialOrder R
inst✝ : StarOrderedRing R
A : Matrix m n R
⊢ finrank R { x // x ∈ LinearMap.range (mulVecLin (Aᴴ ⬝ A)) } + finrank R { x // x ∈ LinearMap.ker (mulVecLin A) } =
    finrank R { x // x ∈ LinearMap.range (mulVecLin A) } + finrank R { x // x ∈ LinearMap.ker (mulVecLin A) }

tactic: rw [ker_mulVecLin_conjTranspose_mul_self]
state_before: l : Type ?u.244698
m : Type u_1
n : Type u_2
o : Type ?u.244707
R : Type u_3
m_fin : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : Fintype o
inst✝³ : Fintype m
inst✝² : Field R
inst✝¹ : PartialOrder R
inst✝ : StarOrderedRing R
A : Matrix m n R
⊢ finrank R { x // x ∈ LinearMap.range (mulVecLin (Aᴴ ⬝ A)) } + finrank R { x // x ∈ LinearMap.ker (mulVecLin A) } =
    finrank R { x // x ∈ LinearMap.range (mulVecLin (Aᴴ ⬝ A)) } +
      finrank R { x // x ∈ LinearMap.ker (mulVecLin (Aᴴ ⬝ A)) }

tactic: simp only [LinearMap.finrank_range_add_finrank_ker]
state_before: l : Type ?u.244698
m : Type u_1
n : Type u_2
o : Type ?u.244707
R : Type u_3
m_fin : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : Fintype o
inst✝³ : Fintype m
inst✝² : Field R
inst✝¹ : PartialOrder R
inst✝ : StarOrderedRing R
A : Matrix m n R
⊢ finrank R { x // x ∈ LinearMap.range (mulVecLin (Aᴴ ⬝ A)) } +
      finrank R { x // x ∈ LinearMap.ker (mulVecLin (Aᴴ ⬝ A)) } =
    finrank R { x // x ∈ LinearMap.range (mulVecLin A) } + finrank R { x // x ∈ LinearMap.ker (mulVecLin A) }
Theorem: Vector.traverse_def
File: Mathlib/Data/Vector/Basic.lean

tactic: rintro ⟨xs, rfl⟩
state_before: n : ℕ
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
f : α → F β
x : α
⊢ ∀ (xs : Vector α n), Vector.traverse f (x ::ᵥ xs) = Seq.seq (cons <$> f x) fun x => Vector.traverse f xs

tactic: rfl
state_before: case mk
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
f : α → F β
x : α
xs : List α
⊢ Vector.traverse f (x ::ᵥ { val := xs, property := (_ : List.length xs = List.length xs) }) =
    Seq.seq (cons <$> f x) fun x => Vector.traverse f { val := xs, property := (_ : List.length xs = List.length xs) }
Theorem: MeasureTheory.limsup_measure_closed_le_iff_liminf_measure_open_ge
File: Mathlib/MeasureTheory/Measure/Portmanteau.lean

tactic: constructor
state_before: Ω : Type u_2
inst✝⁴ : MeasurableSpace Ω
inst✝³ : TopologicalSpace Ω
inst✝² : OpensMeasurableSpace Ω
ι : Type u_1
L : Filter ι
μ : Measure Ω
μs : ι → Measure Ω
inst✝¹ : IsProbabilityMeasure μ
inst✝ : ∀ (i : ι), IsProbabilityMeasure (μs i)
⊢ (∀ (F : Set Ω), IsClosed F → limsup (fun i => ↑↑(μs i) F) L ≤ ↑↑μ F) ↔
    ∀ (G : Set Ω), IsOpen G → ↑↑μ G ≤ liminf (fun i => ↑↑(μs i) G) L

tactic: intro h G G_open
state_before: case mp
Ω : Type u_2
inst✝⁴ : MeasurableSpace Ω
inst✝³ : TopologicalSpace Ω
inst✝² : OpensMeasurableSpace Ω
ι : Type u_1
L : Filter ι
μ : Measure Ω
μs : ι → Measure Ω
inst✝¹ : IsProbabilityMeasure μ
inst✝ : ∀ (i : ι), IsProbabilityMeasure (μs i)
⊢ (∀ (F : Set Ω), IsClosed F → limsup (fun i => ↑↑(μs i) F) L ≤ ↑↑μ F) →
    ∀ (G : Set Ω), IsOpen G → ↑↑μ G ≤ liminf (fun i => ↑↑(μs i) G) L

tactic: exact le_measure_liminf_of_limsup_measure_compl_le
  G_open.measurableSet (h (Gᶜ) (isClosed_compl_iff.mpr G_open))
state_before: case mp
Ω : Type u_2
inst✝⁴ : MeasurableSpace Ω
inst✝³ : TopologicalSpace Ω
inst✝² : OpensMeasurableSpace Ω
ι : Type u_1
L : Filter ι
μ : Measure Ω
μs : ι → Measure Ω
inst✝¹ : IsProbabilityMeasure μ
inst✝ : ∀ (i : ι), IsProbabilityMeasure (μs i)
h : ∀ (F : Set Ω), IsClosed F → limsup (fun i => ↑↑(μs i) F) L ≤ ↑↑μ F
G : Set Ω
G_open : IsOpen G
⊢ ↑↑μ G ≤ liminf (fun i => ↑↑(μs i) G) L

tactic: intro h F F_closed
state_before: case mpr
Ω : Type u_2
inst✝⁴ : MeasurableSpace Ω
inst✝³ : TopologicalSpace Ω
inst✝² : OpensMeasurableSpace Ω
ι : Type u_1
L : Filter ι
μ : Measure Ω
μs : ι → Measure Ω
inst✝¹ : IsProbabilityMeasure μ
inst✝ : ∀ (i : ι), IsProbabilityMeasure (μs i)
⊢ (∀ (G : Set Ω), IsOpen G → ↑↑μ G ≤ liminf (fun i => ↑↑(μs i) G) L) →
    ∀ (F : Set Ω), IsClosed F → limsup (fun i => ↑↑(μs i) F) L ≤ ↑↑μ F

tactic: exact limsup_measure_le_of_le_liminf_measure_compl
  F_closed.measurableSet (h (Fᶜ) (isOpen_compl_iff.mpr F_closed))
state_before: case mpr
Ω : Type u_2
inst✝⁴ : MeasurableSpace Ω
inst✝³ : TopologicalSpace Ω
inst✝² : OpensMeasurableSpace Ω
ι : Type u_1
L : Filter ι
μ : Measure Ω
μs : ι → Measure Ω
inst✝¹ : IsProbabilityMeasure μ
inst✝ : ∀ (i : ι), IsProbabilityMeasure (μs i)
h : ∀ (G : Set Ω), IsOpen G → ↑↑μ G ≤ liminf (fun i => ↑↑(μs i) G) L
F : Set Ω
F_closed : IsClosed F
⊢ limsup (fun i => ↑↑(μs i) F) L ≤ ↑↑μ F
Theorem: PreErgodic.measure_self_or_compl_eq_zero
File: Mathlib/Dynamics/Ergodic/Ergodic.lean

tactic: simpa using hf.ae_empty_or_univ hs hs'
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : MeasureTheory.Measure α
hf : PreErgodic f
hs : MeasurableSet s
hs' : f ⁻¹' s = s
⊢ ↑↑μ s = 0 ∨ ↑↑μ (sᶜ) = 0
Theorem: IsLocalMin.hasFDerivAt_eq_zero
File: Mathlib/Analysis/Calculus/LocalExtr.lean

tactic: ext y
state_before: E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : E → ℝ
a : E
f' : E →L[ℝ] ℝ
h : IsLocalMin f a
hf : HasFDerivAt f f' a
⊢ f' = 0

tactic: apply (h.on univ).hasFDerivWithinAt_eq_zero hf.hasFDerivWithinAt <;>
    rw [posTangentConeAt_univ] <;>
  apply mem_univ
state_before: case h
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : E → ℝ
a : E
f' : E →L[ℝ] ℝ
h : IsLocalMin f a
hf : HasFDerivAt f f' a
y : E
⊢ ↑f' y = ↑0 y
Theorem: List.rotate'_length_mul
File: Mathlib/Data/List/Rotate.lean

tactic: simp
state_before: α : Type u
l : List α
⊢ rotate' l (length l * 0) = l

tactic: simp [-rotate'_length, Nat.mul_succ, rotate'_rotate']
state_before: α : Type u
l : List α
n : ℕ
⊢ rotate' l (length l * (n + 1)) = rotate' (rotate' l (length l * n)) (length (rotate' l (length l * n)))

tactic: rw [rotate'_length, rotate'_length_mul l n]
state_before: α : Type u
l : List α
n : ℕ
⊢ rotate' (rotate' l (length l * n)) (length (rotate' l (length l * n))) = l
Theorem: fderivWithin_inv
File: Mathlib/Analysis/Calculus/Deriv/Inv.lean

tactic: rw [DifferentiableAt.fderivWithin (differentiableAt_inv.2 x_ne_zero) hxs]
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
x_ne_zero : x ≠ 0
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderivWithin 𝕜 (fun x => x⁻¹) s x = smulRight 1 (-(x ^ 2)⁻¹)

tactic: exact fderiv_inv
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
x_ne_zero : x ≠ 0
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderiv 𝕜 (fun x => x⁻¹) x = smulRight 1 (-(x ^ 2)⁻¹)
Theorem: toNat_manyOneEquiv
File: Mathlib/Computability/Reduce.lean

tactic: simp [ManyOneEquiv]
state_before: α : Type u
inst✝⁵ : Primcodable α
inst✝⁴ : Inhabited α
β : Type v
inst✝³ : Primcodable β
inst✝² : Inhabited β
γ : Type w
inst✝¹ : Primcodable γ
inst✝ : Inhabited γ
p : Set α
⊢ ManyOneEquiv (toNat p) p
Theorem: Nat.mul_self_sub_mul_self_eq
File: Std/Data/Nat/Lemmas.lean

tactic: rw [Nat.mul_sub_left_distrib, Nat.right_distrib, Nat.right_distrib,
    Nat.mul_comm b a, Nat.add_comm (a*a) (a*b), Nat.add_sub_add_left]
state_before: a b : Nat
⊢ a * a - b * b = (a + b) * (a - b)
Theorem: CategoryTheory.IsIso.of_isIso_fac_left
File: Mathlib/CategoryTheory/Iso.lean

tactic: rw [← w] at hh
state_before: C : Type u
inst✝¹ : Category C
X✝ Y✝ Z✝ : C
f✝ g✝ : X✝ ⟶ Y✝
h✝ : Y✝ ⟶ Z✝
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : X ⟶ Z
inst✝ : IsIso f
hh : IsIso h
w : f ≫ g = h
⊢ IsIso g

tactic: haveI := hh
state_before: C : Type u
inst✝¹ : Category C
X✝ Y✝ Z✝ : C
f✝ g✝ : X✝ ⟶ Y✝
h✝ : Y✝ ⟶ Z✝
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : X ⟶ Z
inst✝ : IsIso f
hh : IsIso (f ≫ g)
w : f ≫ g = h
⊢ IsIso g

tactic: exact of_isIso_comp_left f g
state_before: C : Type u
inst✝¹ : Category C
X✝ Y✝ Z✝ : C
f✝ g✝ : X✝ ⟶ Y✝
h✝ : Y✝ ⟶ Z✝
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
h : X ⟶ Z
inst✝ : IsIso f
hh : IsIso (f ≫ g)
w : f ≫ g = h
this : IsIso (f ≫ g)
⊢ IsIso g
Theorem: CategoryTheory.idCoverLifting
File: Mathlib/CategoryTheory/Sites/CoverLifting.lean

tactic: simpa using h
state_before: C : Type u_1
inst✝² : Category C
D : Type ?u.741
inst✝¹ : Category D
E : Type ?u.748
inst✝ : Category E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
U✝ : C
S✝ : Sieve ((𝟭 C).obj U✝)
h : S✝ ∈ GrothendieckTopology.sieves J ((𝟭 C).obj U✝)
⊢ Sieve.functorPullback (𝟭 C) S✝ ∈ GrothendieckTopology.sieves J U✝