1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: LinearIndependent.cardinal_lift_le_rank
File: Mathlib/LinearAlgebra/Dimension/Basic.lean

tactic: rw [Module.rank]
state_before: R : Type u
R' : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : Ring R'
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Module R' M'
inst✝¹ : Module R' M₁
inst✝ : Nontrivial R
ι : Type w
v : ι → M
hv : LinearIndependent R v
⊢ lift.{v, w} #ι ≤ lift.{w, v} (Module.rank R M)
state_after: R : Type u
R' : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : Ring R'
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Module R' M'
inst✝¹ : Module R' M₁
inst✝ : Nontrivial R
ι : Type w
v : ι → M
hv : LinearIndependent R v
⊢ lift.{v, w} #ι ≤ lift.{w, v} (⨆ ι, #↑↑ι)

tactic: refine le_trans ?_ (lift_le.mpr <| le_ciSup (bddAbove_range.{v, v} _) ⟨_, hv.coe_range⟩)
state_before: R : Type u
R' : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : Ring R'
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Module R' M'
inst✝¹ : Module R' M₁
inst✝ : Nontrivial R
ι : Type w
v : ι → M
hv : LinearIndependent R v
⊢ lift.{v, w} #ι ≤ lift.{w, v} (⨆ ι, #↑↑ι)
state_after: R : Type u
R' : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : Ring R'
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Module R' M'
inst✝¹ : Module R' M₁
inst✝ : Nontrivial R
ι : Type w
v : ι → M
hv : LinearIndependent R v
⊢ lift.{v, w} #ι ≤ lift.{w, v} #↑↑⟨range v, ⋯⟩

tactic: exact lift_mk_le'.mpr ⟨(Equiv.ofInjective _ hv.injective).toEmbedding⟩
state_before: R : Type u
R' : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : Ring R'
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Module R' M'
inst✝¹ : Module R' M₁
inst✝ : Nontrivial R
ι : Type w
v : ι → M
hv : LinearIndependent R v
⊢ lift.{v, w} #ι ≤ lift.{w, v} #↑↑⟨range v, ⋯⟩
state_after: no goals
Theorem: Polynomial.mem_lifts
File: Mathlib/Algebra/Polynomial/Lifts.lean

tactic: simp only [coe_mapRingHom, lifts, RingHom.mem_rangeS]
state_before: R : Type u
inst✝¹ : Semiring R
S : Type v
inst✝ : Semiring S
f : R →+* S
p : S[X]
⊢ p ∈ lifts f ↔ ∃ q, map f q = p
state_after: no goals
Theorem: CategoryTheory.Idempotents.Karoubi.hom_ext_iff
File: Mathlib/CategoryTheory/Idempotents/Karoubi.lean

tactic: constructor
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
f g : P ⟶ Q
⊢ f = g ↔ f.f = g.f
state_after: case mp
C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
f g : P ⟶ Q
⊢ f = g → f.f = g.f

case mpr
C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
f g : P ⟶ Q
⊢ f.f = g.f → f = g

tactic: intro h
state_before: case mp
C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
f g : P ⟶ Q
⊢ f = g → f.f = g.f
state_after: case mp
C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
f g : P ⟶ Q
h : f = g
⊢ f.f = g.f

tactic: rw [h]
state_before: case mp
C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
f g : P ⟶ Q
h : f = g
⊢ f.f = g.f
state_after: no goals

tactic: apply Hom.ext
state_before: case mpr
C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
f g : P ⟶ Q
⊢ f.f = g.f → f = g
state_after: no goals
Theorem: HasSum.norm_le_of_bounded
File: Mathlib/Analysis/Normed/Group/InfiniteSum.lean

tactic: classical exact le_of_tendsto_of_tendsto' hf.norm hg fun _s ↦ norm_sum_le_of_le _ fun i _hi ↦ h i
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
a : E
b : ℝ
hf : HasSum f a
hg : HasSum g b
h : ∀ (i : ι), ‖f i‖ ≤ g i
⊢ ‖a‖ ≤ b
state_after: no goals

