tasksource/leandojo huggingface dataset:
Theorem: NormedAddGroupHom.norm_id_of_nontrivial_seminorm
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: let ⟨x, hx⟩ := h
state_before: V : Type u_1
V₁ : Type ?u.320008
V₂ : Type ?u.320011
V₃ : Type ?u.320014
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
h : ∃ x, ‖x‖ ≠ 0
⊢ 1 ≤ ‖id V‖

tactic: have := (id V).ratio_le_opNorm x
state_before: V : Type u_1
V₁ : Type ?u.320008
V₂ : Type ?u.320011
V₃ : Type ?u.320014
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
h : ∃ x, ‖x‖ ≠ 0
x : V
hx : ‖x‖ ≠ 0
⊢ 1 ≤ ‖id V‖

tactic: rwa [id_apply, div_self hx] at this
state_before: V : Type u_1
V₁ : Type ?u.320008
V₂ : Type ?u.320011
V₃ : Type ?u.320014
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
h : ∃ x, ‖x‖ ≠ 0
x : V
hx : ‖x‖ ≠ 0
this : ‖↑(id V) x‖ / ‖x‖ ≤ ‖id V‖
⊢ 1 ≤ ‖id V‖
Theorem: Finset.card_eq_one
File: Mathlib/Data/Finset/Card.lean

tactic: cases s
state_before: α : Type u_1
β : Type ?u.46876
s t : Finset α
f : α → β
n : ℕ
⊢ card s = 1 ↔ ∃ a, s = {a}

tactic: simp only [Multiset.card_eq_one, Finset.card, ← val_inj, singleton_val]
state_before: case mk
α : Type u_1
β : Type ?u.46876
t : Finset α
f : α → β
n : ℕ
val✝ : Multiset α
nodup✝ : Nodup val✝
⊢ card { val := val✝, nodup := nodup✝ } = 1 ↔ ∃ a, { val := val✝, nodup := nodup✝ } = {a}
Theorem: UniqueDiffWithinAt.pi
File: Mathlib/Analysis/Calculus/TangentCone.lean

tactic: classical
rw [← Set.univ_pi_piecewise_univ]
refine' UniqueDiffWithinAt.univ_pi ι E _ _ fun i => _
by_cases hi : i ∈ I <;> simp [*, uniqueDiffWithinAt_univ]
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.151877
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.151972
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.152062
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
I : Set ι
h : ∀ (i : ι), i ∈ I → UniqueDiffWithinAt 𝕜 (s i) (x i)
⊢ UniqueDiffWithinAt 𝕜 (Set.pi I s) x

tactic: rw [← Set.univ_pi_piecewise_univ]
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.151877
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.151972
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.152062
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
I : Set ι
h : ∀ (i : ι), i ∈ I → UniqueDiffWithinAt 𝕜 (s i) (x i)
⊢ UniqueDiffWithinAt 𝕜 (Set.pi I s) x

tactic: refine' UniqueDiffWithinAt.univ_pi ι E _ _ fun i => _
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.151877
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.151972
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.152062
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
I : Set ι
h : ∀ (i : ι), i ∈ I → UniqueDiffWithinAt 𝕜 (s i) (x i)
⊢ UniqueDiffWithinAt 𝕜 (Set.pi univ (piecewise I s fun x => univ)) x

tactic: by_cases hi : i ∈ I <;> simp [*, uniqueDiffWithinAt_univ]
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.151877
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.151972
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.152062
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
I : Set ι
h : ∀ (i : ι), i ∈ I → UniqueDiffWithinAt 𝕜 (s i) (x i)
i : ι
⊢ UniqueDiffWithinAt 𝕜 (piecewise I s (fun x => univ) i) (x i)
Theorem: Polynomial.sum_add_index
File: Mathlib/Data/Polynomial/Basic.lean

tactic: rcases p with ⟨⟩
state_before: R : Type u
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q✝ : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
p q : R[X]
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
h_add : ∀ (a : ℕ) (b₁ b₂ : R), f a (b₁ + b₂) = f a b₁ + f a b₂
⊢ sum (p + q) f = sum p f + sum q f

tactic: rcases q with ⟨⟩
state_before: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q✝ : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
q : R[X]
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
h_add : ∀ (a : ℕ) (b₁ b₂ : R), f a (b₁ + b₂) = f a b₁ + f a b₂
toFinsupp✝ : AddMonoidAlgebra R ℕ
⊢ sum ({ toFinsupp := toFinsupp✝ } + q) f = sum { toFinsupp := toFinsupp✝ } f + sum q f

