1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Semiquot.ext_s
File: Mathlib/Data/Semiquot.lean

tactic: refine ⟨congr_arg _, fun h => ?_⟩
state_before: α : Type u_1
β : Type u_2
q₁ q₂ : Semiquot α
⊢ q₁ = q₂ ↔ q₁.s = q₂.s
state_after: α : Type u_1
β : Type u_2
q₁ q₂ : Semiquot α
h : q₁.s = q₂.s
⊢ q₁ = q₂

tactic: cases' q₁ with _ v₁
state_before: α : Type u_1
β : Type u_2
q₁ q₂ : Semiquot α
h : q₁.s = q₂.s
⊢ q₁ = q₂
state_after: case mk'
α : Type u_1
β : Type u_2
q₂ : Semiquot α
s✝ : Set α
v₁ : Trunc ↑s✝
h : { s := s✝, val := v₁ }.s = q₂.s
⊢ { s := s✝, val := v₁ } = q₂

tactic: cases' q₂ with _ v₂
state_before: case mk'
α : Type u_1
β : Type u_2
q₂ : Semiquot α
s✝ : Set α
v₁ : Trunc ↑s✝
h : { s := s✝, val := v₁ }.s = q₂.s
⊢ { s := s✝, val := v₁ } = q₂
state_after: case mk'.mk'
α : Type u_1
β : Type u_2
s✝¹ : Set α
v₁ : Trunc ↑s✝¹
s✝ : Set α
v₂ : Trunc ↑s✝
h : { s := s✝¹, val := v₁ }.s = { s := s✝, val := v₂ }.s
⊢ { s := s✝¹, val := v₁ } = { s := s✝, val := v₂ }

tactic: congr
state_before: case mk'.mk'
α : Type u_1
β : Type u_2
s✝¹ : Set α
v₁ : Trunc ↑s✝¹
s✝ : Set α
v₂ : Trunc ↑s✝
h : { s := s✝¹, val := v₁ }.s = { s := s✝, val := v₂ }.s
⊢ { s := s✝¹, val := v₁ } = { s := s✝, val := v₂ }
state_after: case mk'.mk'.h.e_3
α : Type u_1
β : Type u_2
s✝¹ : Set α
v₁ : Trunc ↑s✝¹
s✝ : Set α
v₂ : Trunc ↑s✝
h : { s := s✝¹, val := v₁ }.s = { s := s✝, val := v₂ }.s
⊢ HEq v₁ v₂

