1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Subgroup.isComplement_univ_right
File: Mathlib/GroupTheory/Complement.lean

tactic: refine
  ⟨fun h => Set.exists_eq_singleton_iff_nonempty_subsingleton.mpr ⟨?_, fun a ha b hb => ?_⟩, ?_⟩
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ IsComplement S univ ↔ ∃ g, S = {g}
state_after: case refine_1
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement S univ
⊢ S.Nonempty

case refine_2
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement S univ
a : G
ha : a ∈ S
b : G
hb : b ∈ S
⊢ a = b

case refine_3
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ (∃ g, S = {g}) → IsComplement S univ

tactic: obtain ⟨a, _⟩ := h.2 1
state_before: case refine_1
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement S univ
⊢ S.Nonempty
state_after: case refine_1.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement S univ
a : ↑S × ↑univ
h✝ : (fun x => ↑x.1 * ↑x.2) a = 1
⊢ S.Nonempty

tactic: exact ⟨a.1.1, a.1.2⟩
state_before: case refine_1.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement S univ
a : ↑S × ↑univ
h✝ : (fun x => ↑x.1 * ↑x.2) a = 1
⊢ S.Nonempty
state_after: no goals

tactic: have : (⟨⟨a, ha⟩, ⟨_, mem_top a⁻¹⟩⟩ : S × (⊤ : Set G)) = ⟨⟨b, hb⟩, ⟨_, mem_top b⁻¹⟩⟩ :=
  h.1 ((mul_inv_self a).trans (mul_inv_self b).symm)
state_before: case refine_2
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement S univ
a : G
ha : a ∈ S
b : G
hb : b ∈ S
⊢ a = b
state_after: case refine_2
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement S univ
a : G
ha : a ∈ S
b : G
hb : b ∈ S
this : (⟨a, ha⟩, ⟨a⁻¹, ⋯⟩) = (⟨b, hb⟩, ⟨b⁻¹, ⋯⟩)
⊢ a = b

tactic: exact Subtype.ext_iff.mp (Prod.ext_iff.mp this).1
state_before: case refine_2
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement S univ
a : G
ha : a ∈ S
b : G
hb : b ∈ S
this : (⟨a, ha⟩, ⟨a⁻¹, ⋯⟩) = (⟨b, hb⟩, ⟨b⁻¹, ⋯⟩)
⊢ a = b
state_after: no goals

tactic: rintro ⟨g, rfl⟩
state_before: case refine_3
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ (∃ g, S = {g}) → IsComplement S univ
state_after: case refine_3.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
T : Set G
g : G
⊢ IsComplement {g} univ

tactic: exact isComplement_singleton_univ
state_before: case refine_3.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
T : Set G
g : G
⊢ IsComplement {g} univ
state_after: no goals
Theorem: CharTwo.add_mul_self
File: Mathlib/Algebra/CharP/Two.lean

tactic: rw [← pow_two, ← pow_two, ← pow_two, add_sq]
state_before: R : Type u_1
ι : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CharP R 2
x y : R
⊢ (x + y) * (x + y) = x * x + y * y
state_after: no goals
Theorem: AffineBasis.toMatrix_mul_toMatrix
File: Mathlib/LinearAlgebra/AffineSpace/Matrix.lean

tactic: ext l m
state_before: ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : Ring k
inst✝² : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι
⊢ b.toMatrix ⇑b₂ * b₂.toMatrix ⇑b = 1
state_after: case a
ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : Ring k
inst✝² : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι
l m : ι
⊢ (b.toMatrix ⇑b₂ * b₂.toMatrix ⇑b) l m = 1 l m

tactic: change (b.coords (b₂ l) ᵥ* b₂.toMatrix b) m = _
state_before: case a
ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : Ring k
inst✝² : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι
l m : ι
⊢ (b.toMatrix ⇑b₂ * b₂.toMatrix ⇑b) l m = 1 l m
state_after: case a
ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : Ring k
inst✝² : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι
l m : ι
⊢ (b.coords (b₂ l) ᵥ* b₂.toMatrix ⇑b) m = 1 l m

