1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Rat.addSubmonoid_closure_range_pow
File: Mathlib/Data/Rat/Star.lean

tactic: convert (AddMonoidHom.map_mclosure NNRat.coeHom <| range fun x ↦ x ^ n).symm
state_before: n : ℕ
hn₀ : n ≠ 0
hn : Even n
⊢ closure (range fun x => x ^ n) = nonneg ℚ
state_after: case h.e'_2.h.e'_3
n : ℕ
hn₀ : n ≠ 0
hn : Even n
⊢ (range fun x => x ^ n) = ⇑NNRat.coeHom '' range fun x => x ^ n

case h.e'_3
n : ℕ
hn₀ : n ≠ 0
hn : Even n
⊢ nonneg ℚ = map NNRat.coeHom (closure (range fun x => x ^ n))

tactic: have (x : ℚ) : ∃ y : ℚ≥0, y ^ n = x ^ n := ⟨x.nnabs, by simp [hn.pow_abs]⟩
state_before: case h.e'_2.h.e'_3
n : ℕ
hn₀ : n ≠ 0
hn : Even n
⊢ (range fun x => x ^ n) = ⇑NNRat.coeHom '' range fun x => x ^ n
state_after: case h.e'_2.h.e'_3
n : ℕ
hn₀ : n ≠ 0
hn : Even n
this : ∀ (x : ℚ), ∃ y, ↑y ^ n = x ^ n
⊢ (range fun x => x ^ n) = ⇑NNRat.coeHom '' range fun x => x ^ n

tactic: simp [subset_antisymm_iff, range_subset_iff, this]
state_before: case h.e'_2.h.e'_3
n : ℕ
hn₀ : n ≠ 0
hn : Even n
this : ∀ (x : ℚ), ∃ y, ↑y ^ n = x ^ n
⊢ (range fun x => x ^ n) = ⇑NNRat.coeHom '' range fun x => x ^ n
state_after: no goals

tactic: simp [hn.pow_abs]
state_before: n : ℕ
hn₀ : n ≠ 0
hn : Even n
x : ℚ
⊢ ↑(nnabs x) ^ n = x ^ n
state_after: no goals

tactic: ext
state_before: case h.e'_3
n : ℕ
hn₀ : n ≠ 0
hn : Even n
⊢ nonneg ℚ = map NNRat.coeHom (closure (range fun x => x ^ n))
state_after: case h.e'_3.h
n : ℕ
hn₀ : n ≠ 0
hn : Even n
x✝ : ℚ
⊢ x✝ ∈ nonneg ℚ ↔ x✝ ∈ map NNRat.coeHom (closure (range fun x => x ^ n))

tactic: simp [NNRat.addSubmonoid_closure_range_pow hn₀, NNRat.exists]
state_before: case h.e'_3.h
n : ℕ
hn₀ : n ≠ 0
hn : Even n
x✝ : ℚ
⊢ x✝ ∈ nonneg ℚ ↔ x✝ ∈ map NNRat.coeHom (closure (range fun x => x ^ n))
state_after: no goals
Theorem: SeparatedNhds.union_left
File: Mathlib/Topology/Separation.lean

tactic: simpa only [separatedNhds_iff_disjoint, nhdsSet_union, disjoint_sup_left] using And.intro
state_before: X : Type u_1
Y : Type u_2
inst✝ : TopologicalSpace X
s s₁ s₂ t t₁ t₂ u : Set X
⊢ SeparatedNhds s u → SeparatedNhds t u → SeparatedNhds (s ∪ t) u
state_after: no goals
Theorem: AdjoinRoot.Polynomial.quotQuotEquivComm_symm_mk_mk
File: Mathlib/RingTheory/AdjoinRoot.lean

tactic: simp only [Polynomial.quotQuotEquivComm, quotientEquiv_symm_mk,
  polynomialQuotientEquivQuotientPolynomial_symm_mk]
