1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: max_def_lt
File: Mathlib/Order/Basic.lean

tactic: rw [max_comm, max_def, ← ite_not]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
p : α → Prop
x✝ y✝ x y : α
⊢ max x y = if x < y then y else x
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
p : α → Prop
x✝ y✝ x y : α
⊢ (if ¬y ≤ x then y else x) = if x < y then y else x

tactic: simp only [not_le]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : LinearOrder α
p : α → Prop
x✝ y✝ x y : α
⊢ (if ¬y ≤ x then y else x) = if x < y then y else x
state_after: no goals
Theorem: Ordnode.balancedSz_zero
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: simp (config := { contextual := true }) [BalancedSz]
state_before: α : Type u_1
l : ℕ
⊢ BalancedSz l 0 ↔ l ≤ 1
state_after: no goals
Theorem: IsClosed.isNowhereDense_iff
File: Mathlib/Topology/GDelta.lean

tactic: rw [IsNowhereDense, IsClosed.closure_eq hs]
state_before: X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
X : Type u_5
inst✝ : TopologicalSpace X
s : Set X
hs : IsClosed s
⊢ IsNowhereDense s ↔ interior s = ∅
state_after: no goals
Theorem: Metric.finite_isBounded_inter_isClosed
File: Mathlib/Topology/MetricSpace/Bounded.lean

tactic: refine Set.Finite.subset (IsCompact.finite ?_ ?_) (Set.inter_subset_inter_left s subset_closure)
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝² : PseudoMetricSpace α
inst✝¹ : ProperSpace α
K s : Set α
inst✝ : DiscreteTopology ↑s
hK : IsBounded K
hs : IsClosed s
⊢ (K ∩ s).Finite
state_after: case refine_1
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝² : PseudoMetricSpace α
inst✝¹ : ProperSpace α
K s : Set α
inst✝ : DiscreteTopology ↑s
hK : IsBounded K
hs : IsClosed s
⊢ IsCompact (closure K ∩ s)

case refine_2
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝² : PseudoMetricSpace α
inst✝¹ : ProperSpace α
K s : Set α
inst✝ : DiscreteTopology ↑s
hK : IsBounded K
hs : IsClosed s
⊢ DiscreteTopology ↑(closure K ∩ s)

tactic: exact hK.isCompact_closure.inter_right hs
state_before: case refine_1
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝² : PseudoMetricSpace α
inst✝¹ : ProperSpace α
K s : Set α
inst✝ : DiscreteTopology ↑s
hK : IsBounded K
hs : IsClosed s
⊢ IsCompact (closure K ∩ s)
state_after: no goals

