1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: List.Perm.bagInter_left
File: Mathlib/Data/List/Perm.lean

tactic: induction' l with a l IH generalizing t₁ t₂ p
state_before: α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a : α
inst✝ : DecidableEq α
l t₁ t₂ : List α
p : t₁ ~ t₂
⊢ l.bagInter t₁ = l.bagInter t₂
state_after: case nil
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a : α
inst✝ : DecidableEq α
t₁ t₂ : List α
p : t₁ ~ t₂
⊢ [].bagInter t₁ = [].bagInter t₂

case cons
α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a✝ : α
inst✝ : DecidableEq α
a : α
l : List α
IH : ∀ {t₁ t₂ : List α}, t₁ ~ t₂ → l.bagInter t₁ = l.bagInter t₂
t₁ t₂ : List α
p : t₁ ~ t₂
⊢ (a :: l).bagInter t₁ = (a :: l).bagInter t₂

tactic: by_cases h : a ∈ t₁
state_before: case cons
α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a✝ : α
inst✝ : DecidableEq α
a : α
l : List α
IH : ∀ {t₁ t₂ : List α}, t₁ ~ t₂ → l.bagInter t₁ = l.bagInter t₂
t₁ t₂ : List α
p : t₁ ~ t₂
⊢ (a :: l).bagInter t₁ = (a :: l).bagInter t₂
state_after: case pos
α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a✝ : α
inst✝ : DecidableEq α
a : α
l : List α
IH : ∀ {t₁ t₂ : List α}, t₁ ~ t₂ → l.bagInter t₁ = l.bagInter t₂
t₁ t₂ : List α
p : t₁ ~ t₂
h : a ∈ t₁
⊢ (a :: l).bagInter t₁ = (a :: l).bagInter t₂

case neg
α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a✝ : α
inst✝ : DecidableEq α
a : α
l : List α
IH : ∀ {t₁ t₂ : List α}, t₁ ~ t₂ → l.bagInter t₁ = l.bagInter t₂
t₁ t₂ : List α
p : t₁ ~ t₂
h : a ∉ t₁
⊢ (a :: l).bagInter t₁ = (a :: l).bagInter t₂

tactic: simp
state_before: case nil
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a : α
inst✝ : DecidableEq α
t₁ t₂ : List α
p : t₁ ~ t₂
⊢ [].bagInter t₁ = [].bagInter t₂
state_after: no goals

tactic: simp [h, p.subset h, IH (p.erase _)]
state_before: case pos
α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a✝ : α
inst✝ : DecidableEq α
a : α
l : List α
IH : ∀ {t₁ t₂ : List α}, t₁ ~ t₂ → l.bagInter t₁ = l.bagInter t₂
t₁ t₂ : List α
p : t₁ ~ t₂
h : a ∈ t₁
⊢ (a :: l).bagInter t₁ = (a :: l).bagInter t₂
state_after: no goals

tactic: simp [h, mt p.mem_iff.2 h, IH p]
state_before: case neg
α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a✝ : α
inst✝ : DecidableEq α
a : α
l : List α
IH : ∀ {t₁ t₂ : List α}, t₁ ~ t₂ → l.bagInter t₁ = l.bagInter t₂
t₁ t₂ : List α
p : t₁ ~ t₂
h : a ∉ t₁
⊢ (a :: l).bagInter t₁ = (a :: l).bagInter t₂
state_after: no goals
Theorem: List.Nat.antidiagonalTuple_one
File: Mathlib/Data/Fin/Tuple/NatAntidiagonal.lean

tactic: simp_rw [antidiagonalTuple, antidiagonal, List.range_succ, List.map_append, List.map_singleton,
  tsub_self, List.append_bind, List.bind_singleton, List.bind_map]
state_before: n : ℕ
⊢ antidiagonalTuple 1 n = [![n]]
state_after: n : ℕ
⊢ ((range n).bind fun a => map (fun x => Fin.cons a x) (antidiagonalTuple 0 (n - a))) ++
      map (fun x => Fin.cons n x) (antidiagonalTuple 0 0) =
    [![n]]

tactic: conv_rhs => rw [← List.nil_append [![n]]]
state_before: n : ℕ
⊢ ((range n).bind fun a => map (fun x => Fin.cons a x) (antidiagonalTuple 0 (n - a))) ++
      map (fun x => Fin.cons n x) (antidiagonalTuple 0 0) =
    [![n]]