state_before: R : Type u
S : Type v
K : Type w
inst✝ : CommRing R
I : Ideal R
f p : R[X]
⊢ (quotQuotEquivComm I f).symm
      ((Ideal.Quotient.mk (span {(Ideal.Quotient.mk (Ideal.map C I)) f})) ((Ideal.Quotient.mk (Ideal.map C I)) p)) =
    (Ideal.Quotient.mk (span {Polynomial.map (Ideal.Quotient.mk I) f})) (Polynomial.map (Ideal.Quotient.mk I) p)
state_after: no goals
Theorem: Set.Ico_union_Ici'
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: ext1 x
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
⊢ Ico a b ∪ Ici c = Ici (min a c)
state_after: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
⊢ x ∈ Ico a b ∪ Ici c ↔ x ∈ Ici (min a c)

tactic: simp_rw [mem_union, mem_Ico, mem_Ici, min_le_iff]
state_before: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
⊢ x ∈ Ico a b ∪ Ici c ↔ x ∈ Ici (min a c)
state_after: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
⊢ a ≤ x ∧ x < b ∨ c ≤ x ↔ a ≤ x ∨ c ≤ x

tactic: by_cases hc : c ≤ x
state_before: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
⊢ a ≤ x ∧ x < b ∨ c ≤ x ↔ a ≤ x ∨ c ≤ x
state_after: case pos
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : c ≤ x
⊢ a ≤ x ∧ x < b ∨ c ≤ x ↔ a ≤ x ∨ c ≤ x

case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : ¬c ≤ x
⊢ a ≤ x ∧ x < b ∨ c ≤ x ↔ a ≤ x ∨ c ≤ x

tactic: simp only [hc, or_true]
state_before: case pos
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : c ≤ x
⊢ a ≤ x ∧ x < b ∨ c ≤ x ↔ a ≤ x ∨ c ≤ x
state_after: no goals

tactic: have hxb : x < b := (lt_of_not_ge hc).trans_le h₁
state_before: case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : ¬c ≤ x
⊢ a ≤ x ∧ x < b ∨ c ≤ x ↔ a ≤ x ∨ c ≤ x
state_after: case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : ¬c ≤ x
hxb : x < b
⊢ a ≤ x ∧ x < b ∨ c ≤ x ↔ a ≤ x ∨ c ≤ x

tactic: simp only [hxb, and_true]
state_before: case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : ¬c ≤ x
hxb : x < b
⊢ a ≤ x ∧ x < b ∨ c ≤ x ↔ a ≤ x ∨ c ≤ x
state_after: no goals
Theorem: Int.natAbs_inj_of_nonpos_of_nonpos
File: Mathlib/Data/Int/Lemmas.lean

tactic: simpa only [Int.natAbs_neg, neg_inj] using
  natAbs_inj_of_nonneg_of_nonneg (neg_nonneg_of_nonpos ha) (neg_nonneg_of_nonpos hb)
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
ha : a ≤ 0
hb : b ≤ 0
⊢ a.natAbs = b.natAbs ↔ a = b
state_after: no goals
Theorem: MvPolynomial.ext_iff
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: rw [h]
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✝ p q : MvPolynomial σ R
h : p = q
m : σ →₀ ℕ
⊢ coeff m p = coeff m q
state_after: no goals
Theorem: add_tsub_cancel_of_le
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: refine le_antisymm ?_ le_add_tsub
state_before: α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
h : a ≤ b
⊢ a + (b - a) = b
state_after: α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
h : a ≤ b
⊢ a + (b - a) ≤ b

tactic: obtain ⟨c, rfl⟩ := exists_add_of_le h
state_before: α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
h : a ≤ b
⊢ a + (b - a) ≤ b
state_after: case intro
α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a c✝ d c : α
h : a ≤ a + c
⊢ a + (a + c - a) ≤ a + c

tactic: exact add_le_add_left add_tsub_le_left a
state_before: case intro
α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a c✝ d c : α
h : a ≤ a + c
⊢ a + (a + c - a) ≤ a + c
state_after: no goals
Theorem: zero_lt_four
File: Mathlib/Algebra/Order/Monoid/NatCast.lean

