tasksource/leandojo huggingface dataset:
Theorem: AlgebraicTopology.DoldKan.N₂Γ₂_inv_app_f_f
File: Mathlib/AlgebraicTopology/DoldKan/GammaCompN.lean

tactic: simp only [N₂Γ₂, Functor.preimageIso, Iso.trans,
  whiskeringLeft_obj_preimage_app, N₂Γ₂ToKaroubiIso_inv, assoc,
  Functor.id_map, NatTrans.comp_app, eqToHom_app, Karoubi.comp_f,
  Karoubi.eqToHom_f, Karoubi.decompId_p_f, HomologicalComplex.comp_f,
  N₁Γ₀_inv_app_f_f, Splitting.toKaroubiNondegComplexIsoN₁_hom_f_f,
  Functor.comp_map, Functor.comp_obj, Karoubi.decompId_i_f,
  eqToHom_refl, comp_id, N₂_map_f_f, Γ₂_map_f_app, N₁_obj_p,
  PInfty_on_Γ₀_splitting_summand_eq_self_assoc, toKaroubi_obj_X,
  Splitting.ι_desc, Splitting.IndexSet.id_fst, SimplexCategory.len_mk, unop_op,
  Karoubi.HomologicalComplex.p_idem_assoc]
state_before: C : Type u_1
inst✝² : Category C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : Karoubi (ChainComplex C ℕ)
n : ℕ
⊢ HomologicalComplex.Hom.f (N₂Γ₂.inv.app X).f n =
    HomologicalComplex.Hom.f X.p n ≫ Splitting.ιSummand (Γ₀.splitting X.X) (Splitting.IndexSet.id [n].op)
Theorem: MeasureTheory.snorm_one_eq_lintegral_nnnorm
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: simp_rw [snorm_eq_lintegral_rpow_nnnorm one_ne_zero ENNReal.coe_ne_top, ENNReal.one_toReal,
  one_div_one, ENNReal.rpow_one]
state_before: α : Type u_1
E : Type ?u.526534
F : Type u_2
G : Type ?u.526540
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
⊢ snorm f 1 μ = ∫⁻ (x : α), ↑‖f x‖₊ ∂μ
Theorem: LieAlgebra.Orthogonal.mem_so
File: Mathlib/Algebra/Lie/Classical.lean

tactic: rw [so, mem_skewAdjointMatricesLieSubalgebra, mem_skewAdjointMatricesSubmodule]
state_before: n : Type u_1
p : Type ?u.30314
q : Type ?u.30317
l : Type ?u.30320
R : Type u₂
inst✝⁵ : DecidableEq n
inst✝⁴ : DecidableEq p
inst✝³ : DecidableEq q
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype n
A : Matrix n n R
⊢ A ∈ so n R ↔ Aᵀ = -A

tactic: simp only [Matrix.IsSkewAdjoint, Matrix.IsAdjointPair, Matrix.mul_one, Matrix.one_mul]
state_before: n : Type u_1
p : Type ?u.30314
q : Type ?u.30317
l : Type ?u.30320
R : Type u₂
inst✝⁵ : DecidableEq n
inst✝⁴ : DecidableEq p
inst✝³ : DecidableEq q
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype n
A : Matrix n n R
⊢ IsSkewAdjoint 1 A ↔ Aᵀ = -A
Theorem: Finset.disjoint_map_inl_map_inr
File: Mathlib/Data/Finset/Sum.lean

tactic: simp_rw [disjoint_left, mem_map]
state_before: α : Type u_2
β : Type u_1
s : Finset α
t : Finset β
⊢ _root_.Disjoint (map Embedding.inl s) (map Embedding.inr t)

tactic: rintro x ⟨a, _, rfl⟩ ⟨b, _, ⟨⟩⟩
state_before: α : Type u_2
β : Type u_1
s : Finset α
t : Finset β
⊢ ∀ ⦃a : α ⊕ β⦄, (∃ a_1, a_1 ∈ s ∧ ↑Embedding.inl a_1 = a) → ¬∃ a_2, a_2 ∈ t ∧ ↑Embedding.inr a_2 = a
Theorem: mem_rightCoset_rightCoset
File: Mathlib/GroupTheory/Coset.lean