state_after: n : ℕ
⊢ ((range n).bind fun a => map (fun x => Fin.cons a x) (antidiagonalTuple 0 (n - a))) ++
      map (fun x => Fin.cons n x) (antidiagonalTuple 0 0) =
    [] ++ [![n]]

tactic: congr 1
state_before: n : ℕ
⊢ ((range n).bind fun a => map (fun x => Fin.cons a x) (antidiagonalTuple 0 (n - a))) ++
      map (fun x => Fin.cons n x) (antidiagonalTuple 0 0) =
    [] ++ [![n]]
state_after: case e_a
n : ℕ
⊢ ((range n).bind fun a => map (fun x => Fin.cons a x) (antidiagonalTuple 0 (n - a))) = []

tactic: simp_rw [List.bind_eq_nil, List.mem_range, List.map_eq_nil]
state_before: case e_a
n : ℕ
⊢ ((range n).bind fun a => map (fun x => Fin.cons a x) (antidiagonalTuple 0 (n - a))) = []
state_after: case e_a
n : ℕ
⊢ ∀ x < n, antidiagonalTuple 0 (n - x) = []

tactic: intro x hx
state_before: case e_a
n : ℕ
⊢ ∀ x < n, antidiagonalTuple 0 (n - x) = []
state_after: case e_a
n x : ℕ
hx : x < n
⊢ antidiagonalTuple 0 (n - x) = []

tactic: obtain ⟨m, rfl⟩ := Nat.exists_eq_add_of_lt hx
state_before: case e_a
n x : ℕ
hx : x < n
⊢ antidiagonalTuple 0 (n - x) = []
state_after: case e_a.intro
x m : ℕ
hx : x < x + m + 1
⊢ antidiagonalTuple 0 (x + m + 1 - x) = []

tactic: rw [add_assoc, add_tsub_cancel_left, antidiagonalTuple_zero_succ]
state_before: case e_a.intro
x m : ℕ
hx : x < x + m + 1
⊢ antidiagonalTuple 0 (x + m + 1 - x) = []
state_after: no goals
Theorem: Projectivization.dependent_iff_not_independent
File: Mathlib/LinearAlgebra/Projectivization/Independence.lean

tactic: rw [dependent_iff, independent_iff]
state_before: ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
⊢ Dependent f ↔ ¬Independent f
state_after: no goals
Theorem: Set.infinite_range_iff
File: Mathlib/Data/Set/Finite.lean

tactic: rw [← image_univ, infinite_image_iff hi.injOn, infinite_univ_iff]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
f : α → β
hi : Injective f
⊢ (range f).Infinite ↔ Infinite α
state_after: no goals
Theorem: Polynomial.taylor_zero
File: Mathlib/Algebra/Polynomial/Taylor.lean