tactic: rw [← three_add_one_eq_four]
state_before: α : Type u_1
inst✝⁴ : AddMonoidWithOne α
inst✝³ : PartialOrder α
inst✝² : ZeroLEOneClass α
inst✝¹ : NeZero 1
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ 0 < 4
state_after: α : Type u_1
inst✝⁴ : AddMonoidWithOne α
inst✝³ : PartialOrder α
inst✝² : ZeroLEOneClass α
inst✝¹ : NeZero 1
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ 0 < 3 + 1

tactic: exact lt_add_of_lt_of_nonneg zero_lt_three zero_le_one
state_before: α : Type u_1
inst✝⁴ : AddMonoidWithOne α
inst✝³ : PartialOrder α
inst✝² : ZeroLEOneClass α
inst✝¹ : NeZero 1
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ 0 < 3 + 1
state_after: no goals
Theorem: ConcaveOn.congr
File: Mathlib/Analysis/SpecialFunctions/Gamma/BohrMollerup.lean

tactic: simpa only [← hfg hx, ← hfg hy, ← hfg (hf.1 hx hy ha hb hab)] using hf.2 hx hy ha hb hab
state_before: 𝕜 : Type u_1
E : Type u_2
β : Type u_3
s : Set E
f g : E → β
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : SMul 𝕜 E
inst✝² : AddCommMonoid E
inst✝¹ : OrderedAddCommMonoid β
inst✝ : SMul 𝕜 β
hf : ConcaveOn 𝕜 s f
hfg : EqOn f g s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • g x + b • g y ≤ g (a • x + b • y)
state_after: no goals
Theorem: Seminorm.cont_normedSpace_to_withSeminorms
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: rw [← Seminorm.const_isBounded (Fin 1)] at hf
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E✝ : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : AddCommGroup E✝
inst✝¹⁴ : Module 𝕜 E✝
inst✝¹³ : NormedField 𝕝
inst✝¹² : Module 𝕝 E✝
inst✝¹¹ : NontriviallyNormedField 𝕜₂
inst✝¹⁰ : AddCommGroup F
inst✝⁹ : Module 𝕜₂ F
inst✝⁸ : NormedField 𝕝₂
inst✝⁷ : Module 𝕝₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝⁶ : RingHomIsometric σ₁₂
τ₁₂ : 𝕝 →+* 𝕝₂
inst✝⁵ : RingHomIsometric τ₁₂
inst✝⁴ : Nonempty ι
inst✝³ : Nonempty ι'
E : Type u_10
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕝 E
inst✝ : TopologicalSpace F
q : ι → Seminorm 𝕝₂ F
hq : WithSeminorms q
f : E →ₛₗ[τ₁₂] F
hf : ∀ (i : ι), ∃ C, (q i).comp f ≤ C • normSeminorm 𝕝 E
⊢ Continuous ⇑f
state_after: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E✝ : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : AddCommGroup E✝
inst✝¹⁴ : Module 𝕜 E✝
inst✝¹³ : NormedField 𝕝
inst✝¹² : Module 𝕝 E✝
inst✝¹¹ : NontriviallyNormedField 𝕜₂
inst✝¹⁰ : AddCommGroup F
inst✝⁹ : Module 𝕜₂ F
inst✝⁸ : NormedField 𝕝₂
inst✝⁷ : Module 𝕝₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝⁶ : RingHomIsometric σ₁₂
τ₁₂ : 𝕝 →+* 𝕝₂
inst✝⁵ : RingHomIsometric τ₁₂
inst✝⁴ : Nonempty ι
inst✝³ : Nonempty ι'
E : Type u_10
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕝 E
inst✝ : TopologicalSpace F
q : ι → Seminorm 𝕝₂ F
hq : WithSeminorms q
f : E →ₛₗ[τ₁₂] F
hf : IsBounded (fun x => normSeminorm 𝕝 E) q f
⊢ Continuous ⇑f