tactic: rw [← SetLike.mem_coe, ← ha]
state_before: α : Type u_1
inst✝ : Monoid α
s : Submonoid α
a : α
ha : ↑s *r a = ↑s
⊢ a ∈ s

tactic: exact mem_own_rightCoset s a
state_before: α : Type u_1
inst✝ : Monoid α
s : Submonoid α
a : α
ha : ↑s *r a = ↑s
⊢ a ∈ ↑s *r a
Theorem: ClosureOperator.closure_sup_closure_right
File: Mathlib/Order/Closure.lean

tactic: rw [sup_comm, closure_sup_closure_left, sup_comm]
state_before: α : Type u_1
ι : Sort ?u.9446
κ : ι → Sort ?u.9451
inst✝ : SemilatticeSup α
c : ClosureOperator α
x y : α
⊢ ↑c.toOrderHom (x ⊔ ↑c.toOrderHom y) = ↑c.toOrderHom (x ⊔ y)
Theorem: CategoryTheory.Limits.inr_inr_pushoutAssoc_inv
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: trans f₄ ≫ l₂'
state_before: C : Type u
inst✝⁵ : Category C
D : Type u₂
inst✝⁴ : Category D
W X Y Z X₁ X₂ X₃ Z₁ Z₂ : C
g₁ : Z₁ ⟶ X₁
g₂ : Z₁ ⟶ X₂
g₃ : Z₂ ⟶ X₂
g₄ : Z₂ ⟶ X₃
inst✝³ : HasPushout g₁ g₂
inst✝² : HasPushout g₃ g₄
inst✝¹ : HasPushout (g₃ ≫ pushout.inr) g₄
inst✝ : HasPushout g₁ (g₂ ≫ pushout.inl)
⊢ pushout.inr ≫ pushout.inr ≫ (pushoutAssoc g₁ g₂ g₃ g₄).inv = pushout.inr

tactic: congr 1
state_before: C : Type u
inst✝⁵ : Category C
D : Type u₂
inst✝⁴ : Category D
W X Y Z X₁ X₂ X₃ Z₁ Z₂ : C
g₁ : Z₁ ⟶ X₁
g₂ : Z₁ ⟶ X₂
g₃ : Z₂ ⟶ X₂
g₄ : Z₂ ⟶ X₃
inst✝³ : HasPushout g₁ g₂
inst✝² : HasPushout g₃ g₄
inst✝¹ : HasPushout (g₃ ≫ pushout.inr) g₄
inst✝ : HasPushout g₁ (g₂ ≫ pushout.inl)
⊢ pushout.inr ≫ pushout.inr ≫ (pushoutAssoc g₁ g₂ g₃ g₄).inv =
    pushout.inr ≫
      pushout.desc (pushout.inr ≫ pushout.inl) pushout.inr (_ : g₃ ≫ pushout.inr ≫ pushout.inl = g₄ ≫ pushout.inr)

tactic: exact
  (pushoutPushoutLeftIsPushout g₁ g₂ g₃ g₄).comp_coconePointUniqueUpToIso_inv
    (pushoutPushoutRightIsPushout g₁ g₂ g₃ g₄) WalkingCospan.right
state_before: case e_a
C : Type u
inst✝⁵ : Category C
D : Type u₂
inst✝⁴ : Category D
W X Y Z X₁ X₂ X₃ Z₁ Z₂ : C
g₁ : Z₁ ⟶ X₁
g₂ : Z₁ ⟶ X₂
g₃ : Z₂ ⟶ X₂
g₄ : Z₂ ⟶ X₃
inst✝³ : HasPushout g₁ g₂
inst✝² : HasPushout g₃ g₄
inst✝¹ : HasPushout (g₃ ≫ pushout.inr) g₄
inst✝ : HasPushout g₁ (g₂ ≫ pushout.inl)
⊢ pushout.inr ≫ (pushoutAssoc g₁ g₂ g₃ g₄).inv =
    pushout.desc (pushout.inr ≫ pushout.inl) pushout.inr (_ : g₃ ≫ pushout.inr ≫ pushout.inl = g₄ ≫ pushout.inr)

