1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: PowerSeries.rescale_mk
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: ext
state_before: R : Type u_1
inst✝ : CommSemiring R
f : ℕ → R
a : R
⊢ (rescale a) (mk f) = mk fun n => a ^ n * f n
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
f : ℕ → R
a : R
n✝ : ℕ
⊢ (coeff R n✝) ((rescale a) (mk f)) = (coeff R n✝) (mk fun n => a ^ n * f n)

tactic: rw [coeff_rescale, coeff_mk, coeff_mk]
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
f : ℕ → R
a : R
n✝ : ℕ
⊢ (coeff R n✝) ((rescale a) (mk f)) = (coeff R n✝) (mk fun n => a ^ n * f n)
state_after: no goals
Theorem: IsUnit.isNilpotent_mul_unit_of_commute_iff
File: Mathlib/RingTheory/Nilpotent/Defs.lean

tactic: rw [h_comm.mul_pow, (hu.pow n).mul_left_eq_zero]
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝ : MonoidWithZero R
r u : R
hu : IsUnit u
h_comm : Commute r u
n : ℕ
⊢ (r * u) ^ n = 0 ↔ r ^ n = 0
state_after: no goals
Theorem: Monoid.CoprodI.Word.prod_cons
File: Mathlib/GroupTheory/CoprodI.lean

tactic: simp [cons, prod, List.map_cons, List.prod_cons]
state_before: ι : Type u_1
M : ι → Type u_2
inst✝² : (i : ι) → Monoid (M i)
N : Type u_3
inst✝¹ : Monoid N
inst✝ : (i : ι) → DecidableEq (M i)
i : ι
m : M i
w : Word M
h1 : m ≠ 1
h2 : w.fstIdx ≠ some i
⊢ (cons m w h2 h1).prod = of m * w.prod
state_after: no goals
Theorem: KaehlerDifferential.one_smul_sub_smul_one_mem_ideal
File: Mathlib/RingTheory/Kaehler/Basic.lean

tactic: simp [RingHom.mem_ker]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
a : S
⊢ 1 ⊗ₜ[R] a - a ⊗ₜ[R] 1 ∈ ideal R S
state_after: no goals
Theorem: Set.empty_card'
File: Mathlib/Data/Set/Finite.lean

tactic: simp
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
h : Fintype ↑∅
⊢ Fintype.card ↑∅ = 0
state_after: no goals
Theorem: Ordinal.add_mul_limit_aux
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: apply (mul_le_mul_left' (le_succ c') _).trans
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ (a + b) * c' ≤ a * c
state_after: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ (a + b) * succ c' ≤ a * c

tactic: rw [IH _ h]
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ (a + b) * succ c' ≤ a * c
state_after: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ a * succ c' + b ≤ a * c

tactic: apply (add_le_add_left _ _).trans
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ a * succ c' + b ≤ a * c
state_after: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ a * succ c' + ?m.296387 ≤ a * c

a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ Ordinal.{u_1}

a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ b ≤ ?m.296387

