1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Hyperreal.IsSt.map₂
File: Mathlib/Data/Real/Hyperreal.lean

tactic: rcases ofSeq_surjective x with ⟨x, rfl⟩
state_before: x y : ℝ*
r s : ℝ
hxr : x.IsSt r
hys : y.IsSt s
f : ℝ → ℝ → ℝ
hf : ContinuousAt (Function.uncurry f) (r, s)
⊢ IsSt (Germ.map₂ f x y) (f r s)
state_after: case intro
y : ℝ*
r s : ℝ
hys : y.IsSt s
f : ℝ → ℝ → ℝ
hf : ContinuousAt (Function.uncurry f) (r, s)
x : ℕ → ℝ
hxr : (ofSeq x).IsSt r
⊢ IsSt (Germ.map₂ f (ofSeq x) y) (f r s)

tactic: rcases ofSeq_surjective y with ⟨y, rfl⟩
state_before: case intro
y : ℝ*
r s : ℝ
hys : y.IsSt s
f : ℝ → ℝ → ℝ
hf : ContinuousAt (Function.uncurry f) (r, s)
x : ℕ → ℝ
hxr : (ofSeq x).IsSt r
⊢ IsSt (Germ.map₂ f (ofSeq x) y) (f r s)
state_after: case intro.intro
r s : ℝ
f : ℝ → ℝ → ℝ
hf : ContinuousAt (Function.uncurry f) (r, s)
x : ℕ → ℝ
hxr : (ofSeq x).IsSt r
y : ℕ → ℝ
hys : (ofSeq y).IsSt s
⊢ IsSt (Germ.map₂ f (ofSeq x) (ofSeq y)) (f r s)

tactic: rw [isSt_ofSeq_iff_tendsto] at hxr hys
state_before: case intro.intro
r s : ℝ
f : ℝ → ℝ → ℝ
hf : ContinuousAt (Function.uncurry f) (r, s)
x : ℕ → ℝ
hxr : (ofSeq x).IsSt r
y : ℕ → ℝ
hys : (ofSeq y).IsSt s
⊢ IsSt (Germ.map₂ f (ofSeq x) (ofSeq y)) (f r s)
state_after: case intro.intro
r s : ℝ
f : ℝ → ℝ → ℝ
hf : ContinuousAt (Function.uncurry f) (r, s)
x : ℕ → ℝ
hxr : Tendsto x (↑(hyperfilter ℕ)) (𝓝 r)
y : ℕ → ℝ
hys : Tendsto y (↑(hyperfilter ℕ)) (𝓝 s)
⊢ IsSt (Germ.map₂ f (ofSeq x) (ofSeq y)) (f r s)

tactic: exact isSt_ofSeq_iff_tendsto.2 <| hf.tendsto.comp (hxr.prod_mk_nhds hys)
state_before: case intro.intro
r s : ℝ
f : ℝ → ℝ → ℝ
hf : ContinuousAt (Function.uncurry f) (r, s)
x : ℕ → ℝ
hxr : Tendsto x (↑(hyperfilter ℕ)) (𝓝 r)
y : ℕ → ℝ
hys : Tendsto y (↑(hyperfilter ℕ)) (𝓝 s)
⊢ IsSt (Germ.map₂ f (ofSeq x) (ofSeq y)) (f r s)
state_after: no goals
Theorem: Polynomial.support_X
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [← pow_one X, support_X_pow H 1]
state_before: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
H : ¬1 = 0
⊢ X.support = {1}
state_after: no goals
Theorem: FermatLastTheoremForThreeGen.exists_Solution_of_Solution'
File: Mathlib/NumberTheory/FLT/Three.lean

tactic: obtain ⟨a, b, H, coprime, ha, hb, hab⟩ := ex_cube_add_cube_eq_and_isCoprime_and_not_dvd_and_dvd S'
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
⊢ ∃ S₁, S₁.multiplicity = S'.multiplicity
state_after: case intro.intro.intro.intro.intro.intro
K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
a b : 𝓞 K
H : a ^ 3 + b ^ 3 = ↑S'.u * S'.c ^ 3
coprime : IsCoprime a b
ha : ¬λ ∣ a
hb : ¬λ ∣ b
hab : λ ^ 2 ∣ a + b
⊢ ∃ S₁, S₁.multiplicity = S'.multiplicity