tactic: rw [taylor_zero', LinearMap.id_apply]
state_before: R : Type u_1
inst✝ : Semiring R
r : R
f✝ f : R[X]
⊢ (taylor 0) f = f
state_after: no goals
Theorem: Set.injective_iff_injective_of_iUnion_eq_univ
File: Mathlib/Data/Set/Lattice.lean

tactic: refine ⟨fun H i => (U i).restrictPreimage_injective H, fun H x y e => ?_⟩
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
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
⊢ Injective f ↔ ∀ (i : ι), Injective ((U i).restrictPreimage f)
state_after: α : 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
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Injective ((U i).restrictPreimage f)
x y : α
e : f x = f y
⊢ x = y

tactic: obtain ⟨i, hi⟩ := Set.mem_iUnion.mp
    (show f x ∈ Set.iUnion U by rw [hU]; trivial)
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
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Injective ((U i).restrictPreimage f)
x y : α
e : f x = f y
⊢ x = y
state_after: case intro
α : 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
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Injective ((U i).restrictPreimage f)
x y : α
e : f x = f y
i : ι
hi : f x ∈ U i
⊢ x = y

tactic: injection @H i ⟨x, hi⟩ ⟨y, show f y ∈ U i from e ▸ hi⟩ (Subtype.ext e)
state_before: case intro
α : 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
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Injective ((U i).restrictPreimage f)
x y : α
e : f x = f y
i : ι
hi : f x ∈ U i
⊢ x = y
state_after: no goals

tactic: rw [hU]
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
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Injective ((U i).restrictPreimage f)
x y : α
e : f x = f y
⊢ f x ∈ iUnion U
state_after: α : 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
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Injective ((U i).restrictPreimage f)
x y : α
e : f x = f y
⊢ f x ∈ univ

tactic: trivial
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
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Injective ((U i).restrictPreimage f)
x y : α
e : f x = f y
⊢ f x ∈ univ
state_after: no goals
Theorem: Quaternion.exp_eq
File: Mathlib/Analysis/NormedSpace/QuaternionExponential.lean

tactic: rw [← exp_of_re_eq_zero q.im q.im_re, ← coe_mul_eq_smul, ← exp_coe, ← exp_add_of_commute,
  re_add_im]
state_before: q : ℍ
⊢ exp ℝ q = exp ℝ q.re • (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im)
state_after: q : ℍ
⊢ Commute (↑q.re) q.im

tactic: exact Algebra.commutes q.re (_ : ℍ[ℝ])
state_before: q : ℍ
⊢ Commute (↑q.re) q.im
state_after: no goals
Theorem: Polynomial.monomial_sub
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [sub_eq_add_neg, monomial_add, monomial_neg]
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Ring R
n : ℕ
⊢ (monomial n) (a - b) = (monomial n) a - (monomial n) b
state_after: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Ring R
n : ℕ
⊢ (monomial n) a + -(monomial n) b = (monomial n) a - (monomial n) b

tactic: rfl
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Ring R
n : ℕ
⊢ (monomial n) a + -(monomial n) b = (monomial n) a - (monomial n) b
state_after: no goals
Theorem: EReal.preimage_coe_Ioo_bot_top
File: Mathlib/Data/Real/EReal.lean

tactic: rw [← Ioi_inter_Iio]
state_before: ⊢ Real.toEReal ⁻¹' Ioo ⊥ ⊤ = univ
state_after: ⊢ Real.toEReal ⁻¹' (Ioi ⊥ ∩ Iio ⊤) = univ

tactic: simp
state_before: ⊢ Real.toEReal ⁻¹' (Ioi ⊥ ∩ Iio ⊤) = univ
state_after: no goals
Theorem: Nat.fermatPsp_base_one
File: Mathlib/NumberTheory/FermatPsp.lean

tactic: refine ⟨show n ∣ 1 ^ (n - 1) - 1 from ?_, h₂, h₁⟩
state_before: n : ℕ
h₁ : 1 < n
h₂ : ¬Prime n
⊢ n.FermatPsp 1
state_after: n : ℕ
h₁ : 1 < n
h₂ : ¬Prime n
⊢ n ∣ 1 ^ (n - 1) - 1

tactic: exact show 0 = 1 ^ (n - 1) - 1 by norm_num ▸ dvd_zero n
state_before: n : ℕ
h₁ : 1 < n
h₂ : ¬Prime n
⊢ n ∣ 1 ^ (n - 1) - 1
state_after: no goals

tactic: norm_num
state_before: n : ℕ
h₁ : 1 < n
h₂ : ¬Prime n
⊢ 0 = 1 ^ (n - 1) - 1
state_after: no goals
Theorem: MulActionWithZero.subsingleton
File: Mathlib/Algebra/SMulWithZero.lean

tactic: rw [← one_smul R x, ← one_smul R y, Subsingleton.elim (1 : R) 0, zero_smul, zero_smul]
state_before: R : Type u_1
R' : Type u_2
M : Type u_3
M' : Type u_4
inst✝⁴ : MonoidWithZero R
inst✝³ : MonoidWithZero R'
inst✝² : Zero M
inst✝¹ : MulActionWithZero R M
inst✝ : Subsingleton R
x y : M
⊢ x = y
state_after: no goals
Theorem: mem_skewAdjointMatricesSubmodule'
File: Mathlib/LinearAlgebra/Matrix/BilinearForm.lean

tactic: simp only [mem_skewAdjointMatricesSubmodule]
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₁
R₂ : Type u_5
M₂ : Type u_6
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type u_7
M₃ : Type u_8
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type u_9
K : Type u_10
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_11
inst✝¹ : Fintype n
b : Basis n R₃ M₃
J J₃ A A' : Matrix n n R₃
inst✝ : DecidableEq n
⊢ A ∈ skewAdjointMatricesSubmodule J ↔ J.IsSkewAdjoint A
state_after: no goals
Theorem: intervalIntegral.measure_integral_sub_linear_isLittleO_of_tendsto_ae_of_le'
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: simp [integral_const', hx]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
f : ℝ → E
a b : ℝ
c ca cb : E
l l' la la' lb lb' : Filter ℝ
lt : Filter ι
μ : Measure ℝ
u v ua va ub vb : ι → ℝ
inst✝² : CompleteSpace E
inst✝¹ : l'.IsMeasurablyGenerated
inst✝ : TendstoIxxClass Ioc l l'
hfm : StronglyMeasurableAtFilter f l' μ
hf : Tendsto f (l' ⊓ ae μ) (𝓝 c)
hl : μ.FiniteAtFilter l'
hu : Tendsto u lt l
hv : Tendsto v lt l
huv : u ≤ᶠ[lt] v
x : ι
hx : u x ≤ v x
⊢ (fun t => ∫ (x : ℝ) in u t..v t, f x ∂μ - ∫ (x : ℝ) in u t..v t, c ∂μ) x =
    (fun t => ∫ (x : ℝ) in u t..v t, f x ∂μ - (μ (Ioc (u t) (v t))).toReal • c) x
state_after: no goals

tactic: simp [integral_const', hx]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
f : ℝ → E
a b : ℝ
c ca cb : E
l l' la la' lb lb' : Filter ℝ
lt : Filter ι
μ : Measure ℝ
u v ua va ub vb : ι → ℝ
inst✝² : CompleteSpace E
inst✝¹ : l'.IsMeasurablyGenerated
inst✝ : TendstoIxxClass Ioc l l'
hfm : StronglyMeasurableAtFilter f l' μ
hf : Tendsto f (l' ⊓ ae μ) (𝓝 c)
hl : μ.FiniteAtFilter l'
hu : Tendsto u lt l
hv : Tendsto v lt l
huv : u ≤ᶠ[lt] v
x : ι
hx : u x ≤ v x
⊢ (fun t => ∫ (x : ℝ) in u t..v t, 1 ∂μ) x = (fun t => (μ (Ioc (u t) (v t))).toReal) x
state_after: no goals
Theorem: Rel.image_id
File: Mathlib/Data/Rel.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ image Eq s = s
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : α
⊢ x ∈ image Eq s ↔ x ∈ s

tactic: simp [mem_image]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : α
⊢ x ∈ image Eq s ↔ x ∈ s
state_after: no goals
Theorem: Pi.isCompact_iff
File: Mathlib/Topology/Separation.lean

tactic: constructor <;> intro H
state_before: X : Type u_1
Y : Type u_2
inst✝⁵ : TopologicalSpace X
inst✝⁴ : FirstCountableTopology X
Z : Type u_3
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Z
ι : Type u_4
π : ι → Type u_5
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), T2Space (π i)
s : Set ((i : ι) → π i)
⊢ IsCompact s ↔ IsClosed s ∧ ∀ (i : ι), IsCompact (eval i '' s)
state_after: case mp
X : Type u_1
Y : Type u_2
inst✝⁵ : TopologicalSpace X
inst✝⁴ : FirstCountableTopology X
Z : Type u_3
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Z
ι : Type u_4
π : ι → Type u_5
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), T2Space (π i)
s : Set ((i : ι) → π i)
H : IsCompact s
⊢ IsClosed s ∧ ∀ (i : ι), IsCompact (eval i '' s)

case mpr
X : Type u_1
Y : Type u_2
inst✝⁵ : TopologicalSpace X
inst✝⁴ : FirstCountableTopology X
Z : Type u_3
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Z
ι : Type u_4
π : ι → Type u_5
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), T2Space (π i)
s : Set ((i : ι) → π i)
H : IsClosed s ∧ ∀ (i : ι), IsCompact (eval i '' s)
⊢ IsCompact s

tactic: exact ⟨H.isClosed, fun i ↦ H.image <| continuous_apply i⟩
state_before: case mp
X : Type u_1
Y : Type u_2
inst✝⁵ : TopologicalSpace X
inst✝⁴ : FirstCountableTopology X
Z : Type u_3
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Z
ι : Type u_4
π : ι → Type u_5
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), T2Space (π i)
s : Set ((i : ι) → π i)
H : IsCompact s
⊢ IsClosed s ∧ ∀ (i : ι), IsCompact (eval i '' s)
state_after: no goals

tactic: exact IsCompact.of_isClosed_subset (isCompact_univ_pi H.2) H.1 (subset_pi_eval_image univ s)
state_before: case mpr
X : Type u_1
Y : Type u_2
inst✝⁵ : TopologicalSpace X
inst✝⁴ : FirstCountableTopology X
Z : Type u_3
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Z
ι : Type u_4
π : ι → Type u_5
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), T2Space (π i)
s : Set ((i : ι) → π i)
H : IsClosed s ∧ ∀ (i : ι), IsCompact (eval i '' s)
⊢ IsCompact s
state_after: no goals
Theorem: Collinear.coplanar_insert
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

