Changes
37 changed files (+121/-97)
-
-
@@ -1,4 +1,3 @@import Mathlib.Data.Nat.Basic import Mathlib.Data.Nat.Parity import MIL.Common
-
-
-
@@ -1,4 +1,3 @@import Mathlib.Data.Nat.Basic import Mathlib.Data.Nat.Parity import MIL.Common
-
-
-
@@ -59,10 +59,10 @@ sectionvariable {α : Type*} [DistribLattice α] variable (x y z : α) #check (inf_sup_left : x ⊓ (y ⊔ z) = x ⊓ y ⊔ x ⊓ z) #check (inf_sup_right : (x ⊔ y) ⊓ z = x ⊓ z ⊔ y ⊓ z) #check (sup_inf_left : x ⊔ y ⊓ z = (x ⊔ y) ⊓ (x ⊔ z)) #check (sup_inf_right : x ⊓ y ⊔ z = (x ⊔ z) ⊓ (y ⊔ z)) #check (inf_sup_left x y z : x ⊓ (y ⊔ z) = x ⊓ y ⊔ x ⊓ z) #check (inf_sup_right x y z : (x ⊔ y) ⊓ z = x ⊓ z ⊔ y ⊓ z) #check (sup_inf_left x y z : x ⊔ y ⊓ z = (x ⊔ y) ⊓ (x ⊔ z)) #check (sup_inf_right x y z : x ⊓ y ⊔ z = (x ⊔ z) ⊓ (y ⊔ z)) end section
-
-
-
@@ -62,7 +62,7 @@ example : |a| - |b| ≤ |a - b| :=_ ≤ |a - b| + |b| - |b| := by apply sub_le_sub_right apply abs_add _ ≤ |a - b| := by rw [add_sub_cancel] _ ≤ |a - b| := by rw [add_sub_cancel_right] -- alternatively
-
-
-
@@ -81,10 +81,10 @@ sectionvariable {α : Type*} [DistribLattice α] variable (x y z : α) #check (inf_sup_left : x ⊓ (y ⊔ z) = x ⊓ y ⊔ x ⊓ z) #check (inf_sup_right : (x ⊔ y) ⊓ z = x ⊓ z ⊔ y ⊓ z) #check (sup_inf_left : x ⊔ y ⊓ z = (x ⊔ y) ⊓ (x ⊔ z)) #check (sup_inf_right : x ⊓ y ⊔ z = (x ⊔ z) ⊓ (y ⊔ z)) #check (inf_sup_left x y z : x ⊓ (y ⊔ z) = x ⊓ y ⊔ x ⊓ z) #check (inf_sup_right x y z : (x ⊔ y) ⊓ z = x ⊓ z ⊔ y ⊓ z) #check (sup_inf_left x y z : x ⊔ y ⊓ z = (x ⊔ y) ⊓ (x ⊔ z)) #check (sup_inf_right x y z : x ⊓ y ⊔ z = (x ⊔ z) ⊓ (y ⊔ z)) end section
-
-
-
@@ -62,12 +62,12 @@ open Functionexample {c : ℝ} (h : c ≠ 0) : Surjective fun x ↦ c * x := by intro x use x / c dsimp; rw [mul_div_cancel' _ h] dsimp; rw [mul_div_cancel₀ _ h] example {c : ℝ} (h : c ≠ 0) : Surjective fun x ↦ c * x := by intro x use x / c field_simp [h] ; ring field_simp end
-
-
-
@@ -51,7 +51,7 @@ theorem convergesTo_mul_const {s : ℕ → ℝ} {a : ℝ} (c : ℝ) (cs : Convercalc |c * s n - c * a| = |c| * |s n - a| := by rw [← abs_mul, mul_sub] _ < |c| * (ε / |c|) := (mul_lt_mul_of_pos_left (hs n ngt) acpos) _ = ε := mul_div_cancel' _ (ne_of_lt acpos).symm _ = ε := mul_div_cancel₀ _ (ne_of_lt acpos).symm theorem exists_abs_le_of_convergesTo {s : ℕ → ℝ} {a : ℝ} (cs : ConvergesTo s a) : ∃ N b, ∀ n, N ≤ n → |s n| < b := by
-
@@ -80,7 +80,7 @@ theorem aux {s t : ℕ → ℝ} {a : ℝ} (cs : ConvergesTo s a) (ct : Convergescalc |s n * t n - 0| = |s n| * |t n - 0| := by rw [sub_zero, abs_mul, sub_zero] _ < B * (ε / B) := (mul_lt_mul'' (h₀ n ngeN₀) (h₁ n ngeN₁) (abs_nonneg _) (abs_nonneg _)) _ = ε := mul_div_cancel' _ (ne_of_lt Bpos).symm _ = ε := mul_div_cancel₀ _ (ne_of_lt Bpos).symm theorem convergesTo_mul {s t : ℕ → ℝ} {a b : ℝ} (cs : ConvergesTo s a) (ct : ConvergesTo t b) :
-
@@ -125,7 +125,7 @@ theorem convergesTo_unique {s : ℕ → ℝ} {a b : ℝ}_ ≤ |(-(s N - a))| + |s N - b| := (abs_add _ _) _ = |s N - a| + |s N - b| := by rw [abs_neg] _ < ε + ε := (add_lt_add absa absb) _ = |a - b| := by norm_num _ = |a - b| := by norm_num [ε] exact lt_irrefl _ this
-
-
-
@@ -45,7 +45,7 @@ theorem sb_injective (hf : Injective f) : Injective (sbFun f g) := by· symm apply this hxeq.symm xA.symm (xA.resolve_left x₁A) have x₂A : x₂ ∈ A := by apply not_imp_self.mp apply _root_.not_imp_self.mp intro (x₂nA : x₂ ∉ A) rw [if_pos x₁A, if_neg x₂nA] at hxeq rw [A_def, sbSet, mem_iUnion] at x₁A
-
-
-
@@ -46,7 +46,7 @@ theorem sb_injective (hf : Injective f) : Injective (sbFun f g) := by· symm apply this hxeq.symm xA.symm (xA.resolve_left x₁A) have x₂A : x₂ ∈ A := by apply not_imp_self.mp apply _root_.not_imp_self.mp intro (x₂nA : x₂ ∉ A) rw [if_pos x₁A, if_neg x₂nA] at hxeq rw [A_def, sbSet, mem_iUnion] at x₁A
-
-
-
@@ -96,7 +96,7 @@ theorem sum_id (n : ℕ) : ∑ i in range (n + 1), i = n * (n + 1) / 2 := bysymm; apply Nat.div_eq_of_eq_mul_right (by norm_num : 0 < 2) induction' n with n ih · simp rw [Finset.sum_range_succ, mul_add 2, ← ih, Nat.succ_eq_add_one] rw [Finset.sum_range_succ, mul_add 2, ← ih] ring theorem sum_sqr (n : ℕ) : ∑ i in range (n + 1), i ^ 2 = n * (n + 1) * (2 * n + 1) / 6 := by
-
-
-
@@ -1,5 +1,5 @@import Mathlib.Data.Nat.Prime import Mathlib.Algebra.BigOperators.Order import Mathlib.Algebra.BigOperators.Basic import MIL.Common open BigOperators
-
@@ -156,15 +156,14 @@ example : 27 % 4 = 3 := by norm_numexample (n : ℕ) : (4 * n + 3) % 4 = 3 := by rw [add_comm, Nat.add_mul_mod_self_left] norm_num theorem mod_4_eq_3_or_mod_4_eq_3 {m n : ℕ} (h : m * n % 4 = 3) : m % 4 = 3 ∨ n % 4 = 3 := by revert h rw [Nat.mul_mod] have : m % 4 < 4 := Nat.mod_lt m (by norm_num) interval_cases hm : m % 4 <;> simp [hm] interval_cases m % 4 <;> simp [-Nat.mul_mod_mod] have : n % 4 < 4 := Nat.mod_lt n (by norm_num) interval_cases hn : n % 4 <;> simp [hn] interval_cases n % 4 <;> simp theorem two_le_of_mod_4_eq_3 {n : ℕ} (h : n % 4 = 3) : 2 ≤ n := by apply two_le <;>
-
-
-
@@ -12,7 +12,7 @@ theorem pow_two_le_fac (n : ℕ) : 2 ^ (n - 1) ≤ fac n := byinduction' n with n ih · simp [fac] simp at * rw [pow_succ, fac] rw [pow_succ', fac] apply Nat.mul_le_mul _ ih repeat' apply Nat.succ_le_succ apply zero_le
-
@@ -29,7 +29,7 @@ theorem sum_sqr (n : ℕ) : ∑ i in range (n + 1), i ^ 2 = n * (n + 1) * (2 * napply Nat.div_eq_of_eq_mul_right (by norm_num : 0 < 6) induction' n with n ih · simp rw [Finset.sum_range_succ, mul_add 6, ← ih, Nat.succ_eq_add_one] rw [Finset.sum_range_succ, mul_add 6, ← ih] ring end
-
-
-
@@ -1,5 +1,5 @@import Mathlib.Data.Nat.Prime import Mathlib.Algebra.BigOperators.Order import Mathlib.Algebra.BigOperators.Basic import MIL.Common open BigOperators
-
@@ -148,9 +148,9 @@ theorem mod_4_eq_3_or_mod_4_eq_3 {m n : ℕ} (h : m * n % 4 = 3) : m % 4 = 3 ∨revert h rw [Nat.mul_mod] have : m % 4 < 4 := Nat.mod_lt m (by norm_num) interval_cases hm : m % 4 <;> simp [hm] interval_cases m % 4 <;> simp [-Nat.mul_mod_mod] have : n % 4 < 4 := Nat.mod_lt n (by norm_num) interval_cases hn : n % 4 <;> simp [hn] interval_cases n % 4 <;> simp theorem two_le_of_mod_4_eq_3 {n : ℕ} (h : n % 4 = 3) : 2 ≤ n := by apply two_le <;>
-
@@ -206,7 +206,6 @@ theorem primes_mod_4_eq_3_infinite : ∀ n, ∃ p > n, Nat.Prime p ∧ p % 4 = 3rcases this with ⟨s, hs⟩ have h₁ : ((4 * ∏ i in erase s 3, i) + 3) % 4 = 3 := by rw [add_comm, Nat.add_mul_mod_self_left] norm_num rcases exists_prime_factor_mod_4_eq_3 h₁ with ⟨p, pp, pdvd, p4eq⟩ have ps : p ∈ s := by rw [← hs p]
-
-
-
@@ -1,4 +1,3 @@import Mathlib.Data.Int.Basic import Mathlib.Algebra.EuclideanDomain.Basic import Mathlib.RingTheory.PrincipalIdealDomain import MIL.Common
-
@@ -87,6 +86,8 @@ instance instCommRing : CommRing gaussInt whereadd := (· + ·) neg x := -x mul := (· * ·) nsmul := nsmulRec zsmul := zsmulRec add_assoc := by intros ext <;> simp <;> ring
-
@@ -120,8 +121,12 @@ instance instCommRing : CommRing gaussInt wheremul_comm := by intros ext <;> simp <;> ring zero_mul := sorry mul_zero := sorry zero_mul := by intros ext <;> simp mul_zero := by intros ext <;> simp @[simp] theorem sub_re (x y : gaussInt) : (x - y).re = x.re - y.re :=
-
@@ -258,7 +263,7 @@ instance : EuclideanDomain gaussInt :=quotient := (· / ·) remainder := (· % ·) quotient_mul_add_remainder_eq := fun x y ↦ by simp only; rw [mod_def, add_comm, sub_add_cancel] fun x y ↦ by simp only; rw [mod_def, add_comm] ; ring quotient_zero := fun x ↦ by simp [div_def, norm, Int.div'] rfl
-
-
-
@@ -1,4 +1,3 @@import Mathlib.Data.Int.Basic import Mathlib.Algebra.EuclideanDomain.Basic import Mathlib.RingTheory.PrincipalIdealDomain import MIL.Common
-
@@ -87,6 +86,8 @@ instance instCommRing : CommRing gaussInt whereadd := (· + ·) neg x := -x mul := (· * ·) nsmul := nsmulRec zsmul := zsmulRec add_assoc := by intros ext <;> simp <;> ring
-
@@ -120,8 +121,12 @@ instance instCommRing : CommRing gaussInt wheremul_comm := by intros ext <;> simp <;> ring zero_mul := sorry mul_zero := sorry zero_mul := by intros ext <;> simp mul_zero := by intros ext <;> simp @[simp] theorem sub_re (x y : gaussInt) : (x - y).re = x.re - y.re :=
-
@@ -272,7 +277,7 @@ instance : EuclideanDomain gaussInt :=quotient := (· / ·) remainder := (· % ·) quotient_mul_add_remainder_eq := fun x y ↦ by simp only; rw [mod_def, add_comm, sub_add_cancel] fun x y ↦ by simp only; rw [mod_def, add_comm] ; ring quotient_zero := fun x ↦ by simp [div_def, norm, Int.div'] rfl
-
-
-
@@ -273,6 +273,9 @@ open MonoidHom#check Subgroup.index_mul_card #check Nat.eq_of_mul_eq_mul_right -- The following line is working around a Lean bug that will be fixed very soon. attribute [-instance] Subtype.instInhabited lemma aux_card_eq [Fintype G] (h' : card G = card H * card K) : card (G ⧸ H) = card K := by sorry variable [H.Normal] [K.Normal] [Fintype G] (h : Disjoint H K) (h' : card G = card H * card K)
-
-
-
@@ -70,7 +70,7 @@ example {R : Type*} [CommRing R] {ι : Type*} [Fintype ι] (f : ι → Ideal R)open BigOperators PiNotation example {ι : Type*} [Fintype ι] (a : ι → ℕ) (coprime : ∀ i j, i ≠ j → (a i).Coprime (a j)) : ZMod (∏ i, a i) ≃+* ∀ i, ZMod (a i) := ZMod (∏ i, a i) ≃+* Π i, ZMod (a i) := ZMod.prodEquivPi a coprime section
-
-
-
@@ -128,6 +128,9 @@ open MonoidHom#check Subgroup.index_mul_card #check Nat.eq_of_mul_eq_mul_right -- The following line is working around a Lean bug that will be fixed very soon. attribute [-instance] Subtype.instInhabited lemma aux_card_eq [Fintype G] (h' : card G = card H * card K) : card (G ⧸ H) = card K := by have := calc card (G ⧸ H) * card H = card G := by rw [← H.index_eq_card, H.index_mul_card]
-
-
-
@@ -64,7 +64,6 @@ lemma chineseMap_surj [Fintype ι] {I : ι → Ideal R}replace he : ∀ j, j ≠ i → e ∈ I j := by simpa using he refine ⟨e, ?_, ?_⟩ · simp [eq_sub_of_add_eq' hue, map_sub, eq_zero_iff_mem.mpr hu] rfl · exact fun j hj ↦ eq_zero_iff_mem.mpr (he j hj) choose e he using key use mk _ (∑ i, f i * e i)
-
-
-
@@ -152,14 +152,14 @@ example {X : Type*} [MetricSpace X] [CompactSpace X] {Y : Type*} [MetricSpace Y]· use 1, by norm_num intro x y _ have : (x, y) ∉ K := by simp [hK] simpa using this simpa [K] using this · rcases K_cpct.exists_forall_le hK continuous_dist.continuousOn with ⟨⟨x₀, x₁⟩, xx_in, H⟩ use dist x₀ x₁ constructor · change _ < _ rw [dist_pos] intro h have : ε ≤ 0 := by simpa [*] using xx_in have : ε ≤ 0 := by simpa [K, φ, *] using xx_in linarith · intro x x' contrapose!
-
-
-
@@ -2,7 +2,7 @@ import MIL.Commonimport Mathlib.Analysis.NormedSpace.BanachSteinhaus import Mathlib.Analysis.NormedSpace.FiniteDimension import Mathlib.Analysis.Calculus.InverseFunctionTheorem.FDeriv import Mathlib.Analysis.Calculus.ContDiff.IsROrC import Mathlib.Analysis.Calculus.ContDiff.RCLike import Mathlib.Analysis.Calculus.FDeriv.Prod
-
@@ -106,7 +106,7 @@ example {ι : Type*} [CompleteSpace E] {g : ι → E →L[𝕜] F} (h : ∀ x,have real_norm_le : ∀ z ∈ ball x ε, ∀ (i : ι), ‖g i z‖ ≤ m sorry have εk_pos : 0 < ε / ‖k‖ := sorry refine' ⟨(m + m : ℕ) / (ε / ‖k‖), fun i ↦ ContinuousLinearMap.op_norm_le_of_shell ε_pos _ hk _⟩ refine' ⟨(m + m : ℕ) / (ε / ‖k‖), fun i ↦ ContinuousLinearMap.opNorm_le_of_shell ε_pos _ hk _⟩ sorry sorry
-
@@ -153,7 +153,7 @@ example (n : WithTop ℕ) {f : E → F} :∀ m : ℕ, (m : WithTop ℕ) < n → Differentiable 𝕜 fun x ↦ iteratedFDeriv 𝕜 m f x := contDiff_iff_continuous_differentiable example {𝕂 : Type*} [IsROrC 𝕂] {E : Type*} [NormedAddCommGroup E] [NormedSpace 𝕂 E] {F : Type*} example {𝕂 : Type*} [RCLike 𝕂] {E : Type*} [NormedAddCommGroup E] [NormedSpace 𝕂 E] {F : Type*} [NormedAddCommGroup F] [NormedSpace 𝕂 F] {f : E → F} {x : E} {n : WithTop ℕ} (hf : ContDiffAt 𝕂 n f x) (hn : 1 ≤ n) : HasStrictFDerivAt f (fderiv 𝕂 f x) x := hf.hasStrictFDerivAt hn
-
-
-
@@ -2,7 +2,7 @@ import MIL.Commonimport Mathlib.Analysis.NormedSpace.BanachSteinhaus import Mathlib.Analysis.NormedSpace.FiniteDimension import Mathlib.Analysis.Calculus.InverseFunctionTheorem.FDeriv import Mathlib.Analysis.Calculus.ContDiff.IsROrC import Mathlib.Analysis.Calculus.ContDiff.RCLike import Mathlib.Analysis.Calculus.FDeriv.Prod
-
@@ -43,11 +43,11 @@ example {ι : Type*} [CompleteSpace E] {g : ι → E →L[𝕜] F} (h : ∀ x,replace hz := mem_iInter.mp (interior_iInter_subset _ (hε hz)) i apply interior_subset hz have εk_pos : 0 < ε / ‖k‖ := div_pos ε_pos (zero_lt_one.trans hk) refine' ⟨(m + m : ℕ) / (ε / ‖k‖), fun i ↦ ContinuousLinearMap.op_norm_le_of_shell ε_pos _ hk _⟩ refine' ⟨(m + m : ℕ) / (ε / ‖k‖), fun i ↦ ContinuousLinearMap.opNorm_le_of_shell ε_pos _ hk _⟩ · exact div_nonneg (Nat.cast_nonneg _) εk_pos.le intro y le_y y_lt calc ‖g i y‖ = ‖g i (y + x) - g i x‖ := by rw [(g i).map_add, add_sub_cancel] ‖g i y‖ = ‖g i (y + x) - g i x‖ := by rw [(g i).map_add, add_sub_cancel_right] _ ≤ ‖g i (y + x)‖ + ‖g i x‖ := (norm_sub_le _ _) _ ≤ m + m := (add_le_add (real_norm_le (y + x) (by rwa [add_comm, add_mem_ball_iff_norm]) i)
-
-
-
@@ -23,7 +23,7 @@ example {f g : α → E} (hf : Integrable f μ) (hg : Integrable g μ) :integral_add hf hg example {s : Set α} (c : E) : ∫ x in s, c ∂μ = (μ s).toReal • c := set_integral_const c setIntegral_const c open Filter
-
-
-
@@ -290,7 +290,7 @@ tactic proofs are often easier and quicker to write thanproof terms. There isn’t a sharp distinction between the two: tactic proofs can be inserted in proof terms, as we did with the phrase <code class="docutils literal notranslate"><span class="pre">by</span> <span class="pre">rw</span> <span class="pre">[hk,</span> <span class="pre">mul_left_comm]</span></code> in the example above. as we did with the phrase <code class="docutils literal notranslate"><span class="pre">by</span> <span class="pre">rw</span> <span class="pre">[hk,</span> <span class="pre">mul_add]</span></code> in the example above. We will also see that, conversely, it is often useful to insert a short proof term in the middle of a tactic proof. That said, in this book, our emphasis will be on the use of tactics.</p>
-
-
-
@@ -380,9 +380,9 @@ It can be imported explicitly with the command<code class="docutils literal notranslate"><span class="pre">import</span> <span class="pre">Mathlib.Tactic</span></code>. We will see there are similar tactics for other common kind of algebraic structures.</p> <p>There is a variation of <code class="docutils literal notranslate"><span class="pre">rw</span></code> called <code class="docutils literal notranslate"><span class="pre">nth_rewrite</span></code> that allows you to replace only particular instances of an expression in the goal. <p>There is a variation of <code class="docutils literal notranslate"><span class="pre">rw</span></code> called <code class="docutils literal notranslate"><span class="pre">nth_rw</span></code> that allows you to replace only particular instances of an expression in the goal. Possible matches are enumerated starting with 1, so in the following example, <code class="docutils literal notranslate"><span class="pre">nth_rewrite</span> <span class="pre">2</span> <span class="pre">h</span></code> replaces the second so in the following example, <code class="docutils literal notranslate"><span class="pre">nth_rw</span> <span class="pre">2</span> <span class="pre">[h]</span></code> replaces the second occurrence of <code class="docutils literal notranslate"><span class="pre">a</span> <span class="pre">+</span> <span class="pre">b</span></code> with <code class="docutils literal notranslate"><span class="pre">c</span></code>.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">(</span><span class="n">a</span> <span class="n">b</span> <span class="n">c</span> <span class="o">:</span> <span class="n">ℕ</span><span class="o">)</span> <span class="o">(</span><span class="n">h</span> <span class="o">:</span> <span class="n">a</span> <span class="bp">+</span> <span class="n">b</span> <span class="bp">=</span> <span class="n">c</span><span class="o">)</span> <span class="o">:</span> <span class="o">(</span><span class="n">a</span> <span class="bp">+</span> <span class="n">b</span><span class="o">)</span> <span class="bp">*</span> <span class="o">(</span><span class="n">a</span> <span class="bp">+</span> <span class="n">b</span><span class="o">)</span> <span class="bp">=</span> <span class="n">a</span> <span class="bp">*</span> <span class="n">c</span> <span class="bp">+</span> <span class="n">b</span> <span class="bp">*</span> <span class="n">c</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">nth_rw</span> <span class="mi">2</span> <span class="o">[</span><span class="n">h</span><span class="o">]</span>
-
@@ -1113,7 +1113,7 @@ in the library’s name for the triangle inequality:</p><div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="k">#check</span> <span class="o">(</span><span class="n">abs_add</span> <span class="o">:</span> <span class="bp">∀</span> <span class="n">a</span> <span class="n">b</span> <span class="o">:</span> <span class="n">ℝ</span><span class="o">,</span> <span class="bp">|</span><span class="n">a</span> <span class="bp">+</span> <span class="n">b</span><span class="bp">|</span> <span class="bp">≤</span> <span class="bp">|</span><span class="n">a</span><span class="bp">|</span> <span class="bp">+</span> <span class="bp">|</span><span class="n">b</span><span class="bp">|</span><span class="o">)</span> </pre></div> </div> <p>Use it to prove the following variant:</p> <p>Use it to prove the following variant, using also <code class="docutils literal notranslate"><span class="pre">add_sub_cancel_right</span></code>:</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">:</span> <span class="bp">|</span><span class="n">a</span><span class="bp">|</span> <span class="bp">-</span> <span class="bp">|</span><span class="n">b</span><span class="bp">|</span> <span class="bp">≤</span> <span class="bp">|</span><span class="n">a</span> <span class="bp">-</span> <span class="n">b</span><span class="bp">|</span> <span class="o">:=</span> <span class="gr">sorry</span> <span class="kd">end</span>
-
@@ -1314,10 +1314,10 @@ is called a <em>distributive lattice</em>. Lean knows about these too:</p><div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">variable</span> <span class="o">{</span><span class="n">α</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">DistribLattice</span> <span class="n">α</span><span class="o">]</span> <span class="kd">variable</span> <span class="o">(</span><span class="n">x</span> <span class="n">y</span> <span class="n">z</span> <span class="o">:</span> <span class="n">α</span><span class="o">)</span> <span class="k">#check</span> <span class="o">(</span><span class="n">inf_sup_left</span> <span class="o">:</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="o">(</span><span class="n">y</span> <span class="bp">⊔</span> <span class="n">z</span><span class="o">)</span> <span class="bp">=</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="n">y</span> <span class="bp">⊔</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="n">z</span><span class="o">)</span> <span class="k">#check</span> <span class="o">(</span><span class="n">inf_sup_right</span> <span class="o">:</span> <span class="o">(</span><span class="n">x</span> <span class="bp">⊔</span> <span class="n">y</span><span class="o">)</span> <span class="bp">⊓</span> <span class="n">z</span> <span class="bp">=</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="n">z</span> <span class="bp">⊔</span> <span class="n">y</span> <span class="bp">⊓</span> <span class="n">z</span><span class="o">)</span> <span class="k">#check</span> <span class="o">(</span><span class="n">sup_inf_left</span> <span class="o">:</span> <span class="n">x</span> <span class="bp">⊔</span> <span class="n">y</span> <span class="bp">⊓</span> <span class="n">z</span> <span class="bp">=</span> <span class="o">(</span><span class="n">x</span> <span class="bp">⊔</span> <span class="n">y</span><span class="o">)</span> <span class="bp">⊓</span> <span class="o">(</span><span class="n">x</span> <span class="bp">⊔</span> <span class="n">z</span><span class="o">))</span> <span class="k">#check</span> <span class="o">(</span><span class="n">sup_inf_right</span> <span class="o">:</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="n">y</span> <span class="bp">⊔</span> <span class="n">z</span> <span class="bp">=</span> <span class="o">(</span><span class="n">x</span> <span class="bp">⊔</span> <span class="n">z</span><span class="o">)</span> <span class="bp">⊓</span> <span class="o">(</span><span class="n">y</span> <span class="bp">⊔</span> <span class="n">z</span><span class="o">))</span> <span class="k">#check</span> <span class="o">(</span><span class="n">inf_sup_left</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span> <span class="o">:</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="o">(</span><span class="n">y</span> <span class="bp">⊔</span> <span class="n">z</span><span class="o">)</span> <span class="bp">=</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="n">y</span> <span class="bp">⊔</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="n">z</span><span class="o">)</span> <span class="k">#check</span> <span class="o">(</span><span class="n">inf_sup_right</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span> <span class="o">:</span> <span class="o">(</span><span class="n">x</span> <span class="bp">⊔</span> <span class="n">y</span><span class="o">)</span> <span class="bp">⊓</span> <span class="n">z</span> <span class="bp">=</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="n">z</span> <span class="bp">⊔</span> <span class="n">y</span> <span class="bp">⊓</span> <span class="n">z</span><span class="o">)</span> <span class="k">#check</span> <span class="o">(</span><span class="n">sup_inf_left</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span> <span class="o">:</span> <span class="n">x</span> <span class="bp">⊔</span> <span class="n">y</span> <span class="bp">⊓</span> <span class="n">z</span> <span class="bp">=</span> <span class="o">(</span><span class="n">x</span> <span class="bp">⊔</span> <span class="n">y</span><span class="o">)</span> <span class="bp">⊓</span> <span class="o">(</span><span class="n">x</span> <span class="bp">⊔</span> <span class="n">z</span><span class="o">))</span> <span class="k">#check</span> <span class="o">(</span><span class="n">sup_inf_right</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span> <span class="o">:</span> <span class="n">x</span> <span class="bp">⊓</span> <span class="n">y</span> <span class="bp">⊔</span> <span class="n">z</span> <span class="bp">=</span> <span class="o">(</span><span class="n">x</span> <span class="bp">⊔</span> <span class="n">z</span><span class="o">)</span> <span class="bp">⊓</span> <span class="o">(</span><span class="n">y</span> <span class="bp">⊔</span> <span class="n">z</span><span class="o">))</span> </pre></div> </div> <p>The left and right versions are easily shown to be
-
-
-
@@ -782,7 +782,7 @@ why the next example makes use of both <code class="docutils literal notranslate<span class="n">dsimp</span><span class="bp">;</span> <span class="n">ring</span> </pre></div> </div> <p>Try this example yourself using the theorem <code class="docutils literal notranslate"><span class="pre">mul_div_cancel'</span></code>.:</p> <p>Try this example yourself using the theorem <code class="docutils literal notranslate"><span class="pre">mul_div_cancel₀</span></code>.:</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">{</span><span class="n">c</span> <span class="o">:</span> <span class="n">ℝ</span><span class="o">}</span> <span class="o">(</span><span class="n">h</span> <span class="o">:</span> <span class="n">c</span> <span class="bp">≠</span> <span class="mi">0</span><span class="o">)</span> <span class="o">:</span> <span class="n">Surjective</span> <span class="k">fun</span> <span class="n">x</span> <span class="bp">↦</span> <span class="n">c</span> <span class="bp">*</span> <span class="n">x</span> <span class="o">:=</span> <span class="kd">by</span> <span class="gr">sorry</span> </pre></div>
-
-
-
@@ -1044,7 +1044,7 @@ See if you can finish off the proof using <code class="docutils literal notransl<span class="bp">·</span> <span class="n">symm</span> <span class="n">apply</span> <span class="n">this</span> <span class="n">hxeq.symm</span> <span class="n">xA.symm</span> <span class="o">(</span><span class="n">xA.resolve_left</span> <span class="n">x₁A</span><span class="o">)</span> <span class="k">have</span> <span class="n">x₂A</span> <span class="o">:</span> <span class="n">x₂</span> <span class="bp">∈</span> <span class="n">A</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">apply</span> <span class="n">not_imp_self.mp</span> <span class="n">apply</span> <span class="n">_root_.not_imp_self.mp</span> <span class="n">intro</span> <span class="o">(</span><span class="n">x₂nA</span> <span class="o">:</span> <span class="n">x₂</span> <span class="bp">∉</span> <span class="n">A</span><span class="o">)</span> <span class="n">rw</span> <span class="o">[</span><span class="n">if_pos</span> <span class="n">x₁A</span><span class="o">,</span> <span class="n">if_neg</span> <span class="n">x₂nA</span><span class="o">]</span> <span class="n">at</span> <span class="n">hxeq</span> <span class="n">rw</span> <span class="o">[</span><span class="n">A_def</span><span class="o">,</span> <span class="n">sbSet</span><span class="o">,</span> <span class="n">mem_iUnion</span><span class="o">]</span> <span class="n">at</span> <span class="n">x₁A</span>
-
-
-
@@ -514,7 +514,8 @@ function.It turns out to be easier to start with a proof by cases, so that the remainder of the proof starts with the case <span class="math notranslate nohighlight">\(n = 1\)</span>. See if you can complete the argument with a proof by induction.</p> See if you can complete the argument with a proof by induction using <code class="docutils literal notranslate"><span class="pre">pow_succ</span></code> or <code class="docutils literal notranslate"><span class="pre">pow_succ'</span></code>.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">theorem</span> <span class="n">pow_two_le_fac</span> <span class="o">(</span><span class="n">n</span> <span class="o">:</span> <span class="n">ℕ</span><span class="o">)</span> <span class="o">:</span> <span class="mi">2</span> <span class="bp">^</span> <span class="o">(</span><span class="n">n</span> <span class="bp">-</span> <span class="mi">1</span><span class="o">)</span> <span class="bp">≤</span> <span class="n">fac</span> <span class="n">n</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">rcases</span> <span class="n">n</span> <span class="k">with</span> <span class="n">_</span> <span class="bp">|</span> <span class="n">n</span> <span class="bp">·</span> <span class="n">simp</span> <span class="o">[</span><span class="n">fac</span><span class="o">]</span>
-
@@ -613,7 +614,7 @@ because calculations with division generally have side conditions.<span class="n">symm</span><span class="bp">;</span> <span class="n">apply</span> <span class="n">Nat.div_eq_of_eq_mul_right</span> <span class="o">(</span><span class="kd">by</span> <span class="n">norm_num</span> <span class="o">:</span> <span class="mi">0</span> <span class="bp"><</span> <span class="mi">2</span><span class="o">)</span> <span class="n">induction'</span> <span class="n">n</span> <span class="k">with</span> <span class="n">n</span> <span class="n">ih</span> <span class="bp">·</span> <span class="n">simp</span> <span class="n">rw</span> <span class="o">[</span><span class="n">Finset.sum_range_succ</span><span class="o">,</span> <span class="n">mul_add</span> <span class="mi">2</span><span class="o">,</span> <span class="bp">←</span> <span class="n">ih</span><span class="o">,</span> <span class="n">Nat.succ_eq_add_one</span><span class="o">]</span> <span class="n">rw</span> <span class="o">[</span><span class="n">Finset.sum_range_succ</span><span class="o">,</span> <span class="n">mul_add</span> <span class="mi">2</span><span class="o">,</span> <span class="bp">←</span> <span class="n">ih</span><span class="o">]</span> <span class="n">ring</span> </pre></div> </div>
-
@@ -1042,19 +1043,18 @@ the facts about this function that we will need to use below.The first named theorem is another illustration of reasoning by a small number of cases. In the second named theorem, remember that the semicolon means that the subsequent tactic block is applied to both of the goals that result from the application of <code class="docutils literal notranslate"><span class="pre">two_le</span></code>.</p> the subsequent tactic block is applied to all the goals created by the preceding tactic.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">(</span><span class="n">n</span> <span class="o">:</span> <span class="n">ℕ</span><span class="o">)</span> <span class="o">:</span> <span class="o">(</span><span class="mi">4</span> <span class="bp">*</span> <span class="n">n</span> <span class="bp">+</span> <span class="mi">3</span><span class="o">)</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp">=</span> <span class="mi">3</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">rw</span> <span class="o">[</span><span class="n">add_comm</span><span class="o">,</span> <span class="n">Nat.add_mul_mod_self_left</span><span class="o">]</span> <span class="n">norm_num</span> <span class="kd">theorem</span> <span class="n">mod_4_eq_3_or_mod_4_eq_3</span> <span class="o">{</span><span class="n">m</span> <span class="n">n</span> <span class="o">:</span> <span class="n">ℕ</span><span class="o">}</span> <span class="o">(</span><span class="n">h</span> <span class="o">:</span> <span class="n">m</span> <span class="bp">*</span> <span class="n">n</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp">=</span> <span class="mi">3</span><span class="o">)</span> <span class="o">:</span> <span class="n">m</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp">=</span> <span class="mi">3</span> <span class="bp">∨</span> <span class="n">n</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp">=</span> <span class="mi">3</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">revert</span> <span class="n">h</span> <span class="n">rw</span> <span class="o">[</span><span class="n">Nat.mul_mod</span><span class="o">]</span> <span class="k">have</span> <span class="o">:</span> <span class="n">m</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp"><</span> <span class="mi">4</span> <span class="o">:=</span> <span class="n">Nat.mod_lt</span> <span class="n">m</span> <span class="o">(</span><span class="kd">by</span> <span class="n">norm_num</span><span class="o">)</span> <span class="n">interval_cases</span> <span class="n">hm</span> <span class="o">:</span> <span class="n">m</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp"><;></span> <span class="n">simp</span> <span class="o">[</span><span class="n">hm</span><span class="o">]</span> <span class="n">interval_cases</span> <span class="n">m</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp"><;></span> <span class="n">simp</span> <span class="o">[</span><span class="bp">-</span><span class="n">Nat.mul_mod_mod</span><span class="o">]</span> <span class="k">have</span> <span class="o">:</span> <span class="n">n</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp"><</span> <span class="mi">4</span> <span class="o">:=</span> <span class="n">Nat.mod_lt</span> <span class="n">n</span> <span class="o">(</span><span class="kd">by</span> <span class="n">norm_num</span><span class="o">)</span> <span class="n">interval_cases</span> <span class="n">hn</span> <span class="o">:</span> <span class="n">n</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp"><;></span> <span class="n">simp</span> <span class="o">[</span><span class="n">hn</span><span class="o">]</span> <span class="n">interval_cases</span> <span class="n">n</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp"><;></span> <span class="n">simp</span> <span class="kd">theorem</span> <span class="n">two_le_of_mod_4_eq_3</span> <span class="o">{</span><span class="n">n</span> <span class="o">:</span> <span class="n">ℕ</span><span class="o">}</span> <span class="o">(</span><span class="n">h</span> <span class="o">:</span> <span class="n">n</span> <span class="bp">%</span> <span class="mi">4</span> <span class="bp">=</span> <span class="mi">3</span><span class="o">)</span> <span class="o">:</span> <span class="mi">2</span> <span class="bp">≤</span> <span class="n">n</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">apply</span> <span class="n">two_le</span> <span class="bp"><;></span>
-
-
-
@@ -479,7 +479,7 @@ it will help to consider some examples.</p><ol class="arabic simple"> <li><p>A <em>partially ordered set</em> consists of a set <span class="math notranslate nohighlight">\(P\)</span> and a binary relation <span class="math notranslate nohighlight">\(\le\)</span> on <span class="math notranslate nohighlight">\(P\)</span> that is transitive and antireflexive.</p></li> and reflexive.</p></li> <li><p>A <em>group</em> consists of a set <span class="math notranslate nohighlight">\(G\)</span> with an associative binary operation, an identity element <span class="math notranslate nohighlight">\(1\)</span>, and a function <span class="math notranslate nohighlight">\(g \mapsto g^{-1}\)</span> that returns
-
@@ -1146,17 +1146,23 @@ that appears in VS Code, and then ask Lean to fill in a skeleton for thestructure definition, you will see a scary number of entries. Jumping to the definition of the structure, however, shows that many of the fields have default definitions that Lean will fill in for you automatically. The essential ones appear in the definition below. In each case, the relevant The essential ones appear in the definition below. A special case are <code class="docutils literal notranslate"><span class="pre">nsmul</span></code> and <code class="docutils literal notranslate"><span class="pre">zsmul</span></code> which should be ignored for now and will be explained in the next chapter. In each case, the relevant identity is proved by unfolding definitions, using the <code class="docutils literal notranslate"><span class="pre">ext</span></code> tactic to reduce the identities to their real and imaginary components, simplifying, and, if necessary, carrying out the relevant ring calculation in the integers.</p> the integers. Note that we could easily avoid repeating all this code, but this is not the topic of the current discussion.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">instance</span> <span class="n">instCommRing</span> <span class="o">:</span> <span class="n">CommRing</span> <span class="n">gaussInt</span> <span class="n">where</span> <span class="n">zero</span> <span class="o">:=</span> <span class="mi">0</span> <span class="n">one</span> <span class="o">:=</span> <span class="mi">1</span> <span class="n">add</span> <span class="o">:=</span> <span class="o">(</span><span class="bp">·</span> <span class="bp">+</span> <span class="bp">·</span><span class="o">)</span> <span class="n">neg</span> <span class="n">x</span> <span class="o">:=</span> <span class="bp">-</span><span class="n">x</span> <span class="n">mul</span> <span class="o">:=</span> <span class="o">(</span><span class="bp">·</span> <span class="bp">*</span> <span class="bp">·</span><span class="o">)</span> <span class="n">nsmul</span> <span class="o">:=</span> <span class="n">nsmulRec</span> <span class="n">zsmul</span> <span class="o">:=</span> <span class="n">zsmulRec</span> <span class="n">add_assoc</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">intros</span> <span class="n">ext</span> <span class="bp"><;></span> <span class="n">simp</span> <span class="bp"><;></span> <span class="n">ring</span>
-
@@ -1190,8 +1196,12 @@ the integers.</p><span class="n">mul_comm</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">intros</span> <span class="n">ext</span> <span class="bp"><;></span> <span class="n">simp</span> <span class="bp"><;></span> <span class="n">ring</span> <span class="n">zero_mul</span> <span class="o">:=</span> <span class="gr">sorry</span> <span class="n">mul_zero</span> <span class="o">:=</span> <span class="gr">sorry</span> <span class="n">zero_mul</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">intros</span> <span class="n">ext</span> <span class="bp"><;></span> <span class="n">simp</span> <span class="n">mul_zero</span> <span class="o">:=</span> <span class="kd">by</span> <span class="n">intros</span> <span class="n">ext</span> <span class="bp"><;></span> <span class="n">simp</span> </pre></div> </div> <p>Lean’s library defines the class of <em>nontrivial</em> types to be types with at
-
@@ -1268,7 +1278,7 @@ numbers, carry out the division</p>\frac{ac + bd}{c^2 + d^2} + \frac{bc -ad}{c^2+d^2} i.\]</div> <p>The real and imaginary parts might not be integers, but we can round them to the nearest integers <span class="math notranslate nohighlight">\(u\)</span> and <span class="math notranslate nohighlight">\(v\)</span>. We can then express the right-hand size as <span class="math notranslate nohighlight">\((u + vi) + (u' + v'i)\)</span>, where right-hand side as <span class="math notranslate nohighlight">\((u + vi) + (u' + v'i)\)</span>, where <span class="math notranslate nohighlight">\(u' + v'i\)</span> is the part left over. Note that we have <span class="math notranslate nohighlight">\(|u'| \le 1/2\)</span> and <span class="math notranslate nohighlight">\(|v'| \le 1/2\)</span>, and hence</p> <div class="math notranslate nohighlight">
-
@@ -1419,7 +1429,7 @@ less than the norm of <code class="docutils literal notranslate"><span class="prrespectively. Calculating, we have</p> <blockquote> <div><p><code class="docutils literal notranslate"><span class="pre">(x</span> <span class="pre">%</span> <span class="pre">y)</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">y</span> <span class="pre">=</span> <span class="pre">(x</span> <span class="pre">-</span> <span class="pre">x</span> <span class="pre">/</span> <span class="pre">y</span> <span class="pre">*</span> <span class="pre">y)</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">y</span> <span class="pre">=</span> <span class="pre">x</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">y</span> <span class="pre">-</span> <span class="pre">x</span> <span class="pre">*</span> <span class="pre">(y</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">j)</span></code></p> <div><p><code class="docutils literal notranslate"><span class="pre">(x</span> <span class="pre">%</span> <span class="pre">y)</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">y</span> <span class="pre">=</span> <span class="pre">(x</span> <span class="pre">-</span> <span class="pre">x</span> <span class="pre">/</span> <span class="pre">y</span> <span class="pre">*</span> <span class="pre">y)</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">y</span> <span class="pre">=</span> <span class="pre">x</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">y</span> <span class="pre">-</span> <span class="pre">x</span> <span class="pre">/</span> <span class="pre">y</span> <span class="pre">*</span> <span class="pre">(y</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">y)</span></code></p> </div></blockquote> <p>The real and imaginary parts of the right-hand side are exactly <code class="docutils literal notranslate"><span class="pre">mod'</span> <span class="pre">(x</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">y).re</span> <span class="pre">(norm</span> <span class="pre">y)</span></code> and <code class="docutils literal notranslate"><span class="pre">mod'</span> <span class="pre">(x</span> <span class="pre">*</span> <span class="pre">conj</span> <span class="pre">y).im</span> <span class="pre">(norm</span> <span class="pre">y)</span></code>. By the properties of <code class="docutils literal notranslate"><span class="pre">div'</span></code> and <code class="docutils literal notranslate"><span class="pre">mod'</span></code>,
-
@@ -1500,7 +1510,7 @@ and in that case, the required properties are the theorems<span class="n">quotient</span> <span class="o">:=</span> <span class="o">(</span><span class="bp">·</span> <span class="bp">/</span> <span class="bp">·</span><span class="o">)</span> <span class="n">remainder</span> <span class="o">:=</span> <span class="o">(</span><span class="bp">·</span> <span class="bp">%</span> <span class="bp">·</span><span class="o">)</span> <span class="n">quotient_mul_add_remainder_eq</span> <span class="o">:=</span> <span class="k">fun</span> <span class="n">x</span> <span class="n">y</span> <span class="bp">↦</span> <span class="kd">by</span> <span class="n">simp</span> <span class="n">only</span><span class="bp">;</span> <span class="n">rw</span> <span class="o">[</span><span class="n">mod_def</span><span class="o">,</span> <span class="n">add_comm</span><span class="o">,</span> <span class="n">sub_add_cancel</span><span class="o">]</span> <span class="k">fun</span> <span class="n">x</span> <span class="n">y</span> <span class="bp">↦</span> <span class="kd">by</span> <span class="n">simp</span> <span class="n">only</span><span class="bp">;</span> <span class="n">rw</span> <span class="o">[</span><span class="n">mod_def</span><span class="o">,</span> <span class="n">add_comm</span><span class="o">]</span> <span class="bp">;</span> <span class="n">ring</span> <span class="n">quotient_zero</span> <span class="o">:=</span> <span class="k">fun</span> <span class="n">x</span> <span class="bp">↦</span> <span class="kd">by</span> <span class="n">simp</span> <span class="o">[</span><span class="n">div_def</span><span class="o">,</span> <span class="n">norm</span><span class="o">,</span> <span class="n">Int.div'</span><span class="o">]</span> <span class="n">rfl</span>
-
-
-
@@ -667,6 +667,9 @@ or disjoint.</p><span class="k">#check</span> <span class="n">Subgroup.index_mul_card</span> <span class="k">#check</span> <span class="n">Nat.eq_of_mul_eq_mul_right</span> <span class="c1">-- The following line is working around a Lean bug that will be fixed very soon.</span> <span class="kn">attribute</span> <span class="o">[</span><span class="bp">-</span><span class="kd">instance</span><span class="o">]</span> <span class="n">Subtype.instInhabited</span> <span class="kd">lemma</span> <span class="n">aux_card_eq</span> <span class="o">[</span><span class="n">Fintype</span> <span class="n">G</span><span class="o">]</span> <span class="o">(</span><span class="n">h'</span> <span class="o">:</span> <span class="n">card</span> <span class="n">G</span> <span class="bp">=</span> <span class="n">card</span> <span class="n">H</span> <span class="bp">*</span> <span class="n">card</span> <span class="n">K</span><span class="o">)</span> <span class="o">:</span> <span class="n">card</span> <span class="o">(</span><span class="n">G</span> <span class="bp">⧸</span> <span class="n">H</span><span class="o">)</span> <span class="bp">=</span> <span class="n">card</span> <span class="n">K</span> <span class="o">:=</span> <span class="kd">by</span> <span class="gr">sorry</span> </pre></div>
-
@@ -838,7 +841,7 @@ deduced from the previous one:</p><div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kn">open</span> <span class="n">BigOperators</span> <span class="n">PiNotation</span> <span class="kd">example</span> <span class="o">{</span><span class="n">ι</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">Fintype</span> <span class="n">ι</span><span class="o">]</span> <span class="o">(</span><span class="n">a</span> <span class="o">:</span> <span class="n">ι</span> <span class="bp">→</span> <span class="n">ℕ</span><span class="o">)</span> <span class="o">(</span><span class="n">coprime</span> <span class="o">:</span> <span class="bp">∀</span> <span class="n">i</span> <span class="n">j</span><span class="o">,</span> <span class="n">i</span> <span class="bp">≠</span> <span class="n">j</span> <span class="bp">→</span> <span class="o">(</span><span class="n">a</span> <span class="n">i</span><span class="o">)</span><span class="bp">.</span><span class="n">Coprime</span> <span class="o">(</span><span class="n">a</span> <span class="n">j</span><span class="o">))</span> <span class="o">:</span> <span class="n">ZMod</span> <span class="o">(</span><span class="bp">∏</span> <span class="n">i</span><span class="o">,</span> <span class="n">a</span> <span class="n">i</span><span class="o">)</span> <span class="bp">≃+*</span> <span class="bp">∀</span> <span class="n">i</span><span class="o">,</span> <span class="n">ZMod</span> <span class="o">(</span><span class="n">a</span> <span class="n">i</span><span class="o">)</span> <span class="o">:=</span> <span class="n">ZMod</span> <span class="o">(</span><span class="bp">∏</span> <span class="n">i</span><span class="o">,</span> <span class="n">a</span> <span class="n">i</span><span class="o">)</span> <span class="bp">≃+*</span> <span class="bp">Π</span> <span class="n">i</span><span class="o">,</span> <span class="n">ZMod</span> <span class="o">(</span><span class="n">a</span> <span class="n">i</span><span class="o">)</span> <span class="o">:=</span> <span class="n">ZMod.prodEquivPi</span> <span class="n">a</span> <span class="n">coprime</span> </pre></div> </div>
-
-
-
@@ -178,7 +178,7 @@ conditions that we will spell out below. The notionsupports two related ideas:</p> <ul class="simple"> <li><p><em>limits</em>, including all the kinds of limits discussed above: finite and infinite limits of sequences, finite and infinite limits of functions at a point or at infinity, and so on.</p></li> <li><p><em>things happening eventually</em>, including things happening for large enough <code class="docutils literal notranslate"><span class="pre">n</span> <span class="pre">:</span> <span class="pre">ℕ</span></code>, or sufficiently near a point <code class="docutils literal notranslate"><span class="pre">x</span></code>, or for sufficiently close pairs of points, or almost everywhere in the sense of measure theory. Dually, filters can also express the idea of <em>things happening often</em>: for arbitrarily large <code class="docutils literal notranslate"><span class="pre">n</span></code>, at a point in any neighborhood of given a point, etc.</p></li> <li><p><em>things happening eventually</em>, including things happening for large enough <code class="docutils literal notranslate"><span class="pre">n</span> <span class="pre">:</span> <span class="pre">ℕ</span></code>, or sufficiently near a point <code class="docutils literal notranslate"><span class="pre">x</span></code>, or for sufficiently close pairs of points, or almost everywhere in the sense of measure theory. Dually, filters can also express the idea of <em>things happening often</em>: for arbitrarily large <code class="docutils literal notranslate"><span class="pre">n</span></code>, at a point in any neighborhood of a given point, etc.</p></li> </ul> <p>The filters that correspond to these descriptions will be defined later in this section, but we can already name them:</p> <ul class="simple">
-
@@ -548,7 +548,7 @@ will be explained as part of the calculus chapter.</p><h3><span class="section-number">9.2.1. </span>Convergence and continuity<a class="headerlink" href="#convergence-and-continuity" title="Link to this heading"></a></h3> <p>Using distance functions, we can already define convergent sequences and continuous functions between metric spaces. They are actually defined in a more general setting covered in the next section, but we have lemmas recasting the definition is terms of distances.</p> but we have lemmas recasting the definition in terms of distances.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">{</span><span class="n">u</span> <span class="o">:</span> <span class="n">ℕ</span> <span class="bp">→</span> <span class="n">X</span><span class="o">}</span> <span class="o">{</span><span class="n">a</span> <span class="o">:</span> <span class="n">X</span><span class="o">}</span> <span class="o">:</span> <span class="n">Tendsto</span> <span class="n">u</span> <span class="n">atTop</span> <span class="o">(</span><span class="bp">𝓝</span> <span class="n">a</span><span class="o">)</span> <span class="bp">↔</span> <span class="bp">∀</span> <span class="n">ε</span> <span class="bp">></span> <span class="mi">0</span><span class="o">,</span> <span class="bp">∃</span> <span class="n">N</span><span class="o">,</span> <span class="bp">∀</span> <span class="n">n</span> <span class="bp">≥</span> <span class="n">N</span><span class="o">,</span> <span class="n">dist</span> <span class="o">(</span><span class="n">u</span> <span class="n">n</span><span class="o">)</span> <span class="n">a</span> <span class="bp"><</span> <span class="n">ε</span> <span class="o">:=</span> <span class="n">Metric.tendsto_atTop</span>
-
@@ -654,7 +654,7 @@ and get our final proof, now bordering obfuscation.</p></pre></div> </div> <p>Once we have balls, we can define open sets. They are actually defined in a more general setting covered in the next section, but we have lemmas recasting the definition is terms of balls.</p> but we have lemmas recasting the definition in terms of balls.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">(</span><span class="n">s</span> <span class="o">:</span> <span class="n">Set</span> <span class="n">X</span><span class="o">)</span> <span class="o">:</span> <span class="n">IsOpen</span> <span class="n">s</span> <span class="bp">↔</span> <span class="bp">∀</span> <span class="n">x</span> <span class="bp">∈</span> <span class="n">s</span><span class="o">,</span> <span class="bp">∃</span> <span class="n">ε</span> <span class="bp">></span> <span class="mi">0</span><span class="o">,</span> <span class="n">Metric.ball</span> <span class="n">x</span> <span class="n">ε</span> <span class="bp">⊆</span> <span class="n">s</span> <span class="o">:=</span> <span class="n">Metric.isOpen_iff</span> </pre></div>
-
@@ -971,7 +971,7 @@ products of metric spaces. Consider for instance the type <code class="docutilsa product of copies of <code class="docutils literal notranslate"><span class="pre">ℝ</span></code> indexed by <code class="docutils literal notranslate"><span class="pre">ℝ</span></code>. We would like to say that pointwise convergence of sequences of functions is a respectable notion of convergence. But there is no distance on <code class="docutils literal notranslate"><span class="pre">ℝ</span> <span class="pre">→</span> <span class="pre">ℝ</span></code> that gives this notion of convergence. Relatedly, there is no distance ensuring that a map <code class="docutils literal notranslate"><span class="pre">f</span> <span class="pre">:</span> <span class="pre">X</span> <span class="pre">→</span> <span class="pre">(ℝ</span> <span class="pre">→</span> <span class="pre">ℝ)</span></code> is continuous if and only <code class="docutils literal notranslate"><span class="pre">fun</span> <span class="pre">x</span> <span class="pre">↦</span> <span class="pre">f</span> <span class="pre">x</span> <span class="pre">t</span></code> is continuous for every <code class="docutils literal notranslate"><span class="pre">t</span> <span class="pre">:</span> <span class="pre">ℝ</span></code>.</p> a map <code class="docutils literal notranslate"><span class="pre">f</span> <span class="pre">:</span> <span class="pre">X</span> <span class="pre">→</span> <span class="pre">(ℝ</span> <span class="pre">→</span> <span class="pre">ℝ)</span></code> is continuous if and only if <code class="docutils literal notranslate"><span class="pre">fun</span> <span class="pre">x</span> <span class="pre">↦</span> <span class="pre">f</span> <span class="pre">x</span> <span class="pre">t</span></code> is continuous for every <code class="docutils literal notranslate"><span class="pre">t</span> <span class="pre">:</span> <span class="pre">ℝ</span></code>.</p> <p>We now review the data used to solve all those issues. First we can use any map <code class="docutils literal notranslate"><span class="pre">f</span> <span class="pre">:</span> <span class="pre">X</span> <span class="pre">→</span> <span class="pre">Y</span></code> to push or pull topologies from one side to the other. Those two operations form a Galois connection.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">variable</span> <span class="o">{</span><span class="n">X</span> <span class="n">Y</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span>
-
@@ -992,7 +992,7 @@ As usual, pushing forward is covariant and pulling back is contravariant, see <cOn paper we will use notations <span class="math notranslate nohighlight">\(f_*T\)</span> for <code class="docutils literal notranslate"><span class="pre">TopologicalSpace.coinduced</span> <span class="pre">f</span> <span class="pre">T</span></code> and <span class="math notranslate nohighlight">\(f^*T\)</span> for <code class="docutils literal notranslate"><span class="pre">TopologicalSpace.induced</span> <span class="pre">f</span> <span class="pre">T</span></code>.</p> <p>Then the next big piece is a complete lattice structure on <code class="docutils literal notranslate"><span class="pre">TopologicalSpace</span> <span class="pre">X</span></code> for any given structure. If you think of topologies are being primarily the data of open sets then you expect for any given structure. If you think of topologies as being primarily the data of open sets then you expect the order relation on <code class="docutils literal notranslate"><span class="pre">TopologicalSpace</span> <span class="pre">X</span></code> to come from <code class="docutils literal notranslate"><span class="pre">Set</span> <span class="pre">(Set</span> <span class="pre">X)</span></code>, ie you expect <code class="docutils literal notranslate"><span class="pre">t</span> <span class="pre">≤</span> <span class="pre">t'</span></code> if a set <code class="docutils literal notranslate"><span class="pre">u</span></code> is open for <code class="docutils literal notranslate"><span class="pre">t'</span></code> as soon as it is open for <code class="docutils literal notranslate"><span class="pre">t</span></code>. However we already know that Mathlib focuses on neighborhoods more than open sets so, for any <code class="docutils literal notranslate"><span class="pre">x</span> <span class="pre">:</span> <span class="pre">X</span></code> we want the map from topological spaces to neighborhoods
-
@@ -1085,7 +1085,7 @@ but we’ll stick to Bourbaki’s version here.</p>insert that funny up arrow when needed. And the (inclusion) coercion map is <code class="docutils literal notranslate"><span class="pre">(↑)</span> <span class="pre">:</span> <span class="pre">A</span> <span class="pre">→</span> <span class="pre">X</span></code>. The assumption “tends to <span class="math notranslate nohighlight">\(x\)</span> while remaining in <span class="math notranslate nohighlight">\(A\)</span>” corresponds to the pull-back filter <code class="docutils literal notranslate"><span class="pre">comap</span> <span class="pre">(↑)</span> <span class="pre">(𝓝</span> <span class="pre">x)</span></code>.</p> <p>Let’s prove first an auxiliary lemma, extracted to simplify the context <p>Let’s first prove an auxiliary lemma, extracted to simplify the context (in particular we don’t need Y to be a topological space here).</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">theorem</span> <span class="n">aux</span> <span class="o">{</span><span class="n">X</span> <span class="n">Y</span> <span class="n">A</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">TopologicalSpace</span> <span class="n">X</span><span class="o">]</span> <span class="o">{</span><span class="n">c</span> <span class="o">:</span> <span class="n">A</span> <span class="bp">→</span> <span class="n">X</span><span class="o">}</span> <span class="o">{</span><span class="n">f</span> <span class="o">:</span> <span class="n">A</span> <span class="bp">→</span> <span class="n">Y</span><span class="o">}</span> <span class="o">{</span><span class="n">x</span> <span class="o">:</span> <span class="n">X</span><span class="o">}</span> <span class="o">{</span><span class="n">F</span> <span class="o">:</span> <span class="n">Filter</span> <span class="n">Y</span><span class="o">}</span>
-
@@ -1115,8 +1115,8 @@ In particular <code class="docutils literal notranslate"><span class="pre">(UIn addition <code class="docutils literal notranslate"><span class="pre">comap</span> <span class="pre">(↑)</span> <span class="pre">(𝓝</span> <span class="pre">y)</span> <span class="pre">≠</span> <span class="pre">⊥</span></code> because <code class="docutils literal notranslate"><span class="pre">A</span></code> is dense. Because we know <code class="docutils literal notranslate"><span class="pre">Tendsto</span> <span class="pre">f</span> <span class="pre">(comap</span> <span class="pre">(↑)</span> <span class="pre">(𝓝</span> <span class="pre">y))</span> <span class="pre">(𝓝</span> <span class="pre">(φ</span> <span class="pre">y))</span></code> this implies <code class="docutils literal notranslate"><span class="pre">φ</span> <span class="pre">y</span> <span class="pre">∈</span> <span class="pre">closure</span> <span class="pre">V'</span></code> and, since <code class="docutils literal notranslate"><span class="pre">V'</span></code> is closed, we have proved <code class="docutils literal notranslate"><span class="pre">φ</span> <span class="pre">y</span> <span class="pre">∈</span> <span class="pre">V'</span></code>.</p> <p>It remains to prove that <code class="docutils literal notranslate"><span class="pre">φ</span></code> extends <code class="docutils literal notranslate"><span class="pre">f</span></code>. This is were continuity of <code class="docutils literal notranslate"><span class="pre">f</span></code> enters the discussion, together with the fact that <code class="docutils literal notranslate"><span class="pre">Y</span></code> is Hausdorff.</p> <p>It remains to prove that <code class="docutils literal notranslate"><span class="pre">φ</span></code> extends <code class="docutils literal notranslate"><span class="pre">f</span></code>. This is where the continuity of <code class="docutils literal notranslate"><span class="pre">f</span></code> enters the discussion, together with the fact that <code class="docutils literal notranslate"><span class="pre">Y</span></code> is Hausdorff.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">[</span><span class="n">TopologicalSpace</span> <span class="n">X</span><span class="o">]</span> <span class="o">[</span><span class="n">TopologicalSpace</span> <span class="n">Y</span><span class="o">]</span> <span class="o">[</span><span class="n">T3Space</span> <span class="n">Y</span><span class="o">]</span> <span class="o">{</span><span class="n">A</span> <span class="o">:</span> <span class="n">Set</span> <span class="n">X</span><span class="o">}</span> <span class="o">(</span><span class="n">hA</span> <span class="o">:</span> <span class="bp">∀</span> <span class="n">x</span><span class="o">,</span> <span class="n">x</span> <span class="bp">∈</span> <span class="n">closure</span> <span class="n">A</span><span class="o">)</span> <span class="o">{</span><span class="n">f</span> <span class="o">:</span> <span class="n">A</span> <span class="bp">→</span> <span class="n">Y</span><span class="o">}</span> <span class="o">(</span><span class="n">f_cont</span> <span class="o">:</span> <span class="n">Continuous</span> <span class="n">f</span><span class="o">)</span> <span class="o">(</span><span class="n">hf</span> <span class="o">:</span> <span class="bp">∀</span> <span class="n">x</span> <span class="o">:</span> <span class="n">X</span><span class="o">,</span> <span class="bp">∃</span> <span class="n">c</span> <span class="o">:</span> <span class="n">Y</span><span class="o">,</span> <span class="n">Tendsto</span> <span class="n">f</span> <span class="o">(</span><span class="n">comap</span> <span class="o">(</span><span class="bp">↑</span><span class="o">)</span> <span class="o">(</span><span class="bp">𝓝</span> <span class="n">x</span><span class="o">))</span> <span class="o">(</span><span class="bp">𝓝</span> <span class="n">c</span><span class="o">))</span> <span class="o">:</span>
-
@@ -1128,7 +1128,7 @@ together with the fact that <code class="docutils literal notranslate"><span cla</div> <p>In addition to separation property, the main kind of assumption you can make on a topological space to bring it closer to metric spaces is countability assumption. The main one is first countability asking that every point has a countable neighborhood basic. In particular this ensures that closure asking that every point has a countable neighborhood basis. In particular this ensures that closure of sets can be understood using sequences.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">[</span><span class="n">TopologicalSpace</span> <span class="n">X</span><span class="o">]</span> <span class="o">[</span><span class="n">FirstCountableTopology</span> <span class="n">X</span><span class="o">]</span> <span class="o">{</span><span class="n">s</span> <span class="o">:</span> <span class="n">Set</span> <span class="n">X</span><span class="o">}</span> <span class="o">{</span><span class="n">a</span> <span class="o">:</span> <span class="n">X</span><span class="o">}</span> <span class="o">:</span>
-
-
-
@@ -298,7 +298,7 @@ into a normed space is pointwisebounded, then the norms of these linear maps are uniformly bounded. The main ingredient is Baire’s theorem <code class="docutils literal notranslate"><span class="pre">nonempty_interior_of_iUnion_of_closed</span></code>. (You proved a version of this in the topology chapter.) Minor ingredients include <code class="docutils literal notranslate"><span class="pre">continuous_linear_map.op_norm_le_of_shell</span></code>, Minor ingredients include <code class="docutils literal notranslate"><span class="pre">continuous_linear_map.opNorm_le_of_shell</span></code>, <code class="docutils literal notranslate"><span class="pre">interior_subset</span></code> and <code class="docutils literal notranslate"><span class="pre">interior_iInter_subset</span></code> and <code class="docutils literal notranslate"><span class="pre">is_closed_le</span></code>.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">variable</span> <span class="o">{</span><span class="bp">𝕜</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">NontriviallyNormedField</span> <span class="bp">𝕜</span><span class="o">]</span> <span class="o">{</span><span class="n">E</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">NormedAddCommGroup</span> <span class="n">E</span><span class="o">]</span> <span class="o">[</span><span class="n">NormedSpace</span> <span class="bp">𝕜</span> <span class="n">E</span><span class="o">]</span> <span class="o">{</span><span class="n">F</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">NormedAddCommGroup</span> <span class="n">F</span><span class="o">]</span> <span class="o">[</span><span class="n">NormedSpace</span> <span class="bp">𝕜</span> <span class="n">F</span><span class="o">]</span>
-
@@ -324,7 +324,7 @@ Minor ingredients include <code class="docutils literal notranslate"><span class<span class="k">have</span> <span class="n">real_norm_le</span> <span class="o">:</span> <span class="bp">∀</span> <span class="n">z</span> <span class="bp">∈</span> <span class="n">ball</span> <span class="n">x</span> <span class="n">ε</span><span class="o">,</span> <span class="bp">∀</span> <span class="o">(</span><span class="n">i</span> <span class="o">:</span> <span class="n">ι</span><span class="o">),</span> <span class="bp">‖</span><span class="n">g</span> <span class="n">i</span> <span class="n">z</span><span class="bp">‖</span> <span class="bp">≤</span> <span class="n">m</span> <span class="gr">sorry</span> <span class="k">have</span> <span class="n">εk_pos</span> <span class="o">:</span> <span class="mi">0</span> <span class="bp"><</span> <span class="n">ε</span> <span class="bp">/</span> <span class="bp">‖</span><span class="n">k</span><span class="bp">‖</span> <span class="o">:=</span> <span class="gr">sorry</span> <span class="n">refine'</span> <span class="o">⟨(</span><span class="n">m</span> <span class="bp">+</span> <span class="n">m</span> <span class="o">:</span> <span class="n">ℕ</span><span class="o">)</span> <span class="bp">/</span> <span class="o">(</span><span class="n">ε</span> <span class="bp">/</span> <span class="bp">‖</span><span class="n">k</span><span class="bp">‖</span><span class="o">),</span> <span class="k">fun</span> <span class="n">i</span> <span class="bp">↦</span> <span class="n">ContinuousLinearMap.op_norm_le_of_shell</span> <span class="n">ε_pos</span> <span class="n">_</span> <span class="n">hk</span> <span class="n">_</span><span class="o">⟩</span> <span class="n">refine'</span> <span class="o">⟨(</span><span class="n">m</span> <span class="bp">+</span> <span class="n">m</span> <span class="o">:</span> <span class="n">ℕ</span><span class="o">)</span> <span class="bp">/</span> <span class="o">(</span><span class="n">ε</span> <span class="bp">/</span> <span class="bp">‖</span><span class="n">k</span><span class="bp">‖</span><span class="o">),</span> <span class="k">fun</span> <span class="n">i</span> <span class="bp">↦</span> <span class="n">ContinuousLinearMap.opNorm_le_of_shell</span> <span class="n">ε_pos</span> <span class="n">_</span> <span class="n">hk</span> <span class="n">_</span><span class="o">⟩</span> <span class="gr">sorry</span> <span class="gr">sorry</span> </pre></div>
-
@@ -401,7 +401,7 @@ of the inverse function theorem and the statement of the implicit functiontheorem, both of which are in Mathlib. Over <code class="docutils literal notranslate"><span class="pre">ℝ</span></code> or <code class="docutils literal notranslate"><span class="pre">ℂ</span></code>, continuously differentiable functions are strictly differentiable.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">{</span><span class="bp">𝕂</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">IsROrC</span> <span class="bp">𝕂</span><span class="o">]</span> <span class="o">{</span><span class="n">E</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">NormedAddCommGroup</span> <span class="n">E</span><span class="o">]</span> <span class="o">[</span><span class="n">NormedSpace</span> <span class="bp">𝕂</span> <span class="n">E</span><span class="o">]</span> <span class="o">{</span><span class="n">F</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">{</span><span class="bp">𝕂</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">RCLike</span> <span class="bp">𝕂</span><span class="o">]</span> <span class="o">{</span><span class="n">E</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">NormedAddCommGroup</span> <span class="n">E</span><span class="o">]</span> <span class="o">[</span><span class="n">NormedSpace</span> <span class="bp">𝕂</span> <span class="n">E</span><span class="o">]</span> <span class="o">{</span><span class="n">F</span> <span class="o">:</span> <span class="kt">Type</span><span class="bp">*</span><span class="o">}</span> <span class="o">[</span><span class="n">NormedAddCommGroup</span> <span class="n">F</span><span class="o">]</span> <span class="o">[</span><span class="n">NormedSpace</span> <span class="bp">𝕂</span> <span class="n">F</span><span class="o">]</span> <span class="o">{</span><span class="n">f</span> <span class="o">:</span> <span class="n">E</span> <span class="bp">→</span> <span class="n">F</span><span class="o">}</span> <span class="o">{</span><span class="n">x</span> <span class="o">:</span> <span class="n">E</span><span class="o">}</span> <span class="o">{</span><span class="n">n</span> <span class="o">:</span> <span class="n">WithTop</span> <span class="n">ℕ</span><span class="o">}</span> <span class="o">(</span><span class="n">hf</span> <span class="o">:</span> <span class="n">ContDiffAt</span> <span class="bp">𝕂</span> <span class="n">n</span> <span class="n">f</span> <span class="n">x</span><span class="o">)</span> <span class="o">(</span><span class="n">hn</span> <span class="o">:</span> <span class="mi">1</span> <span class="bp">≤</span> <span class="n">n</span><span class="o">)</span> <span class="o">:</span> <span class="n">HasStrictFDerivAt</span> <span class="n">f</span> <span class="o">(</span><span class="n">fderiv</span> <span class="bp">𝕂</span> <span class="n">f</span> <span class="n">x</span><span class="o">)</span> <span class="n">x</span> <span class="o">:=</span> <span class="n">hf.hasStrictFDerivAt</span> <span class="n">hn</span>
-
-
-
@@ -235,7 +235,7 @@ For any <code class="docutils literal notranslate"><span class="pre">s</span> <sIn that case, their integrals are equal to zero by definition, as is <code class="docutils literal notranslate"><span class="pre">(μ</span> <span class="pre">s).toReal</span></code>. So in all cases we have the following lemma.</p> <div class="highlight-lean notranslate"><div class="highlight"><pre><span></span><span class="kd">example</span> <span class="o">{</span><span class="n">s</span> <span class="o">:</span> <span class="n">Set</span> <span class="n">α</span><span class="o">}</span> <span class="o">(</span><span class="n">c</span> <span class="o">:</span> <span class="n">E</span><span class="o">)</span> <span class="o">:</span> <span class="bp">∫</span> <span class="n">x</span> <span class="k">in</span> <span class="n">s</span><span class="o">,</span> <span class="n">c</span> <span class="bp">∂</span><span class="n">μ</span> <span class="bp">=</span> <span class="o">(</span><span class="n">μ</span> <span class="n">s</span><span class="o">)</span><span class="bp">.</span><span class="n">toReal</span> <span class="bp">•</span> <span class="n">c</span> <span class="o">:=</span> <span class="n">set_integral_const</span> <span class="n">c</span> <span class="n">setIntegral_const</span> <span class="n">c</span> </pre></div> </div> <p>We now quickly explain how to access the most important theorems in integration theory, starting
-
-
-
@@ -1,1 +1,1 @@Search.setIndex({"docnames": ["C01_Introduction", "C02_Basics", "C03_Logic", "C04_Sets_and_Functions", "C05_Elementary_Number_Theory", "C06_Structures", "C07_Hierarchies", "C08_Groups_and_Rings", "C09_Topology", "C10_Differential_Calculus", "C11_Integration_and_Measure_Theory", "genindex", "index"], "filenames": ["C01_Introduction.rst", "C02_Basics.rst", "C03_Logic.rst", "C04_Sets_and_Functions.rst", "C05_Elementary_Number_Theory.rst", "C06_Structures.rst", "C07_Hierarchies.rst", "C08_Groups_and_Rings.rst", "C09_Topology.rst", "C10_Differential_Calculus.rst", "C11_Integration_and_Measure_Theory.rst", "genindex.rst", "index.rst"], "titles": ["<span class=\"section-number\">1. </span>Introduction", "<span class=\"section-number\">2. </span>Basics", "<span class=\"section-number\">3. </span>Logic", "<span class=\"section-number\">4. </span>Sets and Functions", "<span class=\"section-number\">5. </span>Elementary Number Theory", "<span class=\"section-number\">6. </span>Structures", "<span class=\"section-number\">7. </span>Hierarchies", "<span class=\"section-number\">8. </span>Groups and Rings", "<span class=\"section-number\">9. </span>Topology", "<span class=\"section-number\">10. </span>Differential Calculus", "<span class=\"section-number\">11. </span>Integration and Measure Theory", "Index", "Mathematics in Lean"], "terms": {"The": [0, 1, 4, 5, 6, 7, 8, 9, 10, 12], "goal": [0, 1, 2, 3, 4, 5, 8], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "book": [0, 2, 8], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "teach": 0, "you": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "formal": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "mathemat": [0, 1, 2, 3, 4, 5, 6, 7, 8], "us": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "lean": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "4": [0, 1, 2, 4, 5, 7, 8, 9], "interact": [0, 5, 6, 7, 10], "proof": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "assist": [0, 2, 5], "It": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "assum": [0, 1, 2, 3, 4, 6, 7, 8], "know": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "some": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "doe": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "requir": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "much": [0, 2, 4, 6, 7, 8, 9], "although": [0, 3, 4, 5, 6, 7, 8], "we": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "cover": [0, 1, 3, 6, 7, 8, 9], "exampl": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "rang": [0, 2, 3, 4, 7, 8], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "number": [0, 1, 2, 3, 5, 6, 7, 8, 9, 12], "theori": [0, 1, 2, 3, 6, 7, 8, 9, 12], "measur": [0, 5, 8, 9, 12], "analysi": [0, 5, 9], "focu": [0, 1, 7, 8, 10], "elementari": [0, 3, 5, 7, 8, 12], "aspect": [0, 5, 7], "those": [0, 1, 2, 3, 5, 6, 7, 8, 9], "field": [0, 1, 5, 6, 7, 9], "hope": 0, "thei": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "familiar": [0, 1, 4, 5, 8, 9], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "pick": [0, 6], "them": [0, 1, 2, 3, 4, 5, 6, 7, 8], "up": [0, 2, 3, 4, 5, 6, 7, 8], "go": [0, 1, 2, 3, 4, 6, 8], "also": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "don": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "t": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "presuppos": 0, "ani": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "background": [0, 7], "method": [0, 2, 3, 4, 5], "seen": [0, 1, 2, 4, 5, 6, 7, 8], "kind": [0, 1, 6, 8], "comput": [0, 2, 3, 4, 5, 7, 9, 10], "program": [0, 1, 2], "write": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10], "definit": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "theorem": [0, 2, 4, 5, 7, 8, 9, 10, 12], "regiment": 0, "languag": [0, 1, 2, 3], "like": [0, 1, 2, 3, 4, 5, 6, 7, 8], "understand": [0, 2, 3, 4, 5, 6, 7, 8], "In": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "return": [0, 2, 3, 4, 5, 7, 8], "provid": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "feedback": 0, "inform": [0, 1, 2, 3, 5, 6, 8], "interpret": [0, 1, 4, 5, 7, 8], "express": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "guarante": [0, 3, 5], "well": [0, 1, 2, 3, 4, 5, 6, 7, 8], "form": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "ultim": 0, "certifi": 0, "correct": [0, 1, 7], "our": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "learn": [0, 1, 4, 5], "more": [0, 2, 3, 4, 5, 6, 7, 8, 9, 12], "about": [0, 2, 3, 4, 5, 6, 7, 8, 9, 12], "project": [0, 4, 5, 7, 8], "page": [0, 1, 4], "commun": [0, 4], "web": [0, 1, 4], "tutori": 0, "base": [0, 2, 3, 4, 6, 7, 8, 9], "": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "larg": [0, 6, 8], "ever": [0, 8], "grow": [0, 6, 7], "librari": [0, 1, 2, 3, 4, 5, 7, 8, 9], "mathlib": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "strongli": 0, "recommend": [0, 1, 3], "join": [0, 1, 5], "zulip": [0, 4], "onlin": 0, "chat": 0, "group": [0, 1, 2, 3, 5, 6, 8, 9, 12], "haven": [0, 2, 6, 8], "alreadi": [0, 1, 2, 3, 4, 5, 6, 7, 8], "ll": [0, 2, 4, 6, 8], "find": [0, 1, 2, 4, 5, 6, 8], "live": [0, 5], "welcom": [0, 1], "enthusiast": 0, "happi": 0, "answer": [0, 5, 8], "question": [0, 4, 6, 8, 10], "offer": [0, 2, 5, 8], "moral": [0, 5, 7], "support": [0, 1, 2, 3, 4, 5, 6, 8], "read": [0, 1, 4, 5, 6, 7, 8], "pdf": 0, "html": 0, "version": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "design": [0, 1, 2, 3, 5, 7, 8], "run": 0, "insid": [0, 1, 2, 3, 7], "v": [0, 1, 2, 3, 5, 8], "code": [0, 1, 2, 3, 5, 6], "editor": [0, 1], "To": [0, 1, 2, 3, 4, 5, 6, 7, 8], "instal": [0, 6], "follow": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "instruct": [0, 1, 2, 8], "make": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "sure": [0, 1, 2, 3, 5, 6, 7], "have": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "git": 0, "fetch": 0, "mathematics_in_lean": 0, "repositori": [0, 1], "open": [0, 1, 2, 3, 4, 5, 7, 9, 10], "each": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "section": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "ha": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "an": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "associ": [0, 1, 2, 4, 5, 6, 7, 8, 10], "file": [0, 1, 4, 5, 6, 7, 8], "exercis": [0, 1, 2, 3, 5, 6, 7, 8, 9], "folder": 0, "mil": 0, "organ": 0, "chapter": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "copi": [0, 3, 4, 6, 7, 8], "experi": [0, 1, 8], "do": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "leav": [0, 1, 2, 3, 5, 6, 7], "origin": [0, 1, 5, 7], "intact": 0, "easier": [0, 1, 3, 4, 6, 8], "updat": 0, "chang": [0, 1, 2, 4, 5, 8, 10], "see": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "below": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "call": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "my_fil": 0, "whatev": [0, 2, 4], "want": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "creat": [0, 1, 6], "your": [0, 1, 2, 3, 5, 6, 7, 8], "own": [0, 1, 4, 5, 6], "At": [0, 1, 2, 4, 5, 6], "point": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10], "textbook": [0, 1, 2], "side": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "panel": 0, "type": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "ctrl": [0, 1, 2, 4, 5], "shift": [0, 1, 6, 8], "p": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "command": [0, 1, 2, 3, 4, 5, 6, 7], "maco": 0, "document": [0, 1, 3, 4, 6], "view": [0, 5, 6, 7, 8], "bar": [0, 1, 2], "appear": [0, 1, 2, 5, 6, 7, 8], "press": 0, "select": [0, 8], "soon": [0, 2, 6, 7, 8], "highlight": [0, 2], "menu": [0, 1], "window": [0, 1, 2, 5], "click": [0, 1, 3, 4, 5, 6], "current": [0, 1, 2, 6], "altern": [0, 2, 3, 4, 5, 6, 8], "cloud": 0, "gitpod": 0, "how": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "github": [0, 1], "still": [0, 1, 2, 3, 4, 5, 6, 8, 10], "work": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "describ": [0, 1, 2, 3, 4, 5, 6, 8], "abov": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "progress": [0, 1, 5, 7], "pull": [0, 7, 8], "lake": 0, "ex": [0, 2], "cach": 0, "content": [0, 1, 2, 4, 8], "which": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "why": [0, 2, 4, 6, 7, 8], "suggest": [0, 2, 4, 5, 8], "intend": [0, 1, 2, 5], "while": [0, 1, 2, 6, 7, 8], "contain": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "explan": [0, 7, 8], "hint": [0, 1, 2, 10], "text": [0, 3, 5, 8], "often": [0, 1, 2, 3, 4, 5, 6, 7, 8], "includ": [0, 1, 2, 3, 4, 6, 7, 8, 9], "one": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "eval": [0, 7], "hello": 0, "world": 0, "should": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "abl": [0, 1, 2, 3, 4, 5, 6, 7, 9], "correspond": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "If": [0, 1, 2, 3, 4, 5, 6, 8], "line": [0, 1, 2, 3, 4, 6, 7], "show": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "hover": [0, 1, 2, 3, 4, 5], "cursor": [0, 1, 2], "over": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "respons": [0, 1], "pop": 0, "encourag": [0, 1, 2, 3, 4, 5], "edit": 0, "try": [0, 1, 2, 3, 4, 5, 6, 8], "moreov": [0, 1, 4, 5, 8], "lot": [0, 3, 5, 6, 7, 8], "challeng": [0, 1, 2, 3, 5, 9], "rush": 0, "past": [0, 1, 7], "just": [0, 1, 2, 3, 4, 5, 6, 7, 8], "through": [0, 1, 3, 4, 5, 6, 7, 8], "central": [0, 4], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "feel": [0, 1, 2, 6, 8], "comfort": 0, "master": [0, 1, 4], "relev": [0, 1, 2, 4, 5, 6, 7, 8], "skill": [0, 1, 2, 3, 4], "free": [0, 1, 7, 8], "move": [0, 1, 2, 6, 8], "alwai": [0, 1, 2, 3, 5, 6, 7], "compar": [0, 5, 6, 8], "solut": [0, 1, 4, 6], "ones": [0, 1, 2, 3, 5, 10], "put": [0, 1, 2, 3, 4, 5, 6, 7, 8], "simpli": [0, 1, 2, 3, 4, 5, 6, 7, 8], "tool": [0, 1, 5, 6], "build": [0, 2, 4, 6, 7, 8, 12], "complex": [0, 1, 2, 4, 5, 7, 9, 10], "known": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "depend": [0, 2, 3, 4, 5, 6, 7, 8], "everi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "check": [0, 1, 2, 3, 4, 5, 6, 7, 8], "print": [0, 3, 4, 5, 10], "\u2115": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "These": [0, 1, 3, 4, 5, 7, 9, 10], "object": [0, 1, 2, 3, 4, 5, 7, 12], "2": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "def": [0, 2, 3, 4, 5, 6, 7, 8], "f": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "3": [0, 1, 2, 3, 4, 5, 6, 7, 8], "prop": [0, 2, 3, 4, 5, 6, 7, 8, 10], "statement": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "fermatlasttheorem": 0, "y": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "z": [0, 1, 2, 5, 6, 7, 8, 9, 10], "n": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "where": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "itself": [0, 2, 3, 5, 6, 7, 8, 9], "Such": [0, 1, 2, 6], "proposit": [0, 2, 3, 4, 5], "easi": [0, 4, 5, 6, 7, 8], "rfl": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "hard": [0, 1, 3, 5, 6, 7], "sorri": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "manag": [0, 1, 4, 5, 8], "construct": [0, 2, 3, 4, 5, 6, 7, 8], "accept": [0, 1, 2, 8], "term": [0, 1, 2, 3, 4, 5, 7, 8], "done": [0, 2, 3, 4, 6, 7, 8], "someth": [0, 1, 2, 4, 6, 8], "veri": [0, 2, 4, 6, 7, 8, 10], "impress": 0, "cheat": [0, 1], "so": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "now": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "game": [0, 6], "left": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "rule": [0, 2, 4, 5, 6, 8], "complementari": 0, "companion": [0, 1], "prove": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "thorough": 0, "underli": [0, 1, 5, 6, 7], "logic": [0, 1, 3, 4, 5, 7, 12], "framework": 0, "core": [0, 4, 5], "syntax": [0, 1, 2, 4, 6], "peopl": [0, 1], "who": [0, 8], "prefer": [0, 1, 2, 3], "user": [0, 6], "manual": [0, 3, 4], "befor": [0, 1, 2, 3, 4, 5, 6, 7], "new": [0, 1, 2, 3, 4, 5, 6, 7, 8], "dishwash": 0, "person": 0, "hit": [0, 1], "button": 0, "figur": [0, 1, 2, 5], "out": [0, 1, 2, 3, 4, 5, 6, 7, 8], "activ": 0, "potscrubb": 0, "featur": [0, 2, 4, 7], "later": [0, 1, 2, 4, 5, 6, 7, 8], "sens": [0, 2, 3, 4, 5, 6, 7, 8, 9], "here": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "refer": [0, 1, 2, 4, 5, 6, 8, 9], "back": [0, 1, 2, 5, 6, 7, 8], "necessari": [0, 2, 4, 5, 7], "anoth": [0, 1, 2, 3, 4, 5, 6, 7, 8], "thing": [0, 1, 2, 3, 4, 5, 6, 8], "distinguish": [0, 5, 6, 7, 8, 9], "place": [0, 1, 2, 5, 8], "greater": [0, 1, 2, 3, 4, 8], "emphasi": [0, 6], "tactic": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "given": [0, 1, 2, 3, 4, 5, 6, 7, 8], "two": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "wai": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "down": [0, 3, 4, 6, 8], "themselv": [0, 4, 5], "suitabl": [0, 1, 2, 5, 8], "descript": [0, 1, 2, 4, 8], "thereof": 0, "For": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "repres": [0, 1, 2, 3, 4, 5, 6, 9], "fact": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "even": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10], "m": [0, 1, 2, 4, 6, 7, 8, 9], "nat": [0, 1, 2, 3, 4, 5, 7, 8], "fun": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "k": [0, 2, 4, 5, 7, 8, 9], "hk": [0, 9], "hmn": 0, "rw": [0, 2, 3, 4, 5, 6, 7, 8, 12], "mul_add": [0, 1, 4, 6], "l": [0, 1, 9, 10], "_": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "compress": [0, 1, 8], "singl": [0, 1, 2, 3, 4, 5, 6, 7, 9], "instead": [0, 1, 2, 3, 4, 5, 6, 7, 8], "style": [0, 1], "same": [0, 1, 2, 3, 4, 5, 6, 7, 8], "comment": [0, 4], "henc": [0, 2, 3, 4, 5, 6, 8, 9], "ignor": [0, 7, 8], "sai": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "natur": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "rintro": [0, 2, 3, 4, 7, 8], "need": [0, 1, 2, 3, 4, 5, 6, 7, 8], "twice": [0, 1, 8], "let": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "substitut": [0, 2], "obviou": [0, 4, 5, 6], "ring": [0, 1, 2, 3, 4, 5, 6, 12], "As": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "enter": [0, 1, 2, 3, 7, 8], "displai": [0, 1, 2, 6], "state": [0, 1, 2, 3, 4, 6, 7, 8, 9], "separ": [0, 1, 2, 4, 5], "tell": [0, 2, 3, 4, 5, 6, 7], "what": [0, 1, 2, 3, 4, 5, 6, 7, 8], "establish": [0, 1, 2, 3, 4, 5], "task": [0, 2, 4, 5, 6, 8], "remain": [0, 1, 2, 3, 5, 6, 8], "replai": 0, "step": [0, 1, 2, 3, 4, 5, 6], "sinc": [0, 1, 2, 3, 4, 5, 6, 7, 8], "continu": [0, 1, 4, 5, 6, 10], "first": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "introduc": [0, 1, 2, 3, 4, 8, 10], "could": [0, 1, 2, 4, 5, 6, 7, 8], "renam": 0, "decompos": [0, 3], "hypothesi": [0, 1, 2, 3, 4], "assumpt": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10], "second": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "declar": [0, 1, 4, 5, 6, 7], "next": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "rewrit": [0, 1, 2, 3, 4, 5, 6, 8], "replac": [0, 1, 2, 3, 4, 6, 7], "solv": [0, 1, 2, 3, 4, 5, 6, 8], "result": [0, 1, 2, 3, 4, 5, 6, 7, 8], "abil": 0, "small": [0, 2, 4, 5, 8], "increment": [0, 1], "extrem": [0, 6, 8], "power": [0, 1, 3, 4, 5, 6], "reason": [0, 1, 2, 4, 5, 6, 7, 8], "quicker": 0, "than": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "There": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10], "isn": [0, 2, 3, 4, 6], "sharp": 0, "distinct": [0, 2, 3, 4, 5, 8], "between": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "insert": [0, 2, 4, 5, 7, 8, 9], "did": [0, 2, 6, 8], "phrase": [0, 1, 2, 4, 5], "mul_left_comm": [0, 4], "convers": [0, 2, 4, 7, 8], "short": [0, 1, 2, 3, 4, 5], "middl": [0, 1, 2, 8], "That": [0, 4, 5, 6], "said": [0, 2, 4, 5], "reduc": [0, 2, 3, 4, 5], "liner": 0, "carri": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "But": [0, 1, 2, 3, 4, 5, 6, 7, 8], "substanti": 0, "autom": [0, 1, 5], "justifi": [0, 1, 2, 8], "longer": [0, 4, 5], "calcul": [0, 2, 4, 5, 12], "bigger": [0, 3, 9], "inferenti": 0, "invok": [0, 1, 8], "simplifi": [0, 2, 3, 4, 5, 8, 10], "specif": [0, 1, 3, 4, 5, 6], "pariti": [0, 4], "automat": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "intro": [0, 1, 2, 3, 4, 5, 6, 7, 8], "simp": [0, 2, 3, 4, 5, 6, 7, 8, 9], "parity_simp": 0, "big": [0, 5, 7, 8, 9], "differ": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "onli": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "its": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "built": [0, 2, 6, 7], "wherea": [0, 1, 2, 3, 5, 7, 8], "top": [0, 6, 7, 8, 9], "meant": [0, 2, 6], "complet": [0, 1, 2, 3, 4, 6, 7, 9], "extens": [0, 1, 6, 8, 9], "rather": [0, 1, 2, 4, 5, 6, 7, 8], "think": [0, 1, 2, 3, 4, 5, 6, 8, 9], "basic": [0, 2, 4, 5, 8, 10, 12], "entri": [0, 5, 7], "brows": [0, 1, 4, 7], "frustrat": [0, 6], "curv": 0, "steep": 0, "newcom": 0, "avail": [0, 1, 2, 4, 5, 6, 7], "round": [0, 1, 5], "clock": 0, "doubt": 0, "enough": [0, 1, 2, 3, 4, 6, 7, 8], "too": [0, 1, 3, 5, 6, 7, 8], "contribut": [0, 3], "develop": [0, 1, 4, 7, 10], "mission": 0, "choos": [0, 2, 3, 4, 5, 6, 7, 8], "dive": 0, "come": [0, 1, 2, 3, 4, 5, 6, 7, 8], "forewarn": 0, "fundament": [0, 4, 5, 6, 10], "life": [0, 2], "mai": [0, 1, 2, 3, 5, 6, 7, 8, 9], "never": [0, 6], "acknowledg": 0, "grate": [0, 5], "gabriel": 0, "ebner": 0, "set": [0, 1, 2, 4, 5, 6, 7, 9, 10, 12], "infrastructur": 0, "scott": 0, "morrison": 0, "mario": 0, "carneiro": 0, "help": [0, 1, 2, 3, 4, 5, 6, 8], "port": 0, "takeshi": 0, "ab": [0, 2, 5, 7], "julian": 0, "berman": 0, "alex": 0, "best": 0, "bulwi": 0, "cha": 0, "bryan": 0, "gin": 0, "ge": [0, 2, 5], "chen": 0, "steven": 0, "clontz": 0, "mauricio": 0, "collari": 0, "johan": 0, "commelin": 0, "mark": [0, 1, 2, 6, 8], "czubin": 0, "alexandru": 0, "duca": 0, "deni": 0, "gorbachev": 0, "winston": 0, "de": 0, "greef": 0, "mathieu": 0, "guai": 0, "paquet": 0, "k\u00fclshammer": 0, "martin": 0, "c": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10], "giovanni": 0, "mascellani": 0, "isaiah": 0, "mindich": 0, "hunter": 0, "monro": 0, "pietro": 0, "monticon": 0, "oliv": 0, "nash": 0, "bartosz": 0, "piotrowski": 0, "nicola": 0, "rolland": 0, "keith": 0, "guilherm": 0, "silva": 0, "pedro": 0, "s\u00e1nchez": 0, "terraf": 0, "flori": 0, "van": 0, "doorn": 0, "eric": 0, "wieser": 0, "been": [0, 1, 2, 4, 5, 6, 9], "partial": [0, 1, 2, 3, 5, 6, 7], "hoskinson": 0, "center": [0, 8], "nut": 1, "bolt": 1, "gener": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "without": [1, 2, 4, 5, 6, 7, 8, 9], "u": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "net": 1, "hand": [1, 2, 3, 4, 5, 6, 8], "equal": [1, 2, 3, 4, 5, 6, 7, 8, 10], "right": [1, 2, 3, 4, 5, 6, 8, 9], "tantamount": [1, 3], "name": [1, 2, 3, 4, 5, 6, 7, 8, 9], "b": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "real": [1, 2, 3, 4, 5, 6, 8, 9, 10], "mul_assoc": [1, 2, 4, 5, 6, 7], "mul_comm": [1, 2, 4, 5, 6, 7], "elimin": 1, "explicitli": [1, 2, 3, 5, 6, 7, 8, 9], "purpos": [1, 2, 3, 4, 5, 6, 8], "illustr": [1, 2, 3, 4, 5, 7], "multipl": [1, 2, 3, 4, 5, 6, 7, 9], "written": [1, 2, 3, 4, 5, 6, 7, 8, 9], "howev": [1, 2, 5, 6, 7, 8, 9], "good": [1, 2, 3, 4, 5, 6, 7, 8], "mind": [1, 2, 5, 6, 7], "notat": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "convent": [1, 5, 7, 10], "parenthes": [1, 2, 3, 4], "\u211d": [1, 2, 3, 5, 6, 7, 8, 9, 10], "import": [1, 2, 3, 4, 5, 6, 7, 8, 10], "begin": [1, 2, 3, 4, 5, 6], "sake": [1, 4], "breviti": [1, 5], "suppress": 1, "happen": [1, 6, 8], "charact": [1, 3, 6], "r": [1, 2, 4, 5, 6, 7, 8], "symbol": [1, 2, 5, 6, 7], "doesn": [1, 2, 7, 8], "until": [1, 4, 6, 8], "space": [1, 2, 3, 5, 6, 7, 10, 12], "tab": [1, 3, 4], "kei": [1, 4, 5, 7, 8], "curiou": [1, 6], "abbrevi": [1, 2, 3, 5], "get": [1, 2, 3, 4, 6, 7, 8, 9, 12], "access": [1, 3, 5, 6, 7, 8, 10], "keyboard": 1, "easili": [1, 4, 5, 6, 7], "backslash": [1, 3], "lead": [1, 2, 4, 5, 6, 7, 8], "lean4": 1, "input": [1, 3, 8], "leader": 1, "report": 1, "infoview": [1, 6], "A": [1, 2, 3, 4, 5, 6, 7, 8, 9], "typic": [1, 7], "might": [1, 2, 3, 4, 5, 7], "look": [1, 2, 3, 4, 6, 7, 8], "1": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "h\u2081": [1, 2, 3, 4], "prime": [1, 2, 3, 5, 6, 7, 12], "h\u2082": [1, 3, 4], "h\u2083": [1, 3], "denot": [1, 3, 4, 6, 7, 8], "context": [1, 2, 4, 5, 6, 7, 8, 9, 10], "plai": [1, 3, 4, 6, 7, 8], "three": [1, 2, 4, 5, 7, 8], "label": [1, 2], "everyth": [1, 2, 6, 8], "identifi": [1, 2, 4], "subscript": 1, "h": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "legal": 1, "would": [1, 2, 3, 4, 5, 6, 7, 8, 9], "h1": [1, 2, 3, 4, 5], "h2": [1, 2, 3, 5], "h3": 1, "foo": [1, 5], "baz": 1, "last": [1, 2, 3, 4, 5, 6, 7, 8], "sometim": [1, 2, 3, 4, 5, 6, 7, 8], "target": [1, 6, 7, 8, 10], "combin": [1, 2, 5, 6, 7, 8], "practic": [1, 2, 3, 6, 7, 8], "mean": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "usual": [1, 2, 3, 4, 5, 7, 8, 10], "clear": [1, 2, 4, 5, 6], "case": [1, 2, 3, 4, 5, 6, 7, 8, 10], "With": [1, 3, 4, 6, 8], "arrow": [1, 2, 6, 8], "revers": [1, 2, 3, 5, 8], "note": [1, 2, 4, 5, 6, 7, 8, 10], "noth": [1, 2, 3, 4, 5, 6, 7], "argument": [1, 2, 3, 4, 5, 6, 7, 8], "tri": [1, 2, 4, 6], "match": [1, 2, 5], "pattern": [1, 2, 3, 5, 6], "local": [1, 2, 6, 8, 9], "d": [1, 2, 4, 5, 7, 9], "e": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "sub_self": [1, 2], "hyp": 1, "list": [1, 2, 3, 4, 5], "comma": 1, "squar": [1, 2, 4, 5, 6, 7], "bracket": [1, 2, 5, 6, 7], "after": [1, 2, 4, 6, 8, 9], "trick": [1, 2, 4, 6, 9], "variabl": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "onc": [1, 2, 3, 4, 5, 6, 7, 8, 10], "outsid": [1, 4], "inspect": 1, "reveal": 1, "inde": [1, 5, 6, 7, 8, 9], "delimit": 1, "scope": [1, 2, 3, 5, 7], "end": [1, 2, 3, 4, 5, 6, 7, 8, 9], "block": [1, 4, 7], "final": [1, 2, 3, 5, 7, 8, 10], "recal": [1, 2, 4, 5, 7, 8, 10], "introduct": [1, 2, 7, 8, 12], "determin": [1, 5, 7, 8], "both": [1, 2, 3, 4, 5, 6, 7, 8, 9], "expect": [1, 2, 3, 4, 5, 6, 7, 8], "rais": [1, 4], "error": [1, 2, 3, 6], "explain": [1, 2, 3, 4, 5, 6, 7, 8, 10], "output": [1, 7], "meanwhil": [1, 4], "take": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "two_mul": 1, "add_mul": [1, 6], "distribut": [1, 4, 5, 6], "addit": [1, 2, 4, 5, 6, 7, 8, 9, 10], "add_assoc": [1, 4, 5, 6], "precis": [1, 3, 7, 8, 9], "possibl": [1, 2, 3, 4, 5, 7, 8], "calc": [1, 2, 3, 5, 7, 8], "keyword": [1, 2, 4, 5], "notic": [1, 2, 3, 4, 5, 7, 8], "finicki": 1, "underscor": [1, 2, 3], "justif": [1, 2], "format": 1, "indic": [1, 2, 3, 5, 6], "indent": 1, "One": [1, 2, 3, 4, 5, 6, 7, 8], "outlin": [1, 2, 4, 8], "modulo": [1, 4, 5], "individu": 1, "pure": [1, 8], "littl": [1, 2, 8, 9], "underneath": [1, 3], "pow_two": [1, 4], "mul_sub": 1, "add_sub": 1, "sub_sub": 1, "add_zero": [1, 5, 6], "perform": [1, 2, 3], "exact": [1, 2, 3, 4, 5, 7, 8], "becaus": [1, 2, 3, 4, 5, 6, 7, 8, 9], "exactli": [1, 2, 3, 5, 6, 7, 8], "close": [1, 2, 3, 6, 7, 9, 10], "bit": [1, 2, 4, 6, 7, 8], "commut": [1, 2, 3, 4, 5, 6, 7, 9], "long": [1, 2, 3, 5, 6, 7, 9], "axiom": [1, 2, 3, 5, 6, 7, 8, 10], "indirectli": 1, "data": [1, 2, 4, 5, 6, 8], "other": [1, 2, 3, 4, 5, 6, 7, 8], "similar": [1, 2, 3, 5, 6, 7, 8], "common": [1, 2, 3, 4, 5, 7, 8], "variat": [1, 3, 4, 5, 8, 9], "nth_rewrit": 1, "allow": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "particular": [1, 2, 5, 6, 7, 8], "instanc": [1, 2, 3, 4, 5, 6, 7, 8, 9], "enumer": [1, 2], "start": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12], "occurr": 1, "nth_rw": 1, "consist": [1, 3, 5, 6, 7, 8, 9], "collect": [1, 2, 3, 5, 8, 10], "oper": [1, 2, 3, 4, 5, 6, 7, 8, 9], "time": [1, 4, 5, 6, 8, 9, 10], "constant": [1, 2, 7, 10], "mapsto": [1, 5], "abelian": [1, 5, 6], "negat": [1, 5, 12], "invers": [1, 3, 5, 6, 7, 9, 10], "add_comm": [1, 4, 5, 6, 7], "zero_add": [1, 4, 5, 6], "add_left_neg": [1, 5], "mul_on": [1, 5, 6, 7], "one_mul": [1, 2, 5, 6], "being": [1, 3, 5, 7, 8, 9], "suffic": [1, 2, 3, 7, 8], "give": [1, 2, 3, 4, 6, 7, 8, 10], "element": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "concret": [1, 2, 4, 5, 6, 8], "integ": [1, 2, 4, 6, 7, 12], "abstract": [1, 2, 5, 6, 7, 8], "character": [1, 3, 4, 8, 9], "axiomat": [1, 2, 3, 5], "train": [1, 6], "recogn": [1, 2, 4, 5, 6, 8], "appropri": [1, 2, 3, 5, 6], "\u2124": [1, 4, 5, 6, 7], "ration": [1, 2, 4, 8], "\u211a": [1, 4, 7, 8], "\u2102": [1, 5, 7, 9], "extend": [1, 3, 4, 5, 6, 8, 10], "order": [1, 2, 3, 4, 5, 6, 8, 9], "Not": [1, 5, 8], "properti": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "hold": [1, 2, 3, 4, 5, 7, 8, 10], "arbitrari": [1, 2, 3, 4, 5, 7], "taken": [1, 2], "cours": [1, 2, 4, 6, 7, 8, 9, 10], "linear": [1, 2, 5, 7, 8], "matric": [1, 5, 7], "fail": [1, 2, 4, 5, 6, 8, 10], "commr": [1, 2, 5, 7], "unchang": [1, 2], "linarith": [1, 2, 4, 5], "permiss": 1, "strike": [1, 2], "balanc": 1, "concis": [1, 5, 7], "readabl": [1, 2, 3, 4, 8], "strengthen": [1, 2, 4], "deriv": [1, 2, 4, 7, 9, 10], "most": [1, 2, 3, 4, 5, 6, 7, 8, 10], "organiz": 1, "mechan": [1, 2, 5], "namespac": [1, 2, 3, 4, 5, 7, 8], "full": [1, 2, 3, 4, 5, 6, 7, 8], "shorter": [1, 3, 4, 7, 8], "avoid": [1, 2, 3, 4, 5, 6, 7, 9], "due": [1, 6], "clash": 1, "myre": 1, "add_right_neg": 1, "effect": [1, 3, 6, 8], "temporarili": [1, 2], "reprov": [1, 7], "care": [1, 2, 3, 5], "earlier": [1, 7], "pai": [1, 2, 6, 7, 8], "attent": [1, 2, 4, 6, 7, 8], "curli": [1, 2], "implicit": [1, 2, 5, 6, 7, 8, 9], "moment": [1, 2, 5], "worri": [1, 3, 4, 5, 7], "neg_add_cancel_left": 1, "add_neg_cancel_right": 1, "add_left_cancel": 1, "add_right_cancel": 1, "plan": [1, 6, 8], "brace": 1, "imagin": 1, "situat": [1, 3, 6, 7, 8], "draw": [1, 5, 6], "conclus": [1, 2, 4], "hypothes": [1, 2, 3, 4, 5], "redund": [1, 5, 8, 10], "few": [1, 2, 3, 4, 8], "extra": [1, 2, 3, 5, 6, 7, 8], "oner": 1, "complic": [1, 2, 6, 7], "tediou": [1, 2, 6], "suppos": [1, 2, 3, 4, 5, 8], "infer": [1, 2, 3, 5, 6, 7], "mul_zero": [1, 5, 6], "serv": [1, 3, 4, 5, 10], "therefor": [1, 4, 5, 8], "promot": 1, "modular": 1, "subproof": 1, "wa": [1, 3, 7], "except": [1, 2, 5, 7], "ad": [1, 2, 3, 4, 5, 6, 8], "variant": [1, 2, 7, 8], "whose": [1, 2, 4, 5, 6, 7, 8, 9], "necessarili": [1, 10], "miss": [1, 3, 4], "piec": [1, 4, 5, 6, 7, 8], "either": [1, 2, 3, 5, 6, 8], "becom": [1, 4, 5, 6, 8], "technic": [1, 5, 6], "strictli": [1, 2, 9], "less": [1, 2, 3, 4, 5, 6, 7, 8], "script": 1, "slightli": [1, 6, 7, 8, 9], "clearer": [1, 3, 5], "human": 1, "reader": [1, 8], "maintain": 1, "evolv": 1, "rememb": [1, 2, 3, 4, 5, 6, 7, 8], "zero_mul": [1, 4, 5, 6], "By": [1, 3, 5, 6, 7], "neg_eq_of_add_eq_zero": 1, "eq_neg_of_add_eq_zero": 1, "neg_zero": 1, "neg_neg": 1, "had": [1, 6], "annot": [1, 2, 3, 4, 5, 6], "third": [1, 2, 3, 5, 8], "specifi": [1, 2, 3, 4, 5, 8, 9, 10], "imposs": 1, "default": [1, 2, 3, 4, 5, 6, 7, 9], "subtract": [1, 4, 5], "provabl": [1, 3, 6, 8], "sub_eq_add_neg": 1, "On": [1, 2, 3, 5, 6, 8, 10], "defin": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12], "reflex": [1, 2], "present": [1, 2, 4, 7, 8], "forc": [1, 2, 3, 7], "unfold": [1, 2, 3, 4, 5, 8], "deal": [1, 2, 3, 4, 5, 8], "equat": [1, 2, 3, 4, 5], "interchang": 1, "self_sub": 1, "effort": [1, 4], "one_add_one_eq_two": 1, "norm_num": [1, 2, 4, 5], "strength": 1, "weaker": [1, 2], "notion": [1, 2, 3, 4, 5, 7, 8, 9, 10], "addgroup": [1, 5, 7], "otherwis": [1, 2, 3, 4, 5, 7], "addcommgroup": [1, 7], "commgroup": 1, "g": [1, 2, 3, 5, 6, 7, 8, 9, 10], "mul_left_inv": [1, 5], "\u00b9": [1, 3, 5, 6, 7, 8], "cocki": 1, "helper": 1, "along": [1, 4, 7, 8], "mul_right_inv": [1, 5], "mul_inv_rev": 1, "non": [1, 3, 6, 7, 8, 10], "abel": [1, 7], "noncomm_r": 1, "seem": [1, 2, 4, 6, 8, 9], "odd": [1, 2, 3, 4], "partli": [1, 6, 7], "histor": [1, 7], "conveni": [1, 2, 3, 5, 6, 7, 8], "great": [1, 5], "sort": [1, 3, 4], "inequ": [1, 2, 6, 8], "le": [1, 5, 6], "whenev": [1, 2, 4, 5], "consid": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "le_refl": [1, 2], "le_tran": [1, 2], "detail": [1, 2, 3, 4, 5, 6, 7], "unless": [1, 2, 5], "realli": [1, 2, 3, 4, 6, 7, 8], "insist": [1, 6], "discuss": [1, 2, 4, 5, 6, 7, 8, 9], "implic": [1, 8, 12], "h\u2080": [1, 2, 3, 4, 8], "dot": [1, 7, 8], "option": [1, 2, 4, 5, 6, 8], "within": [1, 2, 8], "visibl": 1, "must": [1, 5, 6, 8], "decreas": [1, 5], "fourth": [1, 2], "mode": [1, 2, 5], "entir": [1, 3, 5, 8, 9], "lt_of_le_of_lt": [1, 2], "lt_of_lt_of_l": 1, "lt_tran": [1, 2], "togeth": [1, 2, 3, 4, 5, 7, 8], "handl": [1, 3, 4, 6, 7], "arithmet": 1, "5": [1, 2, 5, 7, 8, 9], "pass": [1, 5], "exp_le_exp": 1, "mpr": [1, 2, 5, 8], "exp": [1, 3], "applic": [1, 2, 4, 5, 7, 10], "function": [1, 2, 4, 5, 6, 7, 9, 10, 12], "compound": [1, 2, 8], "pars": [1, 3, 7], "exp_lt_exp": 1, "log_le_log": 1, "log": [1, 3, 10], "log_lt_log": 1, "add_le_add": [1, 2], "add_le_add_left": 1, "add_le_add_right": 1, "add_lt_add_of_le_of_lt": 1, "add_lt_add_of_lt_of_l": 1, "add_lt_add_left": 1, "add_lt_add_right": 1, "add_nonneg": [1, 5], "add_po": 1, "add_pos_of_pos_of_nonneg": 1, "exp_po": [1, 3], "bi": [1, 2, 5], "lr": 1, "iff": [1, 3, 7, 8, 9, 10, 12], "connect": [1, 3, 5, 8], "equival": [1, 2, 3, 4, 5, 7, 8, 9, 10], "mp": [1, 2, 3, 4, 8], "forward": [1, 2, 5, 7, 8], "direct": [1, 2, 3, 6, 7, 8, 9], "stand": [1, 2, 5, 6, 7, 8, 9], "modu": 1, "ponen": 1, "respect": [1, 2, 3, 4, 5, 7, 8], "thu": [1, 3, 4, 5, 8], "again": [1, 2, 3, 4, 5, 6, 7, 8], "numer": [1, 4, 5], "constitut": 1, "part": [1, 2, 3, 4, 5, 6, 8, 10], "strategi": [1, 2, 4], "api": 1, "reli": [1, 2, 5, 8], "guess": [1, 2, 3, 4, 5], "cmd": [1, 2], "mac": [1, 2], "a_of_b_of_c": 1, "approxim": 1, "loud": 1, "probabl": [1, 5, 6, 8], "add_l": 1, "choic": [1, 2, 3, 5, 8], "exist": [1, 2, 3, 6, 7, 8], "jump": [1, 4, 5, 8], "nearbi": [1, 4], "sq_nonneg": 1, "delet": [1, 2, 3, 4], "uncom": 1, "previou": [1, 2, 3, 5, 6, 7, 8, 9, 10], "confirm": [1, 2, 3, 4], "finish": [1, 2, 3, 4, 7], "job": 1, "pow_two_nonneg": [1, 2], "tend": [1, 8], "around": [1, 3, 6, 7, 8, 10], "binari": [1, 2, 4, 5, 6], "increas": 1, "worth": [1, 2, 5], "definition": [1, 4, 5, 6, 8], "principl": [1, 2, 3, 4, 6, 9], "favor": [1, 5], "timesav": 1, "clever": 1, "involv": [1, 2, 4, 5, 6, 7, 8], "nice": [1, 2, 4, 6, 7, 8], "idea": [1, 2, 3, 5, 6, 8], "abs_l": [1, 5], "constructor": [1, 2, 3, 4, 5, 6], "split": [1, 2, 3, 4], "conjunct": [1, 6, 12], "congratul": [1, 2, 4], "min": [1, 2, 8, 10], "uniqu": [1, 2, 3, 4, 5, 7, 8], "min_le_left": 1, "min_le_right": 1, "le_min": 1, "max": [1, 2, 6, 8, 10], "pair": [1, 2, 4, 5, 7, 8], "act": [1, 7], "curri": 1, "logician": 1, "haskel": 1, "bind": [1, 3], "tighter": [1, 3], "infix": [1, 6], "le_antisymm": [1, 2], "usag": 1, "inconsist": 1, "outer": 1, "level": [1, 2, 6], "nest": [1, 2], "bother": [1, 3], "repetit": [1, 6], "foreshadow": 1, "univers": [1, 3, 5, 7, 8, 12], "quantifi": [1, 3, 4, 5, 7, 8, 12], "desir": [1, 3, 6, 7, 8], "implicitli": [1, 2], "repeat": [1, 4, 5, 6], "mani": [1, 2, 3, 5, 6, 7, 8, 9, 10, 12], "shorten": [1, 2, 7], "Of": [1, 2, 4, 6, 7, 8, 9, 10], "interest": [1, 2, 3, 5, 6, 8], "vice": [1, 3], "versa": [1, 3], "word": [1, 2, 3, 4, 5, 7, 8], "switch": [1, 6], "transit": [1, 2, 5, 8], "total": 1, "satisfi": [1, 3, 4, 5, 6, 8, 9], "disjunct": [1, 3, 12], "stick": [1, 2, 8, 9], "aux": [1, 2, 4, 8], "valu": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "yield": [1, 2, 3, 4, 5, 8], "made": [1, 2, 3, 5, 8], "manifest": [1, 8], "triangl": [1, 2, 5], "abs_add": [1, 2], "sub_add_cancel": [1, 5], "relat": [1, 2, 3, 5, 6, 7, 8, 9, 10], "divis": [1, 2, 4, 5, 6], "Be": [1, 3], "ordinari": [1, 2, 4, 5, 7, 8], "unicod": [1, 3, 6], "obtain": [1, 2, 4, 5, 8, 9], "dvd": 1, "dvd_tran": 1, "dvd_mul_of_dvd_left": 1, "dvd_mul_left": 1, "expon": 1, "expand": [1, 2, 3, 4, 5, 6], "w": [1, 6], "greatest": [1, 5, 8], "divisor": [1, 2, 4, 5, 7], "gcd": [1, 2, 4], "least": [1, 5, 6, 8], "lcm": 1, "analog": [1, 2, 3, 4, 8], "divid": [1, 2, 4, 5, 7], "gcd_zero_right": 1, "gcd_zero_left": 1, "lcm_zero_right": 1, "lcm_zero_left": 1, "dvd_antisymm": 1, "complain": 1, "ambigu": [1, 5], "_root_": [1, 4], "saw": [1, 5, 6, 7, 8], "govern": [1, 5], "class": [1, 4, 5, 6, 7, 8, 9, 10], "antisymmetr": [1, 2], "\u03b1": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "partialord": [1, 2], "adopt": 1, "letter": [1, 5, 9], "\u03b2": [1, 2, 3, 5, 6, 8, 10], "\u03b3": [1, 2, 5, 8], "greek": [1, 4], "especi": [1, 2, 5, 6, 7, 8], "strict": [1, 2], "somewhat": [1, 3, 8], "lt_irrefl": [1, 2], "lt_iff_le_and_n": 1, "lattic": [1, 5, 6, 7, 8], "inf_le_left": [1, 8], "inf_le_right": 1, "le_inf": 1, "le_sup_left": 1, "le_sup_right": 1, "sup_l": 1, "lower": [1, 2, 4], "bound": [1, 2, 3, 4, 5, 8, 9, 10], "upper": [1, 2], "glb": 1, "lub": 1, "infimum": [1, 6, 7, 8, 10], "supremum": [1, 4, 6, 7], "inf": [1, 6, 8], "sup": [1, 4, 8], "further": [1, 8], "matter": [1, 2], "meet": [1, 2, 3, 5], "keep": [1, 5, 6, 7], "dictionari": 1, "subset": [1, 2, 3, 5, 8, 9], "domain": [1, 2, 3, 4, 5, 7, 8], "boolean": 1, "truth": [1, 4], "fals": [1, 2, 3, 4, 6], "true": [1, 2, 3, 6, 8], "posit": [1, 3, 4, 5, 8, 10], "subspac": [1, 6], "vector": [1, 3, 6, 7, 9], "intersect": [1, 3, 5, 6, 7, 8, 10], "sum": [1, 2, 4, 5, 6, 7, 8], "inclus": [1, 3, 7, 8], "topologi": [1, 5, 6, 9, 12], "union": [1, 3, 4, 5, 6, 7, 9, 10], "inf_comm": [1, 7], "inf_assoc": 1, "sup_comm": 1, "sup_assoc": 1, "absorpt": 1, "law": [1, 7], "absorb1": 1, "absorb2": 1, "found": [1, 5, 7, 9], "inf_sup_self": 1, "sup_inf_self": 1, "distriblattic": 1, "inf_sup_left": 1, "inf_sup_right": 1, "sup_inf_left": 1, "sup_inf_right": 1, "shown": [1, 5, 9, 10], "explicit": [1, 2, 5, 6, 8], "nondistribut": 1, "finit": [1, 3, 4, 5, 7, 8, 9, 10], "impli": [1, 2, 3, 4, 5, 8], "larger": [1, 8], "carrier": [1, 5, 6, 7], "compat": [1, 7, 8], "strictorderedr": 1, "mul_po": [1, 4], "mul_nonneg": 1, "coupl": [1, 2, 6, 8], "metric": [1, 5, 9, 12], "equip": [1, 3, 5, 6, 7, 8, 9, 10], "distanc": [1, 2, 8, 9], "dist": [1, 8], "map": [1, 2, 3, 5, 6, 7, 8], "metricspac": [1, 8, 9], "dist_self": 1, "dist_comm": [1, 8], "dist_triangl": [1, 8], "nonneg": [1, 5], "nonneg_of_mul_nonneg_left": 1, "dist_nonneg": [1, 8], "dealt": 2, "simpl": [2, 4, 5, 6, 9], "absolut": 2, "\u03b5": [2, 8, 9], "though": [2, 3, 4, 5], "treat": [2, 3, 5, 6, 7, 8, 9], "appli": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "my_lemma": 2, "\u03b4": [2, 8], "hb": [2, 8], "subsequ": [2, 4, 8], "lemma": [2, 4, 5, 6, 7, 8, 9, 10, 12], "mention": [2, 3, 5, 6, 7, 8], "my_lemma2": 2, "stage": [2, 5, 6], "my_lemma3": 2, "epo": 2, "ele1": 2, "xlt": 2, "ylt": 2, "essenti": [2, 3, 5, 7, 8], "colon": 2, "off": [2, 3, 4], "my_lemma4": 2, "abs_mul": 2, "mul_le_mul": 2, "abs_nonneg": 2, "mul_lt_mul_right": 2, "extract": [2, 8], "hidden": 2, "expos": [2, 8], "predic": [2, 3, 4, 6, 7, 8, 9], "fnub": 2, "fnlb": 2, "lambda": [2, 5], "hfa": 2, "hgb": 2, "dsimp": [2, 3, 4, 5, 7], "simplif": [2, 3, 4], "contract": 2, "anyhow": 2, "control": 2, "transform": [2, 3], "rest": [2, 3, 5, 7, 8], "routin": 2, "nnf": 2, "nng": 2, "nna": 2, "codomain": [2, 4, 8], "structur": [2, 4, 6, 7, 8, 9, 10, 12], "monoid": [2, 3, 4, 6, 12], "fnub_add": 2, "orderedcanceladdcommmonoid": 2, "high": [2, 7], "monoton": [2, 6, 8], "nondecreas": [2, 4], "placehold": 2, "Or": [2, 3], "backward": [2, 8], "subgoal": 2, "mf": 2, "mg": 2, "aleb": 2, "flag": [2, 3], "squiggli": 2, "marker": 2, "nnc": 2, "bbb": [2, 5], "fneven": 2, "fnodd": 2, "ef": 2, "eg": 2, "og": 2, "rid": 2, "won": [2, 4, 6, 7, 8], "cannot": [2, 3, 4, 5, 6, 7, 8], "contrari": 2, "syntact": 2, "reduct": [2, 3, 5], "erw": 2, "harder": [2, 5], "spot": 2, "manipul": [2, 5, 7, 8], "foundat": [2, 3, 4, 5, 7], "mundan": 2, "assert": [2, 3, 6, 7], "contrast": [2, 3, 5, 6, 8], "zermelo": 2, "fraenkel": 2, "sin": [2, 9], "co": [2, 7], "zf": 2, "defect": [2, 6, 8], "theoret": [2, 3, 8], "motiv": 2, "detect": 2, "meaningless": 2, "independ": [2, 3, 5], "continuum": 2, "meta": [2, 6], "beyond": [2, 6, 9], "ask": [2, 4, 5, 6, 7, 8], "refl": [2, 3, 5, 6, 7], "tran": [2, 4, 5, 6, 7], "setub": 2, "inject": [2, 3, 4, 6, 7, 8], "x_1": [2, 3], "x_2": [2, 3], "x\u2081": [2, 3, 5, 8], "x\u2082": [2, 3, 5], "add": [2, 4, 5, 6, 7, 8, 9], "nonzero": [2, 4, 5, 10], "sourc": [2, 8], "inspir": 2, "add_left_inj": 2, "composit": [2, 3, 5, 6, 7, 8], "injg": 2, "injf": [2, 3], "canon": [2, 3, 4, 5], "exhibit": [2, 8], "anonym": [2, 3, 4, 5, 7], "angl": 2, "certain": [2, 6, 8], "fnhasub": 2, "fnhaslb": 2, "ubf": 2, "ubg": 2, "rcase": [2, 3, 4, 8], "ubfa": 2, "ubgb": 2, "unpack": [2, 3], "main": [2, 6, 8, 9], "els": [2, 3, 4], "turn": [2, 3, 4, 5, 6, 8, 9], "fn_ub_add": 2, "directli": [2, 4, 5, 6, 8], "lbf": 2, "lbg": 2, "recurs": [2, 3, 5, 12], "arbitrarili": [2, 8], "assign": [2, 3, 5, 6, 7], "compon": [2, 3, 5, 8, 10], "destruct": 2, "produc": [2, 7, 9], "tag": [2, 3, 6], "chosen": [2, 5], "intern": [2, 5, 7], "primit": [2, 3], "scientist": 2, "sight": [2, 6], "hurt": 2, "chanc": 2, "yourself": [2, 5], "compani": 2, "old": [2, 5, 6], "chestnut": 2, "product": [2, 4, 5, 6, 7, 8, 10], "magic": [2, 5, 6], "verifi": 2, "sumofsquar": 2, "sumofsquares_mul": 2, "sosx": 2, "sosi": 2, "xeq": [2, 3], "yeq": 2, "insight": 2, "gaussian": [2, 7, 12], "sqrt": [2, 3, 4, 5], "norm": [2, 5, 8, 12], "reflect": 2, "di": [2, 5], "xy": [2, 5], "cryptic": 2, "easiest": [2, 4], "perspicu": 2, "6": [2, 4, 5, 6, 7, 8, 9], "divab": 2, "divbc": 2, "beq": 2, "ceq": 2, "And": [2, 4, 6, 8], "pretti": [2, 6, 7, 8], "Then": [2, 3, 5, 6, 7, 8, 10], "divac": 2, "alpha": [2, 3], "beta": [2, 3], "surject": [2, 3, 7, 8], "mul_div_cancel": [2, 4], "field_simp": [2, 5], "denomin": [2, 4, 5], "hx": [2, 3, 5, 6, 7, 9], "surjg": 2, "surjf": [2, 3], "contradict": [2, 3, 4], "speak": [2, 5, 7, 8], "irreflex": 2, "asymmetri": 2, "lt_asymm": 2, "eventu": [2, 3, 8], "fnuba": 2, "not_le_of_gt": 2, "not_lt_of_g": [2, 4, 5], "lt_of_not_g": 2, "le_of_not_gt": 2, "snippet": [2, 4, 5, 7], "counterexampl": [2, 9], "monof": 2, "four": [2, 5], "valid": 2, "far": [2, 3, 6, 8], "q": [2, 4, 5, 6, 7, 8], "straightforward": [2, 6], "difficult": [2, 6], "conclud": [2, 9], "nonexist": 2, "contradictori": 2, "classic": [2, 3, 4, 7], "by_contra": [2, 4], "not_not": 2, "front": 2, "push": [2, 4, 7, 8], "inward": 2, "facilit": [2, 8], "push_neg": [2, 3, 4], "restat": [2, 6, 7], "contrapos": [2, 3, 4], "similarli": [2, 3, 4, 5, 7], "yet": [2, 3, 4, 5, 6, 8], "semicolon": [2, 4], "falso": 2, "anyth": [2, 5, 8], "elim": 2, "strang": [2, 4, 7], "fairli": 2, "reach": [2, 6], "37": 2, "exfalso": 2, "absurd": [2, 4], "slick": 2, "drop": 2, "manner": [2, 5], "analogi": [2, 5, 8, 9], "techniqu": [2, 8], "variou": [2, 3, 5, 6, 10], "xltz": 2, "zlty": 2, "10": [2, 9], "7": [2, 4, 5, 7], "behav": [2, 3, 6, 8], "roughli": [2, 3, 4], "friend": [2, 5], "were": [2, 4, 5, 8], "inscrut": [2, 3], "gadget": [2, 8], "auxiliari": [2, 8], "pow_eq_zero": [2, 4], "doubl": [2, 3], "symmetr": [2, 3, 7], "abs_lt": 2, "dvd_gcd_iff": 2, "8": [2, 4, 7, 8], "15": 2, "not_monotone_iff": 2, "aris": 2, "preorder": [2, 6, 8], "pre": 2, "lt_iff_le_not_l": 2, "repeatedli": [2, 8], "instanti": [2, 5, 6, 8], "inl": [2, 3], "inr": [2, 3], "branch": [2, 3, 6], "le_or_gt": 2, "abs_of_nonneg": [2, 5], "abs_of_neg": 2, "against": 2, "immedi": [2, 3, 5, 6], "attract": 2, "closer": [2, 8], "advantag": [2, 3, 4, 5, 7, 9], "myab": 2, "le_abs_self": 2, "neg_le_abs_self": 2, "enjoi": [2, 3, 4, 8], "pun": 2, "lt_ab": 2, "genuin": 2, "vertic": [2, 5], "lt_trichotomi": 2, "xgt": 2, "dvd_mul_right": [2, 4], "eq_zero_or_eq_zero_of_mul_eq_zero": 2, "zero": [2, 3, 4, 5, 6, 7, 8, 9, 10], "nontrivi": [2, 3, 4, 5, 8, 9], "integr": [2, 9, 12], "isdomain": [2, 7], "whether": [2, 3, 4, 6, 8], "em": [2, 3], "exclud": [2, 4], "by_cas": [2, 3, 4], "dispos": 2, "s_0": [2, 3], "s_1": 2, "s_2": 2, "ldot": [2, 3, 4], "varepsilon": [2, 8], "s_n": [2, 3], "render": [2, 4], "convergesto": 2, "ext": [2, 3, 4, 5, 6, 7], "enabl": [2, 3, 4, 5], "actual": [2, 3, 4, 6, 7, 8], "congr": 2, "reconcil": 2, "peel": 2, "convert": [2, 4, 7], "quit": [2, 6, 8], "zero_lt_on": [2, 4], "fill": [2, 3, 4, 5], "convergesto_const": 2, "\u03b5po": [2, 8], "nge": 2, "abs_zero": 2, "save": 2, "troubl": [2, 3, 5], "pen": [2, 7], "paper": [2, 3, 5, 7, 8, 10], "nt": 2, "maximum": [2, 4, 8], "implement": [2, 5, 6, 7, 9], "convergesto_add": 2, "ct": 2, "clean": [2, 8], "\u03b52po": 2, "ht": 2, "le_of_max_le_left": 2, "le_of_max_le_right": 2, "tricki": [2, 3, 4, 6, 7], "convergesto_mul_const": 2, "acpo": 2, "abs_po": 2, "exists_abs_le_of_convergesto": 2, "strong": [2, 4], "n\u2080": 2, "bpo": [2, 8], "pos\u2080": 2, "div_po": 2, "n\u2081": 2, "convergesto_mul": 2, "sketch": [2, 3, 4, 8], "limit": [2, 6, 8], "bold": 2, "scratch": 2, "convergesto_uniqu": 2, "sa": 2, "sb": 2, "abn": 2, "na": 2, "hna": 2, "nb": 2, "hnb": 2, "absa": 2, "absb": 2, "observ": [2, 4, 8], "everywher": [2, 3, 6, 8, 10], "linearord": 2, "9": [2, 8], "vastli": 2, "awai": [2, 5], "vocabulari": 3, "uniform": [3, 8, 9], "conceptu": [3, 7], "overload": 3, "verbos": 3, "system": [3, 4, 5, 6], "wrong": 3, "ss": 3, "sub": [3, 8, 10, 12], "cap": 3, "un": 3, "cup": 3, "univ": [3, 8, 9, 10], "empti": [3, 4, 5, 7, 8, 10], "member": [3, 8], "membership": [3, 4, 6, 7], "mem": 3, "notin": 3, "ident": [3, 4, 5, 6, 7, 8, 12], "databas": [3, 4, 6, 8], "unlik": [3, 4], "existenti": [3, 7, 12], "subset_def": 3, "inter_def": 3, "mem_setof": 3, "xu": 3, "mem_inter_iff": 3, "xsu": 3, "phenomenon": 3, "union_def": 3, "mem_union": [3, 4], "xtu": 3, "xt": 3, "unnecessari": [3, 7], "correctli": 3, "special": [3, 4, 5, 6, 7, 8, 10], "rewritten": 3, "diff_eq": 3, "mem_diff": 3, "xstu": 3, "xnt": 3, "xnu": 3, "extension": [3, 5], "unsurprisingli": 3, "harm": 3, "and_comm": 3, "antisymm": 3, "hood": [3, 5], "builder": 3, "trivial": [3, 4, 7, 8], "eq_two_or_odd": 3, "even_iff": 3, "confus": [3, 4, 6, 7, 8], "fortun": 3, "agre": 3, "prime_iff": 3, "symm": [3, 4, 5, 6, 7, 8, 9], "rwa": [3, 4, 5], "restrict": [3, 4, 7, 8], "signific": 3, "ball": [3, 9], "bex": 3, "bex_def": 3, "prime_x": 3, "slight": 3, "ssubt": 3, "index": [3, 6, 7, 8], "model": [3, 8], "sequenc": [3, 6, 8, 9, 12], "a_0": 3, "a_1": 3, "a_2": 3, "mem_iunion": 3, "xai": 3, "mem_iint": 3, "mem_iunion\u2082": 3, "mem_iinter\u2082": 3, "exists_prime_and_dvd": 3, "eq_univ": 3, "eq_univ_of_foral": 3, "exists_infinite_prim": 3, "\u2080": 3, "sunion": 3, "sinter": 3, "relationship": [3, 4], "sunion_eq_biunion": 3, "sinter_eq_biint": 3, "preimag": [3, 7, 8], "imag": [3, 4, 6, 7, 8], "tripl": 3, "mem_image_of_mem": 3, "galoi": [3, 5, 8], "image_subset_iff": 3, "represent": [3, 4, 5], "asid": 3, "raini": 3, "dai": 3, "behavior": [3, 6, 8], "nonempti": [3, 7, 8], "condit": [3, 4, 6, 7, 8, 9], "injon": [3, 10], "theme": 3, "rel": [3, 5], "relativ": 3, "xpo": 3, "ypo": 3, "exp_log": 3, "ingredi": [3, 5, 8, 9], "inhabit": [3, 5, 8], "appeal": [3, 6], "choose_spec": 3, "noncomput": [3, 5, 7], "inverse_spec": 3, "dif_po": 3, "dif_neg": 3, "fulli": [3, 7, 8], "alon": 3, "leftinvers": 3, "rightinvers": 3, "hack": 3, "half": [3, 7], "dozen": 3, "condens": 3, "cantor": 3, "famou": [3, 7], "j": [3, 5, 7], "intuit": [3, 8], "cardin": [3, 7], "biject": [3, 5, 7], "nineteenth": 3, "centuri": 3, "infinit": [3, 8, 12], "dedekind": 3, "quickli": [3, 7, 10], "behind": [3, 7], "problem": [3, 4, 5, 6, 8], "shade": 3, "region": 3, "diagram": 3, "circ": [3, 5], "scale": 3, "inner": 3, "smaller": [3, 4, 8], "concentr": 3, "unshad": 3, "compos": [3, 5, 7, 8], "disjoint": [3, 7, 10], "sound": [3, 5, 6], "plausibl": 3, "delic": 3, "improv": [3, 4], "confid": 3, "better": [3, 4, 5, 6, 8], "invfun": [3, 5], "leftinverse_invfun": 3, "invfun_eq": 3, "sbaux": 3, "sbset": 3, "s_": 3, "bigcup_": 3, "mathbb": [3, 4, 5, 7], "sbfun": 3, "complement": [3, 8, 10], "outermost": 3, "setminu": 3, "sb_right_inv": 3, "goe": [3, 4, 5, 6, 8], "neither": [3, 5, 6], "nor": [3, 5], "sb_inject": 3, "hf": [3, 7, 8, 9, 10], "a_def": 3, "h_def": 3, "hxeq": 3, "xa": 3, "wlog": 3, "x\u2081a": 3, "resolve_left": 3, "x\u2082a": 3, "not_imp_self": 3, "x\u2082na": 3, "if_po": 3, "if_neg": 3, "x\u2082eq": 3, "hn": [3, 4, 8, 9], "sb_fun": 3, "bring": [3, 4, 8], "tradeoff": 3, "encapsul": [3, 5, 9], "symmetri": [3, 6], "dwell": 3, "succ": [3, 4, 6], "sb_surject": 3, "hg": [3, 8, 9, 10], "gya": 3, "xmem": 3, "sweet": 3, "schroeder_bernstein": 3, "substant": 4, "ancient": 4, "fraction": 4, "lowest": 4, "2c": 4, "4c": 4, "factor": [4, 5, 7], "coprim": [4, 7], "smart": 4, "12": 4, "encount": [4, 6], "algebra": [4, 6, 8, 9, 10, 12], "prime_def_lt": 4, "eq_one_or_self_of_dvd": 4, "prime_p": 4, "17": 4, "commonli": [4, 5], "prime_two": 4, "prime_thre": 4, "broader": [4, 9], "irreduc": [4, 5], "coincid": [4, 5, 8], "rise": [4, 6, 7], "dvd_mul": 4, "even_of_even_sqr": 4, "dvd_of_dvd_pow": 4, "proce": [4, 6], "profici": 4, "prefix": [4, 6, 7], "search": [4, 5, 6], "engin": 4, "hesit": 4, "mul_right_inj": 4, "heart": [4, 7], "irration": 4, "dvd_gcd": 4, "coprime_mn": 4, "sqr_eq": 4, "meq": 4, "dvd_iff_exists_eq_mul_left": 4, "two_l": 4, "le_of_dvd": 4, "approach": [4, 5, 6, 8], "quick": [4, 7, 9], "ne": [4, 5], "occur": 4, "suffici": [4, 8], "permut": [4, 7], "prime_of_mem_factor": 4, "prod_factor": 4, "factors_uniqu": 4, "talk": [4, 7, 8, 9], "factorization_mul": 4, "mnez": 4, "nnez": 4, "factorization_pow": 4, "black": [4, 6], "box": 4, "simpa": [4, 7, 9], "nnz": 4, "nsqr_nez": 4, "eq1": 4, "eq2": 4, "add_mul_mod_self_left": 4, "mul_mod_right": 4, "count_factors_mul_of_po": 4, "successor": 4, "succ_ne_zero": 4, "npow_nz": 4, "dvd_sub": 4, "pow_eq": 4, "npowz": 4, "add_sub_cancel": 4, "understood": [4, 8], "quotient": [4, 5, 6, 8], "pictur": [4, 5, 7], "mediat": 4, "headach": 4, "contend": 4, "issu": [4, 5, 6, 8], "th": 4, "topic": [4, 6, 7], "enat": 4, "infin": [4, 8, 10], "appreci": 4, "role": [4, 5, 8], "datatyp": 4, "freeli": 4, "translat": [4, 6, 7, 8], "mathematician": [4, 8], "inj": 4, "factori": 4, "fac": 4, "ih": 4, "fac_po": 4, "succ_po": 4, "dvd_fac": 4, "ipo": 4, "il": 4, "of_le_succ": 4, "dvd_mul_of_dvd_right": 4, "crude": 4, "remaind": [4, 5, 7], "pow_two_le_fac": 4, "finset": [4, 5, 7, 8], "bigoper": [4, 5, 7], "prod": [4, 7, 8, 10], "sum_range_zero": 4, "sum_range_succ": 4, "summat": 4, "prod_range_zero": 4, "prod_range_succ": 4, "deserv": 4, "danger": [4, 5], "ordinarili": [4, 5], "loop": 4, "indefinit": 4, "fix": [4, 6, 7, 8], "placement": 4, "re": [4, 5], "handi": 4, "sum_id": 4, "div_eq_of_eq_mul_right": 4, "succ_eq_add_on": 4, "sum_sqr": 4, "mynat": 4, "thumb": 4, "decid": [4, 7, 8], "preced": [4, 7], "truncat": 4, "exponenti": 4, "cut": 4, "predecessor": 4, "pred": 4, "mul": [4, 5, 6, 8], "succ_add": 4, "succ_mul": 4, "explor": [4, 8], "standard": [4, 5, 6, 8], "formul": [4, 7, 8], "quirki": 4, "among": 4, "annoi": [4, 6], "h0": 4, "succ_le_succ": 4, "zero_l": [4, 5], "interval_cas": 4, "interv": [4, 8, 10], "decis": [4, 7], "procedur": [4, 6], "revert": [4, 5], "minfac": 4, "smallest": [4, 6, 8], "strong_induction_on": 4, "subsum": 4, "exists_prime_factor": 4, "np": 4, "mltn": 4, "mdvdn": 4, "mne1": 4, "mz": 4, "zero_dvd_iff": 4, "mgt2": 4, "pp": 4, "pdvd": 4, "factorial_po": 4, "dvd_factori": 4, "primes_infinit": 4, "refin": [4, 9], "ple": 4, "p_1": 4, "p_n": 4, "prod_": 4, "p_i": [4, 8], "computation": 4, "test": 4, "decidableeq": 4, "abandon": 4, "ourselv": [4, 6], "subset_iff": 4, "mem_int": 4, "mem_sdiff": 4, "tauto": 4, "dispens": 4, "tautologi": 4, "dvd_prod_of_mem": 4, "eq_of_dvd_of_prim": 4, "prime_q": 4, "preserv": [4, 6, 8], "induction_on": 4, "singleton": 4, "prod_empti": 4, "prod_insert": 4, "mem_of_dvd_prod_prim": 4, "mem_insert": 4, "wrote": 4, "filter": [4, 9, 10, 12], "mem_filt": 4, "aim": [4, 7], "prod_po": 4, "_def": 4, "mem_": 4, "id": [4, 6, 8, 9], "bounded_of_ex_finset": 4, "qk": 4, "lt_succ_of_l": 4, "le_sup": 4, "ex_finset_of_bound": 4, "decidablepr": 4, "lt_succ_iff": 4, "congruent": 4, "p_k": 4, "loss": 4, "27": 4, "mod_4_eq_3_or_mod_4_eq_3": 4, "mul_mod": 4, "mod_lt": 4, "hm": [4, 9], "two_le_of_mod_4_eq_3": 4, "neq": 4, "div_dvd_of_dvd": 4, "div_lt_self": 4, "exists_prime_factor_mod_4_eq_3": 4, "mge2": 4, "home": [4, 5], "stretch": [4, 5], "remov": [4, 8], "eras": 4, "mem_eras": 4, "readi": [4, 6, 7, 8, 9], "dvd_add_iff_left": 4, "primes_mod_4_eq_3_infinit": 4, "p4": 4, "pltn": 4, "p4eq": 4, "pne3": 4, "seriou": [4, 6, 8], "feat": 4, "modern": [5, 7], "subject": 5, "mysteri": [5, 6], "consult": 5, "ann": 5, "baanen": 5, "abus": 5, "paramet": [5, 6], "broadest": 5, "possibli": 5, "constraint": [5, 8], "bundl": [5, 6, 7, 8, 9], "tupl": 5, "hy": [5, 6, 7], "hz": [5, 6], "mypoint1": 5, "mypoint2": 5, "mypoint3": 5, "mk": [5, 6, 7, 8], "former": 5, "latter": [5, 7, 8], "quot": [5, 8], "protect": 5, "add_x": 5, "addalt": 5, "eta": 5, "messier": 5, "y\u2081": 5, "z\u2081": 5, "y\u2082": 5, "z\u2082": 5, "addalt_x": 5, "addalt_comm": 5, "apart": [5, 6], "effici": [5, 7, 8], "scalar": [5, 6, 7, 9], "smul": [5, 6, 7], "smul_distrib": 5, "road": 5, "link": [5, 6], "belong": [5, 6, 8], "simplex": 5, "convinc": 5, "equilater": 5, "interior": [5, 9], "standardtwosimplex": 5, "x_nonneg": 5, "y_nonneg": 5, "z_nonneg": 5, "sum_eq": 5, "swap": 5, "swapxi": 5, "interestingli": [5, 7, 9], "midpoint": 5, "div_nonneg": 5, "weight": 5, "averag": 5, "weightedaverag": 5, "lambda_nonneg": 5, "lambda_l": 5, "fin": [5, 7, 10], "standardsimplex": 5, "sum_eq_on": 5, "div_eq_mul_inv": 5, "sum_mul": 5, "sum_add_distrib": 5, "mul_sum": 5, "islinear": 5, "is_addit": 5, "preserves_mul": 5, "linf": 5, "subtyp": [5, 6, 7, 8], "preal": 5, "val": 5, "sigma": [5, 10], "wherebi": [5, 8], "stdsimplex": 5, "\u03c3": [5, 7], "fst": [5, 8], "snd": [5, 8], "custom": 5, "robust": [5, 6], "interfac": 5, "redefin": [5, 6], "accessor": 5, "weav": 5, "rich": [5, 6], "interconnect": 5, "hierarchi": [5, 7, 12], "clarifi": 5, "antireflex": 5, "cdot": 5, "topolog": [5, 6, 9, 12], "mathcal": [5, 9], "proxi": 5, "bipartit": 5, "graph": 5, "categori": [5, 8, 9], "morphism": [5, 9, 12], "basi": [5, 8], "discret": 5, "inherit": [5, 6, 7], "polynomi": 5, "coeffici": [5, 7], "dual": [5, 8], "accommod": [5, 7], "almost": [5, 6, 7, 8, 10], "marriag": 5, "heaven": 5, "group\u2081": [5, 6], "inv": [5, 6], "struc": 5, "counterpart": 5, "assur": 5, "groupcat": 5, "group\u2081cat": 5, "str": 5, "capit": 5, "roman": 5, "equiv": [5, 7], "tofun": [5, 6], "right_inv": 5, "left_inv": 5, "creativ": 5, "evid": 5, "coercion": [5, 6, 7, 8, 9], "omit": 5, "perm": [5, 7], "under": [5, 6, 7, 8], "orient": 5, "permgroup": 5, "trans_assoc": 5, "trans_refl": 5, "refl_tran": 5, "self_trans_symm": [5, 7], "grouptheori": 5, "g_1": 5, "g_2": 5, "g_3": 5, "tightli": 5, "isomorph": [5, 7, 9], "Its": [5, 6], "neg": [5, 6, 8, 10], "reproduc": 5, "accompani": 5, "addgroup\u2081": 5, "scheme": 5, "addgrouppoint": 5, "arrang": 5, "mul_inv_cancel_right": 5, "achiev": [5, 6, 8], "silent": [5, 6], "regist": [5, 6, 7], "grp": 5, "contextu": 5, "cue": 5, "synthes": [5, 6], "whole": 5, "_inst_1": 5, "candid": 5, "group\u2082": 5, "mysquar": 5, "my_squar": 5, "remark": [5, 6], "headi": 5, "store": 5, "hasmulgroup\u2082": 5, "hasonegroup\u2082": 5, "hasinvgroup\u2082": 5, "suppli": 5, "accord": 5, "capabl": 5, "chain": 5, "recent": 5, "prioriti": 5, "bad": [5, 6, 8], "artifici": 5, "addgroup\u2082": 5, "subtl": [5, 7, 8], "configur": 5, "invisibli": [5, 6], "wise": 5, "euclidean": 5, "terminologi": 5, "mid": 5, "imaginari": 5, "gaussint": 5, "im": 5, "pointwis": [5, 8, 9], "root": [5, 6, 7, 12], "ac": 5, "bci": 5, "adi": 5, "bd": 5, "bc": 5, "zero_def": 5, "one_def": 5, "add_def": 5, "neg_def": 5, "mul_def": 5, "zero_r": 5, "zero_im": 5, "one_r": 5, "one_im": 5, "add_r": 5, "add_im": 5, "neg_r": 5, "neg_im": 5, "mul_r": 5, "mul_im": 5, "surprisingli": [5, 6], "concept": [5, 7, 8, 9], "light": 5, "bulb": 5, "skeleton": [5, 8], "scari": 5, "instcommr": 5, "left_distrib": [5, 6], "right_distrib": [5, 6], "ext_iff": 5, "bq": 5, "archetyp": 5, "eq": 5, "int": [5, 6, 7], "ediv_add_emod": 5, "emod_nonneg": 5, "emod_lt": 5, "unit": [5, 6, 8], "algorithm": 5, "conjug": [5, 7], "frac": 5, "nearest": 5, "size": 5, "vi": 5, "multipli": 5, "emb": 5, "forth": 5, "quadrat": 5, "gaussianint": 5, "stai": 5, "face": [5, 6, 8], "machineri": [5, 6, 8], "adapt": 5, "invest": 5, "pragmat": 5, "seek": 5, "heather": 5, "macbeth": 5, "eleg": 5, "div": 5, "mod": 5, "_add_mod": 5, "abs_mod": 5, "_le": 5, "emod_lt_of_po": 5, "zero_lt_two": 5, "fixm": 5, "_eq": 5, "sq_add_sq_eq_zero": 5, "linearorderedr": 5, "norm_nonneg": [5, 9], "norm_eq_zero": [5, 9], "norm_po": 5, "norm_mul": [5, 9], "conj": 5, "conj_r": 5, "conj_im": 5, "norm_conj": 5, "bespok": 5, "quad": 5, "record": [5, 6], "div_def": 5, "mod_def": 5, "messi": 5, "nicer": [5, 7, 8], "norm_mod_lt": 5, "norm_y_po": 5, "sq_ab": 5, "gcongr": 5, "ediv_mul_l": 5, "le_of_mul_le_mul_right": 5, "ediv_lt_of_lt_mul": 5, "natab": 5, "coe_natabs_norm": 5, "natabs_of_nonneg": 5, "natabs_norm_mod_lt": 5, "ofnat_lt": 5, "coe_natab": 5, "not_norm_mul_left_lt_norm": 5, "natabs_mul": 5, "le_mul_of_one_le_right": 5, "ofnat_l": 5, "add_one_le_of_lt": 5, "euclideandomain": 5, "quotient_mul_add_remainder_eq": 5, "quotient_zero": 5, "r_wellfound": 5, "remainder_lt": 5, "mul_left_not_lt": 5, "payoff": 5, "principalidealr": 5, "irreducible_iff_prim": 5, "studi": [6, 8], "prematur": 6, "technologi": 6, "simpler": 6, "ring\u2081": 6, "gradual": [6, 8], "bottom": [6, 7, 8], "endow": [6, 7], "one\u2081": 6, "heavier": 6, "inferr": 6, "resolut": 6, "ie": [6, 8], "attribut": 6, "ensur": [6, 7, 8], "self": 6, "one\u2082": 6, "usabl": 6, "silli": 6, "affect": 6, "importantli": [6, 7], "habit": 6, "ascript": [6, 7], "messag": 6, "typeclass": 6, "stuck": 6, "metavari": 6, "263": 6, "auto": 6, "sever": [6, 8, 10], "unknown": 6, "collis": 6, "builtin": 6, "\ud835\udfd9": 6, "inherit_doc": 6, "diamond": 6, "dia\u2081": 6, "dia": 6, "infixl": 6, "70": 6, "semigroup": 6, "dia_assoc": 6, "semigroup\u2081": 6, "todia\u2081": 6, "previous": 6, "semigroup\u2082": 6, "hurdl": 6, "neutral": [6, 7], "diaoneclass\u2081": 6, "one_dia": 6, "dia_on": 6, "trace": 6, "ters": 6, "attempt": 6, "succe": 6, "success": 6, "set_opt": 6, "synthinst": 6, "monoid\u2081": 6, "hide": [6, 7, 8], "subtleti": [6, 7], "fear": 6, "unrel": 6, "tosemigroup\u2081": 6, "todiaoneclass\u2081": 6, "monoid\u2082": 6, "toone\u2081": 6, "overlap": [6, 7], "tear": 6, "signatur": 6, "restor": 6, "optim": [6, 10], "reusabl": 6, "inv\u2081": 6, "postfix": 6, "inv_dia": 6, "weak": 6, "preliminari": 6, "left_inv_eq_right_inv\u2081": 6, "hba": 6, "hac": 6, "export": 6, "inv_eq_of_dia": 6, "dia_inv": 6, "naiv": [6, 8], "duplic": 6, "to_addit": 6, "semi": [6, 7], "left_inv_eq_right_inv": 6, "left_neg_eq_right_neg": 6, "whatsnew": 6, "addsemigroup\u2083": 6, "add_assoc\u2083": 6, "semigroup\u2083": 6, "mul_assoc\u2083": 6, "addmonoid\u2083": 6, "addzeroclass": 6, "monoid\u2083": 6, "muloneclass": 6, "tomuloneclass": 6, "addcommsemigroup\u2083": 6, "commsemigroup\u2083": 6, "addcommmonoid\u2083": 6, "commmonoid\u2083": 6, "addgroup\u2083": 6, "neg_add": 6, "group\u2083": 6, "inv_mul": 6, "inv_eq_of_mul": 6, "propag": 6, "attr": 6, "mul_inv": [6, 7], "mul_left_cancel\u2083": 6, "mul_right_cancel\u2083": 6, "addcommgroup\u2083": 6, "commgroup\u2083": 6, "demonstr": [6, 8], "semir": [6, 7], "opposit": [6, 8], "gain": 6, "besid": 6, "parent": 6, "ring\u2083": 6, "mulzeroclass": 6, "toaddgroup\u2083": 6, "mayb": 6, "claus": 6, "le\u2081": 6, "50": 6, "\u2081": 6, "preorder\u2081": 6, "partialorder\u2081": 6, "orderedcommmonoid\u2081": 6, "modul": [6, 7], "pretend": 6, "smul\u2083": 6, "infixr": 6, "73": 6, "module\u2081": 6, "zero_smul": 6, "one_smul": [6, 7], "mul_smul": [6, 7], "add_smul": [6, 7], "smul_add": 6, "surpris": 6, "toaddcommgroup\u2083": 6, "inst": 6, "module\u2083": 6, "hunt": 6, "unspecifi": 6, "embark": 6, "quest": 6, "huge": 6, "trap": 6, "refus": [6, 8], "tosmul\u2083": 6, "inst_1": 6, "safe": [6, 7], "selfmodul": 6, "invert": [6, 7], "nsmul\u2081": 6, "zsmul\u2081": 6, "ofnat": 6, "negsucc": 6, "intermedi": [6, 8], "abgrpmodul": 6, "failur": 6, "synth": 6, "indirect": 6, "path": 6, "thank": 6, "offend": 6, "poor": 6, "forget": 6, "http": 6, "inria": 6, "hal": 6, "scienc": 6, "02463336": 6, "modifi": 6, "nsmul": 6, "addmonoid\u2084": 6, "nsmul_zero": 6, "nsmul_succ": 6, "mysmul": 6, "stori": 6, "incorpor": 6, "zsmul": 6, "lt\u2081": 6, "comparison": 6, "ismonoidhom\u2081": 6, "unpleas": [6, 8], "chose": 6, "ismonoidhom\u2082": 6, "map_on": [6, 7], "map_mul": [6, 7], "tempt": 6, "higher": 6, "unif": 6, "psycholog": 6, "rare": 6, "adject": 6, "bare": 6, "noun": 6, "argu": 6, "continuous_id": [6, 8], "primari": 6, "monoidhom\u2081": 6, "coefun": 6, "coerc": [6, 7], "coe": 6, "addmonoidhom\u2081": 6, "addmonoid": [6, 7], "map_zero": [6, 7], "map_add": [6, 7, 9], "ringhom\u2081": 6, "minor": [6, 9], "tomonoidhom\u2081": 6, "juggl": 6, "monoidhomclass\u2081": 6, "badinst": 6, "wouldn": 6, "priori": 6, "boil": 6, "hopelessli": 6, "checksynthord": 6, "random": 6, "deduc": [6, 7, 8], "outparam": 6, "trigger": 6, "retri": 6, "monoidhomclass\u2082": 6, "promis": [6, 8], "map_inv_of_inv": 6, "got": 6, "presenc": 6, "layer": [6, 8], "dfunlik": 6, "dfun": 6, "monoidhomclass": 6, "monoidhomclass\u2083": 6, "coe_inject": 6, "stop": 6, "ringhomclass\u2083": 6, "ringhom": [6, 7], "algebrahom": 6, "ve": [6, 8], "primarili": [6, 7, 8], "unbundl": 6, "orderpreshom": 6, "le_of_l": 6, "orderpresmonoidhom": 6, "orderpreshomclass": 6, "subgroup": 6, "subr": 6, "reus": 6, "led": 6, "descend": [6, 7], "break": 6, "barrier": 6, "setlik": 6, "wrap": [6, 8], "submonoid\u2081": 6, "submonoid": [6, 7], "mul_mem": [6, 7], "one_mem": [6, 7], "tackl": 6, "setco": 6, "submonoid\u2081monoid": 6, "destructur": 6, "binder": 6, "submonoidclass\u2081": 6, "subgroup\u2081": 6, "subgroupclass\u2081": 6, "subobject": 6, "s\u2081": 6, "s\u2082": 6, "shame": 6, "across": 6, "weird": [6, 8], "distract": 6, "emphas": [6, 7], "anecdot": 6, "devic": 6, "hasquoti": 6, "bewar": 6, "regular": [6, 8], "ascii": 6, "setoid": [6, 7], "commmonoid": 6, "iseqv": 6, "hw": 6, "quotientmonoid": 6, "map\u2082": 6, "treatment": 7, "constantli": 7, "review": [7, 8], "contort": 7, "verbatim": 7, "safer": 7, "friendli": 7, "proceed": 7, "mostli": 7, "comm": 7, "addcommmonoid": 7, "monoidhom": 7, "addmonoidhom": 7, "packag": 7, "unfortun": 7, "consequ": 7, "comp": [7, 8], "mul_inv_self": 7, "map_inv": 7, "enforc": 7, "sent": [7, 8], "mulequiv": 7, "addequiv": 7, "ulequiv": 7, "projector": 7, "ofbiject": 7, "closur": [7, 8], "inv_mem": 7, "issubgroup": 7, "addsubgroup": 7, "add_mem": 7, "zero_mem": 7, "neg_mem": 7, "inferinst": 7, "benefit": 7, "amount": 7, "sup_eq_closur": 7, "mem_bot": 7, "ambient": 7, "ty": 7, "comap": [7, 8], "pushforward": [7, 8], "mem_map": 7, "mem_comap": 7, "kernel": 7, "ker": 7, "mem_ker": 7, "mem_rang": 7, "\u03c6": [7, 8], "hst": 7, "\u03c8": 7, "homomorph": 7, "lagrang": 7, "sylow": 7, "corner": 7, "nonconstruct": 7, "anywai": 7, "fintyp": [7, 8], "card": 7, "index_mul_card": 7, "hdvd": 7, "exists_subgroup_card_pow_prim": 7, "corollari": 7, "eq_bot_iff_card": 7, "eq_bot_iff_foral": 7, "card_eq_one_iff": 7, "card_dvd_of_l": 7, "inf_bot_of_coprim": 7, "mathfrak": 7, "_n": 7, "cycl": 7, "iscycl": 7, "closure_iscycl": 7, "cyclic": 7, "freegroup": 7, "induct": [7, 8, 12], "myelement": 7, "gave": [7, 8], "embodi": 7, "lift": 7, "send": [7, 10], "mymorph": 7, "cube": 7, "presentedgroup": 7, "normal": 7, "somehow": 7, "creation": 7, "mygroup": 7, "feed": 7, "togroup": 7, "mymap": 7, "compat_mymap": 7, "mynewmorph": 7, "mulact": 7, "downsid": 7, "setup": 7, "synonym": 7, "groupact": 7, "addact": 7, "\u1d65": 7, "affin": 7, "add_vadd": 7, "topermhom": 7, "caylei": 7, "embed": 7, "cayleyisomorph": 7, "subgroupofmulact": 7, "partit": 7, "orbit": 7, "orbitrel": 7, "global": [7, 8], "\u03c9": 7, "selfequivsigmaorbit": 7, "card_congr": 7, "card_sigma": 7, "furthermor": 7, "stabil": 7, "orbitequivquotientstabil": 7, "groupequivquotientprodsubgroup": 7, "conjugate_on": 7, "quotientgroup": 7, "clue": 7, "onto": 7, "quotientkerequivrang": 7, "pullback": [7, 8], "quotientmulequivofeq": 7, "seri": 7, "card_po": 7, "index_eq_card": 7, "eq_of_mul_eq_mul_right": 7, "aux_card_eq": 7, "bijective_iff_injective_and_card": 7, "ker_eq_bot_iff": 7, "ker_restrict": 7, "iso\u2081": 7, "g\u2080": 7, "g\u2081": 7, "g\u2082": 7, "iso\u2082": 7, "prodcongr": 7, "finaliso": 7, "exot": [7, 8], "commsemir": 7, "doubli": 7, "mislead": 7, "tradition": 7, "taught": 7, "promin": 7, "isunit": 7, "m\u02e3": 7, "mainli": 7, "mkofmuleqon": 7, "\u2124\u02e3": 7, "units_eq_one_or": 7, "r\u02e3": 7, "s\u02e3": 7, "ringequiv": 7, "toward": 7, "geometri": 7, "submodul": 7, "eq_zero_iff_mem": 7, "mem_sup": 7, "mul_le_left": 7, "mul_le_right": 7, "mul_le_inf": 7, "quotientmap": 7, "quotequivofeq": 7, "chines": 7, "\u03c0": [7, 8, 9], "font": 7, "\u03b9": [7, 8, 9, 10], "iscoprim": 7, "quotientinfringequivpiquoti": 7, "zmod": 7, "pinot": 7, "prodequivpi": 7, "pi": [7, 8], "ker_pi_quotient_mk": 7, "chinesemap": 7, "proven": 7, "chinesemap_mk": 7, "famili": [7, 8, 9], "injective_lift_iff": 7, "chinesemap_inj": 7, "maxim": 7, "iscoprime_iff_add": 7, "iscoprime_iff_exist": 7, "iscoprime_iff_sup_eq": 7, "iscoprime_iff_codisjoint": 7, "opportun": [7, 8], "mem_insert_of_mem": 7, "mem_insert_self": 7, "iscoprime_inf": 7, "simp_rw": 7, "iinf_insert": 7, "one_eq_top": 7, "eq_top_iff": 7, "chinesemap_surj": 7, "hi": 7, "mk_surject": 7, "\u1d9c": 7, "he": 7, "chineseiso": 7, "encod": [7, 10], "algebramap": 7, "alghom": 7, "\u2090": 7, "endomorph": 7, "univari": 7, "indetermin": 7, "crucial": [7, 8], "bodi": 7, "map_pow": 7, "coeff": 7, "degre": 7, "natdegre": 7, "withbot": 7, "absorb": 7, "formula": [7, 10], "nozerodivisor": 7, "degree_mul": 7, "hp": [7, 8], "hq": [7, 8], "natdegree_mul": 7, "natdegree_comp": 7, "evalu": 7, "isroot": 7, "vanish": 7, "count": 7, "pain": 7, "multiset": 7, "roots_x_sub_c": 7, "aeval": 7, "aroot": 7, "caveat": 7, "aroots_def": 7, "c_neg": 7, "linear_combin": 7, "c_mul": 7, "p_ne_zero": 7, "apply_fun": 7, "roots_mul": 7, "alembert": 7, "gauss": 7, "isalgclos": 7, "eval\u2082": 7, "ofreal": 7, "multivari": 7, "briefli": 7, "mvpolynomi": 7, "circl": 7, "circleequ": 7, "coordin": 7, "calculu": [8, 10, 12], "quantiti": 8, "begun": 8, "paradox": 8, "x\u2080": [8, 9], "convention": 8, "eight": 8, "varieti": 8, "wish": 8, "64": 8, "y\u2080": 8, "z\u2080": 8, "paragraph": 8, "512": 8, "bourbaki": 8, "spell": 8, "dualli": 8, "neighborhood": 8, "etc": 8, "attop": [8, 10], "\ud835\udcdd": [8, 9, 10], "\ud835\udce4": 8, "entourag": 8, "\u03bc": [8, 10], "ae": [8, 10], "univ_set": 8, "sets_of_superset": 8, "inter_set": 8, "blur": 8, "princip": 8, "\ud835\udcdf": 8, "x_0": 8, "ioo": [8, 9], "tendsto\u2081": 8, "tendsto": [8, 10], "lim_": 8, "abstractli": 8, "salient": 8, "f_": 8, "tendsto\u2082": 8, "via": 8, "leverag": 8, "map_mono": 8, "map_map": 8, "shot": 8, "256": 8, "map_le_iff_le_comap": 8, "contravari": 8, "comap_comap": 8, "plane": 8, "\u02e2": 8, "nhds_prod_eq": 8, "aforement": 8, "le_inf_iff": 8, "shouldn": 8, "prohibit": 8, "precondit": 8, "nebot": 8, "tour": [8, 9], "claim": 8, "recaptur": 8, "superfici": 8, "stronger": 8, "flexibl": 8, "hasbasi": 8, "nhds_basis_ioo_po": 8, "tendsto_iff": 8, "reformul": 8, "ici": 8, "attop_basi": 8, "knew": 8, "n_p": 8, "n_q": 8, "tiresom": 8, "\u1da0": [8, 9, 10], "superscript": 8, "eventuallyeq": 8, "tendsto_congr": 8, "eventually_of_foral": 8, "mono": 8, "item": 8, "filter_upward": 8, "hr": 8, "aka": 8, "occasion": 8, "frequent": 8, "sophist": 8, "mem_closure_of_tendsto": 8, "clusterpt": 8, "mem_closure_iff_clusterpt": 8, "le_principal_iff": 8, "nebot_of_l": 8, "hux": 8, "hum": 8, "dist_eq_zero": 8, "emetricspac": 8, "pseudometricspac": 8, "pseudoemetricspac": 8, "journei": 8, "recast": 8, "tendsto_attop": 8, "continuous_iff": 8, "devot": 8, "uncurri": 8, "slow": 8, "continuous_fst": 8, "assembl": 8, "prod_mk": 8, "continuous_snd": 8, "continuous_dist": 8, "clunki": 8, "heavili": 8, "elabor": 8, "prod_map": 8, "sad": 8, "border": 8, "obfusc": 8, "continuous_pow": 8, "continuousat": [8, 10], "continuousat_iff": 8, "geometr": 8, "closedbal": 8, "sign": 8, "radiu": 8, "mem_ball_self": 8, "mem_closedball_self": 8, "isopen": 8, "isopen_iff": 8, "Their": [8, 9], "isclos": [8, 9], "s\u1d9c": [8, 10], "isopen_compl_iff": 8, "hu": [8, 9], "mem_of_tendsto": 8, "mem_closure_iff": 8, "mem_closure_iff_seq_limit": 8, "nhds_basis_bal": 8, "nhds_basis_closedbal": 8, "mem_iff": 8, "segment": [8, 10], "somewher": 8, "continuouson": [8, 9], "minimum": 8, "iscompact": 8, "icc": [8, 9], "iscompact_icc": 8, "strictmono": 8, "tendsto_subseq": 8, "exists_forall_l": 8, "exists_forall_g": 8, "compactspac": 8, "iscompact_univ": 8, "cauchi": 8, "uniformcontinu": 8, "uniformcontinuous_iff": 8, "clearli": 8, "isclosed_l": 8, "eq_empty_or_nonempti": 8, "attain": 8, "cauchyseq": 8, "cauchyseq_iff": 8, "completespac": [8, 9, 10], "cauchyseq_tendsto_of_complet": 8, "criterion": 8, "tendsto_pow_attop_nhds_0_of_lt_1": 8, "dist_le_range_sum_dist": 8, "cauchyseq_of_le_geometric_two": 8, "\u03b5_po": [8, 9], "le_iff_exists_add": 8, "boss": 8, "bair": [8, 9], "exclam": 8, "rec_on": 8, "ho": 8, "hd": 8, "dens": 8, "densiti": 8, "\u03b4po": 8, "hpo": 8, "hball": 8, "mem_closure_iff_nhds_basi": 8, "recon": 8, "rpo": 8, "rb": 8, "incl": 8, "cdist": 8, "ylim": 8, "yball": 8, "categor": 8, "topologicalspac": [8, 9], "isopen_univ": 8, "isopen_empti": 8, "isopen_iunion": 8, "isopen_iinter_of_finit": 8, "continuous_def": 8, "attach": 8, "filteri": 8, "mem_nhds_iff": 8, "digress": 8, "pure_le_nhd": 8, "self_of_nhd": 8, "eventually_eventually_nhd": 8, "mkofnhd": 8, "nhds_mkofnhd": 8, "functori": 8, "induc": 8, "sensibl": 8, "uncount": 8, "relatedli": 8, "coinduc": 8, "t_x": 8, "t_y": 8, "coinduced_le_iff_le_induc": 8, "covari": 8, "coinduced_compos": 8, "induced_compos": 8, "focus": 8, "nhd": 8, "recov": 8, "continuous_iff_coinduced_l": 8, "g_": 8, "t_z": 8, "wasn": 8, "t_": 8, "x_i": 8, "price": 8, "patholog": 8, "t2space": 8, "hausdorff": 8, "t3space": 8, "regularspac": 8, "tendsto_nhds_uniqu": 8, "closed_nhds_basi": 8, "nhds_basis_open": 8, "t_3": 8, "denseinduc": 8, "continuousat_extend": 8, "funni": 8, "_in": 8, "nhds_induc": 8, "fortiori": 8, "f_cont": 8, "tendsto_right_iff": 8, "firstcountabletopologi": 8, "cluster": 8, "hfx": 8, "push_pul": 8, "of_map": 8, "f_ne": 8, "f_le": 8, "map_eq": 8, "hne": 8, "hle": 8, "huo": 8, "hsu": 8, "elim_finite_subcov": 8, "introductori": 9, "hasderivat": [9, 10], "hasderivat_sin": 9, "differentiableat": 9, "inconveni": 9, "deriv_zero_of_not_differentiableat": 9, "deriv_add": 9, "islocalmin": 9, "deriv_eq_zero": 9, "roll": 9, "weirder": 9, "hab": 9, "hfc": 9, "hfi": 9, "exists_deriv_eq_zero": 9, "differentiableon": 9, "exists_deriv_eq_slop": 9, "normedaddcommgroup": [9, 10], "norm_add_l": 9, "infer_inst": [9, 10], "normedspac": [9, 10], "normedaddgroup": 9, "stipul": 9, "norm_smul": 9, "banach": [9, 10], "dimension": [9, 10], "finitedimension": [9, 10], "\ud835\udd5c": [9, 10], "nontriviallynormedfield": [9, 10], "normedfield": 9, "exists_one_lt_norm": 9, "continuouslinearmap": 9, "cont": 9, "map_smul": 9, "le_op_norm": 9, "hmp": 9, "op_norm_le_bound": 9, "steinhau": 9, "bounded": 9, "uniformli": 9, "nonempty_interior_of_iunion_of_clos": 9, "continuous_linear_map": 9, "op_norm_le_of_shel": 9, "interior_subset": 9, "interior_iinter_subset": 9, "is_closed_l": 9, "hc": 9, "h\u03b5": 9, "real_norm_l": 9, "\u03b5k_po": 9, "o": 9, "normedgroup": 9, "isbigowith": 9, "isbigowith_iff": 9, "isbigo_iff_isbigowith": 9, "islittleo_iff_forall_isbigowith": 9, "hasfderivat": 9, "fderiv": 9, "fr\u00e9chet": 9, "hasfderivatfilter_iff_islittleo": 9, "hff": 9, "iter": 9, "multilinear": 9, "withtop": 9, "infti": 9, "contdiff": 9, "iteratedfderiv": 9, "contdiff_iff_continuous_differenti": 9, "stricter": 9, "hasstrictfderivat": 9, "\ud835\udd42": 9, "isrorc": 9, "contdiffat": 9, "localinvers": 9, "eventually_left_invers": 9, "eventually_right_invers": 9, "to_localinvers": 9, "hasfderivwithinat": [9, 10], "hasfderivatfilt": 9, "measuretheori": 10, "intervalintegr": 10, "integral_id": 10, "integral_one_div": 10, "differenti": [10, 12], "integral_hasstrictderivat_right": 10, "stronglymeasurableatfilt": 10, "volum": 10, "integral_eq_sub_of_hasderivat": 10, "convolut": 10, "bochner": 10, "lebesgu": 10, "measurablespac": 10, "countabl": 10, "measurableset": 10, "compl": 10, "iunion": 10, "iinter": 10, "measure_eq_iinf": 10, "measure_iunion_l": 10, "hmea": 10, "hdi": 10, "pairwis": 10, "m_iunion": 10, "\u1d50": 10, "integral_add": 10, "ennreal": 10, "toreal": 10, "set_integral_const": 10, "domin": 10, "converg": [10, 12], "aestronglymeasur": 10, "hbound": 10, "hlim": 10, "tendsto_integral_of_dominated_converg": 10, "fubini": 10, "sigmafinit": 10, "\u03bd": 10, "integral_prod": 10, "bilinear": 10, "borelspac": 10, "isaddhaarmeasur": 10, "invari": 10, "mass": 10, "compact": 10, "h_inj": 10, "det": 10, "integral_image_eq_integral_abs_det_fderiv_smul": 10, "overview": 12, "schr\u00f6der": 12, "bernstein": 12, "irrat": 12}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"introduct": 0, "get": 0, "start": 0, "overview": 0, "basic": [1, 6], "calcul": 1, "prove": 1, "ident": 1, "algebra": [1, 5, 7], "structur": [1, 5], "us": 1, "theorem": [1, 3], "lemma": 1, "more": 1, "exampl": 1, "appli": 1, "rw": 1, "fact": 1, "about": 1, "logic": 2, "implic": 2, "univers": 2, "quantifi": 2, "The": [2, 3], "existenti": 2, "negat": 2, "conjunct": 2, "iff": 2, "disjunct": 2, "sequenc": 2, "converg": [2, 8], "set": [3, 8], "function": [3, 8], "schr\u00f6der": 3, "bernstein": 3, "elementari": [4, 9, 10], "number": 4, "theori": [4, 10], "irrat": 4, "root": 4, "induct": 4, "recurs": 4, "infinit": 4, "mani": 4, "prime": 4, "defin": 5, "build": 5, "gaussian": 5, "integ": 5, "hierarchi": 6, "morphism": [6, 7], "sub": 6, "object": 6, "group": 7, "ring": 7, "monoid": 7, "subgroup": 7, "concret": 7, "action": 7, "quotient": 7, "unit": 7, "subr": 7, "ideal": 7, "polynomi": 7, "topologi": 8, "filter": 8, "metric": 8, "space": [8, 9], "continu": [8, 9], "ball": 8, "open": 8, "close": 8, "compact": 8, "uniformli": 8, "complet": 8, "topolog": 8, "fundament": 8, "separ": 8, "countabl": 8, "differenti": 9, "calculu": 9, "norm": 9, "linear": 9, "map": 9, "asymptot": 9, "comparison": 9, "integr": 10, "measur": 10, "index": 11, "mathemat": 12, "lean": 12}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"Introduction": [[0, "introduction"]], "Getting Started": [[0, "getting-started"]], "Overview": [[0, "overview"]], "Basics": [[1, "basics"], [6, "basics"]], "Calculating": [[1, "calculating"]], "Proving Identities in Algebraic Structures": [[1, "proving-identities-in-algebraic-structures"]], "Using Theorems and Lemmas": [[1, "using-theorems-and-lemmas"]], "More examples using apply and rw": [[1, "more-examples-using-apply-and-rw"]], "Proving Facts about Algebraic Structures": [[1, "proving-facts-about-algebraic-structures"]], "Logic": [[2, "logic"]], "Implication and the Universal Quantifier": [[2, "implication-and-the-universal-quantifier"]], "The Existential Quantifier": [[2, "the-existential-quantifier"]], "Negation": [[2, "negation"]], "Conjunction and Iff": [[2, "conjunction-and-iff"]], "Disjunction": [[2, "disjunction"]], "Sequences and Convergence": [[2, "sequences-and-convergence"]], "Sets and Functions": [[3, "sets-and-functions"]], "Sets": [[3, "sets"]], "Functions": [[3, "functions"]], "The Schr\u00f6der-Bernstein Theorem": [[3, "the-schroder-bernstein-theorem"]], "Elementary Number Theory": [[4, "elementary-number-theory"]], "Irrational Roots": [[4, "irrational-roots"]], "Induction and Recursion": [[4, "induction-and-recursion"]], "Infinitely Many Primes": [[4, "infinitely-many-primes"]], "Structures": [[5, "structures"]], "Defining structures": [[5, "defining-structures"]], "Algebraic Structures": [[5, "algebraic-structures"]], "Building the Gaussian Integers": [[5, "building-the-gaussian-integers"]], "Hierarchies": [[6, "hierarchies"]], "Morphisms": [[6, "morphisms"]], "Sub-objects": [[6, "sub-objects"]], "Groups and Rings": [[7, "groups-and-rings"]], "Monoids and Groups": [[7, "monoids-and-groups"]], "Monoids and their morphisms": [[7, "monoids-and-their-morphisms"]], "Groups and their morphisms": [[7, "groups-and-their-morphisms"]], "Subgroups": [[7, "subgroups"]], "Concrete groups": [[7, "concrete-groups"]], "Group actions": [[7, "group-actions"]], "Quotient groups": [[7, "quotient-groups"]], "Rings": [[7, "rings"]], "Rings, their units, morphisms and subrings": [[7, "rings-their-units-morphisms-and-subrings"]], "Ideals and quotients": [[7, "ideals-and-quotients"]], "Algebras and polynomials": [[7, "algebras-and-polynomials"]], "Topology": [[8, "index-0"]], "Filters": [[8, "filters"]], "Metric spaces": [[8, "metric-spaces"]], "Convergence and continuity": [[8, "convergence-and-continuity"]], "Balls, open sets and closed sets": [[8, "balls-open-sets-and-closed-sets"]], "Compactness": [[8, "compactness"], [8, "id5"]], "Uniformly continuous functions": [[8, "uniformly-continuous-functions"]], "Completeness": [[8, "completeness"]], "Topological spaces": [[8, "topological-spaces"]], "Fundamentals": [[8, "fundamentals"]], "Separation and countability": [[8, "separation-and-countability"]], "Differential Calculus": [[9, "index-0"]], "Elementary Differential Calculus": [[9, "elementary-differential-calculus"]], "Differential Calculus in Normed Spaces": [[9, "differential-calculus-in-normed-spaces"]], "Normed spaces": [[9, "id3"]], "Continuous linear maps": [[9, "continuous-linear-maps"]], "Asymptotic comparisons": [[9, "asymptotic-comparisons"]], "Differentiability": [[9, "differentiability"]], "Integration and Measure Theory": [[10, "index-0"]], "Elementary Integration": [[10, "elementary-integration"]], "Measure Theory": [[10, "measure-theory"]], "Integration": [[10, "integration"]], "Index": [[11, "index"]], "Mathematics in Lean": [[12, "mathematics-in-lean"]]}, "indexentries": {"check": [[0, "index-0"]], "commands": [[0, "index-0"]], "abel": [[1, "index-15"], [7, "index-3"]], "absolute value": [[1, "index-24"]], "apply": [[1, "index-12"], [1, "index-17"]], "calc": [[1, "index-3"]], "command": [[1, "index-9"]], "commutative ring": [[1, "index-8"]], "definitional equality": [[1, "index-13"]], "divisibility": [[1, "index-25"]], "exact": [[1, "index-12"], [1, "index-17"], [1, "index-5"]], "exponential": [[1, "index-19"]], "gcd": [[1, "index-26"]], "goal": [[1, "index-2"]], "group": [[1, "index-15"], [7, "index-2"]], "group (algebraic structure)": [[1, "index-14"], [7, "index-1"]], "group (tactic)": [[1, "index-15"], [7, "index-2"]], "have": [[1, "index-11"], [2, "index-12"]], "implicit argument": [[1, "index-10"]], "inequalities": [[1, "index-16"]], "lattice": [[1, "index-28"]], "lcm": [[1, "index-26"]], "linarith": [[1, "index-18"]], "local context": [[1, "index-2"]], "logarithm": [[1, "index-19"]], "max": [[1, "index-21"]], "metric space": [[1, "index-29"], [8, "index-2"]], "min": [[1, "index-21"]], "namespace": [[1, "index-9"]], "noncomm_ring": [[1, "index-15"]], "norm_num": [[1, "index-20"]], "open": [[1, "index-9"]], "order relation": [[1, "index-27"]], "partial order": [[1, "index-27"]], "proof state": [[1, "index-2"]], "real numbers": [[1, "index-1"]], "refl and reflexivity": [[1, "index-13"]], "reflexivity": [[1, "index-13"]], "repeat": [[1, "index-23"]], "rewrite": [[1, "index-0"]], "rfl": [[1, "index-13"]], "ring": [[1, "index-6"]], "ring (algebraic structure)": [[1, "index-7"], [7, "index-4"]], "ring (tactic)": [[1, "index-6"]], "rw": [[1, "index-0"], [1, "index-4"]], "rw and rewrite": [[1, "index-0"], [1, "index-4"]], "show": [[1, "index-22"]], "tactics": [[1, "index-0"], [1, "index-11"], [1, "index-12"], [1, "index-13"], [1, "index-15"], [1, "index-17"], [1, "index-18"], [1, "index-20"], [1, "index-22"], [1, "index-23"], [1, "index-3"], [1, "index-4"], [1, "index-5"], [1, "index-6"], [2, "index-0"], [2, "index-12"], [2, "index-13"], [2, "index-14"], [2, "index-15"], [2, "index-16"], [2, "index-17"], [2, "index-18"], [2, "index-19"], [2, "index-2"], [2, "index-20"], [2, "index-21"], [2, "index-23"], [2, "index-24"], [2, "index-25"], [2, "index-26"], [2, "index-4"], [2, "index-6"], [2, "index-8"], [2, "index-9"], [3, "index-1"], [3, "index-2"], [4, "index-0"], [7, "index-2"], [7, "index-3"], [8, "index-3"]], "absurd": [[2, "index-17"]], "anonymous constructor": [[2, "index-7"]], "assumption": [[2, "index-19"]], "by_cases": [[2, "index-23"]], "by_contra": [[2, "index-14"]], "by_contra and by_contradiction": [[2, "index-14"]], "cases": [[2, "index-8"]], "change": [[2, "index-2"]], "congr": [[2, "index-25"]], "constructor": [[2, "index-18"]], "contradiction": [[2, "index-17"]], "contrapose": [[2, "index-16"]], "convert": [[2, "index-26"]], "dsimp": [[2, "index-2"]], "erw": [[2, "index-4"]], "excluded middle": [[2, "index-22"]], "exfalso": [[2, "index-17"]], "ext": [[2, "index-24"]], "extensionality": [[2, "index-24"]], "field_simp": [[2, "index-11"]], "from": [[2, "index-12"]], "injective function": [[2, "index-5"]], "intro": [[2, "index-0"]], "lambda abstraction": [[2, "index-1"]], "left": [[2, "index-21"]], "let": [[2, "index-13"]], "monotone function": [[2, "index-3"]], "push_neg": [[2, "index-15"]], "rcases": [[2, "index-9"]], "right": [[2, "index-21"]], "rintro": [[2, "index-9"]], "simp": [[2, "index-20"], [3, "index-1"]], "surjective function": [[2, "index-10"]], "tactic": [[2, "index-11"]], "this": [[2, "index-12"]], "use": [[2, "index-6"]], "bounded quantifiers": [[3, "index-3"]], "rwa": [[3, "index-2"]], "set operations": [[3, "index-0"]], "decide": [[4, "index-0"]], "monoid": [[7, "index-0"]], "filter": [[8, "index-1"]], "continuity": [[8, "index-3"]], "topological space": [[8, "index-4"]], "topology": [[8, "index-0"]], "differential calculus": [[9, "index-0"]], "elementary calculus": [[9, "index-1"]], "normed space": [[9, "index-2"]], "integration": [[10, "index-0"], [10, "index-1"]], "measure theory": [[10, "index-2"]]}}) Search.setIndex({"docnames": ["C01_Introduction", "C02_Basics", "C03_Logic", "C04_Sets_and_Functions", "C05_Elementary_Number_Theory", "C06_Structures", "C07_Hierarchies", "C08_Groups_and_Rings", "C09_Topology", "C10_Differential_Calculus", "C11_Integration_and_Measure_Theory", "genindex", "index"], "filenames": ["C01_Introduction.rst", "C02_Basics.rst", "C03_Logic.rst", "C04_Sets_and_Functions.rst", "C05_Elementary_Number_Theory.rst", "C06_Structures.rst", "C07_Hierarchies.rst", "C08_Groups_and_Rings.rst", "C09_Topology.rst", "C10_Differential_Calculus.rst", "C11_Integration_and_Measure_Theory.rst", "genindex.rst", "index.rst"], "titles": ["<span class=\"section-number\">1. </span>Introduction", "<span class=\"section-number\">2. </span>Basics", "<span class=\"section-number\">3. </span>Logic", "<span class=\"section-number\">4. </span>Sets and Functions", "<span class=\"section-number\">5. </span>Elementary Number Theory", "<span class=\"section-number\">6. </span>Structures", "<span class=\"section-number\">7. </span>Hierarchies", "<span class=\"section-number\">8. </span>Groups and Rings", "<span class=\"section-number\">9. </span>Topology", "<span class=\"section-number\">10. </span>Differential Calculus", "<span class=\"section-number\">11. </span>Integration and Measure Theory", "Index", "Mathematics in Lean"], "terms": {"The": [0, 1, 4, 5, 6, 7, 8, 9, 10, 12], "goal": [0, 1, 2, 3, 4, 5, 8], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "book": [0, 2, 8], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "teach": 0, "you": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "formal": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "mathemat": [0, 1, 2, 3, 4, 5, 6, 7, 8], "us": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "lean": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "4": [0, 1, 2, 4, 5, 7, 8, 9], "interact": [0, 5, 6, 7, 10], "proof": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "assist": [0, 2, 5], "It": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "assum": [0, 1, 2, 3, 4, 6, 7, 8], "know": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "some": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "doe": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "requir": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "much": [0, 2, 4, 6, 7, 8, 9], "although": [0, 3, 4, 5, 6, 7, 8], "we": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "cover": [0, 1, 3, 6, 7, 8, 9], "exampl": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "rang": [0, 2, 3, 4, 7, 8], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "number": [0, 1, 2, 3, 5, 6, 7, 8, 9, 12], "theori": [0, 1, 2, 3, 6, 7, 8, 9, 12], "measur": [0, 5, 8, 9, 12], "analysi": [0, 5, 9], "focu": [0, 1, 7, 8, 10], "elementari": [0, 3, 5, 7, 8, 12], "aspect": [0, 5, 7], "those": [0, 1, 2, 3, 5, 6, 7, 8, 9], "field": [0, 1, 5, 6, 7, 9], "hope": 0, "thei": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "familiar": [0, 1, 4, 5, 8, 9], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "pick": [0, 6], "them": [0, 1, 2, 3, 4, 5, 6, 7, 8], "up": [0, 2, 3, 4, 5, 6, 7, 8], "go": [0, 1, 2, 3, 4, 6, 8], "also": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "don": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "t": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "presuppos": 0, "ani": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "background": [0, 7], "method": [0, 2, 3, 4, 5], "seen": [0, 1, 2, 4, 5, 6, 7, 8], "kind": [0, 1, 6, 8], "comput": [0, 2, 3, 4, 5, 7, 9, 10], "program": [0, 1, 2], "write": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10], "definit": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "theorem": [0, 2, 4, 5, 7, 8, 9, 10, 12], "regiment": 0, "languag": [0, 1, 2, 3], "like": [0, 1, 2, 3, 4, 5, 6, 7, 8], "understand": [0, 2, 3, 4, 5, 6, 7, 8], "In": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "return": [0, 2, 3, 4, 5, 7, 8], "provid": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "feedback": 0, "inform": [0, 1, 2, 3, 5, 6, 8], "interpret": [0, 1, 4, 5, 7, 8], "express": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "guarante": [0, 3, 5], "well": [0, 1, 2, 3, 4, 5, 6, 7, 8], "form": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "ultim": 0, "certifi": 0, "correct": [0, 1, 7], "our": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "learn": [0, 1, 4, 5], "more": [0, 2, 3, 4, 5, 6, 7, 8, 9, 12], "about": [0, 2, 3, 4, 5, 6, 7, 8, 9, 12], "project": [0, 4, 5, 7, 8], "page": [0, 1, 4], "commun": [0, 4], "web": [0, 1, 4], "tutori": 0, "base": [0, 2, 3, 4, 6, 7, 8, 9], "": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "larg": [0, 6, 8], "ever": [0, 8], "grow": [0, 6, 7], "librari": [0, 1, 2, 3, 4, 5, 7, 8, 9], "mathlib": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "strongli": 0, "recommend": [0, 1, 3], "join": [0, 1, 5], "zulip": [0, 4], "onlin": 0, "chat": 0, "group": [0, 1, 2, 3, 5, 6, 8, 9, 12], "haven": [0, 2, 6, 8], "alreadi": [0, 1, 2, 3, 4, 5, 6, 7, 8], "ll": [0, 2, 4, 6, 8], "find": [0, 1, 2, 4, 5, 6, 8], "live": [0, 5], "welcom": [0, 1], "enthusiast": 0, "happi": 0, "answer": [0, 5, 8], "question": [0, 4, 6, 8, 10], "offer": [0, 2, 5, 8], "moral": [0, 5, 7], "support": [0, 1, 2, 3, 4, 5, 6, 8], "read": [0, 1, 4, 5, 6, 7, 8], "pdf": 0, "html": 0, "version": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "design": [0, 1, 2, 3, 5, 7, 8], "run": 0, "insid": [0, 1, 2, 3, 7], "v": [0, 1, 2, 3, 5, 8], "code": [0, 1, 2, 3, 5, 6], "editor": [0, 1], "To": [0, 1, 2, 3, 4, 5, 6, 7, 8], "instal": [0, 6], "follow": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "instruct": [0, 1, 2, 8], "make": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "sure": [0, 1, 2, 3, 5, 6, 7], "have": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "git": 0, "fetch": 0, "mathematics_in_lean": 0, "repositori": [0, 1], "open": [0, 1, 2, 3, 4, 5, 7, 9, 10], "each": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "section": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "ha": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "an": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "associ": [0, 1, 2, 4, 5, 6, 7, 8, 10], "file": [0, 1, 4, 5, 6, 7, 8], "exercis": [0, 1, 2, 3, 5, 6, 7, 8, 9], "folder": 0, "mil": 0, "organ": 0, "chapter": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "copi": [0, 3, 4, 6, 7, 8], "experi": [0, 1, 8], "do": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "leav": [0, 1, 2, 3, 5, 6, 7], "origin": [0, 1, 5, 7], "intact": 0, "easier": [0, 1, 3, 4, 6, 8], "updat": 0, "chang": [0, 1, 2, 4, 5, 8, 10], "see": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "below": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "call": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "my_fil": 0, "whatev": [0, 2, 4], "want": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "creat": [0, 1, 4, 6], "your": [0, 1, 2, 3, 5, 6, 7, 8], "own": [0, 1, 4, 5, 6], "At": [0, 1, 2, 4, 5, 6], "point": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10], "textbook": [0, 1, 2], "side": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "panel": 0, "type": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "ctrl": [0, 1, 2, 4, 5], "shift": [0, 1, 6, 8], "p": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "command": [0, 1, 2, 3, 4, 5, 6, 7], "maco": 0, "document": [0, 1, 3, 4, 6], "view": [0, 5, 6, 7, 8], "bar": [0, 1, 2], "appear": [0, 1, 2, 5, 6, 7, 8], "press": 0, "select": [0, 8], "soon": [0, 2, 6, 7, 8], "highlight": [0, 2], "menu": [0, 1], "window": [0, 1, 2, 5], "click": [0, 1, 3, 4, 5, 6], "current": [0, 1, 2, 5, 6], "altern": [0, 2, 3, 4, 5, 6, 8], "cloud": 0, "gitpod": 0, "how": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "github": [0, 1], "still": [0, 1, 2, 3, 4, 5, 6, 8, 10], "work": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "describ": [0, 1, 2, 3, 4, 5, 6, 8], "abov": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "progress": [0, 1, 5, 7], "pull": [0, 7, 8], "lake": 0, "ex": [0, 2], "cach": 0, "content": [0, 1, 2, 4, 8], "which": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "why": [0, 2, 4, 6, 7, 8], "suggest": [0, 2, 4, 5, 8], "intend": [0, 1, 2, 5], "while": [0, 1, 2, 6, 7, 8], "contain": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "explan": [0, 7, 8], "hint": [0, 1, 2, 10], "text": [0, 3, 5, 8], "often": [0, 1, 2, 3, 4, 5, 6, 7, 8], "includ": [0, 1, 2, 3, 4, 6, 7, 8, 9], "one": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "eval": [0, 7], "hello": 0, "world": 0, "should": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "abl": [0, 1, 2, 3, 4, 5, 6, 7, 9], "correspond": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "If": [0, 1, 2, 3, 4, 5, 6, 8], "line": [0, 1, 2, 3, 4, 6, 7], "show": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "hover": [0, 1, 2, 3, 4, 5], "cursor": [0, 1, 2], "over": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "respons": [0, 1], "pop": 0, "encourag": [0, 1, 2, 3, 4, 5], "edit": 0, "try": [0, 1, 2, 3, 4, 5, 6, 8], "moreov": [0, 1, 4, 5, 8], "lot": [0, 3, 5, 6, 7, 8], "challeng": [0, 1, 2, 3, 5, 9], "rush": 0, "past": [0, 1, 7], "just": [0, 1, 2, 3, 4, 5, 6, 7, 8], "through": [0, 1, 3, 4, 5, 6, 7, 8], "central": [0, 4], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "feel": [0, 1, 2, 6, 8], "comfort": 0, "master": [0, 1, 4], "relev": [0, 1, 2, 4, 5, 6, 7, 8], "skill": [0, 1, 2, 3, 4], "free": [0, 1, 7, 8], "move": [0, 1, 2, 6, 8], "alwai": [0, 1, 2, 3, 5, 6, 7], "compar": [0, 5, 6, 8], "solut": [0, 1, 4, 6], "ones": [0, 1, 2, 3, 5, 10], "put": [0, 1, 2, 3, 4, 5, 6, 7, 8], "simpli": [0, 1, 2, 3, 4, 5, 6, 7, 8], "tool": [0, 1, 5, 6], "build": [0, 2, 4, 6, 7, 8, 12], "complex": [0, 1, 2, 4, 5, 7, 9, 10], "known": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "depend": [0, 2, 3, 4, 5, 6, 7, 8], "everi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "check": [0, 1, 2, 3, 4, 5, 6, 7, 8], "print": [0, 3, 4, 5, 10], "\u2115": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "These": [0, 1, 3, 4, 5, 7, 9, 10], "object": [0, 1, 2, 3, 4, 5, 7, 12], "2": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "def": [0, 2, 3, 4, 5, 6, 7, 8], "f": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "3": [0, 1, 2, 3, 4, 5, 6, 7, 8], "prop": [0, 2, 3, 4, 5, 6, 7, 8, 10], "statement": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "fermatlasttheorem": 0, "y": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "z": [0, 1, 2, 5, 6, 7, 8, 9, 10], "n": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "where": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "itself": [0, 2, 3, 5, 6, 7, 8, 9], "Such": [0, 1, 2, 6], "proposit": [0, 2, 3, 4, 5], "easi": [0, 4, 5, 6, 7, 8], "rfl": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "hard": [0, 1, 3, 5, 6, 7], "sorri": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "manag": [0, 1, 4, 5, 8], "construct": [0, 2, 3, 4, 5, 6, 7, 8], "accept": [0, 1, 2, 8], "term": [0, 1, 2, 3, 4, 5, 7, 8], "done": [0, 2, 3, 4, 6, 7, 8], "someth": [0, 1, 2, 4, 6, 8], "veri": [0, 2, 4, 6, 7, 8, 10], "impress": 0, "cheat": [0, 1], "so": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "now": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "game": [0, 6], "left": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "rule": [0, 2, 4, 5, 6, 8], "complementari": 0, "companion": [0, 1], "prove": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "thorough": 0, "underli": [0, 1, 5, 6, 7], "logic": [0, 1, 3, 4, 5, 7, 12], "framework": 0, "core": [0, 4, 5], "syntax": [0, 1, 2, 4, 6], "peopl": [0, 1], "who": [0, 8], "prefer": [0, 1, 2, 3], "user": [0, 6], "manual": [0, 3, 4], "befor": [0, 1, 2, 3, 4, 5, 6, 7], "new": [0, 1, 2, 3, 4, 5, 6, 7, 8], "dishwash": 0, "person": 0, "hit": [0, 1], "button": 0, "figur": [0, 1, 2, 5], "out": [0, 1, 2, 3, 4, 5, 6, 7, 8], "activ": 0, "potscrubb": 0, "featur": [0, 2, 4, 7], "later": [0, 1, 2, 4, 5, 6, 7, 8], "sens": [0, 2, 3, 4, 5, 6, 7, 8, 9], "here": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "refer": [0, 1, 2, 4, 5, 6, 8, 9], "back": [0, 1, 2, 5, 6, 7, 8], "necessari": [0, 2, 4, 5, 7], "anoth": [0, 1, 2, 3, 4, 5, 6, 7, 8], "thing": [0, 1, 2, 3, 4, 5, 6, 8], "distinguish": [0, 5, 6, 7, 8, 9], "place": [0, 1, 2, 5, 8], "greater": [0, 1, 2, 3, 4, 8], "emphasi": [0, 6], "tactic": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "given": [0, 1, 2, 3, 4, 5, 6, 7, 8], "two": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "wai": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "down": [0, 3, 4, 6, 8], "themselv": [0, 4, 5], "suitabl": [0, 1, 2, 5, 8], "descript": [0, 1, 2, 4, 8], "thereof": 0, "For": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "repres": [0, 1, 2, 3, 4, 5, 6, 9], "fact": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "even": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10], "m": [0, 1, 2, 4, 6, 7, 8, 9], "nat": [0, 1, 2, 3, 4, 5, 7, 8], "fun": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "k": [0, 2, 4, 5, 7, 8, 9], "hk": [0, 9], "hmn": 0, "rw": [0, 2, 3, 4, 5, 6, 7, 8, 12], "mul_add": [0, 1, 4, 6], "l": [0, 1, 9, 10], "_": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "compress": [0, 1, 8], "singl": [0, 1, 2, 3, 4, 5, 6, 7, 9], "instead": [0, 1, 2, 3, 4, 5, 6, 7, 8], "style": [0, 1], "same": [0, 1, 2, 3, 4, 5, 6, 7, 8], "comment": [0, 4], "henc": [0, 2, 3, 4, 5, 6, 8, 9], "ignor": [0, 5, 7, 8], "sai": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "natur": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "rintro": [0, 2, 3, 4, 7, 8], "need": [0, 1, 2, 3, 4, 5, 6, 7, 8], "twice": [0, 1, 8], "let": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "substitut": [0, 2], "obviou": [0, 4, 5, 6], "ring": [0, 1, 2, 3, 4, 5, 6, 12], "As": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "enter": [0, 1, 2, 3, 7, 8], "displai": [0, 1, 2, 6], "state": [0, 1, 2, 3, 4, 6, 7, 8, 9], "separ": [0, 1, 2, 4, 5], "tell": [0, 2, 3, 4, 5, 6, 7], "what": [0, 1, 2, 3, 4, 5, 6, 7, 8], "establish": [0, 1, 2, 3, 4, 5], "task": [0, 2, 4, 5, 6, 8], "remain": [0, 1, 2, 3, 5, 6, 8], "replai": 0, "step": [0, 1, 2, 3, 4, 5, 6], "sinc": [0, 1, 2, 3, 4, 5, 6, 7, 8], "continu": [0, 1, 4, 5, 6, 10], "first": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "introduc": [0, 1, 2, 3, 4, 8, 10], "could": [0, 1, 2, 4, 5, 6, 7, 8], "renam": 0, "decompos": [0, 3], "hypothesi": [0, 1, 2, 3, 4], "assumpt": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10], "second": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "declar": [0, 1, 4, 5, 6, 7], "next": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "rewrit": [0, 1, 2, 3, 4, 5, 6, 8], "replac": [0, 1, 2, 3, 4, 6, 7], "solv": [0, 1, 2, 3, 4, 5, 6, 8], "result": [0, 1, 2, 3, 4, 5, 6, 7, 8], "abil": 0, "small": [0, 2, 4, 5, 8], "increment": [0, 1], "extrem": [0, 6, 8], "power": [0, 1, 3, 4, 5, 6], "reason": [0, 1, 2, 4, 5, 6, 7, 8], "quicker": 0, "than": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "There": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10], "isn": [0, 2, 3, 4, 6], "sharp": 0, "distinct": [0, 2, 3, 4, 5, 8], "between": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "insert": [0, 2, 4, 5, 7, 8, 9], "did": [0, 2, 6, 8], "phrase": [0, 1, 2, 4, 5], "convers": [0, 2, 4, 7, 8], "short": [0, 1, 2, 3, 4, 5], "middl": [0, 1, 2, 8], "That": [0, 4, 5, 6], "said": [0, 2, 4, 5], "reduc": [0, 2, 3, 4, 5], "liner": 0, "carri": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "But": [0, 1, 2, 3, 4, 5, 6, 7, 8], "substanti": 0, "autom": [0, 1, 5], "justifi": [0, 1, 2, 8], "longer": [0, 4, 5], "calcul": [0, 2, 4, 5, 12], "bigger": [0, 3, 9], "inferenti": 0, "invok": [0, 1, 8], "simplifi": [0, 2, 3, 4, 5, 8, 10], "specif": [0, 1, 3, 4, 5, 6], "pariti": [0, 4], "automat": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "intro": [0, 1, 2, 3, 4, 5, 6, 7, 8], "simp": [0, 2, 3, 4, 5, 6, 7, 8, 9], "parity_simp": 0, "big": [0, 5, 7, 8, 9], "differ": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "onli": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "its": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "built": [0, 2, 6, 7], "wherea": [0, 1, 2, 3, 5, 7, 8], "top": [0, 6, 7, 8, 9], "meant": [0, 2, 6], "complet": [0, 1, 2, 3, 4, 6, 7, 9], "extens": [0, 1, 6, 8, 9], "rather": [0, 1, 2, 4, 5, 6, 7, 8], "think": [0, 1, 2, 3, 4, 5, 6, 8, 9], "basic": [0, 2, 4, 5, 8, 10, 12], "entri": [0, 5, 7], "brows": [0, 1, 4, 7], "frustrat": [0, 6], "curv": 0, "steep": 0, "newcom": 0, "avail": [0, 1, 2, 4, 5, 6, 7], "round": [0, 1, 5], "clock": 0, "doubt": 0, "enough": [0, 1, 2, 3, 4, 6, 7, 8], "too": [0, 1, 3, 5, 6, 7, 8], "contribut": [0, 3], "develop": [0, 1, 4, 7, 10], "mission": 0, "choos": [0, 2, 3, 4, 5, 6, 7, 8], "dive": 0, "come": [0, 1, 2, 3, 4, 5, 6, 7, 8], "forewarn": 0, "fundament": [0, 4, 5, 6, 10], "life": [0, 2], "mai": [0, 1, 2, 3, 5, 6, 7, 8, 9], "never": [0, 6], "acknowledg": 0, "grate": [0, 5], "gabriel": 0, "ebner": 0, "set": [0, 1, 2, 4, 5, 6, 7, 9, 10, 12], "infrastructur": 0, "scott": 0, "morrison": 0, "mario": 0, "carneiro": 0, "help": [0, 1, 2, 3, 4, 5, 6, 8], "port": 0, "takeshi": 0, "ab": [0, 2, 5, 7], "julian": 0, "berman": 0, "alex": 0, "best": 0, "bulwi": 0, "cha": 0, "bryan": 0, "gin": 0, "ge": [0, 2, 5], "chen": 0, "steven": 0, "clontz": 0, "mauricio": 0, "collari": 0, "johan": 0, "commelin": 0, "mark": [0, 1, 2, 6, 8], "czubin": 0, "alexandru": 0, "duca": 0, "deni": 0, "gorbachev": 0, "winston": 0, "de": 0, "greef": 0, "mathieu": 0, "guai": 0, "paquet": 0, "k\u00fclshammer": 0, "martin": 0, "c": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10], "giovanni": 0, "mascellani": 0, "isaiah": 0, "mindich": 0, "hunter": 0, "monro": 0, "pietro": 0, "monticon": 0, "oliv": 0, "nash": 0, "bartosz": 0, "piotrowski": 0, "nicola": 0, "rolland": 0, "keith": 0, "guilherm": 0, "silva": 0, "pedro": 0, "s\u00e1nchez": 0, "terraf": 0, "flori": 0, "van": 0, "doorn": 0, "eric": 0, "wieser": 0, "been": [0, 1, 2, 4, 5, 6, 9], "partial": [0, 1, 2, 3, 5, 6, 7], "hoskinson": 0, "center": [0, 8], "nut": 1, "bolt": 1, "gener": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "without": [1, 2, 4, 5, 6, 7, 8, 9], "u": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "net": 1, "hand": [1, 2, 3, 4, 5, 6, 8], "equal": [1, 2, 3, 4, 5, 6, 7, 8, 10], "right": [1, 2, 3, 4, 5, 6, 8, 9], "tantamount": [1, 3], "name": [1, 2, 3, 4, 5, 6, 7, 8, 9], "b": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "real": [1, 2, 3, 4, 5, 6, 8, 9, 10], "mul_assoc": [1, 2, 4, 5, 6, 7], "mul_comm": [1, 2, 4, 5, 6, 7], "elimin": 1, "explicitli": [1, 2, 3, 5, 6, 7, 8, 9], "purpos": [1, 2, 3, 4, 5, 6, 8], "illustr": [1, 2, 3, 4, 5, 7], "multipl": [1, 2, 3, 4, 5, 6, 7, 9], "written": [1, 2, 3, 4, 5, 6, 7, 8, 9], "howev": [1, 2, 5, 6, 7, 8, 9], "good": [1, 2, 3, 4, 5, 6, 7, 8], "mind": [1, 2, 5, 6, 7], "notat": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "convent": [1, 5, 7, 10], "parenthes": [1, 2, 3, 4], "\u211d": [1, 2, 3, 5, 6, 7, 8, 9, 10], "import": [1, 2, 3, 4, 5, 6, 7, 8, 10], "begin": [1, 2, 3, 4, 5, 6], "sake": [1, 4], "breviti": [1, 5], "suppress": 1, "happen": [1, 6, 8], "charact": [1, 3, 6], "r": [1, 2, 4, 5, 6, 7, 8], "symbol": [1, 2, 5, 6, 7], "doesn": [1, 2, 7, 8], "until": [1, 4, 6, 8], "space": [1, 2, 3, 5, 6, 7, 10, 12], "tab": [1, 3, 4], "kei": [1, 4, 5, 7, 8], "curiou": [1, 6], "abbrevi": [1, 2, 3, 5], "get": [1, 2, 3, 4, 6, 7, 8, 9, 12], "access": [1, 3, 5, 6, 7, 8, 10], "keyboard": 1, "easili": [1, 4, 5, 6, 7], "backslash": [1, 3], "lead": [1, 2, 4, 5, 6, 7, 8], "lean4": 1, "input": [1, 3, 8], "leader": 1, "report": 1, "infoview": [1, 6], "A": [1, 2, 3, 4, 5, 6, 7, 8, 9], "typic": [1, 7], "might": [1, 2, 3, 4, 5, 7], "look": [1, 2, 3, 4, 6, 7, 8], "1": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "h\u2081": [1, 2, 3, 4], "prime": [1, 2, 3, 5, 6, 7, 12], "h\u2082": [1, 3, 4], "h\u2083": [1, 3], "denot": [1, 3, 4, 6, 7, 8], "context": [1, 2, 4, 5, 6, 7, 8, 9, 10], "plai": [1, 3, 4, 6, 7, 8], "three": [1, 2, 4, 5, 7, 8], "label": [1, 2], "everyth": [1, 2, 6, 8], "identifi": [1, 2, 4], "subscript": 1, "h": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "legal": 1, "would": [1, 2, 3, 4, 5, 6, 7, 8, 9], "h1": [1, 2, 3, 4, 5], "h2": [1, 2, 3, 5], "h3": 1, "foo": [1, 5], "baz": 1, "last": [1, 2, 3, 4, 5, 6, 7, 8], "sometim": [1, 2, 3, 4, 5, 6, 7, 8], "target": [1, 6, 7, 8, 10], "combin": [1, 2, 5, 6, 7, 8], "practic": [1, 2, 3, 6, 7, 8], "mean": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "usual": [1, 2, 3, 4, 5, 7, 8, 10], "clear": [1, 2, 4, 5, 6], "case": [1, 2, 3, 4, 5, 6, 7, 8, 10], "With": [1, 3, 4, 6, 8], "arrow": [1, 2, 6, 8], "revers": [1, 2, 3, 5, 8], "note": [1, 2, 4, 5, 6, 7, 8, 10], "noth": [1, 2, 3, 4, 5, 6, 7], "argument": [1, 2, 3, 4, 5, 6, 7, 8], "tri": [1, 2, 4, 6], "match": [1, 2, 5], "pattern": [1, 2, 3, 5, 6], "local": [1, 2, 6, 8, 9], "d": [1, 2, 4, 5, 7, 9], "e": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "sub_self": [1, 2], "hyp": 1, "list": [1, 2, 3, 4, 5], "comma": 1, "squar": [1, 2, 4, 5, 6, 7], "bracket": [1, 2, 5, 6, 7], "after": [1, 2, 4, 6, 8, 9], "trick": [1, 2, 4, 6, 9], "variabl": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "onc": [1, 2, 3, 4, 5, 6, 7, 8, 10], "outsid": [1, 4], "inspect": 1, "reveal": 1, "inde": [1, 5, 6, 7, 8, 9], "delimit": 1, "scope": [1, 2, 3, 5, 7], "end": [1, 2, 3, 4, 5, 6, 7, 8, 9], "block": [1, 4, 7], "final": [1, 2, 3, 5, 7, 8, 10], "recal": [1, 2, 4, 5, 7, 8, 10], "introduct": [1, 2, 7, 8, 12], "determin": [1, 5, 7, 8], "both": [1, 2, 3, 4, 5, 6, 7, 8, 9], "expect": [1, 2, 3, 4, 5, 6, 7, 8], "rais": [1, 4], "error": [1, 2, 3, 6], "explain": [1, 2, 3, 4, 5, 6, 7, 8, 10], "output": [1, 7], "meanwhil": [1, 4], "take": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "two_mul": 1, "add_mul": [1, 6], "distribut": [1, 4, 5, 6], "addit": [1, 2, 4, 5, 6, 7, 8, 9, 10], "add_assoc": [1, 4, 5, 6], "precis": [1, 3, 7, 8, 9], "possibl": [1, 2, 3, 4, 5, 7, 8], "calc": [1, 2, 3, 5, 7, 8], "keyword": [1, 2, 4, 5], "notic": [1, 2, 3, 4, 5, 7, 8], "finicki": 1, "underscor": [1, 2, 3], "justif": [1, 2], "format": 1, "indic": [1, 2, 3, 5, 6], "indent": 1, "One": [1, 2, 3, 4, 5, 6, 7, 8], "outlin": [1, 2, 4, 8], "modulo": [1, 4, 5], "individu": 1, "pure": [1, 8], "littl": [1, 2, 8, 9], "underneath": [1, 3], "pow_two": [1, 4], "mul_sub": 1, "add_sub": 1, "sub_sub": 1, "add_zero": [1, 5, 6], "perform": [1, 2, 3], "exact": [1, 2, 3, 4, 5, 7, 8], "becaus": [1, 2, 3, 4, 5, 6, 7, 8, 9], "exactli": [1, 2, 3, 5, 6, 7, 8], "close": [1, 2, 3, 6, 7, 9, 10], "bit": [1, 2, 4, 6, 7, 8], "commut": [1, 2, 3, 4, 5, 6, 7, 9], "long": [1, 2, 3, 5, 6, 7, 9], "axiom": [1, 2, 3, 5, 6, 7, 8, 10], "indirectli": 1, "data": [1, 2, 4, 5, 6, 8], "other": [1, 2, 3, 4, 5, 6, 7, 8], "similar": [1, 2, 3, 5, 6, 7, 8], "common": [1, 2, 3, 4, 5, 7, 8], "variat": [1, 3, 4, 5, 8, 9], "nth_rw": 1, "allow": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "particular": [1, 2, 5, 6, 7, 8], "instanc": [1, 2, 3, 4, 5, 6, 7, 8, 9], "enumer": [1, 2], "start": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12], "occurr": 1, "consist": [1, 3, 5, 6, 7, 8, 9], "collect": [1, 2, 3, 5, 8, 10], "oper": [1, 2, 3, 4, 5, 6, 7, 8, 9], "time": [1, 4, 5, 6, 8, 9, 10], "constant": [1, 2, 7, 10], "mapsto": [1, 5], "abelian": [1, 5, 6], "negat": [1, 5, 12], "invers": [1, 3, 5, 6, 7, 9, 10], "add_comm": [1, 4, 5, 6, 7], "zero_add": [1, 4, 5, 6], "add_left_neg": [1, 5], "mul_on": [1, 5, 6, 7], "one_mul": [1, 2, 5, 6], "being": [1, 3, 5, 7, 8, 9], "suffic": [1, 2, 3, 7, 8], "give": [1, 2, 3, 4, 6, 7, 8, 10], "element": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "concret": [1, 2, 4, 5, 6, 8], "integ": [1, 2, 4, 6, 7, 12], "abstract": [1, 2, 5, 6, 7, 8], "character": [1, 3, 4, 8, 9], "axiomat": [1, 2, 3, 5], "train": [1, 6], "recogn": [1, 2, 4, 5, 6, 8], "appropri": [1, 2, 3, 5, 6], "\u2124": [1, 4, 5, 6, 7], "ration": [1, 2, 4, 8], "\u211a": [1, 4, 7, 8], "\u2102": [1, 5, 7, 9], "extend": [1, 3, 4, 5, 6, 8, 10], "order": [1, 2, 3, 4, 5, 6, 8, 9], "Not": [1, 5, 8], "properti": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "hold": [1, 2, 3, 4, 5, 7, 8, 10], "arbitrari": [1, 2, 3, 4, 5, 7], "taken": [1, 2], "cours": [1, 2, 4, 6, 7, 8, 9, 10], "linear": [1, 2, 5, 7, 8], "matric": [1, 5, 7], "fail": [1, 2, 4, 5, 6, 8, 10], "commr": [1, 2, 5, 7], "unchang": [1, 2], "linarith": [1, 2, 4, 5], "permiss": 1, "strike": [1, 2], "balanc": 1, "concis": [1, 5, 7], "readabl": [1, 2, 3, 4, 8], "strengthen": [1, 2, 4], "deriv": [1, 2, 4, 7, 9, 10], "most": [1, 2, 3, 4, 5, 6, 7, 8, 10], "organiz": 1, "mechan": [1, 2, 5], "namespac": [1, 2, 3, 4, 5, 7, 8], "full": [1, 2, 3, 4, 5, 6, 7, 8], "shorter": [1, 3, 4, 7, 8], "avoid": [1, 2, 3, 4, 5, 6, 7, 9], "due": [1, 6], "clash": 1, "myre": 1, "add_right_neg": 1, "effect": [1, 3, 6, 8], "temporarili": [1, 2], "reprov": [1, 7], "care": [1, 2, 3, 5], "earlier": [1, 7], "pai": [1, 2, 6, 7, 8], "attent": [1, 2, 4, 6, 7, 8], "curli": [1, 2], "implicit": [1, 2, 5, 6, 7, 8, 9], "moment": [1, 2, 5], "worri": [1, 3, 4, 5, 7], "neg_add_cancel_left": 1, "add_neg_cancel_right": 1, "add_left_cancel": 1, "add_right_cancel": 1, "plan": [1, 6, 8], "brace": 1, "imagin": 1, "situat": [1, 3, 6, 7, 8], "draw": [1, 5, 6], "conclus": [1, 2, 4], "hypothes": [1, 2, 3, 4, 5], "redund": [1, 5, 8, 10], "few": [1, 2, 3, 4, 8], "extra": [1, 2, 3, 5, 6, 7, 8], "oner": 1, "complic": [1, 2, 6, 7], "tediou": [1, 2, 6], "suppos": [1, 2, 3, 4, 5, 8], "infer": [1, 2, 3, 5, 6, 7], "mul_zero": [1, 5, 6], "serv": [1, 3, 4, 5, 10], "therefor": [1, 4, 5, 8], "promot": 1, "modular": 1, "subproof": 1, "wa": [1, 3, 7], "except": [1, 2, 5, 7], "ad": [1, 2, 3, 4, 5, 6, 8], "variant": [1, 2, 7, 8], "whose": [1, 2, 4, 5, 6, 7, 8, 9], "necessarili": [1, 10], "miss": [1, 3, 4], "piec": [1, 4, 5, 6, 7, 8], "either": [1, 2, 3, 5, 6, 8], "becom": [1, 4, 5, 6, 8], "technic": [1, 5, 6], "strictli": [1, 2, 9], "less": [1, 2, 3, 4, 5, 6, 7, 8], "script": 1, "slightli": [1, 6, 7, 8, 9], "clearer": [1, 3, 5], "human": 1, "reader": [1, 8], "maintain": 1, "evolv": 1, "rememb": [1, 2, 3, 4, 5, 6, 7, 8], "zero_mul": [1, 4, 5, 6], "By": [1, 3, 5, 6, 7], "neg_eq_of_add_eq_zero": 1, "eq_neg_of_add_eq_zero": 1, "neg_zero": 1, "neg_neg": 1, "had": [1, 6], "annot": [1, 2, 3, 4, 5, 6], "third": [1, 2, 3, 5, 8], "specifi": [1, 2, 3, 4, 5, 8, 9, 10], "imposs": 1, "default": [1, 2, 3, 4, 5, 6, 7, 9], "subtract": [1, 4, 5], "provabl": [1, 3, 6, 8], "sub_eq_add_neg": 1, "On": [1, 2, 3, 5, 6, 8, 10], "defin": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12], "reflex": [1, 2, 5], "present": [1, 2, 4, 7, 8], "forc": [1, 2, 3, 7], "unfold": [1, 2, 3, 4, 5, 8], "deal": [1, 2, 3, 4, 5, 8], "equat": [1, 2, 3, 4, 5], "interchang": 1, "self_sub": 1, "effort": [1, 4], "one_add_one_eq_two": 1, "norm_num": [1, 2, 4, 5], "strength": 1, "weaker": [1, 2], "notion": [1, 2, 3, 4, 5, 7, 8, 9, 10], "addgroup": [1, 5, 7], "otherwis": [1, 2, 3, 4, 5, 7], "addcommgroup": [1, 7], "commgroup": 1, "g": [1, 2, 3, 5, 6, 7, 8, 9, 10], "mul_left_inv": [1, 5], "\u00b9": [1, 3, 5, 6, 7, 8], "cocki": 1, "helper": 1, "along": [1, 4, 7, 8], "mul_right_inv": [1, 5], "mul_inv_rev": 1, "non": [1, 3, 6, 7, 8, 10], "abel": [1, 7], "noncomm_r": 1, "seem": [1, 2, 4, 6, 8, 9], "odd": [1, 2, 3, 4], "partli": [1, 6, 7], "histor": [1, 7], "conveni": [1, 2, 3, 5, 6, 7, 8], "great": [1, 5], "sort": [1, 3, 4], "inequ": [1, 2, 6, 8], "le": [1, 5, 6], "whenev": [1, 2, 4, 5], "consid": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "le_refl": [1, 2], "le_tran": [1, 2], "detail": [1, 2, 3, 4, 5, 6, 7], "unless": [1, 2, 5], "realli": [1, 2, 3, 4, 6, 7, 8], "insist": [1, 6], "discuss": [1, 2, 4, 5, 6, 7, 8, 9], "implic": [1, 8, 12], "h\u2080": [1, 2, 3, 4, 8], "dot": [1, 7, 8], "option": [1, 2, 4, 5, 6, 8], "within": [1, 2, 8], "visibl": 1, "must": [1, 5, 6, 8], "decreas": [1, 5], "fourth": [1, 2], "mode": [1, 2, 5], "entir": [1, 3, 5, 8, 9], "lt_of_le_of_lt": [1, 2], "lt_of_lt_of_l": 1, "lt_tran": [1, 2], "togeth": [1, 2, 3, 4, 5, 7, 8], "handl": [1, 3, 4, 6, 7], "arithmet": 1, "5": [1, 2, 5, 7, 8, 9], "pass": [1, 5], "exp_le_exp": 1, "mpr": [1, 2, 5, 8], "exp": [1, 3], "applic": [1, 2, 5, 7, 10], "function": [1, 2, 4, 5, 6, 7, 9, 10, 12], "compound": [1, 2, 8], "pars": [1, 3, 7], "exp_lt_exp": 1, "log_le_log": 1, "log": [1, 3, 10], "log_lt_log": 1, "add_le_add": [1, 2], "add_le_add_left": 1, "add_le_add_right": 1, "add_lt_add_of_le_of_lt": 1, "add_lt_add_of_lt_of_l": 1, "add_lt_add_left": 1, "add_lt_add_right": 1, "add_nonneg": [1, 5], "add_po": 1, "add_pos_of_pos_of_nonneg": 1, "exp_po": [1, 3], "bi": [1, 2, 5], "lr": 1, "iff": [1, 3, 7, 8, 9, 10, 12], "connect": [1, 3, 5, 8], "equival": [1, 2, 3, 4, 5, 7, 8, 9, 10], "mp": [1, 2, 3, 4, 8], "forward": [1, 2, 5, 7, 8], "direct": [1, 2, 3, 6, 7, 8, 9], "stand": [1, 2, 5, 6, 7, 8, 9], "modu": 1, "ponen": 1, "respect": [1, 2, 3, 4, 5, 7, 8], "thu": [1, 3, 4, 5, 8], "again": [1, 2, 3, 4, 5, 6, 7, 8], "numer": [1, 4, 5], "constitut": 1, "part": [1, 2, 3, 4, 5, 6, 8, 10], "strategi": [1, 2, 4], "api": 1, "reli": [1, 2, 5, 8], "guess": [1, 2, 3, 4, 5], "cmd": [1, 2], "mac": [1, 2], "a_of_b_of_c": 1, "approxim": 1, "loud": 1, "probabl": [1, 5, 6, 8], "add_l": 1, "choic": [1, 2, 3, 5, 8], "exist": [1, 2, 3, 6, 7, 8], "jump": [1, 4, 5, 8], "nearbi": [1, 4], "sq_nonneg": 1, "delet": [1, 2, 3, 4], "uncom": 1, "previou": [1, 2, 3, 5, 6, 7, 8, 9, 10], "confirm": [1, 2, 3, 4], "finish": [1, 2, 3, 4, 7], "job": 1, "pow_two_nonneg": [1, 2], "tend": [1, 8], "around": [1, 3, 6, 7, 8, 10], "binari": [1, 2, 4, 5, 6], "increas": 1, "worth": [1, 2, 5], "definition": [1, 4, 5, 6, 8], "principl": [1, 2, 3, 4, 6, 9], "favor": [1, 5], "timesav": 1, "clever": 1, "involv": [1, 2, 4, 5, 6, 7, 8], "nice": [1, 2, 4, 6, 7, 8], "idea": [1, 2, 3, 5, 6, 8], "abs_l": [1, 5], "constructor": [1, 2, 3, 4, 5, 6], "split": [1, 2, 3, 4], "conjunct": [1, 6, 12], "congratul": [1, 2, 4], "min": [1, 2, 8, 10], "uniqu": [1, 2, 3, 4, 5, 7, 8], "min_le_left": 1, "min_le_right": 1, "le_min": 1, "max": [1, 2, 6, 8, 10], "pair": [1, 2, 4, 5, 7, 8], "act": [1, 7], "curri": 1, "logician": 1, "haskel": 1, "bind": [1, 3], "tighter": [1, 3], "infix": [1, 6], "le_antisymm": [1, 2], "usag": 1, "inconsist": 1, "outer": 1, "level": [1, 2, 6], "nest": [1, 2], "bother": [1, 3], "repetit": [1, 6], "foreshadow": 1, "univers": [1, 3, 5, 7, 8, 12], "quantifi": [1, 3, 4, 5, 7, 8, 12], "desir": [1, 3, 6, 7, 8], "implicitli": [1, 2], "repeat": [1, 4, 5, 6], "mani": [1, 2, 3, 5, 6, 7, 8, 9, 10, 12], "shorten": [1, 2, 7], "Of": [1, 2, 4, 6, 7, 8, 9, 10], "interest": [1, 2, 3, 5, 6, 8], "vice": [1, 3], "versa": [1, 3], "word": [1, 2, 3, 4, 5, 7, 8], "switch": [1, 6], "transit": [1, 2, 5, 8], "total": 1, "satisfi": [1, 3, 4, 5, 6, 8, 9], "disjunct": [1, 3, 12], "stick": [1, 2, 8, 9], "aux": [1, 2, 4, 8], "valu": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "yield": [1, 2, 3, 4, 5, 8], "made": [1, 2, 3, 5, 8], "manifest": [1, 8], "triangl": [1, 2, 5], "abs_add": [1, 2], "add_sub_cancel_right": 1, "sub_add_cancel": 1, "relat": [1, 2, 3, 5, 6, 7, 8, 9, 10], "divis": [1, 2, 4, 5, 6], "Be": [1, 3], "ordinari": [1, 2, 4, 5, 7, 8], "unicod": [1, 3, 6], "obtain": [1, 2, 4, 5, 8, 9], "dvd": 1, "dvd_tran": 1, "dvd_mul_of_dvd_left": 1, "dvd_mul_left": 1, "expon": 1, "expand": [1, 2, 3, 4, 5, 6], "w": [1, 6], "greatest": [1, 5, 8], "divisor": [1, 2, 4, 5, 7], "gcd": [1, 2, 4], "least": [1, 5, 6, 8], "lcm": 1, "analog": [1, 2, 3, 4, 8], "divid": [1, 2, 4, 5, 7], "gcd_zero_right": 1, "gcd_zero_left": 1, "lcm_zero_right": 1, "lcm_zero_left": 1, "dvd_antisymm": 1, "complain": 1, "ambigu": [1, 5], "_root_": [1, 3, 4], "saw": [1, 5, 6, 7, 8], "govern": [1, 5], "class": [1, 4, 5, 6, 7, 8, 9, 10], "antisymmetr": [1, 2], "\u03b1": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "partialord": [1, 2], "adopt": 1, "letter": [1, 5, 9], "\u03b2": [1, 2, 3, 5, 6, 8, 10], "\u03b3": [1, 2, 5, 8], "greek": [1, 4], "especi": [1, 2, 5, 6, 7, 8], "strict": [1, 2], "somewhat": [1, 3, 8], "lt_irrefl": [1, 2], "lt_iff_le_and_n": 1, "lattic": [1, 5, 6, 7, 8], "inf_le_left": [1, 8], "inf_le_right": 1, "le_inf": 1, "le_sup_left": 1, "le_sup_right": 1, "sup_l": 1, "lower": [1, 2, 4], "bound": [1, 2, 3, 4, 5, 8, 9, 10], "upper": [1, 2], "glb": 1, "lub": 1, "infimum": [1, 6, 7, 8, 10], "supremum": [1, 4, 6, 7], "inf": [1, 6, 8], "sup": [1, 4, 8], "further": [1, 8], "matter": [1, 2], "meet": [1, 2, 3, 5], "keep": [1, 5, 6, 7], "dictionari": 1, "subset": [1, 2, 3, 5, 8, 9], "domain": [1, 2, 3, 4, 5, 7, 8], "boolean": 1, "truth": [1, 4], "fals": [1, 2, 3, 4, 6], "true": [1, 2, 3, 6, 8], "posit": [1, 3, 4, 5, 8, 10], "subspac": [1, 6], "vector": [1, 3, 6, 7, 9], "intersect": [1, 3, 5, 6, 7, 8, 10], "sum": [1, 2, 4, 5, 6, 7, 8], "inclus": [1, 3, 7, 8], "topologi": [1, 5, 6, 9, 12], "union": [1, 3, 4, 5, 6, 7, 9, 10], "inf_comm": [1, 7], "inf_assoc": 1, "sup_comm": 1, "sup_assoc": 1, "absorpt": 1, "law": [1, 7], "absorb1": 1, "absorb2": 1, "found": [1, 5, 7, 9], "inf_sup_self": 1, "sup_inf_self": 1, "distriblattic": 1, "inf_sup_left": 1, "inf_sup_right": 1, "sup_inf_left": 1, "sup_inf_right": 1, "shown": [1, 5, 9, 10], "explicit": [1, 2, 5, 6, 8], "nondistribut": 1, "finit": [1, 3, 4, 5, 7, 8, 9, 10], "impli": [1, 2, 3, 4, 5, 8], "larger": [1, 8], "carrier": [1, 5, 6, 7], "compat": [1, 7, 8], "strictorderedr": 1, "mul_po": [1, 4], "mul_nonneg": 1, "coupl": [1, 2, 6, 8], "metric": [1, 5, 9, 12], "equip": [1, 3, 5, 6, 7, 8, 9, 10], "distanc": [1, 2, 8, 9], "dist": [1, 8], "map": [1, 2, 3, 5, 6, 7, 8], "metricspac": [1, 8, 9], "dist_self": 1, "dist_comm": [1, 8], "dist_triangl": [1, 8], "nonneg": [1, 5], "nonneg_of_mul_nonneg_left": 1, "dist_nonneg": [1, 8], "dealt": 2, "simpl": [2, 4, 5, 6, 9], "absolut": 2, "\u03b5": [2, 8, 9], "though": [2, 3, 4, 5], "treat": [2, 3, 5, 6, 7, 8, 9], "appli": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "my_lemma": 2, "\u03b4": [2, 8], "hb": [2, 8], "subsequ": [2, 4, 8], "lemma": [2, 4, 5, 6, 7, 8, 9, 10, 12], "mention": [2, 3, 5, 6, 7, 8], "my_lemma2": 2, "stage": [2, 5, 6], "my_lemma3": 2, "epo": 2, "ele1": 2, "xlt": 2, "ylt": 2, "essenti": [2, 3, 5, 7, 8], "colon": 2, "off": [2, 3, 4], "my_lemma4": 2, "abs_mul": 2, "mul_le_mul": 2, "abs_nonneg": 2, "mul_lt_mul_right": 2, "extract": [2, 8], "hidden": 2, "expos": [2, 8], "predic": [2, 3, 4, 6, 7, 8, 9], "fnub": 2, "fnlb": 2, "lambda": [2, 5], "hfa": 2, "hgb": 2, "dsimp": [2, 3, 4, 5, 7], "simplif": [2, 3, 4], "contract": 2, "anyhow": 2, "control": 2, "transform": [2, 3], "rest": [2, 3, 5, 7, 8], "routin": 2, "nnf": 2, "nng": 2, "nna": 2, "codomain": [2, 4, 8], "structur": [2, 4, 6, 7, 8, 9, 10, 12], "monoid": [2, 3, 4, 6, 12], "fnub_add": 2, "orderedcanceladdcommmonoid": 2, "high": [2, 7], "monoton": [2, 6, 8], "nondecreas": [2, 4], "placehold": 2, "Or": [2, 3], "backward": [2, 8], "subgoal": 2, "mf": 2, "mg": 2, "aleb": 2, "flag": [2, 3], "squiggli": 2, "marker": 2, "nnc": 2, "bbb": [2, 5], "fneven": 2, "fnodd": 2, "ef": 2, "eg": 2, "og": 2, "rid": 2, "won": [2, 4, 6, 7, 8], "cannot": [2, 3, 4, 5, 6, 7, 8], "contrari": 2, "syntact": 2, "reduct": [2, 3, 5], "erw": 2, "harder": [2, 5], "spot": 2, "manipul": [2, 5, 7, 8], "foundat": [2, 3, 4, 5, 7], "mundan": 2, "assert": [2, 3, 6, 7], "contrast": [2, 3, 5, 6, 8], "zermelo": 2, "fraenkel": 2, "sin": [2, 9], "co": [2, 7], "zf": 2, "defect": [2, 6, 8], "theoret": [2, 3, 8], "motiv": 2, "detect": 2, "meaningless": 2, "independ": [2, 3, 5], "continuum": 2, "meta": [2, 6], "beyond": [2, 6, 9], "ask": [2, 4, 5, 6, 7, 8], "refl": [2, 3, 5, 6, 7], "tran": [2, 4, 5, 6, 7], "setub": 2, "inject": [2, 3, 4, 6, 7, 8], "x_1": [2, 3], "x_2": [2, 3], "x\u2081": [2, 3, 5, 8], "x\u2082": [2, 3, 5], "add": [2, 4, 5, 6, 7, 8, 9], "nonzero": [2, 4, 5, 10], "sourc": [2, 8], "inspir": 2, "add_left_inj": 2, "composit": [2, 3, 5, 6, 7, 8], "injg": 2, "injf": [2, 3], "canon": [2, 3, 4, 5], "exhibit": [2, 8], "anonym": [2, 3, 4, 5, 7], "angl": 2, "certain": [2, 6, 8], "fnhasub": 2, "fnhaslb": 2, "ubf": 2, "ubg": 2, "rcase": [2, 3, 4, 8], "ubfa": 2, "ubgb": 2, "unpack": [2, 3], "main": [2, 6, 8, 9], "els": [2, 3, 4], "turn": [2, 3, 4, 5, 6, 8, 9], "fn_ub_add": 2, "directli": [2, 4, 5, 6, 8], "lbf": 2, "lbg": 2, "recurs": [2, 3, 5, 12], "arbitrarili": [2, 8], "assign": [2, 3, 5, 6, 7], "compon": [2, 3, 5, 8, 10], "destruct": 2, "produc": [2, 7, 9], "tag": [2, 3, 6], "chosen": [2, 5], "intern": [2, 5, 7], "primit": [2, 3], "scientist": 2, "sight": [2, 6], "hurt": 2, "chanc": 2, "yourself": [2, 5], "compani": 2, "old": [2, 5, 6], "chestnut": 2, "product": [2, 4, 5, 6, 7, 8, 10], "magic": [2, 5, 6], "verifi": 2, "sumofsquar": 2, "sumofsquares_mul": 2, "sosx": 2, "sosi": 2, "xeq": [2, 3], "yeq": 2, "insight": 2, "gaussian": [2, 7, 12], "sqrt": [2, 3, 4, 5], "norm": [2, 5, 8, 12], "reflect": 2, "di": [2, 5], "xy": [2, 5], "cryptic": 2, "easiest": [2, 4], "perspicu": 2, "6": [2, 4, 5, 6, 7, 8, 9], "divab": 2, "divbc": 2, "beq": 2, "ceq": 2, "And": [2, 4, 6, 8], "pretti": [2, 6, 7, 8], "Then": [2, 3, 5, 6, 7, 8, 10], "divac": 2, "alpha": [2, 3], "beta": [2, 3], "surject": [2, 3, 7, 8], "mul_div_cancel\u2080": 2, "field_simp": [2, 5], "denomin": [2, 4, 5], "hx": [2, 3, 5, 6, 7, 9], "surjg": 2, "surjf": [2, 3], "contradict": [2, 3, 4], "speak": [2, 5, 7, 8], "irreflex": 2, "asymmetri": 2, "lt_asymm": 2, "eventu": [2, 3, 8], "fnuba": 2, "not_le_of_gt": 2, "not_lt_of_g": [2, 4, 5], "lt_of_not_g": 2, "le_of_not_gt": 2, "snippet": [2, 4, 5, 7], "counterexampl": [2, 9], "monof": 2, "four": [2, 5], "valid": 2, "far": [2, 3, 6, 8], "q": [2, 4, 5, 6, 7, 8], "straightforward": [2, 6], "difficult": [2, 6], "conclud": [2, 9], "nonexist": 2, "contradictori": 2, "classic": [2, 3, 4, 7], "by_contra": [2, 4], "not_not": 2, "front": 2, "push": [2, 4, 7, 8], "inward": 2, "facilit": [2, 8], "push_neg": [2, 3, 4], "restat": [2, 6, 7], "contrapos": [2, 3, 4], "similarli": [2, 3, 4, 5, 7], "yet": [2, 3, 4, 5, 6, 8], "semicolon": [2, 4], "falso": 2, "anyth": [2, 5, 8], "elim": 2, "strang": [2, 4, 7], "fairli": 2, "reach": [2, 6], "37": 2, "exfalso": 2, "absurd": [2, 4], "slick": 2, "drop": 2, "manner": [2, 5], "analogi": [2, 5, 8, 9], "techniqu": [2, 8], "variou": [2, 3, 5, 6, 10], "xltz": 2, "zlty": 2, "10": [2, 9], "7": [2, 4, 5, 7], "behav": [2, 3, 6, 8], "roughli": [2, 3, 4], "friend": [2, 5], "were": [2, 4, 5, 8], "inscrut": [2, 3], "gadget": [2, 8], "auxiliari": [2, 8], "pow_eq_zero": [2, 4], "doubl": [2, 3], "symmetr": [2, 3, 7], "abs_lt": 2, "dvd_gcd_iff": 2, "8": [2, 4, 7, 8], "15": 2, "not_monotone_iff": 2, "aris": 2, "preorder": [2, 6, 8], "pre": 2, "lt_iff_le_not_l": 2, "repeatedli": [2, 8], "instanti": [2, 5, 6, 8], "inl": [2, 3], "inr": [2, 3], "branch": [2, 3, 6], "le_or_gt": 2, "abs_of_nonneg": [2, 5], "abs_of_neg": 2, "against": 2, "immedi": [2, 3, 5, 6], "attract": 2, "closer": [2, 8], "advantag": [2, 3, 4, 5, 7, 9], "myab": 2, "le_abs_self": 2, "neg_le_abs_self": 2, "enjoi": [2, 3, 4, 8], "pun": 2, "lt_ab": 2, "genuin": 2, "vertic": [2, 5], "lt_trichotomi": 2, "xgt": 2, "dvd_mul_right": [2, 4], "eq_zero_or_eq_zero_of_mul_eq_zero": 2, "zero": [2, 3, 4, 5, 6, 7, 8, 9, 10], "nontrivi": [2, 3, 4, 5, 8, 9], "integr": [2, 9, 12], "isdomain": [2, 7], "whether": [2, 3, 4, 6, 8], "em": [2, 3], "exclud": [2, 4], "by_cas": [2, 3, 4], "dispos": 2, "s_0": [2, 3], "s_1": 2, "s_2": 2, "ldot": [2, 3, 4], "varepsilon": [2, 8], "s_n": [2, 3], "render": [2, 4], "convergesto": 2, "ext": [2, 3, 4, 5, 6, 7], "enabl": [2, 3, 4, 5], "actual": [2, 3, 4, 6, 7, 8], "congr": 2, "reconcil": 2, "peel": 2, "convert": [2, 4, 7], "quit": [2, 6, 8], "zero_lt_on": [2, 4], "fill": [2, 3, 4, 5], "convergesto_const": 2, "\u03b5po": [2, 8], "nge": 2, "abs_zero": 2, "save": 2, "troubl": [2, 3, 5], "pen": [2, 7], "paper": [2, 3, 5, 7, 8, 10], "nt": 2, "maximum": [2, 4, 8], "implement": [2, 5, 6, 7, 9], "convergesto_add": 2, "ct": 2, "clean": [2, 8], "\u03b52po": 2, "ht": 2, "le_of_max_le_left": 2, "le_of_max_le_right": 2, "tricki": [2, 3, 4, 6, 7], "convergesto_mul_const": 2, "acpo": 2, "abs_po": 2, "exists_abs_le_of_convergesto": 2, "strong": [2, 4], "n\u2080": 2, "bpo": [2, 8], "pos\u2080": 2, "div_po": 2, "n\u2081": 2, "convergesto_mul": 2, "sketch": [2, 3, 4, 8], "limit": [2, 6, 8], "bold": 2, "scratch": 2, "convergesto_uniqu": 2, "sa": 2, "sb": 2, "abn": 2, "na": 2, "hna": 2, "nb": 2, "hnb": 2, "absa": 2, "absb": 2, "observ": [2, 4, 8], "everywher": [2, 3, 6, 8, 10], "linearord": 2, "9": [2, 8], "vastli": 2, "awai": [2, 5], "vocabulari": 3, "uniform": [3, 8, 9], "conceptu": [3, 7], "overload": 3, "verbos": 3, "system": [3, 4, 5, 6], "wrong": 3, "ss": 3, "sub": [3, 8, 10, 12], "cap": 3, "un": 3, "cup": 3, "univ": [3, 8, 9, 10], "empti": [3, 4, 5, 7, 8, 10], "member": [3, 8], "membership": [3, 4, 6, 7], "mem": 3, "notin": 3, "ident": [3, 4, 5, 6, 7, 8, 12], "databas": [3, 4, 6, 8], "unlik": [3, 4], "existenti": [3, 7, 12], "subset_def": 3, "inter_def": 3, "mem_setof": 3, "xu": 3, "mem_inter_iff": 3, "xsu": 3, "phenomenon": 3, "union_def": 3, "mem_union": [3, 4], "xtu": 3, "xt": 3, "unnecessari": [3, 7], "correctli": 3, "special": [3, 4, 5, 6, 7, 8, 10], "rewritten": 3, "diff_eq": 3, "mem_diff": 3, "xstu": 3, "xnt": 3, "xnu": 3, "extension": [3, 5], "unsurprisingli": 3, "harm": 3, "and_comm": 3, "antisymm": 3, "hood": [3, 5], "builder": 3, "trivial": [3, 4, 7, 8], "eq_two_or_odd": 3, "even_iff": 3, "confus": [3, 4, 6, 7, 8], "fortun": 3, "agre": 3, "prime_iff": 3, "symm": [3, 4, 5, 6, 7, 8, 9], "rwa": [3, 4, 5], "restrict": [3, 4, 7, 8], "signific": 3, "ball": [3, 9], "bex": 3, "bex_def": 3, "prime_x": 3, "slight": 3, "ssubt": 3, "index": [3, 6, 7, 8], "model": [3, 8], "sequenc": [3, 6, 8, 9, 12], "a_0": 3, "a_1": 3, "a_2": 3, "mem_iunion": 3, "xai": 3, "mem_iint": 3, "mem_iunion\u2082": 3, "mem_iinter\u2082": 3, "exists_prime_and_dvd": 3, "eq_univ": 3, "eq_univ_of_foral": 3, "exists_infinite_prim": 3, "\u2080": 3, "sunion": 3, "sinter": 3, "relationship": [3, 4], "sunion_eq_biunion": 3, "sinter_eq_biint": 3, "preimag": [3, 7, 8], "imag": [3, 4, 6, 7, 8], "tripl": 3, "mem_image_of_mem": 3, "galoi": [3, 5, 8], "image_subset_iff": 3, "represent": [3, 4, 5], "asid": 3, "raini": 3, "dai": 3, "behavior": [3, 6, 8], "nonempti": [3, 7, 8], "condit": [3, 4, 6, 7, 8, 9], "injon": [3, 10], "theme": 3, "rel": [3, 5], "relativ": 3, "xpo": 3, "ypo": 3, "exp_log": 3, "ingredi": [3, 5, 8, 9], "inhabit": [3, 5, 8], "appeal": [3, 6], "choose_spec": 3, "noncomput": [3, 5, 7], "inverse_spec": 3, "dif_po": 3, "dif_neg": 3, "fulli": [3, 7, 8], "alon": 3, "leftinvers": 3, "rightinvers": 3, "hack": 3, "half": [3, 7], "dozen": 3, "condens": 3, "cantor": 3, "famou": [3, 7], "j": [3, 7], "intuit": [3, 8], "cardin": [3, 7], "biject": [3, 5, 7], "nineteenth": 3, "centuri": 3, "infinit": [3, 8, 12], "dedekind": 3, "quickli": [3, 7, 10], "behind": [3, 7], "problem": [3, 4, 5, 6, 8], "shade": 3, "region": 3, "diagram": 3, "circ": [3, 5], "scale": 3, "inner": 3, "smaller": [3, 4, 8], "concentr": 3, "unshad": 3, "compos": [3, 5, 7, 8], "disjoint": [3, 7, 10], "sound": [3, 5, 6], "plausibl": 3, "delic": 3, "improv": [3, 4], "confid": 3, "better": [3, 4, 5, 6, 8], "invfun": [3, 5], "leftinverse_invfun": 3, "invfun_eq": 3, "sbaux": 3, "sbset": 3, "s_": 3, "bigcup_": 3, "mathbb": [3, 4, 5, 7], "sbfun": 3, "complement": [3, 8, 10], "outermost": 3, "setminu": 3, "sb_right_inv": 3, "goe": [3, 4, 5, 6, 8], "neither": [3, 5, 6], "nor": [3, 5], "sb_inject": 3, "hf": [3, 7, 8, 9, 10], "a_def": 3, "h_def": 3, "hxeq": 3, "xa": 3, "wlog": 3, "x\u2081a": 3, "resolve_left": 3, "x\u2082a": 3, "not_imp_self": 3, "x\u2082na": 3, "if_po": 3, "if_neg": 3, "x\u2082eq": 3, "hn": [3, 4, 8, 9], "sb_fun": 3, "bring": [3, 4, 8], "tradeoff": 3, "encapsul": [3, 5, 9], "symmetri": [3, 6], "dwell": 3, "succ": [3, 4, 6], "sb_surject": 3, "hg": [3, 8, 9, 10], "gya": 3, "xmem": 3, "sweet": 3, "schroeder_bernstein": 3, "substant": 4, "ancient": 4, "fraction": 4, "lowest": 4, "2c": 4, "4c": 4, "factor": [4, 5, 7], "coprim": [4, 7], "smart": 4, "12": 4, "encount": [4, 6], "algebra": [4, 6, 8, 9, 10, 12], "prime_def_lt": 4, "eq_one_or_self_of_dvd": 4, "prime_p": 4, "17": 4, "commonli": [4, 5], "prime_two": 4, "prime_thre": 4, "broader": [4, 9], "irreduc": [4, 5], "coincid": [4, 5, 8], "rise": [4, 6, 7], "dvd_mul": 4, "even_of_even_sqr": 4, "dvd_of_dvd_pow": 4, "proce": [4, 6], "profici": 4, "prefix": [4, 6, 7], "search": [4, 5, 6], "engin": 4, "hesit": 4, "mul_right_inj": 4, "heart": [4, 7], "irration": 4, "dvd_gcd": 4, "coprime_mn": 4, "sqr_eq": 4, "meq": 4, "dvd_iff_exists_eq_mul_left": 4, "two_l": 4, "le_of_dvd": 4, "approach": [4, 5, 6, 8], "quick": [4, 7, 9], "ne": [4, 5], "occur": 4, "suffici": [4, 8], "permut": [4, 7], "prime_of_mem_factor": 4, "prod_factor": 4, "factors_uniqu": 4, "talk": [4, 7, 8, 9], "factorization_mul": 4, "mnez": 4, "nnez": 4, "factorization_pow": 4, "black": [4, 6], "box": 4, "simpa": [4, 7, 9], "nnz": 4, "nsqr_nez": 4, "eq1": 4, "eq2": 4, "add_mul_mod_self_left": 4, "mul_mod_right": 4, "count_factors_mul_of_po": 4, "successor": 4, "succ_ne_zero": 4, "npow_nz": 4, "dvd_sub": 4, "pow_eq": 4, "npowz": 4, "add_sub_cancel": 4, "understood": [4, 8], "quotient": [4, 5, 6, 8], "pictur": [4, 5, 7], "mediat": 4, "headach": 4, "contend": 4, "issu": [4, 5, 6, 8], "th": 4, "topic": [4, 5, 6, 7], "enat": 4, "infin": [4, 8, 10], "appreci": 4, "role": [4, 5, 8], "datatyp": 4, "freeli": 4, "translat": [4, 6, 7, 8], "mathematician": [4, 8], "inj": 4, "factori": 4, "fac": 4, "ih": 4, "fac_po": 4, "succ_po": 4, "dvd_fac": 4, "ipo": 4, "il": 4, "of_le_succ": 4, "dvd_mul_of_dvd_right": 4, "crude": 4, "remaind": [4, 5, 7], "pow_succ": 4, "pow_two_le_fac": 4, "finset": [4, 5, 7, 8], "bigoper": [4, 5, 7], "prod": [4, 7, 8, 10], "sum_range_zero": 4, "sum_range_succ": 4, "summat": 4, "prod_range_zero": 4, "prod_range_succ": 4, "deserv": 4, "danger": [4, 5], "ordinarili": [4, 5], "loop": 4, "indefinit": 4, "fix": [4, 6, 7, 8], "mul_left_comm": 4, "placement": 4, "re": [4, 5], "handi": 4, "sum_id": 4, "div_eq_of_eq_mul_right": 4, "sum_sqr": 4, "mynat": 4, "thumb": 4, "decid": [4, 7, 8], "preced": [4, 7], "truncat": 4, "exponenti": 4, "cut": 4, "predecessor": 4, "pred": 4, "mul": [4, 5, 6, 8], "succ_add": 4, "succ_mul": 4, "explor": [4, 8], "standard": [4, 5, 6, 8], "formul": [4, 7, 8], "quirki": 4, "among": 4, "annoi": [4, 6], "h0": 4, "succ_le_succ": 4, "zero_l": [4, 5], "interval_cas": 4, "interv": [4, 8, 10], "decis": [4, 7], "procedur": [4, 6], "revert": [4, 5], "minfac": 4, "smallest": [4, 6, 8], "strong_induction_on": 4, "subsum": 4, "exists_prime_factor": 4, "np": 4, "mltn": 4, "mdvdn": 4, "mne1": 4, "mz": 4, "zero_dvd_iff": 4, "mgt2": 4, "pp": 4, "pdvd": 4, "factorial_po": 4, "dvd_factori": 4, "primes_infinit": 4, "refin": [4, 9], "ple": 4, "p_1": 4, "p_n": 4, "prod_": 4, "p_i": [4, 8], "computation": 4, "test": 4, "decidableeq": 4, "abandon": 4, "ourselv": [4, 6], "subset_iff": 4, "mem_int": 4, "mem_sdiff": 4, "tauto": 4, "dispens": 4, "tautologi": 4, "dvd_prod_of_mem": 4, "eq_of_dvd_of_prim": 4, "prime_q": 4, "preserv": [4, 6, 8], "induction_on": 4, "singleton": 4, "prod_empti": 4, "prod_insert": 4, "mem_of_dvd_prod_prim": 4, "mem_insert": 4, "wrote": 4, "filter": [4, 9, 10, 12], "mem_filt": 4, "aim": [4, 7], "prod_po": 4, "_def": 4, "mem_": 4, "id": [4, 6, 8, 9], "bounded_of_ex_finset": 4, "qk": 4, "lt_succ_of_l": 4, "le_sup": 4, "ex_finset_of_bound": 4, "decidablepr": 4, "lt_succ_iff": 4, "congruent": 4, "p_k": 4, "loss": 4, "27": 4, "mod_4_eq_3_or_mod_4_eq_3": 4, "mul_mod": 4, "mod_lt": 4, "mul_mod_mod": 4, "two_le_of_mod_4_eq_3": 4, "neq": 4, "div_dvd_of_dvd": 4, "div_lt_self": 4, "exists_prime_factor_mod_4_eq_3": 4, "mge2": 4, "mul_div_cancel": 4, "home": [4, 5], "stretch": [4, 5], "remov": [4, 8], "eras": 4, "mem_eras": 4, "readi": [4, 6, 7, 8, 9], "dvd_add_iff_left": 4, "primes_mod_4_eq_3_infinit": 4, "p4": 4, "pltn": 4, "p4eq": 4, "pne3": 4, "seriou": [4, 6, 8], "feat": 4, "modern": [5, 7], "subject": 5, "mysteri": [5, 6], "consult": 5, "ann": 5, "baanen": 5, "abus": 5, "paramet": [5, 6], "broadest": 5, "possibli": 5, "constraint": [5, 8], "bundl": [5, 6, 7, 8, 9], "tupl": 5, "hy": [5, 6, 7], "hz": [5, 6], "mypoint1": 5, "mypoint2": 5, "mypoint3": 5, "mk": [5, 6, 7, 8], "former": 5, "latter": [5, 7, 8], "quot": [5, 8], "protect": 5, "add_x": 5, "addalt": 5, "eta": 5, "messier": 5, "y\u2081": 5, "z\u2081": 5, "y\u2082": 5, "z\u2082": 5, "addalt_x": 5, "addalt_comm": 5, "apart": [5, 6], "effici": [5, 7, 8], "scalar": [5, 6, 7, 9], "smul": [5, 6, 7], "smul_distrib": 5, "road": 5, "link": [5, 6], "belong": [5, 6, 8], "simplex": 5, "convinc": 5, "equilater": 5, "interior": [5, 9], "standardtwosimplex": 5, "x_nonneg": 5, "y_nonneg": 5, "z_nonneg": 5, "sum_eq": 5, "swap": 5, "swapxi": 5, "interestingli": [5, 7, 9], "midpoint": 5, "div_nonneg": 5, "weight": 5, "averag": 5, "weightedaverag": 5, "lambda_nonneg": 5, "lambda_l": 5, "fin": [5, 7, 10], "standardsimplex": 5, "sum_eq_on": 5, "div_eq_mul_inv": 5, "sum_mul": 5, "sum_add_distrib": 5, "mul_sum": 5, "islinear": 5, "is_addit": 5, "preserves_mul": 5, "linf": 5, "subtyp": [5, 6, 7, 8], "preal": 5, "val": 5, "sigma": [5, 10], "wherebi": [5, 8], "stdsimplex": 5, "\u03c3": [5, 7], "fst": [5, 8], "snd": [5, 8], "custom": 5, "robust": [5, 6], "interfac": 5, "redefin": [5, 6], "accessor": 5, "weav": 5, "rich": [5, 6], "interconnect": 5, "hierarchi": [5, 7, 12], "clarifi": 5, "cdot": 5, "topolog": [5, 6, 9, 12], "mathcal": [5, 9], "proxi": 5, "bipartit": 5, "graph": 5, "categori": [5, 8, 9], "morphism": [5, 9, 12], "basi": [5, 8], "discret": 5, "inherit": [5, 6, 7], "polynomi": 5, "coeffici": [5, 7], "dual": [5, 8], "accommod": [5, 7], "almost": [5, 6, 7, 8, 10], "marriag": 5, "heaven": 5, "group\u2081": [5, 6], "inv": [5, 6], "struc": 5, "counterpart": 5, "assur": 5, "groupcat": 5, "group\u2081cat": 5, "str": 5, "capit": 5, "roman": 5, "equiv": [5, 7], "tofun": [5, 6], "right_inv": 5, "left_inv": 5, "creativ": 5, "evid": 5, "coercion": [5, 6, 7, 8, 9], "omit": 5, "perm": [5, 7], "under": [5, 6, 7, 8], "orient": 5, "permgroup": 5, "trans_assoc": 5, "trans_refl": 5, "refl_tran": 5, "self_trans_symm": [5, 7], "grouptheori": 5, "g_1": 5, "g_2": 5, "g_3": 5, "tightli": 5, "isomorph": [5, 7, 9], "Its": [5, 6], "neg": [5, 6, 8, 10], "reproduc": 5, "accompani": 5, "addgroup\u2081": 5, "scheme": 5, "addgrouppoint": 5, "arrang": 5, "mul_inv_cancel_right": 5, "achiev": [5, 6, 8], "silent": [5, 6], "regist": [5, 6, 7], "grp": 5, "contextu": 5, "cue": 5, "synthes": [5, 6], "whole": 5, "_inst_1": 5, "candid": 5, "group\u2082": 5, "mysquar": 5, "my_squar": 5, "remark": [5, 6], "headi": 5, "store": 5, "hasmulgroup\u2082": 5, "hasonegroup\u2082": 5, "hasinvgroup\u2082": 5, "suppli": 5, "accord": 5, "capabl": 5, "chain": 5, "recent": 5, "prioriti": 5, "bad": [5, 6, 8], "artifici": 5, "addgroup\u2082": 5, "subtl": [5, 7, 8], "configur": 5, "invisibli": [5, 6], "wise": 5, "euclidean": 5, "terminologi": 5, "mid": 5, "imaginari": 5, "gaussint": 5, "im": 5, "pointwis": [5, 8, 9], "root": [5, 6, 7, 12], "ac": 5, "bci": 5, "adi": 5, "bd": 5, "bc": 5, "zero_def": 5, "one_def": 5, "add_def": 5, "neg_def": 5, "mul_def": 5, "zero_r": 5, "zero_im": 5, "one_r": 5, "one_im": 5, "add_r": 5, "add_im": 5, "neg_r": 5, "neg_im": 5, "mul_r": 5, "mul_im": 5, "surprisingli": [5, 6], "concept": [5, 7, 8, 9], "light": 5, "bulb": 5, "skeleton": [5, 8], "scari": 5, "nsmul": [5, 6], "zsmul": [5, 6], "instcommr": 5, "nsmulrec": 5, "zsmulrec": 5, "left_distrib": [5, 6], "right_distrib": [5, 6], "ext_iff": 5, "bq": 5, "archetyp": 5, "eq": 5, "int": [5, 6, 7], "ediv_add_emod": 5, "emod_nonneg": 5, "emod_lt": 5, "unit": [5, 6, 8], "algorithm": 5, "conjug": [5, 7], "frac": 5, "nearest": 5, "vi": 5, "multipli": 5, "emb": 5, "forth": 5, "quadrat": 5, "gaussianint": 5, "stai": 5, "face": [5, 6, 8], "machineri": [5, 6, 8], "adapt": 5, "invest": 5, "pragmat": 5, "seek": 5, "heather": 5, "macbeth": 5, "eleg": 5, "div": 5, "mod": 5, "_add_mod": 5, "abs_mod": 5, "_le": 5, "emod_lt_of_po": 5, "zero_lt_two": 5, "fixm": 5, "_eq": 5, "sq_add_sq_eq_zero": 5, "linearorderedr": 5, "norm_nonneg": [5, 9], "norm_eq_zero": [5, 9], "norm_po": 5, "norm_mul": [5, 9], "conj": 5, "conj_r": 5, "conj_im": 5, "norm_conj": 5, "bespok": 5, "quad": 5, "record": [5, 6], "div_def": 5, "mod_def": 5, "messi": 5, "nicer": [5, 7, 8], "norm_mod_lt": 5, "norm_y_po": 5, "sq_ab": 5, "gcongr": 5, "ediv_mul_l": 5, "le_of_mul_le_mul_right": 5, "ediv_lt_of_lt_mul": 5, "natab": 5, "coe_natabs_norm": 5, "natabs_of_nonneg": 5, "natabs_norm_mod_lt": 5, "ofnat_lt": 5, "coe_natab": 5, "not_norm_mul_left_lt_norm": 5, "natabs_mul": 5, "le_mul_of_one_le_right": 5, "ofnat_l": 5, "add_one_le_of_lt": 5, "euclideandomain": 5, "quotient_mul_add_remainder_eq": 5, "quotient_zero": 5, "r_wellfound": 5, "remainder_lt": 5, "mul_left_not_lt": 5, "payoff": 5, "principalidealr": 5, "irreducible_iff_prim": 5, "studi": [6, 8], "prematur": 6, "technologi": 6, "simpler": 6, "ring\u2081": 6, "gradual": [6, 8], "bottom": [6, 7, 8], "endow": [6, 7], "one\u2081": 6, "heavier": 6, "inferr": 6, "resolut": 6, "ie": [6, 8], "attribut": [6, 7], "ensur": [6, 7, 8], "self": 6, "one\u2082": 6, "usabl": 6, "silli": 6, "affect": 6, "importantli": [6, 7], "habit": 6, "ascript": [6, 7], "messag": 6, "typeclass": 6, "stuck": 6, "metavari": 6, "263": 6, "auto": 6, "sever": [6, 8, 10], "unknown": 6, "collis": 6, "builtin": 6, "\ud835\udfd9": 6, "inherit_doc": 6, "diamond": 6, "dia\u2081": 6, "dia": 6, "infixl": 6, "70": 6, "semigroup": 6, "dia_assoc": 6, "semigroup\u2081": 6, "todia\u2081": 6, "previous": 6, "semigroup\u2082": 6, "hurdl": 6, "neutral": [6, 7], "diaoneclass\u2081": 6, "one_dia": 6, "dia_on": 6, "trace": 6, "ters": 6, "attempt": 6, "succe": 6, "success": 6, "set_opt": 6, "synthinst": 6, "monoid\u2081": 6, "hide": [6, 7, 8], "subtleti": [6, 7], "fear": 6, "unrel": 6, "tosemigroup\u2081": 6, "todiaoneclass\u2081": 6, "monoid\u2082": 6, "toone\u2081": 6, "overlap": [6, 7], "tear": 6, "signatur": 6, "restor": 6, "optim": [6, 10], "reusabl": 6, "inv\u2081": 6, "postfix": 6, "inv_dia": 6, "weak": 6, "preliminari": 6, "left_inv_eq_right_inv\u2081": 6, "hba": 6, "hac": 6, "export": 6, "inv_eq_of_dia": 6, "dia_inv": 6, "naiv": [6, 8], "duplic": 6, "to_addit": 6, "semi": [6, 7], "left_inv_eq_right_inv": 6, "left_neg_eq_right_neg": 6, "whatsnew": 6, "addsemigroup\u2083": 6, "add_assoc\u2083": 6, "semigroup\u2083": 6, "mul_assoc\u2083": 6, "addmonoid\u2083": 6, "addzeroclass": 6, "monoid\u2083": 6, "muloneclass": 6, "tomuloneclass": 6, "addcommsemigroup\u2083": 6, "commsemigroup\u2083": 6, "addcommmonoid\u2083": 6, "commmonoid\u2083": 6, "addgroup\u2083": 6, "neg_add": 6, "group\u2083": 6, "inv_mul": 6, "inv_eq_of_mul": 6, "propag": 6, "attr": 6, "mul_inv": [6, 7], "mul_left_cancel\u2083": 6, "mul_right_cancel\u2083": 6, "addcommgroup\u2083": 6, "commgroup\u2083": 6, "demonstr": [6, 8], "semir": [6, 7], "opposit": [6, 8], "gain": 6, "besid": 6, "parent": 6, "ring\u2083": 6, "mulzeroclass": 6, "toaddgroup\u2083": 6, "mayb": 6, "claus": 6, "le\u2081": 6, "50": 6, "\u2081": 6, "preorder\u2081": 6, "partialorder\u2081": 6, "orderedcommmonoid\u2081": 6, "modul": [6, 7], "pretend": 6, "smul\u2083": 6, "infixr": 6, "73": 6, "module\u2081": 6, "zero_smul": 6, "one_smul": [6, 7], "mul_smul": [6, 7], "add_smul": [6, 7], "smul_add": 6, "surpris": 6, "toaddcommgroup\u2083": 6, "inst": 6, "module\u2083": 6, "hunt": 6, "unspecifi": 6, "embark": 6, "quest": 6, "huge": 6, "trap": 6, "refus": [6, 8], "tosmul\u2083": 6, "inst_1": 6, "safe": [6, 7], "selfmodul": 6, "invert": [6, 7], "nsmul\u2081": 6, "zsmul\u2081": 6, "ofnat": 6, "negsucc": 6, "intermedi": [6, 8], "abgrpmodul": 6, "failur": 6, "synth": 6, "indirect": 6, "path": 6, "thank": 6, "offend": 6, "poor": 6, "forget": 6, "http": 6, "inria": 6, "hal": 6, "scienc": 6, "02463336": 6, "modifi": 6, "addmonoid\u2084": 6, "nsmul_zero": 6, "nsmul_succ": 6, "mysmul": 6, "stori": 6, "incorpor": 6, "lt\u2081": 6, "comparison": 6, "ismonoidhom\u2081": 6, "unpleas": [6, 8], "chose": 6, "ismonoidhom\u2082": 6, "map_on": [6, 7], "map_mul": [6, 7], "tempt": 6, "higher": 6, "unif": 6, "psycholog": 6, "rare": 6, "adject": 6, "bare": 6, "noun": 6, "argu": 6, "continuous_id": [6, 8], "primari": 6, "monoidhom\u2081": 6, "coefun": 6, "coerc": [6, 7], "coe": 6, "addmonoidhom\u2081": 6, "addmonoid": [6, 7], "map_zero": [6, 7], "map_add": [6, 7, 9], "ringhom\u2081": 6, "minor": [6, 9], "tomonoidhom\u2081": 6, "juggl": 6, "monoidhomclass\u2081": 6, "badinst": 6, "wouldn": 6, "priori": 6, "boil": 6, "hopelessli": 6, "checksynthord": 6, "random": 6, "deduc": [6, 7, 8], "outparam": 6, "trigger": 6, "retri": 6, "monoidhomclass\u2082": 6, "promis": [6, 8], "map_inv_of_inv": 6, "got": 6, "presenc": 6, "layer": [6, 8], "dfunlik": 6, "dfun": 6, "monoidhomclass": 6, "monoidhomclass\u2083": 6, "coe_inject": 6, "stop": 6, "ringhomclass\u2083": 6, "ringhom": [6, 7], "algebrahom": 6, "ve": [6, 8], "primarili": [6, 7, 8], "unbundl": 6, "orderpreshom": 6, "le_of_l": 6, "orderpresmonoidhom": 6, "orderpreshomclass": 6, "subgroup": 6, "subr": 6, "reus": 6, "led": 6, "descend": [6, 7], "break": 6, "barrier": 6, "setlik": 6, "wrap": [6, 8], "submonoid\u2081": 6, "submonoid": [6, 7], "mul_mem": [6, 7], "one_mem": [6, 7], "tackl": 6, "setco": 6, "submonoid\u2081monoid": 6, "destructur": 6, "binder": 6, "submonoidclass\u2081": 6, "subgroup\u2081": 6, "subgroupclass\u2081": 6, "subobject": 6, "s\u2081": 6, "s\u2082": 6, "shame": 6, "across": 6, "weird": [6, 8], "distract": 6, "emphas": [6, 7], "anecdot": 6, "devic": 6, "hasquoti": 6, "bewar": 6, "regular": [6, 8], "ascii": 6, "setoid": [6, 7], "commmonoid": 6, "iseqv": 6, "hw": 6, "quotientmonoid": 6, "map\u2082": 6, "treatment": 7, "constantli": 7, "review": [7, 8], "contort": 7, "verbatim": 7, "safer": 7, "friendli": 7, "proceed": 7, "mostli": 7, "comm": 7, "addcommmonoid": 7, "monoidhom": 7, "addmonoidhom": 7, "packag": 7, "unfortun": 7, "consequ": 7, "comp": [7, 8], "mul_inv_self": 7, "map_inv": 7, "enforc": 7, "sent": [7, 8], "mulequiv": 7, "addequiv": 7, "ulequiv": 7, "projector": 7, "ofbiject": 7, "closur": [7, 8], "inv_mem": 7, "issubgroup": 7, "addsubgroup": 7, "add_mem": 7, "zero_mem": 7, "neg_mem": 7, "inferinst": 7, "benefit": 7, "amount": 7, "sup_eq_closur": 7, "mem_bot": 7, "ambient": 7, "ty": 7, "comap": [7, 8], "pushforward": [7, 8], "mem_map": 7, "mem_comap": 7, "kernel": 7, "ker": 7, "mem_ker": 7, "mem_rang": 7, "\u03c6": [7, 8], "hst": 7, "\u03c8": 7, "homomorph": 7, "lagrang": 7, "sylow": 7, "corner": 7, "nonconstruct": 7, "anywai": 7, "fintyp": [7, 8], "card": 7, "index_mul_card": 7, "hdvd": 7, "exists_subgroup_card_pow_prim": 7, "corollari": 7, "eq_bot_iff_card": 7, "eq_bot_iff_foral": 7, "card_eq_one_iff": 7, "card_dvd_of_l": 7, "inf_bot_of_coprim": 7, "mathfrak": 7, "_n": 7, "cycl": 7, "iscycl": 7, "closure_iscycl": 7, "cyclic": 7, "freegroup": 7, "induct": [7, 8, 12], "myelement": 7, "gave": [7, 8], "embodi": 7, "lift": 7, "send": [7, 10], "mymorph": 7, "cube": 7, "presentedgroup": 7, "normal": 7, "somehow": 7, "creation": 7, "mygroup": 7, "feed": 7, "togroup": 7, "mymap": 7, "compat_mymap": 7, "mynewmorph": 7, "mulact": 7, "downsid": 7, "setup": 7, "synonym": 7, "groupact": 7, "addact": 7, "\u1d65": 7, "affin": 7, "add_vadd": 7, "topermhom": 7, "caylei": 7, "embed": 7, "cayleyisomorph": 7, "subgroupofmulact": 7, "partit": 7, "orbit": 7, "orbitrel": 7, "global": [7, 8], "\u03c9": 7, "selfequivsigmaorbit": 7, "card_congr": 7, "card_sigma": 7, "furthermor": 7, "stabil": 7, "orbitequivquotientstabil": 7, "groupequivquotientprodsubgroup": 7, "conjugate_on": 7, "quotientgroup": 7, "clue": 7, "onto": 7, "quotientkerequivrang": 7, "pullback": [7, 8], "quotientmulequivofeq": 7, "seri": 7, "card_po": 7, "index_eq_card": 7, "eq_of_mul_eq_mul_right": 7, "bug": 7, "instinhabit": 7, "aux_card_eq": 7, "bijective_iff_injective_and_card": 7, "ker_eq_bot_iff": 7, "ker_restrict": 7, "iso\u2081": 7, "g\u2080": 7, "g\u2081": 7, "g\u2082": 7, "iso\u2082": 7, "prodcongr": 7, "finaliso": 7, "exot": [7, 8], "commsemir": 7, "doubli": 7, "mislead": 7, "tradition": 7, "taught": 7, "promin": 7, "isunit": 7, "m\u02e3": 7, "mainli": 7, "mkofmuleqon": 7, "\u2124\u02e3": 7, "units_eq_one_or": 7, "r\u02e3": 7, "s\u02e3": 7, "ringequiv": 7, "toward": 7, "geometri": 7, "submodul": 7, "eq_zero_iff_mem": 7, "mem_sup": 7, "mul_le_left": 7, "mul_le_right": 7, "mul_le_inf": 7, "quotientmap": 7, "quotequivofeq": 7, "chines": 7, "\u03c0": [7, 8, 9], "font": 7, "\u03b9": [7, 8, 9, 10], "iscoprim": 7, "quotientinfringequivpiquoti": 7, "zmod": 7, "pinot": 7, "prodequivpi": 7, "pi": [7, 8], "ker_pi_quotient_mk": 7, "chinesemap": 7, "proven": 7, "chinesemap_mk": 7, "famili": [7, 8, 9], "injective_lift_iff": 7, "chinesemap_inj": 7, "maxim": 7, "iscoprime_iff_add": 7, "iscoprime_iff_exist": 7, "iscoprime_iff_sup_eq": 7, "iscoprime_iff_codisjoint": 7, "opportun": [7, 8], "mem_insert_of_mem": 7, "mem_insert_self": 7, "iscoprime_inf": 7, "simp_rw": 7, "iinf_insert": 7, "one_eq_top": 7, "eq_top_iff": 7, "chinesemap_surj": 7, "hi": 7, "mk_surject": 7, "\u1d9c": 7, "he": 7, "chineseiso": 7, "encod": [7, 10], "algebramap": 7, "alghom": 7, "\u2090": 7, "endomorph": 7, "univari": 7, "indetermin": 7, "crucial": [7, 8], "bodi": 7, "map_pow": 7, "coeff": 7, "degre": 7, "natdegre": 7, "withbot": 7, "absorb": 7, "formula": [7, 10], "nozerodivisor": 7, "degree_mul": 7, "hp": [7, 8], "hq": [7, 8], "natdegree_mul": 7, "natdegree_comp": 7, "evalu": 7, "isroot": 7, "vanish": 7, "count": 7, "pain": 7, "multiset": 7, "roots_x_sub_c": 7, "aeval": 7, "aroot": 7, "caveat": 7, "aroots_def": 7, "c_neg": 7, "linear_combin": 7, "c_mul": 7, "p_ne_zero": 7, "apply_fun": 7, "roots_mul": 7, "alembert": 7, "gauss": 7, "isalgclos": 7, "eval\u2082": 7, "ofreal": 7, "multivari": 7, "briefli": 7, "mvpolynomi": 7, "circl": 7, "circleequ": 7, "coordin": 7, "calculu": [8, 10, 12], "quantiti": 8, "begun": 8, "paradox": 8, "x\u2080": [8, 9], "convention": 8, "eight": 8, "varieti": 8, "wish": 8, "64": 8, "y\u2080": 8, "z\u2080": 8, "paragraph": 8, "512": 8, "bourbaki": 8, "spell": 8, "dualli": 8, "neighborhood": 8, "etc": 8, "attop": [8, 10], "\ud835\udcdd": [8, 9, 10], "\ud835\udce4": 8, "entourag": 8, "\u03bc": [8, 10], "ae": [8, 10], "univ_set": 8, "sets_of_superset": 8, "inter_set": 8, "blur": 8, "princip": 8, "\ud835\udcdf": 8, "x_0": 8, "ioo": [8, 9], "tendsto\u2081": 8, "tendsto": [8, 10], "lim_": 8, "abstractli": 8, "salient": 8, "f_": 8, "tendsto\u2082": 8, "via": 8, "leverag": 8, "map_mono": 8, "map_map": 8, "shot": 8, "256": 8, "map_le_iff_le_comap": 8, "contravari": 8, "comap_comap": 8, "plane": 8, "\u02e2": 8, "nhds_prod_eq": 8, "aforement": 8, "le_inf_iff": 8, "shouldn": 8, "prohibit": 8, "precondit": 8, "nebot": 8, "tour": [8, 9], "claim": 8, "recaptur": 8, "superfici": 8, "stronger": 8, "flexibl": 8, "hasbasi": 8, "nhds_basis_ioo_po": 8, "tendsto_iff": 8, "reformul": 8, "ici": 8, "attop_basi": 8, "knew": 8, "n_p": 8, "n_q": 8, "tiresom": 8, "\u1da0": [8, 9, 10], "superscript": 8, "eventuallyeq": 8, "tendsto_congr": 8, "eventually_of_foral": 8, "mono": 8, "item": 8, "filter_upward": 8, "hr": 8, "aka": 8, "occasion": 8, "frequent": 8, "sophist": 8, "mem_closure_of_tendsto": 8, "clusterpt": 8, "mem_closure_iff_clusterpt": 8, "le_principal_iff": 8, "nebot_of_l": 8, "hux": 8, "hum": 8, "dist_eq_zero": 8, "emetricspac": 8, "pseudometricspac": 8, "pseudoemetricspac": 8, "journei": 8, "recast": 8, "tendsto_attop": 8, "continuous_iff": 8, "devot": 8, "uncurri": 8, "slow": 8, "continuous_fst": 8, "assembl": 8, "prod_mk": 8, "continuous_snd": 8, "continuous_dist": 8, "clunki": 8, "heavili": 8, "elabor": 8, "prod_map": 8, "sad": 8, "border": 8, "obfusc": 8, "continuous_pow": 8, "continuousat": [8, 10], "continuousat_iff": 8, "geometr": 8, "closedbal": 8, "sign": 8, "radiu": 8, "mem_ball_self": 8, "mem_closedball_self": 8, "isopen": 8, "isopen_iff": 8, "Their": [8, 9], "isclos": [8, 9], "s\u1d9c": [8, 10], "isopen_compl_iff": 8, "hu": [8, 9], "mem_of_tendsto": 8, "mem_closure_iff": 8, "mem_closure_iff_seq_limit": 8, "nhds_basis_bal": 8, "nhds_basis_closedbal": 8, "mem_iff": 8, "segment": [8, 10], "somewher": 8, "continuouson": [8, 9], "minimum": 8, "iscompact": 8, "icc": [8, 9], "iscompact_icc": 8, "strictmono": 8, "tendsto_subseq": 8, "exists_forall_l": 8, "exists_forall_g": 8, "compactspac": 8, "iscompact_univ": 8, "cauchi": 8, "uniformcontinu": 8, "uniformcontinuous_iff": 8, "clearli": 8, "isclosed_l": 8, "eq_empty_or_nonempti": 8, "attain": 8, "cauchyseq": 8, "cauchyseq_iff": 8, "completespac": [8, 9, 10], "cauchyseq_tendsto_of_complet": 8, "criterion": 8, "tendsto_pow_attop_nhds_0_of_lt_1": 8, "dist_le_range_sum_dist": 8, "cauchyseq_of_le_geometric_two": 8, "\u03b5_po": [8, 9], "le_iff_exists_add": 8, "boss": 8, "bair": [8, 9], "exclam": 8, "rec_on": 8, "ho": 8, "hd": 8, "dens": 8, "densiti": 8, "\u03b4po": 8, "hpo": 8, "hball": 8, "mem_closure_iff_nhds_basi": 8, "recon": 8, "rpo": 8, "rb": 8, "incl": 8, "cdist": 8, "ylim": 8, "yball": 8, "categor": 8, "topologicalspac": [8, 9], "isopen_univ": 8, "isopen_empti": 8, "isopen_iunion": 8, "isopen_iinter_of_finit": 8, "continuous_def": 8, "attach": 8, "filteri": 8, "mem_nhds_iff": 8, "digress": 8, "pure_le_nhd": 8, "self_of_nhd": 8, "eventually_eventually_nhd": 8, "mkofnhd": 8, "nhds_mkofnhd": 8, "functori": 8, "induc": 8, "sensibl": 8, "uncount": 8, "relatedli": 8, "coinduc": 8, "t_x": 8, "t_y": 8, "coinduced_le_iff_le_induc": 8, "covari": 8, "coinduced_compos": 8, "induced_compos": 8, "focus": 8, "nhd": 8, "recov": 8, "continuous_iff_coinduced_l": 8, "g_": 8, "t_z": 8, "wasn": 8, "t_": 8, "x_i": 8, "price": 8, "patholog": 8, "t2space": 8, "hausdorff": 8, "t3space": 8, "regularspac": 8, "tendsto_nhds_uniqu": 8, "closed_nhds_basi": 8, "nhds_basis_open": 8, "t_3": 8, "denseinduc": 8, "continuousat_extend": 8, "funni": 8, "_in": 8, "nhds_induc": 8, "fortiori": 8, "f_cont": 8, "tendsto_right_iff": 8, "firstcountabletopologi": 8, "cluster": 8, "hfx": 8, "push_pul": 8, "of_map": 8, "f_ne": 8, "f_le": 8, "map_eq": 8, "hne": 8, "hle": 8, "huo": 8, "hsu": 8, "elim_finite_subcov": 8, "introductori": 9, "hasderivat": [9, 10], "hasderivat_sin": 9, "differentiableat": 9, "inconveni": 9, "deriv_zero_of_not_differentiableat": 9, "deriv_add": 9, "islocalmin": 9, "deriv_eq_zero": 9, "roll": 9, "weirder": 9, "hab": 9, "hfc": 9, "hfi": 9, "exists_deriv_eq_zero": 9, "differentiableon": 9, "exists_deriv_eq_slop": 9, "normedaddcommgroup": [9, 10], "norm_add_l": 9, "infer_inst": [9, 10], "normedspac": [9, 10], "normedaddgroup": 9, "stipul": 9, "norm_smul": 9, "banach": [9, 10], "dimension": [9, 10], "finitedimension": [9, 10], "\ud835\udd5c": [9, 10], "nontriviallynormedfield": [9, 10], "normedfield": 9, "exists_one_lt_norm": 9, "continuouslinearmap": 9, "cont": 9, "map_smul": 9, "le_op_norm": 9, "hmp": 9, "hm": 9, "op_norm_le_bound": 9, "steinhau": 9, "bounded": 9, "uniformli": 9, "nonempty_interior_of_iunion_of_clos": 9, "continuous_linear_map": 9, "opnorm_le_of_shel": 9, "interior_subset": 9, "interior_iinter_subset": 9, "is_closed_l": 9, "hc": 9, "h\u03b5": 9, "real_norm_l": 9, "\u03b5k_po": 9, "o": 9, "normedgroup": 9, "isbigowith": 9, "isbigowith_iff": 9, "isbigo_iff_isbigowith": 9, "islittleo_iff_forall_isbigowith": 9, "hasfderivat": 9, "fderiv": 9, "fr\u00e9chet": 9, "hasfderivatfilter_iff_islittleo": 9, "hff": 9, "iter": 9, "multilinear": 9, "withtop": 9, "infti": 9, "contdiff": 9, "iteratedfderiv": 9, "contdiff_iff_continuous_differenti": 9, "stricter": 9, "hasstrictfderivat": 9, "\ud835\udd42": 9, "rclike": 9, "contdiffat": 9, "localinvers": 9, "eventually_left_invers": 9, "eventually_right_invers": 9, "to_localinvers": 9, "hasfderivwithinat": [9, 10], "hasfderivatfilt": 9, "measuretheori": 10, "intervalintegr": 10, "integral_id": 10, "integral_one_div": 10, "differenti": [10, 12], "integral_hasstrictderivat_right": 10, "stronglymeasurableatfilt": 10, "volum": 10, "integral_eq_sub_of_hasderivat": 10, "convolut": 10, "bochner": 10, "lebesgu": 10, "measurablespac": 10, "countabl": 10, "measurableset": 10, "compl": 10, "iunion": 10, "iinter": 10, "measure_eq_iinf": 10, "measure_iunion_l": 10, "hmea": 10, "hdi": 10, "pairwis": 10, "m_iunion": 10, "\u1d50": 10, "integral_add": 10, "ennreal": 10, "toreal": 10, "setintegral_const": 10, "domin": 10, "converg": [10, 12], "aestronglymeasur": 10, "hbound": 10, "hlim": 10, "tendsto_integral_of_dominated_converg": 10, "fubini": 10, "sigmafinit": 10, "\u03bd": 10, "integral_prod": 10, "bilinear": 10, "borelspac": 10, "isaddhaarmeasur": 10, "invari": 10, "mass": 10, "compact": 10, "h_inj": 10, "det": 10, "integral_image_eq_integral_abs_det_fderiv_smul": 10, "overview": 12, "schr\u00f6der": 12, "bernstein": 12, "irrat": 12}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"introduct": 0, "get": 0, "start": 0, "overview": 0, "basic": [1, 6], "calcul": 1, "prove": 1, "ident": 1, "algebra": [1, 5, 7], "structur": [1, 5], "us": 1, "theorem": [1, 3], "lemma": 1, "more": 1, "exampl": 1, "appli": 1, "rw": 1, "fact": 1, "about": 1, "logic": 2, "implic": 2, "univers": 2, "quantifi": 2, "The": [2, 3], "existenti": 2, "negat": 2, "conjunct": 2, "iff": 2, "disjunct": 2, "sequenc": 2, "converg": [2, 8], "set": [3, 8], "function": [3, 8], "schr\u00f6der": 3, "bernstein": 3, "elementari": [4, 9, 10], "number": 4, "theori": [4, 10], "irrat": 4, "root": 4, "induct": 4, "recurs": 4, "infinit": 4, "mani": 4, "prime": 4, "defin": 5, "build": 5, "gaussian": 5, "integ": 5, "hierarchi": 6, "morphism": [6, 7], "sub": 6, "object": 6, "group": 7, "ring": 7, "monoid": 7, "subgroup": 7, "concret": 7, "action": 7, "quotient": 7, "unit": 7, "subr": 7, "ideal": 7, "polynomi": 7, "topologi": 8, "filter": 8, "metric": 8, "space": [8, 9], "continu": [8, 9], "ball": 8, "open": 8, "close": 8, "compact": 8, "uniformli": 8, "complet": 8, "topolog": 8, "fundament": 8, "separ": 8, "countabl": 8, "differenti": 9, "calculu": 9, "norm": 9, "linear": 9, "map": 9, "asymptot": 9, "comparison": 9, "integr": 10, "measur": 10, "index": 11, "mathemat": 12, "lean": 12}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"Introduction": [[0, "introduction"]], "Getting Started": [[0, "getting-started"]], "Overview": [[0, "overview"]], "Basics": [[1, "basics"], [6, "basics"]], "Calculating": [[1, "calculating"]], "Proving Identities in Algebraic Structures": [[1, "proving-identities-in-algebraic-structures"]], "Using Theorems and Lemmas": [[1, "using-theorems-and-lemmas"]], "More examples using apply and rw": [[1, "more-examples-using-apply-and-rw"]], "Proving Facts about Algebraic Structures": [[1, "proving-facts-about-algebraic-structures"]], "Logic": [[2, "logic"]], "Implication and the Universal Quantifier": [[2, "implication-and-the-universal-quantifier"]], "The Existential Quantifier": [[2, "the-existential-quantifier"]], "Negation": [[2, "negation"]], "Conjunction and Iff": [[2, "conjunction-and-iff"]], "Disjunction": [[2, "disjunction"]], "Sequences and Convergence": [[2, "sequences-and-convergence"]], "Sets and Functions": [[3, "sets-and-functions"]], "Sets": [[3, "sets"]], "Functions": [[3, "functions"]], "The Schr\u00f6der-Bernstein Theorem": [[3, "the-schroder-bernstein-theorem"]], "Elementary Number Theory": [[4, "elementary-number-theory"]], "Irrational Roots": [[4, "irrational-roots"]], "Induction and Recursion": [[4, "induction-and-recursion"]], "Infinitely Many Primes": [[4, "infinitely-many-primes"]], "Structures": [[5, "structures"]], "Defining structures": [[5, "defining-structures"]], "Algebraic Structures": [[5, "algebraic-structures"]], "Building the Gaussian Integers": [[5, "building-the-gaussian-integers"]], "Hierarchies": [[6, "hierarchies"]], "Morphisms": [[6, "morphisms"]], "Sub-objects": [[6, "sub-objects"]], "Groups and Rings": [[7, "groups-and-rings"]], "Monoids and Groups": [[7, "monoids-and-groups"]], "Monoids and their morphisms": [[7, "monoids-and-their-morphisms"]], "Groups and their morphisms": [[7, "groups-and-their-morphisms"]], "Subgroups": [[7, "subgroups"]], "Concrete groups": [[7, "concrete-groups"]], "Group actions": [[7, "group-actions"]], "Quotient groups": [[7, "quotient-groups"]], "Rings": [[7, "rings"]], "Rings, their units, morphisms and subrings": [[7, "rings-their-units-morphisms-and-subrings"]], "Ideals and quotients": [[7, "ideals-and-quotients"]], "Algebras and polynomials": [[7, "algebras-and-polynomials"]], "Topology": [[8, "index-0"]], "Filters": [[8, "filters"]], "Metric spaces": [[8, "metric-spaces"]], "Convergence and continuity": [[8, "convergence-and-continuity"]], "Balls, open sets and closed sets": [[8, "balls-open-sets-and-closed-sets"]], "Compactness": [[8, "compactness"], [8, "id5"]], "Uniformly continuous functions": [[8, "uniformly-continuous-functions"]], "Completeness": [[8, "completeness"]], "Topological spaces": [[8, "topological-spaces"]], "Fundamentals": [[8, "fundamentals"]], "Separation and countability": [[8, "separation-and-countability"]], "Differential Calculus": [[9, "index-0"]], "Elementary Differential Calculus": [[9, "elementary-differential-calculus"]], "Differential Calculus in Normed Spaces": [[9, "differential-calculus-in-normed-spaces"]], "Normed spaces": [[9, "id3"]], "Continuous linear maps": [[9, "continuous-linear-maps"]], "Asymptotic comparisons": [[9, "asymptotic-comparisons"]], "Differentiability": [[9, "differentiability"]], "Integration and Measure Theory": [[10, "index-0"]], "Elementary Integration": [[10, "elementary-integration"]], "Measure Theory": [[10, "measure-theory"]], "Integration": [[10, "integration"]], "Index": [[11, "index"]], "Mathematics in Lean": [[12, "mathematics-in-lean"]]}, "indexentries": {"check": [[0, "index-0"]], "commands": [[0, "index-0"]], "abel": [[1, "index-15"], [7, "index-3"]], "absolute value": [[1, "index-24"]], "apply": [[1, "index-12"], [1, "index-17"]], "calc": [[1, "index-3"]], "command": [[1, "index-9"]], "commutative ring": [[1, "index-8"]], "definitional equality": [[1, "index-13"]], "divisibility": [[1, "index-25"]], "exact": [[1, "index-12"], [1, "index-17"], [1, "index-5"]], "exponential": [[1, "index-19"]], "gcd": [[1, "index-26"]], "goal": [[1, "index-2"]], "group": [[1, "index-15"], [7, "index-2"]], "group (algebraic structure)": [[1, "index-14"], [7, "index-1"]], "group (tactic)": [[1, "index-15"], [7, "index-2"]], "have": [[1, "index-11"], [2, "index-12"]], "implicit argument": [[1, "index-10"]], "inequalities": [[1, "index-16"]], "lattice": [[1, "index-28"]], "lcm": [[1, "index-26"]], "linarith": [[1, "index-18"]], "local context": [[1, "index-2"]], "logarithm": [[1, "index-19"]], "max": [[1, "index-21"]], "metric space": [[1, "index-29"], [8, "index-2"]], "min": [[1, "index-21"]], "namespace": [[1, "index-9"]], "noncomm_ring": [[1, "index-15"]], "norm_num": [[1, "index-20"]], "open": [[1, "index-9"]], "order relation": [[1, "index-27"]], "partial order": [[1, "index-27"]], "proof state": [[1, "index-2"]], "real numbers": [[1, "index-1"]], "refl and reflexivity": [[1, "index-13"]], "reflexivity": [[1, "index-13"]], "repeat": [[1, "index-23"]], "rewrite": [[1, "index-0"]], "rfl": [[1, "index-13"]], "ring": [[1, "index-6"]], "ring (algebraic structure)": [[1, "index-7"], [7, "index-4"]], "ring (tactic)": [[1, "index-6"]], "rw": [[1, "index-0"], [1, "index-4"]], "rw and rewrite": [[1, "index-0"], [1, "index-4"]], "show": [[1, "index-22"]], "tactics": [[1, "index-0"], [1, "index-11"], [1, "index-12"], [1, "index-13"], [1, "index-15"], [1, "index-17"], [1, "index-18"], [1, "index-20"], [1, "index-22"], [1, "index-23"], [1, "index-3"], [1, "index-4"], [1, "index-5"], [1, "index-6"], [2, "index-0"], [2, "index-12"], [2, "index-13"], [2, "index-14"], [2, "index-15"], [2, "index-16"], [2, "index-17"], [2, "index-18"], [2, "index-19"], [2, "index-2"], [2, "index-20"], [2, "index-21"], [2, "index-23"], [2, "index-24"], [2, "index-25"], [2, "index-26"], [2, "index-4"], [2, "index-6"], [2, "index-8"], [2, "index-9"], [3, "index-1"], [3, "index-2"], [4, "index-0"], [7, "index-2"], [7, "index-3"], [8, "index-3"]], "absurd": [[2, "index-17"]], "anonymous constructor": [[2, "index-7"]], "assumption": [[2, "index-19"]], "by_cases": [[2, "index-23"]], "by_contra": [[2, "index-14"]], "by_contra and by_contradiction": [[2, "index-14"]], "cases": [[2, "index-8"]], "change": [[2, "index-2"]], "congr": [[2, "index-25"]], "constructor": [[2, "index-18"]], "contradiction": [[2, "index-17"]], "contrapose": [[2, "index-16"]], "convert": [[2, "index-26"]], "dsimp": [[2, "index-2"]], "erw": [[2, "index-4"]], "excluded middle": [[2, "index-22"]], "exfalso": [[2, "index-17"]], "ext": [[2, "index-24"]], "extensionality": [[2, "index-24"]], "field_simp": [[2, "index-11"]], "from": [[2, "index-12"]], "injective function": [[2, "index-5"]], "intro": [[2, "index-0"]], "lambda abstraction": [[2, "index-1"]], "left": [[2, "index-21"]], "let": [[2, "index-13"]], "monotone function": [[2, "index-3"]], "push_neg": [[2, "index-15"]], "rcases": [[2, "index-9"]], "right": [[2, "index-21"]], "rintro": [[2, "index-9"]], "simp": [[2, "index-20"], [3, "index-1"]], "surjective function": [[2, "index-10"]], "tactic": [[2, "index-11"]], "this": [[2, "index-12"]], "use": [[2, "index-6"]], "bounded quantifiers": [[3, "index-3"]], "rwa": [[3, "index-2"]], "set operations": [[3, "index-0"]], "decide": [[4, "index-0"]], "monoid": [[7, "index-0"]], "filter": [[8, "index-1"]], "continuity": [[8, "index-3"]], "topological space": [[8, "index-4"]], "topology": [[8, "index-0"]], "differential calculus": [[9, "index-0"]], "elementary calculus": [[9, "index-1"]], "normed space": [[9, "index-2"]], "integration": [[10, "index-0"], [10, "index-1"]], "measure theory": [[10, "index-2"]]}})
-
-
-
@@ -4,7 +4,7 @@[{"url": "https://github.com/leanprover/std4", "type": "git", "subDir": null, "rev": "276953b13323ca151939eafaaec9129bf7970306", "rev": "3025cb124492b423070f20cf0a70636f757d117f", "name": "std", "manifestFile": "lake-manifest.json", "inputRev": "main",
-
@@ -13,7 +13,7 @@{"url": "https://github.com/leanprover-community/quote4", "type": "git", "subDir": null, "rev": "1c88406514a636d241903e2e288d21dc6d861e01", "rev": "64365c656d5e1bffa127d2a1795f471529ee0178", "name": "Qq", "manifestFile": "lake-manifest.json", "inputRev": "master",
-
@@ -22,7 +22,7 @@{"url": "https://github.com/leanprover-community/aesop", "type": "git", "subDir": null, "rev": "6beed82dcfbb7731d173cd517675df27d62ad0f4", "rev": "0a21a48c286c4a4703c0be6ad2045f601f31b1d0", "name": "aesop", "manifestFile": "lake-manifest.json", "inputRev": "master",
-
@@ -31,16 +31,16 @@{"url": "https://github.com/leanprover-community/ProofWidgets4", "type": "git", "subDir": null, "rev": "af1e86cf7a37389632a02f4a111e6b501b2b818f", "rev": "fe1eff53bd0838c657aa6126fe4dd75ad9939d9a", "name": "proofwidgets", "manifestFile": "lake-manifest.json", "inputRev": "v0.0.27", "inputRev": "v0.0.35", "inherited": true, "configFile": "lakefile.lean"}, {"url": "https://github.com/leanprover/lean4-cli", "type": "git", "subDir": null, "rev": "a751d21d4b68c999accb6fc5d960538af26ad5ec", "rev": "a11566029bd9ec4f68a65394e8c3ff1af74c1a29", "name": "Cli", "manifestFile": "lake-manifest.json", "inputRev": "main",
-
@@ -49,7 +49,7 @@{"url": "https://github.com/leanprover-community/import-graph.git", "type": "git", "subDir": null, "rev": "8079d2d1d0e073bde42eab159c24f4c2d0d3a871", "rev": "188eb34fcf1125e89d651ad462d02598219718ca", "name": "importGraph", "manifestFile": "lake-manifest.json", "inputRev": "main",
-
@@ -58,7 +58,7 @@{"url": "https://github.com/leanprover-community/mathlib4", "type": "git", "subDir": null, "rev": "55f0d234db3171d98b71dc821b88ce9dabb518a2", "rev": "db651742f2c631e5b8525e9aabcf3d61ed094a4a", "name": "mathlib", "manifestFile": "lake-manifest.json", "inputRev": "master",
-
-
-
@@ -1,1 +1,1 @@leanprover/lean4:v4.6.0-rc1 leanprover/lean4:v4.8.0-rc1
-
-