tactic: exact ⟨
{ a := a
  b := b
  c := S'.c
  u := S'.u
  ha := ha
  hb := hb
  hc := S'.hc
  coprime := coprime
  hcdvd := S'.hcdvd
  H := H
  hab := hab }, rfl⟩
state_before: case intro.intro.intro.intro.intro.intro
K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
a b : 𝓞 K
H : a ^ 3 + b ^ 3 = ↑S'.u * S'.c ^ 3
coprime : IsCoprime a b
ha : ¬λ ∣ a
hb : ¬λ ∣ b
hab : λ ^ 2 ∣ a + b
⊢ ∃ S₁, S₁.multiplicity = S'.multiplicity
state_after: no goals
Theorem: Nat.bit_mod_two
File: Mathlib/Data/Nat/Bitwise.lean

tactic: simp only [bit, ite_apply, bit1, bit0, ← mul_two, Bool.cond_eq_ite]
state_before: f : Bool → Bool → Bool
a : Bool
x : ℕ
⊢ bit a x % 2 = if a = true then 1 else 0
state_after: f : Bool → Bool → Bool
a : Bool
x : ℕ
⊢ (if a = true then x * 2 + 1 else x * 2) % 2 = if a = true then 1 else 0

tactic: split_ifs <;> simp [Nat.add_mod]
state_before: f : Bool → Bool → Bool
a : Bool
x : ℕ
⊢ (if a = true then x * 2 + 1 else x * 2) % 2 = if a = true then 1 else 0
state_after: no goals
Theorem: Int.isUnit_iff_natAbs_eq
File: Mathlib/Algebra/Group/Int.lean

tactic: simp [natAbs_eq_iff, isUnit_iff]
state_before: u v : ℤ
⊢ IsUnit u ↔ u.natAbs = 1
state_after: no goals
Theorem: List.kunion_nil
File: Mathlib/Data/List/Sigma.lean

tactic: rw [kunion, kerase_nil, kunion_nil]
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
head✝ : Sigma β
l : List (Sigma β)
⊢ (head✝ :: l).kunion [] = head✝ :: l
state_after: no goals
Theorem: two_mul
File: Mathlib/Algebra/Ring/Defs.lean

tactic: rw [one_mul]
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝ : NonAssocSemiring α
n : α
⊢ 1 * n + 1 * n = n + n
state_after: no goals
Theorem: Topology.IsUpperSet.closure_singleton
File: Mathlib/Topology/Order/UpperLowerSetTopology.lean

