1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: DenseRange.prod_map
File: Mathlib/Topology/Constructions.lean

tactic: simpa only [DenseRange, prod_range_range_eq] using hf.prod hg
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : TopologicalSpace W
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
ι : Type u_5
κ : Type u_6
f : ι → Y
g : κ → Z
hf : DenseRange f
hg : DenseRange g
⊢ DenseRange (Prod.map f g)
state_after: no goals
Theorem: interior_eq_empty_iff_dense_compl
File: Mathlib/Topology/Basic.lean

tactic: rw [dense_iff_closure_eq, closure_compl, compl_univ_iff]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ interior s = ∅ ↔ Dense sᶜ
state_after: no goals
Theorem: CommRingCat.Colimits.cocone_naturality
File: Mathlib/Algebra/Category/Ring/Colimits.lean

tactic: ext
state_before: J : Type v
inst✝ : SmallCategory J
F : J ⥤ CommRingCat
j j' : J
f : j ⟶ j'
⊢ F.map f ≫ coconeMorphism F j' = coconeMorphism F j
state_after: case w
J : Type v
inst✝ : SmallCategory J
F : J ⥤ CommRingCat
j j' : J
f : j ⟶ j'
x✝ : (forget CommRingCat).obj (F.obj j)
⊢ (F.map f ≫ coconeMorphism F j') x✝ = (coconeMorphism F j) x✝

tactic: apply Quot.sound
state_before: case w
J : Type v
inst✝ : SmallCategory J
F : J ⥤ CommRingCat
j j' : J
f : j ⟶ j'
x✝ : (forget CommRingCat).obj (F.obj j)
⊢ (F.map f ≫ coconeMorphism F j') x✝ = (coconeMorphism F j) x✝
state_after: case w.a
J : Type v
inst✝ : SmallCategory J
F : J ⥤ CommRingCat
j j' : J
f : j ⟶ j'
x✝ : (forget CommRingCat).obj (F.obj j)
⊢ Setoid.r (Prequotient.of j' ((F.map f) x✝)) (Prequotient.of j x✝)

tactic: apply Relation.map
state_before: case w.a
J : Type v
inst✝ : SmallCategory J
F : J ⥤ CommRingCat
j j' : J
f : j ⟶ j'
x✝ : (forget CommRingCat).obj (F.obj j)
⊢ Setoid.r (Prequotient.of j' ((F.map f) x✝)) (Prequotient.of j x✝)
state_after: no goals
Theorem: Polynomial.C_mem_lifts
File: Mathlib/Algebra/Polynomial/Lifts.lean

tactic: simp only [coe_mapRingHom, map_C, Set.mem_univ, Subsemiring.coe_top, eq_self_iff_true,
  and_self_iff]
state_before: R : Type u
inst✝¹ : Semiring R
S : Type v
inst✝ : Semiring S
f✝ f : R →+* S
r : R
⊢ (mapRingHom f) (C r) = C (f r)
state_after: no goals
Theorem: constantCoeff_wittStructureInt
File: Mathlib/RingTheory/WittVector/StructurePolynomial.lean

tactic: have inj : Function.Injective (Int.castRingHom ℚ) := by intro m n; exact Int.cast_inj.mp
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n : ℕ
⊢ constantCoeff (wittStructureInt p Φ n) = 0
state_after: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n : ℕ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ constantCoeff (wittStructureInt p Φ n) = 0

tactic: apply inj
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n : ℕ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ constantCoeff (wittStructureInt p Φ n) = 0
state_after: case a
p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n : ℕ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ (Int.castRingHom ℚ) (constantCoeff (wittStructureInt p Φ n)) = (Int.castRingHom ℚ) 0

tactic: rw [← constantCoeff_map, map_wittStructureInt, constantCoeff_wittStructureRat, RingHom.map_zero]
state_before: case a
p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n : ℕ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ (Int.castRingHom ℚ) (constantCoeff (wittStructureInt p Φ n)) = (Int.castRingHom ℚ) 0
state_after: case a.h
p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n : ℕ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ constantCoeff ((map (Int.castRingHom ℚ)) Φ) = 0

tactic: rw [constantCoeff_map, h, RingHom.map_zero]
state_before: case a.h
p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n : ℕ
inj : Function.Injective ⇑(Int.castRingHom ℚ)
⊢ constantCoeff ((map (Int.castRingHom ℚ)) Φ) = 0
state_after: no goals

tactic: intro m n
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n : ℕ
⊢ Function.Injective ⇑(Int.castRingHom ℚ)
state_after: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n✝ : ℕ
m n : ℤ
⊢ (Int.castRingHom ℚ) m = (Int.castRingHom ℚ) n → m = n

tactic: exact Int.cast_inj.mp
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℤ
h : constantCoeff Φ = 0
n✝ : ℕ
m n : ℤ
⊢ (Int.castRingHom ℚ) m = (Int.castRingHom ℚ) n → m = n
state_after: no goals
Theorem: WithBot.coe_le_iff
File: Mathlib/Order/WithBot.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a b : α
inst✝ : LE α
x : α
⊢ ↑a ≤ ↑x ↔ ∃ b, ↑x = ↑b ∧ a ≤ b
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a b : α
inst✝ : LE α
⊢ ¬∃ b, ⊥ = ↑b ∧ a ≤ b
state_after: no goals
Theorem: TensorProduct.map_surjective
File: Mathlib/LinearAlgebra/TensorProduct/RightExactness.lean

tactic: rw [← lTensor_comp_rTensor, coe_comp]
state_before: R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝¹⁴ : CommRing R
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup N
inst✝¹¹ : AddCommGroup P
inst✝¹⁰ : Module R M
inst✝⁹ : Module R N
inst✝⁸ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
Q : Type u_5
inst✝⁷ : AddCommGroup Q
inst✝⁶ : Module R Q
hfg : Exact ⇑f ⇑g
hg : Surjective ⇑g
M' : Type u_6
N' : Type u_7
P' : Type u_8
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup N'
inst✝³ : AddCommGroup P'
inst✝² : Module R M'
inst✝¹ : Module R N'
inst✝ : Module R P'
f' : M' →ₗ[R] N'
g' : N' →ₗ[R] P'
hfg' : Exact ⇑f' ⇑g'
hg' : Surjective ⇑g'
⊢ Surjective ⇑(map g g')
state_after: R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝¹⁴ : CommRing R
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup N
inst✝¹¹ : AddCommGroup P
inst✝¹⁰ : Module R M
inst✝⁹ : Module R N
inst✝⁸ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
Q : Type u_5
inst✝⁷ : AddCommGroup Q
inst✝⁶ : Module R Q
hfg : Exact ⇑f ⇑g
hg : Surjective ⇑g
M' : Type u_6
N' : Type u_7
P' : Type u_8
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup N'
inst✝³ : AddCommGroup P'
inst✝² : Module R M'
inst✝¹ : Module R N'
inst✝ : Module R P'
f' : M' →ₗ[R] N'
g' : N' →ₗ[R] P'
hfg' : Exact ⇑f' ⇑g'
hg' : Surjective ⇑g'
⊢ Surjective (⇑(lTensor P g') ∘ ⇑(rTensor N' g))

tactic: exact Function.Surjective.comp (lTensor_surjective _ hg') (rTensor_surjective _ hg)
state_before: R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝¹⁴ : CommRing R
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup N
inst✝¹¹ : AddCommGroup P
inst✝¹⁰ : Module R M
inst✝⁹ : Module R N
inst✝⁸ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
Q : Type u_5
inst✝⁷ : AddCommGroup Q
inst✝⁶ : Module R Q
hfg : Exact ⇑f ⇑g
hg : Surjective ⇑g
M' : Type u_6
N' : Type u_7
P' : Type u_8
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup N'
inst✝³ : AddCommGroup P'
inst✝² : Module R M'
inst✝¹ : Module R N'
inst✝ : Module R P'
f' : M' →ₗ[R] N'
g' : N' →ₗ[R] P'
hfg' : Exact ⇑f' ⇑g'
hg' : Surjective ⇑g'
⊢ Surjective (⇑(lTensor P g') ∘ ⇑(rTensor N' g))
state_after: no goals
Theorem: iterateFrobeniusEquiv_symm
File: Mathlib/FieldTheory/Perfect.lean

tactic: rw [iterateFrobeniusEquiv_eq_pow]
state_before: R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
⊢ (iterateFrobeniusEquiv R p n).symm = (frobeniusEquiv R p).symm ^ n
state_after: R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
⊢ (frobeniusEquiv R p ^ n).symm = (frobeniusEquiv R p).symm ^ n

tactic: exact (inv_pow _ _).symm
state_before: R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
⊢ (frobeniusEquiv R p ^ n).symm = (frobeniusEquiv R p).symm ^ n
state_after: no goals
Theorem: cauchySeq_iff_tendsto
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: simp only [prod_atTop_atTop_eq, Prod.map_def]
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
⊢ Tendsto (fun p => (u p.1, u p.2)) (atTop ×ˢ atTop) (𝓤 α) ↔ Tendsto (Prod.map u u) atTop (𝓤 α)
state_after: no goals
Theorem: Nat.modEq_zero_iff
File: Mathlib/Data/Nat/ModEq.lean

tactic: rw [ModEq, mod_zero, mod_zero]
state_before: m n a b c d : ℕ
⊢ a ≡ b [MOD 0] ↔ a = b
state_after: no goals
Theorem: MeasureTheory.FiniteMeasure.coeFn_add
File: Mathlib/MeasureTheory/Measure/FiniteMeasure.lean

tactic: funext
state_before: Ω : Type u_1
inst✝⁴ : MeasurableSpace Ω
R : Type u_2
inst✝³ : SMul R ℝ≥0
inst✝² : SMul R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
μ ν : FiniteMeasure Ω
⊢ ⇑(μ + ν) = ⇑μ + ⇑ν
state_after: case h
Ω : Type u_1
inst✝⁴ : MeasurableSpace Ω
R : Type u_2
inst✝³ : SMul R ℝ≥0
inst✝² : SMul R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
μ ν : FiniteMeasure Ω
x✝ : Set Ω
⊢ (μ + ν) x✝ = (⇑μ + ⇑ν) x✝

tactic: simp only [Pi.add_apply, ← ENNReal.coe_inj, ne_eq, ennreal_coeFn_eq_coeFn_toMeasure,
  ENNReal.coe_add]
state_before: case h
Ω : Type u_1
inst✝⁴ : MeasurableSpace Ω
R : Type u_2
inst✝³ : SMul R ℝ≥0
inst✝² : SMul R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
μ ν : FiniteMeasure Ω
x✝ : Set Ω
⊢ (μ + ν) x✝ = (⇑μ + ⇑ν) x✝
state_after: case h
Ω : Type u_1
inst✝⁴ : MeasurableSpace Ω
R : Type u_2
inst✝³ : SMul R ℝ≥0
inst✝² : SMul R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
μ ν : FiniteMeasure Ω
x✝ : Set Ω
⊢ ↑(μ + ν) x✝ = ↑μ x✝ + ↑ν x✝

tactic: norm_cast
state_before: case h
Ω : Type u_1
inst✝⁴ : MeasurableSpace Ω
R : Type u_2
inst✝³ : SMul R ℝ≥0
inst✝² : SMul R ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
μ ν : FiniteMeasure Ω
x✝ : Set Ω
⊢ ↑(μ + ν) x✝ = ↑μ x✝ + ↑ν x✝
state_after: no goals
Theorem: AffineSubspace.Parallel.vectorSpan_eq
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: simp_rw [← direction_affineSpan]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ s₂ : Set P
h : affineSpan k s₁ ∥ affineSpan k s₂
⊢ vectorSpan k s₁ = vectorSpan k s₂
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ s₂ : Set P
h : affineSpan k s₁ ∥ affineSpan k s₂
⊢ (affineSpan k s₁).direction = (affineSpan k s₂).direction

tactic: exact h.direction_eq
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ s₂ : Set P
h : affineSpan k s₁ ∥ affineSpan k s₂
⊢ (affineSpan k s₁).direction = (affineSpan k s₂).direction
state_after: no goals
Theorem: LipschitzWith.to_rightInverse
File: Mathlib/Topology/MetricSpace/Antilipschitz.lean

tactic: simpa only [hg _] using hf (g x) (g y)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
f : α → β
hf : LipschitzWith K f
g : β → α
hg : Function.RightInverse g f
x y : β
⊢ edist x y ≤ ↑K * edist (g x) (g y)
state_after: no goals
Theorem: Finset.support_sum_subset
File: Mathlib/Data/Finsupp/BigOperators.lean

tactic: classical convert Multiset.support_sum_subset s.1; simp
state_before: ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Finset (ι →₀ M)
⊢ (s.sum id).support ⊆ s.sup Finsupp.support
state_after: no goals

tactic: convert Multiset.support_sum_subset s.1
state_before: ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Finset (ι →₀ M)
⊢ (s.sum id).support ⊆ s.sup Finsupp.support
state_after: case h.e'_3.h.e'_4
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Finset (ι →₀ M)
⊢ s.sum id = s.val.sum

tactic: simp
state_before: case h.e'_3.h.e'_4
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Finset (ι →₀ M)
⊢ s.sum id = s.val.sum
state_after: no goals
Theorem: Nat.fast_fib_aux_eq
File: Mathlib/Data/Nat/Fib/Basic.lean

tactic: apply Nat.binaryRec _ (fun b n' ih => _) n
state_before: n : ℕ
⊢ n.fastFibAux = (fib n, fib (n + 1))
state_after: n : ℕ
⊢ fastFibAux 0 = (fib 0, fib (0 + 1))

n : ℕ
⊢ ∀ (b : Bool) (n' : ℕ),
    n'.fastFibAux = (fib n', fib (n' + 1)) → (bit b n').fastFibAux = (fib (bit b n'), fib (bit b n' + 1))

tactic: simp [fastFibAux]
state_before: n : ℕ
⊢ fastFibAux 0 = (fib 0, fib (0 + 1))
state_after: no goals

tactic: intro b
state_before: n : ℕ
⊢ ∀ (b : Bool) (n' : ℕ),
    n'.fastFibAux = (fib n', fib (n' + 1)) → (bit b n').fastFibAux = (fib (bit b n'), fib (bit b n' + 1))
state_after: n : ℕ
b : Bool
⊢ ∀ (n' : ℕ), n'.fastFibAux = (fib n', fib (n' + 1)) → (bit b n').fastFibAux = (fib (bit b n'), fib (bit b n' + 1))

tactic: intro n'
state_before: n : ℕ
b : Bool
⊢ ∀ (n' : ℕ), n'.fastFibAux = (fib n', fib (n' + 1)) → (bit b n').fastFibAux = (fib (bit b n'), fib (bit b n' + 1))
state_after: n : ℕ
b : Bool
n' : ℕ
⊢ n'.fastFibAux = (fib n', fib (n' + 1)) → (bit b n').fastFibAux = (fib (bit b n'), fib (bit b n' + 1))

tactic: intro ih
state_before: n : ℕ
b : Bool
n' : ℕ
⊢ n'.fastFibAux = (fib n', fib (n' + 1)) → (bit b n').fastFibAux = (fib (bit b n'), fib (bit b n' + 1))
state_after: n : ℕ
b : Bool
n' : ℕ
ih : n'.fastFibAux = (fib n', fib (n' + 1))
⊢ (bit b n').fastFibAux = (fib (bit b n'), fib (bit b n' + 1))

tactic: cases b <;>
      simp only [fast_fib_aux_bit_ff, fast_fib_aux_bit_tt, congr_arg Prod.fst ih,
        congr_arg Prod.snd ih, Prod.mk.inj_iff] <;>
      simp [bit, fib_bit0, fib_bit1, fib_bit0_succ, fib_bit1_succ]
state_before: n : ℕ
b : Bool
n' : ℕ
ih : n'.fastFibAux = (fib n', fib (n' + 1))
⊢ (bit b n').fastFibAux = (fib (bit b n'), fib (bit b n' + 1))
state_after: no goals
Theorem: MvPolynomial.bind₂_C_left
File: Mathlib/Algebra/MvPolynomial/Monad.lean

tactic: ext : 2 <;> simp
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
T : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
inst✝ : CommSemiring T
f : σ → MvPolynomial τ R
⊢ bind₂ C = RingHom.id (MvPolynomial σ R)
state_after: no goals
Theorem: Ordnode.all_rotateR
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [← all_dual, dual_rotateR, all_rotateL]
state_before: α : Type u_1
P : α → Prop
l : Ordnode α
x : α
r : Ordnode α
⊢ All P (l.rotateR x r) ↔ All P l ∧ P x ∧ All P r
state_after: α : Type u_1
P : α → Prop
l : Ordnode α
x : α
r : Ordnode α
⊢ All P r.dual ∧ P x ∧ All P l.dual ↔ All P l ∧ P x ∧ All P r

tactic: simp [all_dual, and_comm, and_left_comm, and_assoc]
state_before: α : Type u_1
P : α → Prop
l : Ordnode α
x : α
r : Ordnode α
⊢ All P r.dual ∧ P x ∧ All P l.dual ↔ All P l ∧ P x ∧ All P r
state_after: no goals
Theorem: Prod.comul_comp_inr
File: Mathlib/RingTheory/Coalgebra/Basic.lean

tactic: ext
state_before: R : Type u
A : Type v
B : Type w
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : Module R A
inst✝² : Module R B
inst✝¹ : Coalgebra R A
inst✝ : Coalgebra R B
⊢ comul ∘ₗ inr R A B = TensorProduct.map (inr R A B) (inr R A B) ∘ₗ comul
state_after: case h
R : Type u
A : Type v
B : Type w
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : Module R A
inst✝² : Module R B
inst✝¹ : Coalgebra R A
inst✝ : Coalgebra R B
x✝ : B
⊢ (comul ∘ₗ inr R A B) x✝ = (TensorProduct.map (inr R A B) (inr R A B) ∘ₗ comul) x✝

tactic: simp
state_before: case h
R : Type u
A : Type v
B : Type w
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : Module R A
inst✝² : Module R B
inst✝¹ : Coalgebra R A
inst✝ : Coalgebra R B
x✝ : B
⊢ (comul ∘ₗ inr R A B) x✝ = (TensorProduct.map (inr R A B) (inr R A B) ∘ₗ comul) x✝
state_after: no goals
Theorem: pos_of_smul_pos_right
File: Mathlib/Algebra/Order/Module/Defs.lean

tactic: rwa [zero_smul]
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝⁵ : Zero α
inst✝⁴ : Zero β
inst✝³ : SMulWithZero α β
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : SMulPosReflectLT α β
h : 0 < a • b
hb : 0 ≤ b
⊢ 0 • b < a • b
state_after: no goals
Theorem: MeasureTheory.VectorMeasure.restrict_zero
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
i : Set α
⊢ restrict 0 i = 0
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
i : Set α
hi : MeasurableSet i
⊢ restrict 0 i = 0

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
i : Set α
hi : ¬MeasurableSet i
⊢ restrict 0 i = 0

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
i : Set α
hi : MeasurableSet i
⊢ restrict 0 i = 0
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
i : Set α
hi : MeasurableSet i
j : Set α
hj : MeasurableSet j
⊢ ↑(restrict 0 i) j = ↑0 j

tactic: rw [restrict_apply 0 hi hj, zero_apply, zero_apply]
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
i : Set α
hi : MeasurableSet i
j : Set α
hj : MeasurableSet j
⊢ ↑(restrict 0 i) j = ↑0 j
state_after: no goals

tactic: exact dif_neg 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
i : Set α
hi : ¬MeasurableSet i
⊢ restrict 0 i = 0
state_after: no goals
Theorem: PartENat.add_left_cancel_iff
File: Mathlib/Data/Nat/PartENat.lean

tactic: rw [add_comm a, add_comm a, PartENat.add_right_cancel_iff ha]
state_before: a b c : PartENat
ha : a ≠ ⊤
⊢ a + b = a + c ↔ b = c
state_after: no goals
Theorem: Ultrafilter.compl_not_mem_iff
File: Mathlib/Order/Filter/Ultrafilter.lean

tactic: rwa [compl_compl]
state_before: α : Type u
β : Type v
γ : Type u_1
f g : Ultrafilter α
s t : Set α
p q : α → Prop
hsc : sᶜ ∉ f
h : ↑f ⊓ 𝓟 s = ⊥
⊢ ↑f ⊓ 𝓟 sᶜᶜ = ⊥
state_after: no goals
Theorem: ContinuousLinearMap.exists_mul_lt_apply_of_lt_opNNNorm
File: Mathlib/Analysis/NormedSpace/OperatorNorm/NNNorm.lean

tactic: simpa only [not_forall, not_le, Set.mem_setOf] using
  not_mem_of_lt_csInf (nnnorm_def f ▸ hr : r < sInf { c : ℝ≥0 | ∀ x, ‖f x‖₊ ≤ c * ‖x‖₊ })
    (OrderBot.bddBelow _)
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝¹⁷ : SeminormedAddCommGroup E
inst✝¹⁶ : SeminormedAddCommGroup Eₗ
inst✝¹⁵ : SeminormedAddCommGroup F
inst✝¹⁴ : SeminormedAddCommGroup Fₗ
inst✝¹³ : SeminormedAddCommGroup G
inst✝¹² : SeminormedAddCommGroup Gₗ
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : NontriviallyNormedField 𝕜₂
inst✝⁹ : NontriviallyNormedField 𝕜₃
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : NormedSpace 𝕜 Eₗ
inst✝⁶ : NormedSpace 𝕜₂ F
inst✝⁵ : NormedSpace 𝕜 Fₗ
inst✝⁴ : NormedSpace 𝕜₃ G
inst✝³ : NormedSpace 𝕜 Gₗ
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
σ₁₃ : 𝕜 →+* 𝕜₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : FunLike 𝓕 E F
inst✝ : RingHomIsometric σ₁₂
f : E →SL[σ₁₂] F
r : ℝ≥0
hr : r < ‖f‖₊
⊢ ∃ x, r * ‖x‖₊ < ‖f x‖₊
state_after: no goals
Theorem: Matrix.coeff_det_one_add_X_smul_one
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean

tactic: simp only [← derivative_det_one_add_X_smul, ← coeff_zero_eq_eval_zero,
  coeff_derivative, zero_add, Nat.cast_zero, mul_one]
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ M : Matrix n n R
⊢ (1 + X • M.map ⇑C).det.coeff 1 = M.trace
state_after: no goals
Theorem: isCornerFree_image
File: Mathlib/Combinatorics/Additive/Corner/Defs.lean

tactic: have : Prod.map f f '' A ⊆ t ×ˢ t :=
  ((hf.bijOn.mapsTo.prodMap hf.bijOn.mapsTo).mono hAs Subset.rfl).image_subset
state_before: G : Type u_1
H : Type u_2
inst✝¹ : AddCommMonoid G
inst✝ : AddCommMonoid H
A B : Set (G × G)
s : Set G
t : Set H
f : G → H
a b c x₁ y₁ x₂ y₂ : G
hf : IsAddFreimanIso 2 s t f
hAs : A ⊆ s ×ˢ s
⊢ IsCornerFree (Prod.map f f '' A) ↔ IsCornerFree A
state_after: G : Type u_1
H : Type u_2
inst✝¹ : AddCommMonoid G
inst✝ : AddCommMonoid H
A B : Set (G × G)
s : Set G
t : Set H
f : G → H
a b c x₁ y₁ x₂ y₂ : G
hf : IsAddFreimanIso 2 s t f
hAs : A ⊆ s ×ˢ s
this : Prod.map f f '' A ⊆ t ×ˢ t
⊢ IsCornerFree (Prod.map f f '' A) ↔ IsCornerFree A

tactic: rw [isCornerFree_iff hAs, isCornerFree_iff this]
state_before: G : Type u_1
H : Type u_2
inst✝¹ : AddCommMonoid G
inst✝ : AddCommMonoid H
A B : Set (G × G)
s : Set G
t : Set H
f : G → H
a b c x₁ y₁ x₂ y₂ : G
hf : IsAddFreimanIso 2 s t f
hAs : A ⊆ s ×ˢ s
this : Prod.map f f '' A ⊆ t ×ˢ t
⊢ IsCornerFree (Prod.map f f '' A) ↔ IsCornerFree A
state_after: G : Type u_1
H : Type u_2
inst✝¹ : AddCommMonoid G
inst✝ : AddCommMonoid H
A B : Set (G × G)
s : Set G
t : Set H
f : G → H
a b c x₁ y₁ x₂ y₂ : G
hf : IsAddFreimanIso 2 s t f
hAs : A ⊆ s ×ˢ s
this : Prod.map f f '' A ⊆ t ×ˢ t
⊢ (∀ ⦃x₁ : H⦄,
      x₁ ∈ t →
        ∀ ⦃y₁ : H⦄,
          y₁ ∈ t → ∀ ⦃x₂ : H⦄, x₂ ∈ t → ∀ ⦃y₂ : H⦄, y₂ ∈ t → IsCorner (Prod.map f f '' A) x₁ y₁ x₂ y₂ → x₁ = x₂) ↔
    ∀ ⦃x₁ : G⦄, x₁ ∈ s → ∀ ⦃y₁ : G⦄, y₁ ∈ s → ∀ ⦃x₂ : G⦄, x₂ ∈ s → ∀ ⦃y₂ : G⦄, y₂ ∈ s → IsCorner A x₁ y₁ x₂ y₂ → x₁ = x₂

tactic: simp (config := { contextual := true }) only
  [hf.bijOn.forall, isCorner_image hf hAs, hf.bijOn.injOn.eq_iff]
state_before: G : Type u_1
H : Type u_2
inst✝¹ : AddCommMonoid G
inst✝ : AddCommMonoid H
A B : Set (G × G)
s : Set G
t : Set H
f : G → H
a b c x₁ y₁ x₂ y₂ : G
hf : IsAddFreimanIso 2 s t f
hAs : A ⊆ s ×ˢ s
this : Prod.map f f '' A ⊆ t ×ˢ t
⊢ (∀ ⦃x₁ : H⦄,
      x₁ ∈ t →
        ∀ ⦃y₁ : H⦄,
          y₁ ∈ t → ∀ ⦃x₂ : H⦄, x₂ ∈ t → ∀ ⦃y₂ : H⦄, y₂ ∈ t → IsCorner (Prod.map f f '' A) x₁ y₁ x₂ y₂ → x₁ = x₂) ↔
    ∀ ⦃x₁ : G⦄, x₁ ∈ s → ∀ ⦃y₁ : G⦄, y₁ ∈ s → ∀ ⦃x₂ : G⦄, x₂ ∈ s → ∀ ⦃y₂ : G⦄, y₂ ∈ s → IsCorner A x₁ y₁ x₂ y₂ → x₁ = x₂
state_after: no goals
Theorem: Complex.lim_re
File: Mathlib/Data/Complex/Abs.lean

tactic: rw [lim_eq_lim_im_add_lim_re]
state_before: f : CauSeq ℂ ⇑abs'
⊢ (cauSeqRe f).lim = f.lim.re
state_after: f : CauSeq ℂ ⇑abs'
⊢ (cauSeqRe f).lim = (↑(cauSeqRe f).lim + ↑(cauSeqIm f).lim * I).re

tactic: simp [ofReal']
state_before: f : CauSeq ℂ ⇑abs'
⊢ (cauSeqRe f).lim = (↑(cauSeqRe f).lim + ↑(cauSeqIm f).lim * I).re
state_after: no goals