tactic: exact le_of_tendsto_of_tendsto' hf.norm hg fun _s ↦ norm_sum_le_of_le _ fun i _hi ↦ h i
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
a : E
b : ℝ
hf : HasSum f a
hg : HasSum g b
h : ∀ (i : ι), ‖f i‖ ≤ g i
⊢ ‖a‖ ≤ b
state_after: no goals
Theorem: Fin.coe_cycleRange_of_lt
File: Mathlib/GroupTheory/Perm/Fin.lean

tactic: rw [coe_cycleRange_of_le h.le, if_neg h.ne]
state_before: n : ℕ
i j : Fin n.succ
h : j < i
⊢ ↑(i.cycleRange j) = ↑j + 1
state_after: no goals
Theorem: Finmap.mem_erase
File: Mathlib/Data/Finmap.lean

tactic: simp
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a a' : α
s✝ : Finmap β
s : AList β
⊢ a' ∈ erase a ⟦s⟧ ↔ a' ≠ a ∧ a' ∈ ⟦s⟧
state_after: no goals
Theorem: List.Chain'.count_not_eq_count
File: Mathlib/Data/Bool/Count.lean

tactic: cases' l with x l
state_before: l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) l
h2 : Even l.length
b : Bool
⊢ count (!b) l = count b l
state_after: case nil
b : Bool
hl : Chain' (fun x x_1 => x ≠ x_1) []
h2 : Even [].length
⊢ count (!b) [] = count b []

case cons
b x : Bool
l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) (x :: l)
h2 : Even (x :: l).length
⊢ count (!b) (x :: l) = count b (x :: l)

tactic: rw [length_cons, Nat.even_add_one, Nat.not_even_iff] at h2
state_before: case cons
b x : Bool
l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) (x :: l)
h2 : Even (x :: l).length
⊢ count (!b) (x :: l) = count b (x :: l)
state_after: case cons
b x : Bool
l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) (x :: l)
h2 : l.length % 2 = 1
⊢ count (!b) (x :: l) = count b (x :: l)

tactic: suffices count (!x) (x :: l) = count x (x :: l) by
  cases b <;> cases x <;>
  revert this <;> simp only [Bool.not_false, Bool.not_true] <;> intro this <;>
  (try exact this) <;> exact this.symm
state_before: case cons
b x : Bool
l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) (x :: l)
h2 : l.length % 2 = 1
⊢ count (!b) (x :: l) = count b (x :: l)
state_after: case cons
b x : Bool
l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) (x :: l)
h2 : l.length % 2 = 1
⊢ count (!x) (x :: l) = count x (x :: l)

tactic: rw [count_cons_of_ne x.not_ne_self, hl.count_not, h2, count_cons_self]
state_before: case cons
b x : Bool
l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) (x :: l)
h2 : l.length % 2 = 1
⊢ count (!x) (x :: l) = count x (x :: l)
state_after: no goals

tactic: rfl
state_before: case nil
b : Bool
hl : Chain' (fun x x_1 => x ≠ x_1) []
h2 : Even [].length
⊢ count (!b) [] = count b []
state_after: no goals

tactic: cases b <;> cases x <;>
revert this <;> simp only [Bool.not_false, Bool.not_true] <;> intro this <;>
(try exact this) <;> exact this.symm
state_before: b x : Bool
l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) (x :: l)
h2 : l.length % 2 = 1
this : count (!x) (x :: l) = count x (x :: l)
⊢ count (!b) (x :: l) = count b (x :: l)
state_after: no goals

tactic: try exact this
state_before: case true.true
l : List Bool
h2 : l.length % 2 = 1
hl : Chain' (fun x x_1 => x ≠ x_1) (true :: l)
this : count false (true :: l) = count true (true :: l)
⊢ count false (true :: l) = count true (true :: l)
state_after: no goals