tactic: rw [toMatrix_vecMul_coords, coords_apply, ← toMatrix_apply, toMatrix_self]
state_before: case a
ι : Type u₁
k : Type u₂
V : Type u₃
P : Type u₄
inst✝⁵ : AddCommGroup V
inst✝⁴ : AffineSpace V P
inst✝³ : Ring k
inst✝² : Module k V
b : AffineBasis ι k P
ι' : Type u_1
inst✝¹ : Fintype ι
b₂ : AffineBasis ι k P
inst✝ : DecidableEq ι
l m : ι
⊢ (b.coords (b₂ l) ᵥ* b₂.toMatrix ⇑b) m = 1 l m
state_after: no goals
Theorem: AList.keys_subset_keys_of_entries_subset_entries
File: Mathlib/Data/List/AList.lean

tactic: intro k hk
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
⊢ s₁.keys ⊆ s₂.keys
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
⊢ k ∈ s₂.keys

tactic: letI : DecidableEq α := Classical.decEq α
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
⊢ k ∈ s₂.keys
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
this : DecidableEq α := Classical.decEq α
⊢ k ∈ s₂.keys

tactic: have := h (mem_lookup_iff.1 (Option.get_mem (lookup_isSome.2 hk)))
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
this : DecidableEq α := Classical.decEq α
⊢ k ∈ s₂.keys
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
this✝ : DecidableEq α := Classical.decEq α
this : ⟨k, (lookup k s₁).get ⋯⟩ ∈ s₂.entries
⊢ k ∈ s₂.keys

tactic: rw [← mem_lookup_iff, Option.mem_def] at this
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
this✝ : DecidableEq α := Classical.decEq α
this : ⟨k, (lookup k s₁).get ⋯⟩ ∈ s₂.entries
⊢ k ∈ s₂.keys
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
this✝ : DecidableEq α := Classical.decEq α
this : lookup k s₂ = some ((lookup k s₁).get ⋯)
⊢ k ∈ s₂.keys

tactic: rw [← mem_keys, ← lookup_isSome, this]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
this✝ : DecidableEq α := Classical.decEq α
this : lookup k s₂ = some ((lookup k s₁).get ⋯)
⊢ k ∈ s₂.keys
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
this✝ : DecidableEq α := Classical.decEq α
this : lookup k s₂ = some ((lookup k s₁).get ⋯)
⊢ (some ((lookup k s₁).get ⋯)).isSome = true

tactic: exact Option.isSome_some
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁ s₂ : AList β
h : s₁.entries ⊆ s₂.entries
k : α
hk : k ∈ s₁.keys
this✝ : DecidableEq α := Classical.decEq α
this : lookup k s₂ = some ((lookup k s₁).get ⋯)
⊢ (some ((lookup k s₁).get ⋯)).isSome = true
state_after: no goals
Theorem: Orthonormal.comp_linearIsometry
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rwa [f.orthonormal_comp_iff]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁸ : _root_.RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
ι : Type u_4
ι' : Type u_5
ι'' : Type u_6
E' : Type u_7
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace 𝕜 E'
E'' : Type u_8
inst✝¹ : NormedAddCommGroup E''
inst✝ : InnerProductSpace 𝕜 E''
v : ι → E
hv : Orthonormal 𝕜 v
f : E →ₗᵢ[𝕜] E'
⊢ Orthonormal 𝕜 (⇑f ∘ v)
state_after: no goals
Theorem: EReal.eq_top_iff_forall_lt
File: Mathlib/Data/Real/EReal.lean

tactic: constructor
state_before: x : EReal
⊢ x = ⊤ ↔ ∀ (y : ℝ), ↑y < x
state_after: case mp
x : EReal
⊢ x = ⊤ → ∀ (y : ℝ), ↑y < x

case mpr
x : EReal
⊢ (∀ (y : ℝ), ↑y < x) → x = ⊤

tactic: rintro rfl
state_before: case mp
x : EReal
⊢ x = ⊤ → ∀ (y : ℝ), ↑y < x
state_after: case mp

