1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Basis.repr_reindex
File: Mathlib/LinearAlgebra/Basis.lean

tactic: simp [repr_reindex_apply]
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
b' : Basis ι' R M'
e : ι ≃ ι'
⊢ ∀ (x_1 : ι'), ((b.reindex e).repr x) x_1 = (Finsupp.mapDomain (⇑e) (b.repr x)) x_1
state_after: no goals
Theorem: one_div_mul_one_div
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionCommMonoid α
a b c d : α
⊢ 1 / a * (1 / b) = 1 / (a * b)
state_after: no goals
Theorem: NNReal.add_rpow_le_one_of_add_le_one
File: Mathlib/Analysis/MeanInequalitiesPow.lean

tactic: have h_le_one : ∀ x : ℝ≥0, x ≤ 1 → x ^ p ≤ x := fun x hx => rpow_le_self_of_le_one hx hp1
state_before: ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0
hab : a + b ≤ 1
hp1 : 1 ≤ p
⊢ a ^ p + b ^ p ≤ 1
state_after: ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0
hab : a + b ≤ 1
hp1 : 1 ≤ p
h_le_one : ∀ x ≤ 1, x ^ p ≤ x
⊢ a ^ p + b ^ p ≤ 1

tactic: have ha : a ≤ 1 := (self_le_add_right a b).trans hab
state_before: ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0
hab : a + b ≤ 1
hp1 : 1 ≤ p
h_le_one : ∀ x ≤ 1, x ^ p ≤ x
⊢ a ^ p + b ^ p ≤ 1
state_after: ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0
hab : a + b ≤ 1
hp1 : 1 ≤ p
h_le_one : ∀ x ≤ 1, x ^ p ≤ x
ha : a ≤ 1
⊢ a ^ p + b ^ p ≤ 1

tactic: have hb : b ≤ 1 := (self_le_add_left b a).trans hab
state_before: ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0
hab : a + b ≤ 1
hp1 : 1 ≤ p
h_le_one : ∀ x ≤ 1, x ^ p ≤ x
ha : a ≤ 1
⊢ a ^ p + b ^ p ≤ 1
state_after: ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0
hab : a + b ≤ 1
hp1 : 1 ≤ p
h_le_one : ∀ x ≤ 1, x ^ p ≤ x
ha : a ≤ 1
hb : b ≤ 1
⊢ a ^ p + b ^ p ≤ 1

tactic: exact (add_le_add (h_le_one a ha) (h_le_one b hb)).trans hab
state_before: ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0
hab : a + b ≤ 1
hp1 : 1 ≤ p
h_le_one : ∀ x ≤ 1, x ^ p ≤ x
ha : a ≤ 1
hb : b ≤ 1
⊢ a ^ p + b ^ p ≤ 1
state_after: no goals
Theorem: AddCircle.eq_coe_Ico
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: let b := QuotientAddGroup.equivIcoMod hp.out 0 a
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a✝ : 𝕜
inst✝ : Archimedean 𝕜
a : AddCircle p
⊢ ∃ b ∈ Ico 0 p, ↑b = a
state_after: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a✝ : 𝕜
inst✝ : Archimedean 𝕜
a : AddCircle p
b : ↑(Ico 0 (0 + p)) := (QuotientAddGroup.equivIcoMod ⋯ 0) a
⊢ ∃ b ∈ Ico 0 p, ↑b = a

tactic: exact ⟨b.1, by simpa only [zero_add] using b.2,
  (QuotientAddGroup.equivIcoMod hp.out 0).symm_apply_apply a⟩
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a✝ : 𝕜
inst✝ : Archimedean 𝕜
a : AddCircle p
b : ↑(Ico 0 (0 + p)) := (QuotientAddGroup.equivIcoMod ⋯ 0) a
⊢ ∃ b ∈ Ico 0 p, ↑b = a
state_after: no goals

tactic: simpa only [zero_add] using b.2
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a✝ : 𝕜
inst✝ : Archimedean 𝕜
a : AddCircle p
b : ↑(Ico 0 (0 + p)) := (QuotientAddGroup.equivIcoMod ⋯ 0) a
⊢ ↑b ∈ Ico 0 p
state_after: no goals
Theorem: MeasureTheory.Measure.dirac_prod_dirac
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: rw [prod_dirac, map_dirac measurable_prod_mk_right]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SFinite ν
inst✝ : SFinite μ
x : α
y : β
⊢ (dirac x).prod (dirac y) = dirac (x, y)
state_after: no goals
Theorem: Multiset.mem_sigma
File: Mathlib/Data/Multiset/Bind.lean

tactic: simp [Multiset.sigma, and_assoc, and_left_comm]
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
σ : α → Type u_4
a✝ : α
s : Multiset α
t : (a : α) → Multiset (σ a)
a : α
b : σ a
⊢ ⟨a, b⟩ ∈ s.sigma t ↔ ⟨a, b⟩.fst ∈ s ∧ ⟨a, b⟩.snd ∈ t ⟨a, b⟩.fst
state_after: no goals
Theorem: tendsto_exp_div_rpow_atTop
File: Mathlib/Analysis/SpecialFunctions/Pow/Asymptotics.lean

tactic: cases' archimedean_iff_nat_lt.1 Real.instArchimedean s with n hn
state_before: s : ℝ
⊢ Tendsto (fun x => rexp x / x ^ s) atTop atTop
state_after: case intro
s : ℝ
n : ℕ
hn : s < ↑n
⊢ Tendsto (fun x => rexp x / x ^ s) atTop atTop

tactic: refine tendsto_atTop_mono' _ ?_ (tendsto_exp_div_pow_atTop n)
state_before: case intro
s : ℝ
n : ℕ
hn : s < ↑n
⊢ Tendsto (fun x => rexp x / x ^ s) atTop atTop
state_after: case intro
s : ℝ
n : ℕ
hn : s < ↑n
⊢ (fun x => rexp x / x ^ n) ≤ᶠ[atTop] fun x => rexp x / x ^ s

tactic: filter_upwards [eventually_gt_atTop (0 : ℝ), eventually_ge_atTop (1 : ℝ)] with x hx₀ hx₁
state_before: case intro
s : ℝ
n : ℕ
hn : s < ↑n
⊢ (fun x => rexp x / x ^ n) ≤ᶠ[atTop] fun x => rexp x / x ^ s
state_after: case h
s : ℝ
n : ℕ
hn : s < ↑n
x : ℝ
hx₀ : 0 < x
hx₁ : 1 ≤ x
⊢ rexp x / x ^ n ≤ rexp x / x ^ s

tactic: rw [div_le_div_left (exp_pos _) (pow_pos hx₀ _) (rpow_pos_of_pos hx₀ _), ← Real.rpow_natCast]
state_before: case h
s : ℝ
n : ℕ
hn : s < ↑n
x : ℝ
hx₀ : 0 < x
hx₁ : 1 ≤ x
⊢ rexp x / x ^ n ≤ rexp x / x ^ s
state_after: case h
s : ℝ
n : ℕ
hn : s < ↑n
x : ℝ
hx₀ : 0 < x
hx₁ : 1 ≤ x
⊢ x ^ s ≤ x ^ ↑n

tactic: exact rpow_le_rpow_of_exponent_le hx₁ hn.le
state_before: case h
s : ℝ
n : ℕ
hn : s < ↑n
x : ℝ
hx₀ : 0 < x
hx₁ : 1 ≤ x
⊢ x ^ s ≤ x ^ ↑n
state_after: no goals
Theorem: isConformalMap_id
File: Mathlib/Analysis/NormedSpace/ConformalLinearMap.lean

tactic: simp
state_before: R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
f : M →L[R] N
g : N →L[R] G
c : R
⊢ ContinuousLinearMap.id R M = 1 • LinearIsometry.id.toContinuousLinearMap
state_after: no goals
Theorem: CategoryTheory.Bicategory.inv_hom_whiskerRight
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

tactic: rw [← comp_whiskerRight, inv_hom_id, id_whiskerRight]
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f g : a ⟶ b
η : f ≅ g
h : b ⟶ c
⊢ η.inv ▷ h ≫ η.hom ▷ h = 𝟙 (g ≫ h)
state_after: no goals
Theorem: Int.ball_eq_Ioo
File: Mathlib/Topology/Instances/Int.lean

tactic: rw [← preimage_ball, Real.ball_eq_Ioo, preimage_Ioo]
state_before: x : ℤ
r : ℝ
⊢ ball x r = Ioo ⌊↑x - r⌋ ⌈↑x + r⌉
state_after: no goals
Theorem: List.iterateTR_loop_eq
File: Mathlib/Data/List/Defs.lean

tactic: induction n generalizing a l <;> simp [*]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
f : α → α
a : α
n : ℕ
l : List α
⊢ iterateTR.loop f a n l = l.reverse ++ iterate f a n
state_after: no goals
Theorem: Matrix.det_fin_three
File: Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean

tactic: simp only [det_succ_row_zero, Nat.odd_iff_not_even, submatrix_apply, Fin.succ_zero_eq_one,
  submatrix_submatrix, det_unique, Fin.default_eq_zero, comp_apply, Fin.succ_one_eq_two,
  Fin.sum_univ_succ, Fin.val_zero, Fin.zero_succAbove, univ_unique, Fin.val_succ,
  Fin.coe_fin_one, Fin.succ_succAbove_zero, sum_singleton, Fin.succ_succAbove_one, even_add_self]
state_before: m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
A : Matrix (Fin 3) (Fin 3) R
⊢ A.det =
    A 0 0 * A 1 1 * A 2 2 - A 0 0 * A 1 2 * A 2 1 - A 0 1 * A 1 0 * A 2 2 + A 0 1 * A 1 2 * A 2 0 +
        A 0 2 * A 1 0 * A 2 1 -
      A 0 2 * A 1 1 * A 2 0
state_after: m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
A : Matrix (Fin 3) (Fin 3) R
⊢ (-1) ^ 0 * A 0 0 * ((-1) ^ 0 * A 1 1 * A 2 2 + (-1) ^ (0 + 1) * A 1 2 * A 2 1) +
      ((-1) ^ (0 + 1) * A 0 1 * ((-1) ^ 0 * A 1 0 * A 2 2 + (-1) ^ (0 + 1) * A 1 2 * A 2 0) +
        (-1) ^ (0 + 1 + 1) * A 0 2 * ((-1) ^ 0 * A 1 0 * A 2 1 + (-1) ^ (0 + 1) * A 1 1 * A 2 0)) =
    A 0 0 * A 1 1 * A 2 2 - A 0 0 * A 1 2 * A 2 1 - A 0 1 * A 1 0 * A 2 2 + A 0 1 * A 1 2 * A 2 0 +
        A 0 2 * A 1 0 * A 2 1 -
      A 0 2 * A 1 1 * A 2 0

tactic: ring
state_before: m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
A : Matrix (Fin 3) (Fin 3) R
⊢ (-1) ^ 0 * A 0 0 * ((-1) ^ 0 * A 1 1 * A 2 2 + (-1) ^ (0 + 1) * A 1 2 * A 2 1) +
      ((-1) ^ (0 + 1) * A 0 1 * ((-1) ^ 0 * A 1 0 * A 2 2 + (-1) ^ (0 + 1) * A 1 2 * A 2 0) +
        (-1) ^ (0 + 1 + 1) * A 0 2 * ((-1) ^ 0 * A 1 0 * A 2 1 + (-1) ^ (0 + 1) * A 1 1 * A 2 0)) =
    A 0 0 * A 1 1 * A 2 2 - A 0 0 * A 1 2 * A 2 1 - A 0 1 * A 1 0 * A 2 2 + A 0 1 * A 1 2 * A 2 0 +
        A 0 2 * A 1 0 * A 2 1 -
      A 0 2 * A 1 1 * A 2 0
state_after: no goals
Theorem: Int.emod_two_eq_zero_or_one
File: Mathlib/Data/Int/Defs.lean

tactic: omega
state_before: a b c d m n✝ n : ℤ
⊢ n % 2 < 2
state_after: no goals

tactic: decide
state_before: a b c d m n✝ n : ℤ
h : n % 2 < 2
⊢ 2 ≠ 0
state_after: no goals

tactic: omega
state_before: a b c d m n✝ n : ℤ
h : n % 2 < 2
h₁✝ : 0 ≤ n % 2
k : ℕ
h₁ : ↑(k + 2) < 2
x✝ : 0 ≤ ↑(k + 2)
⊢ ↑(k + 2) = 0 ∨ ↑(k + 2) = 1
state_after: no goals

tactic: cases h₁
state_before: a✝ b c d m n✝ n : ℤ
h : n % 2 < 2
h₁✝ : 0 ≤ n % 2
a : ℕ
x✝ : -[a+1] < 2
h₁ : 0 ≤ -[a+1]
⊢ -[a+1] = 0 ∨ -[a+1] = 1
state_after: no goals
Theorem: Set.uIcc_eq_union
File: Mathlib/Order/Interval/Set/UnorderedInterval.lean

tactic: rw [Icc_union_Icc', max_comm] <;> rfl
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
s : Set α
a a₁ a₂ b b₁ b₂ c d x : α
⊢ [[a, b]] = Icc a b ∪ Icc b a
state_after: no goals
Theorem: MeasurableSet.measurableSet_bliminf
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: simp only [Filter.bliminf_eq_iSup_biInf_of_nat, iInf_eq_iInter, iSup_eq_iUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
inst✝ : MeasurableSpace α
s : ℕ → Set α
p : ℕ → Prop
h : ∀ (n : ℕ), p n → MeasurableSet (s n)
⊢ MeasurableSet (bliminf s atTop p)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
inst✝ : MeasurableSpace α
s : ℕ → Set α
p : ℕ → Prop
h : ∀ (n : ℕ), p n → MeasurableSet (s n)
⊢ MeasurableSet (⋃ i, ⋂ j, ⋂ (_ : p j ∧ i ≤ j), s j)

tactic: exact .iUnion fun n => .iInter fun m => .iInter fun hm => h m hm.1
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
inst✝ : MeasurableSpace α
s : ℕ → Set α
p : ℕ → Prop
h : ∀ (n : ℕ), p n → MeasurableSet (s n)
⊢ MeasurableSet (⋃ i, ⋂ j, ⋂ (_ : p j ∧ i ≤ j), s j)
state_after: no goals
Theorem: div_zero
File: Mathlib/Algebra/GroupWithZero/Basic.lean

tactic: rw [div_eq_mul_inv, inv_zero, mul_zero]
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : GroupWithZero G₀
a✝ b c a : G₀
⊢ a / 0 = 0
state_after: no goals
Theorem: hasProd_subtype_iff_of_mulSupport_subset
File: Mathlib/Topology/Algebra/InfiniteSum/Defs.lean

tactic: simpa using mulSupport_subset_iff'.1 hf
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f g : β → α
a b : α
s✝ : Finset β
s : Set β
hf : mulSupport f ⊆ s
⊢ ∀ x ∉ Set.range fun a => ↑a, f x = 1
state_after: no goals
Theorem: DFinsupp.toFinsupp_support
File: Mathlib/Data/Finsupp/ToDFinsupp.lean

tactic: ext
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
inst✝² : DecidableEq ι
inst✝¹ : Zero M
inst✝ : (m : M) → Decidable (m ≠ 0)
f : Π₀ (x : ι), M
⊢ f.toFinsupp.support = f.support
state_after: case a
ι : Type u_1
R : Type u_2
M : Type u_3
inst✝² : DecidableEq ι
inst✝¹ : Zero M
inst✝ : (m : M) → Decidable (m ≠ 0)
f : Π₀ (x : ι), M
a✝ : ι
⊢ a✝ ∈ f.toFinsupp.support ↔ a✝ ∈ f.support

tactic: simp
state_before: case a
ι : Type u_1
R : Type u_2
M : Type u_3
inst✝² : DecidableEq ι
inst✝¹ : Zero M
inst✝ : (m : M) → Decidable (m ≠ 0)
f : Π₀ (x : ι), M
a✝ : ι
⊢ a✝ ∈ f.toFinsupp.support ↔ a✝ ∈ f.support
state_after: no goals
Theorem: Matrix.vec2_dotProduct'
File: Mathlib/Data/Matrix/Notation.lean

tactic: rw [cons_dotProduct_cons, cons_dotProduct_cons, dotProduct_empty, add_zero]
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝¹ : AddCommMonoid α
inst✝ : Mul α
a₀ a₁ b₀ b₁ : α
⊢ ![a₀, a₁] ⬝ᵥ ![b₀, b₁] = a₀ * b₀ + a₁ * b₁
state_after: no goals
Theorem: Turing.BlankRel.trans
File: Mathlib/Computability/TuringMachine.lean

tactic: rintro (h₁ | h₁) (h₂ | h₂)
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
⊢ BlankRel l₁ l₂ → BlankRel l₂ l₃ → BlankRel l₁ l₃
state_after: case inl.inl
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₁ l₂
h₂ : BlankExtends l₂ l₃
⊢ BlankRel l₁ l₃

case inl.inr
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₁ l₂
h₂ : BlankExtends l₃ l₂
⊢ BlankRel l₁ l₃

case inr.inl
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₂ l₁
h₂ : BlankExtends l₂ l₃
⊢ BlankRel l₁ l₃

case inr.inr
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₂ l₁
h₂ : BlankExtends l₃ l₂
⊢ BlankRel l₁ l₃

tactic: exact Or.inl (h₁.trans h₂)
state_before: case inl.inl
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₁ l₂
h₂ : BlankExtends l₂ l₃
⊢ BlankRel l₁ l₃
state_after: no goals

tactic: rcases le_total l₁.length l₃.length with h | h
state_before: case inl.inr
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₁ l₂
h₂ : BlankExtends l₃ l₂
⊢ BlankRel l₁ l₃
state_after: case inl.inr.inl
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₁ l₂
h₂ : BlankExtends l₃ l₂
h : l₁.length ≤ l₃.length
⊢ BlankRel l₁ l₃

case inl.inr.inr
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₁ l₂
h₂ : BlankExtends l₃ l₂
h : l₃.length ≤ l₁.length
⊢ BlankRel l₁ l₃

tactic: exact Or.inl (h₁.above_of_le h₂ h)
state_before: case inl.inr.inl
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₁ l₂
h₂ : BlankExtends l₃ l₂
h : l₁.length ≤ l₃.length
⊢ BlankRel l₁ l₃
state_after: no goals

tactic: exact Or.inr (h₂.above_of_le h₁ h)
state_before: case inl.inr.inr
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₁ l₂
h₂ : BlankExtends l₃ l₂
h : l₃.length ≤ l₁.length
⊢ BlankRel l₁ l₃
state_after: no goals

tactic: rcases le_total l₁.length l₃.length with h | h
state_before: case inr.inl
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₂ l₁
h₂ : BlankExtends l₂ l₃
⊢ BlankRel l₁ l₃
state_after: case inr.inl.inl
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₂ l₁
h₂ : BlankExtends l₂ l₃
h : l₁.length ≤ l₃.length
⊢ BlankRel l₁ l₃

case inr.inl.inr
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₂ l₁
h₂ : BlankExtends l₂ l₃
h : l₃.length ≤ l₁.length
⊢ BlankRel l₁ l₃

tactic: exact Or.inl (h₁.below_of_le h₂ h)
state_before: case inr.inl.inl
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₂ l₁
h₂ : BlankExtends l₂ l₃
h : l₁.length ≤ l₃.length
⊢ BlankRel l₁ l₃
state_after: no goals

tactic: exact Or.inr (h₂.below_of_le h₁ h)
state_before: case inr.inl.inr
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₂ l₁
h₂ : BlankExtends l₂ l₃
h : l₃.length ≤ l₁.length
⊢ BlankRel l₁ l₃
state_after: no goals

tactic: exact Or.inr (h₂.trans h₁)
state_before: case inr.inr
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
h₁ : BlankExtends l₂ l₁
h₂ : BlankExtends l₃ l₂
⊢ BlankRel l₁ l₃
state_after: no goals
Theorem: LowerSet.compl_iInf
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp only [coe_compl, coe_iInf, compl_iInter, UpperSet.coe_iInf]
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: MonoidAlgebra.single_eq_algebraMap_mul_of
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: simp
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝¹ : CommSemiring k
inst✝ : Monoid G
a : G
b : k
⊢ single a b = (algebraMap k (MonoidAlgebra k G)) b * (of k G) a
state_after: no goals
Theorem: CategoryTheory.Functor.CommShift.isoAdd_inv_app
File: Mathlib/CategoryTheory/Shift/CommShift.lean

tactic: simp only [isoAdd, isoAdd'_inv_app, shiftFunctorAdd'_eq_shiftFunctorAdd]
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝⁹ : Category.{u_7, u_1} C
inst✝⁸ : Category.{u_6, u_2} D
inst✝⁷ : Category.{?u.24326, u_3} E
F : C ⥤ D
G : D ⥤ E
A : Type u_4
B : Type u_5
inst✝⁶ : AddMonoid A
inst✝⁵ : AddCommMonoid B
inst✝⁴ : HasShift C A
inst✝³ : HasShift D A
inst✝² : HasShift E A
inst✝¹ : HasShift C B
inst✝ : HasShift D B
a b : A
e₁ : shiftFunctor C a ⋙ F ≅ F ⋙ shiftFunctor D a
e₂ : shiftFunctor C b ⋙ F ≅ F ⋙ shiftFunctor D b
X : C
⊢ (isoAdd e₁ e₂).inv.app X =
    (shiftFunctorAdd D a b).hom.app (F.obj X) ≫
      (shiftFunctor D b).map (e₁.inv.app X) ≫
        e₂.inv.app ((shiftFunctor C a).obj X) ≫ F.map ((shiftFunctorAdd C a b).inv.app X)
state_after: no goals
Theorem: ENNReal.hasBasis_nhds_of_ne_top
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simpa only [pos_iff_ne_zero] using hasBasis_nhds_of_ne_top' xt
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
xt : x ≠ ⊤
⊢ (𝓝 x).HasBasis (fun x => 0 < x) fun ε => Icc (x - ε) (x + ε)
state_after: no goals
Theorem: CategoryTheory.extensiveTopology.isSheaf_yoneda_obj
File: Mathlib/CategoryTheory/Sites/Coherent/ExtensiveSheaves.lean

tactic: erw [isSheaf_coverage]
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
D : Type u_2
inst✝¹ : Category.{?u.4628, u_2} D
inst✝ : FinitaryPreExtensive C
W : C
⊢ IsSheaf (extensiveTopology C) (yoneda.obj W)
state_after: C : Type u_1
inst✝² : Category.{u_3, u_1} C
D : Type u_2
inst✝¹ : Category.{?u.4628, u_2} D
inst✝ : FinitaryPreExtensive C
W : C
⊢ ∀ {X : C}, ∀ R ∈ (extensiveCoverage C).covering X, IsSheafFor (yoneda.obj W) R

tactic: intro X R ⟨Y, α, Z, π, hR, hi⟩
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
D : Type u_2
inst✝¹ : Category.{?u.4628, u_2} D
inst✝ : FinitaryPreExtensive C
W : C
⊢ ∀ {X : C}, ∀ R ∈ (extensiveCoverage C).covering X, IsSheafFor (yoneda.obj W) R
state_after: C : Type u_1
inst✝² : Category.{u_3, u_1} C
D : Type u_2
inst✝¹ : Category.{?u.4628, u_2} D
inst✝ : FinitaryPreExtensive C
W X : C
R : Presieve X
Y : Type
α : Finite Y
Z : Y → C
π : (a : Y) → Z a ⟶ X
hR : R = ofArrows Z π
hi : IsIso (Sigma.desc π)
⊢ IsSheafFor (yoneda.obj W) R

tactic: have : IsIso (Sigma.desc (Cofan.inj (Cofan.mk X π))) := hi
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
D : Type u_2
inst✝¹ : Category.{?u.4628, u_2} D
inst✝ : FinitaryPreExtensive C
W X : C
R : Presieve X
Y : Type
α : Finite Y
Z : Y → C
π : (a : Y) → Z a ⟶ X
hR : R = ofArrows Z π
hi : IsIso (Sigma.desc π)
⊢ IsSheafFor (yoneda.obj W) R
state_after: C : Type u_1
inst✝² : Category.{u_3, u_1} C
D : Type u_2
inst✝¹ : Category.{?u.4628, u_2} D
inst✝ : FinitaryPreExtensive C
W X : C
R : Presieve X
Y : Type
α : Finite Y
Z : Y → C
π : (a : Y) → Z a ⟶ X
hR : R = ofArrows Z π
hi : IsIso (Sigma.desc π)
this : IsIso (Sigma.desc (Cofan.mk X π).inj)
⊢ IsSheafFor (yoneda.obj W) R

tactic: have : R.Extensive := ⟨Y, α, Z, π, hR, ⟨Cofan.isColimitOfIsIsoSigmaDesc (Cofan.mk X π)⟩⟩
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
D : Type u_2
inst✝¹ : Category.{?u.4628, u_2} D
inst✝ : FinitaryPreExtensive C
W X : C
R : Presieve X
Y : Type
α : Finite Y
Z : Y → C
π : (a : Y) → Z a ⟶ X
hR : R = ofArrows Z π
hi : IsIso (Sigma.desc π)
this : IsIso (Sigma.desc (Cofan.mk X π).inj)
⊢ IsSheafFor (yoneda.obj W) R
state_after: C : Type u_1
inst✝² : Category.{u_3, u_1} C
D : Type u_2
inst✝¹ : Category.{?u.4628, u_2} D
inst✝ : FinitaryPreExtensive C
W X : C
R : Presieve X
Y : Type
α : Finite Y
Z : Y → C
π : (a : Y) → Z a ⟶ X
hR : R = ofArrows Z π
hi : IsIso (Sigma.desc π)
this✝ : IsIso (Sigma.desc (Cofan.mk X π).inj)
this : R.Extensive
⊢ IsSheafFor (yoneda.obj W) R

tactic: exact isSheafFor_extensive_of_preservesFiniteProducts _ _
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
D : Type u_2
inst✝¹ : Category.{?u.4628, u_2} D
inst✝ : FinitaryPreExtensive C
W X : C
R : Presieve X
Y : Type
α : Finite Y
Z : Y → C
π : (a : Y) → Z a ⟶ X
hR : R = ofArrows Z π
hi : IsIso (Sigma.desc π)
this✝ : IsIso (Sigma.desc (Cofan.mk X π).inj)
this : R.Extensive
⊢ IsSheafFor (yoneda.obj W) R
state_after: no goals
Theorem: Int.card_fintype_Ico
File: Mathlib/Data/Int/Interval.lean

tactic: rw [← card_Ico, Fintype.card_ofFinset]
state_before: a b : ℤ
⊢ Fintype.card ↑(Set.Ico a b) = (b - a).toNat
state_after: no goals
Theorem: Grp.SurjectiveOfEpiAuxs.comp_eq
File: Mathlib/Algebra/Category/Grp/EpiMono.lean

tactic: ext a
state_before: A B : Grp
f : A ⟶ B
⊢ (f ≫
      let_fun this := g;
      this) =
    f ≫
      let_fun this := h;
      this
state_after: case w
A B : Grp
f : A ⟶ B
a : ↑A
⊢ (f ≫
        let_fun this := g;
        this)
      a =
    (f ≫
        let_fun this := h;
        this)
      a

tactic: change g (f a) = h (f a)
state_before: case w
A B : Grp
f : A ⟶ B
a : ↑A
⊢ (f ≫
        let_fun this := g;
        this)
      a =
    (f ≫
        let_fun this := h;
        this)
      a
state_after: case w
A B : Grp
f : A ⟶ B
a : ↑A
⊢ g (f a) = h (f a)

tactic: have : f a ∈ { b | h b = g b } := by
  rw [← agree]
  use a
state_before: case w
A B : Grp
f : A ⟶ B
a : ↑A
⊢ g (f a) = h (f a)
state_after: case w
A B : Grp
f : A ⟶ B
a : ↑A
this : f a ∈ {b | h b = g b}
⊢ g (f a) = h (f a)

tactic: rw [this]
state_before: case w
A B : Grp
f : A ⟶ B
a : ↑A
this : f a ∈ {b | h b = g b}
⊢ g (f a) = h (f a)
state_after: no goals

tactic: rw [← agree]
state_before: A B : Grp
f : A ⟶ B
a : ↑A
⊢ f a ∈ {b | h b = g b}
state_after: A B : Grp
f : A ⟶ B
a : ↑A
⊢ f a ∈ ↑(MonoidHom.range f)

tactic: use a
state_before: A B : Grp
f : A ⟶ B
a : ↑A
⊢ f a ∈ ↑(MonoidHom.range f)
state_after: no goals
Theorem: Sigma.mk.inj_iff
File: Mathlib/Data/Sigma/Basic.lean

tactic: cases h
state_before: α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
a₁ a₂ : α
b₁ : β a₁
b₂ : β a₂
h : ⟨a₁, b₁⟩ = ⟨a₂, b₂⟩
⊢ a₁ = a₂ ∧ HEq b₁ b₂
state_after: case refl
α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
a₁ : α
b₁ : β a₁
⊢ a₁ = a₁ ∧ HEq b₁ b₁

tactic: simp
state_before: case refl
α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
a₁ : α
b₁ : β a₁
⊢ a₁ = a₁ ∧ HEq b₁ b₁
state_after: no goals

tactic: subst h₁
state_before: α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
a₁ a₂ : α
b₁ : β a₁
b₂ : β a₂
x✝ : a₁ = a₂ ∧ HEq b₁ b₂
h₁ : a₁ = a₂
h₂ : HEq b₁ b₂
⊢ ⟨a₁, b₁⟩ = ⟨a₂, b₂⟩
state_after: α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
a₁ : α
b₁ b₂ : β a₁
x✝ : a₁ = a₁ ∧ HEq b₁ b₂
h₂ : HEq b₁ b₂
⊢ ⟨a₁, b₁⟩ = ⟨a₁, b₂⟩

tactic: rw [eq_of_heq h₂]
state_before: α : Type u_1
α₁ : Type u_2
α₂ : Type u_3
β : α → Type u_4
β₁ : α₁ → Type u_5
β₂ : α₂ → Type u_6
a₁ : α
b₁ b₂ : β a₁
x✝ : a₁ = a₁ ∧ HEq b₁ b₂
h₂ : HEq b₁ b₂
⊢ ⟨a₁, b₁⟩ = ⟨a₁, b₂⟩
state_after: no goals