tactic: exact this
state_before: case true.true
l : List Bool
h2 : l.length % 2 = 1
hl : Chain' (fun x x_1 => x ≠ x_1) (true :: l)
this : count false (true :: l) = count true (true :: l)
⊢ count false (true :: l) = count true (true :: l)
state_after: no goals
Theorem: Ideal.IsPrime.mul_le
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [or_comm, Ideal.mul_le]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I✝ J✝ K L I J P : Ideal R
hp : P.IsPrime
⊢ I * J ≤ P ↔ I ≤ P ∨ J ≤ P
state_after: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I✝ J✝ K L I J P : Ideal R
hp : P.IsPrime
⊢ (∀ r ∈ I, ∀ s ∈ J, r * s ∈ P) ↔ J ≤ P ∨ I ≤ P

tactic: simp_rw [hp.mul_mem_iff_mem_or_mem, SetLike.le_def, ← forall_or_left, or_comm, forall_or_left]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I✝ J✝ K L I J P : Ideal R
hp : P.IsPrime
⊢ (∀ r ∈ I, ∀ s ∈ J, r * s ∈ P) ↔ J ≤ P ∨ I ≤ P
state_after: no goals
Theorem: Quandle.fix_inv
File: Mathlib/Algebra/Quandle.lean

tactic: rw [← left_cancel x]
state_before: Q : Type u_1
inst✝ : Quandle Q
x : Q
⊢ x ◃⁻¹ x = x
state_after: Q : Type u_1
inst✝ : Quandle Q
x : Q
⊢ x ◃ x ◃⁻¹ x = x ◃ x

tactic: simp
state_before: Q : Type u_1
inst✝ : Quandle Q
x : Q
⊢ x ◃ x ◃⁻¹ x = x ◃ x
state_after: no goals
Theorem: CategoryTheory.Limits.Fork.hom_comp_ι
File: Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

tactic: cases s
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
s t : Fork f✝ g
f : s ⟶ t
⊢ f.hom ≫ t.ι = s.ι
state_after: case mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
t : Fork f✝ g
pt✝ : C
π✝ : (Functor.const WalkingParallelPair).obj pt✝ ⟶ parallelPair f✝ g
f : { pt := pt✝, π := π✝ } ⟶ t
⊢ f.hom ≫ t.ι = ι { pt := pt✝, π := π✝ }

tactic: cases t
state_before: case mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
t : Fork f✝ g
pt✝ : C
π✝ : (Functor.const WalkingParallelPair).obj pt✝ ⟶ parallelPair f✝ g
f : { pt := pt✝, π := π✝ } ⟶ t
⊢ f.hom ≫ t.ι = ι { pt := pt✝, π := π✝ }
state_after: case mk.mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
pt✝¹ : C
π✝¹ : (Functor.const WalkingParallelPair).obj pt✝¹ ⟶ parallelPair f✝ g
pt✝ : C
π✝ : (Functor.const WalkingParallelPair).obj pt✝ ⟶ parallelPair f✝ g
f : { pt := pt✝¹, π := π✝¹ } ⟶ { pt := pt✝, π := π✝ }
⊢ f.hom ≫ ι { pt := pt✝, π := π✝ } = ι { pt := pt✝¹, π := π✝¹ }

tactic: cases f
state_before: case mk.mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
pt✝¹ : C
π✝¹ : (Functor.const WalkingParallelPair).obj pt✝¹ ⟶ parallelPair f✝ g
pt✝ : C
π✝ : (Functor.const WalkingParallelPair).obj pt✝ ⟶ parallelPair f✝ g
f : { pt := pt✝¹, π := π✝¹ } ⟶ { pt := pt✝, π := π✝ }
⊢ f.hom ≫ ι { pt := pt✝, π := π✝ } = ι { pt := pt✝¹, π := π✝¹ }
state_after: case mk.mk.mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f g : X ⟶ Y
pt✝¹ : C
π✝¹ : (Functor.const WalkingParallelPair).obj pt✝¹ ⟶ parallelPair f g
pt✝ : C
π✝ : (Functor.const WalkingParallelPair).obj pt✝ ⟶ parallelPair f g
hom✝ : { pt := pt✝¹, π := π✝¹ }.pt ⟶ { pt := pt✝, π := π✝ }.pt
w✝ : ∀ (j : WalkingParallelPair), hom✝ ≫ { pt := pt✝, π := π✝ }.π.app j = { pt := pt✝¹, π := π✝¹ }.π.app j
⊢ { hom := hom✝, w := w✝ }.hom ≫ ι { pt := pt✝, π := π✝ } = ι { pt := pt✝¹, π := π✝¹ }