⊢ ∀ (y : ℝ), ↑y < ⊤

tactic: exact EReal.coe_lt_top
state_before: case mp

⊢ ∀ (y : ℝ), ↑y < ⊤
state_after: no goals

tactic: contrapose!
state_before: case mpr
x : EReal
⊢ (∀ (y : ℝ), ↑y < x) → x = ⊤
state_after: case mpr
x : EReal
⊢ x ≠ ⊤ → ∃ y, x ≤ ↑y

tactic: intro h
state_before: case mpr
x : EReal
⊢ x ≠ ⊤ → ∃ y, x ≤ ↑y
state_after: case mpr
x : EReal
h : x ≠ ⊤
⊢ ∃ y, x ≤ ↑y

tactic: exact ⟨x.toReal, le_coe_toReal h⟩
state_before: case mpr
x : EReal
h : x ≠ ⊤
⊢ ∃ y, x ≤ ↑y
state_after: no goals
Theorem: CategoryTheory.isIso_of_mono_of_isSplitEpi
File: Mathlib/CategoryTheory/EpiMono.lean

tactic: simp [← cancel_mono f]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
inst✝¹ : Mono f
inst✝ : IsSplitEpi f
⊢ f ≫ section_ f = 𝟙 X
state_after: no goals

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
inst✝¹ : Mono f
inst✝ : IsSplitEpi f
⊢ section_ f ≫ f = 𝟙 Y
state_after: no goals
Theorem: Fintype.piFinset_singleton
File: Mathlib/Data/Fintype/Pi.lean

tactic: simp only [Function.funext_iff, Fintype.mem_piFinset, mem_singleton]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
γ : α → Type u_2
δ : α → Type u_3
s : (a : α) → Finset (γ a)
f x✝ : (a : α) → δ a
⊢ (x✝ ∈ piFinset fun i => {f i}) ↔ x✝ ∈ {f}
state_after: no goals
Theorem: IsSelfAdjoint.pow
File: Mathlib/Algebra/Star/SelfAdjoint.lean

tactic: simp only [isSelfAdjoint_iff, star_pow, hx.star_eq]
state_before: R : Type u_1
A : Type u_2
inst✝¹ : Monoid R
inst✝ : StarMul R
x : R
hx : IsSelfAdjoint x
n : ℕ
⊢ IsSelfAdjoint (x ^ n)
state_after: no goals
Theorem: FreeAddMonoid.countP_of
File: Mathlib/Algebra/FreeMonoid/Count.lean

tactic: simp [countP, List.countP, List.countP.go]
state_before: α : Type u_1
p : α → Prop
inst✝ : DecidablePred p
x : α
⊢ (countP p) (of x) = if p x = (true = true) then 1 else 0
state_after: no goals
Theorem: Isometry.preimage_emetric_closedBall
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: ext y
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f : α → β
x✝ y z : α
s : Set α
h : Isometry f
x : α
r : ℝ≥0∞
⊢ f ⁻¹' EMetric.closedBall (f x) r = EMetric.closedBall x r
state_after: case h
ι : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f : α → β
x✝ y✝ z : α
s : Set α
h : Isometry f
x : α
r : ℝ≥0∞
y : α
⊢ y ∈ f ⁻¹' EMetric.closedBall (f x) r ↔ y ∈ EMetric.closedBall x r

tactic: simp [h.edist_eq]
state_before: case h
ι : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
f : α → β
x✝ y✝ z : α
s : Set α
h : Isometry f
x : α
r : ℝ≥0∞
y : α
⊢ y ∈ f ⁻¹' EMetric.closedBall (f x) r ↔ y ∈ EMetric.closedBall x r
state_after: no goals
Theorem: Matrix.det_vandermonde_ne_zero_iff
File: Mathlib/LinearAlgebra/Vandermonde.lean

tactic: unfold Function.Injective
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
n : ℕ
v : Fin n → R
⊢ (vandermonde v).det ≠ 0 ↔ Function.Injective v
state_after: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
n : ℕ
v : Fin n → R
⊢ (vandermonde v).det ≠ 0 ↔ ∀ ⦃a₁ a₂ : Fin n⦄, v a₁ = v a₂ → a₁ = a₂