tactic: simp only [← ofFinsupp_add, Sum, support, coeff, Pi.add_apply, coe_add]
state_before: case ofFinsupp.ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
h_add : ∀ (a : ℕ) (b₁ b₂ : R), f a (b₁ + b₂) = f a b₁ + f a b₂
toFinsupp✝¹ toFinsupp✝ : AddMonoidAlgebra R ℕ
⊢ sum ({ toFinsupp := toFinsupp✝¹ } + { toFinsupp := toFinsupp✝ }) f =
    sum { toFinsupp := toFinsupp✝¹ } f + sum { toFinsupp := toFinsupp✝ } f

tactic: exact Finsupp.sum_add_index' hf h_add
state_before: case ofFinsupp.ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
h_add : ∀ (a : ℕ) (b₁ b₂ : R), f a (b₁ + b₂) = f a b₁ + f a b₂
toFinsupp✝¹ toFinsupp✝ : AddMonoidAlgebra R ℕ
⊢ sum { toFinsupp := toFinsupp✝¹ + toFinsupp✝ } f =
    sum { toFinsupp := toFinsupp✝¹ } f + sum { toFinsupp := toFinsupp✝ } f
Theorem: dist_le_tsum_of_dist_le_of_tendsto₀
File: Mathlib/Topology/Algebra/InfiniteSum/Real.lean

tactic: simpa only [zero_add] using dist_le_tsum_of_dist_le_of_tendsto d hf hd ha 0
state_before: α : Type u_1
inst✝ : PseudoMetricSpace α
f : ℕ → α
a : α
d : ℕ → ℝ
hf : ∀ (n : ℕ), dist (f n) (f (Nat.succ n)) ≤ d n
hd : Summable d
ha : Tendsto f atTop (𝓝 a)
⊢ dist (f 0) a ≤ tsum d
Theorem: Nat.min_eq_left
File: Std/Data/Nat/Lemmas.lean

tactic: simp [Nat.min_def, h]
state_before: a b : Nat
h : a ≤ b
⊢ min a b = a
Theorem: Polynomial.toFinsupp_eq_one
File: Mathlib/Data/Polynomial/Basic.lean

tactic: rw [← toFinsupp_one, toFinsupp_inj]
state_before: R : Type u
a✝ b : R
m n : ℕ
inst✝ : Semiring R
p q a : R[X]
⊢ a.toFinsupp = 1 ↔ a = 1
Theorem: Multiset.revzip_powersetAux
File: Mathlib/Data/Multiset/Powerset.lean

tactic: rw [revzip, powersetAux_eq_map_coe, ← map_reverse, zip_map, ← revzip, List.mem_map] at h
state_before: α : Type u_1
l : List α
x : Multiset α × Multiset α
h : x ∈ revzip (powersetAux l)
⊢ x.fst + x.snd = ↑l

tactic: simp only [Prod_map, Prod.exists] at h
state_before: α : Type u_1
l : List α
x : Multiset α × Multiset α
h : ∃ a, a ∈ revzip (sublists l) ∧ Prod.map ofList ofList a = x
⊢ x.fst + x.snd = ↑l

tactic: rcases h with ⟨l₁, l₂, h, rfl, rfl⟩
state_before: α : Type u_1
l : List α
x : Multiset α × Multiset α
h : ∃ a b, (a, b) ∈ revzip (sublists l) ∧ (↑a, ↑b) = x
⊢ x.fst + x.snd = ↑l

tactic: exact Quot.sound (revzip_sublists _ _ _ h)
state_before: case intro.intro.intro.refl
α : Type u_1
l l₁ l₂ : List α
h : (l₁, l₂) ∈ revzip (sublists l)
⊢ (↑l₁, ↑l₂).fst + (↑l₁, ↑l₂).snd = ↑l
Theorem: TopologicalSpace.Opens.localHomeomorphSubtypeCoe_target
File: Mathlib/Topology/LocalHomeomorph.lean