tactic: aesop
state_before: case mk.mk.mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f g : X ⟶ Y
pt✝¹ : C
π✝¹ : (Functor.const WalkingParallelPair).obj pt✝¹ ⟶ parallelPair f g
pt✝ : C
π✝ : (Functor.const WalkingParallelPair).obj pt✝ ⟶ parallelPair f g
hom✝ : { pt := pt✝¹, π := π✝¹ }.pt ⟶ { pt := pt✝, π := π✝ }.pt
w✝ : ∀ (j : WalkingParallelPair), hom✝ ≫ { pt := pt✝, π := π✝ }.π.app j = { pt := pt✝¹, π := π✝¹ }.π.app j
⊢ { hom := hom✝, w := w✝ }.hom ≫ ι { pt := pt✝, π := π✝ } = ι { pt := pt✝¹, π := π✝¹ }
state_after: no goals
Theorem: Polynomial.reverse_leadingCoeff
File: Mathlib/Algebra/Polynomial/Reverse.lean

tactic: rw [leadingCoeff, reverse_natDegree, ← revAt_le f.natTrailingDegree_le_natDegree,
  coeff_reverse, revAt_invol, trailingCoeff]
state_before: R : Type u_1
inst✝ : Semiring R
f✝ f : R[X]
⊢ f.reverse.leadingCoeff = f.trailingCoeff
state_after: no goals
Theorem: SmoothPartitionOfUnity.exists_isSubordinate_chartAt_source
File: Mathlib/Geometry/Manifold/PartitionOfUnity.lean

tactic: apply exists_isSubordinate _ isClosed_univ _ (fun i ↦ (chartAt H _).open_source) (fun x _ ↦ ?_)
state_before: ι : Type uι
E : Type uE
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : FiniteDimensional ℝ E
F : Type uF
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
H : Type uH
inst✝⁵ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝⁴ : TopologicalSpace M
inst✝³ : ChartedSpace H M
inst✝² : SmoothManifoldWithCorners I M
inst✝¹ : T2Space M
inst✝ : SigmaCompactSpace M
⊢ ∃ f, f.IsSubordinate fun x => (chartAt H x).source
state_after: ι : Type uι
E : Type uE
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : FiniteDimensional ℝ E
F : Type uF
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
H : Type uH
inst✝⁵ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝⁴ : TopologicalSpace M
inst✝³ : ChartedSpace H M
inst✝² : SmoothManifoldWithCorners I M
inst✝¹ : T2Space M
inst✝ : SigmaCompactSpace M
x : M
x✝ : x ∈ univ
⊢ x ∈ ⋃ i, (chartAt H i).source

tactic: exact mem_iUnion_of_mem x (mem_chart_source H x)
state_before: ι : Type uι
E : Type uE
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : FiniteDimensional ℝ E
F : Type uF
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
H : Type uH
inst✝⁵ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝⁴ : TopologicalSpace M
inst✝³ : ChartedSpace H M
inst✝² : SmoothManifoldWithCorners I M
inst✝¹ : T2Space M
inst✝ : SigmaCompactSpace M
x : M
x✝ : x ∈ univ
⊢ x ∈ ⋃ i, (chartAt H i).source
state_after: no goals
Theorem: Finset.Ico_union_Ico_eq_Ico
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: rw [← coe_inj, coe_union, coe_Ico, coe_Ico, coe_Ico, Set.Ico_union_Ico_eq_Ico hab hbc]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
hab : a ≤ b
hbc : b ≤ c
⊢ Ico a b ∪ Ico b c = Ico a c
state_after: no goals
Theorem: List.getLastI_eq_getLast?
File: Mathlib/Data/List/Basic.lean