tactic: simp only [det_vandermonde_eq_zero_iff, Ne, not_exists, not_and, Classical.not_not]
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
n : ℕ
v : Fin n → R
⊢ (vandermonde v).det ≠ 0 ↔ ∀ ⦃a₁ a₂ : Fin n⦄, v a₁ = v a₂ → a₁ = a₂
state_after: no goals
Theorem: Combinatorics.Line.diagonal_apply
File: Mathlib/Combinatorics/HalesJewett.lean

tactic: simp_rw [Line.diagonal, Option.getD_none]
state_before: α : Type u_1
ι : Type u_2
inst✝ : Nonempty ι
x : α
⊢ (fun x i => ((diagonal α ι).idxFun i).getD x) x = fun x_1 => x
state_after: no goals
Theorem: Multiset.Nat.antidiagonal_succ
File: Mathlib/Data/Multiset/NatAntidiagonal.lean

tactic: simp only [antidiagonal, List.Nat.antidiagonal_succ, map_coe, cons_coe]
state_before: n : ℕ
⊢ antidiagonal (n + 1) = (0, n + 1) ::ₘ map (Prod.map Nat.succ id) (antidiagonal n)
state_after: no goals
Theorem: QuadraticForm.polar_neg
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simp only [polar, Pi.neg_apply, sub_eq_add_neg, neg_add]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : CommRing R
inst✝ : AddCommGroup M
f : M → R
x y : M
⊢ polar (-f) x y = -polar f x y
state_after: no goals
Theorem: Rat.mul_den
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [mul_def, normalize_eq]
state_before: q₁ q₂ : ℚ
⊢ (q₁ * q₂).den = q₁.den * q₂.den / (q₁.num * q₂.num).natAbs.gcd (q₁.den * q₂.den)
state_after: no goals
Theorem: BoxIntegral.IntegrationParams.henstock_le_riemann
File: Mathlib/Analysis/BoxIntegral/Partition/Filter.lean

tactic: trivial
state_before: ι : Type u_1
inst✝ : Fintype ι
I J : Box ι
c c₁ c₂ : ℝ≥0
r r₁ r₂ : (ι → ℝ) → ↑(Set.Ioi 0)
π π₁ π₂ : TaggedPrepartition I
l l₁ l₂ : IntegrationParams
⊢ Henstock ≤ Riemann
state_after: no goals
Theorem: Nat.Primrec'.encode
File: Mathlib/Computability/Primrec.lean

tactic: rw [v.eq_nil]
state_before: v : Vector ℕ 0
⊢ 0 = encode v
state_after: v : Vector ℕ 0
⊢ 0 = encode nil

tactic: rfl
state_before: v : Vector ℕ 0
⊢ 0 = encode nil
state_after: no goals
Theorem: HahnSeries.SummableFamily.support_hsum_subset
File: Mathlib/RingTheory/HahnSeries/Summable.lean

tactic: rw [mem_support, hsum_coeff, finsum_eq_sum _ (s.finite_co_support _)] at hg
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s : SummableFamily Γ R α
g : Γ
hg : g ∈ s.hsum.support
⊢ g ∈ ⋃ a, (s a).support
state_after: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s : SummableFamily Γ R α
g : Γ
hg : ∑ i ∈ ⋯.toFinset, (s i).coeff g ≠ 0
⊢ g ∈ ⋃ a, (s a).support

tactic: obtain ⟨a, _, h2⟩ := exists_ne_zero_of_sum_ne_zero hg
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s : SummableFamily Γ R α
g : Γ
hg : ∑ i ∈ ⋯.toFinset, (s i).coeff g ≠ 0
⊢ g ∈ ⋃ a, (s a).support
state_after: case intro.intro
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s : SummableFamily Γ R α
g : Γ
hg : ∑ i ∈ ⋯.toFinset, (s i).coeff g ≠ 0
a : α
left✝ : a ∈ ⋯.toFinset
h2 : (s a).coeff g ≠ 0
⊢ g ∈ ⋃ a, (s a).support

