l3lab/ntp-mathlib huggingface dataset:
theorem continuousOn_mul [LocallyCompactSpace X] [T2Space X] [NormedRing R]
    [SecondCountableTopologyEither X R] {f g : X → R} {s : Set X} (hf : LocallyIntegrableOn f s μ)
    (hg : ContinuousOn g s) (hs : IsOpen s) : LocallyIntegrableOn (fun x => g x * f x) s μ := by
  

Proof state:
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹⁰ : MeasurableSpace X
inst✝⁹ : TopologicalSpace X
inst✝⁸ : MeasurableSpace Y
inst✝⁷ : TopologicalSpace Y
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁴ : OpensMeasurableSpace X
A K : Set X
inst✝³ : LocallyCompactSpace X
inst✝² : T2Space X
inst✝¹ : NormedRing R
inst✝ : SecondCountableTopologyEither X R
f g : X → R
s : Set X
hf : LocallyIntegrableOn f s
hg : ContinuousOn g s
hs : IsOpen s
⊢ LocallyIntegrableOn (fun x => g x * f x) s

Next tactic:
rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf ⊢
theorem continuousOn_mul [LocallyCompactSpace X] [T2Space X] [NormedRing R]
    [SecondCountableTopologyEither X R] {f g : X → R} {s : Set X} (hf : LocallyIntegrableOn f s μ)
    (hg : ContinuousOn g s) (hs : IsOpen s) : LocallyIntegrableOn (fun x => g x * f x) s μ := by
  rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf ⊢
  

Proof state:
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹⁰ : MeasurableSpace X
inst✝⁹ : TopologicalSpace X
inst✝⁸ : MeasurableSpace Y
inst✝⁷ : TopologicalSpace Y
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁴ : OpensMeasurableSpace X
A K : Set X
inst✝³ : LocallyCompactSpace X
inst✝² : T2Space X
inst✝¹ : NormedRing R
inst✝ : SecondCountableTopologyEither X R
f g : X → R
s : Set X
hf : ∀ k ⊆ s, IsCompact k → IntegrableOn f k
hg : ContinuousOn g s
hs : IsOpen s
⊢ ∀ k ⊆ s, IsCompact k → IntegrableOn (fun x => g x * f x) k

Next tactic:
exact fun k hk_sub hk_c => (hf k hk_sub hk_c).continuousOn_mul (hg.mono hk_sub) hk_c
theorem mul_continuousOn [LocallyCompactSpace X] [T2Space X] [NormedRing R]
    [SecondCountableTopologyEither X R] {f g : X → R} {s : Set X} (hf : LocallyIntegrableOn f s μ)
    (hg : ContinuousOn g s) (hs : IsOpen s) : LocallyIntegrableOn (fun x => f x * g x) s μ := by
  

Proof state:
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹⁰ : MeasurableSpace X
inst✝⁹ : TopologicalSpace X
inst✝⁸ : MeasurableSpace Y
inst✝⁷ : TopologicalSpace Y
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁴ : OpensMeasurableSpace X
A K : Set X
inst✝³ : LocallyCompactSpace X
inst✝² : T2Space X
inst✝¹ : NormedRing R
inst✝ : SecondCountableTopologyEither X R
f g : X → R
s : Set X
hf : LocallyIntegrableOn f s
hg : ContinuousOn g s
hs : IsOpen s
⊢ LocallyIntegrableOn (fun x => f x * g x) s

Next tactic:
rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf ⊢
theorem mul_continuousOn [LocallyCompactSpace X] [T2Space X] [NormedRing R]
    [SecondCountableTopologyEither X R] {f g : X → R} {s : Set X} (hf : LocallyIntegrableOn f s μ)
    (hg : ContinuousOn g s) (hs : IsOpen s) : LocallyIntegrableOn (fun x => f x * g x) s μ := by
  rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf ⊢
  

Proof state:
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹⁰ : MeasurableSpace X
inst✝⁹ : TopologicalSpace X
inst✝⁸ : MeasurableSpace Y
inst✝⁷ : TopologicalSpace Y
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁴ : OpensMeasurableSpace X
A K : Set X
inst✝³ : LocallyCompactSpace X
inst✝² : T2Space X
inst✝¹ : NormedRing R
inst✝ : SecondCountableTopologyEither X R
f g : X → R
s : Set X
hf : ∀ k ⊆ s, IsCompact k → IntegrableOn f k
hg : ContinuousOn g s
hs : IsOpen s
⊢ ∀ k ⊆ s, IsCompact k → IntegrableOn (fun x => f x * g x) k

