tasksource/leandojo huggingface dataset:
Theorem: Subgroup.exists_left_transversal
File: Mathlib/GroupTheory/Complement.lean

tactic: refine'
  ⟨Set.range (Function.update Quotient.out' _ g), range_mem_leftTransversals fun q => _,
    Quotient.mk'' g, Function.update_same (Quotient.mk'' g) g Quotient.out'⟩
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
⊢ ∃ S, S ∈ leftTransversals ↑H ∧ g ∈ S

tactic: by_cases hq : q = Quotient.mk'' g
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
q : G ⧸ H
⊢ ↑(Function.update Quotient.out' (Quotient.mk'' g) g q) = q

tactic: exact hq.symm ▸ congr_arg _ (Function.update_same (Quotient.mk'' g) g Quotient.out')
state_before: case pos
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
q : G ⧸ H
hq : q = Quotient.mk'' g
⊢ ↑(Function.update Quotient.out' (Quotient.mk'' g) g q) = q

tactic: refine' (Function.update_noteq _ g Quotient.out') ▸ q.out_eq'
state_before: case neg
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
q : G ⧸ H
hq : ¬q = Quotient.mk'' g
⊢ ↑(Function.update Quotient.out' (Quotient.mk'' g) g q) = q

tactic: exact hq
state_before: case neg
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
q : G ⧸ H
hq : ¬q = Quotient.mk'' g
⊢ q ≠ Quotient.mk'' g
Theorem: PrimeSpectrum.comap_id
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: ext
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.132631
inst✝ : CommRing S'
f : R →+* S
⊢ comap (RingHom.id R) = ContinuousMap.id (PrimeSpectrum R)

tactic: rfl
state_before: case h.asIdeal.h
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.132631
inst✝ : CommRing S'
f : R →+* S
a✝ : PrimeSpectrum R
x✝ : R
⊢ x✝ ∈ (↑(comap (RingHom.id R)) a✝).asIdeal ↔ x✝ ∈ (↑(ContinuousMap.id (PrimeSpectrum R)) a✝).asIdeal
Theorem: AlgebraicTopology.DoldKan.P_is_eventually_constant
File: Mathlib/AlgebraicTopology/DoldKan/PInfty.lean

tactic: rcases n with (_|n)
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
hqn : n ≤ q
⊢ HomologicalComplex.Hom.f (P (q + 1)) n = HomologicalComplex.Hom.f (P q) n

tactic: simp only [Nat.zero_eq, P_f_0_eq]
state_before: case zero
C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
hqn : Nat.zero ≤ q
⊢ HomologicalComplex.Hom.f (P (q + 1)) Nat.zero = HomologicalComplex.Hom.f (P q) Nat.zero

tactic: simp only [P_succ, add_right_eq_self, comp_add, HomologicalComplex.comp_f,
  HomologicalComplex.add_f_apply, comp_id]
state_before: case succ
C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
hqn : Nat.succ n ≤ q
⊢ HomologicalComplex.Hom.f (P (q + 1)) (Nat.succ n) = HomologicalComplex.Hom.f (P q) (Nat.succ n)

tactic: exact (HigherFacesVanish.of_P q n).comp_Hσ_eq_zero (Nat.succ_le_iff.mp hqn)
state_before: case succ
C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
hqn : Nat.succ n ≤ q
⊢ HomologicalComplex.Hom.f (P q) (Nat.succ n) ≫ HomologicalComplex.Hom.f (Hσ q) (Nat.succ n) = 0
Theorem: Finsupp.support_tsub
File: Mathlib/Data/Finsupp/Order.lean

tactic: simp (config := { contextual := true }) only [subset_iff, tsub_eq_zero_iff_le, mem_support_iff,
  Ne.def, coe_tsub, Pi.sub_apply, not_imp_not, zero_le, imp_true_iff]
state_before: ι : Type u_1
α : Type u_2
inst✝² : CanonicallyOrderedAddMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
f g : ι →₀ α
i : ι
a b : α
f1 f2 : ι →₀ α
⊢ (f1 - f2).support ⊆ f1.support
Theorem: CategoryTheory.Subobject.pullback_id
File: Mathlib/CategoryTheory/Subobject/Basic.lean

tactic: induction' x using Quotient.inductionOn' with f
state_before: C : Type u₁
inst✝² : Category C
X Y Z : C
D : Type u₂
inst✝¹ : Category D
inst✝ : HasPullbacks C
x : Subobject X
⊢ (pullback (𝟙 X)).obj x = x

tactic: exact Quotient.sound ⟨MonoOver.pullbackId.app f⟩
state_before: case h
C : Type u₁
inst✝² : Category C
X Y Z : C
D : Type u₂
inst✝¹ : Category D
inst✝ : HasPullbacks C
f : MonoOver X
⊢ (pullback (𝟙 X)).obj (Quotient.mk'' f) = Quotient.mk'' f
Theorem: ContDiffBump.zero_of_le_dist
File: Mathlib/Analysis/Calculus/BumpFunctionInner.lean

tactic: rwa [← nmem_support, support_eq, mem_ball, not_lt]
state_before: E : Type u_1
X : Type ?u.90452
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
hx : f.rOut ≤ dist x c
⊢ ↑f x = 0
Theorem: lineMap_lt_lineMap_iff_of_lt
File: Mathlib/LinearAlgebra/AffineSpace/Ordered.lean

tactic: simp only [lineMap_apply_module]
state_before: k : Type u_1
E : Type u_2
PE : Type ?u.56390
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
h : r < r'
⊢ ↑(lineMap a b) r < ↑(lineMap a b) r' ↔ a < b

tactic: rw [← lt_sub_iff_add_lt, add_sub_assoc, ← sub_lt_iff_lt_add', ← sub_smul, ← sub_smul,
  sub_sub_sub_cancel_left, smul_lt_smul_iff_of_pos (sub_pos.2 h)]
state_before: k : Type u_1
E : Type u_2
PE : Type ?u.56390
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
h : r < r'
⊢ (1 - r) • a + r • b < (1 - r') • a + r' • b ↔ a < b
Theorem: Polynomial.eval_int_cast_map
File: Mathlib/Data/Polynomial/Eval.lean

tactic: induction p using Polynomial.induction_on' with
| h_add p q hp hq =>
  simp only [hp, hq, Polynomial.map_add, RingHom.map_add, eval_add]
| h_monomial n r =>
  simp only [map_intCast, eval_monomial, map_monomial, map_pow, map_mul]
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✝
f✝ : R✝ →+* S✝
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : Ring S
f : R →+* S
p : R[X]
i : ℤ
⊢ eval (↑i) (map f p) = ↑f (eval (↑i) p)

tactic: simp only [hp, hq, Polynomial.map_add, RingHom.map_add, eval_add]
state_before: case h_add
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✝
f✝ : R✝ →+* S✝
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : Ring S
f : R →+* S
i : ℤ
p q : R[X]
hp : eval (↑i) (map f p) = ↑f (eval (↑i) p)
hq : eval (↑i) (map f q) = ↑f (eval (↑i) q)
⊢ eval (↑i) (map f (p + q)) = ↑f (eval (↑i) (p + q))

tactic: simp only [map_intCast, eval_monomial, map_monomial, map_pow, map_mul]
state_before: case h_monomial
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✝
f✝ : R✝ →+* S✝
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : Ring S
f : R →+* S
i : ℤ
n : ℕ
r : R
⊢ eval (↑i) (map f (↑(monomial n) r)) = ↑f (eval (↑i) (↑(monomial n) r))
Theorem: continuous_boolIndicator_iff_clopen
File: Mathlib/Topology/SubsetProperties.lean

tactic: constructor
state_before: α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
⊢ Continuous (boolIndicator U) ↔ IsClopen U

tactic: intro hc
state_before: case mp
α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
⊢ Continuous (boolIndicator U) → IsClopen U

tactic: rw [← U.preimage_boolIndicator_true]
state_before: case mp
α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
hc : Continuous (boolIndicator U)
⊢ IsClopen U

tactic: exact ⟨(isOpen_discrete _).preimage hc, (isClosed_discrete _).preimage hc⟩
state_before: case mp
α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
hc : Continuous (boolIndicator U)
⊢ IsClopen (boolIndicator U ⁻¹' {true})

tactic: refine' fun hU => ⟨fun s _ => _⟩
state_before: case mpr
α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
⊢ IsClopen U → Continuous (boolIndicator U)

tactic: rcases U.preimage_boolIndicator s with (h | h | h | h) <;> rw [h]
state_before: case mpr
α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
⊢ IsOpen (boolIndicator U ⁻¹' s)

tactic: exacts [isOpen_univ, hU.1, hU.2.isOpen_compl, isOpen_empty]
state_before: case mpr.inl
α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = univ
⊢ IsOpen univ

case mpr.inr.inl
α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = U
⊢ IsOpen U

case mpr.inr.inr.inl
α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = Uᶜ
⊢ IsOpen (Uᶜ)

case mpr.inr.inr.inr
α : Type u
β : Type v
ι : Type ?u.178896
π : ι → Type ?u.178901
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_1
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = ∅
⊢ IsOpen ∅
Theorem: MonoidHom.subgroupOf_range_eq_of_le
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: ext k
state_before: G : Type ?u.484195
G' : Type ?u.484198
inst✝⁶ : Group G
inst✝⁵ : Group G'
A : Type ?u.484207
inst✝⁴ : AddGroup A
N : Type ?u.484213
P : Type ?u.484216
inst✝³ : Group N
inst✝² : Group P
K✝ : Subgroup G
G₁ : Type u_1
G₂ : Type u_2
inst✝¹ : Group G₁
inst✝ : Group G₂
K : Subgroup G₂
f : G₁ →* G₂
h : range f ≤ K
⊢ subgroupOf (range f) K = range (codRestrict f K (_ : ∀ (x : G₁), ↑f x ∈ K))

tactic: refine' exists_congr _
state_before: case h
G : Type ?u.484195
G' : Type ?u.484198
inst✝⁶ : Group G
inst✝⁵ : Group G'
A : Type ?u.484207
inst✝⁴ : AddGroup A
N : Type ?u.484213
P : Type ?u.484216
inst✝³ : Group N
inst✝² : Group P
K✝ : Subgroup G
G₁ : Type u_1
G₂ : Type u_2
inst✝¹ : Group G₁
inst✝ : Group G₂
K : Subgroup G₂
f : G₁ →* G₂
h : range f ≤ K
k : { x // x ∈ K }
⊢ k ∈ subgroupOf (range f) K ↔ k ∈ range (codRestrict f K (_ : ∀ (x : G₁), ↑f x ∈ K))

tactic: simp [Subtype.ext_iff]
state_before: case h
G : Type ?u.484195
G' : Type ?u.484198
inst✝⁶ : Group G
inst✝⁵ : Group G'
A : Type ?u.484207
inst✝⁴ : AddGroup A
N : Type ?u.484213
P : Type ?u.484216
inst✝³ : Group N
inst✝² : Group P
K✝ : Subgroup G
G₁ : Type u_1
G₂ : Type u_2
inst✝¹ : Group G₁
inst✝ : Group G₂
K : Subgroup G₂
f : G₁ →* G₂
h : range f ≤ K
k : { x // x ∈ K }
⊢ ∀ (a : G₁), ↑f a = ↑(Subgroup.subtype K) k ↔ ↑(codRestrict f K (_ : ∀ (x : G₁), ↑f x ∈ K)) a = k
Theorem: Fin.nontrivial_iff_two_le
File: Mathlib/Data/Fin/Basic.lean

tactic: rcases n with (_ | _ | n) <;>
simp [←Nat.one_eq_succ_zero, Fin.nontrivial, not_nontrivial, Nat.succ_le_iff]
state_before: n m : ℕ
⊢ Nontrivial (Fin n) ↔ 2 ≤ n
Theorem: Fin.val_bit1
File: Mathlib/Data/Fin/Basic.lean

tactic: cases n
state_before: n✝ m n : ℕ
inst✝ : NeZero n
k : Fin n
⊢ ↑(bit1 k) = bit1 ↑k % n

tactic: simp [bit1, Fin.val_bit0, Fin.val_add, Fin.val_one]
state_before: case succ
n m n✝ : ℕ
inst✝ : NeZero (Nat.succ n✝)
k : Fin (Nat.succ n✝)
⊢ ↑(bit1 k) = bit1 ↑k % Nat.succ n✝

tactic: cases' k with k h
state_before: case zero
n m : ℕ
inst✝ : NeZero zero
k : Fin zero
⊢ ↑(bit1 k) = bit1 ↑k % zero

tactic: cases k
state_before: case zero.mk
n m : ℕ
inst✝ : NeZero zero
k : ℕ
h : k < zero
⊢ ↑(bit1 { val := k, isLt := h }) = bit1 ↑{ val := k, isLt := h } % zero

tactic: cases' h with _ h
state_before: case zero.mk.succ
n m : ℕ
inst✝ : NeZero zero
n✝ : ℕ
h : Nat.succ n✝ < zero
⊢ ↑(bit1 { val := Nat.succ n✝, isLt := h }) = bit1 ↑{ val := Nat.succ n✝, isLt := h } % zero

tactic: show _ % _ = _
state_before: case zero.mk.zero
n m : ℕ
inst✝ : NeZero zero
h : zero < zero
⊢ ↑(bit1 { val := zero, isLt := h }) = bit1 ↑{ val := zero, isLt := h } % zero

tactic: simp
state_before: case zero.mk.zero
n m : ℕ
inst✝ : NeZero zero
h : zero < zero
⊢ ((zero + zero) % zero + 1 % zero) % zero = bit1 ↑{ val := zero, isLt := h } % zero
Theorem: List.erase_append_right
File: Std/Data/List/Lemmas.lean

tactic: rw [erase_eq_eraseP, erase_eq_eraseP, eraseP_append_right]
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
h : ¬a ∈ l₁
⊢ List.erase (l₁ ++ l₂) a = l₁ ++ List.erase l₂ a

tactic: intros b h' h''
state_before: case a
α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
h : ¬a ∈ l₁
⊢ ∀ (b : α), b ∈ l₁ → ¬decide (a = b) = true

tactic: rw [of_decide_eq_true h''] at h
state_before: case a
α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
h : ¬a ∈ l₁
b : α
h' : b ∈ l₁
h'' : decide (a = b) = true
⊢ False

tactic: exact h h'
state_before: case a
α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
b : α
h : ¬b ∈ l₁
h' : b ∈ l₁
h'' : decide (a = b) = true
⊢ False
Theorem: PadicInt.isUnit_den
File: Mathlib/NumberTheory/Padics/RingHoms.lean

tactic: rw [isUnit_iff]
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
⊢ IsUnit ↑r.den

tactic: apply le_antisymm (r.den : ℤ_[p]).2
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
⊢ ‖↑r.den‖ = 1

tactic: rw [← not_lt, coe_nat_cast]
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
⊢ 1 ≤ ‖↑↑r.den‖

tactic: intro norm_denom_lt
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
⊢ ¬‖↑r.den‖ < 1

tactic: have hr : ‖(r * r.den : ℚ_[p])‖ = ‖(r.num : ℚ_[p])‖ := by
  congr
  rw_mod_cast [@Rat.mul_den_eq_num r]
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
⊢ False

tactic: rw [padicNormE.mul] at hr
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
hr : ‖↑r * ↑r.den‖ = ‖↑r.num‖
⊢ False

tactic: have key : ‖(r.num : ℚ_[p])‖ < 1 := by
  calc
    _ = _ := hr.symm
    _ < 1 * 1 := (mul_lt_mul' h norm_denom_lt (norm_nonneg _) zero_lt_one)
    _ = 1 := mul_one 1
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
hr : ‖↑r‖ * ‖↑r.den‖ = ‖↑r.num‖
⊢ False

tactic: have : ↑p ∣ r.num ∧ (p : ℤ) ∣ r.den := by
  simp only [← norm_int_lt_one_iff_dvd, ← padic_norm_e_of_padicInt]
  exact ⟨key, norm_denom_lt⟩
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
hr : ‖↑r‖ * ‖↑r.den‖ = ‖↑r.num‖
key : ‖↑r.num‖ < 1
⊢ False

tactic: apply hp_prime.1.not_dvd_one
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
hr : ‖↑r‖ * ‖↑r.den‖ = ‖↑r.num‖
key : ‖↑r.num‖ < 1
this : ↑p ∣ r.num ∧ ↑p ∣ ↑r.den
⊢ False

tactic: rwa [← r.reduced.gcd_eq_one, Nat.dvd_gcd_iff, ← Int.coe_nat_dvd_left, ← Int.coe_nat_dvd]
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
hr : ‖↑r‖ * ‖↑r.den‖ = ‖↑r.num‖
key : ‖↑r.num‖ < 1
this : ↑p ∣ r.num ∧ ↑p ∣ ↑r.den
⊢ p ∣ 1

tactic: congr
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
⊢ ‖↑r * ↑r.den‖ = ‖↑r.num‖

tactic: rw_mod_cast [@Rat.mul_den_eq_num r]
state_before: case e_a
p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
⊢ ↑r * ↑r.den = ↑r.num

tactic: calc
  _ = _ := hr.symm
  _ < 1 * 1 := (mul_lt_mul' h norm_denom_lt (norm_nonneg _) zero_lt_one)
  _ = 1 := mul_one 1
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
hr : ‖↑r‖ * ‖↑r.den‖ = ‖↑r.num‖
⊢ ‖↑r.num‖ < 1

tactic: simp only [← norm_int_lt_one_iff_dvd, ← padic_norm_e_of_padicInt]
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
hr : ‖↑r‖ * ‖↑r.den‖ = ‖↑r.num‖
key : ‖↑r.num‖ < 1
⊢ ↑p ∣ r.num ∧ ↑p ∣ ↑r.den

tactic: exact ⟨key, norm_denom_lt⟩
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r✝ r : ℚ
h : ‖↑r‖ ≤ 1
norm_denom_lt : ‖↑r.den‖ < 1
hr : ‖↑r‖ * ‖↑r.den‖ = ‖↑r.num‖
key : ‖↑r.num‖ < 1
⊢ ‖↑↑r.num‖ < 1 ∧ ‖↑↑↑r.den‖ < 1
Theorem: Seminorm.continuous_of_continuousAt_zero
File: Mathlib/Analysis/Seminorm.lean

tactic: letI := TopologicalAddGroup.toUniformSpace E
state_before: R : Type ?u.1410115
R' : Type ?u.1410118
𝕜 : Type ?u.1410121
𝕜₂ : Type ?u.1410124
𝕜₃ : Type ?u.1410127
𝕝 : Type u_2
E : Type u_1
E₂ : Type ?u.1410136
E₃ : Type ?u.1410139
F : Type ?u.1410142
G : Type ?u.1410145
ι : Type ?u.1410148
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p : Seminorm 𝕝 E
hp : ContinuousAt (↑p) 0
⊢ Continuous ↑p

tactic: haveI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
state_before: R : Type ?u.1410115
R' : Type ?u.1410118
𝕜 : Type ?u.1410121
𝕜₂ : Type ?u.1410124
𝕜₃ : Type ?u.1410127
𝕝 : Type u_2
E : Type u_1
E₂ : Type ?u.1410136
E₃ : Type ?u.1410139
F : Type ?u.1410142
G : Type ?u.1410145
ι : Type ?u.1410148
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p : Seminorm 𝕝 E
hp : ContinuousAt (↑p) 0
this : UniformSpace E := TopologicalAddGroup.toUniformSpace E
⊢ Continuous ↑p

tactic: exact (Seminorm.uniformContinuous_of_continuousAt_zero hp).continuous
state_before: R : Type ?u.1410115
R' : Type ?u.1410118
𝕜 : Type ?u.1410121
𝕜₂ : Type ?u.1410124
𝕜₃ : Type ?u.1410127
𝕝 : Type u_2
E : Type u_1
E₂ : Type ?u.1410136
E₃ : Type ?u.1410139
F : Type ?u.1410142
G : Type ?u.1410145
ι : Type ?u.1410148
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p : Seminorm 𝕝 E
hp : ContinuousAt (↑p) 0
this✝ : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this : UniformAddGroup E
⊢ Continuous ↑p
Theorem: Function.semiconj_of_isLUB
File: Mathlib/Order/SemiconjSup.lean

tactic: refine' fun y => (H _).unique _
state_before: α : Type u_1
β : Type ?u.7502
γ : Type ?u.7505
G : Type u_2
inst✝¹ : PartialOrder α
inst✝ : Group G
f₁ f₂ : G →* α ≃o α
h : α → α
H : ∀ (x : α), IsLUB (range fun g' => ↑(↑f₁ g')⁻¹ (↑(↑f₂ g') x)) (h x)
g : G
⊢ Semiconj h ↑(↑f₂ g) ↑(↑f₁ g)

tactic: have := (f₁ g).leftOrdContinuous (H y)
state_before: α : Type u_1
β : Type ?u.7502
γ : Type ?u.7505
G : Type u_2
inst✝¹ : PartialOrder α
inst✝ : Group G
f₁ f₂ : G →* α ≃o α
h : α → α
H : ∀ (x : α), IsLUB (range fun g' => ↑(↑f₁ g')⁻¹ (↑(↑f₂ g') x)) (h x)
g : G
y : α
⊢ IsLUB (range fun g' => ↑(↑f₁ g')⁻¹ (↑(↑f₂ g') (↑(↑f₂ g) y))) (↑(↑f₁ g) (h y))

tactic: rw [← range_comp, ← (Equiv.mulRight g).surjective.range_comp _] at this
state_before: α : Type u_1
β : Type ?u.7502
γ : Type ?u.7505
G : Type u_2
inst✝¹ : PartialOrder α
inst✝ : Group G
f₁ f₂ : G →* α ≃o α
h : α → α
H : ∀ (x : α), IsLUB (range fun g' => ↑(↑f₁ g')⁻¹ (↑(↑f₂ g') x)) (h x)
g : G
y : α
this : IsLUB (↑(↑f₁ g) '' range fun g' => ↑(↑f₁ g')⁻¹ (↑(↑f₂ g') y)) (↑(↑f₁ g) (h y))
⊢ IsLUB (range fun g' => ↑(↑f₁ g')⁻¹ (↑(↑f₂ g') (↑(↑f₂ g) y))) (↑(↑f₁ g) (h y))
Theorem: CocompactMap.tendsto_of_forall_preimage
File: Mathlib/Topology/ContinuousFunction/CocompactMap.lean

tactic: simpa using preimage_mono hts
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.9571
δ : Type ?u.9574
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
h : ∀ (s : Set β), IsCompact s → IsCompact (f ⁻¹' s)
s : Set β
hs : s ∈ cocompact β
t : Set β
ht : IsCompact t
hts : tᶜ ⊆ s
⊢ (f ⁻¹' t)ᶜ ⊆ f ⁻¹' s
Theorem: Odd.geom_sum_pos
File: Mathlib/Algebra/GeomSum.lean

tactic: rcases n with (_ | _ | k)
state_before: α : Type u
β : Type ?u.244183
n : ℕ
x : α
inst✝ : LinearOrderedRing α
h : Odd n
⊢ 0 < ∑ i in range n, x ^ i

tactic: rw [Nat.odd_iff_not_even] at h
state_before: case succ.succ
α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
k : ℕ
h : Odd (Nat.succ (Nat.succ k))
⊢ 0 < ∑ i in range (Nat.succ (Nat.succ k)), x ^ i

tactic: rcases lt_trichotomy (x + 1) 0 with (hx | hx | hx)
state_before: case succ.succ
α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
k : ℕ
h : ¬Even (Nat.succ (Nat.succ k))
⊢ 0 < ∑ i in range (Nat.succ (Nat.succ k)), x ^ i

tactic: exact ((show ¬Odd 0 by decide) h).elim
state_before: case zero
α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
h : Odd Nat.zero
⊢ 0 < ∑ i in range Nat.zero, x ^ i

tactic: decide
state_before: α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
h : Odd Nat.zero
⊢ ¬Odd 0

tactic: simp only [Nat.zero_eq, ← Nat.one_eq_succ_zero, geom_sum_one, zero_lt_one]
state_before: case succ.zero
α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
h : Odd (Nat.succ Nat.zero)
⊢ 0 < ∑ i in range (Nat.succ Nat.zero), x ^ i

tactic: have := geom_sum_alternating_of_lt_neg_one hx k.one_lt_succ_succ
state_before: case succ.succ.inl
α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
k : ℕ
h : ¬Even (Nat.succ (Nat.succ k))
hx : x + 1 < 0
⊢ 0 < ∑ i in range (Nat.succ (Nat.succ k)), x ^ i

tactic: simp only [h, if_false] at this
state_before: case succ.succ.inl
α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
k : ℕ
h : ¬Even (Nat.succ (Nat.succ k))
hx : x + 1 < 0
this :
  if Even (Nat.succ (Nat.succ k)) then ∑ i in range (Nat.succ (Nat.succ k)), x ^ i < 0
  else 1 < ∑ i in range (Nat.succ (Nat.succ k)), x ^ i
⊢ 0 < ∑ i in range (Nat.succ (Nat.succ k)), x ^ i

tactic: exact zero_lt_one.trans this
state_before: case succ.succ.inl
α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
k : ℕ
h : ¬Even (Nat.succ (Nat.succ k))
hx : x + 1 < 0
this : 1 < ∑ i in range (Nat.succ (Nat.succ k)), x ^ i
⊢ 0 < ∑ i in range (Nat.succ (Nat.succ k)), x ^ i

tactic: simp only [eq_neg_of_add_eq_zero_left hx, h, neg_one_geom_sum, if_false, zero_lt_one]
state_before: case succ.succ.inr.inl
α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
k : ℕ
h : ¬Even (Nat.succ (Nat.succ k))
hx : x + 1 = 0
⊢ 0 < ∑ i in range (Nat.succ (Nat.succ k)), x ^ i

tactic: exact geom_sum_pos' hx k.succ.succ_ne_zero
state_before: case succ.succ.inr.inr
α : Type u
β : Type ?u.244183
x : α
inst✝ : LinearOrderedRing α
k : ℕ
h : ¬Even (Nat.succ (Nat.succ k))
hx : 0 < x + 1
⊢ 0 < ∑ i in range (Nat.succ (Nat.succ k)), x ^ i
Theorem: nhdsWithin_univ
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [nhdsWithin, principal_univ, inf_top_eq]
state_before: α : Type u_1
β : Type ?u.4196
γ : Type ?u.4199
δ : Type ?u.4202
inst✝ : TopologicalSpace α
a : α
⊢ 𝓝[univ] a = 𝓝 a
Theorem: ENNReal.mul_rpow_of_ne_top
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: simp [*, mul_rpow_eq_ite]
state_before: x y : ℝ≥0∞
hx : x ≠ ⊤
hy : y ≠ ⊤
z : ℝ
⊢ (x * y) ^ z = x ^ z * y ^ z
Theorem: Matrix.adjugate_apply
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

tactic: rw [adjugate_def, of_apply, cramer_apply, updateColumn_transpose, det_transpose]
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
i j : n
⊢ adjugate A i j = det (updateRow A j (Pi.single i 1))
Theorem: isLittleO_coe_const_pow_of_one_lt
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: simpa only [pow_one] using @isLittleO_pow_const_const_pow_of_one_lt R _ 1 _ hr
state_before: α : Type ?u.97427
β : Type ?u.97430
ι : Type ?u.97433
R : Type u_1
inst✝ : NormedRing R
r : ℝ
hr : 1 < r
⊢ Nat.cast =o[atTop] fun n => r ^ n