1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Filter.iInf_sets_eq_finite
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [iInf_eq_iInf_finset, iInf_sets_eq]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
f✝ g : Filter α
s t : Set α
ι : Type u_2
f : ι → Filter α
⊢ (⨅ i, f i).sets = ⋃ t, (⨅ i ∈ t, f i).sets
state_after: case h
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
f✝ g : Filter α
s t : Set α
ι : Type u_2
f : ι → Filter α
⊢ Directed (fun x x_1 => x ≥ x_1) fun t => ⨅ i ∈ t, f i

tactic: exact directed_of_isDirected_le fun _ _ => biInf_mono
state_before: case h
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
f✝ g : Filter α
s t : Set α
ι : Type u_2
f : ι → Filter α
⊢ Directed (fun x x_1 => x ≥ x_1) fun t => ⨅ i ∈ t, f i
state_after: no goals
Theorem: Polynomial.coeff_X_pow
File: Mathlib/Algebra/Polynomial/Coeff.lean

tactic: simp only [one_mul, RingHom.map_one, ← coeff_C_mul_X_pow]
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
k n : ℕ
⊢ (X ^ k).coeff n = if n = k then 1 else 0
state_after: no goals
Theorem: Rack.self_distrib_inv
File: Mathlib/Algebra/Quandle.lean

tactic: rw [← left_cancel (x ◃⁻¹ y), right_inv, ← left_cancel x, right_inv, self_distrib]
state_before: R : Type u_1
inst✝ : Rack R
x y z : R
⊢ x ◃⁻¹ y ◃⁻¹ z = (x ◃⁻¹ y) ◃⁻¹ x ◃⁻¹ z
state_after: R : Type u_1
inst✝ : Rack R
x y z : R
⊢ (x ◃ x ◃⁻¹ y) ◃ x ◃ x ◃⁻¹ y ◃⁻¹ z = z

tactic: repeat' rw [right_inv]
state_before: R : Type u_1
inst✝ : Rack R
x y z : R
⊢ (x ◃ x ◃⁻¹ y) ◃ x ◃ x ◃⁻¹ y ◃⁻¹ z = z
state_after: no goals

tactic: rw [right_inv]
state_before: R : Type u_1
inst✝ : Rack R
x y z : R
⊢ y ◃ y ◃⁻¹ z = z
state_after: no goals
Theorem: Derivation.leibniz_inv
File: Mathlib/RingTheory/Derivation/Basic.lean

tactic: rcases eq_or_ne a 0 with (rfl | ha)
state_before: R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a✝ b : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
a : K
⊢ D a⁻¹ = -a⁻¹ ^ 2 • D a
state_after: case inl
R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a b : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
⊢ D 0⁻¹ = -0⁻¹ ^ 2 • D 0

case inr
R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a✝ b : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
a : K
ha : a ≠ 0
⊢ D a⁻¹ = -a⁻¹ ^ 2 • D a

tactic: simp
state_before: case inl
R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a b : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
⊢ D 0⁻¹ = -0⁻¹ ^ 2 • D 0
state_after: no goals

tactic: exact D.leibniz_of_mul_eq_one (inv_mul_cancel ha)
state_before: case inr
R : Type u_1
inst✝⁸ : CommRing R
A : Type u_2
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module A M
inst✝³ : Module R M
D✝ D1 D2 : Derivation R A M
r : R
a✝ b : A
K : Type u_4
inst✝² : Field K
inst✝¹ : Module K M
inst✝ : Algebra R K
D : Derivation R K M
a : K
ha : a ≠ 0
⊢ D a⁻¹ = -a⁻¹ ^ 2 • D a
state_after: no goals
Theorem: HasStrictFDerivAt.sub
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simpa only [sub_eq_add_neg] using hf.add hg.neg
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hf : HasStrictFDerivAt f f' x
hg : HasStrictFDerivAt g g' x
⊢ HasStrictFDerivAt (fun x => f x - g x) (f' - g') x
state_after: no goals
Theorem: GradedRing.projZeroRingHom'_apply_coe
File: Mathlib/RingTheory/GradedAlgebra/Basic.lean