Next tactic:
exact fun k hk_sub hk_c => (hf k hk_sub hk_c).mul_continuousOn (hg.mono hk_sub) hk_c
theorem continuousOn_smul [LocallyCompactSpace X] [T2Space X] {𝕜 : Type*} [NormedField 𝕜]
    [SecondCountableTopologyEither X 𝕜] [NormedSpace 𝕜 E] {f : X → E} {g : X → 𝕜} {s : Set X}
    (hs : IsOpen s) (hf : LocallyIntegrableOn f s μ) (hg : ContinuousOn g s) :
    LocallyIntegrableOn (fun x => g x • f x) s μ := by
  

Proof state:
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹¹ : MeasurableSpace X
inst✝¹⁰ : TopologicalSpace X
inst✝⁹ : MeasurableSpace Y
inst✝⁸ : TopologicalSpace Y
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁵ : OpensMeasurableSpace X
A K : Set X
inst✝⁴ : LocallyCompactSpace X
inst✝³ : T2Space X
𝕜 : Type u_6
inst✝² : NormedField 𝕜
inst✝¹ : SecondCountableTopologyEither X 𝕜
inst✝ : NormedSpace 𝕜 E
f : X → E
g : X → 𝕜
s : Set X
hs : IsOpen s
hf : LocallyIntegrableOn f s
hg : ContinuousOn g s
⊢ LocallyIntegrableOn (fun x => g x • f x) s

Next tactic:
rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf ⊢
theorem continuousOn_smul [LocallyCompactSpace X] [T2Space X] {𝕜 : Type*} [NormedField 𝕜]
    [SecondCountableTopologyEither X 𝕜] [NormedSpace 𝕜 E] {f : X → E} {g : X → 𝕜} {s : Set X}
    (hs : IsOpen s) (hf : LocallyIntegrableOn f s μ) (hg : ContinuousOn g s) :
    LocallyIntegrableOn (fun x => g x • f x) s μ := by
  rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf ⊢
  

Proof state:
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹¹ : MeasurableSpace X
inst✝¹⁰ : TopologicalSpace X
inst✝⁹ : MeasurableSpace Y
inst✝⁸ : TopologicalSpace Y
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁵ : OpensMeasurableSpace X
A K : Set X
inst✝⁴ : LocallyCompactSpace X
inst✝³ : T2Space X
𝕜 : Type u_6
inst✝² : NormedField 𝕜
inst✝¹ : SecondCountableTopologyEither X 𝕜
inst✝ : NormedSpace 𝕜 E
f : X → E
g : X → 𝕜
s : Set X
hs : IsOpen s
hf : ∀ k ⊆ s, IsCompact k → IntegrableOn f k
hg : ContinuousOn g s
⊢ ∀ k ⊆ s, IsCompact k → IntegrableOn (fun x => g x • f x) k

Next tactic:
exact fun k hk_sub hk_c => (hf k hk_sub hk_c).continuousOn_smul (hg.mono hk_sub) hk_c
theorem smul_continuousOn [LocallyCompactSpace X] [T2Space X] {𝕜 : Type*} [NormedField 𝕜]
    [SecondCountableTopologyEither X E] [NormedSpace 𝕜 E] {f : X → 𝕜} {g : X → E} {s : Set X}
    (hs : IsOpen s) (hf : LocallyIntegrableOn f s μ) (hg : ContinuousOn g s) :
    LocallyIntegrableOn (fun x => f x • g x) s μ := by
  

Proof state:
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹¹ : MeasurableSpace X
inst✝¹⁰ : TopologicalSpace X
inst✝⁹ : MeasurableSpace Y
inst✝⁸ : TopologicalSpace Y
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁵ : OpensMeasurableSpace X
A K : Set X
inst✝⁴ : LocallyCompactSpace X
inst✝³ : T2Space X
𝕜 : Type u_6
inst✝² : NormedField 𝕜
inst✝¹ : SecondCountableTopologyEither X E
inst✝ : NormedSpace 𝕜 E
f : X → 𝕜
g : X → E
s : Set X
hs : IsOpen s
hf : LocallyIntegrableOn f s
hg : ContinuousOn g s
⊢ LocallyIntegrableOn (fun x => f x • g x) s

