1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: UniformContinuous.pow_const
File: Mathlib/Topology/Algebra/UniformGroup.lean

tactic: simp_rw [pow_zero]
state_before: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : UniformSpace β
f : β → α
hf : UniformContinuous f
⊢ UniformContinuous fun x => f x ^ 0
state_after: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : UniformSpace β
f : β → α
hf : UniformContinuous f
⊢ UniformContinuous fun x => 1

tactic: exact uniformContinuous_const
state_before: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : UniformSpace β
f : β → α
hf : UniformContinuous f
⊢ UniformContinuous fun x => 1
state_after: no goals

tactic: simp_rw [pow_succ']
state_before: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : UniformSpace β
f : β → α
hf : UniformContinuous f
n : ℕ
⊢ UniformContinuous fun x => f x ^ (n + 1)
state_after: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : UniformSpace β
f : β → α
hf : UniformContinuous f
n : ℕ
⊢ UniformContinuous fun x => f x * f x ^ n

tactic: exact hf.mul (hf.pow_const n)
state_before: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : UniformSpace β
f : β → α
hf : UniformContinuous f
n : ℕ
⊢ UniformContinuous fun x => f x * f x ^ n
state_after: no goals
Theorem: MeasureTheory.Measure.sum_sum
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: ext1 s hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
f : α → β
ι' : Type u_8
μ : ι → ι' → Measure α
⊢ (sum fun n => sum (μ n)) = sum fun p => μ p.1 p.2
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f : α → β
ι' : Type u_8
μ : ι → ι' → Measure α
s : Set α
hs : MeasurableSet s
⊢ (sum fun n => sum (μ n)) s = (sum fun p => μ p.1 p.2) s

tactic: simp [sum_apply _ hs, ENNReal.tsum_prod']
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f : α → β
ι' : Type u_8
μ : ι → ι' → Measure α
s : Set α
hs : MeasurableSet s
⊢ (sum fun n => sum (μ n)) s = (sum fun p => μ p.1 p.2) s
state_after: no goals
Theorem: MvPolynomial.X_mem_supported
File: Mathlib/Algebra/MvPolynomial/Supported.lean

tactic: simp [mem_supported]
state_before: σ : Type u_1
τ : Type u_2
R : Type u
S : Type v
r : R
e : ℕ
n m : σ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
s t : Set σ
inst✝ : Nontrivial R
i : σ
⊢ X i ∈ supported R s ↔ i ∈ s
state_after: no goals
Theorem: DomMulAct.smul_Lp_sub
File: Mathlib/MeasureTheory/Function/LpSpace/DomAct/Basic.lean

tactic: rintro ⟨⟨⟩, _⟩ ⟨⟨⟩, _⟩
state_before: M : Type u_1
N : Type u_2
α : Type u_3
E : Type u_4
inst✝⁶ : MeasurableSpace M
inst✝⁵ : MeasurableSpace N
inst✝⁴ : MeasurableSpace α
inst✝³ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝² : SMul M α
inst✝¹ : SMulInvariantMeasure M α μ
inst✝ : MeasurableSMul M α
c : Mᵈᵐᵃ
⊢ ∀ (f g : ↥(Lp E p μ)), c • (f - g) = c • f - c • g
state_after: case mk.mk.mk.mk
M : Type u_1
N : Type u_2
α : Type u_3
E : Type u_4
inst✝⁶ : MeasurableSpace M
inst✝⁵ : MeasurableSpace N
inst✝⁴ : MeasurableSpace α
inst✝³ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝² : SMul M α
inst✝¹ : SMulInvariantMeasure M α μ
inst✝ : MeasurableSMul M α
c : Mᵈᵐᵃ
val✝¹ : α →ₘ[μ] E
a✝¹ : { f // AEStronglyMeasurable f μ }
property✝¹ : Quot.mk Setoid.r a✝¹ ∈ Lp E p μ
val✝ : α →ₘ[μ] E
a✝ : { f // AEStronglyMeasurable f μ }
property✝ : Quot.mk Setoid.r a✝ ∈ Lp E p μ
⊢ c • (⟨Quot.mk Setoid.r a✝¹, property✝¹⟩ - ⟨Quot.mk Setoid.r a✝, property✝⟩) =
    c • ⟨Quot.mk Setoid.r a✝¹, property✝¹⟩ - c • ⟨Quot.mk Setoid.r a✝, property✝⟩

tactic: rfl
state_before: case mk.mk.mk.mk
M : Type u_1
N : Type u_2
α : Type u_3
E : Type u_4
inst✝⁶ : MeasurableSpace M
inst✝⁵ : MeasurableSpace N
inst✝⁴ : MeasurableSpace α
inst✝³ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝² : SMul M α
inst✝¹ : SMulInvariantMeasure M α μ
inst✝ : MeasurableSMul M α
c : Mᵈᵐᵃ
val✝¹ : α →ₘ[μ] E
a✝¹ : { f // AEStronglyMeasurable f μ }
property✝¹ : Quot.mk Setoid.r a✝¹ ∈ Lp E p μ
val✝ : α →ₘ[μ] E
a✝ : { f // AEStronglyMeasurable f μ }
property✝ : Quot.mk Setoid.r a✝ ∈ Lp E p μ
⊢ c • (⟨Quot.mk Setoid.r a✝¹, property✝¹⟩ - ⟨Quot.mk Setoid.r a✝, property✝⟩) =
    c • ⟨Quot.mk Setoid.r a✝¹, property✝¹⟩ - c • ⟨Quot.mk Setoid.r a✝, property✝⟩
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.tensor_whiskerLeft_symm
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z✝ X Y Z Z' : C
f : Z ⟶ Z'
⊢ X ◁ Y ◁ f = (α_ X Y Z).inv ≫ (X ⊗ Y) ◁ f ≫ (α_ X Y Z').hom
state_after: no goals
Theorem: Basis.det_ne_zero
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: simpa [h] using e.det_self
state_before: R : Type u_1
inst✝⁷ : CommRing R
M : Type u_2
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
M' : Type u_3
inst✝⁴ : AddCommGroup M'
inst✝³ : Module R M'
ι : Type u_4
inst✝² : DecidableEq ι
inst✝¹ : Fintype ι
e : Basis ι R M
inst✝ : Nontrivial R
h : e.det = 0
⊢ False
state_after: no goals
Theorem: Filter.disjoint_comap
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [disjoint_iff, ← comap_inf, h.eq_bot, comap_bot]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m : α → β
m' : β → γ
s : Set α
t : Set β
h : Disjoint g₁ g₂
⊢ Disjoint (comap m g₁) (comap m g₂)
state_after: no goals
Theorem: CauchyFilter.cauchyFilter_eq
File: Mathlib/Topology/UniformSpace/Completion.lean

tactic: rw [← inseparable_iff_eq, inseparable_lim_iff]
state_before: α : Type u_1
inst✝² : UniformSpace α
inst✝¹ : CompleteSpace α
inst✝ : T0Space α
f g : CauchyFilter α
⊢ lim ↑f = lim ↑g ↔ Inseparable f g
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.dblU_smul
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: simp only [dblU_eq, smul_fin3_ext]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
u : R
⊢ W'.dblU (u • P) = u ^ 4 * W'.dblU P
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
u : R
⊢ W'.a₁ * (u ^ 3 * P y) * (u * P z) -
      (3 * (u ^ 2 * P x) ^ 2 + 2 * W'.a₂ * (u ^ 2 * P x) * (u * P z) ^ 2 + W'.a₄ * (u * P z) ^ 4) =
    u ^ 4 * (W'.a₁ * P y * P z - (3 * P x ^ 2 + 2 * W'.a₂ * P x * P z ^ 2 + W'.a₄ * P z ^ 4))

tactic: ring1
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
u : R
⊢ W'.a₁ * (u ^ 3 * P y) * (u * P z) -
      (3 * (u ^ 2 * P x) ^ 2 + 2 * W'.a₂ * (u ^ 2 * P x) * (u * P z) ^ 2 + W'.a₄ * (u * P z) ^ 4) =
    u ^ 4 * (W'.a₁ * P y * P z - (3 * P x ^ 2 + 2 * W'.a₂ * P x * P z ^ 2 + W'.a₄ * P z ^ 4))
state_after: no goals
Theorem: AlgebraicGeometry.locallyOfFiniteType_eq
File: Mathlib/AlgebraicGeometry/Morphisms/FiniteType.lean

tactic: ext X Y f
state_before: X Y : Scheme
f : X ⟶ Y
⊢ @LocallyOfFiniteType = affineLocally @RingHom.FiniteType
state_after: case h.h.h.a
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
⊢ LocallyOfFiniteType f ↔ affineLocally (@RingHom.FiniteType) f

tactic: rw [locallyOfFiniteType_iff, affineLocally_iff_affineOpens_le]
state_before: case h.h.h.a
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
⊢ LocallyOfFiniteType f ↔ affineLocally (@RingHom.FiniteType) f
state_after: case h.h.h.a.hP
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
⊢ RingHom.RespectsIso @RingHom.FiniteType

tactic: exact RingHom.finiteType_respectsIso
state_before: case h.h.h.a.hP
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
⊢ RingHom.RespectsIso @RingHom.FiniteType
state_after: no goals
Theorem: OrderIso.map_mem_minimals
File: Mathlib/Order/Minimal.lean

tactic: rw [← image_minimals_univ] at hx
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f✝ : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
f : ↑s ≃o ↑t
x : α
hx : x ∈ minimals (fun x x_1 => x ≤ x_1) s
⊢ ↑(f ⟨x, ⋯⟩) ∈ minimals (fun x x_1 => x ≤ x_1) t
state_after: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f✝ : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
f : ↑s ≃o ↑t
x : α
hx✝ : x ∈ minimals (fun x x_1 => x ≤ x_1) s
hx : x ∈ Subtype.val '' minimals (fun x x_1 => x ≤ x_1) univ
⊢ ↑(f ⟨x, ⋯⟩) ∈ minimals (fun x x_1 => x ≤ x_1) t

tactic: obtain ⟨x, h, rfl⟩ := hx
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f✝ : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
f : ↑s ≃o ↑t
x : α
hx✝ : x ∈ minimals (fun x x_1 => x ≤ x_1) s
hx : x ∈ Subtype.val '' minimals (fun x x_1 => x ≤ x_1) univ
⊢ ↑(f ⟨x, ⋯⟩) ∈ minimals (fun x x_1 => x ≤ x_1) t
state_after: case intro.intro
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f✝ : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
f : ↑s ≃o ↑t
x : { x // x ∈ s }
h : x ∈ minimals (fun x x_1 => x ≤ x_1) univ
hx : ↑x ∈ minimals (fun x x_1 => x ≤ x_1) s
⊢ ↑(f ⟨↑x, ⋯⟩) ∈ minimals (fun x x_1 => x ≤ x_1) t

tactic: convert map_mem_minimals (f := Subtype.val ∘ f) (fun _ _ _ _ ↦ f.map_rel_iff.symm) h
state_before: case intro.intro
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f✝ : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
f : ↑s ≃o ↑t
x : { x // x ∈ s }
h : x ∈ minimals (fun x x_1 => x ≤ x_1) univ
hx : ↑x ∈ minimals (fun x x_1 => x ≤ x_1) s
⊢ ↑(f ⟨↑x, ⋯⟩) ∈ minimals (fun x x_1 => x ≤ x_1) t
state_after: case h.e'_5.h.e'_3
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f✝ : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
f : ↑s ≃o ↑t
x : { x // x ∈ s }
h : x ∈ minimals (fun x x_1 => x ≤ x_1) univ
hx : ↑x ∈ minimals (fun x x_1 => x ≤ x_1) s
⊢ t = Subtype.val ∘ ⇑f '' univ

tactic: rw [image_comp, image_univ, f.range_eq, image_univ, Subtype.range_val]
state_before: case h.e'_5.h.e'_3
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f✝ : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
f : ↑s ≃o ↑t
x : { x // x ∈ s }
h : x ∈ minimals (fun x x_1 => x ≤ x_1) univ
hx : ↑x ∈ minimals (fun x x_1 => x ≤ x_1) s
⊢ t = Subtype.val ∘ ⇑f '' univ
state_after: no goals
Theorem: Multiset.mem_Iio
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [Iio, ← Finset.mem_def, Finset.mem_Iio]
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrderBot α
b x : α
⊢ x ∈ Iio b ↔ x < b
state_after: no goals
Theorem: Finsupp.card_support_eq_one'
File: Mathlib/Data/Finsupp/Defs.lean

tactic: simp only [card_eq_one, support_eq_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
f : α →₀ M
⊢ f.support.card = 1 ↔ ∃ a b, b ≠ 0 ∧ f = single a b
state_after: no goals
Theorem: CategoryTheory.Limits.CompleteLattice.pullback_eq_inf
File: Mathlib/CategoryTheory/Limits/Lattice.lean

tactic: rw [finite_limit_eq_finset_univ_inf]
state_before: α : Type u
J : Type w
inst✝³ : SmallCategory J
inst✝² : FinCategory J
inst✝¹ : SemilatticeInf α
inst✝ : OrderTop α
x y z : α
f : x ⟶ z
g : y ⟶ z
⊢ limit (cospan f g) = Finset.univ.inf (cospan f g).obj
state_after: no goals

tactic: rw [inf_top_eq]
state_before: α : Type u
J : Type w
inst✝³ : SmallCategory J
inst✝² : FinCategory J
inst✝¹ : SemilatticeInf α
inst✝ : OrderTop α
x y z : α
f : x ⟶ z
g : y ⟶ z
⊢ z ⊓ (x ⊓ (y ⊓ ⊤)) = z ⊓ (x ⊓ y)
state_after: no goals
Theorem: Filter.tendsto_principal
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [Tendsto, le_principal_iff, mem_map', Filter.Eventually]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l✝ : Filter α
f : α → β
l : Filter α
s : Set β
⊢ Tendsto f l (𝓟 s) ↔ ∀ᶠ (a : α) in l, f a ∈ s
state_after: no goals
Theorem: MvPolynomial.coe_eq_zero_iff
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

tactic: rw [← coe_zero, coe_inj]
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : MvPolynomial σ R
⊢ ↑φ = 0 ↔ φ = 0
state_after: no goals
Theorem: Monoid.Coprod.snd_comp_toProd
File: Mathlib/GroupTheory/Coprod/Basic.lean

tactic: rw [← fst_prod_snd, MonoidHom.snd_comp_prod]
state_before: M : Type u_1
N : Type u_2
inst✝¹ : Monoid M
inst✝ : Monoid N
⊢ (MonoidHom.snd M N).comp toProd = snd
state_after: no goals
Theorem: Finset.mem_finAntidiagonal₀'
File: Mathlib/Algebra/Order/Antidiag/Finsupp.lean

tactic: simp only [finAntidiagonal₀, mem_map, Embedding.coeFn_mk, ← mem_finAntidiagonal,
  ← DFunLike.coe_injective.eq_iff, Finsupp.coe_mk, exists_eq_right]
state_before: ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝² : AddCommMonoid μ
inst✝¹ : DecidableEq μ
inst✝ : HasAntidiagonal μ
d : ℕ
n : μ
f : Fin d →₀ μ
⊢ f ∈ finAntidiagonal₀ d n ↔ ∑ i : Fin d, f i = n
state_after: no goals
Theorem: QuadraticForm.polar_add
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simp only [polar, Pi.add_apply]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : CommRing R
inst✝ : AddCommGroup M
f g : M → R
x y : M
⊢ polar (f + g) x y = polar f x y + polar g x y
state_after: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : CommRing R
inst✝ : AddCommGroup M
f g : M → R
x y : M
⊢ f (x + y) + g (x + y) - (f x + g x) - (f y + g y) = f (x + y) - f x - f y + (g (x + y) - g x - g y)

tactic: abel
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : CommRing R
inst✝ : AddCommGroup M
f g : M → R
x y : M
⊢ f (x + y) + g (x + y) - (f x + g x) - (f y + g y) = f (x + y) - f x - f y + (g (x + y) - g x - g y)
state_after: no goals
Theorem: Matrix.det_fromBlocks₂₂
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

tactic: have : fromBlocks A B C D =
    (fromBlocks D C B A).submatrix (Equiv.sumComm _ _) (Equiv.sumComm _ _) := by
  ext (i j)
  cases i <;> cases j <;> rfl
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
inst✝ : Invertible D
⊢ (fromBlocks A B C D).det = D.det * (A - B * ⅟D * C).det
state_after: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
inst✝ : Invertible D
this : fromBlocks A B C D = (fromBlocks D C B A).submatrix ⇑(Equiv.sumComm m n) ⇑(Equiv.sumComm m n)
⊢ (fromBlocks A B C D).det = D.det * (A - B * ⅟D * C).det

tactic: rw [this, det_submatrix_equiv_self, det_fromBlocks₁₁]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
inst✝ : Invertible D
this : fromBlocks A B C D = (fromBlocks D C B A).submatrix ⇑(Equiv.sumComm m n) ⇑(Equiv.sumComm m n)
⊢ (fromBlocks A B C D).det = D.det * (A - B * ⅟D * C).det
state_after: no goals

tactic: ext (i j)
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
inst✝ : Invertible D
⊢ fromBlocks A B C D = (fromBlocks D C B A).submatrix ⇑(Equiv.sumComm m n) ⇑(Equiv.sumComm m n)
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
inst✝ : Invertible D
i j : m ⊕ n
⊢ fromBlocks A B C D i j = (fromBlocks D C B A).submatrix (⇑(Equiv.sumComm m n)) (⇑(Equiv.sumComm m n)) i j

tactic: cases i <;> cases j <;> rfl
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
inst✝ : Invertible D
i j : m ⊕ n
⊢ fromBlocks A B C D i j = (fromBlocks D C B A).submatrix (⇑(Equiv.sumComm m n)) (⇑(Equiv.sumComm m n)) i j
state_after: no goals
Theorem: CategoryTheory.GrothendieckTopology.W_whiskerLeft_iff
File: Mathlib/CategoryTheory/Sites/Equivalence.lean

tactic: rw [← W_inverseImage_whiskeringLeft J K G]
state_before: C : Type u₁
inst✝¹⁰ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝⁹ : Category.{v₂, u₂} D
K : GrothendieckTopology D
e : C ≌ D
G : D ⥤ C
A : Type u₃
inst✝⁸ : Category.{v₃, u₃} A
inst✝⁷ : EssentiallySmall.{w, v₁, u₁} C
B : Type u_1
inst✝⁶ : Category.{?u.121483, u_1} B
F : A ⥤ B
inst✝⁵ : HasSheafify ⋯.inducedTopology A
inst✝⁴ : ⋯.inducedTopology.HasSheafCompose F
inst✝³ : G.IsCoverDense J
inst✝² : G.IsContinuous K J
inst✝¹ : G.Full
inst✝ : (G.sheafPushforwardContinuous A K J).EssSurj
P Q : Cᵒᵖ ⥤ A
f : P ⟶ Q
⊢ K.W (whiskerLeft G.op f) ↔ J.W f
state_after: C : Type u₁
inst✝¹⁰ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝⁹ : Category.{v₂, u₂} D
K : GrothendieckTopology D
e : C ≌ D
G : D ⥤ C
A : Type u₃
inst✝⁸ : Category.{v₃, u₃} A
inst✝⁷ : EssentiallySmall.{w, v₁, u₁} C
B : Type u_1
inst✝⁶ : Category.{?u.121483, u_1} B
F : A ⥤ B
inst✝⁵ : HasSheafify ⋯.inducedTopology A
inst✝⁴ : ⋯.inducedTopology.HasSheafCompose F
inst✝³ : G.IsCoverDense J
inst✝² : G.IsContinuous K J
inst✝¹ : G.Full
inst✝ : (G.sheafPushforwardContinuous A K J).EssSurj
P Q : Cᵒᵖ ⥤ A
f : P ⟶ Q
⊢ K.W (whiskerLeft G.op f) ↔ K.W.inverseImage ((whiskeringLeft Dᵒᵖ Cᵒᵖ A).obj G.op) f

tactic: rfl
state_before: C : Type u₁
inst✝¹⁰ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝⁹ : Category.{v₂, u₂} D
K : GrothendieckTopology D
e : C ≌ D
G : D ⥤ C
A : Type u₃
inst✝⁸ : Category.{v₃, u₃} A
inst✝⁷ : EssentiallySmall.{w, v₁, u₁} C
B : Type u_1
inst✝⁶ : Category.{?u.121483, u_1} B
F : A ⥤ B
inst✝⁵ : HasSheafify ⋯.inducedTopology A
inst✝⁴ : ⋯.inducedTopology.HasSheafCompose F
inst✝³ : G.IsCoverDense J
inst✝² : G.IsContinuous K J
inst✝¹ : G.Full
inst✝ : (G.sheafPushforwardContinuous A K J).EssSurj
P Q : Cᵒᵖ ⥤ A
f : P ⟶ Q
⊢ K.W (whiskerLeft G.op f) ↔ K.W.inverseImage ((whiskeringLeft Dᵒᵖ Cᵒᵖ A).obj G.op) f
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isInt_zpow_pos
File: Mathlib/Tactic/NormNum/Pow.lean

tactic: rwa [pb.out, zpow_natCast]
state_before: α : Type u_1
inst✝ : DivisionRing α
a : α
b : ℤ
nb ne : ℕ
pb : IsNat b nb
pe' : IsInt (a ^ nb) (Int.negOfNat ne)
⊢ IsInt (a ^ b) (Int.negOfNat ne)
state_after: no goals
Theorem: inf_sdiff_self_right
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [sup_inf_sdiff]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y \ x = (x ⊓ y ⊔ x \ y) ⊓ y \ x
state_after: no goals

tactic: rw [inf_sup_right]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ (x ⊓ y ⊔ x \ y) ⊓ y \ x = x ⊓ y ⊓ y \ x ⊔ x \ y ⊓ y \ x
state_after: no goals

tactic: rw [inf_comm x y, inf_inf_sdiff, sdiff_inf_sdiff, bot_sup_eq]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y ⊓ y \ x ⊔ x \ y ⊓ y \ x = ⊥
state_after: no goals
Theorem: isAlgebraic_iff_not_injective
File: Mathlib/RingTheory/Algebraic.lean

tactic: simp only [IsAlgebraic, injective_iff_map_eq_zero, not_forall, and_comm, exists_prop]
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
x : A
⊢ IsAlgebraic R x ↔ ¬Function.Injective ⇑(aeval x)
state_after: no goals
Theorem: not_covBy_iff
File: Mathlib/Order/Cover.lean

tactic: simp_rw [CovBy, h, true_and_iff, not_forall, exists_prop, not_not]
state_before: α : Type u_1
β : Type u_2
inst✝ : LT α
a b : α
h : a < b
⊢ ¬a ⋖ b ↔ ∃ c, a < c ∧ c < b
state_after: no goals
Theorem: isIntegrallyClosed_iff
File: Mathlib/RingTheory/IntegrallyClosed.lean

tactic: simp [isIntegrallyClosed_iff_isIntegrallyClosedIn K, isIntegrallyClosedIn_iff,
      IsFractionRing.injective R K]
state_before: R : Type u_1
inst✝⁷ : CommRing R
A : Type u_2
B : Type u_3
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra R A
inst✝³ : Algebra R B
K : Type u_4
inst✝² : CommRing K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
⊢ IsIntegrallyClosed R ↔ ∀ {x : K}, IsIntegral R x → ∃ y, (algebraMap R K) y = x
state_after: no goals
Theorem: Set.countable_setOf_finite_subset
File: Mathlib/Data/Set/Countable.lean

tactic: have := hs.to_subtype
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
⊢ {t | t.Finite ∧ t ⊆ s}.Countable
state_after: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
⊢ {t | t.Finite ∧ t ⊆ s}.Countable

tactic: refine (countable_range fun t : Finset s => Subtype.val '' (t : Set s)).mono ?_
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
⊢ {t | t.Finite ∧ t ⊆ s}.Countable
state_after: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
⊢ {t | t.Finite ∧ t ⊆ s} ⊆ range fun t => Subtype.val '' ↑t

tactic: rintro t ⟨ht, hts⟩
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
⊢ {t | t.Finite ∧ t ⊆ s} ⊆ range fun t => Subtype.val '' ↑t
state_after: case intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
t : Set α
ht : t.Finite
hts : t ⊆ s
⊢ t ∈ range fun t => Subtype.val '' ↑t

tactic: lift t to Set s using hts
state_before: case intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
t : Set α
ht : t.Finite
hts : t ⊆ s
⊢ t ∈ range fun t => Subtype.val '' ↑t
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
t : Set ↑s
ht : (Subtype.val '' t).Finite
⊢ Subtype.val '' t ∈ range fun t => Subtype.val '' ↑t

tactic: lift t to Finset s using ht.of_finite_image Subtype.val_injective.injOn
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
t : Set ↑s
ht : (Subtype.val '' t).Finite
⊢ Subtype.val '' t ∈ range fun t => Subtype.val '' ↑t
state_after: case intro.intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
t : Finset ↑s
ht : (Subtype.val '' ↑t).Finite
⊢ Subtype.val '' ↑t ∈ range fun t => Subtype.val '' ↑t

tactic: exact mem_range_self _
state_before: case intro.intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
hs : s.Countable
this : Countable ↑s
t : Finset ↑s
ht : (Subtype.val '' ↑t).Finite
⊢ Subtype.val '' ↑t ∈ range fun t => Subtype.val '' ↑t
state_after: no goals
Theorem: Nat.WithBot.lt_one_iff_le_zero
File: Mathlib/Data/Nat/WithBot.lean

tactic: simpa using one_le_iff_zero_lt
state_before: x : WithBot ℕ
⊢ ¬x < 1 ↔ ¬x ≤ 0
state_after: no goals