tactic: rw [Set.mem_iUnion]
state_before: case intro.intro
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s : SummableFamily Γ R α
g : Γ
hg : ∑ i ∈ ⋯.toFinset, (s i).coeff g ≠ 0
a : α
left✝ : a ∈ ⋯.toFinset
h2 : (s a).coeff g ≠ 0
⊢ g ∈ ⋃ a, (s a).support
state_after: case intro.intro
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s : SummableFamily Γ R α
g : Γ
hg : ∑ i ∈ ⋯.toFinset, (s i).coeff g ≠ 0
a : α
left✝ : a ∈ ⋯.toFinset
h2 : (s a).coeff g ≠ 0
⊢ ∃ i, g ∈ (s i).support

tactic: exact ⟨a, h2⟩
state_before: case intro.intro
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s : SummableFamily Γ R α
g : Γ
hg : ∑ i ∈ ⋯.toFinset, (s i).coeff g ≠ 0
a : α
left✝ : a ∈ ⋯.toFinset
h2 : (s a).coeff g ≠ 0
⊢ ∃ i, g ∈ (s i).support
state_after: no goals
Theorem: Order.PFilter.sInf_gc
File: Mathlib/Order/PFilter.lean

tactic: simp only [le_sInf_iff, SetLike.mem_coe]
state_before: P : Type u_1
inst✝ : CompleteSemilatticeInf P
F✝ : PFilter P
x : P
F : (PFilter P)ᵒᵈ
⊢ (fun x => toDual (principal x)) x ≤ F ↔ x ≤ (fun F => sInf ↑(ofDual F)) F
state_after: P : Type u_1
inst✝ : CompleteSemilatticeInf P
F✝ : PFilter P
x : P
F : (PFilter P)ᵒᵈ
⊢ toDual (principal x) ≤ F ↔ ∀ b ∈ ofDual F, x ≤ b

tactic: rfl
state_before: P : Type u_1
inst✝ : CompleteSemilatticeInf P
F✝ : PFilter P
x : P
F : (PFilter P)ᵒᵈ
⊢ toDual (principal x) ≤ F ↔ ∀ b ∈ ofDual F, x ≤ b
state_after: no goals
Theorem: SimpleGraph.Walk.map_append
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p <;> simp [*]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u✝ v✝ u' v' : V
p✝ : G.Walk u✝ v✝
u v w : V
p : G.Walk u v
q : G.Walk v w
⊢ Walk.map f (p.append q) = (Walk.map f p).append (Walk.map f q)
state_after: no goals
Theorem: Finset.prod_le_one
File: Mathlib/Algebra/Order/BigOperators/Ring/Finset.lean

tactic: convert ← prod_le_prod h0 h1
state_before: ι : Type u_1
R : Type u_2
inst✝³ : CommMonoidWithZero R
inst✝² : PartialOrder R
inst✝¹ : ZeroLEOneClass R
inst✝ : PosMulMono R
f g : ι → R
s t : Finset ι
h0 : ∀ i ∈ s, 0 ≤ f i
h1 : ∀ i ∈ s, f i ≤ 1
⊢ ∏ i ∈ s, f i ≤ 1
state_after: case h.e'_4
ι : Type u_1
R : Type u_2
inst✝³ : CommMonoidWithZero R
inst✝² : PartialOrder R
inst✝¹ : ZeroLEOneClass R
inst✝ : PosMulMono R
f g : ι → R
s t : Finset ι
h0 : ∀ i ∈ s, 0 ≤ f i
h1 : ∀ i ∈ s, f i ≤ 1
⊢ ∏ i ∈ s, 1 = 1