Next tactic:
rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf ⊢
theorem smul_continuousOn [LocallyCompactSpace X] [T2Space X] {𝕜 : Type*} [NormedField 𝕜]
    [SecondCountableTopologyEither X E] [NormedSpace 𝕜 E] {f : X → 𝕜} {g : X → E} {s : Set X}
    (hs : IsOpen s) (hf : LocallyIntegrableOn f s μ) (hg : ContinuousOn g s) :
    LocallyIntegrableOn (fun x => f x • g x) s μ := by
  rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf ⊢
  

Proof state:
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹¹ : MeasurableSpace X
inst✝¹⁰ : TopologicalSpace X
inst✝⁹ : MeasurableSpace Y
inst✝⁸ : TopologicalSpace Y
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁵ : OpensMeasurableSpace X
A K : Set X
inst✝⁴ : LocallyCompactSpace X
inst✝³ : T2Space X
𝕜 : Type u_6
inst✝² : NormedField 𝕜
inst✝¹ : SecondCountableTopologyEither X E
inst✝ : NormedSpace 𝕜 E
f : X → 𝕜
g : X → E
s : Set X
hs : IsOpen s
hf : ∀ k ⊆ s, IsCompact k → IntegrableOn f k
hg : ContinuousOn g s
⊢ ∀ k ⊆ s, IsCompact k → IntegrableOn (fun x => f x • g x) k

Next tactic:
exact fun k hk_sub hk_c => (hf k hk_sub hk_c).smul_continuousOn (hg.mono hk_sub) hk_c
@[to_additive (attr := simp)]
theorem neg_one : (1 : α)⁻ = 1 := by 

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
⊢ 1⁻ = 1

Next tactic:
rw [m_neg_part_def, inv_one, sup_idem]
@[to_additive]
theorem neg_eq_inv_inf_one
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    a⁻ = (a ⊓ 1)⁻¹ := by
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a⁻ = (a ⊓ 1)⁻¹

Next tactic:
rw [m_neg_part_def, ← inv_inj, inv_sup_eq_inv_inf_inv, inv_inv, inv_inv, inv_one]
@[to_additive (attr := simp)]
theorem abs_inv (a : α) : |a⁻¹| = |a| := calc
  |a⁻¹| = a⁻¹ ⊔ (a⁻¹)⁻¹ := rfl
  _ = a ⊔ a⁻¹ := by 

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a : α
⊢ a⁻¹ ⊔ a⁻¹⁻¹ = a ⊔ a⁻¹

Next tactic:
rw [inv_inv, sup_comm]
@[to_additive]
theorem pos_le_one_iff {a : α} : a⁺ ≤ 1 ↔ a ≤ 1 := by
  

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a : α
⊢ a⁺ ≤ 1 ↔ a ≤ 1

Next tactic:
rw [m_pos_part_def, sup_le_iff, and_iff_left le_rfl]
@[to_additive]
theorem neg_le_one_iff {a : α} : a⁻ ≤ 1 ↔ a⁻¹ ≤ 1 := by
  

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a : α
⊢ a⁻ ≤ 1 ↔ a⁻¹ ≤ 1

Next tactic:
rw [m_neg_part_def, sup_le_iff, and_iff_left le_rfl]
@[to_additive]
theorem neg_eq_one_iff [CovariantClass α α HMul.hMul LE.le] {a : α} : a⁻ = 1 ↔ 1 ≤ a := by
  

Proof state:
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α HMul.hMul LE.le
a : α
⊢ a⁻ = 1 ↔ 1 ≤ a