tactic: exact DiscreteTopology.of_subset inferInstance Set.inter_subset_right
state_before: case refine_2
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝² : PseudoMetricSpace α
inst✝¹ : ProperSpace α
K s : Set α
inst✝ : DiscreteTopology ↑s
hK : IsBounded K
hs : IsClosed s
⊢ DiscreteTopology ↑(closure K ∩ s)
state_after: no goals
Theorem: SimpleGraph.Walk.edges_subset_edgeSet
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: cases h
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h' : G.Adj u v✝
p' : G.Walk v✝ v
e : Sym2 V
h : e ∈ (cons h' p').edges
⊢ e ∈ G.edgeSet
state_after: case head
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h' : G.Adj u v✝
p' : G.Walk v✝ v
⊢ { toProd := (u, v✝), adj := h' }.edge ∈ G.edgeSet

case tail
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h' : G.Adj u v✝
p' : G.Walk v✝ v
e : Sym2 V
a✝ : List.Mem e (List.map Dart.edge p'.darts)
⊢ e ∈ G.edgeSet

tactic: next h' => exact edges_subset_edgeSet p' h'
state_before: case tail
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h' : G.Adj u v✝
p' : G.Walk v✝ v
e : Sym2 V
a✝ : List.Mem e (List.map Dart.edge p'.darts)
⊢ e ∈ G.edgeSet
state_after: no goals

tactic: exact h'
state_before: case head
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h' : G.Adj u v✝
p' : G.Walk v✝ v
⊢ { toProd := (u, v✝), adj := h' }.edge ∈ G.edgeSet
state_after: no goals

tactic: exact edges_subset_edgeSet p' h'
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h'✝ : G.Adj u v✝
p' : G.Walk v✝ v
e : Sym2 V
h' : List.Mem e (List.map Dart.edge p'.darts)
⊢ e ∈ G.edgeSet
state_after: no goals
Theorem: Subgroup.exists_right_transversal
File: Mathlib/GroupTheory/Complement.lean

tactic: refine
  ⟨Set.range (Function.update Quotient.out' _ g), range_mem_rightTransversals fun q => ?_,
    Quotient.mk'' g, Function.update_same (Quotient.mk'' g) g Quotient.out'⟩
state_before: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H : Subgroup G
g : G
⊢ ∃ S ∈ rightTransversals ↑H, g ∈ S
state_after: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H : Subgroup G
g : G
q : Quotient (QuotientGroup.rightRel H)
⊢ Quotient.mk'' (Function.update Quotient.out' (Quotient.mk'' g) g q) = q

tactic: by_cases hq : q = Quotient.mk'' g
state_before: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H : Subgroup G
g : G
q : Quotient (QuotientGroup.rightRel H)
⊢ Quotient.mk'' (Function.update Quotient.out' (Quotient.mk'' g) g q) = q
state_after: case pos
G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H : Subgroup G
g : G
q : Quotient (QuotientGroup.rightRel H)
hq : q = Quotient.mk'' g
⊢ Quotient.mk'' (Function.update Quotient.out' (Quotient.mk'' g) g q) = q

case neg
G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H : Subgroup G
g : G
q : Quotient (QuotientGroup.rightRel H)
hq : ¬q = Quotient.mk'' g
⊢ Quotient.mk'' (Function.update Quotient.out' (Quotient.mk'' g) g q) = q

tactic: exact hq.symm ▸ congr_arg _ (Function.update_same (Quotient.mk'' g) g Quotient.out')
state_before: case pos
G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H : Subgroup G
g : G
q : Quotient (QuotientGroup.rightRel H)
hq : q = Quotient.mk'' g
⊢ Quotient.mk'' (Function.update Quotient.out' (Quotient.mk'' g) g q) = q
state_after: no goals

tactic: exact Eq.trans (congr_arg _ (Function.update_noteq hq g Quotient.out')) q.out_eq'
state_before: case neg
G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H : Subgroup G
g : G
q : Quotient (QuotientGroup.rightRel H)
hq : ¬q = Quotient.mk'' g
⊢ Quotient.mk'' (Function.update Quotient.out' (Quotient.mk'' g) g q) = q
state_after: no goals
Theorem: SemidirectProduct.lift_inl
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: simp [lift]
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
n : N
⊢ (lift f₁ f₂ h) (inl n) = f₁ n
state_after: no goals
Theorem: re_inner_eq_norm_add_mul_self_sub_norm_mul_self_sub_norm_mul_self_div_two
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [@norm_add_mul_self 𝕜]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
⊢ re ⟪x, y⟫_𝕜 = (‖x + y‖ * ‖x + y‖ - ‖x‖ * ‖x‖ - ‖y‖ * ‖y‖) / 2
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
⊢ re ⟪x, y⟫_𝕜 = (‖x‖ * ‖x‖ + 2 * re ⟪x, y⟫_𝕜 + ‖y‖ * ‖y‖ - ‖x‖ * ‖x‖ - ‖y‖ * ‖y‖) / 2

tactic: ring
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
⊢ re ⟪x, y⟫_𝕜 = (‖x‖ * ‖x‖ + 2 * re ⟪x, y⟫_𝕜 + ‖y‖ * ‖y‖ - ‖x‖ * ‖x‖ - ‖y‖ * ‖y‖) / 2
state_after: no goals
Theorem: Subsemigroup.coe_iInf
File: Mathlib/Algebra/Group/Subsemigroup/Basic.lean

tactic: simp only [iInf, coe_sInf, Set.biInter_range]
state_before: M : Type u_1
N : Type u_2
A : Type u_3
inst✝¹ : Mul M
s : Set M
inst✝ : Add A
t : Set A
S✝ : Subsemigroup M
ι : Sort u_4
S : ι → Subsemigroup M
⊢ ↑(⨅ i, S i) = ⋂ i, ↑(S i)
state_after: no goals
Theorem: compare_gt_iff_gt
File: Mathlib/Init/Order/Defs.lean

tactic: rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
state_before: α : Type u
inst✝ : LinearOrder α
a b : α
⊢ compare a b = Ordering.gt ↔ a > b
state_after: α : Type u
inst✝ : LinearOrder α
a b : α
⊢ (if a < b then Ordering.lt else if a = b then Ordering.eq else Ordering.gt) = Ordering.gt ↔ a > b

tactic: split_ifs <;> simp only [*, lt_irrefl, not_lt_of_gt]
state_before: α : Type u
inst✝ : LinearOrder α
a b : α
⊢ (if a < b then Ordering.lt else if a = b then Ordering.eq else Ordering.gt) = Ordering.gt ↔ a > b
state_after: case neg
α : Type u
inst✝ : LinearOrder α
a b : α
h✝¹ : ¬a < b
h✝ : ¬a = b
⊢ True ↔ a > b

tactic: case _ h₁ h₂ =>
  have h : b < a := lt_trichotomy a b |>.resolve_left h₁ |>.resolve_left h₂
  exact true_iff_iff.2 h
state_before: case neg
α : Type u
inst✝ : LinearOrder α
a b : α
h✝¹ : ¬a < b
h✝ : ¬a = b
⊢ True ↔ a > b
state_after: no goals

tactic: have h : b < a := lt_trichotomy a b |>.resolve_left h₁ |>.resolve_left h₂
state_before: α : Type u
inst✝ : LinearOrder α
a b : α
h₁ : ¬a < b
h₂ : ¬a = b
⊢ True ↔ a > b
state_after: α : Type u
inst✝ : LinearOrder α
a b : α
h₁ : ¬a < b
h₂ : ¬a = b
h : b < a
⊢ True ↔ a > b

tactic: exact true_iff_iff.2 h
state_before: α : Type u
inst✝ : LinearOrder α
a b : α
h₁ : ¬a < b
h₂ : ¬a = b
h : b < a
⊢ True ↔ a > b
state_after: no goals
Theorem: LieSubalgebra.mem_normalizer_iff
File: Mathlib/Algebra/Lie/Normalizer.lean

tactic: rw [mem_normalizer_iff']
state_before: R : Type u_1
L : Type u_2
M : Type u_3
M' : Type u_4
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
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
x : L
⊢ x ∈ H.normalizer ↔ ∀ y ∈ H, ⁅x, y⁆ ∈ H
state_after: R : Type u_1
L : Type u_2
M : Type u_3
M' : Type u_4
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
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
x : L
⊢ (∀ y ∈ H, ⁅y, x⁆ ∈ H) ↔ ∀ y ∈ H, ⁅x, y⁆ ∈ H

tactic: refine forall₂_congr fun y hy => ?_
state_before: R : Type u_1
L : Type u_2
M : Type u_3
M' : Type u_4
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
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
x : L
⊢ (∀ y ∈ H, ⁅y, x⁆ ∈ H) ↔ ∀ y ∈ H, ⁅x, y⁆ ∈ H
state_after: R : Type u_1
L : Type u_2
M : Type u_3
M' : Type u_4
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
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
x y : L
hy : y ∈ H
⊢ ⁅y, x⁆ ∈ H ↔ ⁅x, y⁆ ∈ H

tactic: rw [← lie_skew, neg_mem_iff (G := L)]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
M' : Type u_4
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
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
x y : L
hy : y ∈ H
⊢ ⁅y, x⁆ ∈ H ↔ ⁅x, y⁆ ∈ H
state_after: no goals
Theorem: Finmap.insert_insert_of_ne
File: Mathlib/Data/Finmap.lean

tactic: simp only [insert_toFinmap, AList.toFinmap_eq, AList.insert_insert_of_ne _ h]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a a' : α
b : β a
b' : β a'
s✝ : Finmap β
h : a ≠ a'
s : AList β
⊢ insert a' b' (insert a b ⟦s⟧) = insert a b (insert a' b' ⟦s⟧)
state_after: no goals
Theorem: ite_mul_one
File: Mathlib/Algebra/Group/Basic.lean

tactic: by_cases h:P <;> simp [h]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M✝ : Type u_4
M : Type u
inst✝¹ : MulOneClass M
P : Prop
inst✝ : Decidable P
a b : M
⊢ (if P then a * b else 1) = (if P then a else 1) * if P then b else 1
state_after: no goals
Theorem: FormalMultilinearSeries.constFormalMultilinearSeries_radius
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: simp [constFormalMultilinearSeries]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
v : F
⊢ ∀ (m : ℕ), constFormalMultilinearSeries 𝕜 E v (m + 1) = 0
state_after: no goals
Theorem: LieHom.surjective_rangeRestrict
File: Mathlib/Algebra/Lie/Subalgebra.lean

tactic: rintro ⟨y, hy⟩
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₂
⊢ Function.Surjective ⇑f.rangeRestrict
state_after: case mk
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₂
y : L₂
hy : y ∈ f.range
⊢ ∃ a, f.rangeRestrict a = ⟨y, hy⟩

tactic: erw [mem_range] at hy
state_before: case mk
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₂
y : L₂
hy : y ∈ f.range
⊢ ∃ a, f.rangeRestrict a = ⟨y, hy⟩
state_after: case mk
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₂
y : L₂
hy✝ : y ∈ f.range
hy : ∃ y_1, f y_1 = y
⊢ ∃ a, f.rangeRestrict a = ⟨y, hy✝⟩

tactic: obtain ⟨x, rfl⟩ := hy
state_before: case mk
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₂
y : L₂
hy✝ : y ∈ f.range
hy : ∃ y_1, f y_1 = y
⊢ ∃ a, f.rangeRestrict a = ⟨y, hy✝⟩
state_after: case mk.intro
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₂
x : L
hy : f x ∈ f.range
⊢ ∃ a, f.rangeRestrict a = ⟨f x, hy⟩

tactic: use x
state_before: case mk.intro
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₂
x : L
hy : f x ∈ f.range
⊢ ∃ a, f.rangeRestrict a = ⟨f x, hy⟩
state_after: case h
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₂
x : L
hy : f x ∈ f.range
⊢ f.rangeRestrict x = ⟨f x, hy⟩

tactic: simp only [Subtype.mk_eq_mk, rangeRestrict_apply]
state_before: case h
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₂
x : L
hy : f x ∈ f.range
⊢ f.rangeRestrict x = ⟨f x, hy⟩
state_after: no goals
Theorem: LinearIndependent.image
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: convert LinearIndependent.image_of_comp s f id hs
state_before: ι✝ : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι✝ → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
ι : Type u_8
s : Set ι
f : ι → M
hs : LinearIndependent R fun (x : ↑s) => f ↑x
⊢ LinearIndependent R fun (x : ↑(f '' s)) => ↑x
state_after: no goals
Theorem: ProbabilityTheory.kernel.compProd_zero_left
File: Mathlib/Probability/Kernel/Composition.lean

tactic: by_cases h : IsSFiniteKernel κ
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel (α × β) γ)
⊢ 0 ⊗ₖ κ = 0
state_after: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel (α × β) γ)
h : IsSFiniteKernel κ
⊢ 0 ⊗ₖ κ = 0

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel κ
⊢ 0 ⊗ₖ κ = 0

tactic: ext a s hs
state_before: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel (α × β) γ)
h : IsSFiniteKernel κ
⊢ 0 ⊗ₖ κ = 0
state_after: case pos.h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s✝ : Set (β × γ)
κ : ↥(kernel (α × β) γ)
h : IsSFiniteKernel κ
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ((0 ⊗ₖ κ) a) s = (0 a) s

tactic: rw [kernel.compProd_apply _ _ _ hs]
state_before: case pos.h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s✝ : Set (β × γ)
κ : ↥(kernel (α × β) γ)
h : IsSFiniteKernel κ
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ((0 ⊗ₖ κ) a) s = (0 a) s
state_after: case pos.h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s✝ : Set (β × γ)
κ : ↥(kernel (α × β) γ)
h : IsSFiniteKernel κ
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ∫⁻ (b : β), (κ (a, b)) {c | (b, c) ∈ s} ∂0 a = (0 a) s

tactic: simp
state_before: case pos.h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s✝ : Set (β × γ)
κ : ↥(kernel (α × β) γ)
h : IsSFiniteKernel κ
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ∫⁻ (b : β), (κ (a, b)) {c | (b, c) ∈ s} ∂0 a = (0 a) s
state_after: no goals

tactic: rw [kernel.compProd_of_not_isSFiniteKernel_right _ _ h]
state_before: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel κ
⊢ 0 ⊗ₖ κ = 0
state_after: no goals
Theorem: ZFSet.toSet_empty
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: simp [toSet]
state_before: ⊢ ∅.toSet = ∅
state_after: no goals
Theorem: wittStructureRat_prop
File: Mathlib/RingTheory/WittVector/StructurePolynomial.lean

tactic: rw [bind₁_bind₁]
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ (bind₁ (wittStructureRat p Φ)) (W_ ℚ n) =
    (bind₁ fun k => (bind₁ fun i => (rename (Prod.mk i)) (W_ ℚ k)) Φ) ((bind₁ (xInTermsOfW p ℚ)) (W_ ℚ n))
state_after: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ (bind₁ (wittStructureRat p Φ)) (W_ ℚ n) =
    (bind₁ fun i => (bind₁ fun k => (bind₁ fun i => (rename (Prod.mk i)) (W_ ℚ k)) Φ) (xInTermsOfW p ℚ i)) (W_ ℚ n)

tactic: exact eval₂Hom_congr (RingHom.ext_rat _ _) rfl rfl
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ (bind₁ (wittStructureRat p Φ)) (W_ ℚ n) =
    (bind₁ fun i => (bind₁ fun k => (bind₁ fun i => (rename (Prod.mk i)) (W_ ℚ k)) Φ) (xInTermsOfW p ℚ i)) (W_ ℚ n)
state_after: no goals

tactic: rw [bind₁_xInTermsOfW_wittPolynomial p _ n, bind₁_X_right]
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ (bind₁ fun k => (bind₁ fun i => (rename (Prod.mk i)) (W_ ℚ k)) Φ) ((bind₁ (xInTermsOfW p ℚ)) (W_ ℚ n)) =
    (bind₁ fun i => (rename (Prod.mk i)) (W_ ℚ n)) Φ
state_after: no goals
Theorem: LinearMap.comap_codRestrict
File: Mathlib/Algebra/Module/Submodule/Map.lean

tactic: rintro ⟨⟨_, _⟩, h, ⟨⟩⟩
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M₁
inst✝⁴ : Module R M
inst✝³ : Module R M₁
inst✝² : Semiring R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
σ₂₁ : R₂ →+* R
p : Submodule R M
f : M₂ →ₛₗ[σ₂₁] M
hf : ∀ (c : M₂), f c ∈ p
p' : Submodule R ↥p
x : M₂
⊢ x ∈ comap f (map p.subtype p') → x ∈ comap (codRestrict p f hf) p'
state_after: case intro.mk.intro.refl
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M₁
inst✝⁴ : Module R M
inst✝³ : Module R M₁
inst✝² : Semiring R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
σ₂₁ : R₂ →+* R
p : Submodule R M
f : M₂ →ₛₗ[σ₂₁] M
hf : ∀ (c : M₂), f c ∈ p
p' : Submodule R ↥p
x : M₂
property✝ : f.toAddHom.1 x ∈ p
h : ⟨f.toAddHom.1 x, property✝⟩ ∈ ↑p'
⊢ x ∈ comap (codRestrict p f hf) p'

tactic: exact h
state_before: case intro.mk.intro.refl
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M₁
inst✝⁴ : Module R M
inst✝³ : Module R M₁
inst✝² : Semiring R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
σ₂₁ : R₂ →+* R
p : Submodule R M
f : M₂ →ₛₗ[σ₂₁] M
hf : ∀ (c : M₂), f c ∈ p
p' : Submodule R ↥p
x : M₂
property✝ : f.toAddHom.1 x ∈ p
h : ⟨f.toAddHom.1 x, property✝⟩ ∈ ↑p'
⊢ x ∈ comap (codRestrict p f hf) p'
state_after: no goals
Theorem: Cardinal.mk_coe_finset
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp
state_before: α✝ β α : Type u
s : Finset α
⊢ #{ x // x ∈ s } = ↑s.card
state_after: no goals
Theorem: DihedralGroup.div_four_lt
File: Mathlib/GroupTheory/CommutingProbability.lean

tactic: decide
state_before: M : Type u_1
inst✝³ : Mul M
inst✝² : Finite M
G : Type u_2
inst✝¹ : Group G
inst✝ : Finite G
H : Subgroup G
⊢ 3 ≠ 0 → 3 ≠ 1 → 3 / 4 + 1 < 3
state_after: no goals

tactic: omega
state_before: M : Type u_1
inst✝³ : Mul M
inst✝² : Finite M
G : Type u_2
inst✝¹ : Group G
inst✝ : Finite G
H : Subgroup G
n : ℕ
⊢ n + 4 ≠ 0 → n + 4 ≠ 1 → (n + 4) / 4 + 1 < n + 4
state_after: no goals
Theorem: Finset.prod_congr
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [h]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid β
h : s₁ = s₂
⊢ (∀ x ∈ s₂, f x = g x) → s₁.prod f = s₂.prod g
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid β
h : s₁ = s₂
⊢ (∀ x ∈ s₂, f x = g x) → s₂.prod f = s₂.prod g

tactic: exact fold_congr
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid β
h : s₁ = s₂
⊢ (∀ x ∈ s₂, f x = g x) → s₂.prod f = s₂.prod g
state_after: no goals
Theorem: Cardinal.mk_compl_of_infinite
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: refine eq_of_add_eq_of_aleph0_le ?_ h2 (aleph0_le_mk α)
state_before: α : Type u_1
inst✝ : Infinite α
s : Set α
h2 : #↑s < #α
⊢ #↑sᶜ = #α
state_after: α : Type u_1
inst✝ : Infinite α
s : Set α
h2 : #↑s < #α
⊢ #↑s + #↑sᶜ = #α

tactic: exact mk_sum_compl s
state_before: α : Type u_1
inst✝ : Infinite α
s : Set α
h2 : #↑s < #α
⊢ #↑s + #↑sᶜ = #α
state_after: no goals
Theorem: NonUnitalAlgebra.mem_sInf
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

tactic: simp only [← SetLike.mem_coe, coe_sInf, Set.mem_iInter₂]
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
S : Set (NonUnitalSubalgebra R A)
x : A
⊢ x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p
state_after: no goals