tactic: exact continuous_from_bounded (norm_withSeminorms 𝕝 E) hq f hf
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E✝ : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : AddCommGroup E✝
inst✝¹⁴ : Module 𝕜 E✝
inst✝¹³ : NormedField 𝕝
inst✝¹² : Module 𝕝 E✝
inst✝¹¹ : NontriviallyNormedField 𝕜₂
inst✝¹⁰ : AddCommGroup F
inst✝⁹ : Module 𝕜₂ F
inst✝⁸ : NormedField 𝕝₂
inst✝⁷ : Module 𝕝₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝⁶ : RingHomIsometric σ₁₂
τ₁₂ : 𝕝 →+* 𝕝₂
inst✝⁵ : RingHomIsometric τ₁₂
inst✝⁴ : Nonempty ι
inst✝³ : Nonempty ι'
E : Type u_10
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕝 E
inst✝ : TopologicalSpace F
q : ι → Seminorm 𝕝₂ F
hq : WithSeminorms q
f : E →ₛₗ[τ₁₂] F
hf : IsBounded (fun x => normSeminorm 𝕝 E) q f
⊢ Continuous ⇑f
state_after: no goals
Theorem: Units.eq_mul_inv_iff_mul_eq
File: Mathlib/Algebra/Group/Units.lean

tactic: rw [h, inv_mul_cancel_right]
state_before: α : Type u
inst✝ : Monoid α
a✝ b✝ c u : αˣ
a b : α
h : a = b * ↑c⁻¹
⊢ a * ↑c = b
state_after: no goals

tactic: rw [← h, mul_inv_cancel_right]
state_before: α : Type u
inst✝ : Monoid α
a✝ b✝ c u : αˣ
a b : α
h : a * ↑c = b
⊢ a = b * ↑c⁻¹
state_after: no goals
Theorem: isOpen_singleton_iff_punctured_nhds
File: Mathlib/Topology/Basic.lean