tactic: exact pushout.inr_desc _ _ _
state_before: C : Type u
inst✝⁵ : Category C
D : Type u₂
inst✝⁴ : Category D
W X Y Z X₁ X₂ X₃ Z₁ Z₂ : C
g₁ : Z₁ ⟶ X₁
g₂ : Z₁ ⟶ X₂
g₃ : Z₂ ⟶ X₂
g₄ : Z₂ ⟶ X₃
inst✝³ : HasPushout g₁ g₂
inst✝² : HasPushout g₃ g₄
inst✝¹ : HasPushout (g₃ ≫ pushout.inr) g₄
inst✝ : HasPushout g₁ (g₂ ≫ pushout.inl)
⊢ pushout.inr ≫
      pushout.desc (pushout.inr ≫ pushout.inl) pushout.inr (_ : g₃ ≫ pushout.inr ≫ pushout.inl = g₄ ≫ pushout.inr) =
    pushout.inr
Theorem: LinearMap.rTensor_id_apply
File: Mathlib/LinearAlgebra/TensorProduct.lean

tactic: rw [rTensor_id, id_coe, id.def]
state_before: R : Type u_1
inst✝¹⁴ : CommSemiring R
R' : Type ?u.1269380
inst✝¹³ : Monoid R'
R'' : Type ?u.1269386
inst✝¹² : Semiring R''
M : Type u_3
N : Type u_2
P : Type ?u.1269398
Q : Type ?u.1269401
S : Type ?u.1269404
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid N
inst✝⁹ : AddCommMonoid P
inst✝⁸ : AddCommMonoid Q
inst✝⁷ : AddCommMonoid S
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Module R P
inst✝³ : Module R Q
inst✝² : Module R S
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
g : P →ₗ[R] Q
f : N →ₗ[R] P
x : N ⊗[R] M
⊢ ↑(rTensor M id) x = x
Theorem: Cubic.d_of_eq
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [← coeff_eq_d, h, coeff_eq_d]
state_before: R : Type u_1
S : Type ?u.287176
F : Type ?u.287179
K : Type ?u.287182
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
h : toPoly P = toPoly Q
⊢ P.d = Q.d
Theorem: MeasureTheory.Measure.MutuallySingular.add_left_iff
File: Mathlib/MeasureTheory/Measure/MutuallySingular.lean

tactic: rw [← sum_cond, sum_left, Bool.forall_bool, cond, cond, and_comm]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ μ₁ μ₂ ν ν₁ ν₂ : Measure α
⊢ μ₁ + μ₂ ⟂ₘ ν ↔ μ₁ ⟂ₘ ν ∧ μ₂ ⟂ₘ ν
Theorem: LinearMap.flip_inj
File: Mathlib/LinearAlgebra/BilinearMap.lean

