1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Nat.rfindOpt_mono
File: Mathlib/Computability/Partrec.lean

tactic: have h' := rfindOpt_dom.2 ⟨_, _, h⟩
state_before: α : Type u_1
f : ℕ → Option α
H : ∀ {a : α} {m n : ℕ}, m ≤ n → a ∈ f m → a ∈ f n
a : α
x✝ : ∃ n, a ∈ f n
n : ℕ
h : a ∈ f n
⊢ a ∈ rfindOpt f
state_after: α : Type u_1
f : ℕ → Option α
H : ∀ {a : α} {m n : ℕ}, m ≤ n → a ∈ f m → a ∈ f n
a : α
x✝ : ∃ n, a ∈ f n
n : ℕ
h : a ∈ f n
h' : (rfindOpt f).Dom
⊢ a ∈ rfindOpt f

tactic: cases' rfindOpt_spec ⟨h', rfl⟩ with k hk
state_before: α : Type u_1
f : ℕ → Option α
H : ∀ {a : α} {m n : ℕ}, m ≤ n → a ∈ f m → a ∈ f n
a : α
x✝ : ∃ n, a ∈ f n
n : ℕ
h : a ∈ f n
h' : (rfindOpt f).Dom
⊢ a ∈ rfindOpt f
state_after: case intro
α : Type u_1
f : ℕ → Option α
H : ∀ {a : α} {m n : ℕ}, m ≤ n → a ∈ f m → a ∈ f n
a : α
x✝ : ∃ n, a ∈ f n
n : ℕ
h : a ∈ f n
h' : (rfindOpt f).Dom
k : ℕ
hk : (rfindOpt f).get h' ∈ f k
⊢ a ∈ rfindOpt f