tactic: rw [closure_eq_lowerClosure, lowerClosure_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : Topology.IsUpperSet α
s : Set α
a : α
⊢ closure {a} = Iic a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : Topology.IsUpperSet α
s : Set α
a : α
⊢ ↑(LowerSet.Iic a) = Iic a

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : Topology.IsUpperSet α
s : Set α
a : α
⊢ ↑(LowerSet.Iic a) = Iic a
state_after: no goals
Theorem: Finsupp.lcongr_symm
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: ext
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
ι : Type u_7
κ : Type u_8
e₁ : ι ≃ κ
e₂ : M ≃ₗ[R] N
⊢ (lcongr e₁ e₂).symm = lcongr e₁.symm e₂.symm
state_after: case h.h
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
ι : Type u_7
κ : Type u_8
e₁ : ι ≃ κ
e₂ : M ≃ₗ[R] N
x✝ : κ →₀ N
a✝ : ι
⊢ ((lcongr e₁ e₂).symm x✝) a✝ = ((lcongr e₁.symm e₂.symm) x✝) a✝

tactic: rfl
state_before: case h.h
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
ι : Type u_7
κ : Type u_8
e₁ : ι ≃ κ
e₂ : M ≃ₗ[R] N
x✝ : κ →₀ N
a✝ : ι
⊢ ((lcongr e₁ e₂).symm x✝) a✝ = ((lcongr e₁.symm e₂.symm) x✝) a✝
state_after: no goals
Theorem: RatFunc.laurent_X
File: Mathlib/FieldTheory/Laurent.lean

tactic: rw [← algebraMap_X, laurent_algebraMap, taylor_X, _root_.map_add, algebraMap_C]
state_before: R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
⊢ (laurent r) X = X + C r
state_after: no goals
Theorem: List.map_ofFn
File: Mathlib/Data/List/OfFn.lean

tactic: simp
state_before: α : Type u
β : Type u_1
n : ℕ
f : Fin n → α
g : α → β
⊢ (map g (ofFn f)).length = (ofFn (g ∘ f)).length
state_after: no goals

tactic: simp
state_before: α : Type u
β : Type u_1
n : ℕ
f : Fin n → α
g : α → β
i : ℕ
h : i < (map g (ofFn f)).length
h' : i < (ofFn (g ∘ f)).length
⊢ (map g (ofFn f)).get ⟨i, h⟩ = (ofFn (g ∘ f)).get ⟨i, h'⟩
state_after: no goals
Theorem: FractionalIdeal.mem_span_mul_finite_of_mem_mul
File: Mathlib/RingTheory/FractionalIdeal/Operations.lean

tactic: simpa using mem_coe.mpr hx
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
P' : Type u_3
inst✝³ : CommRing P'
inst✝² : Algebra R P'
loc' : IsLocalization S P'
P'' : Type u_4
inst✝¹ : CommRing P''
inst✝ : Algebra R P''
loc'' : IsLocalization S P''
I✝ J✝ : FractionalIdeal S P
g : P →ₐ[R] P'
I J : FractionalIdeal S P
x : P
hx : x ∈ I * J
⊢ x ∈ ↑I * ↑J
state_after: no goals
Theorem: Inducing.isClosed_iff'
File: Mathlib/Topology/Maps.lean

tactic: rw [hf.induced, isClosed_induced_iff']
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hf : Inducing f
s : Set X
⊢ IsClosed s ↔ ∀ (x : X), f x ∈ closure (f '' s) → x ∈ s
state_after: no goals
Theorem: CategoryTheory.Limits.coprod.map_map
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: ext <;> simp
state_before: C : Type u
inst✝³ : Category.{v, u} C
X Y A₁ A₂ A₃ B₁ B₂ B₃ : C
inst✝² : HasBinaryCoproduct A₁ B₁
inst✝¹ : HasBinaryCoproduct A₂ B₂
inst✝ : HasBinaryCoproduct A₃ B₃
f : A₁ ⟶ A₂
g : B₁ ⟶ B₂
h : A₂ ⟶ A₃
k : B₂ ⟶ B₃
⊢ map f g ≫ map h k = map (f ≫ h) (g ≫ k)
state_after: no goals
Theorem: Set.preimage_const_mul_Ico
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [← Ici_inter_Iio, h]
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
h : 0 < c
⊢ (fun x => c * x) ⁻¹' Ico a b = Ico (a / c) (b / c)
state_after: no goals
Theorem: PrimeMultiset.to_ofNatMultiset
File: Mathlib/Data/PNat/Factors.lean

tactic: dsimp [ofNatMultiset, toNatMultiset]
state_before: v : Multiset ℕ
h : ∀ p ∈ v, Nat.Prime p
⊢ (ofNatMultiset v h).toNatMultiset = v
state_after: v : Multiset ℕ
h : ∀ p ∈ v, Nat.Prime p
⊢ Multiset.map Coe.coe (Multiset.pmap (fun p hp => ⟨p, hp⟩) v h) = v

tactic: have : (fun p h => (Coe.coe : Nat.Primes → ℕ) ⟨p, h⟩) = fun p _ => id p := by
  funext p h
  rfl
state_before: v : Multiset ℕ
h : ∀ p ∈ v, Nat.Prime p
⊢ Multiset.map Coe.coe (Multiset.pmap (fun p hp => ⟨p, hp⟩) v h) = v
state_after: v : Multiset ℕ
h : ∀ p ∈ v, Nat.Prime p
this : (fun p h => Coe.coe ⟨p, h⟩) = fun p x => id p
⊢ Multiset.map Coe.coe (Multiset.pmap (fun p hp => ⟨p, hp⟩) v h) = v

tactic: rw [Multiset.map_pmap, this, Multiset.pmap_eq_map, Multiset.map_id]
state_before: v : Multiset ℕ
h : ∀ p ∈ v, Nat.Prime p
this : (fun p h => Coe.coe ⟨p, h⟩) = fun p x => id p
⊢ Multiset.map Coe.coe (Multiset.pmap (fun p hp => ⟨p, hp⟩) v h) = v
state_after: no goals

tactic: funext p h
state_before: v : Multiset ℕ
h : ∀ p ∈ v, Nat.Prime p
⊢ (fun p h => Coe.coe ⟨p, h⟩) = fun p x => id p
state_after: case h.h
v : Multiset ℕ
h✝ : ∀ p ∈ v, Nat.Prime p
p : ℕ
h : Nat.Prime p
⊢ Coe.coe ⟨p, h⟩ = id p

tactic: rfl
state_before: case h.h
v : Multiset ℕ
h✝ : ∀ p ∈ v, Nat.Prime p
p : ℕ
h : Nat.Prime p
⊢ Coe.coe ⟨p, h⟩ = id p
state_after: no goals
Theorem: Polynomial.natDegree_eraseLead_le_of_nextCoeff_eq_zero
File: Mathlib/Algebra/Polynomial/EraseLead.lean

tactic: refine natDegree_le_pred (n := f.natDegree - 1) (eraseLead_natDegree_le f) ?_
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f.nextCoeff = 0
⊢ f.eraseLead.natDegree ≤ f.natDegree - 2
state_after: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f.nextCoeff = 0
⊢ f.eraseLead.coeff (f.natDegree - 1) = 0

tactic: rw [nextCoeff_eq_zero, natDegree_eq_zero] at h
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f.nextCoeff = 0
⊢ f.eraseLead.coeff (f.natDegree - 1) = 0
state_after: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : (∃ x, C x = f) ∨ 0 < f.natDegree ∧ f.coeff (f.natDegree - 1) = 0
⊢ f.eraseLead.coeff (f.natDegree - 1) = 0

tactic: obtain ⟨a, rfl⟩ | ⟨hf, h⟩ := h
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : (∃ x, C x = f) ∨ 0 < f.natDegree ∧ f.coeff (f.natDegree - 1) = 0
⊢ f.eraseLead.coeff (f.natDegree - 1) = 0
state_after: case inl.intro
R : Type u_1
inst✝ : Semiring R
a : R
⊢ (C a).eraseLead.coeff ((C a).natDegree - 1) = 0

case inr.intro
R : Type u_1
inst✝ : Semiring R
f : R[X]
hf : 0 < f.natDegree
h : f.coeff (f.natDegree - 1) = 0
⊢ f.eraseLead.coeff (f.natDegree - 1) = 0

tactic: rw [eraseLead_coeff_of_ne _ (tsub_lt_self hf zero_lt_one).ne, ← nextCoeff_of_natDegree_pos hf]
state_before: case inr.intro
R : Type u_1
inst✝ : Semiring R
f : R[X]
hf : 0 < f.natDegree
h : f.coeff (f.natDegree - 1) = 0
⊢ f.eraseLead.coeff (f.natDegree - 1) = 0
state_after: case inr.intro
R : Type u_1
inst✝ : Semiring R
f : R[X]
hf : 0 < f.natDegree
h : f.coeff (f.natDegree - 1) = 0
⊢ f.nextCoeff = 0

tactic: simp [nextCoeff_eq_zero, h, eq_zero_or_pos]
state_before: case inr.intro
R : Type u_1
inst✝ : Semiring R
f : R[X]
hf : 0 < f.natDegree
h : f.coeff (f.natDegree - 1) = 0
⊢ f.nextCoeff = 0
state_after: no goals

tactic: simp
state_before: case inl.intro
R : Type u_1
inst✝ : Semiring R
a : R
⊢ (C a).eraseLead.coeff ((C a).natDegree - 1) = 0
state_after: no goals
Theorem: Fin.castSucc_predAbove_castSucc
File: Mathlib/Data/Fin/Basic.lean

tactic: obtain h | h := a.castSucc.lt_or_le b
state_before: n✝ m n : ℕ
a : Fin n
b : Fin (n + 1)
⊢ a.castSucc.predAbove b.castSucc = (a.predAbove b).castSucc
state_after: case inl
n✝ m n : ℕ
a : Fin n
b : Fin (n + 1)
h : a.castSucc < b
⊢ a.castSucc.predAbove b.castSucc = (a.predAbove b).castSucc

case inr
n✝ m n : ℕ
a : Fin n
b : Fin (n + 1)
h : b ≤ a.castSucc
⊢ a.castSucc.predAbove b.castSucc = (a.predAbove b).castSucc

tactic: rw [predAbove_of_castSucc_lt _ _ h, predAbove_castSucc_of_lt _ _ h,
  castSucc_pred_eq_pred_castSucc]
state_before: case inl
n✝ m n : ℕ
a : Fin n
b : Fin (n + 1)
h : a.castSucc < b
⊢ a.castSucc.predAbove b.castSucc = (a.predAbove b).castSucc
state_after: no goals

tactic: rw [predAbove_of_le_castSucc _ _ h, predAbove_castSucc_of_le _ _ h, castSucc_castPred]
state_before: case inr
n✝ m n : ℕ
a : Fin n
b : Fin (n + 1)
h : b ≤ a.castSucc
⊢ a.castSucc.predAbove b.castSucc = (a.predAbove b).castSucc
state_after: no goals
Theorem: Doset.doset_eq_image2
File: Mathlib/GroupTheory/DoubleCoset.lean

tactic: simp_rw [doset, Set.mul_singleton, ← Set.image2_mul, Set.image2_image_left]
state_before: G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
a : α
s t : Set α
⊢ doset a s t = Set.image2 (fun x x_1 => x * a * x_1) s t
state_after: no goals
Theorem: Real.exp_eq_exp_ℝ
File: Mathlib/Analysis/SpecialFunctions/Exponential.lean

tactic: ext x
state_before: ⊢ rexp = NormedSpace.exp ℝ
state_after: case h
x : ℝ
⊢ rexp x = NormedSpace.exp ℝ x

tactic: exact mod_cast congr_fun Complex.exp_eq_exp_ℂ x
state_before: case h
x : ℝ
⊢ rexp x = NormedSpace.exp ℝ x
state_after: no goals
Theorem: Part.ne_none_iff
File: Mathlib/Data/Part.lean

tactic: constructor
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
o : Part α
⊢ o ≠ none ↔ ∃ x, o = some x
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
o : Part α
⊢ o ≠ none → ∃ x, o = some x

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
o : Part α
⊢ (∃ x, o = some x) → o ≠ none

tactic: rw [Ne, eq_none_iff', not_not]
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
o : Part α
⊢ o ≠ none → ∃ x, o = some x
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
o : Part α
⊢ o.Dom → ∃ x, o = some x

tactic: exact fun h => ⟨o.get h, eq_some_iff.2 (get_mem h)⟩
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
o : Part α
⊢ o.Dom → ∃ x, o = some x
state_after: no goals

tactic: rintro ⟨x, rfl⟩
state_before: case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
o : Part α
⊢ (∃ x, o = some x) → o ≠ none
state_after: case mpr.intro
α : Type u_1
β : Type u_2
γ : Type u_3
x : α
⊢ some x ≠ none

tactic: apply some_ne_none
state_before: case mpr.intro
α : Type u_1
β : Type u_2
γ : Type u_3
x : α
⊢ some x ≠ none
state_after: no goals
Theorem: SimpleGraph.edgeFinset_subset_edgeFinset
File: Mathlib/Combinatorics/SimpleGraph/Finite.lean

tactic: simp
state_before: V : Type u_1
G : SimpleGraph V
e : Sym2 V
G₁ G₂ : SimpleGraph V
inst✝² : Fintype ↑G.edgeSet
inst✝¹ : Fintype ↑G₁.edgeSet
inst✝ : Fintype ↑G₂.edgeSet
⊢ G₁.edgeFinset ⊆ G₂.edgeFinset ↔ G₁ ≤ G₂
state_after: no goals
Theorem: iSup_eq_dif
File: Mathlib/Order/CompleteLattice.lean

tactic: by_cases h : p <;> simp [h]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝¹ : CompleteLattice α
f g s t : ι → α
a✝ b : α
p : Prop
inst✝ : Decidable p
a : p → α
⊢ ⨆ (h : p), a h = if h : p then a h else ⊥
state_after: no goals
Theorem: intervalIntegral.integral_Iic_add_Ioi
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: convert (integral_union (Iic_disjoint_Ioi <| Eq.le rfl) measurableSet_Ioi h_left h_right).symm
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
h_left : IntegrableOn f (Iic b) μ
h_right : IntegrableOn f (Ioi b) μ
⊢ ∫ (x : ℝ) in Iic b, f x ∂μ + ∫ (x : ℝ) in Ioi b, f x ∂μ = ∫ (x : ℝ), f x ∂μ
state_after: case h.e'_3.h.e'_6
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
h_left : IntegrableOn f (Iic b) μ
h_right : IntegrableOn f (Ioi b) μ
⊢ μ = μ.restrict (Iic b ∪ Ioi b)

tactic: rw [Iic_union_Ioi, Measure.restrict_univ]
state_before: case h.e'_3.h.e'_6
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
h_left : IntegrableOn f (Iic b) μ
h_right : IntegrableOn f (Ioi b) μ
⊢ μ = μ.restrict (Iic b ∪ Ioi b)
state_after: no goals
Theorem: Finsupp.embDomain_comapDomain
File: Mathlib/Data/Finsupp/Basic.lean

tactic: ext b
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ↪ β
g : β →₀ M
hg : ↑g.support ⊆ Set.range ⇑f
⊢ embDomain f (comapDomain (⇑f) g ⋯) = g
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ↪ β
g : β →₀ M
hg : ↑g.support ⊆ Set.range ⇑f
b : β
⊢ (embDomain f (comapDomain (⇑f) g ⋯)) b = g b

tactic: by_cases hb : b ∈ Set.range f
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ↪ β
g : β →₀ M
hg : ↑g.support ⊆ Set.range ⇑f
b : β
⊢ (embDomain f (comapDomain (⇑f) g ⋯)) b = g b
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ↪ β
g : β →₀ M
hg : ↑g.support ⊆ Set.range ⇑f
b : β
hb : b ∈ Set.range ⇑f
⊢ (embDomain f (comapDomain (⇑f) g ⋯)) b = g b

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ↪ β
g : β →₀ M
hg : ↑g.support ⊆ Set.range ⇑f
b : β
hb : b ∉ Set.range ⇑f
⊢ (embDomain f (comapDomain (⇑f) g ⋯)) b = g b

tactic: obtain ⟨a, rfl⟩ := hb
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ↪ β
g : β →₀ M
hg : ↑g.support ⊆ Set.range ⇑f
b : β
hb : b ∈ Set.range ⇑f
⊢ (embDomain f (comapDomain (⇑f) g ⋯)) b = g b
state_after: case pos.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ↪ β
g : β →₀ M
hg : ↑g.support ⊆ Set.range ⇑f
a : α
⊢ (embDomain f (comapDomain (⇑f) g ⋯)) (f a) = g (f a)

tactic: rw [embDomain_apply, comapDomain_apply]
state_before: case pos.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ↪ β
g : β →₀ M
hg : ↑g.support ⊆ Set.range ⇑f
a : α
⊢ (embDomain f (comapDomain (⇑f) g ⋯)) (f a) = g (f a)
state_after: no goals

tactic: rw [embDomain_notin_range _ _ _ hb, hg]
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ↪ β
g : β →₀ M
b : β
hb : b ∉ Set.range ⇑f
hg : g b = 0
⊢ (embDomain f (comapDomain (⇑f) g ⋯)) b = g b
state_after: no goals
Theorem: groupCohomology.map_one_of_isMulOneCocycle
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

tactic: simpa only [mul_one, one_smul, self_eq_mul_right] using hf 1 1
state_before: k G✝ : Type u
inst✝⁴ : CommRing k
inst✝³ : Group G✝
A : Rep k G✝
G : Type u_1
M : Type u_2
inst✝² : Monoid G
inst✝¹ : CommGroup M
inst✝ : MulAction G M
f : G → M
hf : IsMulOneCocycle f
⊢ f 1 = 1
state_after: no goals
Theorem: HomologicalComplex.singleObjOpcyclesSelfIso_hom_naturality
File: Mathlib/Algebra/Homology/SingleHomology.lean

tactic: rw [← cancel_epi (singleObjCyclesSelfIso c j A).hom,
  singleObjCyclesSelfIso_hom_singleObjOpcyclesSelfIso_hom_assoc, p_opcyclesMap,
  single_map_f_self, assoc, assoc, singleObjCyclesSelfIso_hom,
  singleObjOpcyclesSelfIso_hom, assoc]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasZeroObject C
ι : Type u_1
inst✝ : DecidableEq ι
c : ComplexShape ι
j : ι
A B : C
f : A ⟶ B
⊢ (singleObjOpcyclesSelfIso c j A).hom ≫ opcyclesMap ((single C c j).map f) j = f ≫ (singleObjOpcyclesSelfIso c j B).hom
state_after: no goals
Theorem: EuclideanGeometry.sin_oangle_left_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: have hs : (∡ p₃ p₁ p₂).sign = 1 := by rw [← oangle_rotate_sign, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
⊢ (∡ p₃ p₁ p₂).sin = dist p₃ p₂ / dist p₁ p₃
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₃ p₁ p₂).sign = 1
⊢ (∡ p₃ p₁ p₂).sin = dist p₃ p₂ / dist p₁ p₃

tactic: rw [oangle_eq_angle_of_sign_eq_one hs, angle_comm, Real.Angle.sin_coe,
  sin_angle_of_angle_eq_pi_div_two (angle_rev_eq_pi_div_two_of_oangle_eq_pi_div_two h)
    (Or.inr (left_ne_of_oangle_eq_pi_div_two h)),
  dist_comm p₁ p₃]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₃ p₁ p₂).sign = 1
⊢ (∡ p₃ p₁ p₂).sin = dist p₃ p₂ / dist p₁ p₃
state_after: no goals

tactic: rw [← oangle_rotate_sign, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
⊢ (∡ p₃ p₁ p₂).sign = 1
state_after: no goals
Theorem: LieModule.isCompl_weightSpaceOf_zero_posFittingCompOf
File: Mathlib/Algebra/Lie/Weights/Basic.lean

tactic: simpa only [isCompl_iff, codisjoint_iff, disjoint_iff, ← LieSubmodule.coe_toSubmodule_eq_iff,
  LieSubmodule.sup_coe_toSubmodule, LieSubmodule.inf_coe_toSubmodule,
  LieSubmodule.top_coeSubmodule, LieSubmodule.bot_coeSubmodule, coe_weightSpaceOf_zero] using
  (toEnd R L M x).isCompl_iSup_ker_pow_iInf_range_pow
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : LieAlgebra.IsNilpotent R L
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
inst✝¹ : IsNoetherian R M
inst✝ : IsArtinian R M
x : L
⊢ IsCompl (weightSpaceOf M 0 x) (posFittingCompOf R M x)
state_after: no goals