tactic: rw [H]
state_before: R : Type u_1
inst✝³² : Semiring R
S : Type u_6
inst✝³¹ : Semiring S
R₂ : Type u_2
inst✝³⁰ : Semiring R₂
S₂ : Type u_7
inst✝²⁹ : Semiring S₂
M : Type u_3
N : Type u_5
P : Type u_4
M₂ : Type ?u.174405
N₂ : Type ?u.174408
P₂ : Type ?u.174411
Nₗ : Type ?u.174414
Pₗ : Type ?u.174417
M' : Type ?u.174420
N' : Type ?u.174423
P' : Type ?u.174426
inst✝²⁸ : AddCommMonoid M
inst✝²⁷ : AddCommMonoid N
inst✝²⁶ : AddCommMonoid P
inst✝²⁵ : AddCommMonoid M₂
inst✝²⁴ : AddCommMonoid N₂
inst✝²³ : AddCommMonoid P₂
inst✝²² : AddCommMonoid Nₗ
inst✝²¹ : AddCommMonoid Pₗ
inst✝²⁰ : AddCommGroup M'
inst✝¹⁹ : AddCommGroup N'
inst✝¹⁸ : AddCommGroup P'
inst✝¹⁷ : Module R M
inst✝¹⁶ : Module S N
inst✝¹⁵ : Module R₂ P
inst✝¹⁴ : Module S₂ P
inst✝¹³ : Module R M₂
inst✝¹² : Module S N₂
inst✝¹¹ : Module R P₂
inst✝¹⁰ : Module S₂ P₂
inst✝⁹ : Module R Pₗ
inst✝⁸ : Module S Pₗ
inst✝⁷ : Module R M'
inst✝⁶ : Module S N'
inst✝⁵ : Module R₂ P'
inst✝⁴ : Module S₂ P'
inst✝³ : SMulCommClass S₂ R₂ P
inst✝² : SMulCommClass S R Pₗ
inst✝¹ : SMulCommClass S₂ R₂ P'
inst✝ : SMulCommClass S₂ R P₂
ρ₁₂ : R →+* R₂
σ₁₂ : S →+* S₂
f g : M →ₛₗ[ρ₁₂] N →ₛₗ[σ₁₂] P
H : flip f = flip g
m : M
n : N
⊢ ↑(↑(flip f) n) m = ↑(↑(flip g) n) m
Theorem: List.insert_of_not_mem
File: Std/Data/List/Lemmas.lean

tactic: simp only [List.insert, if_neg h]
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l : List α
h : ¬a ∈ l
⊢ List.insert a l = a :: l
Theorem: Function.mulSupport_disjoint_iff
File: Mathlib/Algebra/Support.lean

tactic: simp_rw [← subset_compl_iff_disjoint_right, mulSupport_subset_iff', not_mem_compl_iff, EqOn,
  Pi.one_apply]
state_before: α : Type u_1
β : Type ?u.2824
A : Type ?u.2827
B : Type ?u.2830
M : Type u_2
N : Type ?u.2836
P : Type ?u.2839
R : Type ?u.2842
S : Type ?u.2845
G : Type ?u.2848
M₀ : Type ?u.2851
G₀ : Type ?u.2854
ι : Sort ?u.2857
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f : α → M
s : Set α
⊢ Disjoint (mulSupport f) s ↔ EqOn f 1 s
Theorem: Ordinal.bsup_eq_zero_iff
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: refine'
  ⟨fun h i hi => _, fun h =>
    le_antisymm (bsup_le fun i hi => Ordinal.le_zero.2 (h i hi)) (Ordinal.zero_le _)⟩
state_before: α : Type ?u.312782
β : Type ?u.312785
γ : Type ?u.312788
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
f : (a : Ordinal) → a < o → Ordinal
⊢ bsup o f = 0 ↔ ∀ (i : Ordinal) (hi : i < o), f i hi = 0

tactic: rw [← Ordinal.le_zero, ← h]
state_before: α : Type ?u.312782
β : Type ?u.312785
γ : Type ?u.312788
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
f : (a : Ordinal) → a < o → Ordinal
h : bsup o f = 0
i : Ordinal
hi : i < o
⊢ f i hi = 0

tactic: exact le_bsup f i hi
state_before: α : Type ?u.312782
β : Type ?u.312785
γ : Type ?u.312788
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
f : (a : Ordinal) → a < o → Ordinal
h : bsup o f = 0
i : Ordinal
hi : i < o
⊢ f i hi ≤ bsup o f
Theorem: mul_dvd_mul_iff_left
File: Mathlib/Algebra/GroupWithZero/Divisibility.lean