tactic: simp [getLastI, Inhabited.default]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : Inhabited α
⊢ [].getLastI = [].getLast?.iget
state_after: no goals

tactic: simp [getLastI, getLastI_eq_getLast? (c :: l)]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : Inhabited α
head✝¹ head✝ c : α
l : List α
⊢ (head✝¹ :: head✝ :: c :: l).getLastI = (head✝¹ :: head✝ :: c :: l).getLast?.iget
state_after: no goals
Theorem: Filter.map_fst_prod
File: Mathlib/Order/Filter/Prod.lean

tactic: ext s
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter β
inst✝ : g.NeBot
⊢ map Prod.fst (f ×ˢ g) = f
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s✝ : Set α
t : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter β
inst✝ : g.NeBot
s : Set α
⊢ s ∈ map Prod.fst (f ×ˢ g) ↔ s ∈ f

tactic: simp only [mem_map, mem_prod_iff_left, mem_preimage, eventually_const, ← subset_def,
  exists_mem_subset_iff]
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s✝ : Set α
t : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter β
inst✝ : g.NeBot
s : Set α
⊢ s ∈ map Prod.fst (f ×ˢ g) ↔ s ∈ f
state_after: no goals
Theorem: IsCoprime.mul_add_left_right
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [add_comm]
state_before: R : Type u
inst✝ : CommRing R
x y : R
h : IsCoprime x y
z : R
⊢ IsCoprime x (x * z + y)
state_after: R : Type u
inst✝ : CommRing R
x y : R
h : IsCoprime x y
z : R
⊢ IsCoprime x (y + x * z)

tactic: exact h.add_mul_left_right z
state_before: R : Type u
inst✝ : CommRing R
x y : R
h : IsCoprime x y
z : R
⊢ IsCoprime x (y + x * z)
state_after: no goals
Theorem: Set.encard_exchange
File: Mathlib/Data/Set/Card.lean

tactic: rw [encard_insert_of_not_mem, encard_diff_singleton_add_one hb]
state_before: α : Type u_1
β : Type u_2
s t : Set α
a b : α
ha : a ∉ s
hb : b ∈ s
⊢ (insert a (s \ {b})).encard = s.encard
state_after: α : Type u_1
β : Type u_2
s t : Set α
a b : α
ha : a ∉ s
hb : b ∈ s
⊢ a ∉ s \ {b}

tactic: simp_all only [not_true, mem_diff, mem_singleton_iff, false_and, not_false_eq_true]
state_before: α : Type u_1
β : Type u_2
s t : Set α
a b : α
ha : a ∉ s
hb : b ∈ s
⊢ a ∉ s \ {b}
state_after: no goals
Theorem: FirstOrder.Language.BoundedFormula.realize_iInf
File: Mathlib/ModelTheory/Semantics.lean

tactic: simp only [iInf, realize_foldr_inf, List.mem_map, Finset.mem_toList,
  forall_exists_index, and_imp, forall_apply_eq_imp_iff₂]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
s : Finset β
f : β → L.BoundedFormula α n
v : α → M
v' : Fin n → M
⊢ (iInf s f).Realize v v' ↔ ∀ b ∈ s, (f b).Realize v v'
state_after: no goals
Theorem: Finsupp.single_eq_update
File: Mathlib/Data/Finsupp/Defs.lean