Next tactic:
rw [le_antisymm_iff, neg_le_one_iff, inv_le_one', and_iff_left (one_le_neg _)]
@[to_additive]
theorem pos_eq_neg_inv (a : α) : a⁺ = a⁻¹⁻ := by 

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a : α
⊢ a⁺ = a⁻¹⁻

Next tactic:
rw [neg_eq_pos_inv, inv_inv]
@[to_additive]
theorem mul_inf_eq_mul_inf_mul [CovariantClass α α (· * ·) (· ≤ ·)] (a b c : α) :
    c * (a ⊓ b) = c * a ⊓ c * b := by
  

Proof state:
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ c * (a ⊓ b) = c * a ⊓ c * b

Next tactic:
refine' le_antisymm _ _
@[to_additive]
theorem mul_inf_eq_mul_inf_mul [CovariantClass α α (· * ·) (· ≤ ·)] (a b c : α) :
    c * (a ⊓ b) = c * a ⊓ c * b := by
  refine' le_antisymm _ _
  

Proof state:
case refine'_1
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ c * (a ⊓ b) ≤ c * a ⊓ c * b
case refine'_2
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ c * a ⊓ c * b ≤ c * (a ⊓ b)

Next tactic:
rw [le_inf_iff, mul_le_mul_iff_left, mul_le_mul_iff_left]
@[to_additive]
theorem mul_inf_eq_mul_inf_mul [CovariantClass α α (· * ·) (· ≤ ·)] (a b c : α) :
    c * (a ⊓ b) = c * a ⊓ c * b := by
  refine' le_antisymm _ _
  rw [le_inf_iff, mul_le_mul_iff_left, mul_le_mul_iff_left]
  

Proof state:
case refine'_1
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ a ⊓ b ≤ a ∧ a ⊓ b ≤ b
case refine'_2
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ c * a ⊓ c * b ≤ c * (a ⊓ b)

Next tactic:
simp only [inf_le_left, inf_le_right, and_self]
@[to_additive]
theorem mul_inf_eq_mul_inf_mul [CovariantClass α α (· * ·) (· ≤ ·)] (a b c : α) :
    c * (a ⊓ b) = c * a ⊓ c * b := by
  refine' le_antisymm _ _
  rw [le_inf_iff, mul_le_mul_iff_left, mul_le_mul_iff_left]
  simp only [inf_le_left, inf_le_right, and_self]
  

Proof state:
case refine'_2
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ c * a ⊓ c * b ≤ c * (a ⊓ b)

Next tactic:
rw [← mul_le_mul_iff_left c⁻¹, ← mul_assoc, inv_mul_self, one_mul, le_inf_iff,
    inv_mul_le_iff_le_mul, inv_mul_le_iff_le_mul]
@[to_additive]
theorem mul_inf_eq_mul_inf_mul [CovariantClass α α (· * ·) (· ≤ ·)] (a b c : α) :
    c * (a ⊓ b) = c * a ⊓ c * b := by
  refine' le_antisymm _ _
  rw [le_inf_iff, mul_le_mul_iff_left, mul_le_mul_iff_left]
  simp only [inf_le_left, inf_le_right, and_self]
  rw [← mul_le_mul_iff_left c⁻¹, ← mul_assoc, inv_mul_self, one_mul, le_inf_iff,
    inv_mul_le_iff_le_mul, inv_mul_le_iff_le_mul]
  

Proof state:
case refine'_2
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ c * a ⊓ c * b ≤ c * a ∧ c * a ⊓ c * b ≤ c * b

Next tactic:
simp
@[to_additive (attr := simp)]
theorem pos_div_neg [CovariantClass α α (· * ·) (· ≤ ·)] (a : α) : a⁺ / a⁻ = a := by
  

Proof state:
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a⁺ / a⁻ = a

Next tactic:
symm
@[to_additive (attr := simp)]
theorem pos_div_neg [CovariantClass α α (· * ·) (· ≤ ·)] (a : α) : a⁺ / a⁻ = a := by
  symm
  

Proof state:
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a = a⁺ / a⁻

Next tactic:
rw [div_eq_mul_inv]
@[to_additive (attr := simp)]
theorem pos_div_neg [CovariantClass α α (· * ·) (· ≤ ·)] (a : α) : a⁺ / a⁻ = a := by
  symm
  rw [div_eq_mul_inv]
  

Proof state:
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a = a⁺ * a⁻⁻¹

Next tactic:
apply eq_mul_inv_of_mul_eq
@[to_additive (attr := simp)]
theorem pos_div_neg [CovariantClass α α (· * ·) (· ≤ ·)] (a : α) : a⁺ / a⁻ = a := by
  symm
  rw [div_eq_mul_inv]
  apply eq_mul_inv_of_mul_eq
  

Proof state:
case h
α : Type u
β : Type v
inst✝² : Lattice α
inst✝¹ : Group α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a * a⁻ = a⁺

Next tactic:
rw [m_neg_part_def, mul_sup, mul_one, mul_right_inv, sup_comm, m_pos_part_def]
/-- If `a` is positive, then it is equal to its positive component `a⁺`. -/
@[to_additive "If `a` is positive, then it is equal to its positive component `a⁺`."]
theorem pos_of_one_le (a : α) (h : 1 ≤ a) : a⁺ = a := by
  

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a : α
h : 1 ≤ a
⊢ a⁺ = a

Next tactic:
rw [m_pos_part_def]
/-- If `a` is positive, then it is equal to its positive component `a⁺`. -/
@[to_additive "If `a` is positive, then it is equal to its positive component `a⁺`."]
theorem pos_of_one_le (a : α) (h : 1 ≤ a) : a⁺ = a := by
  rw [m_pos_part_def]
  

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a : α
h : 1 ≤ a
⊢ a ⊔ 1 = a

Next tactic:
exact sup_of_le_left h
@[to_additive neg_of_inv_nonneg]
theorem neg_of_one_le_inv (a : α) (h : 1 ≤ a⁻¹) : a⁻ = a⁻¹ := by
  

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a : α
h : 1 ≤ a⁻¹
⊢ a⁻ = a⁻¹

Next tactic:
rw [neg_eq_pos_inv]
@[to_additive neg_of_inv_nonneg]
theorem neg_of_one_le_inv (a : α) (h : 1 ≤ a⁻¹) : a⁻ = a⁻¹ := by
  rw [neg_eq_pos_inv]
  

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a : α
h : 1 ≤ a⁻¹
⊢ a⁻¹⁺ = a⁻¹

Next tactic:
exact pos_of_one_le _ h
@[to_additive]
theorem pos_eq_self_of_one_lt_pos {α} [LinearOrder α] [CommGroup α] {x : α} (hx : 1 < x⁺) :
    x⁺ = x := by
  

Proof state:
α✝ : Type u
β : Type v
inst✝³ : Lattice α✝
inst✝² : Group α✝
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : CommGroup α
x : α
hx : 1 < x⁺
⊢ x⁺ = x

Next tactic:
rw [m_pos_part_def, right_lt_sup, not_le] at hx
@[to_additive]
theorem pos_eq_self_of_one_lt_pos {α} [LinearOrder α] [CommGroup α] {x : α} (hx : 1 < x⁺) :
    x⁺ = x := by
  rw [m_pos_part_def, right_lt_sup, not_le] at hx
  

Proof state:
α✝ : Type u
β : Type v
inst✝³ : Lattice α✝
inst✝² : Group α✝
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : CommGroup α
x : α
hx : 1 < x
⊢ x⁺ = x

Next tactic:
rw [m_pos_part_def, sup_eq_left]
@[to_additive]
theorem pos_eq_self_of_one_lt_pos {α} [LinearOrder α] [CommGroup α] {x : α} (hx : 1 < x⁺) :
    x⁺ = x := by
  rw [m_pos_part_def, right_lt_sup, not_le] at hx
  rw [m_pos_part_def, sup_eq_left]
  

Proof state:
α✝ : Type u
β : Type v
inst✝³ : Lattice α✝
inst✝² : Group α✝
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : CommGroup α
x : α
hx : 1 < x
⊢ 1 ≤ x

Next tactic:
exact hx.le
@[to_additive]
theorem abs_div_comm (a b : α) : |a / b| = |b / a| := by
  

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a b : α
⊢ |a / b| = |b / a|

Next tactic:
dsimp only [Abs.abs]
@[to_additive]
theorem abs_div_comm (a b : α) : |a / b| = |b / a| := by
  dsimp only [Abs.abs]
  

Proof state:
α : Type u
β : Type v
inst✝¹ : Lattice α
inst✝ : Group α
a b : α
⊢ a / b ⊔ (a / b)⁻¹ = b / a ⊔ (b / a)⁻¹

Next tactic:
rw [inv_div a b, ← inv_inv (a / b), inv_div, sup_comm]
@[to_additive]
lemma pow_two_semiclosed
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    (1 : α) ≤ a^2 → 1 ≤ a := by
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ 1 ≤ a ^ 2 → 1 ≤ a

Next tactic:
intro h
@[to_additive]
lemma pow_two_semiclosed
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    (1 : α) ≤ a^2 → 1 ≤ a := by
  intro h
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
h : 1 ≤ a ^ 2
⊢ 1 ≤ a

Next tactic:
have e1 : (a ⊓ 1) * (a ⊓ 1) = a⊓1 := by
    rw [mul_inf, inf_mul, ← pow_two, mul_one, one_mul, inf_assoc, inf_left_idem, inf_comm,
     inf_assoc, (inf_of_le_left h)]
@[to_additive]
lemma pow_two_semiclosed
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    (1 : α) ≤ a^2 → 1 ≤ a := by
  intro h
  have e1 : (a ⊓ 1) * (a ⊓ 1) = a⊓1 := by
    

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
h : 1 ≤ a ^ 2
⊢ (a ⊓ 1) * (a ⊓ 1) = a ⊓ 1

Next tactic:
rw [mul_inf, inf_mul, ← pow_two, mul_one, one_mul, inf_assoc, inf_left_idem, inf_comm,
     inf_assoc, (inf_of_le_left h)]
@[to_additive]
lemma pow_two_semiclosed
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    (1 : α) ≤ a^2 → 1 ≤ a := by
  intro h
  have e1 : (a ⊓ 1) * (a ⊓ 1) = a⊓1 := by
    rw [mul_inf, inf_mul, ← pow_two, mul_one, one_mul, inf_assoc, inf_left_idem, inf_comm,
     inf_assoc, (inf_of_le_left h)]
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
h : 1 ≤ a ^ 2
e1 : (a ⊓ 1) * (a ⊓ 1) = a ⊓ 1
⊢ 1 ≤ a

Next tactic:
rw [← inf_eq_right]
@[to_additive]
lemma pow_two_semiclosed
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    (1 : α) ≤ a^2 → 1 ≤ a := by
  intro h
  have e1 : (a ⊓ 1) * (a ⊓ 1) = a⊓1 := by
    rw [mul_inf, inf_mul, ← pow_two, mul_one, one_mul, inf_assoc, inf_left_idem, inf_comm,
     inf_assoc, (inf_of_le_left h)]
  rw [← inf_eq_right]
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
h : 1 ≤ a ^ 2
e1 : (a ⊓ 1) * (a ⊓ 1) = a ⊓ 1
⊢ a ⊓ 1 = 1

Next tactic:
exact mul_right_eq_self.mp e1
@[to_additive abs_nonneg]
theorem one_le_abs
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    1 ≤ |a| := by
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ 1 ≤ |a|

Next tactic:
apply pow_two_semiclosed _ _
@[to_additive abs_nonneg]
theorem one_le_abs
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    1 ≤ |a| := by
  apply pow_two_semiclosed _ _
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ 1 ≤ |a| ^ 2

Next tactic:
rw [abs_eq_sup_inv, pow_two, mul_sup,  sup_mul, ← pow_two, mul_left_inv, sup_comm, ← sup_assoc]
@[to_additive abs_nonneg]
theorem one_le_abs
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    1 ≤ |a| := by
  apply pow_two_semiclosed _ _
  rw [abs_eq_sup_inv, pow_two, mul_sup,  sup_mul, ← pow_two, mul_left_inv, sup_comm, ← sup_assoc]
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ 1 ≤ (a ⊔ a⁻¹) * a⁻¹ ⊔ a ^ 2 ⊔ 1

Next tactic:
apply le_sup_right
@[to_additive]
theorem pos_mul_neg
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    |a| = a⁺ * a⁻ := by
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ |a| = a⁺ * a⁻

Next tactic:
rw [m_pos_part_def, sup_mul, one_mul, m_neg_part_def, mul_sup, mul_one, mul_inv_self, sup_assoc,
    ← @sup_assoc _ _ a, sup_eq_right.2 le_sup_right]
@[to_additive]
theorem pos_mul_neg
    [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)] (a : α) :
    |a| = a⁺ * a⁻ := by
  rw [m_pos_part_def, sup_mul, one_mul, m_neg_part_def, mul_sup, mul_one, mul_inv_self, sup_assoc,
    ← @sup_assoc _ _ a, sup_eq_right.2 le_sup_right]
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ |a| = a ⊔ a⁻¹ ⊔ 1

Next tactic:
exact (sup_eq_left.2 <| one_le_abs a).symm
@[to_additive pos_abs]
theorem m_pos_abs [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)]
    (a : α) : |a|⁺ = |a| := by
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ |a|⁺ = |a|

Next tactic:
rw [m_pos_part_def]
@[to_additive pos_abs]
theorem m_pos_abs [CovariantClass α α (· * ·) (· ≤ ·)] [CovariantClass α α (swap (· * ·)) (· ≤ ·)]
    (a : α) : |a|⁺ = |a| := by
  rw [m_pos_part_def]
  

Proof state:
α : Type u
β : Type v
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ |a| ⊔ 1 = |a|

Next tactic:
apply sup_of_le_left