tactic: rw [isOpen_singleton_iff_nhds_eq_pure, nhdsWithin, ← mem_iff_inf_principal_compl, ← le_pure_iff,
  nhds_neBot.le_pure_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
x : X
⊢ IsOpen {x} ↔ 𝓝[≠] x = ⊥
state_after: no goals
Theorem: FirstOrder.Language.Substructure.FG.map
File: Mathlib/ModelTheory/FinitelyGenerated.lean

tactic: rw [closure_image, ht.2]
state_before: L : Language
M : Type u_1
inst✝¹ : L.Structure M
N : Type u_2
inst✝ : L.Structure N
f : M →[L] N
s : L.Substructure M
hs : s.FG
t : Set M
ht : t.Finite ∧ (closure L).toFun t = s
⊢ (closure L).toFun (⇑f '' t) = Substructure.map f s
state_after: no goals
Theorem: MonoidHom.CompTriple.comp_apply
File: Mathlib/Algebra/Group/Hom/CompTypeclasses.lean

tactic: rw [← h.comp_eq, MonoidHom.comp_apply]
state_before: M' : Type u_1
inst✝³ : Monoid M'
M : Type u_2
N : Type u_3
P : Type u_4
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
φ : M →* N
ψ : N →* P
χ : M →* P
h : φ.CompTriple ψ χ
x : M
⊢ ψ (φ x) = χ x
state_after: no goals
Theorem: RatFunc.intDegree_mul
File: Mathlib/FieldTheory/RatFunc/Degree.lean

tactic: simp only [intDegree, add_sub, sub_add, sub_sub_eq_add_sub, sub_sub, sub_eq_sub_iff_add_eq_add]
state_before: K : Type u
inst✝ : Field K
x y : RatFunc K
hx : x ≠ 0
hy : y ≠ 0
⊢ (x * y).intDegree = x.intDegree + y.intDegree
state_after: K : Type u
inst✝ : Field K
x y : RatFunc K
hx : x ≠ 0
hy : y ≠ 0
⊢ ↑(x * y).num.natDegree + (↑x.denom.natDegree + ↑y.denom.natDegree) =
    ↑x.num.natDegree + ↑y.num.natDegree + ↑(x * y).denom.natDegree

tactic: norm_cast
state_before: K : Type u
inst✝ : Field K
x y : RatFunc K
hx : x ≠ 0
hy : y ≠ 0
⊢ ↑(x * y).num.natDegree + (↑x.denom.natDegree + ↑y.denom.natDegree) =
    ↑x.num.natDegree + ↑y.num.natDegree + ↑(x * y).denom.natDegree
state_after: K : Type u
inst✝ : Field K
x y : RatFunc K
hx : x ≠ 0
hy : y ≠ 0
⊢ (x * y).num.natDegree + (x.denom.natDegree + y.denom.natDegree) =
    x.num.natDegree + y.num.natDegree + (x * y).denom.natDegree

tactic: rw [← Polynomial.natDegree_mul x.denom_ne_zero y.denom_ne_zero, ←
  Polynomial.natDegree_mul (RatFunc.num_ne_zero (mul_ne_zero hx hy))
    (mul_ne_zero x.denom_ne_zero y.denom_ne_zero),
  ← Polynomial.natDegree_mul (RatFunc.num_ne_zero hx) (RatFunc.num_ne_zero hy), ←
  Polynomial.natDegree_mul (mul_ne_zero (RatFunc.num_ne_zero hx) (RatFunc.num_ne_zero hy))
    (x * y).denom_ne_zero,
  RatFunc.num_denom_mul]
state_before: K : Type u
inst✝ : Field K
x y : RatFunc K
hx : x ≠ 0
hy : y ≠ 0
⊢ (x * y).num.natDegree + (x.denom.natDegree + y.denom.natDegree) =
    x.num.natDegree + y.num.natDegree + (x * y).denom.natDegree
state_after: no goals
Theorem: MeasureTheory.SignedMeasure.toMeasureOfZeroLE_apply
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: simp_rw [toMeasureOfZeroLE, Measure.ofMeasurable_apply _ hj₁, toMeasureOfZeroLE',
  s.restrict_apply hi₁ hj₁, Set.inter_comm]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
s : SignedMeasure α
i j : Set α
hi : VectorMeasure.restrict 0 i ≤ VectorMeasure.restrict s i
hi₁ : MeasurableSet i
hj₁ : MeasurableSet j
⊢ (s.toMeasureOfZeroLE i hi₁ hi) j = ↑⟨↑s (i ∩ j), ⋯⟩
state_after: no goals
Theorem: CompleteLattice.setIndependent_singleton
File: Mathlib/Order/SupIndep.lean

tactic: simp_all
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
a i : α
hi : i ∈ {a}
⊢ Disjoint i (sSup ({a} \ {i}))
state_after: no goals
Theorem: Finset.truncatedInf_le
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

tactic: unfold truncatedInf
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
⊢ s.truncatedInf a ≤ a
state_after: α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
⊢ (if h : a ∈ upperClosure ↑s then (filter (fun x => x ≤ a) s).inf' ⋯ id else ⊥) ≤ a

tactic: split_ifs with h
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
⊢ (if h : a ∈ upperClosure ↑s then (filter (fun x => x ≤ a) s).inf' ⋯ id else ⊥) ≤ a
state_after: case pos
α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
h : a ∈ upperClosure ↑s
⊢ (filter (fun x => x ≤ a) s).inf' ⋯ id ≤ a

case neg
α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
h : a ∉ upperClosure ↑s
⊢ ⊥ ≤ a

tactic: obtain ⟨b, hb, hba⟩ := h
state_before: case pos
α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
h : a ∈ upperClosure ↑s
⊢ (filter (fun x => x ≤ a) s).inf' ⋯ id ≤ a
state_after: case pos.intro.intro
α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b : α
hb : b ∈ ↑s
hba : b ≤ a
⊢ (filter (fun x => x ≤ a) s).inf' ⋯ id ≤ a

tactic: exact hba.trans' $ inf'_le id $ mem_filter.2 ⟨hb, ‹_›⟩
state_before: case pos.intro.intro
α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b : α
hb : b ∈ ↑s
hba : b ≤ a
⊢ (filter (fun x => x ≤ a) s).inf' ⋯ id ≤ a
state_after: no goals

tactic: exact bot_le
state_before: case neg
α : Type u_1
β : Type u_2
inst✝⁵ : SemilatticeInf α
inst✝⁴ : BoundedOrder α
inst✝³ : DecidableRel fun x x_1 => x ≤ x_1
inst✝² : SemilatticeInf β
inst✝¹ : BoundedOrder β
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
h : a ∉ upperClosure ↑s
⊢ ⊥ ≤ a
state_after: no goals
Theorem: padicNorm.not_int_of_not_padic_int
File: Mathlib/NumberTheory/Padics/PadicNorm.lean

tactic: contrapose! H
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
a : ℚ
hp : Fact (Nat.Prime p)
H : 1 < padicNorm p a
⊢ ¬a.isInt = true
state_after: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
a : ℚ
hp : Fact (Nat.Prime p)
H : a.isInt = true
⊢ padicNorm p a ≤ 1

tactic: rw [Rat.eq_num_of_isInt H]
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
a : ℚ
hp : Fact (Nat.Prime p)
H : a.isInt = true
⊢ padicNorm p a ≤ 1
state_after: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
a : ℚ
hp : Fact (Nat.Prime p)
H : a.isInt = true
⊢ padicNorm p ↑a.num ≤ 1

tactic: apply padicNorm.of_int
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
a : ℚ
hp : Fact (Nat.Prime p)
H : a.isInt = true
⊢ padicNorm p ↑a.num ≤ 1
state_after: no goals
Theorem: Int.emod_two_ne_one
File: Mathlib/Algebra/Group/Int.lean

tactic: cases' emod_two_eq_zero_or_one n with h h <;> simp [h]
state_before: u v m n : ℤ
⊢ ¬n % 2 = 1 ↔ n % 2 = 0
state_after: no goals
Theorem: WType.cardinal_mk_le_max_aleph0_of_finite'
File: Mathlib/Data/W/Cardinal.lean

tactic: intro h
state_before: α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
⊢ IsEmpty α → #(WType β) ≤ max (lift.{v, u} #α) ℵ₀
state_after: α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
h : IsEmpty α
⊢ #(WType β) ≤ max (lift.{v, u} #α) ℵ₀

tactic: rw [Cardinal.mk_eq_zero (WType β)]
state_before: α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
h : IsEmpty α
⊢ #(WType β) ≤ max (lift.{v, u} #α) ℵ₀
state_after: α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
h : IsEmpty α
⊢ 0 ≤ max (lift.{v, u} #α) ℵ₀

tactic: exact zero_le _
state_before: α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
h : IsEmpty α
⊢ 0 ≤ max (lift.{v, u} #α) ℵ₀
state_after: no goals

tactic: rw [succ_zero]
state_before: α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
hn : Nonempty α
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
⊢ Order.succ 0 ≤ ⨆ a, m ^ lift.{u, v} #(β a)
state_after: α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
hn : Nonempty α
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
⊢ 1 ≤ ⨆ a, m ^ lift.{u, v} #(β a)

tactic: obtain ⟨a⟩ : Nonempty α := hn
state_before: α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
hn : Nonempty α
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
⊢ 1 ≤ ⨆ a, m ^ lift.{u, v} #(β a)
state_after: case intro
α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
a : α
⊢ 1 ≤ ⨆ a, m ^ lift.{u, v} #(β a)

tactic: refine le_trans ?_ (le_ciSup (bddAbove_range.{_, v} _) a)
state_before: case intro
α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
a : α
⊢ 1 ≤ ⨆ a, m ^ lift.{u, v} #(β a)
state_after: case intro
α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
a : α
⊢ 1 ≤ m ^ lift.{u, v} #(β a)

tactic: rw [← power_zero]
state_before: case intro
α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
a : α
⊢ 1 ≤ m ^ lift.{u, v} #(β a)
state_after: case intro
α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
a : α
⊢ ?m.3914 ^ 0 ≤ m ^ lift.{u, v} #(β a)

α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
a : α
⊢ Cardinal.{max u v}

tactic: exact
  power_le_power_left
    (pos_iff_ne_zero.1 (aleph0_pos.trans_le (le_max_right _ _))) (zero_le _)
state_before: case intro
α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
a : α
⊢ ?m.3914 ^ 0 ≤ m ^ lift.{u, v} #(β a)

α : Type u
β : α → Type v
inst✝ : ∀ (a : α), Finite (β a)
m : Cardinal.{max u v} := max (lift.{v, u} #α) ℵ₀
a : α
⊢ Cardinal.{max u v}
state_after: no goals
Theorem: SmoothBumpCovering.exists_finset_toSmoothPartitionOfUnity_eventuallyEq
File: Mathlib/Geometry/Manifold/PartitionOfUnity.lean

tactic: simpa using fs.toBumpCovering.exists_finset_toPartitionOfUnity_eventuallyEq i x
state_before: ι : Type uι
E : Type uE
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : FiniteDimensional ℝ E
F : Type uF
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
H : Type uH
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
inst✝¹ : SmoothManifoldWithCorners I M
s : Set M
U : M → Set M
fs : SmoothBumpCovering ι I M s
inst✝ : T2Space M
i : ι
x : M
⊢ ∃ t,
    ⇑(fs.toSmoothPartitionOfUnity i) =ᶠ[𝓝 x]
      ↑(fs.toFun i) * ∏ j ∈ Finset.filter (fun j => WellOrderingRel j i) t, (1 - ↑(fs.toFun j))
state_after: no goals
Theorem: CategoryTheory.IsPushout.IsVanKampen.isPullback_of_mono_right
File: Mathlib/CategoryTheory/Adhesive.lean

tactic: simp
state_before: J : Type v'
inst✝² : Category.{u', v'} J
C : Type u
inst✝¹ : Category.{v, u} C
W X Y Z : C
f : W ⟶ X
g : W ⟶ Y
h : X ⟶ Z
i : Y ⟶ Z
inst✝ : Mono g
H : IsPushout f g h i
H' : H.IsVanKampen
⊢ f ≫ 𝟙 X = 𝟙 W ≫ f
state_after: no goals
Theorem: CategoryTheory.Limits.Types.initial_iff_empty
File: Mathlib/CategoryTheory/Limits/Shapes/Types.lean

tactic: constructor
state_before: X : Type u
⊢ Nonempty (IsInitial X) ↔ IsEmpty X
state_after: case mp
X : Type u
⊢ Nonempty (IsInitial X) → IsEmpty X

case mpr
X : Type u
⊢ IsEmpty X → Nonempty (IsInitial X)

tactic: intro ⟨h⟩
state_before: case mp
X : Type u
⊢ Nonempty (IsInitial X) → IsEmpty X
state_after: case mp
X : Type u
h : IsInitial X
⊢ IsEmpty X

tactic: exact Function.isEmpty (IsInitial.to h PEmpty)
state_before: case mp
X : Type u
h : IsInitial X
⊢ IsEmpty X
state_after: no goals

tactic: intro h
state_before: case mpr
X : Type u
⊢ IsEmpty X → Nonempty (IsInitial X)
state_after: case mpr
X : Type u
h : IsEmpty X
⊢ Nonempty (IsInitial X)

tactic: exact ⟨IsInitial.ofIso Types.isInitialPunit <| Equiv.toIso <| Equiv.equivOfIsEmpty PEmpty X⟩
state_before: case mpr
X : Type u
h : IsEmpty X
⊢ Nonempty (IsInitial X)
state_after: no goals