tasksource/leandojo huggingface dataset:
Theorem: Set.mulIndicator_congr
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: simp only [mulIndicator]
state_before: α : Type u_1
β : Type ?u.9864
ι : Type ?u.9867
M : Type u_2
N : Type ?u.9873
inst✝¹ : One M
inst✝ : One N
s t : Set α
f g : α → M
a : α
h : EqOn f g s
x : α
⊢ mulIndicator s f x = mulIndicator s g x

tactic: split_ifs with h_1
state_before: α : Type u_1
β : Type ?u.9864
ι : Type ?u.9867
M : Type u_2
N : Type ?u.9873
inst✝¹ : One M
inst✝ : One N
s t : Set α
f g : α → M
a : α
h : EqOn f g s
x : α
⊢ (if x ∈ s then f x else 1) = if x ∈ s then g x else 1

tactic: rfl
state_before: case inr
α : Type u_1
β : Type ?u.9864
ι : Type ?u.9867
M : Type u_2
N : Type ?u.9873
inst✝¹ : One M
inst✝ : One N
s t : Set α
f g : α → M
a : α
h : EqOn f g s
x : α
h_1 : ¬x ∈ s
⊢ 1 = 1

tactic: exact h h_1
state_before: case inl
α : Type u_1
β : Type ?u.9864
ι : Type ?u.9867
M : Type u_2
N : Type ?u.9873
inst✝¹ : One M
inst✝ : One N
s t : Set α
f g : α → M
a : α
h : EqOn f g s
x : α
h_1 : x ∈ s
⊢ f x = g x
Theorem: HomologicalComplex.dTo_eq
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: obtain rfl := c.prev_eq' r
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
i j : ι
r : ComplexShape.Rel c i j
⊢ dTo C j = (xPrevIso C r).hom ≫ d C i j

tactic: exact (Category.id_comp _).symm
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
j : ι
r : ComplexShape.Rel c (ComplexShape.prev c j) j
⊢ dTo C j = (xPrevIso C r).hom ≫ d C (ComplexShape.prev c j) j
Theorem: Ideal.rank_prime_pow_ramificationIdx
File: Mathlib/NumberTheory/RamificationInertia.lean

tactic: letI : NeZero e := ⟨he⟩
state_before: R : Type u
inst✝⁵ : CommRing R
S : Type v
inst✝⁴ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
hfp : NeZero e
inst✝³ : IsDomain S
inst✝² : IsDedekindDomain S
inst✝¹ : IsMaximal p
inst✝ : IsPrime P
hP0 : P ≠ ⊥
he : e ≠ 0
⊢ Module.rank (R ⧸ p) (S ⧸ P ^ e) = e • Module.rank (R ⧸ p) (S ⧸ P)

tactic: have := rank_pow_quot f p P hP0 0 (Nat.zero_le e)
state_before: R : Type u
inst✝⁵ : CommRing R
S : Type v
inst✝⁴ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
hfp : NeZero e
inst✝³ : IsDomain S
inst✝² : IsDedekindDomain S
inst✝¹ : IsMaximal p
inst✝ : IsPrime P
hP0 : P ≠ ⊥
he : e ≠ 0
this : NeZero e := { out := he }
⊢ Module.rank (R ⧸ p) (S ⧸ P ^ e) = e • Module.rank (R ⧸ p) (S ⧸ P)