tactic: rw [← mul_succ]
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ a * succ c' + ?m.296387 ≤ a * c
state_after: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ a * succ (succ c') ≤ a * c

tactic: exact mul_le_mul_left' (succ_le_of_lt <| l.2 _ h) _
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ a * succ (succ c') ≤ a * c
state_after: no goals

tactic: rw [← ba]
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ b ≤ a
state_after: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ b ≤ b + a

tactic: exact le_add_right _ _
state_before: a b c : Ordinal.{u_1}
ba : b + a = a
l : c.IsLimit
IH : ∀ c' < c, (a + b) * succ c' = a * succ c' + b
c' : Ordinal.{u_1}
h : c' < c
⊢ b ≤ b + a
state_after: no goals
Theorem: CategoryTheory.Limits.PullbackCone.condition_one
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: have w := t.π.naturality WalkingCospan.Hom.inl
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
t : PullbackCone f g
⊢ t.π.app WalkingCospan.one = t.fst ≫ f
state_after: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
t : PullbackCone f g
w :
  ((Functor.const WalkingCospan).obj t.pt).map inl ≫ t.π.app WalkingCospan.one =
    t.π.app WalkingCospan.left ≫ (cospan f g).map inl
⊢ t.π.app WalkingCospan.one = t.fst ≫ f

tactic: dsimp at w
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
t : PullbackCone f g
w :
  ((Functor.const WalkingCospan).obj t.pt).map inl ≫ t.π.app WalkingCospan.one =
    t.π.app WalkingCospan.left ≫ (cospan f g).map inl
⊢ t.π.app WalkingCospan.one = t.fst ≫ f
state_after: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
t : PullbackCone f g
w : 𝟙 t.pt ≫ t.π.app WalkingCospan.one = t.fst ≫ f
⊢ t.π.app WalkingCospan.one = t.fst ≫ f

tactic: simpa using w
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
t : PullbackCone f g
w : 𝟙 t.pt ≫ t.π.app WalkingCospan.one = t.fst ≫ f
⊢ t.π.app WalkingCospan.one = t.fst ≫ f
state_after: no goals
Theorem: DvdNotUnit.not_associated
File: Mathlib/Algebra/Associated.lean

tactic: rintro ⟨a, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
p q : α
h : DvdNotUnit p q
⊢ ¬p ~ᵤ q
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
p : α
a : αˣ
h : DvdNotUnit p (p * ↑a)
⊢ False

tactic: obtain ⟨hp, x, hx, hx'⟩ := h
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
p : α
a : αˣ
h : DvdNotUnit p (p * ↑a)
⊢ False
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
p : α
a : αˣ
hp : p ≠ 0
x : α
hx : ¬IsUnit x
hx' : p * ↑a = p * x
⊢ False

tactic: rcases (mul_right_inj' hp).mp hx' with rfl
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
p : α
a : αˣ
hp : p ≠ 0
x : α
hx : ¬IsUnit x
hx' : p * ↑a = p * x
⊢ False
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
p : α
a : αˣ
hp : p ≠ 0
hx : ¬IsUnit ↑a
hx' : p * ↑a = p * ↑a
⊢ False

tactic: exact hx a.isUnit
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
p : α
a : αˣ
hp : p ≠ 0
hx : ¬IsUnit ↑a
hx' : p * ↑a = p * ↑a
⊢ False
state_after: no goals
Theorem: PiTensorProduct.bddBelow_projectiveSemiNormAux
File: Mathlib/Analysis/NormedSpace/PiTensorProduct/ProjectiveSeminorm.lean

tactic: existsi 0
state_before: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
x : ⨂[𝕜] (i : ι), E i
⊢ BddBelow (Set.range fun p => projectiveSeminormAux ↑p)
state_after: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
x : ⨂[𝕜] (i : ι), E i
⊢ 0 ∈ lowerBounds (Set.range fun p => projectiveSeminormAux ↑p)

tactic: rw [mem_lowerBounds]
state_before: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
x : ⨂[𝕜] (i : ι), E i
⊢ 0 ∈ lowerBounds (Set.range fun p => projectiveSeminormAux ↑p)
state_after: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
x : ⨂[𝕜] (i : ι), E i
⊢ ∀ x_1 ∈ Set.range fun p => projectiveSeminormAux ↑p, 0 ≤ x_1

tactic: simp only [Set.mem_range, Subtype.exists, exists_prop, forall_exists_index, and_imp,
  forall_apply_eq_imp_iff₂]
state_before: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
x : ⨂[𝕜] (i : ι), E i
⊢ ∀ x_1 ∈ Set.range fun p => projectiveSeminormAux ↑p, 0 ≤ x_1
state_after: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
x : ⨂[𝕜] (i : ι), E i
⊢ ∀ a ∈ x.lifts, 0 ≤ projectiveSeminormAux a

tactic: exact fun p _ ↦ projectiveSeminormAux_nonneg p
state_before: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
x : ⨂[𝕜] (i : ι), E i
⊢ ∀ a ∈ x.lifts, 0 ≤ projectiveSeminormAux a
state_after: no goals
Theorem: Denumerable.list_ofNat_zero
File: Mathlib/Logic/Equiv/List.lean

tactic: rw [← @encode_list_nil α, ofNat_encode]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Denumerable α
inst✝ : Denumerable β
⊢ ofNat (List α) 0 = []
state_after: no goals
Theorem: MeasurableEquiv.preimage_image
File: Mathlib/MeasureTheory/MeasurableSpace/Embedding.lean

tactic: rw [← coe_toEquiv, Equiv.preimage_image]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
e : α ≃ᵐ β
s : Set α
⊢ ⇑e ⁻¹' (⇑e '' s) = s
state_after: no goals
Theorem: exists_subtype_mk_eq_iff
File: Mathlib/Data/Subtype.lean

tactic: simp only [@eq_comm _ b, exists_eq_subtype_mk_iff, @eq_comm _ _ a]
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
p q : α → Prop
a : Subtype p
b : α
⊢ (∃ h, ⟨b, h⟩ = a) ↔ b = ↑a
state_after: no goals
Theorem: RingQuot.mkRingHom_surjective
File: Mathlib/Algebra/RingQuot.lean

tactic: simp only [mkRingHom_def, RingHom.coe_mk, MonoidHom.coe_mk, OneHom.coe_mk]
state_before: R : Type uR
inst✝³ : Semiring R
S : Type uS
inst✝² : CommSemiring S
T : Type uT
A : Type uA
inst✝¹ : Semiring A
inst✝ : Algebra S A
r✝ r : R → R → Prop
⊢ Function.Surjective ⇑(mkRingHom r)
state_after: R : Type uR
inst✝³ : Semiring R
S : Type uS
inst✝² : CommSemiring S
T : Type uT
A : Type uA
inst✝¹ : Semiring A
inst✝ : Algebra S A
r✝ r : R → R → Prop
⊢ Function.Surjective fun x => { toQuot := Quot.mk (Rel r) x }

tactic: rintro ⟨⟨⟩⟩
state_before: R : Type uR
inst✝³ : Semiring R
S : Type uS
inst✝² : CommSemiring S
T : Type uT
A : Type uA
inst✝¹ : Semiring A
inst✝ : Algebra S A
r✝ r : R → R → Prop
⊢ Function.Surjective fun x => { toQuot := Quot.mk (Rel r) x }
state_after: case mk.mk
R : Type uR
inst✝³ : Semiring R
S : Type uS
inst✝² : CommSemiring S
T : Type uT
A : Type uA
inst✝¹ : Semiring A
inst✝ : Algebra S A
r✝ r : R → R → Prop
toQuot✝ : Quot (Rel r)
a✝ : R
⊢ ∃ a, (fun x => { toQuot := Quot.mk (Rel r) x }) a = { toQuot := Quot.mk (Rel r) a✝ }

tactic: simp
state_before: case mk.mk
R : Type uR
inst✝³ : Semiring R
S : Type uS
inst✝² : CommSemiring S
T : Type uT
A : Type uA
inst✝¹ : Semiring A
inst✝ : Algebra S A
r✝ r : R → R → Prop
toQuot✝ : Quot (Rel r)
a✝ : R
⊢ ∃ a, (fun x => { toQuot := Quot.mk (Rel r) x }) a = { toQuot := Quot.mk (Rel r) a✝ }
state_after: no goals
Theorem: MvPFunctor.const.mk_get
File: Mathlib/Data/PFunctor/Multivariate/Basic.lean

tactic: cases x
state_before: n m : ℕ
P : MvPFunctor.{u} n
A : Type u
α β : TypeVec.{u} n
x : ↑(const n A) α
⊢ mk n (get x) = x
state_after: case mk
n m : ℕ
P : MvPFunctor.{u} n
A : Type u
α β : TypeVec.{u} n
fst✝ : (const n A).A
snd✝ : (const n A).B fst✝ ⟹ α
⊢ mk n (get ⟨fst✝, snd✝⟩) = ⟨fst✝, snd✝⟩

tactic: dsimp [const.get, const.mk]
state_before: case mk
n m : ℕ
P : MvPFunctor.{u} n
A : Type u
α β : TypeVec.{u} n
fst✝ : (const n A).A
snd✝ : (const n A).B fst✝ ⟹ α
⊢ mk n (get ⟨fst✝, snd✝⟩) = ⟨fst✝, snd✝⟩
state_after: case mk
n m : ℕ
P : MvPFunctor.{u} n
A : Type u
α β : TypeVec.{u} n
fst✝ : (const n A).A
snd✝ : (const n A).B fst✝ ⟹ α
⊢ ⟨fst✝, fun x a => PEmpty.elim a⟩ = ⟨fst✝, snd✝⟩

tactic: congr with (_⟨⟩)
state_before: case mk
n m : ℕ
P : MvPFunctor.{u} n
A : Type u
α β : TypeVec.{u} n
fst✝ : (const n A).A
snd✝ : (const n A).B fst✝ ⟹ α
⊢ ⟨fst✝, fun x a => PEmpty.elim a⟩ = ⟨fst✝, snd✝⟩
state_after: no goals
Theorem: Polynomial.Monic.isPrimitive
File: Mathlib/RingTheory/Polynomial/Content.lean

tactic: rintro r ⟨q, h⟩
state_before: R : Type u_1
inst✝ : CommSemiring R
p : R[X]
hp : p.Monic
⊢ p.IsPrimitive
state_after: case intro
R : Type u_1
inst✝ : CommSemiring R
p : R[X]
hp : p.Monic
r : R
q : R[X]
h : p = C r * q
⊢ IsUnit r

tactic: exact isUnit_of_mul_eq_one r (q.coeff p.natDegree) (by rwa [← coeff_C_mul, ← h])
state_before: case intro
R : Type u_1
inst✝ : CommSemiring R
p : R[X]
hp : p.Monic
r : R
q : R[X]
h : p = C r * q
⊢ IsUnit r
state_after: no goals

tactic: rwa [← coeff_C_mul, ← h]
state_before: R : Type u_1
inst✝ : CommSemiring R
p : R[X]
hp : p.Monic
r : R
q : R[X]
h : p = C r * q
⊢ r * q.coeff p.natDegree = 1
state_after: no goals
Theorem: CategoryTheory.Cat.HasLimits.limit_π_homDiagram_eqToHom
File: Mathlib/CategoryTheory/Category/Cat/Limit.lean

tactic: subst h
state_before: J : Type v
inst✝ : SmallCategory J
F : J ⥤ Cat
X Y : limit (F ⋙ objects)
j : J
h : X = Y
⊢ limit.π (homDiagram X Y) j (eqToHom h) = eqToHom ⋯
state_after: J : Type v
inst✝ : SmallCategory J
F : J ⥤ Cat
X : limit (F ⋙ objects)
j : J
⊢ limit.π (homDiagram X X) j (eqToHom ⋯) = eqToHom ⋯

tactic: simp
state_before: J : Type v
inst✝ : SmallCategory J
F : J ⥤ Cat
X : limit (F ⋙ objects)
j : J
⊢ limit.π (homDiagram X X) j (eqToHom ⋯) = eqToHom ⋯
state_after: no goals
Theorem: Matrix.J_inv
File: Mathlib/LinearAlgebra/SymplecticGroup.lean

tactic: refine Matrix.inv_eq_right_inv ?_
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ (J l R)⁻¹ = -J l R
state_after: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ J l R * -J l R = 1

tactic: rw [Matrix.mul_neg, J_squared]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ J l R * -J l R = 1
state_after: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ - -1 = 1

tactic: exact neg_neg 1
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype l
⊢ - -1 = 1
state_after: no goals
Theorem: FirstOrder.Language.Substructure.realize_boundedFormula_top
File: Mathlib/ModelTheory/Substructures.lean

tactic: rw [← Substructure.topEquiv.realize_boundedFormula φ]
state_before: 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
S : L.Substructure M
s : Set M
α : Type u_3
n : ℕ
φ : L.BoundedFormula α n
v : α → ↥⊤
xs : Fin n → ↥⊤
⊢ φ.Realize v xs ↔ φ.Realize (Subtype.val ∘ v) (Subtype.val ∘ xs)
state_after: 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
S : L.Substructure M
s : Set M
α : Type u_3
n : ℕ
φ : L.BoundedFormula α n
v : α → ↥⊤
xs : Fin n → ↥⊤
⊢ φ.Realize (⇑topEquiv ∘ v) (⇑topEquiv ∘ xs) ↔ φ.Realize (Subtype.val ∘ v) (Subtype.val ∘ xs)

tactic: simp
state_before: 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
S : L.Substructure M
s : Set M
α : Type u_3
n : ℕ
φ : L.BoundedFormula α n
v : α → ↥⊤
xs : Fin n → ↥⊤
⊢ φ.Realize (⇑topEquiv ∘ v) (⇑topEquiv ∘ xs) ↔ φ.Realize (Subtype.val ∘ v) (Subtype.val ∘ xs)
state_after: no goals
Theorem: FirstOrder.Language.Formula.realize_equal
File: Mathlib/ModelTheory/Semantics.lean

tactic: simp [Term.equal, Realize]
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 : ℕ
φ ψ : L.Formula α
v : α → M
t₁ t₂ : L.Term α
x : α → M
⊢ (t₁.equal t₂).Realize x ↔ Term.realize x t₁ = Term.realize x t₂
state_after: no goals
Theorem: Subgroup.mem_map_equiv
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: erw [@Set.mem_image_equiv _ _ (↑K) f.toEquiv x]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
H K✝ : Subgroup G
k : Set G
N : Type u_5
inst✝¹ : Group N
P : Type u_6
inst✝ : Group P
f : G ≃* N
K : Subgroup G
x : N
⊢ x ∈ map f.toMonoidHom K ↔ f.symm x ∈ K
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
H K✝ : Subgroup G
k : Set G
N : Type u_5
inst✝¹ : Group N
P : Type u_6
inst✝ : Group P
f : G ≃* N
K : Subgroup G
x : N
⊢ f.symm x ∈ ↑K ↔ f.symm x ∈ K

tactic: rfl
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
H K✝ : Subgroup G
k : Set G
N : Type u_5
inst✝¹ : Group N
P : Type u_6
inst✝ : Group P
f : G ≃* N
K : Subgroup G
x : N
⊢ f.symm x ∈ ↑K ↔ f.symm x ∈ K
state_after: no goals
Theorem: MeasureTheory.VectorMeasure.restrict_add
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: by_cases hi : MeasurableSet i
state_before: α : Type u_1
β : Type u_2
m inst✝⁴ : MeasurableSpace α
inst✝³ : MeasurableSpace β
M : Type u_3
inst✝² : AddCommMonoid M
inst✝¹ : TopologicalSpace M
v✝ : VectorMeasure α M
inst✝ : ContinuousAdd M
v w : VectorMeasure α M
i : Set α
⊢ (v + w).restrict i = v.restrict i + w.restrict i
state_after: case pos
α : Type u_1
β : Type u_2
m inst✝⁴ : MeasurableSpace α
inst✝³ : MeasurableSpace β
M : Type u_3
inst✝² : AddCommMonoid M
inst✝¹ : TopologicalSpace M
v✝ : VectorMeasure α M
inst✝ : ContinuousAdd M
v w : VectorMeasure α M
i : Set α
hi : MeasurableSet i
⊢ (v + w).restrict i = v.restrict i + w.restrict i

case neg
α : Type u_1
β : Type u_2
m inst✝⁴ : MeasurableSpace α
inst✝³ : MeasurableSpace β
M : Type u_3
inst✝² : AddCommMonoid M
inst✝¹ : TopologicalSpace M
v✝ : VectorMeasure α M
inst✝ : ContinuousAdd M
v w : VectorMeasure α M
i : Set α
hi : ¬MeasurableSet i
⊢ (v + w).restrict i = v.restrict i + w.restrict i

tactic: ext j hj
state_before: case pos
α : Type u_1
β : Type u_2
m inst✝⁴ : MeasurableSpace α
inst✝³ : MeasurableSpace β
M : Type u_3
inst✝² : AddCommMonoid M
inst✝¹ : TopologicalSpace M
v✝ : VectorMeasure α M
inst✝ : ContinuousAdd M
v w : VectorMeasure α M
i : Set α
hi : MeasurableSet i
⊢ (v + w).restrict i = v.restrict i + w.restrict i
state_after: case pos.h
α : Type u_1
β : Type u_2
m inst✝⁴ : MeasurableSpace α
inst✝³ : MeasurableSpace β
M : Type u_3
inst✝² : AddCommMonoid M
inst✝¹ : TopologicalSpace M
v✝ : VectorMeasure α M
inst✝ : ContinuousAdd M
v w : VectorMeasure α M
i : Set α
hi : MeasurableSet i
j : Set α
hj : MeasurableSet j
⊢ ↑((v + w).restrict i) j = ↑(v.restrict i + w.restrict i) j

tactic: simp [restrict_apply _ hi hj]
state_before: case pos.h
α : Type u_1
β : Type u_2
m inst✝⁴ : MeasurableSpace α
inst✝³ : MeasurableSpace β
M : Type u_3
inst✝² : AddCommMonoid M
inst✝¹ : TopologicalSpace M
v✝ : VectorMeasure α M
inst✝ : ContinuousAdd M
v w : VectorMeasure α M
i : Set α
hi : MeasurableSet i
j : Set α
hj : MeasurableSet j
⊢ ↑((v + w).restrict i) j = ↑(v.restrict i + w.restrict i) j
state_after: no goals

tactic: simp [restrict_not_measurable _ hi]
state_before: case neg
α : Type u_1
β : Type u_2
m inst✝⁴ : MeasurableSpace α
inst✝³ : MeasurableSpace β
M : Type u_3
inst✝² : AddCommMonoid M
inst✝¹ : TopologicalSpace M
v✝ : VectorMeasure α M
inst✝ : ContinuousAdd M
v w : VectorMeasure α M
i : Set α
hi : ¬MeasurableSet i
⊢ (v + w).restrict i = v.restrict i + w.restrict i
state_after: no goals
Theorem: Polynomial.eval₂_pow'
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: induction n with
| zero => simp only [Nat.zero_eq, pow_zero, eval₂_one]
| succ n ih => rw [pow_succ, pow_succ, eval₂_mul', ih]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
x : S
p q : R[X]
n : ℕ
⊢ eval₂ (algebraMap R S) x (p ^ n) = eval₂ (algebraMap R S) x p ^ n
state_after: no goals

tactic: simp only [Nat.zero_eq, pow_zero, eval₂_one]
state_before: case zero
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
x : S
p q : R[X]
⊢ eval₂ (algebraMap R S) x (p ^ 0) = eval₂ (algebraMap R S) x p ^ 0
state_after: no goals

tactic: rw [pow_succ, pow_succ, eval₂_mul', ih]
state_before: case succ
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
x : S
p q : R[X]
n : ℕ
ih : eval₂ (algebraMap R S) x (p ^ n) = eval₂ (algebraMap R S) x p ^ n
⊢ eval₂ (algebraMap R S) x (p ^ (n + 1)) = eval₂ (algebraMap R S) x p ^ (n + 1)
state_after: no goals
Theorem: lipschitz_with_lipschitz_const_mul
File: Mathlib/Topology/MetricSpace/Algebra.lean

tactic: rw [← lipschitzWith_iff_dist_le_mul]
state_before: α : Type u_1
β : Type u_2
inst✝³ : PseudoMetricSpace α
inst✝² : PseudoMetricSpace β
inst✝¹ : Monoid β
inst✝ : LipschitzMul β
⊢ ∀ (p q : β × β), dist (p.1 * p.2) (q.1 * q.2) ≤ ↑(LipschitzMul.C β) * dist p q
state_after: α : Type u_1
β : Type u_2
inst✝³ : PseudoMetricSpace α
inst✝² : PseudoMetricSpace β
inst✝¹ : Monoid β
inst✝ : LipschitzMul β
⊢ LipschitzWith (LipschitzMul.C β) fun p => p.1 * p.2

tactic: exact lipschitzWith_lipschitz_const_mul_edist
state_before: α : Type u_1
β : Type u_2
inst✝³ : PseudoMetricSpace α
inst✝² : PseudoMetricSpace β
inst✝¹ : Monoid β
inst✝ : LipschitzMul β
⊢ LipschitzWith (LipschitzMul.C β) fun p => p.1 * p.2
state_after: no goals
Theorem: Finset.card_eq_one
File: Mathlib/Data/Finset/Card.lean

tactic: cases s
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
⊢ s.card = 1 ↔ ∃ a, s = {a}
state_after: case mk
α : Type u_1
β : Type u_2
R : Type u_3
t u : Finset α
f : α → β
n : ℕ
val✝ : Multiset α
nodup✝ : val✝.Nodup
⊢ { val := val✝, nodup := nodup✝ }.card = 1 ↔ ∃ a, { val := val✝, nodup := nodup✝ } = {a}

tactic: simp only [Multiset.card_eq_one, Finset.card, ← val_inj, singleton_val]
state_before: case mk
α : Type u_1
β : Type u_2
R : Type u_3
t u : Finset α
f : α → β
n : ℕ
val✝ : Multiset α
nodup✝ : val✝.Nodup
⊢ { val := val✝, nodup := nodup✝ }.card = 1 ↔ ∃ a, { val := val✝, nodup := nodup✝ } = {a}
state_after: no goals
Theorem: PosNum.to_int_eq_succ_pred
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← n.to_nat_to_int, to_nat_eq_succ_pred]
state_before: α : Type u_1
n : PosNum
⊢ ↑n = ↑↑n.pred' + 1
state_after: α : Type u_1
n : PosNum
⊢ ↑(↑n.pred' + 1) = ↑↑n.pred' + 1

tactic: rfl
state_before: α : Type u_1
n : PosNum
⊢ ↑(↑n.pred' + 1) = ↑↑n.pred' + 1
state_after: no goals