tactic: ext
state_before: ι : Type u_1
R : Type u_2
A : Type u_3
σ : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : CanonicallyOrderedAddCommMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
a : ↥(𝒜 0)
⊢ (projZeroRingHom' 𝒜) ↑a = a
state_after: case a
ι : Type u_1
R : Type u_2
A : Type u_3
σ : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : CanonicallyOrderedAddCommMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
a : ↥(𝒜 0)
⊢ ↑((projZeroRingHom' 𝒜) ↑a) = ↑a

tactic: simp only [coe_projZeroRingHom'_apply, projZeroRingHom_apply, decompose_coe, of_eq_same]
state_before: case a
ι : Type u_1
R : Type u_2
A : Type u_3
σ : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : CanonicallyOrderedAddCommMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
a : ↥(𝒜 0)
⊢ ↑((projZeroRingHom' 𝒜) ↑a) = ↑a
state_after: no goals
Theorem: Filter.map_eq_map_iff_of_injOn
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [le_antisymm_iff, map_le_map_iff_of_injOn hsf hsg hm,
  map_le_map_iff_of_injOn hsg hsf hm]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g✝ g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s✝ : Set α
t : Set β
f g : Filter α
m : α → β
s : Set α
hsf : s ∈ f
hsg : s ∈ g
hm : InjOn m s
⊢ map m f = map m g ↔ f = g
state_after: no goals
Theorem: Set.image2_subset
File: Mathlib/Data/Set/NAry.lean

tactic: rintro _ ⟨a, ha, b, hb, rfl⟩
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
hs : s ⊆ s'
ht : t ⊆ t'
⊢ image2 f s t ⊆ image2 f s' t'
state_after: case intro.intro.intro.intro
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a✝ a' : α
b✝ b' : β
c c' : γ
d d' : δ
hs : s ⊆ s'
ht : t ⊆ t'
a : α
ha : a ∈ s
b : β
hb : b ∈ t
⊢ f a b ∈ image2 f s' t'

tactic: exact mem_image2_of_mem (hs ha) (ht hb)
state_before: case intro.intro.intro.intro
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a✝ a' : α
b✝ b' : β
c c' : γ
d d' : δ
hs : s ⊆ s'
ht : t ⊆ t'
a : α
ha : a ∈ s
b : β
hb : b ∈ t
⊢ f a b ∈ image2 f s' t'
state_after: no goals
Theorem: zsmul_eq_mul'
File: Mathlib/Data/Int/Cast/Lemmas.lean

tactic: rw [zsmul_eq_mul, (n.cast_commute a).eq]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝ : NonAssocRing α
a✝ b : α
n✝ : ℤ
a : α
n : ℤ
⊢ n • a = a * ↑n
state_after: no goals
Theorem: List.Nat.length_antidiagonal
File: Mathlib/Data/List/NatAntidiagonal.lean

tactic: rw [antidiagonal, length_map, length_range]
state_before: n : ℕ
⊢ (antidiagonal n).length = n + 1
state_after: no goals
Theorem: Set.Ioo_inter_Ioc_of_left_le
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: rw [inter_comm, Ioc_inter_Ioo_of_right_le h, max_comm]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d : α
h : b₁ ≤ b₂
⊢ Ioo a₁ b₁ ∩ Ioc a₂ b₂ = Ioo (max a₁ a₂) b₁
state_after: no goals
Theorem: List.nodup_replicate
File: Mathlib/Data/List/Nodup.lean

tactic: simp [Nat.zero_le]
state_before: α : Type u
β : Type v
l l₁ l₂ : List α
r : α → α → Prop
a✝ b a : α
⊢ (replicate 0 a).Nodup ↔ 0 ≤ 1
state_after: no goals

tactic: simp
state_before: α : Type u
β : Type v
l l₁ l₂ : List α
r : α → α → Prop
a✝ b a : α
⊢ (replicate 1 a).Nodup ↔ 1 ≤ 1
state_after: no goals
Theorem: ONote.nf_repr_split
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: cases' e : split' o with a n
state_before: o o' : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (o', m)
⊢ o'.NF ∧ o.repr = o'.repr + ↑m
state_after: case mk
o o' : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (o', m)
a : ONote
n : ℕ
e : o.split' = (a, n)
⊢ o'.NF ∧ o.repr = o'.repr + ↑m

tactic: cases' nf_repr_split' e with s₁ s₂
state_before: case mk
o o' : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (o', m)
a : ONote
n : ℕ
e : o.split' = (a, n)
⊢ o'.NF ∧ o.repr = o'.repr + ↑m
state_after: case mk.intro
o o' : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (o', m)
a : ONote
n : ℕ
e : o.split' = (a, n)
s₁ : a.NF
s₂ : o.repr = ω * a.repr + ↑n
⊢ o'.NF ∧ o.repr = o'.repr + ↑m

tactic: rw [split_eq_scale_split' e] at h
state_before: case mk.intro
o o' : ONote
m : ℕ
inst✝ : o.NF
h : o.split = (o', m)
a : ONote
n : ℕ
e : o.split' = (a, n)
s₁ : a.NF
s₂ : o.repr = ω * a.repr + ↑n
⊢ o'.NF ∧ o.repr = o'.repr + ↑m
state_after: case mk.intro
o o' : ONote
m : ℕ
inst✝ : o.NF
a : ONote
n : ℕ
h : (scale 1 a, n) = (o', m)
e : o.split' = (a, n)
s₁ : a.NF
s₂ : o.repr = ω * a.repr + ↑n
⊢ o'.NF ∧ o.repr = o'.repr + ↑m

tactic: injection h
state_before: case mk.intro
o o' : ONote
m : ℕ
inst✝ : o.NF
a : ONote
n : ℕ
h : (scale 1 a, n) = (o', m)
e : o.split' = (a, n)
s₁ : a.NF
s₂ : o.repr = ω * a.repr + ↑n
⊢ o'.NF ∧ o.repr = o'.repr + ↑m
state_after: case mk.intro
o o' : ONote
m : ℕ
inst✝ : o.NF
a : ONote
n : ℕ
e : o.split' = (a, n)
s₁ : a.NF
s₂ : o.repr = ω * a.repr + ↑n
fst_eq✝ : scale 1 a = o'
snd_eq✝ : n = m
⊢ o'.NF ∧ o.repr = o'.repr + ↑m

tactic: substs o' n
state_before: case mk.intro
o o' : ONote
m : ℕ
inst✝ : o.NF
a : ONote
n : ℕ
e : o.split' = (a, n)
s₁ : a.NF
s₂ : o.repr = ω * a.repr + ↑n
fst_eq✝ : scale 1 a = o'
snd_eq✝ : n = m
⊢ o'.NF ∧ o.repr = o'.repr + ↑m
state_after: case mk.intro
o : ONote
m : ℕ
inst✝ : o.NF
a : ONote
s₁ : a.NF
e : o.split' = (a, m)
s₂ : o.repr = ω * a.repr + ↑m
⊢ (scale 1 a).NF ∧ o.repr = (scale 1 a).repr + ↑m

tactic: simp only [repr_scale, repr, opow_zero, Nat.succPNat_coe, Nat.cast_one, mul_one, add_zero,
  opow_one, s₂.symm, and_true]
state_before: case mk.intro
o : ONote
m : ℕ
inst✝ : o.NF
a : ONote
s₁ : a.NF
e : o.split' = (a, m)
s₂ : o.repr = ω * a.repr + ↑m
⊢ (scale 1 a).NF ∧ o.repr = (scale 1 a).repr + ↑m
state_after: case mk.intro
o : ONote
m : ℕ
inst✝ : o.NF
a : ONote
s₁ : a.NF
e : o.split' = (a, m)
s₂ : o.repr = ω * a.repr + ↑m
⊢ (scale 1 a).NF

tactic: infer_instance
state_before: case mk.intro
o : ONote
m : ℕ
inst✝ : o.NF
a : ONote
s₁ : a.NF
e : o.split' = (a, m)
s₂ : o.repr = ω * a.repr + ↑m
⊢ (scale 1 a).NF
state_after: no goals
Theorem: Polynomial.hom_eval₂
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: rw [← eval₂_map, eval₂_at_apply, eval_map]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
inst✝ : Semiring T
f : R →+* S
g : S →+* T
x : S
⊢ g (eval₂ f x p) = eval₂ (g.comp f) (g x) p
state_after: no goals
Theorem: IsUnit.mul_one_div_cancel
File: Mathlib/Algebra/Group/Units.lean

tactic: simp [h]
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : DivisionMonoid α
a b c : α
h : IsUnit a
⊢ a * (1 / a) = 1
state_after: no goals
Theorem: continuousAt_update_of_ne
File: Mathlib/Topology/Separation.lean

tactic: simp only [← continuousWithinAt_univ, continuousWithinAt_update_of_ne hne]
state_before: X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : T1Space X
inst✝¹ : DecidableEq X
inst✝ : TopologicalSpace Y
f : X → Y
x x' : X
y : Y
hne : x' ≠ x
⊢ ContinuousAt (update f x y) x' ↔ ContinuousAt f x'
state_after: no goals
Theorem: TopCat.prod_topology
File: Mathlib/Topology/Category/TopCat/Limits/Products.lean

tactic: let homeo := homeoOfIso (prodIsoProd X Y)
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
⊢ (X ⨯ Y).str = induced (⇑prod.fst) X.str ⊓ induced (⇑prod.snd) Y.str
state_after: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
homeo : ↑(X ⨯ Y) ≃ₜ ↑(of (↑X × ↑Y)) := homeoOfIso (X.prodIsoProd Y)
⊢ (X ⨯ Y).str = induced (⇑prod.fst) X.str ⊓ induced (⇑prod.snd) Y.str

tactic: refine homeo.inducing.induced.trans ?_
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
homeo : ↑(X ⨯ Y) ≃ₜ ↑(of (↑X × ↑Y)) := homeoOfIso (X.prodIsoProd Y)
⊢ (X ⨯ Y).str = induced (⇑prod.fst) X.str ⊓ induced (⇑prod.snd) Y.str
state_after: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
homeo : ↑(X ⨯ Y) ≃ₜ ↑(of (↑X × ↑Y)) := homeoOfIso (X.prodIsoProd Y)
⊢ induced (⇑homeo) (of (↑X × ↑Y)).topologicalSpace_coe = induced (⇑prod.fst) X.str ⊓ induced (⇑prod.snd) Y.str

tactic: change induced homeo (_ ⊓ _) = _
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
homeo : ↑(X ⨯ Y) ≃ₜ ↑(of (↑X × ↑Y)) := homeoOfIso (X.prodIsoProd Y)
⊢ induced (⇑homeo) (of (↑X × ↑Y)).topologicalSpace_coe = induced (⇑prod.fst) X.str ⊓ induced (⇑prod.snd) Y.str
state_after: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
homeo : ↑(X ⨯ Y) ≃ₜ ↑(of (↑X × ↑Y)) := homeoOfIso (X.prodIsoProd Y)
⊢ induced (⇑homeo) (induced Prod.fst X.topologicalSpace_coe ⊓ induced Prod.snd Y.topologicalSpace_coe) =
    induced (⇑prod.fst) X.str ⊓ induced (⇑prod.snd) Y.str

tactic: simp [induced_compose]
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
homeo : ↑(X ⨯ Y) ≃ₜ ↑(of (↑X × ↑Y)) := homeoOfIso (X.prodIsoProd Y)
⊢ induced (⇑homeo) (induced Prod.fst X.topologicalSpace_coe ⊓ induced Prod.snd Y.topologicalSpace_coe) =
    induced (⇑prod.fst) X.str ⊓ induced (⇑prod.snd) Y.str
state_after: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
homeo : ↑(X ⨯ Y) ≃ₜ ↑(of (↑X × ↑Y)) := homeoOfIso (X.prodIsoProd Y)
⊢ induced (Prod.fst ∘ ⇑homeo) X.topologicalSpace_coe ⊓ induced (Prod.snd ∘ ⇑homeo) Y.topologicalSpace_coe =
    induced (⇑prod.fst) X.str ⊓ induced (⇑prod.snd) Y.str

tactic: rfl
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
homeo : ↑(X ⨯ Y) ≃ₜ ↑(of (↑X × ↑Y)) := homeoOfIso (X.prodIsoProd Y)
⊢ induced (Prod.fst ∘ ⇑homeo) X.topologicalSpace_coe ⊓ induced (Prod.snd ∘ ⇑homeo) Y.topologicalSpace_coe =
    induced (⇑prod.fst) X.str ⊓ induced (⇑prod.snd) Y.str
state_after: no goals
Theorem: isEmpty_sum
File: Mathlib/Logic/IsEmpty.lean

tactic: simp only [← not_nonempty_iff, nonempty_sum, not_or]
state_before: α✝ : Sort u_1
β✝ : Sort u_2
γ : Sort u_3
α : Type u_4
β : Type u_5
⊢ IsEmpty (α ⊕ β) ↔ IsEmpty α ∧ IsEmpty β
state_after: no goals
Theorem: Orientation.kahler_neg_orientation
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

tactic: have : ∀ r : ℝ, Complex.ofReal' r = @RCLike.ofReal ℂ _ r := fun r => rfl
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ((-o).kahler x) y = (starRingEnd ℂ) ((o.kahler x) y)
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
this : ∀ (r : ℝ), ↑r = ↑r
⊢ ((-o).kahler x) y = (starRingEnd ℂ) ((o.kahler x) y)

tactic: simp [kahler_apply_apply, this]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
this : ∀ (r : ℝ), ↑r = ↑r
⊢ ((-o).kahler x) y = (starRingEnd ℂ) ((o.kahler x) y)
state_after: no goals
Theorem: NumberField.InfinitePlace.isComplex_iff
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: refine ⟨?_, fun h => ⟨embedding w, h, mk_embedding w⟩⟩
state_before: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
w : InfinitePlace K
⊢ w.IsComplex ↔ ¬ComplexEmbedding.IsReal w.embedding
state_after: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
w : InfinitePlace K
⊢ w.IsComplex → ¬ComplexEmbedding.IsReal w.embedding

tactic: rintro ⟨φ, ⟨hφ, rfl⟩⟩
state_before: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
w : InfinitePlace K
⊢ w.IsComplex → ¬ComplexEmbedding.IsReal w.embedding
state_after: case intro.intro
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
hφ : ¬ComplexEmbedding.IsReal φ
⊢ ¬ComplexEmbedding.IsReal (mk φ).embedding

tactic: contrapose! hφ
state_before: case intro.intro
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
hφ : ¬ComplexEmbedding.IsReal φ
⊢ ¬ComplexEmbedding.IsReal (mk φ).embedding
state_after: case intro.intro
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
hφ : ComplexEmbedding.IsReal (mk φ).embedding
⊢ ComplexEmbedding.IsReal φ

tactic: cases mk_eq_iff.mp (mk_embedding (mk φ)) with
| inl h => rwa [h] at hφ
| inr h => rwa [← ComplexEmbedding.isReal_conjugate_iff, h] at hφ
state_before: case intro.intro
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
hφ : ComplexEmbedding.IsReal (mk φ).embedding
⊢ ComplexEmbedding.IsReal φ
state_after: no goals

tactic: rwa [h] at hφ
state_before: case intro.intro.inl
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
hφ : ComplexEmbedding.IsReal (mk φ).embedding
h : (mk φ).embedding = φ
⊢ ComplexEmbedding.IsReal φ
state_after: no goals

tactic: rwa [← ComplexEmbedding.isReal_conjugate_iff, h] at hφ
state_before: case intro.intro.inr
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
hφ : ComplexEmbedding.IsReal (mk φ).embedding
h : ComplexEmbedding.conjugate (mk φ).embedding = φ
⊢ ComplexEmbedding.IsReal φ
state_after: no goals
Theorem: MeasureTheory.Content.outerMeasure_lt_top_of_isCompact
File: Mathlib/MeasureTheory/Measure/Content.lean

tactic: rcases exists_compact_superset hK with ⟨F, h1F, h2F⟩
state_before: G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
inst✝ : WeaklyLocallyCompactSpace G
K : Set G
hK : IsCompact K
⊢ μ.outerMeasure K < ⊤
state_after: case intro.intro
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
inst✝ : WeaklyLocallyCompactSpace G
K : Set G
hK : IsCompact K
F : Set G
h1F : IsCompact F
h2F : K ⊆ interior F
⊢ μ.outerMeasure K < ⊤

tactic: calc
  μ.outerMeasure K ≤ μ.outerMeasure (interior F) := measure_mono h2F
  _ ≤ μ ⟨F, h1F⟩ := by
    apply μ.outerMeasure_le ⟨interior F, isOpen_interior⟩ ⟨F, h1F⟩ interior_subset
  _ < ⊤ := μ.lt_top _
state_before: case intro.intro
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
inst✝ : WeaklyLocallyCompactSpace G
K : Set G
hK : IsCompact K
F : Set G
h1F : IsCompact F
h2F : K ⊆ interior F
⊢ μ.outerMeasure K < ⊤
state_after: no goals

tactic: apply μ.outerMeasure_le ⟨interior F, isOpen_interior⟩ ⟨F, h1F⟩ interior_subset
state_before: G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
inst✝ : WeaklyLocallyCompactSpace G
K : Set G
hK : IsCompact K
F : Set G
h1F : IsCompact F
h2F : K ⊆ interior F
⊢ μ.outerMeasure (interior F) ≤ (fun s => ↑(μ.toFun s)) { carrier := F, isCompact' := h1F }
state_after: no goals
Theorem: Complex.I_pow_bit1
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [pow_bit1', Complex.I_mul_I]
state_before: n : ℕ
⊢ I ^ bit1 n = (-1) ^ n * I
state_after: no goals
Theorem: lt_map_inv_iff
File: Mathlib/Order/Hom/Basic.lean

tactic: rw [← map_lt_map_iff f]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝³ : Preorder α
inst✝² : Preorder β
inst✝¹ : EquivLike F α β
inst✝ : OrderIsoClass F α β
f : F
a : α
b : β
⊢ a < EquivLike.inv f b ↔ f a < b
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝³ : Preorder α
inst✝² : Preorder β
inst✝¹ : EquivLike F α β
inst✝ : OrderIsoClass F α β
f : F
a : α
b : β
⊢ f a < f (EquivLike.inv f b) ↔ f a < b

tactic: simp only [EquivLike.apply_inv_apply]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝³ : Preorder α
inst✝² : Preorder β
inst✝¹ : EquivLike F α β
inst✝ : OrderIsoClass F α β
f : F
a : α
b : β
⊢ f a < f (EquivLike.inv f b) ↔ f a < b
state_after: no goals
Theorem: List.length_finRange
File: Mathlib/Data/List/Range.lean

tactic: rw [finRange, length_pmap, length_range]
state_before: α : Type u
n : ℕ
⊢ (finRange n).length = n
state_after: no goals
Theorem: Function.factorsThrough_iff
File: Mathlib/Logic/Function/Basic.lean

tactic: simp only [comp_apply, hf.extend_apply]
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
g : α → γ
inst✝ : Nonempty γ
hf : FactorsThrough g f
x : α
⊢ g x = (extend f g (const β (Classical.arbitrary γ)) ∘ f) x
state_after: no goals

tactic: rw [Classical.choose_spec h, comp_apply, comp_apply, hf]
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
g : α → γ
inst✝ : Nonempty γ
h : ∃ e, g = e ∘ f
x✝¹ x✝ : α
hf : f x✝¹ = f x✝
⊢ g x✝¹ = g x✝
state_after: no goals
Theorem: ProbabilityTheory.kernel.comap_map_comm
File: Mathlib/Probability/Kernel/Composition.lean

tactic: ext x s _
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f✝ : β → γ
g✝ : γ → α
κ : ↥(kernel β γ)
f : α → β
g : γ → δ
hf : Measurable f
hg : Measurable g
⊢ comap (map κ g hg) f hf = map (comap κ f hf) g hg
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f✝ : β → γ
g✝ : γ → α
κ : ↥(kernel β γ)
f : α → β
g : γ → δ
hf : Measurable f
hg : Measurable g
x : α
s : Set δ
a✝ : MeasurableSet s
⊢ ((comap (map κ g hg) f hf) x) s = ((map (comap κ f hf) g hg) x) s

tactic: rw [comap_apply, map_apply, map_apply, comap_apply]
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f✝ : β → γ
g✝ : γ → α
κ : ↥(kernel β γ)
f : α → β
g : γ → δ
hf : Measurable f
hg : Measurable g
x : α
s : Set δ
a✝ : MeasurableSet s
⊢ ((comap (map κ g hg) f hf) x) s = ((map (comap κ f hf) g hg) x) s
state_after: no goals
Theorem: convexJoin_assoc
File: Mathlib/Analysis/Convex/Join.lean

tactic: refine (convexJoin_assoc_aux _ _ _).antisymm ?_
state_before: ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s✝ t✝ u✝ : Set E
x y : E
s t u : Set E
⊢ convexJoin 𝕜 (convexJoin 𝕜 s t) u = convexJoin 𝕜 s (convexJoin 𝕜 t u)
state_after: ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s✝ t✝ u✝ : Set E
x y : E
s t u : Set E
⊢ convexJoin 𝕜 s (convexJoin 𝕜 t u) ⊆ convexJoin 𝕜 (convexJoin 𝕜 s t) u

tactic: simp_rw [convexJoin_comm s, convexJoin_comm _ u]
state_before: ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s✝ t✝ u✝ : Set E
x y : E
s t u : Set E
⊢ convexJoin 𝕜 s (convexJoin 𝕜 t u) ⊆ convexJoin 𝕜 (convexJoin 𝕜 s t) u
state_after: ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s✝ t✝ u✝ : Set E
x y : E
s t u : Set E
⊢ convexJoin 𝕜 (convexJoin 𝕜 u t) s ⊆ convexJoin 𝕜 u (convexJoin 𝕜 t s)

tactic: exact convexJoin_assoc_aux _ _ _
state_before: ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s✝ t✝ u✝ : Set E
x y : E
s t u : Set E
⊢ convexJoin 𝕜 (convexJoin 𝕜 u t) s ⊆ convexJoin 𝕜 u (convexJoin 𝕜 t s)
state_after: no goals