tactic: classical rw [single_eq_set_indicator, ← Set.piecewise_eq_indicator, Set.piecewise_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
a✝ a' : α
b✝ : M
inst✝ : DecidableEq α
a : α
b : M
⊢ ⇑(single a b) = update 0 a b
state_after: no goals

tactic: rw [single_eq_set_indicator, ← Set.piecewise_eq_indicator, Set.piecewise_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
a✝ a' : α
b✝ : M
inst✝ : DecidableEq α
a : α
b : M
⊢ ⇑(single a b) = update 0 a b
state_after: no goals
Theorem: IsCoprime.pow_right
File: Mathlib/RingTheory/Coprime/Lemmas.lean

tactic: rw [← Finset.card_range n, ← Finset.prod_const]
state_before: R : Type u
I : Type v
inst✝ : CommSemiring R
x y z : R
s : I → R
t : Finset I
m n : ℕ
H : IsCoprime x y
⊢ IsCoprime x (y ^ n)
state_after: R : Type u
I : Type v
inst✝ : CommSemiring R
x y z : R
s : I → R
t : Finset I
m n : ℕ
H : IsCoprime x y
⊢ IsCoprime x (∏ _x ∈ range n, y)

tactic: exact IsCoprime.prod_right fun _ _ ↦ H
state_before: R : Type u
I : Type v
inst✝ : CommSemiring R
x y z : R
s : I → R
t : Finset I
m n : ℕ
H : IsCoprime x y
⊢ IsCoprime x (∏ _x ∈ range n, y)
state_after: no goals
Theorem: LinearMap.range_dualMap_le_dualAnnihilator_ker
File: Mathlib/LinearAlgebra/Dual.lean

tactic: rintro _ ⟨ψ, rfl⟩
state_before: R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
⊢ range f.dualMap ≤ (ker f).dualAnnihilator
state_after: case intro
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
ψ : Dual R M₂
⊢ f.dualMap ψ ∈ (ker f).dualAnnihilator

tactic: simp_rw [Submodule.mem_dualAnnihilator, mem_ker]
state_before: case intro
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
ψ : Dual R M₂
⊢ f.dualMap ψ ∈ (ker f).dualAnnihilator
state_after: case intro
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
ψ : Dual R M₂
⊢ ∀ (w : M₁), f w = 0 → (f.dualMap ψ) w = 0

tactic: rintro x hx
state_before: case intro
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
ψ : Dual R M₂
⊢ ∀ (w : M₁), f w = 0 → (f.dualMap ψ) w = 0
state_after: case intro
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
ψ : Dual R M₂
x : M₁
hx : f x = 0
⊢ (f.dualMap ψ) x = 0

tactic: rw [dualMap_apply, hx, map_zero]
state_before: case intro
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
ψ : Dual R M₂
x : M₁
hx : f x = 0
⊢ (f.dualMap ψ) x = 0
state_after: no goals
Theorem: PartialHomeomorph.openEmbedding_restrict
File: Mathlib/Topology/PartialHomeomorph.lean

tactic: refine openEmbedding_of_continuous_injective_open (e.continuousOn.comp_continuous
  continuous_subtype_val Subtype.prop) e.injOn.injective fun V hV ↦ ?_
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
⊢ OpenEmbedding (e.source.restrict ↑e)
state_after: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
V : Set ↑e.source
hV : IsOpen V
⊢ IsOpen (e.source.restrict ↑e '' V)

tactic: rw [Set.restrict_eq, Set.image_comp]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
V : Set ↑e.source
hV : IsOpen V
⊢ IsOpen (e.source.restrict ↑e '' V)
state_after: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
V : Set ↑e.source
hV : IsOpen V
⊢ IsOpen (↑e '' (Subtype.val '' V))

tactic: exact e.isOpen_image_of_subset_source (e.open_source.isOpenMap_subtype_val V hV)
  fun _ ⟨x, _, h⟩ ↦ h ▸ x.2
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
V : Set ↑e.source
hV : IsOpen V
⊢ IsOpen (↑e '' (Subtype.val '' V))
state_after: no goals
Theorem: Fin.zero_mul'
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [ext_iff, mul_def]
state_before: n m : ℕ
inst✝ : NeZero n
k : Fin n
⊢ 0 * k = 0
state_after: no goals
Theorem: Set.preimage_const_mul_Icc
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [← Ici_inter_Iic, h]
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
h : 0 < c
⊢ (fun x => c * x) ⁻¹' Icc a b = Icc (a / c) (b / c)
state_after: no goals