tactic: have : FiniteDimensional k { x // x ∈ vectorSpan k s } := h.finiteDimensional_vectorSpan
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : Collinear k s
p : P
⊢ Coplanar k (insert p s)
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : Collinear k s
p : P
this : FiniteDimensional k ↥(vectorSpan k s)
⊢ Coplanar k (insert p s)

tactic: rw [coplanar_iff_finrank_le_two]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : Collinear k s
p : P
this : FiniteDimensional k ↥(vectorSpan k s)
⊢ Coplanar k (insert p s)
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : Collinear k s
p : P
this : FiniteDimensional k ↥(vectorSpan k s)
⊢ finrank k ↥(vectorSpan k (insert p s)) ≤ 2

tactic: exact (finrank_vectorSpan_insert_le_set k s p).trans (add_le_add_right h.finrank_le_one _)
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : Collinear k s
p : P
this : FiniteDimensional k ↥(vectorSpan k s)
⊢ finrank k ↥(vectorSpan k (insert p s)) ≤ 2
state_after: no goals
Theorem: SimpleGraph.Subgraph.Connected.nonempty
File: Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean

tactic: rw [H.connected_iff] at h
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Connected
⊢ H.verts.Nonempty
state_after: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Preconnected ∧ H.verts.Nonempty
⊢ H.verts.Nonempty

tactic: exact h.2
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Preconnected ∧ H.verts.Nonempty
⊢ H.verts.Nonempty
state_after: no goals
Theorem: Batteries.UnionFind.find_parent_1
File: .lake/packages/batteries/Batteries/Data/UnionFind/Basic.lean

tactic: simp [find, parent]
state_before: self : UnionFind
x : Fin self.size
⊢ (self.find x).fst.parent ↑x = self.rootD ↑x
state_after: self : UnionFind
x : Fin self.size
⊢ parentD (self.findAux x).s ↑x = self.rootD ↑x

tactic: rw [parentD_findAux, if_pos rfl]
state_before: self : UnionFind
x : Fin self.size
⊢ parentD (self.findAux x).s ↑x = self.rootD ↑x
state_after: no goals
Theorem: ProbabilityTheory.iCondIndep_iff
File: Mathlib/Probability/Independence/Conditional.lean

tactic: rw [iCondIndep_iff_iCondIndepSets, iCondIndepSets_iff]
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
m : ι → MeasurableSpace Ω
hm : ∀ (i : ι), m i ≤ mΩ
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ iCondIndep m' hm' m μ ↔
    ∀ (s : Finset ι) {f : ι → Set Ω},
      (∀ i ∈ s, MeasurableSet (f i)) →
        μ[(⋂ i ∈ s, f i).indicator fun ω => 1|m'] =ᶠ[ae μ] ∏ i ∈ s, μ[(f i).indicator fun ω => 1|m']
state_after: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
m : ι → MeasurableSpace Ω
hm : ∀ (i : ι), m i ≤ mΩ
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ (∀ (s : Finset ι) {f : ι → Set Ω},
      (∀ i ∈ s, f i ∈ {s | MeasurableSet s}) →
        μ[(⋂ i ∈ s, f i).indicator fun ω => 1|m'] =ᶠ[ae μ] ∏ i ∈ s, μ[(f i).indicator fun ω => 1|m']) ↔
    ∀ (s : Finset ι) {f : ι → Set Ω},
      (∀ i ∈ s, MeasurableSet (f i)) →
        μ[(⋂ i ∈ s, f i).indicator fun ω => 1|m'] =ᶠ[ae μ] ∏ i ∈ s, μ[(f i).indicator fun ω => 1|m']

case hπ
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
m : ι → MeasurableSpace Ω
hm : ∀ (i : ι), m i ≤ mΩ
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ ∀ (i : ι), ∀ s ∈ {s | MeasurableSet s}, MeasurableSet s

tactic: rfl
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
m : ι → MeasurableSpace Ω
hm : ∀ (i : ι), m i ≤ mΩ
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ (∀ (s : Finset ι) {f : ι → Set Ω},
      (∀ i ∈ s, f i ∈ {s | MeasurableSet s}) →
        μ[(⋂ i ∈ s, f i).indicator fun ω => 1|m'] =ᶠ[ae μ] ∏ i ∈ s, μ[(f i).indicator fun ω => 1|m']) ↔
    ∀ (s : Finset ι) {f : ι → Set Ω},
      (∀ i ∈ s, MeasurableSet (f i)) →
        μ[(⋂ i ∈ s, f i).indicator fun ω => 1|m'] =ᶠ[ae μ] ∏ i ∈ s, μ[(f i).indicator fun ω => 1|m']
state_after: no goals

tactic: exact hm
state_before: case hπ
Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
m : ι → MeasurableSpace Ω
hm : ∀ (i : ι), m i ≤ mΩ
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ ∀ (i : ι), ∀ s ∈ {s | MeasurableSet s}, MeasurableSet s
state_after: no goals
Theorem: SimpleGraph.deleteEdges_edgeSet
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: ext
state_before: ι : Sort u_1
V : Type u
G✝ : SimpleGraph V
a b c u v w : V
e : Sym2 V
H : SimpleGraph V
s s₁ s₂ : Set (Sym2 V)
G G' : SimpleGraph V
⊢ G.deleteEdges G'.edgeSet = G \ G'
state_after: case Adj.h.h.a
ι : Sort u_1
V : Type u
G✝ : SimpleGraph V
a b c u v w : V
e : Sym2 V
H : SimpleGraph V
s s₁ s₂ : Set (Sym2 V)
G G' : SimpleGraph V
x✝¹ x✝ : V
⊢ (G.deleteEdges G'.edgeSet).Adj x✝¹ x✝ ↔ (G \ G').Adj x✝¹ x✝

tactic: simp
state_before: case Adj.h.h.a
ι : Sort u_1
V : Type u
G✝ : SimpleGraph V
a b c u v w : V
e : Sym2 V
H : SimpleGraph V
s s₁ s₂ : Set (Sym2 V)
G G' : SimpleGraph V
x✝¹ x✝ : V
⊢ (G.deleteEdges G'.edgeSet).Adj x✝¹ x✝ ↔ (G \ G').Adj x✝¹ x✝
state_after: no goals
Theorem: Ordinal.cof_bsup_le
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [← o.card.lift_id]
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{u}
⊢ (∀ (i : Ordinal.{u}) (h : i < o), f i h < o.bsup f) → (o.bsup f).cof ≤ o.card
state_after: α : Type u_1
r : α → α → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{u}
⊢ (∀ (i : Ordinal.{u}) (h : i < o), f i h < o.bsup f) → (o.bsup f).cof ≤ Cardinal.lift.{u, u} o.card

tactic: exact cof_bsup_le_lift
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{u}
⊢ (∀ (i : Ordinal.{u}) (h : i < o), f i h < o.bsup f) → (o.bsup f).cof ≤ Cardinal.lift.{u, u} o.card
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.nonsingularLift_addMap
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rcases P
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : PointClass F
hP : W.NonsingularLift P
hQ : W.NonsingularLift Q
⊢ W.NonsingularLift (W.addMap P Q)
state_after: case mk
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : PointClass F
hQ : W.NonsingularLift Q
a✝ : Fin 3 → F
hP : W.NonsingularLift (Quot.mk Setoid.r a✝)
⊢ W.NonsingularLift (W.addMap (Quot.mk Setoid.r a✝) Q)

tactic: rcases Q
state_before: case mk
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : PointClass F
hQ : W.NonsingularLift Q
a✝ : Fin 3 → F
hP : W.NonsingularLift (Quot.mk Setoid.r a✝)
⊢ W.NonsingularLift (W.addMap (Quot.mk Setoid.r a✝) Q)
state_after: case mk.mk
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : PointClass F
a✝¹ : Fin 3 → F
hP : W.NonsingularLift (Quot.mk Setoid.r a✝¹)
a✝ : Fin 3 → F
hQ : W.NonsingularLift (Quot.mk Setoid.r a✝)
⊢ W.NonsingularLift (W.addMap (Quot.mk Setoid.r a✝¹) (Quot.mk Setoid.r a✝))

tactic: exact nonsingular_add hP hQ
state_before: case mk.mk
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : PointClass F
a✝¹ : Fin 3 → F
hP : W.NonsingularLift (Quot.mk Setoid.r a✝¹)
a✝ : Fin 3 → F
hQ : W.NonsingularLift (Quot.mk Setoid.r a✝)
⊢ W.NonsingularLift (W.addMap (Quot.mk Setoid.r a✝¹) (Quot.mk Setoid.r a✝))
state_after: no goals