tactic: simp only [localHomeomorphSubtypeCoe, Subtype.range_coe_subtype, mfld_simps]
state_before: α : Type u_1
β : Type ?u.112631
γ : Type ?u.112634
δ : Type ?u.112637
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
s : Opens α
inst✝ : Nonempty { x // x ∈ s }
⊢ (localHomeomorphSubtypeCoe s).toLocalEquiv.target = ↑s

tactic: rfl
state_before: α : Type u_1
β : Type ?u.112631
γ : Type ?u.112634
δ : Type ?u.112637
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
s : Opens α
inst✝ : Nonempty { x // x ∈ s }
⊢ {x | x ∈ s.carrier} = ↑s
Theorem: dvd_add_right
File: Mathlib/Algebra/Ring/Divisibility.lean

tactic: rw [add_comm]
state_before: α : Type u_1
β : Type ?u.9814
inst✝ : NonUnitalRing α
a b c : α
h : a ∣ b
⊢ a ∣ b + c ↔ a ∣ c

tactic: exact dvd_add_left h
state_before: α : Type u_1
β : Type ?u.9814
inst✝ : NonUnitalRing α
a b c : α
h : a ∣ b
⊢ a ∣ c + b ↔ a ∣ c
Theorem: InnerProductGeometry.norm_sub_eq_add_norm_iff_angle_eq_pi
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

tactic: refine' ⟨fun h => _, norm_sub_eq_add_norm_of_angle_eq_pi⟩
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ ‖x - y‖ = ‖x‖ + ‖y‖ ↔ angle x y = π

tactic: rw [← inner_eq_neg_mul_norm_iff_angle_eq_pi hx hy]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x - y‖ = ‖x‖ + ‖y‖
⊢ angle x y = π

tactic: obtain ⟨hxy₁, hxy₂⟩ := norm_nonneg (x - y), add_nonneg (norm_nonneg x) (norm_nonneg y)
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x - y‖ = ‖x‖ + ‖y‖
⊢ inner x y = -(‖x‖ * ‖y‖)

tactic: rw [← sq_eq_sq hxy₁ hxy₂, norm_sub_pow_two_real] at h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h : ‖x - y‖ = ‖x‖ + ‖y‖
hxy₁ : 0 ≤ ‖x - y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ inner x y = -(‖x‖ * ‖y‖)

tactic: calc
  ⟪x, y⟫ = (‖x‖ ^ 2 + ‖y‖ ^ 2 - (‖x‖ + ‖y‖) ^ 2) / 2 := by linarith
  _ = -(‖x‖ * ‖y‖) := by ring
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h✝ : ‖x - y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
h : ‖x‖ ^ 2 - 2 * inner x y + ‖y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
hxy₁ : 0 ≤ ‖x - y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ inner x y = -(‖x‖ * ‖y‖)

tactic: linarith
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h✝ : ‖x - y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
h : ‖x‖ ^ 2 - 2 * inner x y + ‖y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
hxy₁ : 0 ≤ ‖x - y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ inner x y = (‖x‖ ^ 2 + ‖y‖ ^ 2 - (‖x‖ + ‖y‖) ^ 2) / 2

tactic: ring
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
hx : x ≠ 0
hy : y ≠ 0
h✝ : ‖x - y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
h : ‖x‖ ^ 2 - 2 * inner x y + ‖y‖ ^ 2 = (‖x‖ + ‖y‖) ^ 2
hxy₁ : 0 ≤ ‖x - y‖
hxy₂ : 0 ≤ ‖x‖ + ‖y‖
⊢ (‖x‖ ^ 2 + ‖y‖ ^ 2 - (‖x‖ + ‖y‖) ^ 2) / 2 = -(‖x‖ * ‖y‖)
Theorem: MvPolynomial.monomial_single_add
File: Mathlib/Data/MvPolynomial/Basic.lean

tactic: rw [X_pow_eq_monomial, monomial_mul, one_mul]
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 : MvPolynomial σ R
⊢ ↑(monomial (Finsupp.single n e + s)) a = X n ^ e * ↑(monomial s) a
Theorem: Multiset.union_le
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [← eq_union_left h₂]
state_before: α : Type u_1
β : Type ?u.168188
γ : Type ?u.168191
inst✝ : DecidableEq α
s t u : Multiset α
a b : α
h₁ : s ≤ u
h₂ : t ≤ u
⊢ s ∪ t ≤ u

tactic: exact union_le_union_right h₁ t
state_before: α : Type u_1
β : Type ?u.168188
γ : Type ?u.168191
inst✝ : DecidableEq α
s t u : Multiset α
a b : α
h₁ : s ≤ u
h₂ : t ≤ u
⊢ s ∪ t ≤ u ∪ t
Theorem: le_mul_iff_one_le_left'
File: Mathlib/Algebra/Order/Monoid/Lemmas.lean

tactic: rw [one_mul]
state_before: α : Type u_1
β : Type ?u.18226
inst✝³ : MulOneClass α
inst✝² : LE α
inst✝¹ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : ContravariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
⊢ a ≤ b * a ↔ 1 * a ≤ b * a
Theorem: Ordinal.nat_cast_inj
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp only [le_antisymm_iff, nat_cast_le]
state_before: m n : ℕ
⊢ ↑m = ↑n ↔ m = n
Theorem: MeasureTheory.Measure.prod_add
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: refine' prod_eq fun s t _ _ => _
state_before: α : Type u_2
α' : Type ?u.4495945
β : Type u_1
β' : Type ?u.4495951
γ : Type ?u.4495954
E : Type ?u.4495957
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ' : Measure α
ν ν'✝ : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SigmaFinite ν
inst✝¹ : SigmaFinite μ
ν' : Measure β
inst✝ : SigmaFinite ν'
⊢ Measure.prod μ (ν + ν') = Measure.prod μ ν + Measure.prod μ ν'

tactic: simp_rw [add_apply, prod_prod, left_distrib]
state_before: α : Type u_2
α' : Type ?u.4495945
β : Type u_1
β' : Type ?u.4495951
γ : Type ?u.4495954
E : Type ?u.4495957
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ
μ μ' : Measure α
ν ν'✝ : Measure β
τ : Measure γ
inst✝³ : NormedAddCommGroup E
inst✝² : SigmaFinite ν
inst✝¹ : SigmaFinite μ
ν' : Measure β
inst✝ : SigmaFinite ν'
s : Set α
t : Set β
x✝¹ : MeasurableSet s
x✝ : MeasurableSet t
⊢ ↑↑(Measure.prod μ ν + Measure.prod μ ν') (s ×ˢ t) = ↑↑μ s * ↑↑(ν + ν') t
Theorem: EsakiaHom.cancel_left
File: Mathlib/Topology/Order/Hom/Esakia.lean

tactic: rw [← comp_apply, h, comp_apply]
state_before: F : Type ?u.96586
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.96598
inst✝⁷ : TopologicalSpace α
inst✝⁶ : Preorder α
inst✝⁵ : TopologicalSpace β
inst✝⁴ : Preorder β
inst✝³ : TopologicalSpace γ
inst✝² : Preorder γ
inst✝¹ : TopologicalSpace δ
inst✝ : Preorder δ
g : EsakiaHom β γ
f₁ f₂ : EsakiaHom α β
hg : Injective ↑g
h : comp g f₁ = comp g f₂
a : α
⊢ ↑g (↑f₁ a) = ↑g (↑f₂ a)
Theorem: CategoryTheory.CoverDense.iso_of_restrict_iso
File: Mathlib/CategoryTheory/Sites/DenseSubsite.lean

tactic: convert IsIso.of_iso (sheafIso H (asIso (whiskerLeft G.op α.val))) using 1
state_before: C : Type u_5
inst✝⁴ : Category C
D : Type u_3
inst✝³ : Category D
E : Type ?u.139299
inst✝² : Category E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝¹ : Category A
G : C ⥤ D
H : CoverDense K G
inst✝ : Full G
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
α : ℱ ⟶ ℱ'
i : IsIso (whiskerLeft (Functor.op G) α.val)
⊢ IsIso α

tactic: ext1
state_before: case h.e'_5
C : Type u_5
inst✝⁴ : Category C
D : Type u_3
inst✝³ : Category D
E : Type ?u.139299
inst✝² : Category E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝¹ : Category A
G : C ⥤ D
H : CoverDense K G
inst✝ : Full G
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
α : ℱ ⟶ ℱ'
i : IsIso (whiskerLeft (Functor.op G) α.val)
⊢ α = (sheafIso H (asIso (whiskerLeft (Functor.op G) α.val))).hom

tactic: apply (sheafHom_eq H _).symm
state_before: case h.e'_5.h
C : Type u_5
inst✝⁴ : Category C
D : Type u_3
inst✝³ : Category D
E : Type ?u.139299
inst✝² : Category E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝¹ : Category A
G : C ⥤ D
H : CoverDense K G
inst✝ : Full G
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
α : ℱ ⟶ ℱ'
i : IsIso (whiskerLeft (Functor.op G) α.val)
⊢ α.val = (sheafIso H (asIso (whiskerLeft (Functor.op G) α.val))).hom.val
Theorem: LatticeOrderedCommGroup.pos_eq_neg_inv
File: Mathlib/Algebra/Order/LatticeGroup.lean

tactic: rw [neg_eq_pos_inv, inv_inv]
state_before: α : Type u
inst✝¹ : Lattice α
inst✝ : CommGroup α
a : α
⊢ a⁺ = a⁻¹⁻
Theorem: AlgebraicTopology.DoldKan.Q_succ
File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

tactic: simp only [Q, P_succ, comp_add, comp_id]
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ Q (q + 1) = Q q - P q ≫ Hσ q

tactic: abel
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ 𝟙 K[X] - (P q + P q ≫ Hσ q) = 𝟙 K[X] - P q - P q ≫ Hσ q
Theorem: CentroidHom.comp_mul_comm
File: Mathlib/Algebra/Hom/Centroid.lean

tactic: simp
state_before: F : Type ?u.56322
α : Type u_1
inst✝ : NonUnitalNonAssocSemiring α
T S : CentroidHom α
a b : α
⊢ (↑T ∘ ↑S) (a * b) = (↑S ∘ ↑T) (a * b)

tactic: rw [map_mul_right, map_mul_left, ← map_mul_right, ← map_mul_left]
state_before: F : Type ?u.56322
α : Type u_1
inst✝ : NonUnitalNonAssocSemiring α
T S : CentroidHom α
a b : α
⊢ ↑T (↑S (a * b)) = ↑S (↑T (a * b))
Theorem: ConvexOn.sup
File: Mathlib/Analysis/Convex/Function.lean

tactic: refine' ⟨hf.left, fun x hx y hy a b ha hb hab => sup_le _ _⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.374344
α : Type ?u.374347
β : Type u_3
ι : Type ?u.374353
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
hg : ConvexOn 𝕜 s g
⊢ ConvexOn 𝕜 s (f ⊔ g)

tactic: calc
  f (a • x + b • y) ≤ a • f x + b • f y := hf.right hx hy ha hb hab
  _ ≤ a • (f x ⊔ g x) + b • (f y ⊔ g y) := by gcongr <;> apply le_sup_left
state_before: case refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type ?u.374344
α : Type ?u.374347
β : Type u_3
ι : Type ?u.374353
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
hg : ConvexOn 𝕜 s g
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ f (a • x + b • y) ≤ a • (f ⊔ g) x + b • (f ⊔ g) y

tactic: gcongr <;> apply le_sup_left
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.374344
α : Type ?u.374347
β : Type u_3
ι : Type ?u.374353
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
hg : ConvexOn 𝕜 s g
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • f x + b • f y ≤ a • (f x ⊔ g x) + b • (f y ⊔ g y)

tactic: calc
  g (a • x + b • y) ≤ a • g x + b • g y := hg.right hx hy ha hb hab
  _ ≤ a • (f x ⊔ g x) + b • (f y ⊔ g y) := by gcongr <;> apply le_sup_right
state_before: case refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type ?u.374344
α : Type ?u.374347
β : Type u_3
ι : Type ?u.374353
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
hg : ConvexOn 𝕜 s g
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ g (a • x + b • y) ≤ a • (f ⊔ g) x + b • (f ⊔ g) y

tactic: gcongr <;> apply le_sup_right
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.374344
α : Type ?u.374347
β : Type u_3
ι : Type ?u.374353
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedAddCommMonoid β
inst✝² : SMul 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
hg : ConvexOn 𝕜 s g
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 ≤ a • (f x ⊔ g x) + b • (f y ⊔ g y)
Theorem: Polynomial.taylor_taylor
File: Mathlib/Data/Polynomial/Taylor.lean

tactic: simp only [taylor_apply, comp_assoc, map_add, add_comp, X_comp, C_comp, C_add, add_assoc]
state_before: R✝ : Type ?u.213757
inst✝¹ : Semiring R✝
r✝ : R✝
f✝ : R✝[X]
R : Type u_1
inst✝ : CommSemiring R
f : R[X]
r s : R
⊢ ↑(taylor r) (↑(taylor s) f) = ↑(taylor (r + s)) f
Theorem: EMetric.closedBall_prod_same
File: Mathlib/Topology/MetricSpace/EMetricSpace.lean

tactic: simp [Prod.edist_eq]
state_before: α : Type u
β : Type v
X : Type ?u.220280
inst✝¹ : PseudoEMetricSpace α
x✝ y✝ z✝ : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝ : PseudoEMetricSpace β
x : α
y : β
r : ℝ≥0∞
z : α × β
⊢ z ∈ closedBall x r ×ˢ closedBall y r ↔ z ∈ closedBall (x, y) r
Theorem: mem_segment_sub_add
File: Mathlib/Analysis/Convex/Segment.lean

tactic: convert @midpoint_mem_segment 𝕜 _ _ _ _ _ _ _
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.162050
G : Type ?u.162053
ι : Type ?u.162056
π : ι → Type ?u.162061
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
x✝ y✝ : E
inst✝ : Invertible 2
x y : E
⊢ x ∈ [x - y-[𝕜]x + y]

tactic: rw [midpoint_sub_add]
state_before: case h.e'_4
𝕜 : Type u_1
E : Type u_2
F : Type ?u.162050
G : Type ?u.162053
ι : Type ?u.162056
π : ι → Type ?u.162061
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
x✝ y✝ : E
inst✝ : Invertible 2
x y : E
⊢ x = midpoint 𝕜 (x - y) (x + y)
Theorem: Option.traverse_eq_map_id
File: Mathlib/Control/Traversable/Instances.lean

tactic: cases x <;> rfl
state_before: F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α β : Type u_1
f : α → β
x : Option α
⊢ Option.traverse (pure ∘ f) x = pure (f <$> x)
Theorem: Computation.bind_pure'
File: Mathlib/Data/Seq/Computation.lean

tactic: apply eq_of_bisim fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = bind s (pure) ∧ c₂ = s
state_before: α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ bind s pure = s

tactic: . intro c₁ c₂ h
  exact
    match c₁, c₂, h with
    | _, c₂, Or.inl (Eq.refl _) => by cases' destruct c₂ with b cb <;> simp
    | _, _, Or.inr ⟨s, rfl, rfl⟩ => by
      apply recOn s <;> intro s <;> simp
state_before: case bisim
α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ IsBisimulation fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = bind s pure ∧ c₂ = s

case r
α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ bind s pure = s ∨ ∃ s_1, bind s pure = bind s_1 pure ∧ s = s_1

tactic: . exact Or.inr ⟨s, rfl, rfl⟩
state_before: case r
α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ bind s pure = s ∨ ∃ s_1, bind s pure = bind s_1 pure ∧ s = s_1

tactic: intro c₁ c₂ h
state_before: case bisim
α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ IsBisimulation fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = bind s pure ∧ c₂ = s

tactic: exact
  match c₁, c₂, h with
  | _, c₂, Or.inl (Eq.refl _) => by cases' destruct c₂ with b cb <;> simp
  | _, _, Or.inr ⟨s, rfl, rfl⟩ => by
    apply recOn s <;> intro s <;> simp
state_before: case bisim
α : Type u
β : Type v
γ : Type w
s c₁ c₂ : Computation α
h : c₁ = c₂ ∨ ∃ s, c₁ = bind s pure ∧ c₂ = s
⊢ BisimO (fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = bind s pure ∧ c₂ = s) (destruct c₁) (destruct c₂)

tactic: cases' destruct c₂ with b cb <;> simp
state_before: α : Type u
β : Type v
γ : Type w
s c₁ c₂✝ : Computation α
h : c₁ = c₂✝ ∨ ∃ s, c₁ = bind s pure ∧ c₂✝ = s
c₂ : Computation α
⊢ BisimO (fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = bind s pure ∧ c₂ = s) (destruct c₂) (destruct c₂)

tactic: apply recOn s <;> intro s <;> simp
state_before: α : Type u
β : Type v
γ : Type w
s✝ c₁ c₂ : Computation α
h : c₁ = c₂ ∨ ∃ s, c₁ = bind s pure ∧ c₂ = s
s : Computation α
⊢ BisimO (fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = bind s pure ∧ c₂ = s) (destruct (bind s pure)) (destruct s)

tactic: exact Or.inr ⟨s, rfl, rfl⟩
state_before: case r
α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ bind s pure = s ∨ ∃ s_1, bind s pure = bind s_1 pure ∧ s = s_1