tactic: rw [mul_assoc, mul_right_inj' ha]
state_before: α : Type u_1
inst✝ : CancelMonoidWithZero α
a b c : α
ha : a ≠ 0
d : α
⊢ a * c = a * b * d ↔ c = b * d
Theorem: Set.restrict_extend_compl_range
File: Mathlib/Data/Set/Function.lean

tactic: classical
exact restrict_dite_compl _ _
state_before: α : Type u_3
β : Type u_1
γ : Type u_2
ι : Sort ?u.3746
π : α → Type ?u.3751
f : α → β
g : α → γ
g' : β → γ
⊢ restrict (range fᶜ) (extend f g g') = g' ∘ Subtype.val

tactic: exact restrict_dite_compl _ _
state_before: α : Type u_3
β : Type u_1
γ : Type u_2
ι : Sort ?u.3746
π : α → Type ?u.3751
f : α → β
g : α → γ
g' : β → γ
⊢ restrict (range fᶜ) (extend f g g') = g' ∘ Subtype.val
Theorem: LieSubalgebra.subsingleton_bot
File: Mathlib/Algebra/Lie/Subalgebra.lean

tactic: simp
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₂
⊢ Subsingleton ↑↑⊥
Theorem: isCycle_finRotate_of_le
File: Mathlib/GroupTheory/Perm/Fin.lean

tactic: obtain ⟨m, rfl⟩ := exists_add_of_le h
state_before: n : ℕ
h : 2 ≤ n
⊢ IsCycle (finRotate n)

tactic: rw [add_comm]
state_before: case intro
m : ℕ
h : 2 ≤ 2 + m
⊢ IsCycle (finRotate (2 + m))

tactic: exact isCycle_finRotate
state_before: case intro
m : ℕ
h : 2 ≤ 2 + m
⊢ IsCycle (finRotate (m + 2))
Theorem: Dense.denseRange_val
File: Mathlib/Topology/Basic.lean

tactic: simpa only [DenseRange, Subtype.range_coe_subtype]
state_before: α : Type u_1
β : Type ?u.174734
γ : Type ?u.174737
δ : Type ?u.174740
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
κ : Type ?u.174752
ι : Type ?u.174755
f : κ → β
g : β → γ
s : Set α
h : Dense s
⊢ DenseRange Subtype.val
Theorem: Real.isConjugateExponent_one_div
File: Mathlib/Data/Real/ConjugateExponents.lean

tactic: rw [lt_div_iff ha, one_mul]
state_before: a b : ℝ
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ 1 < 1 / a

tactic: linarith
state_before: a b : ℝ
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a < 1

tactic: simp_rw [one_div_one_div]
state_before: a b : ℝ
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ 1 / (1 / a) + 1 / (1 / b) = 1

tactic: exact hab
state_before: a b : ℝ
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a + b = 1
Theorem: SModEq.smul
File: Mathlib/LinearAlgebra/SModEq.lean

tactic: rw [SModEq.def] at hxy⊢
state_before: R : Type u_1
inst✝⁴ : Ring R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
U U₁ U₂ : Submodule R M
x x₁ x₂ y y₁ y₂ z z₁ z₂ : M
N : Type ?u.60443
inst✝¹ : AddCommGroup N
inst✝ : Module R N
V V₁ V₂ : Submodule R N
hxy : x ≡ y [SMOD U]
c : R
⊢ c • x ≡ c • y [SMOD U]

tactic: simp_rw [Quotient.mk_smul, hxy]
state_before: R : Type u_1
inst✝⁴ : Ring R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
U U₁ U₂ : Submodule R M
x x₁ x₂ y y₁ y₂ z z₁ z₂ : M
N : Type ?u.60443
inst✝¹ : AddCommGroup N
inst✝ : Module R N
V V₁ V₂ : Submodule R N
hxy : Submodule.Quotient.mk x = Submodule.Quotient.mk y
c : R
⊢ Submodule.Quotient.mk (c • x) = Submodule.Quotient.mk (c • y)
Theorem: Rat.divInt_sub_divInt
File: Std/Data/Rat/Lemmas.lean

tactic: simp only [Rat.sub_eq_add_neg, neg_divInt,
  divInt_add_divInt _ _ z₁ z₂, Int.neg_mul, Int.sub_eq_add_neg]
state_before: n₁ n₂ d₁ d₂ : Int
z₁ : d₁ ≠ 0
z₂ : d₂ ≠ 0
⊢ n₁ /. d₁ - n₂ /. d₂ = (n₁ * d₂ - n₂ * d₁) /. (d₁ * d₂)
Theorem: ZMod.inv_mul_of_unit
File: Mathlib/Data/ZMod/Basic.lean

tactic: rw [mul_comm, mul_inv_of_unit a h]
state_before: n : ℕ
a : ZMod n
h : IsUnit a
⊢ a⁻¹ * a = 1
Theorem: Subgroup.coe_eq_singleton
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: rw [hg]
state_before: G : Type u_1
G' : Type ?u.169479
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.169488
inst✝ : AddGroup A
H✝ K H : Subgroup G
x✝ : ∃ g, ↑H = {g}
g : G
hg : ↑H = {g}
⊢ Subsingleton ↑↑H

tactic: infer_instance
state_before: G : Type u_1
G' : Type ?u.169479
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.169488
inst✝ : AddGroup A
H✝ K H : Subgroup G
x✝ : ∃ g, ↑H = {g}
g : G
hg : ↑H = {g}
⊢ Subsingleton ↑{g}
Theorem: padicNorm.eq_zpow_of_nonzero
File: Mathlib/NumberTheory/Padics/PadicNorm.lean

tactic: simp [hq, padicNorm]
state_before: p : ℕ
q : ℚ
hq : q ≠ 0
⊢ padicNorm p q = ↑p ^ (-padicValRat p q)
Theorem: Finsupp.supported_inter
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: rw [Set.inter_eq_iInter, supported_iInter, iInf_bool_eq]
state_before: α : Type u_1
M : Type u_2
N : Type ?u.113043
P : Type ?u.113046
R : Type u_3
S : Type ?u.113052
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
s t : Set α
⊢ supported M R (s ∩ t) = supported M R s ⊓ supported M R t

tactic: rfl
state_before: α : Type u_1
M : Type u_2
N : Type ?u.113043
P : Type ?u.113046
R : Type u_3
S : Type ?u.113052
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
s t : Set α
⊢ supported M R (bif true then s else t) ⊓ supported M R (bif false then s else t) = supported M R s ⊓ supported M R t
Theorem: Subspace.dualCopairing_nondegenerate
File: Mathlib/LinearAlgebra/Dual.lean

tactic: constructor
state_before: K : Type u
inst✝⁴ : Field K
V₁ : Type v'
V₂ : Type v''
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
W : Subspace K V₁
⊢ LinearMap.Nondegenerate (dualCopairing W)

tactic: rw [LinearMap.separatingLeft_iff_ker_eq_bot, dualCopairing_eq]
state_before: case left
K : Type u
inst✝⁴ : Field K
V₁ : Type v'
V₂ : Type v''
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
W : Subspace K V₁
⊢ LinearMap.SeparatingLeft (dualCopairing W)

tactic: apply LinearEquiv.ker
state_before: case left
K : Type u
inst✝⁴ : Field K
V₁ : Type v'
V₂ : Type v''
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
W : Subspace K V₁
⊢ LinearMap.ker ↑(LinearEquiv.symm (dualQuotEquivDualAnnihilator W)) = ⊥

tactic: rintro ⟨x⟩
state_before: case right
K : Type u
inst✝⁴ : Field K
V₁ : Type v'
V₂ : Type v''
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
W : Subspace K V₁
⊢ LinearMap.SeparatingRight (dualCopairing W)

tactic: simp only [Quotient.quot_mk_eq_mk, dualCopairing_apply, Quotient.mk_eq_zero]
state_before: case right.mk
K : Type u
inst✝⁴ : Field K
V₁ : Type v'
V₂ : Type v''
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
W : Subspace K V₁
y✝ : V₁ ⧸ W
x : V₁
⊢ (∀ (x_1 : { x // x ∈ dualAnnihilator W }), ↑(↑(dualCopairing W) x_1) (Quot.mk Setoid.r x) = 0) →
    Quot.mk Setoid.r x = 0

tactic: rw [← forall_mem_dualAnnihilator_apply_eq_zero_iff, SetLike.forall]
state_before: case right.mk
K : Type u
inst✝⁴ : Field K
V₁ : Type v'
V₂ : Type v''
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
W : Subspace K V₁
y✝ : V₁ ⧸ W
x : V₁
⊢ (∀ (x_1 : { x // x ∈ dualAnnihilator W }), ↑x_1 x = 0) → x ∈ W

tactic: exact id
state_before: case right.mk
K : Type u
inst✝⁴ : Field K
V₁ : Type v'
V₂ : Type v''
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
W : Subspace K V₁
y✝ : V₁ ⧸ W
x : V₁
⊢ (∀ (x_1 : Dual K V₁) (h : x_1 ∈ dualAnnihilator W), ↑{ val := x_1, property := h } x = 0) →
    ∀ (φ : Dual K V₁), φ ∈ dualAnnihilator W → ↑φ x = 0
Theorem: Submodule.sub_mem_orthogonal_of_inner_left
File: Mathlib/Analysis/InnerProductSpace/Orthogonal.lean

tactic: rw [mem_orthogonal']
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.32170
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
K : Submodule 𝕜 E
x y : E
h : ∀ (v : { x // x ∈ K }), inner x ↑v = inner y ↑v
⊢ x - y ∈ Kᗮ

tactic: intro u hu
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.32170
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
K : Submodule 𝕜 E
x y : E
h : ∀ (v : { x // x ∈ K }), inner x ↑v = inner y ↑v
⊢ ∀ (u : E), u ∈ K → inner (x - y) u = 0

tactic: rw [inner_sub_left, sub_eq_zero]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.32170
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
K : Submodule 𝕜 E
x y : E
h : ∀ (v : { x // x ∈ K }), inner x ↑v = inner y ↑v
u : E
hu : u ∈ K
⊢ inner (x - y) u = 0

tactic: exact h ⟨u, hu⟩
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.32170
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
K : Submodule 𝕜 E
x y : E
h : ∀ (v : { x // x ∈ K }), inner x ↑v = inner y ↑v
u : E
hu : u ∈ K
⊢ inner x u = inner y u
Theorem: FiniteDimensional.fintype_card_le_finrank_of_linearIndependent
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: simpa using cardinal_mk_le_finrank_of_linearIndependent h
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
ι : Type u_1
inst✝ : Fintype ι
b : ι → V
h : LinearIndependent K b
⊢ Fintype.card ι ≤ finrank K V
Theorem: continuous_sSup_dom
File: Mathlib/Topology/Order.lean

tactic: simp only [continuous_iff_le_induced, sSup_le_iff]
state_before: α : Type u
β : Type v
γ : Type ?u.39116
f : α → β
ι : Sort ?u.39123
T : Set (TopologicalSpace α)
t₂ : TopologicalSpace β
⊢ Continuous f ↔ ∀ (t : TopologicalSpace α), t ∈ T → Continuous f
Theorem: hasDerivAt_mul_const
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: simpa only [one_mul] using (hasDerivAt_id' x).mul_const c
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 L₁ L₂ : Filter 𝕜
𝕜' : Type ?u.253544
𝔸 : Type ?u.253547
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c✝ d : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
c : 𝕜
⊢ HasDerivAt (fun x => x * c) c x
Theorem: Set.pi_diff_pi_subset
File: Mathlib/Data/Set/Lattice.lean

tactic: refine' diff_subset_comm.2 fun x hx a ha => _
state_before: α : Type u_1
β : Type ?u.287119
γ : Type ?u.287122
ι : Sort ?u.287125
ι' : Sort ?u.287128
ι₂ : Sort ?u.287131
κ : ι → Sort ?u.287136
κ₁ : ι → Sort ?u.287141
κ₂ : ι → Sort ?u.287146
κ' : ι' → Sort ?u.287151
π : α → Type u_2
i : Set α
s t : (a : α) → Set (π a)
⊢ pi i s \ pi i t ⊆ ⋃ (a : α) (_ : a ∈ i), eval a ⁻¹' (s a \ t a)

tactic: simp only [mem_diff, mem_pi, mem_iUnion, not_exists, mem_preimage, not_and, not_not,
  eval_apply] at hx
state_before: α : Type u_1
β : Type ?u.287119
γ : Type ?u.287122
ι : Sort ?u.287125
ι' : Sort ?u.287128
ι₂ : Sort ?u.287131
κ : ι → Sort ?u.287136
κ₁ : ι → Sort ?u.287141
κ₂ : ι → Sort ?u.287146
κ' : ι' → Sort ?u.287151
π : α → Type u_2
i : Set α
s t : (a : α) → Set (π a)
x : (i : α) → π i
hx : x ∈ pi i s \ ⋃ (a : α) (_ : a ∈ i), eval a ⁻¹' (s a \ t a)
a : α
ha : a ∈ i
⊢ x a ∈ t a

tactic: exact hx.2 _ ha (hx.1 _ ha)
state_before: α : Type u_1
β : Type ?u.287119
γ : Type ?u.287122
ι : Sort ?u.287125
ι' : Sort ?u.287128
ι₂ : Sort ?u.287131
κ : ι → Sort ?u.287136
κ₁ : ι → Sort ?u.287141
κ₂ : ι → Sort ?u.287146
κ' : ι' → Sort ?u.287151
π : α → Type u_2
i : Set α
s t : (a : α) → Set (π a)
x : (i : α) → π i
a : α
ha : a ∈ i
hx : (∀ (i_1 : α), i_1 ∈ i → x i_1 ∈ s i_1) ∧ ∀ (x_1 : α), x_1 ∈ i → eval x_1 x ∈ s x_1 → eval x_1 x ∈ t x_1
⊢ x a ∈ t a
Theorem: Set.left_mem_Ici
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type ?u.4607
inst✝ : Preorder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ a ∈ Ici a
Theorem: Multiset.card_antidiagonal
File: Mathlib/Data/Multiset/Antidiagonal.lean

tactic: have := card_powerset s
state_before: α : Type u_1
β : Type ?u.25052
s : Multiset α
⊢ ↑card (antidiagonal s) = 2 ^ ↑card s

tactic: rwa [← antidiagonal_map_fst, card_map] at this
state_before: α : Type u_1
β : Type ?u.25052
s : Multiset α
this : ↑card (powerset s) = 2 ^ ↑card s
⊢ ↑card (antidiagonal s) = 2 ^ ↑card s
Theorem: Array.foldrM_push'
File: Std/Data/Array/Init/Lemmas.lean

tactic: simp [← foldrM_push]
state_before: m : Type u_1 → Type u_2
α : Type u_3
β : Type u_1
inst✝ : Monad m
f : α → β → m β
init : β
arr : Array α
a : α
⊢ foldrM f init (push arr a) (size arr + 1) = do
    let init ← f a init
    foldrM f init arr (size arr)
Theorem: Subalgebra.eq_bot_of_finrank_one
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: haveI : FiniteDimensional F S := finiteDimensional_of_finrank_eq_succ h
state_before: K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : finrank F { x // x ∈ S } = 1
⊢ Module.rank F { x // x ∈ S } ≤ 1

tactic: rw [← finrank_eq_rank, h, Nat.cast_one]
state_before: K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : finrank F { x // x ∈ S } = 1
this : FiniteDimensional F { x // x ∈ S }
⊢ Module.rank F { x // x ∈ S } ≤ 1
Theorem: derivWithin_const_add
File: Mathlib/Analysis/Calculus/Deriv/Add.lean

tactic: simp only [derivWithin, fderivWithin_const_add 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 𝕜
hxs : UniqueDiffWithinAt 𝕜 s x
c : F
⊢ derivWithin (fun y => c + f y) s x = derivWithin f s x
Theorem: Mathlib.Tactic.Ring.neg_add
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R✝ : Type ?u.213656
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a₁ a₂ b₁ b₂ : R
x✝¹ : -a₁ = b₁
x✝ : -a₂ = b₂
⊢ -(a₁ + a₂) = b₁ + b₂

tactic: simp [add_comm]
state_before: u : Lean.Level
R✝ : Type ?u.213656
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a₁ a₂ : R
⊢ -(a₁ + a₂) = -a₁ + -a₂