tactic: rw [pow_zero, Nat.sub_zero, Ideal.one_eq_top, Ideal.map_top] at this
state_before: R : Type u
inst✝⁵ : CommRing R
S : Type v
inst✝⁴ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
hfp : NeZero e
inst✝³ : IsDomain S
inst✝² : IsDedekindDomain S
inst✝¹ : IsMaximal p
inst✝ : IsPrime P
hP0 : P ≠ ⊥
he : e ≠ 0
this✝ : NeZero e := { out := he }
this : Module.rank (R ⧸ p) { x // x ∈ map (Quotient.mk (P ^ e)) (P ^ 0) } = (e - 0) • Module.rank (R ⧸ p) (S ⧸ P)
⊢ Module.rank (R ⧸ p) (S ⧸ P ^ e) = e • Module.rank (R ⧸ p) (S ⧸ P)

tactic: exact (rank_top (R ⧸ p) _).symm.trans this
state_before: R : Type u
inst✝⁵ : CommRing R
S : Type v
inst✝⁴ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
hfp : NeZero e
inst✝³ : IsDomain S
inst✝² : IsDedekindDomain S
inst✝¹ : IsMaximal p
inst✝ : IsPrime P
hP0 : P ≠ ⊥
he : e ≠ 0
this✝ : NeZero e := { out := he }
this : Module.rank (R ⧸ p) { x // x ∈ ⊤ } = e • Module.rank (R ⧸ p) (S ⧸ P)
⊢ Module.rank (R ⧸ p) (S ⧸ P ^ e) = e • Module.rank (R ⧸ p) (S ⧸ P)
Theorem: ENNReal.ofReal_pow
File: Mathlib/Data/Real/ENNReal.lean

tactic: rw [ofReal_eq_coe_nnreal hp, ← coe_pow, ← ofReal_coe_nnreal, NNReal.coe_pow, NNReal.coe_mk]
state_before: α : Type ?u.815243
β : Type ?u.815246
a b c d : ℝ≥0∞
r p✝ q : ℝ≥0
p : ℝ
hp : 0 ≤ p
n : ℕ
⊢ ENNReal.ofReal (p ^ n) = ENNReal.ofReal p ^ n
Theorem: Int.dvd_add_left
File: Std/Data/Int/DivMod.lean

tactic: have := Int.dvd_sub h H
state_before: a b c : Int
H : a ∣ c
h : a ∣ b + c
⊢ a ∣ b

tactic: rwa [Int.add_sub_cancel] at this
state_before: a b c : Int
H : a ∣ c
h : a ∣ b + c
this : a ∣ b + c - c
⊢ a ∣ b
Theorem: List.get_set_eq
File: Std/Data/List/Lemmas.lean

tactic: rw [← Option.some_inj, ← get?_eq_get, get?_set_eq, get?_eq_get] <;> simp_all
state_before: α : Type u_1
l : List α
i : Nat
a : α
h : i < length (set l i a)
⊢ get (set l i a) { val := i, isLt := h } = a
Theorem: nhds_left'_sup_nhds_right
File: Mathlib/Topology/Algebra/Order/LeftRight.lean

tactic: rw [← nhdsWithin_union, Iio_union_Ici, nhdsWithin_univ]
state_before: α : Type u_1
β : Type ?u.2014
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : TopologicalSpace β
a : α
⊢ 𝓝[Iio a] a ⊔ 𝓝[Ici a] a = 𝓝 a
Theorem: Option.getD_map
File: Std/Data/Option/Lemmas.lean

tactic: cases o <;> rfl
state_before: α : Type u_1
β : Type u_2
f : α → β
x : α
o : Option α
⊢ getD (Option.map f o) (f x) = f (getD o x)
Theorem: BoundedContinuousFunction.coe_nsmulRec
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: rw [nsmulRec, zero_smul, coe_zero]
state_before: F : Type ?u.935054
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : PseudoMetricSpace β
inst✝¹ : AddMonoid β
inst✝ : LipschitzAdd β
f g : α →ᵇ β
x : α
C : ℝ
⊢ ↑(nsmulRec 0 f) = 0 • ↑f

tactic: rw [nsmulRec, succ_nsmul, coe_add, coe_nsmulRec n]
state_before: F : Type ?u.935054
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : PseudoMetricSpace β
inst✝¹ : AddMonoid β
inst✝ : LipschitzAdd β
f g : α →ᵇ β
x : α
C : ℝ
n : ℕ
⊢ ↑(nsmulRec (n + 1) f) = (n + 1) • ↑f
Theorem: eq_zero_of_sameRay_neg_smul_right
File: Mathlib/LinearAlgebra/Ray.lean

tactic: rcases h with (rfl | h₀ | ⟨r₁, r₂, hr₁, hr₂, h⟩)
state_before: R : Type u_1
inst✝⁵ : StrictOrderedCommRing R
M : Type u_2
N : Type ?u.147146
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
x y : M
inst✝ : NoZeroSMulDivisors R M
r : R
hr : r < 0
h : SameRay R x (r • x)
⊢ x = 0

tactic: rfl
state_before: case inl
R : Type u_1
inst✝⁵ : StrictOrderedCommRing R
M : Type u_2
N : Type ?u.147146
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
y : M
inst✝ : NoZeroSMulDivisors R M
r : R
hr : r < 0
⊢ 0 = 0

tactic: simpa [hr.ne] using h₀
state_before: case inr.inl
R : Type u_1
inst✝⁵ : StrictOrderedCommRing R
M : Type u_2
N : Type ?u.147146
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
x y : M
inst✝ : NoZeroSMulDivisors R M
r : R
hr : r < 0
h₀ : r • x = 0
⊢ x = 0

tactic: rw [← sub_eq_zero, smul_smul, ← sub_smul, smul_eq_zero] at h
state_before: case inr.inr.intro.intro.intro.intro
R : Type u_1
inst✝⁵ : StrictOrderedCommRing R
M : Type u_2
N : Type ?u.147146
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
x y : M
inst✝ : NoZeroSMulDivisors R M
r : R
hr : r < 0
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • x = r₂ • r • x
⊢ x = 0

tactic: refine' h.resolve_left (ne_of_gt <| sub_pos.2 _)
state_before: case inr.inr.intro.intro.intro.intro
R : Type u_1
inst✝⁵ : StrictOrderedCommRing R
M : Type u_2
N : Type ?u.147146
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
x y : M
inst✝ : NoZeroSMulDivisors R M
r : R
hr : r < 0
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h✝ : r₁ • x = r₂ • r • x
h : r₁ - r₂ * r = 0 ∨ x = 0
⊢ x = 0

tactic: exact (mul_neg_of_pos_of_neg hr₂ hr).trans hr₁
state_before: case inr.inr.intro.intro.intro.intro
R : Type u_1
inst✝⁵ : StrictOrderedCommRing R
M : Type u_2
N : Type ?u.147146
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
x y : M
inst✝ : NoZeroSMulDivisors R M
r : R
hr : r < 0
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h✝ : r₁ • x = r₂ • r • x
h : r₁ - r₂ * r = 0 ∨ x = 0
⊢ r₂ * r < r₁
Theorem: Field.closure.isSubmonoid
File: Mathlib/Deprecated/Subfield.lean

tactic: rintro _ _ ⟨p, hp, q, hq, hq0, rfl⟩ ⟨r, hr, s, hs, hs0, rfl⟩
state_before: F : Type u_1
inst✝ : Field F
S : Set F
⊢ ∀ {a b : F}, a ∈ closure S → b ∈ closure S → a * b ∈ closure S

tactic: exact ⟨p * r, IsSubmonoid.mul_mem Ring.closure.isSubring.toIsSubmonoid hp hr, q * s,
  IsSubmonoid.mul_mem Ring.closure.isSubring.toIsSubmonoid hq hs,
  (div_mul_div_comm _ _ _ _).symm⟩
state_before: case intro.intro.intro.intro.refl.intro.intro.intro.intro.refl
F : Type u_1
inst✝ : Field F
S : Set F
p : F
hp : p ∈ Ring.closure S
q : F
hq : q ∈ Ring.closure S
r : F
hr : r ∈ Ring.closure S
s : F
hs : s ∈ Ring.closure S
⊢ p / q * (r / s) ∈ closure S
Theorem: Set.mulIndicator_apply_le'
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: by_cases ha : a ∈ s
state_before: α : Type u_1
β : Type ?u.151856
ι : Type ?u.151859
M : Type u_2
N : Type ?u.151865
inst✝¹ : One M
s t : Set α
f g : α → M
a : α
y : M
inst✝ : LE M
hfg : a ∈ s → f a ≤ y
hg : ¬a ∈ s → 1 ≤ y
⊢ mulIndicator s f a ≤ y

tactic: simpa [ha] using hfg ha
state_before: case pos
α : Type u_1
β : Type ?u.151856
ι : Type ?u.151859
M : Type u_2
N : Type ?u.151865
inst✝¹ : One M
s t : Set α
f g : α → M
a : α
y : M
inst✝ : LE M
hfg : a ∈ s → f a ≤ y
hg : ¬a ∈ s → 1 ≤ y
ha : a ∈ s
⊢ mulIndicator s f a ≤ y

tactic: simpa [ha] using hg ha
state_before: case neg
α : Type u_1
β : Type ?u.151856
ι : Type ?u.151859
M : Type u_2
N : Type ?u.151865
inst✝¹ : One M
s t : Set α
f g : α → M
a : α
y : M
inst✝ : LE M
hfg : a ∈ s → f a ≤ y
hg : ¬a ∈ s → 1 ≤ y
ha : ¬a ∈ s
⊢ mulIndicator s f a ≤ y
Theorem: Metric.toGlue_commute
File: Mathlib/Topology/MetricSpace/Gluing.lean

tactic: let i : PseudoMetricSpace (X ⊕ Y) := gluePremetric hΦ hΨ
state_before: X : Type u
Y : Type v
Z : Type w
inst✝³ : Nonempty Z
inst✝² : MetricSpace Z
inst✝¹ : MetricSpace X
inst✝ : MetricSpace Y
Φ : Z → X
Ψ : Z → Y
ε : ℝ
hΦ : Isometry Φ
hΨ : Isometry Ψ
⊢ toGlueL hΦ hΨ ∘ Φ = toGlueR hΦ hΨ ∘ Ψ

tactic: let _ := i.toUniformSpace
state_before: X : Type u
Y : Type v
Z : Type w
inst✝³ : Nonempty Z
inst✝² : MetricSpace Z
inst✝¹ : MetricSpace X
inst✝ : MetricSpace Y
Φ : Z → X
Ψ : Z → Y
ε : ℝ
hΦ : Isometry Φ
hΨ : Isometry Ψ
i : PseudoMetricSpace (X ⊕ Y) := gluePremetric hΦ hΨ
⊢ toGlueL hΦ hΨ ∘ Φ = toGlueR hΦ hΨ ∘ Ψ

tactic: funext
state_before: X : Type u
Y : Type v
Z : Type w
inst✝³ : Nonempty Z
inst✝² : MetricSpace Z
inst✝¹ : MetricSpace X
inst✝ : MetricSpace Y
Φ : Z → X
Ψ : Z → Y
ε : ℝ
hΦ : Isometry Φ
hΨ : Isometry Ψ
i : PseudoMetricSpace (X ⊕ Y) := gluePremetric hΦ hΨ
x✝ : UniformSpace (X ⊕ Y) := PseudoMetricSpace.toUniformSpace
⊢ toGlueL hΦ hΨ ∘ Φ = toGlueR hΦ hΨ ∘ Ψ

tactic: simp only [comp, toGlueL, toGlueR]
state_before: case h
X : Type u
Y : Type v
Z : Type w
inst✝³ : Nonempty Z
inst✝² : MetricSpace Z
inst✝¹ : MetricSpace X
inst✝ : MetricSpace Y
Φ : Z → X
Ψ : Z → Y
ε : ℝ
hΦ : Isometry Φ
hΨ : Isometry Ψ
i : PseudoMetricSpace (X ⊕ Y) := gluePremetric hΦ hΨ
x✝¹ : UniformSpace (X ⊕ Y) := PseudoMetricSpace.toUniformSpace
x✝ : Z
⊢ (toGlueL hΦ hΨ ∘ Φ) x✝ = (toGlueR hΦ hΨ ∘ Ψ) x✝

tactic: refine' UniformSpace.SeparationQuotient.mk_eq_mk.2 (Metric.inseparable_iff.2 _)
state_before: case h
X : Type u
Y : Type v
Z : Type w
inst✝³ : Nonempty Z
inst✝² : MetricSpace Z
inst✝¹ : MetricSpace X
inst✝ : MetricSpace Y
Φ : Z → X
Ψ : Z → Y
ε : ℝ
hΦ : Isometry Φ
hΨ : Isometry Ψ
i : PseudoMetricSpace (X ⊕ Y) := gluePremetric hΦ hΨ
x✝¹ : UniformSpace (X ⊕ Y) := PseudoMetricSpace.toUniformSpace
x✝ : Z
⊢ Quotient.mk'' (Sum.inl (Φ x✝)) = Quotient.mk'' (Sum.inr (Ψ x✝))

tactic: exact glueDist_glued_points Φ Ψ 0 _
state_before: case h
X : Type u
Y : Type v
Z : Type w
inst✝³ : Nonempty Z
inst✝² : MetricSpace Z
inst✝¹ : MetricSpace X
inst✝ : MetricSpace Y
Φ : Z → X
Ψ : Z → Y
ε : ℝ
hΦ : Isometry Φ
hΨ : Isometry Ψ
i : PseudoMetricSpace (X ⊕ Y) := gluePremetric hΦ hΨ
x✝¹ : UniformSpace (X ⊕ Y) := PseudoMetricSpace.toUniformSpace
x✝ : Z
⊢ dist (Sum.inl (Φ x✝)) (Sum.inr (Ψ x✝)) = 0
Theorem: bihimp_of_ge
File: Mathlib/Order/SymmDiff.lean

tactic: rw [bihimp, himp_eq_top_iff.2 h, top_inf_eq]
state_before: ι : Type ?u.38627
α : Type u_1
β : Type ?u.38633
π : ι → Type ?u.38638
inst✝ : GeneralizedHeytingAlgebra α
a✝ b✝ c d a b : α
h : b ≤ a
⊢ a ⇔ b = a ⇨ b
Theorem: Matrix.cons_add_cons
File: Mathlib/Data/Fin/VecNotation.lean

tactic: simp
state_before: α : Type u
m n o : ℕ
m' : Type ?u.64749
n' : Type ?u.64752
o' : Type ?u.64755
inst✝ : Add α
x : α
v : Fin n → α
y : α
w : Fin n → α
⊢ vecCons x v + vecCons y w = vecCons (x + y) (v + w)
Theorem: Nat.noZeroSMulDivisors
File: Mathlib/Algebra/Module/Basic.lean

tactic: intro c x
state_before: α : Type ?u.271530
R : Type ?u.271533
k : Type ?u.271536
S : Type ?u.271539
M : Type u_1
M₂ : Type ?u.271545
M₃ : Type ?u.271548
ι : Type ?u.271551
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : CharZero R
⊢ ∀ {c : ℕ} {x : M}, c • x = 0 → c = 0 ∨ x = 0

tactic: rw [nsmul_eq_smul_cast R, smul_eq_zero]
state_before: α : Type ?u.271530
R : Type ?u.271533
k : Type ?u.271536
S : Type ?u.271539
M : Type u_1
M₂ : Type ?u.271545
M₃ : Type ?u.271548
ι : Type ?u.271551
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : CharZero R
c : ℕ
x : M
⊢ c • x = 0 → c = 0 ∨ x = 0

tactic: simp
state_before: α : Type ?u.271530
R : Type ?u.271533
k : Type ?u.271536
S : Type ?u.271539
M : Type u_1
M₂ : Type ?u.271545
M₃ : Type ?u.271548
ι : Type ?u.271551
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : CharZero R
c : ℕ
x : M
⊢ ↑c = 0 ∨ x = 0 → c = 0 ∨ x = 0
Theorem: Fin.cycleRange_of_eq
File: Mathlib/GroupTheory/Perm/Fin.lean

tactic: rw [cycleRange_of_le h.le, if_pos h]
state_before: n : ℕ
i j : Fin (Nat.succ n)
h : j = i
⊢ ↑(cycleRange i) j = 0
Theorem: LocalHomeomorph.contDiffWithinAt_extend_coord_change'
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: refine' contDiffWithinAt_extend_coord_change I hf hf' _
state_before: 𝕜 : Type u_3
E : Type u_4
M : Type u_2
H : Type u_1
E' : Type ?u.178926
M' : Type ?u.178929
H' : Type ?u.178932
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s t : Set M
inst✝ : ChartedSpace H M
hf : f ∈ maximalAtlas I M
hf' : f' ∈ maximalAtlas I M
x : M
hxf : x ∈ f.source
hxf' : x ∈ f'.source
⊢ ContDiffWithinAt 𝕜 ⊤ (↑(extend f I) ∘ ↑(LocalEquiv.symm (extend f' I))) (range ↑I) (↑(extend f' I) x)

tactic: rw [← extend_image_source_inter]
state_before: 𝕜 : Type u_3
E : Type u_4
M : Type u_2
H : Type u_1
E' : Type ?u.178926
M' : Type ?u.178929
H' : Type ?u.178932
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s t : Set M
inst✝ : ChartedSpace H M
hf : f ∈ maximalAtlas I M
hf' : f' ∈ maximalAtlas I M
x : M
hxf : x ∈ f.source
hxf' : x ∈ f'.source
⊢ ↑(extend f' I) x ∈ (LocalEquiv.symm (extend f' I) ≫ extend f I).source

tactic: exact mem_image_of_mem _ ⟨hxf', hxf⟩
state_before: 𝕜 : Type u_3
E : Type u_4
M : Type u_2
H : Type u_1
E' : Type ?u.178926
M' : Type ?u.178929
H' : Type ?u.178932
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s t : Set M
inst✝ : ChartedSpace H M
hf : f ∈ maximalAtlas I M
hf' : f' ∈ maximalAtlas I M
x : M
hxf : x ∈ f.source
hxf' : x ∈ f'.source
⊢ ↑(extend f' I) x ∈ ↑(extend f' I) '' (f'.source ∩ f.source)
Theorem: ZMod.χ₄_int_eq_if_mod_four
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

tactic: have help : ∀ m : ℤ, 0 ≤ m → m < 4 → χ₄ m = if m % 2 = 0 then 0 else if m = 1 then 1 else -1 := by
  decide
state_before: n : ℤ
⊢ ↑χ₄ ↑n = if n % 2 = 0 then 0 else if n % 4 = 1 then 1 else -1

tactic: rw [← Int.emod_emod_of_dvd n (by norm_num : (2 : ℤ) ∣ 4), ← ZMod.int_cast_mod n 4]
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 4 → ↑χ₄ ↑m = if m % 2 = 0 then 0 else if m = 1 then 1 else -1
⊢ ↑χ₄ ↑n = if n % 2 = 0 then 0 else if n % 4 = 1 then 1 else -1

tactic: exact help (n % 4) (Int.emod_nonneg n (by norm_num)) (Int.emod_lt n (by norm_num))
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 4 → ↑χ₄ ↑m = if m % 2 = 0 then 0 else if m = 1 then 1 else -1
⊢ ↑χ₄ ↑(n % ↑4) = if n % 4 % 2 = 0 then 0 else if n % 4 = 1 then 1 else -1

tactic: decide
state_before: n : ℤ
⊢ ∀ (m : ℤ), 0 ≤ m → m < 4 → ↑χ₄ ↑m = if m % 2 = 0 then 0 else if m = 1 then 1 else -1

tactic: norm_num
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 4 → ↑χ₄ ↑m = if m % 2 = 0 then 0 else if m = 1 then 1 else -1
⊢ 2 ∣ 4

tactic: norm_num
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 4 → ↑χ₄ ↑m = if m % 2 = 0 then 0 else if m = 1 then 1 else -1
⊢ 4 ≠ 0

tactic: norm_num
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 4 → ↑χ₄ ↑m = if m % 2 = 0 then 0 else if m = 1 then 1 else -1
⊢ 4 ≠ 0
Theorem: le_mul_inv_iff_le
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← mul_le_mul_iff_right b, one_mul, inv_mul_cancel_right]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LE α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ 1 ≤ a * b⁻¹ ↔ b ≤ a
Theorem: MeasureTheory.pairwise_disjoint_fundamentalInterior
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

tactic: refine' fun a b hab => disjoint_left.2 _
state_before: G : Type u_1
H : Type ?u.515944
α : Type u_2
β : Type ?u.515950
E : Type ?u.515953
inst✝¹ : Group G
inst✝ : MulAction G α
s : Set α
x : α
⊢ Pairwise (Disjoint on fun g => g • fundamentalInterior G s)

tactic: rintro _ ⟨x, hx, rfl⟩ ⟨y, hy, hxy⟩
state_before: G : Type u_1
H : Type ?u.515944
α : Type u_2
β : Type ?u.515950
E : Type ?u.515953
inst✝¹ : Group G
inst✝ : MulAction G α
s : Set α
x : α
a b : G
hab : a ≠ b
⊢ ∀ ⦃a_1 : α⦄, a_1 ∈ (fun g => g • fundamentalInterior G s) a → ¬a_1 ∈ (fun g => g • fundamentalInterior G s) b

tactic: rw [mem_fundamentalInterior] at hx hy
state_before: case intro.intro.intro.intro
G : Type u_1
H : Type ?u.515944
α : Type u_2
β : Type ?u.515950
E : Type ?u.515953
inst✝¹ : Group G
inst✝ : MulAction G α
s : Set α
x✝ : α
a b : G
hab : a ≠ b
x : α
hx : x ∈ fundamentalInterior G s
y : α
hy : y ∈ fundamentalInterior G s
hxy : (fun x => b • x) y = (fun x => a • x) x
⊢ False

tactic: refine' hx.2 (a⁻¹ * b) _ _
state_before: case intro.intro.intro.intro
G : Type u_1
H : Type ?u.515944
α : Type u_2
β : Type ?u.515950
E : Type ?u.515953
inst✝¹ : Group G
inst✝ : MulAction G α
s : Set α
x✝ : α
a b : G
hab : a ≠ b
x : α
hx : x ∈ s ∧ ∀ (g : G), g ≠ 1 → ¬x ∈ g • s
y : α
hy : y ∈ s ∧ ∀ (g : G), g ≠ 1 → ¬y ∈ g • s
hxy : (fun x => b • x) y = (fun x => a • x) x
⊢ False

tactic: rwa [Ne.def, inv_mul_eq_iff_eq_mul, mul_one, eq_comm]
state_before: case intro.intro.intro.intro.refine'_1
G : Type u_1
H : Type ?u.515944
α : Type u_2
β : Type ?u.515950
E : Type ?u.515953
inst✝¹ : Group G
inst✝ : MulAction G α
s : Set α
x✝ : α
a b : G
hab : a ≠ b
x : α
hx : x ∈ s ∧ ∀ (g : G), g ≠ 1 → ¬x ∈ g • s
y : α
hy : y ∈ s ∧ ∀ (g : G), g ≠ 1 → ¬y ∈ g • s
hxy : (fun x => b • x) y = (fun x => a • x) x
⊢ a⁻¹ * b ≠ 1

case intro.intro.intro.intro.refine'_2
G : Type u_1
H : Type ?u.515944
α : Type u_2
β : Type ?u.515950
E : Type ?u.515953
inst✝¹ : Group G
inst✝ : MulAction G α
s : Set α
x✝ : α
a b : G
hab : a ≠ b
x : α
hx : x ∈ s ∧ ∀ (g : G), g ≠ 1 → ¬x ∈ g • s
y : α
hy : y ∈ s ∧ ∀ (g : G), g ≠ 1 → ¬y ∈ g • s
hxy : (fun x => b • x) y = (fun x => a • x) x
⊢ x ∈ (a⁻¹ * b) • s

tactic: simpa [mul_smul, ← hxy, mem_inv_smul_set_iff] using hy.1
state_before: case intro.intro.intro.intro.refine'_2
G : Type u_1
H : Type ?u.515944
α : Type u_2
β : Type ?u.515950
E : Type ?u.515953
inst✝¹ : Group G
inst✝ : MulAction G α
s : Set α
x✝ : α
a b : G
hab : a ≠ b
x : α
hx : x ∈ s ∧ ∀ (g : G), g ≠ 1 → ¬x ∈ g • s
y : α
hy : y ∈ s ∧ ∀ (g : G), g ≠ 1 → ¬y ∈ g • s
hxy : (fun x => b • x) y = (fun x => a • x) x
⊢ x ∈ (a⁻¹ * b) • s
Theorem: Set.Countable.isGδ_compl
File: Mathlib/Topology/GDelta.lean

tactic: rw [← biUnion_of_singleton s, compl_iUnion₂]
state_before: α : Type u_1
β : Type ?u.11615
γ : Type ?u.11618
ι : Type ?u.11621
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
s : Set α
hs : Set.Countable s
⊢ IsGδ (sᶜ)

tactic: exact isGδ_biInter hs fun x _ => isGδ_compl_singleton x
state_before: α : Type u_1
β : Type ?u.11615
γ : Type ?u.11618
ι : Type ?u.11621
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
s : Set α
hs : Set.Countable s
⊢ IsGδ (⋂ (i : α) (_ : i ∈ s), {i}ᶜ)
Theorem: RatFunc.liftMonoidWithZeroHom_apply_div'
File: Mathlib/FieldTheory/RatFunc.lean

tactic: rw [← map_div₀, liftMonoidWithZeroHom_apply_div]
state_before: K : Type u
inst✝² : CommRing K
inst✝¹ : IsDomain K
L : Type u_1
inst✝ : CommGroupWithZero L
φ : K[X] →*₀ L
hφ : K[X]⁰ ≤ Submonoid.comap φ L⁰
p q : K[X]
⊢ ↑(liftMonoidWithZeroHom φ hφ) (↑(algebraMap K[X] (RatFunc K)) p) /
      ↑(liftMonoidWithZeroHom φ hφ) (↑(algebraMap K[X] (RatFunc K)) q) =
    ↑φ p / ↑φ q
Theorem: Set.Ico_eq_Ico_iff
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: simp [Subset.antisymm_iff] at e
state_before: α : Type u_1
β : Type ?u.69074
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : a₁ < b₁ ∨ a₂ < b₂
e : Ico a₁ b₁ = Ico a₂ b₂
⊢ a₁ = a₂ ∧ b₁ = b₂

tactic: simp [le_antisymm_iff]
state_before: α : Type u_1
β : Type ?u.69074
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : a₁ < b₁ ∨ a₂ < b₂
e : Ico a₁ b₁ ⊆ Ico a₂ b₂ ∧ Ico a₂ b₂ ⊆ Ico a₁ b₁
⊢ a₁ = a₂ ∧ b₁ = b₂

tactic: cases' h with h h <;>
simp [Ico_subset_Ico_iff h] at e <;>
[ rcases e with ⟨⟨h₁, h₂⟩, e'⟩; rcases e with ⟨e', ⟨h₁, h₂⟩⟩ ] <;>
have hab := (Ico_subset_Ico_iff <| h₁.trans_lt <| h.trans_le h₂).1 e' <;>
[ exact ⟨⟨hab.left, h₁⟩, ⟨h₂, hab.right⟩⟩; exact ⟨⟨h₁, hab.left⟩, ⟨hab.right, h₂⟩⟩ ]
state_before: α : Type u_1
β : Type ?u.69074
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : a₁ < b₁ ∨ a₂ < b₂
e : Ico a₁ b₁ ⊆ Ico a₂ b₂ ∧ Ico a₂ b₂ ⊆ Ico a₁ b₁
⊢ (a₁ ≤ a₂ ∧ a₂ ≤ a₁) ∧ b₁ ≤ b₂ ∧ b₂ ≤ b₁

tactic: rw [h₁, h₂]
state_before: α : Type u_1
β : Type ?u.69074
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : a₁ < b₁ ∨ a₂ < b₂
x✝ : a₁ = a₂ ∧ b₁ = b₂
h₁ : a₁ = a₂
h₂ : b₁ = b₂
⊢ Ico a₁ b₁ = Ico a₂ b₂
Theorem: Subgroup.index_eq_two_iff
File: Mathlib/GroupTheory/Index.lean

tactic: simp only [index, Nat.card_eq_two_iff' ((1 : G) : G ⧸ H), ExistsUnique, inv_mem_iff,
  QuotientGroup.exists_mk, QuotientGroup.forall_mk, Ne.def, QuotientGroup.eq, mul_one,
  xor_iff_iff_not]
state_before: G : Type u_1
inst✝ : Group G
H K L : Subgroup G
⊢ index H = 2 ↔ ∃ a, ∀ (b : G), Xor' (b * a ∈ H) (b ∈ H)

tactic: refine'
  exists_congr fun a => ⟨fun ha b => ⟨fun hba hb => _, fun hb => _⟩, fun ha => ⟨_, fun b hb => _⟩⟩
state_before: G : Type u_1
inst✝ : Group G
H K L : Subgroup G
⊢ (∃ x, ¬x ∈ H ∧ ∀ (x_1 : G), ¬x_1 ∈ H → x_1⁻¹ * x ∈ H) ↔ ∃ a, ∀ (b : G), b * a ∈ H ↔ ¬b ∈ H

tactic: exact ha.1 ((mul_mem_cancel_left hb).1 hba)
state_before: case refine'_1
G : Type u_1
inst✝ : Group G
H K L : Subgroup G
a : G
ha : ¬a ∈ H ∧ ∀ (x : G), ¬x ∈ H → x⁻¹ * a ∈ H
b : G
hba : b * a ∈ H
hb : b ∈ H
⊢ False

tactic: exact inv_inv b ▸ ha.2 _ (mt (inv_mem_iff (x := b)).1 hb)
state_before: case refine'_2
G : Type u_1
inst✝ : Group G
H K L : Subgroup G
a : G
ha : ¬a ∈ H ∧ ∀ (x : G), ¬x ∈ H → x⁻¹ * a ∈ H
b : G
hb : ¬b ∈ H
⊢ b * a ∈ H

tactic: rw [← inv_mem_iff (x := a), ← ha, inv_mul_self]
state_before: case refine'_3
G : Type u_1
inst✝ : Group G
H K L : Subgroup G
a : G
ha : ∀ (b : G), b * a ∈ H ↔ ¬b ∈ H
⊢ ¬a ∈ H

tactic: exact one_mem _
state_before: case refine'_3
G : Type u_1
inst✝ : Group G
H K L : Subgroup G
a : G
ha : ∀ (b : G), b * a ∈ H ↔ ¬b ∈ H
⊢ 1 ∈ H

tactic: rwa [ha, inv_mem_iff (x := b)]
state_before: case refine'_4
G : Type u_1
inst✝ : Group G
H K L : Subgroup G
a : G
ha : ∀ (b : G), b * a ∈ H ↔ ¬b ∈ H
b : G
hb : ¬b ∈ H
⊢ b⁻¹ * a ∈ H