tactic: have := (H (le_max_left _ _) h).symm.trans (H (le_max_right _ _) hk)
state_before: case intro
α : Type u_1
f : ℕ → Option α
H : ∀ {a : α} {m n : ℕ}, m ≤ n → a ∈ f m → a ∈ f n
a : α
x✝ : ∃ n, a ∈ f n
n : ℕ
h : a ∈ f n
h' : (rfindOpt f).Dom
k : ℕ
hk : (rfindOpt f).get h' ∈ f k
⊢ a ∈ rfindOpt f
state_after: case intro
α : Type u_1
f : ℕ → Option α
H : ∀ {a : α} {m n : ℕ}, m ≤ n → a ∈ f m → a ∈ f n
a : α
x✝ : ∃ n, a ∈ f n
n : ℕ
h : a ∈ f n
h' : (rfindOpt f).Dom
k : ℕ
hk : (rfindOpt f).get h' ∈ f k
this : Option.some a = Option.some ((rfindOpt f).get h')
⊢ a ∈ rfindOpt f

tactic: simp at this
state_before: case intro
α : Type u_1
f : ℕ → Option α
H : ∀ {a : α} {m n : ℕ}, m ≤ n → a ∈ f m → a ∈ f n
a : α
x✝ : ∃ n, a ∈ f n
n : ℕ
h : a ∈ f n
h' : (rfindOpt f).Dom
k : ℕ
hk : (rfindOpt f).get h' ∈ f k
this : Option.some a = Option.some ((rfindOpt f).get h')
⊢ a ∈ rfindOpt f
state_after: case intro
α : Type u_1
f : ℕ → Option α
H : ∀ {a : α} {m n : ℕ}, m ≤ n → a ∈ f m → a ∈ f n
a : α
x✝ : ∃ n, a ∈ f n
n : ℕ
h : a ∈ f n
h' : (rfindOpt f).Dom
k : ℕ
hk : (rfindOpt f).get h' ∈ f k
this : a = (rfindOpt f).get h'
⊢ a ∈ rfindOpt f

tactic: simp [this, get_mem]
state_before: case intro
α : Type u_1
f : ℕ → Option α
H : ∀ {a : α} {m n : ℕ}, m ≤ n → a ∈ f m → a ∈ f n
a : α
x✝ : ∃ n, a ∈ f n
n : ℕ
h : a ∈ f n
h' : (rfindOpt f).Dom
k : ℕ
hk : (rfindOpt f).get h' ∈ f k
this : a = (rfindOpt f).get h'
⊢ a ∈ rfindOpt f
state_after: no goals
Theorem: prevD_eq
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: obtain rfl := c.prev_eq' w
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
f : (i j : ι) → C.X i ⟶ D.X j
j j' : ι
w : c.Rel j' j
⊢ (prevD j) f = f j j' ≫ D.d j' j
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
f : (i j : ι) → C.X i ⟶ D.X j
j : ι
w : c.Rel (c.prev j) j
⊢ (prevD j) f = f j (c.prev j) ≫ D.d (c.prev j) j

tactic: rfl
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
f : (i j : ι) → C.X i ⟶ D.X j
j : ι
w : c.Rel (c.prev j) j
⊢ (prevD j) f = f j (c.prev j) ≫ D.d (c.prev j) j
state_after: no goals
Theorem: CliffordAlgebra.mul_ι_mul_ι_of_isOrtho
File: Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean

tactic: rw [mul_assoc, ι_mul_ι_comm_of_isOrtho h, mul_neg, mul_assoc]
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
x : CliffordAlgebra Q
a b : M
h : Q.IsOrtho a b
⊢ x * (ι Q) a * (ι Q) b = -(x * (ι Q) b * (ι Q) a)
state_after: no goals
Theorem: ContinuousLinearMap.hasDerivWithinAt_of_bilinear
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: simpa using (B.hasFDerivWithinAt_of_bilinear
  hu.hasFDerivWithinAt hv.hasFDerivWithinAt).hasDerivWithinAt
state_before: 𝕜 : Type u
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
E : Type w
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
G : Type u_1
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
B : E →L[𝕜] F →L[𝕜] G
u : 𝕜 → E
v : 𝕜 → F
u' : E
v' : F
hu : HasDerivWithinAt u u' s x
hv : HasDerivWithinAt v v' s x
⊢ HasDerivWithinAt (fun x => (B (u x)) (v x)) ((B (u x)) v' + (B u') (v x)) s x
state_after: no goals
Theorem: Subgroup.commProb_quotient_le
File: Mathlib/GroupTheory/CommutingProbability.lean

tactic: rw [commProb_def', commProb_def', div_le_iff, mul_assoc, ← Nat.cast_mul, ← Subgroup.index,
  H.card_mul_index, div_mul_cancel₀, Nat.cast_le]
state_before: M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ commProb (G ⧸ H) ≤ commProb G * ↑(Nat.card ↥H)
state_after: M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ Nat.card (ConjClasses (G ⧸ H)) ≤ Nat.card (ConjClasses G)

case h
M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ ↑(Nat.card G) ≠ 0

M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ 0 < ↑(Nat.card (G ⧸ H))

tactic: apply Finite.card_le_of_surjective
state_before: M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ Nat.card (ConjClasses (G ⧸ H)) ≤ Nat.card (ConjClasses G)
state_after: case hf
M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ Function.Surjective ?f

case f
M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ ConjClasses G → ConjClasses (G ⧸ H)

tactic: show Function.Surjective (ConjClasses.map (QuotientGroup.mk' H))
state_before: case hf
M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ Function.Surjective ?f

case f
M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ ConjClasses G → ConjClasses (G ⧸ H)
state_after: case hf
M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ Function.Surjective (ConjClasses.map (QuotientGroup.mk' H))

tactic: exact ConjClasses.map_surjective Quotient.surjective_Quotient_mk''
state_before: case hf
M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ Function.Surjective (ConjClasses.map (QuotientGroup.mk' H))
state_after: no goals

tactic: exact Nat.cast_ne_zero.mpr Finite.card_pos.ne'
state_before: case h
M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ ↑(Nat.card G) ≠ 0
state_after: no goals

tactic: exact Nat.cast_pos.mpr Finite.card_pos
state_before: M : Type u_1
inst✝⁴ : Mul M
inst✝³ : Finite M
G : Type u_2
inst✝² : Group G
inst✝¹ : Finite G
H : Subgroup G
inst✝ : H.Normal
⊢ 0 < ↑(Nat.card (G ⧸ H))
state_after: no goals
Theorem: eq_iff_eq_of_mul_eq_mul
File: Mathlib/Algebra/Group/Basic.lean

tactic: aesop
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : CancelCommMonoid α
a b c d : α
h : a * b = c * d
⊢ a = c ↔ b = d
state_after: no goals
Theorem: RingHom.RespectsIso.cancel_left_isIso
File: Mathlib/RingTheory/RingHomProperties.lean

tactic: convert hP.2 (f ≫ g) (asIso f).symm.commRingCatIsoToRingEquiv H
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : S ⟶ T
inst✝ : IsIso f
H : P (f ≫ g)
⊢ P g
state_after: case h.e'_5
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : S ⟶ T
inst✝ : IsIso f
H : P (f ≫ g)
⊢ g = comp (f ≫ g) (asIso f).symm.commRingCatIsoToRingEquiv.toRingHom

tactic: exact (IsIso.inv_hom_id_assoc _ _).symm
state_before: case h.e'_5
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RespectsIso P
R S T : CommRingCat
f : R ⟶ S
g : S ⟶ T
inst✝ : IsIso f
H : P (f ≫ g)
⊢ g = comp (f ≫ g) (asIso f).symm.commRingCatIsoToRingEquiv.toRingHom
state_after: no goals
Theorem: LowerSet.compl_iSup
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp only [coe_compl, coe_iSup, compl_iUnion, UpperSet.coe_iSup]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : LE α
s t : LowerSet α
a : α
f : ι → LowerSet α
⊢ ↑(⨆ i, f i).compl = ↑(⨆ i, (f i).compl)
state_after: no goals
Theorem: AffineSubspace.mem_mk'_iff_vsub_mem
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: refine ⟨fun h => ?_, fun h => ?_⟩
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
direction : Submodule k V
⊢ p₂ ∈ mk' p₁ direction ↔ p₂ -ᵥ p₁ ∈ direction
state_after: case refine_1
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
direction : Submodule k V
h : p₂ ∈ mk' p₁ direction
⊢ p₂ -ᵥ p₁ ∈ direction

case refine_2
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
direction : Submodule k V
h : p₂ -ᵥ p₁ ∈ direction
⊢ p₂ ∈ mk' p₁ direction

tactic: rw [← direction_mk' p₁ direction]
state_before: case refine_1
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
direction : Submodule k V
h : p₂ ∈ mk' p₁ direction
⊢ p₂ -ᵥ p₁ ∈ direction
state_after: case refine_1
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
direction : Submodule k V
h : p₂ ∈ mk' p₁ direction
⊢ p₂ -ᵥ p₁ ∈ (mk' p₁ direction).direction

tactic: exact vsub_mem_direction h (self_mem_mk' _ _)
state_before: case refine_1
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
direction : Submodule k V
h : p₂ ∈ mk' p₁ direction
⊢ p₂ -ᵥ p₁ ∈ (mk' p₁ direction).direction
state_after: no goals

tactic: rw [← vsub_vadd p₂ p₁]
state_before: case refine_2
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
direction : Submodule k V
h : p₂ -ᵥ p₁ ∈ direction
⊢ p₂ ∈ mk' p₁ direction
state_after: case refine_2
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
direction : Submodule k V
h : p₂ -ᵥ p₁ ∈ direction
⊢ p₂ -ᵥ p₁ +ᵥ p₁ ∈ mk' p₁ direction

tactic: exact vadd_mem_mk' p₁ h
state_before: case refine_2
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ : P
direction : Submodule k V
h : p₂ -ᵥ p₁ ∈ direction
⊢ p₂ -ᵥ p₁ +ᵥ p₁ ∈ mk' p₁ direction
state_after: no goals
Theorem: isPathConnected_compl_of_one_lt_codim
File: Mathlib/Analysis/NormedSpace/Connected.lean

tactic: rcases E.exists_isCompl with ⟨E', hE'⟩
state_before: F : Type u_1
inst✝⁴ : AddCommGroup F
inst✝³ : Module ℝ F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ContinuousSMul ℝ F
E : Submodule ℝ F
hcodim : 1 < Module.rank ℝ (F ⧸ E)
⊢ IsPathConnected (↑E)ᶜ
state_after: case intro
F : Type u_1
inst✝⁴ : AddCommGroup F
inst✝³ : Module ℝ F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ContinuousSMul ℝ F
E : Submodule ℝ F
hcodim : 1 < Module.rank ℝ (F ⧸ E)
E' : Submodule ℝ F
hE' : IsCompl E E'
⊢ IsPathConnected (↑E)ᶜ

tactic: refine isPathConnected_compl_of_isPathConnected_compl_zero hE'.symm
  (isPathConnected_compl_singleton_of_one_lt_rank ?_ 0)
state_before: case intro
F : Type u_1
inst✝⁴ : AddCommGroup F
inst✝³ : Module ℝ F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ContinuousSMul ℝ F
E : Submodule ℝ F
hcodim : 1 < Module.rank ℝ (F ⧸ E)
E' : Submodule ℝ F
hE' : IsCompl E E'
⊢ IsPathConnected (↑E)ᶜ
state_after: case intro
F : Type u_1
inst✝⁴ : AddCommGroup F
inst✝³ : Module ℝ F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ContinuousSMul ℝ F
E : Submodule ℝ F
hcodim : 1 < Module.rank ℝ (F ⧸ E)
E' : Submodule ℝ F
hE' : IsCompl E E'
⊢ 1 < Module.rank ℝ ↥E'

tactic: rwa [← (E.quotientEquivOfIsCompl E' hE').rank_eq]
state_before: case intro
F : Type u_1
inst✝⁴ : AddCommGroup F
inst✝³ : Module ℝ F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ContinuousSMul ℝ F
E : Submodule ℝ F
hcodim : 1 < Module.rank ℝ (F ⧸ E)
E' : Submodule ℝ F
hE' : IsCompl E E'
⊢ 1 < Module.rank ℝ ↥E'
state_after: no goals
Theorem: Function.Injective.exists_ne
File: Mathlib/Logic/Nontrivial/Basic.lean

tactic: rcases exists_pair_ne α with ⟨x₁, x₂, hx⟩
state_before: α : Type u_1
β : Type u_2
inst✝ : Nontrivial α
f : α → β
hf : Injective f
y : β
⊢ ∃ x, f x ≠ y
state_after: case intro.intro
α : Type u_1
β : Type u_2
inst✝ : Nontrivial α
f : α → β
hf : Injective f
y : β
x₁ x₂ : α
hx : x₁ ≠ x₂
⊢ ∃ x, f x ≠ y

tactic: by_cases h:f x₂ = y
state_before: case intro.intro
α : Type u_1
β : Type u_2
inst✝ : Nontrivial α
f : α → β
hf : Injective f
y : β
x₁ x₂ : α
hx : x₁ ≠ x₂
⊢ ∃ x, f x ≠ y
state_after: case pos
α : Type u_1
β : Type u_2
inst✝ : Nontrivial α
f : α → β
hf : Injective f
y : β
x₁ x₂ : α
hx : x₁ ≠ x₂
h : f x₂ = y
⊢ ∃ x, f x ≠ y

case neg
α : Type u_1
β : Type u_2
inst✝ : Nontrivial α
f : α → β
hf : Injective f
y : β
x₁ x₂ : α
hx : x₁ ≠ x₂
h : ¬f x₂ = y
⊢ ∃ x, f x ≠ y

tactic: exact ⟨x₁, (hf.ne_iff' h).2 hx⟩
state_before: case pos
α : Type u_1
β : Type u_2
inst✝ : Nontrivial α
f : α → β
hf : Injective f
y : β
x₁ x₂ : α
hx : x₁ ≠ x₂
h : f x₂ = y
⊢ ∃ x, f x ≠ y
state_after: no goals

tactic: exact ⟨x₂, h⟩
state_before: case neg
α : Type u_1
β : Type u_2
inst✝ : Nontrivial α
f : α → β
hf : Injective f
y : β
x₁ x₂ : α
hx : x₁ ≠ x₂
h : ¬f x₂ = y
⊢ ∃ x, f x ≠ y
state_after: no goals
Theorem: totallyBounded_iff_ultrafilter
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: refine ⟨fun hs f => f.cauchy_of_totallyBounded hs, fun H => totallyBounded_iff_filter.2 ?_⟩
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
⊢ TotallyBounded s ↔ ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → Cauchy ↑f
state_after: α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
H : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → Cauchy ↑f
⊢ ∀ (f : Filter α), f.NeBot → f ≤ 𝓟 s → ∃ c ≤ f, Cauchy c

tactic: intro f hf hfs
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
H : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → Cauchy ↑f
⊢ ∀ (f : Filter α), f.NeBot → f ≤ 𝓟 s → ∃ c ≤ f, Cauchy c
state_after: α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
H : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → Cauchy ↑f
f : Filter α
hf : f.NeBot
hfs : f ≤ 𝓟 s
⊢ ∃ c ≤ f, Cauchy c

tactic: exact ⟨Ultrafilter.of f, Ultrafilter.of_le f, H _ ((Ultrafilter.of_le f).trans hfs)⟩
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
H : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → Cauchy ↑f
f : Filter α
hf : f.NeBot
hfs : f ≤ 𝓟 s
⊢ ∃ c ≤ f, Cauchy c
state_after: no goals
Theorem: List.Ico.inter_consecutive
File: Mathlib/Data/List/Intervals.lean

tactic: apply eq_nil_iff_forall_not_mem.2
state_before: n m l : ℕ
⊢ Ico n m ∩ Ico m l = []
state_after: n m l : ℕ
⊢ ∀ (a : ℕ), a ∉ Ico n m ∩ Ico m l

tactic: intro a
state_before: n m l : ℕ
⊢ ∀ (a : ℕ), a ∉ Ico n m ∩ Ico m l
state_after: n m l a : ℕ
⊢ a ∉ Ico n m ∩ Ico m l

tactic: simp only [and_imp, not_and, not_lt, List.mem_inter_iff, List.Ico.mem]
state_before: n m l a : ℕ
⊢ a ∉ Ico n m ∩ Ico m l
state_after: n m l a : ℕ
⊢ n ≤ a → a < m → m ≤ a → l ≤ a

tactic: intro _ h₂ h₃
state_before: n m l a : ℕ
⊢ n ≤ a → a < m → m ≤ a → l ≤ a
state_after: n m l a : ℕ
a✝ : n ≤ a
h₂ : a < m
h₃ : m ≤ a
⊢ l ≤ a

tactic: exfalso
state_before: n m l a : ℕ
a✝ : n ≤ a
h₂ : a < m
h₃ : m ≤ a
⊢ l ≤ a
state_after: n m l a : ℕ
a✝ : n ≤ a
h₂ : a < m
h₃ : m ≤ a
⊢ False

tactic: exact not_lt_of_ge h₃ h₂
state_before: n m l a : ℕ
a✝ : n ≤ a
h₂ : a < m
h₃ : m ≤ a
⊢ False
state_after: no goals
Theorem: Real.lt_sin
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Bounds.lean

tactic: simpa using sin_lt <| neg_pos.2 hx
state_before: x : ℝ
hx : x < 0
⊢ x < sin x
state_after: no goals
Theorem: Finset.eq_univ_of_card
File: Mathlib/Data/Fintype/Card.lean

tactic: rw [hs, Finset.card_univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Fintype α
s : Finset α
hs : s.card = Fintype.card α
⊢ univ.card ≤ s.card
state_after: no goals
Theorem: ProbabilityTheory.kernel.compProd_fst_condKernelReal
File: Mathlib/Probability/Kernel/Disintegration/Basic.lean

tactic: rw [condKernelReal, compProd_toKernel]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
Ω : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝⁴ : CountablyGenerated γ
inst✝³ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
κ : ↥(kernel α (γ × ℝ))
inst✝ : IsFiniteKernel κ
⊢ fst κ ⊗ₖ condKernelReal κ = κ
state_after: no goals
Theorem: IntermediateField.fixingSubgroup_top
File: Mathlib/FieldTheory/KrullTopology.lean

tactic: ext
state_before: K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
⊢ ⊤.fixingSubgroup = ⊥
state_after: case h
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
x✝ : L ≃ₐ[K] L
⊢ x✝ ∈ ⊤.fixingSubgroup ↔ x✝ ∈ ⊥

tactic: simp [mem_fixingSubgroup_iff, DFunLike.ext_iff]
state_before: case h
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
x✝ : L ≃ₐ[K] L
⊢ x✝ ∈ ⊤.fixingSubgroup ↔ x✝ ∈ ⊥
state_after: no goals
Theorem: Set.ncard_le_one_iff_subset_singleton
File: Mathlib/Data/Set/Card.lean

tactic: simp_rw [ncard_eq_toFinset_card _ hs, Finset.card_le_one_iff_subset_singleton,
  Finite.toFinset_subset, Finset.coe_singleton]
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
inst✝ : Nonempty α
hs : autoParam s.Finite _auto✝
⊢ s.ncard ≤ 1 ↔ ∃ x, s ⊆ {x}
state_after: no goals
Theorem: List.Palindrome.of_reverse_eq
File: Mathlib/Data/List/Palindrome.lean

tactic: refine bidirectionalRecOn l (fun _ => Palindrome.nil) (fun a _ => Palindrome.singleton a) ?_
state_before: α : Type u_1
β : Type u_2
l✝ l : List α
⊢ l.reverse = l → l.Palindrome
state_after: α : Type u_1
β : Type u_2
l✝ l : List α
⊢ ∀ (a : α) (l : List α) (b : α),
    (l.reverse = l → l.Palindrome) → (a :: (l ++ [b])).reverse = a :: (l ++ [b]) → (a :: (l ++ [b])).Palindrome

tactic: intro x l y hp hr
state_before: α : Type u_1
β : Type u_2
l✝ l : List α
⊢ ∀ (a : α) (l : List α) (b : α),
    (l.reverse = l → l.Palindrome) → (a :: (l ++ [b])).reverse = a :: (l ++ [b]) → (a :: (l ++ [b])).Palindrome
state_after: α : Type u_1
β : Type u_2
l✝¹ l✝ : List α
x : α
l : List α
y : α
hp : l.reverse = l → l.Palindrome
hr : (x :: (l ++ [y])).reverse = x :: (l ++ [y])
⊢ (x :: (l ++ [y])).Palindrome

tactic: rw [reverse_cons, reverse_append] at hr
state_before: α : Type u_1
β : Type u_2
l✝¹ l✝ : List α
x : α
l : List α
y : α
hp : l.reverse = l → l.Palindrome
hr : (x :: (l ++ [y])).reverse = x :: (l ++ [y])
⊢ (x :: (l ++ [y])).Palindrome
state_after: α : Type u_1
β : Type u_2
l✝¹ l✝ : List α
x : α
l : List α
y : α
hp : l.reverse = l → l.Palindrome
hr : [y].reverse ++ l.reverse ++ [x] = x :: (l ++ [y])
⊢ (x :: (l ++ [y])).Palindrome

tactic: rw [head_eq_of_cons_eq hr]
state_before: α : Type u_1
β : Type u_2
l✝¹ l✝ : List α
x : α
l : List α
y : α
hp : l.reverse = l → l.Palindrome
hr : [y].reverse ++ l.reverse ++ [x] = x :: (l ++ [y])
⊢ (x :: (l ++ [y])).Palindrome
state_after: α : Type u_1
β : Type u_2
l✝¹ l✝ : List α
x : α
l : List α
y : α
hp : l.reverse = l → l.Palindrome
hr : [y].reverse ++ l.reverse ++ [x] = x :: (l ++ [y])
⊢ (x :: (l ++ [x])).Palindrome

tactic: have : Palindrome l := hp (append_inj_left' (tail_eq_of_cons_eq hr) rfl)
state_before: α : Type u_1
β : Type u_2
l✝¹ l✝ : List α
x : α
l : List α
y : α
hp : l.reverse = l → l.Palindrome
hr : [y].reverse ++ l.reverse ++ [x] = x :: (l ++ [y])
⊢ (x :: (l ++ [x])).Palindrome
state_after: α : Type u_1
β : Type u_2
l✝¹ l✝ : List α
x : α
l : List α
y : α
hp : l.reverse = l → l.Palindrome
hr : [y].reverse ++ l.reverse ++ [x] = x :: (l ++ [y])
this : l.Palindrome
⊢ (x :: (l ++ [x])).Palindrome

tactic: exact Palindrome.cons_concat x this
state_before: α : Type u_1
β : Type u_2
l✝¹ l✝ : List α
x : α
l : List α
y : α
hp : l.reverse = l → l.Palindrome
hr : [y].reverse ++ l.reverse ++ [x] = x :: (l ++ [y])
this : l.Palindrome
⊢ (x :: (l ++ [x])).Palindrome
state_after: no goals
Theorem: IsLocalization.of_le
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: rw [IsLocalization.eq_iff_exists M]
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
N : Submonoid R
h₁ : M ≤ N
h₂ : ∀ r ∈ N, IsUnit ((algebraMap R S) r)
x y : R
⊢ (algebraMap R S) x = (algebraMap R S) y → ∃ c, ↑c * x = ↑c * y
state_after: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
N : Submonoid R
h₁ : M ≤ N
h₂ : ∀ r ∈ N, IsUnit ((algebraMap R S) r)
x y : R
⊢ (∃ c, ↑c * x = ↑c * y) → ∃ c, ↑c * x = ↑c * y

tactic: rintro ⟨c, hc⟩
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
N : Submonoid R
h₁ : M ≤ N
h₂ : ∀ r ∈ N, IsUnit ((algebraMap R S) r)
x y : R
⊢ (∃ c, ↑c * x = ↑c * y) → ∃ c, ↑c * x = ↑c * y
state_after: case intro
R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
N : Submonoid R
h₁ : M ≤ N
h₂ : ∀ r ∈ N, IsUnit ((algebraMap R S) r)
x y : R
c : ↥M
hc : ↑c * x = ↑c * y
⊢ ∃ c, ↑c * x = ↑c * y

tactic: exact ⟨⟨c, h₁ c.2⟩, hc⟩
state_before: case intro
R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
N : Submonoid R
h₁ : M ≤ N
h₂ : ∀ r ∈ N, IsUnit ((algebraMap R S) r)
x y : R
c : ↥M
hc : ↑c * x = ↑c * y
⊢ ∃ c, ↑c * x = ↑c * y
state_after: no goals
Theorem: Urysohns.CU.lim_of_mem_C
File: Mathlib/Topology/UrysohnsLemma.lean

tactic: simp only [CU.lim, approx_of_mem_C, h, ciSup_const]
state_before: X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
c : CU P
x : X
h : x ∈ c.C
⊢ c.lim x = 0
state_after: no goals
Theorem: ENNReal.one_le_inv
File: Mathlib/Data/ENNReal/Inv.lean

tactic: rw [le_inv_iff_le_inv, inv_one]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ 1 ≤ a⁻¹ ↔ a ≤ 1
state_after: no goals
Theorem: Set.preimage_val_eq_univ_of_subset
File: Mathlib/Data/Set/Subset.lean

tactic: rw [eq_univ_iff_forall, Subtype.forall]
state_before: ι : Sort u_1
α : Type u_2
A B C : Set α
D E : Set ↑A
S : Set (Set α)
T : Set (Set ↑A)
s : ι → Set α
t : ι → Set ↑A
h : A ⊆ B
⊢ A ↓∩ B = univ
state_after: ι : Sort u_1
α : Type u_2
A B C : Set α
D E : Set ↑A
S : Set (Set α)
T : Set (Set ↑A)
s : ι → Set α
t : ι → Set ↑A
h : A ⊆ B
⊢ ∀ (a : α) (b : a ∈ A), ⟨a, b⟩ ∈ A ↓∩ B

tactic: exact h
state_before: ι : Sort u_1
α : Type u_2
A B C : Set α
D E : Set ↑A
S : Set (Set α)
T : Set (Set ↑A)
s : ι → Set α
t : ι → Set ↑A
h : A ⊆ B
⊢ ∀ (a : α) (b : a ∈ A), ⟨a, b⟩ ∈ A ↓∩ B
state_after: no goals