1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Matrix.blockDiagonal'_map
File: Mathlib/Data/Matrix/Block.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
f : α → β
hf : f 0 = 0
⊢ (blockDiagonal' M).map f = blockDiagonal' fun k => (M k).map f
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
f : α → β
hf : f 0 = 0
i✝ : (i : o) × m' i
j✝ : (i : o) × n' i
⊢ (blockDiagonal' M).map f i✝ j✝ = blockDiagonal' (fun k => (M k).map f) i✝ j✝

tactic: simp only [map_apply, blockDiagonal'_apply, eq_comm]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
f : α → β
hf : f 0 = 0
i✝ : (i : o) × m' i
j✝ : (i : o) × n' i
⊢ (blockDiagonal' M).map f i✝ j✝ = blockDiagonal' (fun k => (M k).map f) i✝ j✝
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
f : α → β
hf : f 0 = 0
i✝ : (i : o) × m' i
j✝ : (i : o) × n' i
⊢ f (if h : i✝.fst = j✝.fst then M i✝.fst i✝.snd (cast ⋯ j✝.snd) else 0) =
    if h : i✝.fst = j✝.fst then f (M i✝.fst i✝.snd (cast ⋯ j✝.snd)) else 0

tactic: rw [apply_dite f, hf]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : (i : o) → Matrix (m' i) (n' i) α
f : α → β
hf : f 0 = 0
i✝ : (i : o) × m' i
j✝ : (i : o) × n' i
⊢ f (if h : i✝.fst = j✝.fst then M i✝.fst i✝.snd (cast ⋯ j✝.snd) else 0) =
    if h : i✝.fst = j✝.fst then f (M i✝.fst i✝.snd (cast ⋯ j✝.snd)) else 0
state_after: no goals
Theorem: Fin2.rev_last
File: Mathlib/Data/Fin/Fin2.lean

tactic: induction n <;> simp_all [rev, castSucc, last]
state_before: n : ℕ
⊢ last.rev = fz
state_after: no goals
Theorem: LinearMap.BilinForm.IsAdjointPair.smul
File: Mathlib/LinearAlgebra/BilinearForm/Properties.lean

tactic: rw [LinearMap.smul_apply, LinearMap.smul_apply, smul_left, smul_right, h]
state_before: R : Type u_1
M : Type u_2
inst✝¹⁶ : CommSemiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹³ : CommRing R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝¹⁰ : Field K
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁷ : AddCommMonoid M'✝
inst✝⁶ : AddCommMonoid M''
inst✝⁵ : Module R M'✝
inst✝⁴ : Module R M''
B : BilinForm R M
B₁ : BilinForm R₁ M₁
F : BilinForm R M
M' : Type u_9
inst✝³ : AddCommMonoid M'
inst✝² : Module R M'
B' : BilinForm R M'
f f' : M →ₗ[R] M'
g g' : M' →ₗ[R] M
M₁' : Type u_10
inst✝¹ : AddCommGroup M₁'
inst✝ : Module R₁ M₁'
B₁' : BilinForm R₁ M₁'
f₁ f₁' : M₁ →ₗ[R₁] M₁'
g₁ g₁' : M₁' →ₗ[R₁] M₁
B₂' : BilinForm R M'
f₂ f₂' : M →ₗ[R] M'
g₂ g₂' : M' →ₗ[R] M
c : R
h : B.IsAdjointPair B₂' f₂ g₂
x : M
y : M'
⊢ (B₂' ((c • f₂) x)) y = (B x) ((c • g₂) y)
state_after: no goals
Theorem: commutatorElement_inv
File: Mathlib/GroupTheory/Commutator.lean

tactic: simp_rw [commutatorElement_def, mul_inv_rev, inv_inv, mul_assoc]
state_before: G : Type u_1
G' : Type u_2
F : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : FunLike F G G'
inst✝ : MonoidHomClass F G G'
f : F
g₁ g₂ g₃ g : G
⊢ ⁅g₁, g₂⁆⁻¹ = ⁅g₂, g₁⁆
state_after: no goals
Theorem: NormedAddGroupHom.extension_unique
File: Mathlib/Analysis/Normed/Group/HomCompletion.lean

tactic: ext v
state_before: G : Type u_1
inst✝³ : SeminormedAddCommGroup G
H : Type u_2
inst✝² : SeminormedAddCommGroup H
inst✝¹ : T0Space H
inst✝ : CompleteSpace H
f : NormedAddGroupHom G H
g : NormedAddGroupHom (Completion G) H
hg : ∀ (v : G), f v = g (↑G v)
⊢ f.extension = g
state_after: case H
G : Type u_1
inst✝³ : SeminormedAddCommGroup G
H : Type u_2
inst✝² : SeminormedAddCommGroup H
inst✝¹ : T0Space H
inst✝ : CompleteSpace H
f : NormedAddGroupHom G H
g : NormedAddGroupHom (Completion G) H
hg : ∀ (v : G), f v = g (↑G v)
v : Completion G
⊢ f.extension v = g v

tactic: rw [NormedAddGroupHom.extension_coe_to_fun,
  Completion.extension_unique f.uniformContinuous g.uniformContinuous fun a => hg a]
state_before: case H
G : Type u_1
inst✝³ : SeminormedAddCommGroup G
H : Type u_2
inst✝² : SeminormedAddCommGroup H
inst✝¹ : T0Space H
inst✝ : CompleteSpace H
f : NormedAddGroupHom G H
g : NormedAddGroupHom (Completion G) H
hg : ∀ (v : G), f v = g (↑G v)
v : Completion G
⊢ f.extension v = g v
state_after: no goals
Theorem: Finset.exists_ne_map_eq_of_card_lt_of_maps_to
File: Mathlib/Data/Finset/Card.lean

tactic: classical
by_contra! hz
refine hc.not_le (card_le_card_of_injOn f hf ?_)
intro x hx y hy
contrapose
exact hz x hx y hy
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
⊢ ∃ x ∈ s, ∃ y ∈ s, x ≠ y ∧ f x = f y
state_after: no goals

tactic: by_contra! hz
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
⊢ ∃ x ∈ s, ∃ y ∈ s, x ≠ y ∧ f x = f y
state_after: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
hz : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → f x ≠ f y
⊢ False

tactic: refine hc.not_le (card_le_card_of_injOn f hf ?_)
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
hz : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → f x ≠ f y
⊢ False
state_after: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
hz : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → f x ≠ f y
⊢ Set.InjOn f ↑s

tactic: intro x hx y hy
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
hz : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → f x ≠ f y
⊢ Set.InjOn f ↑s
state_after: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
hz : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → f x ≠ f y
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
⊢ f x = f y → x = y

tactic: contrapose
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
hz : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → f x ≠ f y
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
⊢ f x = f y → x = y
state_after: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
hz : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → f x ≠ f y
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
⊢ ¬x = y → ¬f x = f y

tactic: exact hz x hx y hy
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t✝¹ u : Finset α
f✝ : α → β
n : ℕ
t✝ t : Finset β
hc : t.card < s.card
f : α → β
hf : ∀ a ∈ s, f a ∈ t
hz : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → f x ≠ f y
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
⊢ ¬x = y → ¬f x = f y
state_after: no goals
Theorem: MeasureTheory.snormEssSup_indicator_eq_snormEssSup_restrict
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: simp_rw [snormEssSup, nnnorm_indicator_eq_indicator_nnnorm, ENNReal.coe_indicator,
  ENNReal.essSup_indicator_eq_essSup_restrict hs]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
⊢ snormEssSup (s.indicator f) μ = snormEssSup f (μ.restrict s)
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.restrict_univ
File: Mathlib/MeasureTheory/OuterMeasure/Operations.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
m✝ m : OuterMeasure α
s : Set α
⊢ ((restrict univ) m) s = m s
state_after: no goals
Theorem: Set.iUnion_image_left
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [image2_eq_iUnion, image_eq_iUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β → γ
s : Set α
t : Set β
⊢ ⋃ a ∈ s, f a '' t = image2 f s t
state_after: no goals
Theorem: ArithmeticFunction.isMultiplicative_sigma
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: rw [← zeta_mul_pow_eq_sigma]
state_before: R : Type u_1
k : ℕ
⊢ (σ k).IsMultiplicative
state_after: R : Type u_1
k : ℕ
⊢ (ζ * pow k).IsMultiplicative

tactic: apply isMultiplicative_zeta.mul isMultiplicative_pow
state_before: R : Type u_1
k : ℕ
⊢ (ζ * pow k).IsMultiplicative
state_after: no goals
Theorem: Submodule.mem_sup_left
File: Mathlib/Algebra/Module/Submodule/Lattice.lean

tactic: have : S ≤ S ⊔ T := le_sup_left
state_before: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T
state_after: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
this : S ≤ S ⊔ T
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T

tactic: rw [LE.le] at this
state_before: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
this : S ≤ S ⊔ T
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T
state_after: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
this : Preorder.toLE.1 S (S ⊔ T)
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T

tactic: exact this
state_before: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
this : Preorder.toLE.1 S (S ⊔ T)
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T
state_after: no goals
Theorem: MeasureTheory.integral_dirac
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp [Measure.dirac_apply_of_mem]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : NormedSpace 𝕜 E
inst✝⁹ : SMulCommClass ℝ 𝕜 E
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace ℝ F
inst✝⁶ : CompleteSpace F
G : Type u_5
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝³ : TopologicalSpace X
inst✝² : FirstCountableTopology X
ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → E
a : α
⊢ ∫ (x : α), f a ∂Measure.dirac a = f a
state_after: no goals
Theorem: posMulMono_iff_mulPosMono
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

tactic: simp only [PosMulMono, MulPosMono, IsSymmOp.symm_op]
state_before: α : Type u_1
a b c d : α
inst✝³ : Mul α
inst✝² : IsSymmOp α α fun x x_1 => x * x_1
inst✝¹ : Zero α
inst✝ : Preorder α
⊢ PosMulMono α ↔ MulPosMono α
state_after: no goals
Theorem: Multiset.toDFinsupp_singleton
File: Mathlib/Data/DFinsupp/Multiset.lean

tactic: rw [← replicate_one, toDFinsupp_replicate]
state_before: α : Type u_1
β : α → Type u_2
inst✝ : DecidableEq α
s t : Multiset α
a : α
⊢ toDFinsupp {a} = DFinsupp.single a 1
state_after: no goals
Theorem: finSuccAboveEquiv_symm_apply_ne_last
File: Mathlib/Logic/Equiv/Fin.lean

tactic: rw [← Option.some_inj]
state_before: m n : ℕ
p : Fin (n + 1)
h : p ≠ Fin.last n
x : { x // x ≠ p }
⊢ (finSuccAboveEquiv p).symm x = (p.castLT ⋯).predAbove ↑x
state_after: m n : ℕ
p : Fin (n + 1)
h : p ≠ Fin.last n
x : { x // x ≠ p }
⊢ some ((finSuccAboveEquiv p).symm x) = some ((p.castLT ⋯).predAbove ↑x)

tactic: simpa [finSuccAboveEquiv, OrderIso.symm] using finSuccEquiv'_ne_last_apply h x.property
state_before: m n : ℕ
p : Fin (n + 1)
h : p ≠ Fin.last n
x : { x // x ≠ p }
⊢ some ((finSuccAboveEquiv p).symm x) = some ((p.castLT ⋯).predAbove ↑x)
state_after: no goals
Theorem: Set.exists_eq_const_of_preimage_singleton
File: Mathlib/Data/Set/Image.lean

tactic: rcases em (∃ b, f ⁻¹' {b} = univ) with ⟨b, hb⟩ | hf'
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
g : β → γ
inst✝ : Nonempty β
f : α → β
hf : ∀ (b : β), f ⁻¹' {b} = ∅ ∨ f ⁻¹' {b} = univ
⊢ ∃ b, f = const α b
state_after: case inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
g : β → γ
inst✝ : Nonempty β
f : α → β
hf : ∀ (b : β), f ⁻¹' {b} = ∅ ∨ f ⁻¹' {b} = univ
b : β
hb : f ⁻¹' {b} = univ
⊢ ∃ b, f = const α b

case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
g : β → γ
inst✝ : Nonempty β
f : α → β
hf : ∀ (b : β), f ⁻¹' {b} = ∅ ∨ f ⁻¹' {b} = univ
hf' : ¬∃ b, f ⁻¹' {b} = univ
⊢ ∃ b, f = const α b

tactic: exact ⟨b, funext fun x ↦ eq_univ_iff_forall.1 hb x⟩
state_before: case inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
g : β → γ
inst✝ : Nonempty β
f : α → β
hf : ∀ (b : β), f ⁻¹' {b} = ∅ ∨ f ⁻¹' {b} = univ
b : β
hb : f ⁻¹' {b} = univ
⊢ ∃ b, f = const α b
state_after: no goals

tactic: have : ∀ x b, f x ≠ b := fun x b ↦
  eq_empty_iff_forall_not_mem.1 ((hf b).resolve_right fun h ↦ hf' ⟨b, h⟩) x
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
g : β → γ
inst✝ : Nonempty β
f : α → β
hf : ∀ (b : β), f ⁻¹' {b} = ∅ ∨ f ⁻¹' {b} = univ
hf' : ¬∃ b, f ⁻¹' {b} = univ
⊢ ∃ b, f = const α b
state_after: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
g : β → γ
inst✝ : Nonempty β
f : α → β
hf : ∀ (b : β), f ⁻¹' {b} = ∅ ∨ f ⁻¹' {b} = univ
hf' : ¬∃ b, f ⁻¹' {b} = univ
this : ∀ (x : α) (b : β), f x ≠ b
⊢ ∃ b, f = const α b

tactic: exact ⟨Classical.arbitrary β, funext fun x ↦ absurd rfl (this x _)⟩
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
g : β → γ
inst✝ : Nonempty β
f : α → β
hf : ∀ (b : β), f ⁻¹' {b} = ∅ ∨ f ⁻¹' {b} = univ
hf' : ¬∃ b, f ⁻¹' {b} = univ
this : ∀ (x : α) (b : β), f x ≠ b
⊢ ∃ b, f = const α b
state_after: no goals
Theorem: Nat.sqrt_lt'
File: Mathlib/Data/Nat/Defs.lean

tactic: simp only [← not_le, le_sqrt']
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ m.sqrt < n ↔ m < n ^ 2
state_after: no goals
Theorem: sSup_compact_eq_top
File: Mathlib/Order/CompactlyGenerated/Basic.lean

tactic: refine Eq.trans (congr rfl (Set.ext fun x => ?_)) (sSup_compact_le_eq ⊤)
state_before: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
⊢ sSup {a | CompleteLattice.IsCompactElement a} = ⊤
state_after: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
x : α
⊢ x ∈ {a | CompleteLattice.IsCompactElement a} ↔ x ∈ {c | CompleteLattice.IsCompactElement c ∧ c ≤ ⊤}

tactic: exact (and_iff_left le_top).symm
state_before: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
x : α
⊢ x ∈ {a | CompleteLattice.IsCompactElement a} ↔ x ∈ {c | CompleteLattice.IsCompactElement c ∧ c ≤ ⊤}
state_after: no goals
Theorem: Ordinal.lift_inj
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: simp only [le_antisymm_iff, lift_le]
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{v}
⊢ lift.{u, v} a = lift.{u, v} b ↔ a = b
state_after: no goals
Theorem: circleIntegral_def_Icc
File: Mathlib/MeasureTheory/Integral/CircleIntegral.lean

tactic: rw [circleIntegral, intervalIntegral.integral_of_le Real.two_pi_pos.le,
  Measure.restrict_congr_set Ioc_ae_eq_Icc]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
R : ℝ
⊢ (∮ (z : ℂ) in C(c, R), f z) = ∫ (θ : ℝ) in Icc 0 (2 * π), deriv (circleMap c R) θ • f (circleMap c R θ)
state_after: no goals
Theorem: MvPolynomial.prod_X_pow_eq_monomial
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: simp only [monomial_eq, map_one, one_mul, Finsupp.prod]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p q : MvPolynomial σ R
⊢ ∏ x ∈ s.support, X x ^ s x = (monomial s) 1
state_after: no goals
Theorem: Polynomial.div_C_mul
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: by_cases ha : a = 0
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
⊢ p / (C a * q) = C a⁻¹ * (p / q)
state_after: case pos
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
ha : a = 0
⊢ p / (C a * q) = C a⁻¹ * (p / q)

case neg
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
ha : ¬a = 0
⊢ p / (C a * q) = C a⁻¹ * (p / q)

tactic: simp only [div_def, leadingCoeff_mul, mul_inv, leadingCoeff_C, C.map_mul, mul_assoc]
state_before: case neg
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
ha : ¬a = 0
⊢ p / (C a * q) = C a⁻¹ * (p / q)
state_after: case neg
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
ha : ¬a = 0
⊢ C a⁻¹ * (C q.leadingCoeff⁻¹ * (p /ₘ (C a * (q * (C a⁻¹ * C q.leadingCoeff⁻¹))))) =
    C a⁻¹ * (C q.leadingCoeff⁻¹ * (p /ₘ (q * C q.leadingCoeff⁻¹)))

tactic: congr 3
state_before: case neg
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
ha : ¬a = 0
⊢ C a⁻¹ * (C q.leadingCoeff⁻¹ * (p /ₘ (C a * (q * (C a⁻¹ * C q.leadingCoeff⁻¹))))) =
    C a⁻¹ * (C q.leadingCoeff⁻¹ * (p /ₘ (q * C q.leadingCoeff⁻¹)))
state_after: case neg.e_a.e_a.e_q
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
ha : ¬a = 0
⊢ C a * (q * (C a⁻¹ * C q.leadingCoeff⁻¹)) = q * C q.leadingCoeff⁻¹

tactic: rw [mul_left_comm q, ← mul_assoc, ← C.map_mul, mul_inv_cancel ha, C.map_one, one_mul]
state_before: case neg.e_a.e_a.e_q
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
ha : ¬a = 0
⊢ C a * (q * (C a⁻¹ * C q.leadingCoeff⁻¹)) = q * C q.leadingCoeff⁻¹
state_after: no goals

tactic: simp [ha]
state_before: case pos
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
ha : a = 0
⊢ p / (C a * q) = C a⁻¹ * (p / q)
state_after: no goals
Theorem: FirstOrder.Language.Theory.SemanticallyEquivalent.imp
File: Mathlib/ModelTheory/Satisfiability.lean

tactic: simp_rw [SemanticallyEquivalent, ModelsBoundedFormula, BoundedFormula.realize_iff,
  BoundedFormula.realize_imp]
state_before: L : Language
T : L.Theory
α : Type w
n : ℕ
φ ψ φ' ψ' : L.BoundedFormula α n
h : T.SemanticallyEquivalent φ ψ
h' : T.SemanticallyEquivalent φ' ψ'
⊢ T.SemanticallyEquivalent (φ ⟹ φ') (ψ ⟹ ψ')
state_after: L : Language
T : L.Theory
α : Type w
n : ℕ
φ ψ φ' ψ' : L.BoundedFormula α n
h : T.SemanticallyEquivalent φ ψ
h' : T.SemanticallyEquivalent φ' ψ'
⊢ ∀ (M : T.ModelType) (v : α → ↑M) (xs : Fin n → ↑M),
    φ.Realize v xs → φ'.Realize v xs ↔ ψ.Realize v xs → ψ'.Realize v xs

tactic: exact fun M v xs => imp_congr h.realize_bd_iff h'.realize_bd_iff
state_before: L : Language
T : L.Theory
α : Type w
n : ℕ
φ ψ φ' ψ' : L.BoundedFormula α n
h : T.SemanticallyEquivalent φ ψ
h' : T.SemanticallyEquivalent φ' ψ'
⊢ ∀ (M : T.ModelType) (v : α → ↑M) (xs : Fin n → ↑M),
    φ.Realize v xs → φ'.Realize v xs ↔ ψ.Realize v xs → ψ'.Realize v xs
state_after: no goals
Theorem: zero_eq_mul_self
File: Mathlib/Algebra/GroupWithZero/Defs.lean

tactic: simp
state_before: G₀ : Type u
M₀ : Type u_1
M₀' : Type u_2
G₀' : Type u_3
inst✝¹ : MulZeroClass M₀
inst✝ : NoZeroDivisors M₀
a b : M₀
⊢ 0 = a * a ↔ a = 0
state_after: no goals
Theorem: Real.toNNReal_lt_one
File: Mathlib/Data/NNReal/Basic.lean

tactic: simp only [← not_le, one_le_toNNReal]
state_before: r : ℝ
⊢ r.toNNReal < 1 ↔ r < 1
state_after: no goals
Theorem: Ideal.homogeneousHull_eq_iSup
File: Mathlib/RingTheory/GradedAlgebra/HomogeneousIdeal.lean

tactic: rintro _ ⟨x, -, rfl⟩
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
i : ι
⊢ ∀ x ∈ ⇑(GradedRing.proj 𝒜 i) '' ↑I, Homogeneous 𝒜 x
state_after: case intro.intro
ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
i : ι
x : A
⊢ Homogeneous 𝒜 ((GradedRing.proj 𝒜 i) x)

tactic: apply SetLike.homogeneous_coe
state_before: case intro.intro
ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
i : ι
x : A
⊢ Homogeneous 𝒜 ((GradedRing.proj 𝒜 i) x)
state_after: no goals

tactic: ext1
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
⊢ homogeneousHull 𝒜 I = ⨆ i, { toSubmodule := span (⇑(GradedRing.proj 𝒜 i) '' ↑I), is_homogeneous' := ⋯ }
state_after: case h
ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
⊢ (homogeneousHull 𝒜 I).toIdeal =
    (⨆ i, { toSubmodule := span (⇑(GradedRing.proj 𝒜 i) '' ↑I), is_homogeneous' := ⋯ }).toIdeal

tactic: rw [Ideal.toIdeal_homogeneousHull_eq_iSup, toIdeal_iSup]
state_before: case h
ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
⊢ (homogeneousHull 𝒜 I).toIdeal =
    (⨆ i, { toSubmodule := span (⇑(GradedRing.proj 𝒜 i) '' ↑I), is_homogeneous' := ⋯ }).toIdeal
state_after: case h
ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
⊢ ⨆ i, span (⇑(GradedRing.proj 𝒜 i) '' ↑I) =
    ⨆ i, { toSubmodule := span (⇑(GradedRing.proj 𝒜 i) '' ↑I), is_homogeneous' := ⋯ }.toIdeal

tactic: rfl
state_before: case h
ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
⊢ ⨆ i, span (⇑(GradedRing.proj 𝒜 i) '' ↑I) =
    ⨆ i, { toSubmodule := span (⇑(GradedRing.proj 𝒜 i) '' ↑I), is_homogeneous' := ⋯ }.toIdeal
state_after: no goals