tactic: exact Subsingleton.helim (congrArg Trunc (congrArg Set.Elem h)) v₁ v₂
state_before: case mk'.mk'.h.e_3
α : Type u_1
β : Type u_2
s✝¹ : Set α
v₁ : Trunc ↑s✝¹
s✝ : Set α
v₂ : Trunc ↑s✝
h : { s := s✝¹, val := v₁ }.s = { s := s✝, val := v₂ }.s
⊢ HEq v₁ v₂
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.leftUnshift_add
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: change (leftShiftAddEquiv K L n a n' hn).symm (γ₁ + γ₂) = _
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ γ₁✝ γ₂✝ : Cochain K L n✝
n' a : ℤ
γ₁ γ₂ : Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'
n : ℤ
hn : n + a = n'
⊢ (γ₁ + γ₂).leftUnshift n hn = γ₁.leftUnshift n hn + γ₂.leftUnshift n hn
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ γ₁✝ γ₂✝ : Cochain K L n✝
n' a : ℤ
γ₁ γ₂ : Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'
n : ℤ
hn : n + a = n'
⊢ (leftShiftAddEquiv K L n a n' hn).symm (γ₁ + γ₂) = γ₁.leftUnshift n hn + γ₂.leftUnshift n hn

tactic: apply _root_.map_add
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ γ₁✝ γ₂✝ : Cochain K L n✝
n' a : ℤ
γ₁ γ₂ : Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'
n : ℤ
hn : n + a = n'
⊢ (leftShiftAddEquiv K L n a n' hn).symm (γ₁ + γ₂) = γ₁.leftUnshift n hn + γ₂.leftUnshift n hn
state_after: no goals
Theorem: CategoryTheory.Limits.biproduct.toSubtype_eq_desc
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: simp
state_before: J : Type w
K : Type u_1
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
f : J → C
inst✝² : HasBiproduct f
p : J → Prop
inst✝¹ : HasBiproduct (Subtype.restrict p f)
inst✝ : DecidablePred p
⊢ ∀ (j : J), ι f j ≫ toSubtype f p = ι f j ≫ desc fun j => if h : p j then ι (Subtype.restrict p f) ⟨j, h⟩ else 0
state_after: no goals
Theorem: CharP.quotient_iff
File: Mathlib/Algebra/CharP/Quotient.lean

tactic: refine ⟨fun _ x hx => ?_, CharP.quotient' n I⟩
state_before: R : Type u_1
inst✝¹ : CommRing R
n : ℕ
inst✝ : CharP R n
I : Ideal R
⊢ CharP (R ⧸ I) n ↔ ∀ (x : ℕ), ↑x ∈ I → ↑x = 0
state_after: R : Type u_1
inst✝¹ : CommRing R
n : ℕ
inst✝ : CharP R n
I : Ideal R
x✝ : CharP (R ⧸ I) n
x : ℕ
hx : ↑x ∈ I
⊢ ↑x = 0

tactic: exact (Submodule.Quotient.mk_eq_zero I).mpr hx
state_before: R : Type u_1
inst✝¹ : CommRing R
n : ℕ
inst✝ : CharP R n
I : Ideal R
x✝ : CharP (R ⧸ I) n
x : ℕ
hx : ↑x ∈ I
⊢ ↑x = 0
state_after: no goals
Theorem: hausdorffMeasure_of_dimH_lt
File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

tactic: rw [dimH_def] at h
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d : ℝ≥0
h : dimH s < ↑d
⊢ μH[↑d] s = 0
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d : ℝ≥0
h : ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d < ↑d
⊢ μH[↑d] s = 0

tactic: rcases ENNReal.lt_iff_exists_nnreal_btwn.1 h with ⟨d', hsd', hd'd⟩
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d : ℝ≥0
h : ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d < ↑d
⊢ μH[↑d] s = 0
state_after: case intro.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d : ℝ≥0
h : ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d < ↑d
d' : ℝ≥0
hsd' : ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d < ↑d'
hd'd : ↑d' < ↑d
⊢ μH[↑d] s = 0

tactic: exact (hausdorffMeasure_zero_or_top hd'd s).resolve_right fun h₂ => hsd'.not_le <|
  le_iSup₂ (α := ℝ≥0∞) d' h₂
state_before: case intro.intro
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
s : Set X
d : ℝ≥0
h : ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d < ↑d
d' : ℝ≥0
hsd' : ⨆ d, ⨆ (_ : μH[↑d] s = ⊤), ↑d < ↑d'
hd'd : ↑d' < ↑d
⊢ μH[↑d] s = 0
state_after: no goals
Theorem: Option.mem_map₂_iff
File: Mathlib/Data/Option/NAry.lean

tactic: simp [map₂, bind_eq_some]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
f : α → β → γ
a : Option α
b : Option β
c✝ : Option γ
c : γ
⊢ c ∈ map₂ f a b ↔ ∃ a' b', a' ∈ a ∧ b' ∈ b ∧ f a' b' = c
state_after: no goals
Theorem: Finsupp.prod_antidiagonal_swap
File: Mathlib/Data/Finsupp/Antidiagonal.lean

tactic: simp [add_comm]
state_before: α : Type u
inst✝¹ : DecidableEq α
M : Type u_1
inst✝ : CommMonoid M
n : α →₀ ℕ
f : (α →₀ ℕ) → (α →₀ ℕ) → M
⊢ ∀ (i : (α →₀ ℕ) × (α →₀ ℕ)), i ∈ antidiagonal n ↔ (Equiv.prodComm (α →₀ ℕ) (α →₀ ℕ)) i ∈ antidiagonal n
state_after: no goals

tactic: simp
state_before: α : Type u
inst✝¹ : DecidableEq α
M : Type u_1
inst✝ : CommMonoid M
n : α →₀ ℕ
f : (α →₀ ℕ) → (α →₀ ℕ) → M
⊢ ∀ i ∈ antidiagonal n, f i.1 i.2 = f ((Equiv.prodComm (α →₀ ℕ) (α →₀ ℕ)) i).2 ((Equiv.prodComm (α →₀ ℕ) (α →₀ ℕ)) i).1
state_after: no goals
Theorem: Finset.min'_insert
File: Mathlib/Data/Finset/Lattice.lean

tactic: rw [coe_insert, min_comm]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H✝ : s✝.Nonempty
x a : α
s : Finset α
H : s.Nonempty
⊢ IsLeast (↑(insert a s)) (min (s.min' H) a)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H✝ : s✝.Nonempty
x a : α
s : Finset α
H : s.Nonempty
⊢ IsLeast (insert a ↑s) (min a (s.min' H))

tactic: exact (isLeast_min' _ _).insert _
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H✝ : s✝.Nonempty
x a : α
s : Finset α
H : s.Nonempty
⊢ IsLeast (insert a ↑s) (min a (s.min' H))
state_after: no goals
Theorem: Subring.coe_iSup_of_directed
File: Mathlib/Algebra/Ring/Subring/Basic.lean

tactic: simp [mem_iSup_of_directed hS]
state_before: R : Type u
S✝ : Type v
T : Type w
inst✝² : Ring R
inst✝¹ : Ring S✝
inst✝ : Ring T
ι : Sort u_1
hι : Nonempty ι
S : ι → Subring R
hS : Directed (fun x x_1 => x ≤ x_1) S
x : R
⊢ x ∈ ↑(⨆ i, S i) ↔ x ∈ ⋃ i, ↑(S i)
state_after: no goals
Theorem: UniqueFactorizationMonoid.factors_pow_count_prod
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: simp only [prod_sum, prod_nsmul, prod_singleton]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
inst✝ : DecidableEq α
x : α
hx : x ≠ 0
⊢ ∏ p ∈ (factors x).toFinset, p ^ count p (factors x) = (∑ a ∈ (factors x).toFinset, count a (factors x) • {a}).prod
state_after: no goals

tactic: rw [toFinset_sum_count_nsmul_eq (factors x)]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
inst✝ : DecidableEq α
x : α
hx : x ≠ 0
⊢ (∑ a ∈ (factors x).toFinset, count a (factors x) • {a}).prod = (factors x).prod
state_after: no goals
Theorem: Set.preimage_sub_const_Ici
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [sub_eq_add_neg]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => x - a) ⁻¹' Ici b = Ici (b + a)
state_after: no goals
Theorem: Set.preimage_sub_const_Iio
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [sub_eq_add_neg]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => x - a) ⁻¹' Iio b = Iio (b + a)
state_after: no goals
Theorem: OrderRingIso.refl_apply
File: Mathlib/Algebra/Order/Hom/Ring.lean

tactic: rfl
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝¹¹ : Mul α
inst✝¹⁰ : Add α
inst✝⁹ : LE α
inst✝⁸ : Mul β
inst✝⁷ : Add β
inst✝⁶ : LE β
inst✝⁵ : Mul γ
inst✝⁴ : Add γ
inst✝³ : LE γ
inst✝² : Mul δ
inst✝¹ : Add δ
inst✝ : LE δ
x : α
⊢ (OrderRingIso.refl α) x = x
state_after: no goals
Theorem: isUnit_iff_dvd_one
File: Mathlib/Algebra/Divisibility/Units.lean

tactic: rw [h, mul_comm]
state_before: α : Type u_1
inst✝ : CommMonoid α
x : α
x✝ : x ∣ 1
y : α
h : 1 = x * y
⊢ y * x = 1
state_after: no goals
Theorem: MeasureTheory.SignedMeasure.toMeasureOfLEZero_apply
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: erw [toMeasureOfZeroLE_apply]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s : SignedMeasure α
i j : Set α
hi : VectorMeasure.restrict s i ≤ VectorMeasure.restrict 0 i
hi₁ : MeasurableSet i
hj₁ : MeasurableSet j
⊢ (s.toMeasureOfLEZero i hi₁ hi) j = ↑⟨-↑s (i ∩ j), ⋯⟩
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s : SignedMeasure α
i j : Set α
hi : VectorMeasure.restrict s i ≤ VectorMeasure.restrict 0 i
hi₁ : MeasurableSet i
hj₁ : MeasurableSet j
⊢ ↑⟨↑(-s) (i ∩ j), ⋯⟩ = ↑⟨-↑s (i ∩ j), ⋯⟩

case hj₁
α : Type u_1
β : Type u_2
m : MeasurableSpace α
s : SignedMeasure α
i j : Set α
hi : VectorMeasure.restrict s i ≤ VectorMeasure.restrict 0 i
hi₁ : MeasurableSet i
hj₁ : MeasurableSet j
⊢ MeasurableSet j

tactic: simp
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s : SignedMeasure α
i j : Set α
hi : VectorMeasure.restrict s i ≤ VectorMeasure.restrict 0 i
hi₁ : MeasurableSet i
hj₁ : MeasurableSet j
⊢ ↑⟨↑(-s) (i ∩ j), ⋯⟩ = ↑⟨-↑s (i ∩ j), ⋯⟩
state_after: no goals

tactic: assumption
state_before: case hj₁
α : Type u_1
β : Type u_2
m : MeasurableSpace α
s : SignedMeasure α
i j : Set α
hi : VectorMeasure.restrict s i ≤ VectorMeasure.restrict 0 i
hi₁ : MeasurableSet i
hj₁ : MeasurableSet j
⊢ MeasurableSet j
state_after: no goals
Theorem: Asymptotics.superpolynomialDecay_zero
File: Mathlib/Analysis/Asymptotics/SuperpolynomialDecay.lean

tactic: simpa only [Pi.zero_apply, mul_zero] using tendsto_const_nhds
state_before: α : Type u_1
β : Type u_2
l✝ : Filter α
k✝ f g g' : α → β
inst✝¹ : TopologicalSpace β
inst✝ : CommSemiring β
l : Filter α
k : α → β
z : ℕ
⊢ Tendsto (fun a => k a ^ z * 0 a) l (𝓝 0)
state_after: no goals
Theorem: Set.image_iInter₂
File: Mathlib/Data/Set/Lattice.lean

tactic: simp_rw [image_iInter hf]
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 : α → β
hf : Bijective f
s : (i : ι) → κ i → Set α
⊢ f '' ⋂ i, ⋂ j, s i j = ⋂ i, ⋂ j, f '' s i j
state_after: no goals
Theorem: Polynomial.nextCoeffUp_C_eq_zero
File: Mathlib/Algebra/Polynomial/Degree/TrailingDegree.lean

tactic: rw [nextCoeffUp]
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
c : R
⊢ (C c).nextCoeffUp = 0
state_after: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
c : R
⊢ (if (C c).natTrailingDegree = 0 then 0 else (C c).coeff ((C c).natTrailingDegree + 1)) = 0

tactic: simp
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
c : R
⊢ (if (C c).natTrailingDegree = 0 then 0 else (C c).coeff ((C c).natTrailingDegree + 1)) = 0
state_after: no goals
Theorem: Multiset.card_nsmul
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [card.map_nsmul s n, Nat.nsmul_eq_mul]
state_before: α : Type u_1
β : Type v
γ : Type u_2
s : Multiset α
n : ℕ
⊢ card (n • s) = n * card s
state_after: no goals
Theorem: toMatrix_distrib_mul_action_toLinearMap
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: ext
state_before: R : Type u_1
inst✝⁹ : CommSemiring R
l : Type u_2
m : Type u_3
n : Type u_4
inst✝⁸ : Fintype n
inst✝⁷ : Fintype m
inst✝⁶ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_6
inst✝⁵ : AddCommMonoid M₁
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M₁
inst✝² : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_7
inst✝¹ : AddCommMonoid M₃
inst✝ : Module R M₃
v₃ : Basis l R M₃
x : R
⊢ (toMatrix v₁ v₁) (DistribMulAction.toLinearMap R M₁ x) = Matrix.diagonal fun x_1 => x
state_after: case a
R : Type u_1
inst✝⁹ : CommSemiring R
l : Type u_2
m : Type u_3
n : Type u_4
inst✝⁸ : Fintype n
inst✝⁷ : Fintype m
inst✝⁶ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_6
inst✝⁵ : AddCommMonoid M₁
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M₁
inst✝² : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_7
inst✝¹ : AddCommMonoid M₃
inst✝ : Module R M₃
v₃ : Basis l R M₃
x : R
i✝ j✝ : n
⊢ (toMatrix v₁ v₁) (DistribMulAction.toLinearMap R M₁ x) i✝ j✝ = Matrix.diagonal (fun x_1 => x) i✝ j✝

tactic: rw [LinearMap.toMatrix_apply, DistribMulAction.toLinearMap_apply, LinearEquiv.map_smul,
  Basis.repr_self, Finsupp.smul_single_one, Finsupp.single_eq_pi_single, Matrix.diagonal_apply,
  Pi.single_apply]
state_before: case a
R : Type u_1
inst✝⁹ : CommSemiring R
l : Type u_2
m : Type u_3
n : Type u_4
inst✝⁸ : Fintype n
inst✝⁷ : Fintype m
inst✝⁶ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_6
inst✝⁵ : AddCommMonoid M₁
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M₁
inst✝² : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_7
inst✝¹ : AddCommMonoid M₃
inst✝ : Module R M₃
v₃ : Basis l R M₃
x : R
i✝ j✝ : n
⊢ (toMatrix v₁ v₁) (DistribMulAction.toLinearMap R M₁ x) i✝ j✝ = Matrix.diagonal (fun x_1 => x) i✝ j✝
state_after: no goals
Theorem: BddBelow.bddAbove_image2_of_bddAbove
File: Mathlib/Order/Bounds/Basic.lean

tactic: rintro ⟨a, ha⟩ ⟨b, hb⟩
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a : α
b : β
h₀ : ∀ (b : β), Antitone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
⊢ BddBelow s → BddAbove t → BddAbove (image2 f s t)
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a✝ : α
b✝ : β
h₀ : ∀ (b : β), Antitone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
a : α
ha : a ∈ lowerBounds s
b : β
hb : b ∈ upperBounds t
⊢ BddAbove (image2 f s t)

tactic: exact ⟨f a b, mem_upperBounds_image2_of_mem_upperBounds_of_mem_upperBounds h₀ h₁ ha hb⟩
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a✝ : α
b✝ : β
h₀ : ∀ (b : β), Antitone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
a : α
ha : a ∈ lowerBounds s
b : β
hb : b ∈ upperBounds t
⊢ BddAbove (image2 f s t)
state_after: no goals
Theorem: isAddFundamentalDomain_Ioc
File: Mathlib/MeasureTheory/Integral/Periodic.lean

tactic: refine IsAddFundamentalDomain.mk' measurableSet_Ioc.nullMeasurableSet fun x => ?_
state_before: T : ℝ
hT : 0 < T
t : ℝ
μ : autoParam (Measure ℝ) _auto✝
⊢ IsAddFundamentalDomain (↥(zmultiples T)) (Ioc t (t + T)) μ
state_after: T : ℝ
hT : 0 < T
t : ℝ
μ : autoParam (Measure ℝ) _auto✝
x : ℝ
⊢ ∃! g, g +ᵥ x ∈ Ioc t (t + T)

tactic: have : Bijective (codRestrict (fun n : ℤ => n • T) (AddSubgroup.zmultiples T) _) :=
  (Equiv.ofInjective (fun n : ℤ => n • T) (zsmul_strictMono_left hT).injective).bijective
state_before: T : ℝ
hT : 0 < T
t : ℝ
μ : autoParam (Measure ℝ) _auto✝
x : ℝ
⊢ ∃! g, g +ᵥ x ∈ Ioc t (t + T)
state_after: T : ℝ
hT : 0 < T
t : ℝ
μ : autoParam (Measure ℝ) _auto✝
x : ℝ
this : Bijective (codRestrict (fun n => n • T) ↑(zmultiples T) ⋯)
⊢ ∃! g, g +ᵥ x ∈ Ioc t (t + T)

tactic: refine this.existsUnique_iff.2 ?_
state_before: T : ℝ
hT : 0 < T
t : ℝ
μ : autoParam (Measure ℝ) _auto✝
x : ℝ
this : Bijective (codRestrict (fun n => n • T) ↑(zmultiples T) ⋯)
⊢ ∃! g, g +ᵥ x ∈ Ioc t (t + T)
state_after: T : ℝ
hT : 0 < T
t : ℝ
μ : autoParam (Measure ℝ) _auto✝
x : ℝ
this : Bijective (codRestrict (fun n => n • T) ↑(zmultiples T) ⋯)
⊢ ∃! x_1, codRestrict (fun n => n • T) ↑(zmultiples T) ⋯ x_1 +ᵥ x ∈ Ioc t (t + T)

tactic: simpa only [add_comm x] using existsUnique_add_zsmul_mem_Ioc hT x t
state_before: T : ℝ
hT : 0 < T
t : ℝ
μ : autoParam (Measure ℝ) _auto✝
x : ℝ
this : Bijective (codRestrict (fun n => n • T) ↑(zmultiples T) ⋯)
⊢ ∃! x_1, codRestrict (fun n => n • T) ↑(zmultiples T) ⋯ x_1 +ᵥ x ∈ Ioc t (t + T)
state_after: no goals
Theorem: Nat.pow_le_choose
File: Mathlib/Data/Nat/Choose/Bounds.lean

tactic: rw [div_le_iff']
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ ↑(n + 1 - r) ^ r / ↑r ! ≤ ↑(n.choose r)
state_after: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ ↑(n + 1 - r) ^ r ≤ ↑r ! * ↑(n.choose r)

α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ 0 < ↑r !

tactic: exact mod_cast r.factorial_pos
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ 0 < ↑r !
state_after: no goals

tactic: norm_cast
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ ↑(n + 1 - r) ^ r ≤ ↑r ! * ↑(n.choose r)
state_after: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ (n + 1 - r) ^ r ≤ r ! * n.choose r

tactic: rw [← Nat.descFactorial_eq_factorial_mul_choose]
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ (n + 1 - r) ^ r ≤ r ! * n.choose r
state_after: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ (n + 1 - r) ^ r ≤ n.descFactorial r

tactic: exact n.pow_sub_le_descFactorial r
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ (n + 1 - r) ^ r ≤ n.descFactorial r
state_after: no goals
Theorem: Nat.one_lt_cast
File: Mathlib/Data/Nat/Cast/Order.lean

tactic: rw [← cast_one, cast_lt]
state_before: α : Type u_1
β : Type u_2
inst✝⁴ : AddMonoidWithOne α
inst✝³ : PartialOrder α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : ZeroLEOneClass α
inst✝ : CharZero α
m n : ℕ
⊢ 1 < ↑n ↔ 1 < n
state_after: no goals
Theorem: Nat.Prime.not_dvd_mul
File: Mathlib/Data/Nat/Prime.lean

tactic: simp [Hm, Hn]
state_before: n✝ p m n : ℕ
pp : Prime p
Hm : ¬p ∣ m
Hn : ¬p ∣ n
⊢ ¬(p ∣ m ∨ p ∣ n)
state_after: no goals
Theorem: QuaternionAlgebra.finrank_eq_four
File: Mathlib/Algebra/Quaternion.lean

tactic: rw [FiniteDimensional.finrank, rank_eq_four, Cardinal.toNat_ofNat]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝¹ : CommRing R
c₁ c₂ r x y z : R
a b c : ℍ[R,c₁,c₂]
inst✝ : StrongRankCondition R
⊢ FiniteDimensional.finrank R ℍ[R,c₁,c₂] = 4
state_after: no goals
Theorem: Orientation.oangle_sub_left_eq_arctan_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: rw [← neg_inj, oangle_rev, ← oangle_neg_orientation_eq_neg, neg_inj] at h ⊢
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ o.oangle (x - y) x = ↑(Real.arctan (‖y‖ / ‖x‖))
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle x (x - y) = ↑(Real.arctan (‖y‖ / ‖x‖))

tactic: exact (-o).oangle_sub_right_eq_arctan_of_oangle_eq_pi_div_two h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle x (x - y) = ↑(Real.arctan (‖y‖ / ‖x‖))
state_after: no goals
Theorem: CategoryTheory.Functor.reprW_app_hom
File: Mathlib/CategoryTheory/Yoneda.lean

tactic: simp only [yoneda_obj_obj, Iso.app_hom, op_unop, reprx, ← FunctorToTypes.naturality,
  yoneda_obj_map, unop_op, Quiver.Hom.unop_op, Category.comp_id]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
F : Cᵒᵖ ⥤ Type v₁
hF : F.Representable
X : Cᵒᵖ
f : X.unop ⟶ F.reprX
⊢ (F.reprW.app X).hom f = F.map f.op F.reprx
state_after: no goals
Theorem: MeasureTheory.Integrable.comp_div_right
File: Mathlib/MeasureTheory/Group/Integral.lean

tactic: simp_rw [div_eq_mul_inv]
state_before: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁷ : MeasurableSpace G
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
f : G → F
inst✝ : μ.IsMulRightInvariant
hf : Integrable f μ
g : G
⊢ Integrable (fun t => f (t / g)) μ
state_after: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁷ : MeasurableSpace G
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
f : G → F
inst✝ : μ.IsMulRightInvariant
hf : Integrable f μ
g : G
⊢ Integrable (fun t => f (t * g⁻¹)) μ

tactic: exact hf.comp_mul_right g⁻¹
state_before: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁷ : MeasurableSpace G
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
f : G → F
inst✝ : μ.IsMulRightInvariant
hf : Integrable f μ
g : G
⊢ Integrable (fun t => f (t * g⁻¹)) μ
state_after: no goals
Theorem: Submodule.sub_mem_iff_right
File: Mathlib/Algebra/Module/Submodule/Basic.lean

tactic: rw [sub_eq_add_neg, p.add_mem_iff_right hx, p.neg_mem_iff]
state_before: G : Type u''
S : Type u'
R : Type u
M : Type v
ι : Type w
inst✝¹ : Ring R
inst✝ : AddCommGroup M
module_M : Module R M
p p' : Submodule R M
r : R
x y : M
hx : x ∈ p
⊢ x - y ∈ p ↔ y ∈ p
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.hom_inv_id_tensor
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: rw [← tensor_comp, f.hom_inv_id]
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✝ V W X Y Z : C
f : V ≅ W
g : X ⟶ Y
h : Y ⟶ Z
⊢ (f.hom ⊗ g) ≫ (f.inv ⊗ h) = (𝟙 V ⊗ g) ≫ (𝟙 V ⊗ h)
state_after: 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✝ V W X Y Z : C
f : V ≅ W
g : X ⟶ Y
h : Y ⟶ Z
⊢ 𝟙 V ⊗ g ≫ h = (𝟙 V ⊗ g) ≫ (𝟙 V ⊗ h)

tactic: simp [id_tensorHom]
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✝ V W X Y Z : C
f : V ≅ W
g : X ⟶ Y
h : Y ⟶ Z
⊢ 𝟙 V ⊗ g ≫ h = (𝟙 V ⊗ g) ≫ (𝟙 V ⊗ h)
state_after: no goals
Theorem: List.Chain.iff_mem
File: Mathlib/Data/List/Chain.lean

tactic: induction' p with _ a b l r _ IH <;> constructor <;>
  [exact ⟨mem_cons_self _ _, mem_cons_self _ _, r⟩;
  exact IH.imp fun a b ⟨am, bm, h⟩ => ⟨mem_cons_of_mem _ am, mem_cons_of_mem _ bm, h⟩]
state_before: α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a✝ b a : α
l : List α
p : Chain R a l
⊢ Chain (fun x y => x ∈ a :: l ∧ y ∈ l ∧ R x y) a l
state_after: no goals