tactic: exact Finset.prod_const_one
state_before: case h.e'_4
ι : Type u_1
R : Type u_2
inst✝³ : CommMonoidWithZero R
inst✝² : PartialOrder R
inst✝¹ : ZeroLEOneClass R
inst✝ : PosMulMono R
f g : ι → R
s t : Finset ι
h0 : ∀ i ∈ s, 0 ≤ f i
h1 : ∀ i ∈ s, f i ≤ 1
⊢ ∏ i ∈ s, 1 = 1
state_after: no goals
Theorem: CochainComplex.mappingCone.triangleMapOfHomotopy_comm₃
File: Mathlib/Algebra/Homology/HomotopyCategory/Pretriangulated.lean

tactic: ext p
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : Preadditive C
inst✝¹ : HasZeroObject C
inst✝ : HasBinaryBiproducts C
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ mapOfHomotopy H ≫ (triangle φ₂).mor₃ = (triangle φ₁).mor₃ ≫ (CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map a
state_after: case h
C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : Preadditive C
inst✝¹ : HasZeroObject C
inst✝ : HasBinaryBiproducts C
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
p : ℤ
⊢ (mapOfHomotopy H ≫ (triangle φ₂).mor₃).f p =
    ((triangle φ₁).mor₃ ≫ (CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map a).f p

tactic: simp [ext_from_iff _ _ _ rfl, triangle, mapOfHomotopy,
  Cochain.rightShift_v _ 1 0 _ p p _ (p + 1) rfl]
state_before: case h
C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : Preadditive C
inst✝¹ : HasZeroObject C
inst✝ : HasBinaryBiproducts C
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
p : ℤ
⊢ (mapOfHomotopy H ≫ (triangle φ₂).mor₃).f p =
    ((triangle φ₁).mor₃ ≫ (CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map a).f p
state_after: no goals
Theorem: Set.toFinset_Ico
File: Mathlib/Order/Interval/Finset/Defs.lean

tactic: ext
state_before: α✝ : Type u_1
β : Type u_2
inst✝⁴ : Preorder α✝
p : α✝ → Prop
inst✝³ : DecidablePred p
y : α✝
α : Type u_3
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
a b : α
inst✝ : Fintype ↑(Ico a b)
⊢ (Ico a b).toFinset = Finset.Ico a b
state_after: case a
α✝ : Type u_1
β : Type u_2
inst✝⁴ : Preorder α✝
p : α✝ → Prop
inst✝³ : DecidablePred p
y : α✝
α : Type u_3
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
a b : α
inst✝ : Fintype ↑(Ico a b)
a✝ : α
⊢ a✝ ∈ (Ico a b).toFinset ↔ a✝ ∈ Finset.Ico a b

tactic: simp
state_before: case a
α✝ : Type u_1
β : Type u_2
inst✝⁴ : Preorder α✝
p : α✝ → Prop
inst✝³ : DecidablePred p
y : α✝
α : Type u_3
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
a b : α
inst✝ : Fintype ↑(Ico a b)
a✝ : α
⊢ a✝ ∈ (Ico a b).toFinset ↔ a✝ ∈ Finset.Ico a b
state_after: no goals
Theorem: PadicInt.intCast_eq
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

tactic: norm_cast
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
z1 z2 : ℤ
⊢ ↑z1 = ↑z2 ↔ z1 = z2
state_after: no goals

tactic: norm_cast
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
z1 z2 : ℤ
this : ↑z1 = ↑z2 ↔ z1 = z2
⊢ ↑z1 = ↑z2 ↔ ↑z1 = ↑z2
state_after: no goals
Theorem: Set.Finite.encard_lt_top
File: Mathlib/Data/Set/Card.lean

tactic: refine h.induction_on (by simp) ?_
state_before: α : Type u_1
β : Type u_2
s t : Set α
h : s.Finite
⊢ s.encard < ⊤
state_after: α : Type u_1
β : Type u_2
s t : Set α
h : s.Finite
⊢ ∀ {a : α} {s : Set α}, a ∉ s → s.Finite → s.encard < ⊤ → (insert a s).encard < ⊤

tactic: rintro a t hat _ ht'
state_before: α : Type u_1
β : Type u_2
s t : Set α
h : s.Finite
⊢ ∀ {a : α} {s : Set α}, a ∉ s → s.Finite → s.encard < ⊤ → (insert a s).encard < ⊤
state_after: α : Type u_1
β : Type u_2
s t✝ : Set α
h : s.Finite
a : α
t : Set α
hat : a ∉ t
a✝ : t.Finite
ht' : t.encard < ⊤
⊢ (insert a t).encard < ⊤

tactic: rw [encard_insert_of_not_mem hat]
state_before: α : Type u_1
β : Type u_2
s t✝ : Set α
h : s.Finite
a : α
t : Set α
hat : a ∉ t
a✝ : t.Finite
ht' : t.encard < ⊤
⊢ (insert a t).encard < ⊤
state_after: α : Type u_1
β : Type u_2
s t✝ : Set α
h : s.Finite
a : α
t : Set α
hat : a ∉ t
a✝ : t.Finite
ht' : t.encard < ⊤
⊢ t.encard + 1 < ⊤

tactic: exact lt_tsub_iff_right.1 ht'
state_before: α : Type u_1
β : Type u_2
s t✝ : Set α
h : s.Finite
a : α
t : Set α
hat : a ∉ t
a✝ : t.Finite
ht' : t.encard < ⊤
⊢ t.encard + 1 < ⊤
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
s t : Set α
h : s.Finite
⊢ ∅.encard < ⊤
state_after: no goals
Theorem: CategoryTheory.StructuredArrow.isCoseparating_proj_preimage
File: Mathlib/CategoryTheory/Generator.lean

tactic: refine fun X Y f g hfg => ext _ _ (h𝒢 _ _ fun G hG h => ?_)
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
S : D
T : C ⥤ D
𝒢 : Set C
h𝒢 : IsCoseparating 𝒢
⊢ IsCoseparating ((proj S T).obj ⁻¹' 𝒢)
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
S : D
T : C ⥤ D
𝒢 : Set C
h𝒢 : IsCoseparating 𝒢
X Y : StructuredArrow S T
f g : X ⟶ Y
hfg : ∀ G ∈ (proj S T).obj ⁻¹' 𝒢, ∀ (h : Y ⟶ G), f ≫ h = g ≫ h
G : C
hG : G ∈ 𝒢
h : Y.right ⟶ G
⊢ f.right ≫ h = g.right ≫ h

tactic: exact congr_arg CommaMorphism.right (hfg (mk (Y.hom ≫ T.map h)) hG (homMk h rfl))
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
S : D
T : C ⥤ D
𝒢 : Set C
h𝒢 : IsCoseparating 𝒢
X Y : StructuredArrow S T
f g : X ⟶ Y
hfg : ∀ G ∈ (proj S T).obj ⁻¹' 𝒢, ∀ (h : Y ⟶ G), f ≫ h = g ≫ h
G : C
hG : G ∈ 𝒢
h : Y.right ⟶ G
⊢ f.right ≫ h = g.right ≫ h
state_after: no goals
Theorem: Batteries.RBNode.Balanced.balRight
File: .lake/packages/batteries/Batteries/Data/RBMap/WF.lean

tactic: rw [← reverse_reverse (balRight ..), reverse_balRight]
state_before: α✝ : Type u_1
l : RBNode α✝
v : α✝
r : RBNode α✝
cl : RBColor
n : Nat
hl : l.Balanced cl (n + 1)
hr : RedRed True r n
⊢ RedRed (cl = red) (l.balRight v r) (n + 1)
state_after: α✝ : Type u_1
l : RBNode α✝
v : α✝
r : RBNode α✝
cl : RBColor
n : Nat
hl : l.Balanced cl (n + 1)
hr : RedRed True r n
⊢ RedRed (cl = red) (r.reverse.balLeft v l.reverse).reverse (n + 1)

tactic: exact .reverse <| hl.reverse.balLeft hr.reverse
state_before: α✝ : Type u_1
l : RBNode α✝
v : α✝
r : RBNode α✝
cl : RBColor
n : Nat
hl : l.Balanced cl (n + 1)
hr : RedRed True r n
⊢ RedRed (cl = red) (r.reverse.balLeft v l.reverse).reverse (n + 1)
state_after: no goals